Projet domotique - BFH

Transcription

Projet domotique - BFH
Projet domotique
Programmation de sockets
Communication
Socket
PC client
Navigateur
HTML5
JavaScript
 2014 BFH-TI / E. Firouzi
Dernière modification:
Auteur:
Version:
Décembre 2014
Elham Firouzi
1.0
Maison domotique
Serveur embarqué
Programme en C
Projet maison domotique
1 But du projet
Les étudiants sont en mesure de :
 programmer une connexion par socket en C et JavaScript.
 implémenter une application JavaScript et une application serveur qui communiquent par socket.
2 Condition cadre


Ce projet sera évalué et fixera une partie de la note du module.
Le travail doit être réalisé par groupe de 2 étudiants au plus.
3 Introduction
À l’aide d’une application JavaScript, il faut commander et surveiller plusieurs I/O d’un système embarqué. Pour
cela, un PC (avec le navigateur pour afficher la page HTML) est connecté au système embarqué avec une
interface Ethernet. Le système embarqué modélise une maison domotique.
4 Définition de la tâche
Définissez la page HTML contenant le programme JavaScript pour le côté utilisateur et le programme en C pour
la commande de la maison domotique côté serveur. La page HTML doit permettre d’enclencher où de
déclencher toutes les lampes, le téléviseur, chauffage et l’alarme. Elle doit également afficher la température
ambiante de la maison. En option on devrait pouvoir réguler l’intensité de la lumière ou fixer la température
ambiante dans la maison.
5 Implémentation de la page HTML avec le programme JavaScript
Définissez la page HTML contenant le programme JavaScript pour commander la maison domotique à partir
d’un navigateur Internet.
Quelques conseils :
 Définissez un protocole pour la communication entre l’application JavaScript et le serveur embarqué.
Idéalement il faudrait transmettre un string donné pour chaque commande. Vous pouvez également
afficher ce dernier sur l’écran durant la phase de test. Par exemple pour enclencher la lampe 1, vous
pouvez définir le string suivant : "<L1on>".
 En JavaScript, la connexion avec le serveur peut être établie de la manière suivante :
var webSocket = new WebSocket ("ws://192.168.2.100:80", "webhuesliprotocol"). Le serveur socket de la maison domotique transmet cette requête avec le numéro de
port 5000 à votre application de commande. Les évènements socket onopen ou onerror de l’objet
webSocket permettent de tester, si la connexion a pu être établi avec ou sans erreurs. Le chapitre 25.6
du manuscrit du cours fournit de plus amples information concernant la classe WebSocket.



Les commandes peuvent être envoyées avec la méthode send() de l’objet webSocket des manières
suivante :
webSocket.send("<L1on>");
Les messages reçus peuvent être lus avec l’évènement onmessage de l’objet webSocket de la
manière suivante :
webSocket.onmessage = function (message) {
var received_msg = message.data;
}
Il est fortement recommandé de programmer la première version de la commande domotique avec de
simples éléments d’entrées. Par la suite, vous pouvez modifier cette première version en lui intégrant
des images ou des graphiques.
Projet maison domotique
5.1 Finalité
La page HTML devrait être sauvegardée sous le nom de « index.html » sur le disque virtuel de la maison
domotique. Cela peut être réalisé avec la fonctionnalité « Remote System Explorer » de l’environnement de
développement Eclipse. La page HTML peut alors être téléchargée en introduisant uniquement l’adresse IP de la
maison domotique (192.168.2.100) dans l’onglet URL de votre navigateur Internet.
6 Implémentation du programme C pour la commande de la maison
Définissez le programme C pour le côté serveur, qui communique avec la page HTML et qui commande les
entrées/sorties de la maison domotique.
Les fonctions de la bibliothèque "Webhouse.h" sont mises à disposition pour la commande des entrées/sorties
de la maison domotique.
Procédure possible de développement :
 Implémentation de la connexion socket :
o
La connexion socket doit être établie pas par pas avec les fonctions des bibliothèques standards
<sys/types.h> et <sys/socket.h> . Ensuite, lorsqu’on arrête l’application, elle doit être
fermée correctement. Le chapitre 25.4 du manuscrit fournit une description détaillée de ces
fonctions.
o
Attaché le socket serveur au numéro du port 5000, afin que les requêtes des utilisateurs pour
établir une nouvelle connexion, qui sont retransmises en interne par le serveur socket, puissent être
reçues correctement par votre programme de commande.
o
Chaque étape de l’établissement de la connexion socket peut être affichée avec la macro
INFOPRINT("string") dans l’environnement de développement. Les éventuelles erreurs
devraient également être affichées.
 Commande des entrées/sorties de la maison domotique :
o
Exploitez les télégrammes, qui sont reçus par l’application JavaScript.
o
Implémentez la fonctionnalité des sorties (lampes, TV, Chauffage).
o
Lisez la température et envoyez cette information au programme JavaScript
o
Implémentez le système d’alarme.