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.