RAPPORT DE PROJET Projet Domotique, Commande, et gestion ! Préparé pour : Projet M1 2013/2014 - ISEN Préparé par : Samuel Bar, Steven Bargain Durée du projet : 120 jours environ Numéro de la proposition : Rapport final ! !1 PROJET DOMOTIQUE, RAPPORT FINAL SOMMAIRE DE GESTION • • • • INTRODUCTION……………………………………………………….page 4 CAHIER DES CHARGES…………………………………….……page 5-18 GESTION DE PROJET………………………………………..….page 19-21 DÉVELOPPEMENT TECHNIQUE………………………………page 22-39 ‣ ‣ Fiche technique…………………………………………………………..page 22-23 Mise en place du site web……………………………………………..page 24-26 • La programmation en PHP, HTML, CSS………………………………………………page 25 • Les iFrames…………………………………………………………………….………..page 25 • Le lien entre PHP et commandes Linux……………………………………….………page 26 ‣ Linux………………………………………………………………………..page 27-29 • Quel kernel choisir ?…………..………………………………………….….…………page 27 • Le « rootage » des commandes PHP………………………………………….……..page 28 • Avantages et points faibles d’Angström 3.2…………………………………….……page 29 ‣ ‣ La sécurité………………………………………………………………….…page 30 Application………………………………………………………………….…page 31 • Prise en main du BeagleBone………………………………………….………………page 31 • Comprendre l’organisation des ports……………………………………………….…page 32 • Mise en place des composants………………………………………….………….…page 34 • La maquette finale………………………………………………………………………page 37 ‣ Phase de test……………………………………..………………………..…page 38 • • • CONCLUSION………….………………………………..……….…..page 41 BIBLIOGRAPHIE……………………………………………………..page 42 ANNEXES……………………………………………………..…..page 43-45 !2 PROJET DOMOTIQUE, RAPPORT FINALE SOMMAIRE DES FIGURES ! • • • • • • • • • • • • • • • Figure 1 - Bête à cornes…………………………………………………….page 6 Figure 2 - Pieuvre…………………………………………………………….page 7 Figure 3 - Exemple de panneau d’IHM…………………………….……page 11 Figure 4 - Asservissement d’une lampe……………………………..….page 13 Figure 5 - Asservissement en température………………………….…page 16 Figure 6 - Détection d’ouverture…………………………………………page18 Figure 7 - Webcam sur IP……………………………………………….…page 18 Figure 8 - Organigramme d’avancement…………………………….…page 19 Figure 9 - Organigramme de répartition des tâches…………………page 21 Figure 10 - Interface web finale……………………………………….…page 24 Figure 11 - Terminal linux Angstrom…………………………………….page 31 Figure 12 - Répartition des ports du BeagleBone…………………….page 32 Figure 13 - Carte électronique du BeagleBone………………………..page 34 Figure 14 - Carte du capteur de température………………………….page 35 Figure 15 - Carte du capteur d’ouverture………………………………page 36 !3 PROJET DOMOTIQUE, INTRODUCTION INTRODUCTION ! ! ! ! Avec la démultiplication des appareils électroniques dans les foyers, la possibilité de diriger ceux-ci à distance devient de plus en plus intéressante. Pouvoir régler son chauffage avant d’arriver chez soi, ou déclencher la mise en route automatique de sa cafetière le matin deviennent accessibles au plus grand nombre. Les principaux acteurs actuels du marché tel que Somfy proposent des gammes performantes, mais à des prix excessivement élevés. Aujourd’hui, avec l’avènement des mini-ordinateurs embarqués (Arduino, RaspBerry PI, BeagleBone…), la domotique bon marché s’ouvre à un large public, mais nécessite tout de même une certaine base de connaissance en électronique, informatique, etc. C’est ici qu’intervient le projet domotique proposé par l’ISEN Brest et son référent M. Alain Reboux. L’objectif ici, est de synthétiser à travers une interface simple et accessible depuis n’importe où, les principales fonctions domestiques que l’on cherche à contrôler (éclairage, chauffage, ouvertures…). Celles-ci, exploitées depuis un mini-ordinateur ARM avec Linux embarqué. Ce rapport, décrit étape par étape, les méthodes employées permettant l’aboutissement d’un tel projet, du cahier des charges, aux phases finales de test. ! ! ! ! ! ! ! ! !4 PROJET DOMOTIQUE, CAHIER DES CHARGES CAHIER DES CHARGES ! La constitution du cahier des charges est l’étape numéro 1 du projet. Il rassemble les principales fonctions de notre système, les composants utilisables, les solutions, ainsi que les méthodes d’application de ces fonctions. ! I - La demande client ! Objectif Le système doit permettre de commander et visualiser à distance les appareils électrodomestiques. ! ! ! Demande client Le système doit permettre de commander et visualiser l'état d'appareils et d'autres informations à distance. Plus précisément, il s'agirait de pouvoir commander à partir d'un PC ou d'un smartphone des appareils situés dans une habitation éloignée tels que des lampes en tout ou rien, des lampes en gradation, le chauffage, et visualiser des informations telles que l'état ouvert ou fermé des portes et fenêtres, de la température d'une pièce. Si le temps le permet, le système devrait aussi permettre de faire une programmation horaire des appareils connectés. Sur le PC, il ne devrait pas y avoir de logiciel à installer, sauf indications contraires. Dans l'habitation, les liaisons filaires seront limitées autant que possible. La visualisation sur le PC doit être automatique et dépendre de l'installation de l’habitation : si un nouvel appareil commandable est ajouté dans l'habitation, il doit apparaître sur la visu (et inversement si un appareil est retiré). !5 PROJET DOMOTIQUE, CAHIER DES CHARGES II - Définition du besoin Figure : 1 - Bête à cornes L’objectif du diagramme « bête à cornes » est de formuler l’analyse fonctionnelle du besoin. Il permet de formuler ce besoin sous forme de fonctions simples que devra remplir le produit. ! Les appareils électrodomestiques sont les systèmes électroniques de la maison (lampes, volets électriques, chauffage, alarmes…). ! !6 PROJET DOMOTIQUE, CAHIER DES CHARGES III - Fonctions principales et fonctions de contraintes dans la situation de vie opérationnelle Figure : 2 -Pieuvre ! L’objectif du diagramme « pieuvre » est d’identifier les relations entre les milieux et le produit. ! Fonctions principales Critère FP1 Le système permet de commander les appareils électrodomestiques FP2 Le système informe l’utilisateur de l’état des appareils électrodomestiques. FP3 Le système permet à l’utilisateur de programmer l’usage des appareils. Fonctions contraintes Critère FC1 Le produit doit être économe en énergie FC2 Le produit doit supporter une perturbations électrique (panne de courant) FC3 Le produit doit être sécurisé (protection contre les attaques informatiques) FC4 L’interface doit être simple, optimisée et agréable FC5 Les liaisons filaires doivent être limitées autant que possible FC6 Le produit doit être accessible depuis n’importe quel navigateur web FC7 Le produit doit détecter la présence ou non d’un appareil !7 PROJET DOMOTIQUE, CAHIER DES CHARGES IV - Définition des fonctions de services et de leurs usages ! L’objectif ici, est de valoriser les fonctions du diagramme pieuvre, en termes : - D’USAGE : caractéristiques de performances quantifiée (mètre, Dbm, kg…). - D’ESTIME : caractéristique générant le désir du client : (couleur, forme…). - D’ECHANGE : coût d’une fonction ou d’une caractéristique (prix du km de portée…). Ce que le client est prêt à payer. ! Il s’agit donc d’identifier les mots clés dans chaque fonction. ! ! ! Fonctions de service Critères d’appréciation Usage Programmer - Marche manuelle Puissances intermédiaires Précision température : 0,5° C - Marche automatique 2 positions (ouvert ou fermé) Précision éclairage 50 lm ! ! ! - Horaires Informer - Schéma interactif ! !! !! - Notifications -Visualisation des appareils connectés au systèmes Échange prix ? ! ! Précision 15 mn - Page web (HTML, CSS, PHP) ! ! !! - Pop-up - Site version Mobile/ tablette ! !8 PROJET DOMOTIQUE, CAHIER DES CHARGES Fonctions de service Critères d’appréciation Appareils électrodomestiques !! !! ! !! !! ! Lampes Chauffage - Délais de fonctionnement ! !! ! - Température ambiante Commander les lampes : Toute lampe utilisable sur secteur et alimentation conventionnelle ( 220 V) en gradateur et TOR !! ! - Remplacement thermostat Usage Échange !! !! !! ! ! ! ! !! ! - Immédiat - Immédiat Précision : 50 lm - Immédiat - Immédiat - Alimentation 220 V Économe - Mode activité / veille - Sonde de consommation électrique Fiable - MTBF (temps moyen de bon fonctionnement) 15 ans Sécurisé - Attaques informatiques ! ! - type HTTPS - Web Design - Esthétique - CSS 3.0 - Login - Mot de passe Interface Minimum !! ! !9 PROJET DOMOTIQUE, CAHIER DES CHARGES ! Fonctions de service Critères d’appréciation Niveau Échange Liaisons - Liaisons filaires limités 2m Maximum - Communications sans fil 30 m Minimum ! ! ! ! ! ! V - Caractéristiques générales ! Dans le but de synthétiser les informations obtenues à l’aide des diagrammes et tableaux précédents, voici la liste exhaustive des fonctions que le système devra réaliser à son aboutissement. ! Le système devra : ✓ Permettre de commander en tout ou rien les lampes ✓ Commander les lampes par gradateur ✓ Commander le chauffage avec précision ✓ Programmer les horaires de fonctionnement (plages horaires) ✓ Informer de l’ouverture / fermeture des portes-fenêtres ✓ Visualiser l’état des appareils (annulé par le client en cours de projet) ✓ Informer l’utilisateur de la température des pièces de la maison ! !10 PROJET DOMOTIQUE, CAHIER DES CHARGES VI - Interface du site de contrôle ! Voici un exemple d’interface possible de contrôle du système une fois la programmation web accomplie. Elle sert d’inspiration sur la façon d’intégrer les différentes fonctions au système. Figure : 3 - Exemple de panneau d’IHM *réalisé par Steven Bargain avec photoshop ! VII - Matériel et composants ! Ci-après se situe la liste des différents composants que nous avons choisis (certains ont été imposés par le client), pour réaliser les différentes fonctions que devra assurer le système. !11 PROJET DOMOTIQUE, CAHIER DES CHARGES Ordinateur BeagleBone (imposé par le client) Caractéristiques : ! Le BeagleBone, véritable petit ordinateur tournant sous linux, assure toutes les fonctions à petite échelle d’un PC standard, avec des ports de type GPIO commandables directement depuis le kernel. Connecté à internet, il recevra des requêtes de commande Linux envoyées depuis un site Web. C’est le noyau dur du système. ! Module de transmission sans fil Comme il a été démontré dans l’analyse fonctionnelle, l’une des contraintes est de limiter autant que possible les liaisons filaires. C’est pourquoi, dans le but de communiquer avec les différents capteurs, il est important d’établir une liste de modules de communication sans fil utilisables pour remplir cette fonction. Bien entendu, ils doivent être compatibles avec l’utilisation du BeagleBone. Produit Module Xbee à antenne planaire Illustration Description Module de transmission sans fil. coût 22 € ! Portée : 100m. Alimentation : 3V3 Débit : 115 kBps émetteur /récepteur ! http://fr.farnell.com/digiinternational/xb24z7wit-004/module-xbeezb-1mw-w-wirouge-ant/dp/ 1690810 !12 PROJET DOMOTIQUE, CAHIER DES CHARGES Produit Illustration Description RF Link transmitter Module d’émission sans fil. ! coût 3 € Fréquence : 434 MHz Débit : 4800 Bps Alimentation : 5V Portée : 500 pieds = 152 m. ! https://www.sparkfun.com/ products/10534 RF Link receiver Module de réception sans fil. ! ! 5 € Fonction récepteur/émetteur 5 € Idem module précédent https://www.sparkfun.com/ products/10532 Kit émetteur / récepteur ! ! ! Fréquence : 433 MHz Alimentation : 3V-12V http://www.gotronic.fr/artkit-emetteurrecepteur-433mhz-18881.ht m Commande des lampes standards Afin de commander des lampes installées dans une maison ou un appartement, plusieurs solutions s’offrent à nous. Première solution : installer un interrupteur électronique sur l’alimentation de la lampe qui est commandé par la puce de transmission, de manière à allumer ou à éteindre la lampe. Fonctionne comme suit : !! !! !! !! !! Figure : 4 - Asservissement d’une lampe !! !13 PROJET DOMOTIQUE, CAHIER DES CHARGES L’élément clé ici, est le relais. Celui-ci sert d’interrupteur et doit pouvoir commuter du 220 V et 10 A en toute sécurité ! Le produit doit être ultra fiable afin de protéger le module sans fil et éviter tout incident regrettable. ! ! Ce type de circuit peut en réalité commander n’importe quelle prises électriques ! On peut imaginer la commande d’un ventilateur, ou encore l’allumage de la télévision. ! Voici quelques types de relais utilisables pour la réalisation de cette solution. !! !! Produit Module relais 5V Illustration Description Commutateur 220 V - 10 A Coût 3 € ! ! ! ! Fermeture circuit à 5V Ouverture circuit à 0V 3 Pin en entrée : GND / VCC / IN Aucun lien entre le circuit basse et haute tension. http://jr-international.fr/ module-relaisarduino-5v-12v-1canal_REL5V_itm_french. html Variateur à commande de tension continue. Régler la tension d’entrée de la lampe. 17 € ! Commande entrée de 0 à 12 V proportionnelle à une sortie 0-230V (0-98%). ! !! ! http://www.selectronic.fr/ k8064-kit-variateur-acommande-de-tensioncontinue.html !14 PROJET DOMOTIQUE, CAHIER DES CHARGES Deuxième solution : lampes pré-commandables Une autre approche consiste à utiliser les lampes commandables par signal radio et d’utiliser leur protocole de connexions pour les commander depuis le BeagleBone. Cette solution est beaucoup plus simple d’utilisation pour un potentiel client, moins dangereuse. Elle ne risque pas d’endommager les murs de la maison ou de l’appartement. ! Produit Lampes HUE by Philips Illustration Description Lampes commandables en wifi. Fourni en kit avec - l’application - site web (compte) - Plateforme de commande - Programmation Coût 53 € / u ! Le tout en format propriétaire difficilement exploitable. Douille ON/OFF pilotable Douille commutateur ON/ OFF intégré pilotable par radio-fréquence. 25 € / u ! ! !! Type DI-O Non compatible lampes basse consommation. Douille 100 W radiocommandée Douille commutateur pour lampe 100 W pilotable depuis centrale MyFox. 23 € / u ! ! Type DI-O Non compatible lampes basse consommation. Les lampes utilisant des protocoles de communication type DI-O sont facilement commandables depuis un BeagleBone ou un Raspberry Pi. !15 PROJET DOMOTIQUE, CAHIER DES CHARGES Température et chauffage ! Détecter la température des pièces de la maison est l’une des fonctions phare du projet. Produit Illustration Temperature sensor DS18B20 Description Sonde de température ! ! ! Coût 4,5 € marge : -55° - 125° C 3 - 5V input. 3 broches en entrées : VCC, DOUT, GND Tension de sortie proportionnelle à la température ! https:// www.sparkfun.com/ products/11050 La sortie Dout de la sonde sera connectée directement sur le BeagleBone. L’alimentation peut se faire à l’aide de l’un des ports 3V3 de celui-ci. !! Concernant le chauffage, la mise en place d’un module externe semble compliqué, en raison de la multitude de thermostats et de chauffe-eaux disponibles actuellement sur le marché. Pour l’instant. Cependant, une alternative est envisageable, elle reprend le principe de fonctionnement de la figure 4 page 13. ! ! ! ! ! ! Figure : 5 - Asservissement en température !16 PROJET DOMOTIQUE, CAHIER DES CHARGES Détection d’ouverture des portes et fenêtres !! La détection se fera à l’aide d’un capteur à effet de hall. Ce type de capteur mesure les champs électromagnétiques, ils servent donc à la détection d’objets sans contact. !! Produit DIY switch Hall sensor Illustration Description Signal de sortie basse tension. coût 4,5 € ! ! ! Précision du capteur ajustable. 5V input 3 pins en sortie : VCC/ GND/OUT Magnetic Hall detection module Signal de sortie basse tension. 3 € ! !! !! ! 3V3 input TOR 3 pins en sortie : VCC/ GND/OUT !! !! http://dx.com/p/miniarduino-magneticdetection-sensor-moduleblack-135504 Ici, le capteur sera relié directement à l’un des modules d’émission, alimenté par une pile 9V suivi d’un régulateur de tension 3V3. Le « bloc » « détection d’ouverture » sera donc autonome. Une étude plus approfondie nous permettra d’évaluer l’autonomie d’un tel système. !! !! !17 PROJET DOMOTIQUE, CAHIER DES CHARGES ! Voici un exemple de fonctionnement d’un capteur à effet de Hall. Figure : 6 — Détection d’ouverture !! ! Caméra de contrôle Le client a émis le souhait d’avoir la possibilité d’installer une caméra dans la maison. L’idée serait d’utiliser une « webcam-sur-IP ». Il existe une multitude de webcams compatibles avec Linux. ! ! ! ! ! ! ! Figure : 7 - Webcam sur IP !18 PROJET DOMOTIQUE, GESTION DE PROJET GESTION DE PROJET I - Diagramme prévisionnel de répartition du travail dans le temps Ci-dessous, les principales étapes mises en oeuvre tout au long du projet, par ordre chronologique : ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! Analyse de la demande client Analyse fonctionnelle Synthèse des objectifs Recherche des composants Réalisation des schémas électriques Prise de renseignements le BB Prise en main du BeagleBone Apprentissage du PHP Commande des composants Démarrage du codage du site web Prise en main des composants Finalisation site web Fabrication des cartes Mise en place de la maquette Phase de test Finalisation Figure : 8 - Organigramme d’avancement ! !19 PROJET DOMOTIQUE, DÉVELOPPEMENT TECHNIQUE ! I - Mode de travail La mise en place d’un dossier partagé type Dropbox permet une gestion efficace des informations et du temps de travail. Toutes les données sont immédiatement entre tous les collaborateurs du projet. On retrouve en annexe le diagramme de « Gantt », réalisé en début d’année. Il s’agit du planning initial du projet. ! III - Modifications au cours du projet Certains objectifs ont été modifiés voire abandonnés au cours du projet. Tel que la visualisation des états connectés ou déconnectés des appareils au système. Ceci en raison des difficultés engendrés par la mise en place d’un tel système, du temps et de son utilité limité. De même, lors de la rédaction initiale du cahier des charges, il était prévu de créer un module s’adaptant directement aux thermostat existants. Mais au vu du nombre de modèle important de thermostat, ainsi que de leur difficulté d’exploitation, il a été préférable d’intervenir directement sur l’alimentation générale du chauffage de la maison. Les autres points ont été suivis et appliqués. ! IV - Logiciels utilisés CAO Rédaction Présentation Configuration Codage Xbee Protel DXP Pages Keynote XCTU Editra NetBean VIM Serveur web Graphisme Planning Lighttpd Photoshop GraphicConve rter ImageWell GanttProject !20 PROJET DOMOTIQUE, DÉVELOPPEMENT TECHNIQUE V - Répartition des tâches ! Ci-dessous, l’organigramme de répartition des tâches entre les 2 collaborateurs de l’équipe : ! Mise en place des composants ! ! ! ! Réalisation cahier des charges Création des cartes électroniques ! ! ! ! Rédaction rapport Correction rapport ! ! Programmation site web version PC ! ! ! Programmation site web version mobile Prise en main des composants ! ! ! Réalisation et installation maquette Réalisation diaporama de soutenance ! Figure : 9 - Organigramme de répartition des tâches !21 PROJET DOMOTIQUE, DÉVELOPPEMENT TECHNIQUE DEVELOPPEMENT TECHNIQUE ! ! Fiche technique Voici la liste exhaustive des composants choisis pour la réalisation du projet. Produit Détecteur d’ouverture ultraplat double aimant Illustration Description Signal de sortie basse tension. coût 6,27 € ! ! ! TOR 3V3 input Sortie sur 2 fils : - DOUT - VCC Temperature sensor DS18B20 Signal de sortie basse tension. 3,5 € ! ! 3V3 input Tension Dout proportionnelle à la température détectée. 0 - 3V3 ! 3 pins en sortie : VCC/ GND/DOUT Douille TOR Chacon Douille de type Chacon ! ! 19,90 € Module de transmission sans fil 2,4 GHz 23,90 € Protocole de type DI-O Montage facile Module de transmission Xbee série 1 XB24 ! ! ! Antenne intégrée Portée max : 100 m 3V3 input !22 PROJET DOMOTIQUE, DÉVELOPPEMENT TECHNIQUE Produit Illustration RF Link transmitter Description Module d’émission sans fil. coût 3,40 € ! Fréquence : 434 MHz Débit : 4800 Bps 5V Portée : 500 pieds = 152 m. BeagleBone Rev A6 Mini ordinateur. Processeur ARM720 MHz 256 Mb de RAM DDR2 Ethernet USB 2.0 Mirco SD Linux Angstrom 3.2.14 fourni par le client (70 €) Tous les composants ont été commandés par l’Isen Brest, avec l’aval du professeur référant (Xbee USB Explorer fortement recommandé, voir rubrique : « Application - mise en place des composants »). Le coût total du projet, s’il avait fallu acheter le BeagleBone également, reviendrait à un total de : • BeagleBone white revA6 : 70 € • 2 douilles Chacon : 60 € • Capteurs (porte, température) : 10 € • 3 modules Xbee (1 en transmetteur, 2 en récepteurs) : 75 € • RF link transmitter : 3.5 € ✓ Soit un total d’environ 220 €, plus 20 € environ pour les frais de port. ! Pour chaque module rajouté, il faudra compter au moins 25 € (Xbee et alimentation) plus le prix du module à ajouter, et 20 € pour une nouvelle lampe ou une prise commandable. Ce qui reste beaucoup moins cher que les installations proposées par des entreprises comme Somfy. Il est également possible de réduire les coûts en utilisant d’autres modules que les Xbee. !23 PROJET DOMOTIQUE, DÉVELOPPEMENT TECHNIQUE Mise en place du site web Le site web est la fonction centrale du système. La demande client, est de centraliser la commande des appareils électrodomestiques de la maison et de la rendre accessible depuis le web, sans avoir besoin d’installer de logiciel d’aucune sorte. C’est pourquoi, la réalisation d’un site web est apparue comme l’une des solutions. Il a été codé en HTML5 et CSS3 et exécute des scripts PHP. Il est adaptable aux navigateurs de mobiles et tablettes. Voici le site internet final dans sa version PC, entièrement réalisé et conçu graphiquement « à la main » (pas d’utilisation de « templates »). Figure : 10 - Interface web finale On peut remarquer les différentes fonctions du système, appliquées ici à la maquette, sous forme de blocs : - Le contrôle des lampes et leur état courant L’état courant de l’ouverture de la porte d’entrée Le réglage du chauffage à l’aide d’un curseur L’affichage de la température actuelle de la pièce La programmation des horaires d’éclairage L’affichage de la webcam sur IP (ici celle de l’Isen Brest) !24 PROJET DOMOTIQUE, DÉVELOPPEMENT TECHNIQUE I - La programmation PHP, HTML, CSS Pour la programmation web, le PHP5, le HTML5 ainsi que le CSS3 ont étés utilisés. Le site web PC et mobile ont été réalisés indépendamment l’un de l’autre. Le site propose une redirection automatique vers l’un ou l’autre site en fonction de la résolution de l’utilisateur. ! La structure du site PC Plutôt que de réécrire chaque page pour chaque pièce (menu + entête + pied de page) qui donnerait un code extrêmement lourd et fastidieux à modifier, la technique PHP qui consiste à inclure des morceaux de page dans d’autres, a été adoptée. Ce qui fait, que dans chaque page est associée à chaque pièce de la maison (salon.php, cuisine.php…). ! II - Les iFrames Pour comprendre l’utilité et le fonctionnement des iFrames, il faut revenir aux raisons de leurs utilisation. La problématique était la suivante : « Comment actualiser l’état des valeurs courantes (état des lampes ou des portes) de manière efficace et sans gêner l’utilisateur ? » Il existe une fonction en HTML, qui permet de rafraîchir automatiquement une page entière et pas seulement une partie comme nous le souhaitons. Il s’agit de la méthode : « refresh ». Vous comprendrez facilement la gêne que peu occasionner un tel rafraîchissement sur toute la page : clignotement, inconfort visuel. De plus, l’utilisateur perdrait les données qu’il est en train d’entrer. Pour palier à ces problèmes, les iFrames sont une solution. Une iFrame consiste à inclure dans une page une autre page. Au lieu de rafraîchir toute la page, on ne rafraîchira donc que les mots : « ouverte » ou « fermée ». Avec un temps de rafraîchissement convenable (10 s à 15 s), l’utilisateur ne sera donc pas gêné. !25 PROJET DOMOTIQUE, DÉVELOPPEMENT TECHNIQUE III - Le lien entre PHP et commandes Linux ! Si l’on souhaite commander les ports d’un ordinateur tournant sous Linux à travers une interface web, il faut d’abord s’assurer de l’existence de telles fonctions de communication. Fort heureusement, elles existent et sont mêmes très répandues ! Il s’agit des fonctions « exec » ou « shell_exec ». Exemple de commande php : ! IV - Les scripts « intelligents » de gestion ! Cette rubrique concerne le réglage automatique du chauffage et la programmation des horaires. Pour remplir ces fonctions, les scripts en PHP ont été choisis. À l’aide d’une page « process.php » qui permet ensuite d’être appelée par n’importe quelle autre page. Nous aurions pu écrire ces scripts en ligne de commande linux, dans des fichiers .sh (shell). Ces fichiers auraient pu être appelés par les pages PHP et seraient stockés dans la mémoire du BeagleBone. Aucune des deux solutions ne supplante réellement l’autre, tant au niveau de la sécurité (voir rubrique : « la sécurité »), qu’au niveau de la facilité de mise en place. Le thermostat PHP : Le client a demandé de pouvoir au moins programmer les horaires de chauffage. Un véritable thermostat en langage PHP a donc été réalisé. Pour comprendre le fonctionnement de la commande du chauffage, voir figure 5 page 15. Le code se situe en annexe. La programmation des horaires d’éclairage : La programmation des horaires d’éclairages était un souhait du client. Celle-ci fût donc réalisée, avec la possibilité de régler trois horaires différents. Voir le code en annexe. !26 PROJET DOMOTIQUE, DÉVELOPPEMENT TECHNIQUE Linux LINUX Notre système reposant sur un BeagleBone tournant sous Linux, il est donc naturel de s’y intéresser de près. ! I - Quel kernel choisir ? ! Les nombreux OS Linux compatibles avec le BeagleBone ne remplissent pas toutes les fonctions attendues pour la mise en place du projet. Linux Angstrom Cet OS a été conçu spécialement pour le BeagleBone, ce qui en fait, en principe, le meilleur choix. On peut commander facilement les ports du BeagleBone depuis une page PHP. Cependant, les dernières versions de cet OS ont subi de nombreux changements et ceux-ci sont véritablement désagréables ! Au moment du projet, la dernière version en vigueur est la 3.8. Pour comprendre ces dits changements qui font de l’utilisation des dernières versions un véritable casse-tête, il faut savoir que les ports du BeagleBone ont des fonctions et des utilisations différentes. Voir plus en détail la rubrique « Application - Prise en main du BeagleBone ». Ainsi, sur les versions 3.8.x, l’utilisation des ports UART (Universal Asynchronous Receiver Transmitter) utilisé pour les Xbee et AIN (Analogique Input) utilisé pour le capteur de température, est extrêmement difficile. Ceux-ci en font donc des OS non-adaptés. Cependant, les anciennes versions d’Angström étaient très simples d’utilisation, en particulier l’OS 3.2. Il y a malgré tout quelques problèmes. Cette version étant ancienne, les liens de mise à jour sont morts. Il était de fait impossible d’installer les paquets nécessaires, comme le serveur web. !27 PROJET DOMOTIQUE, DÉVELOPPEMENT TECHNIQUE En résumé, avec la version 3.2 , il est possible d’utiliser les ports UART et AIN mais l’installation du serveur web n’est plus possible. Avec la version 3.8, l’installation du serveur web est possible, mais il n’y a plus d’accès aux ports UART et AIN. Linux Ubuntu Cette version de Linux n’a pas les problèmes des dernières versions d’Angström, mais elle en génère cependant de nouveaux. Ici, les ports UART et AIN sont utilisables dans le terminal, il est possible d’installer le serveur web, mais il n’est plus possible de commander les ports du BeagleBone via le serveur web à cause des droits d’écriture sur les ports ! Un véritable casse-tête ! La tentative de modification des droits d’écriture fut un échec (voir page suivante). Solution finale adoptée Après avoir changer trois fois de kernel, d’Angstrom 3.8 à Ubuntu à Angstrom 3.2, il a été possible de rassembler toutes les fonctions souhaitées à l’aide d’une astuce. Nous avons finalement adopté Angstrom 3.2, et pour résoudre les problèmes de liens de mise à jour morts empêchant l’installation du serveur web, nous avons récupéré manuellement les liens de mise à jour d’Angström 3.8, puis nous les avons entrés dans Linux 3.2. ! II - Le « rootage » des commandes PHP Pour que le kernel Linux accepte d’appliquer les commandes du script PHP, il est nécessaire que le serveur installé sur le BeagleBone dispose des droits nécessaires pour accéder à la commande des ports. Ceux-ci ne sont habituellement accessibles qu’au super utilisateur (root). Angström installe nativement le serveur web avec tous les droits, ce qui pose par la même occasion un gros problème de sécurité, puisque l’ensemble des dossiers (y compris ceux qui servent au fonctionnement du kernel lui-même) du BeagleBone est accessibles depuis le web. Il sera donc nécessaire de bien protéger les communications entre le serveur et le BeagleBone, afin que celles-ci ne soient pas interceptées par un utilisateur mal intentionné (plus de détails dans la rubrique « sécurité »). Nous avons tenté, par l’intermédiaire d’Ubuntu qui lui interdit les droits d’écritures des ports au serveur web, de débloquer cette situation en autorisant le serveur à n’accéder qu’uniquement aux ports. Cependant, après y avoir passé presque deux semaines et !28 PROJET DOMOTIQUE, DÉVELOPPEMENT TECHNIQUE demandé l’aide de tous les professeurs experts en Linux de l’école, nous avons finalement abandonné cette option, qui aurait été plus sécurisée. ! III - Avantages et points faibles d’Angström 3.2 ! AVANTAGES INCONVÉNIENTS • Kernel facile d’utilisation et optimisé pour • le BeagleBone Le serveur web dispose de tous les droits du super utilisateur root • Commandes des ports nativement accessibles depuis le serveur web • Sécurité compromise • Forum actif • Communauté peu étendue ! En conclusion, Linux Angstrom 3.2 présentent de nombreux avantages, de part sa simplicité d’utilisation et de son efficacité. ! ! ! ! ! ! ! !29 PROJET DOMOTIQUE, DÉVELOPPEMENT TECHNIQUE La sécurité La sécurité est un point critique de notre système. Car, contrôler les appareils de sa maison à distance expose nécessairement au risque qu’ils puissent être détournés par des personnages mal intentionnés. Partant de ce constat, nous avons plusieurs solutions. Certaines que nous avons appliquées, et d’autres à appliquer en cas de commercialisation du produit : N° Solution Description 1 Changer le mot de passe du super utilisateur root Assez basique, mais cela empêche un utilisateur situé sur le même réseau que le BeagleBone d’y avoir totalement accès. 2 Attribuer au serveur web, l’unique accès au fichier et au dossier de commande des ports Il s’agit de rendre modifiable uniquement les dossiers de type GPIO (etc) par le serveur web. Ce qui empêche ainsi l’accès au fichier de configuration et de fonctionnement du système. 3 Générer un nom de domaine unique et privé, très compliqué par chaque BeagleBone. En cas de commercialisation, chaque BeagleBone générerait son propre nom de domaine (ex : alcvzkwg56nhh79.com). Cela évitera des attaques massives de serveurs publiques et dédouanera la société vendeuse du produit. 4 Interdire l’indexation du site web généré par le BeagleBone Dans la continuité de la solution 3, un simple script php à rajouter dans le code permet d’interdire l’accès aux robots de type Google ou Bing, d’indexer le site généré par le BeagleBone. 5 Règle de filtrage par HTAccess Fichier de type .htaccess qui sécurise et protège le site généré par le BB des principales attaques informatiques courantes (hotlinking…). 6 Possibilité de supprimer le site Option de reset complet du serveur et des fichiers php. Remettre internet, d’effacer toutes les le système en mode : « sortie d’usine ». Nécessite la mise en traces d’attaques et de pouvoir place d’une sauvegarde locale des fichiers. le réinitialiser en 30 mn 7 Filtrer le programme PHP Protection des variables, autoriser uniquement certains caractères alpha-numériques. N’ayant pas le temps de nous consacrer à chaque option durant notre projet, nous avons pris l’initiative de mettre en place les solutions numéro 1, 4 et 7. Ce sont les plus importantes dans un cadre local (et non commercial). ! ! ! !30 PROJET DOMOTIQUE, DÉVELOPPEMENT TECHNIQUE Application I - Prise en main du BeagleBone Après avoir pris possession du BeagleBone, la première chose à faire est d’installer l’OS sur une carte micro SD (au moins 4 Go). Le tutoriel est fourni sur le site officiel « BeagleBone.org ». Ceci fait, il suffit de connecter le BeagleBone à l’ordinateur. Le courant fourni par la prise USB suffit à faire fonctionner le BeagleBone tout seul, mais dès que l’on commence à exploiter ses ports, il devient indispensable d’avoir une alimentation externe. Le BeagleBone démarre tout seul et l’accès à son terminal peut se faire de deux manières différentes, en USB ou en SSH. ! On accède ainsi à la console. ! ! Figure : 11 - Terminal linux angstrom ! ! !31 PROJET DOMOTIQUE, DÉVELOPPEMENT TECHNIQUE Dans notre cas, nous avons utilisé au final une vieille version d’Angström (3.2.14) et avons dû mettre à jour manuellement les liens de mise à jour du système . (Voir rubrique « Linux Solution finale adoptée »). Ceci fait, il ne restait plus qu’à installer le serveur web. Nous avons choisi « Lighttpd » pour son efficacité, sa simplicité d’utilisation et sa légèreté. ! II - Comprendre l’organisation des ports du BeagleBone ! Les différents ports du BeagleBone ont tous une utilisation précise et la plupart ne sont pas utilisables car réservés. Partant de ce constat, il faut savoir différencier les ports et comprendre comment les utiliser. Le schéma suivant représente la répartition des ports : ! ! Figure : 12 - Répartition des ports du BeagleBone !32 PROJET DOMOTIQUE, DÉVELOPPEMENT TECHNIQUE Type Utilisation Caractéristiques GPIO Ports d’écriture ou de lecture numérique (TOR) 0V ou 3V3 EHRPWM Port d’écriture analogique à l’aide d’un signal de type PWM. 0V à 3V3 AIN Port de lecture analogique avec CAN intégré de 4096 bits. 0V à 5 V UART RX et TX (Receiver et Transmitter). Utilisé pour la connexion de module ayant besoin de communiquer avec le BeagleBone de manière Asynchrone. Tels que les Xbee 0V à 3V3 ! Les ports ont un type d’utilisation propre à chacun. Les commandes sont donc différentes pour chaque type de port utilisé. Les ports GPIO : (écriture et lecture numériques) Relativement simples d’utilisation, la configuration des ports GPIO se passe dans le dossier « /sys/class/gpio ». Cependant il y a quelques manipulations à faire avant de pouvoir les utiliser. Il faut tout d’abord les « exporter », c’est à dire créer leur dossier de configuration. La logique de programmation du BeagleBone fait que le nom virtuel des ports n’est pas les même que leur nom physique. Par exemple, le port physique « GPIO1_6 » aura le numéro virtuel 38 (1 x 32 + 6). Les ports AIN : (lecture analogique) Encore plus simple d’utilisation, la configuration des ports AIN se passe dans le dossier « / sys/devices/platform/omap/tsc». On ne peut que les lire, on utilisera donc la fonction « cat ». Les ports EHRPWM : (écriture analogique) Le BeagleBone n’est en réalité pas capable de sortir une tension analogique fixe. Pour cela, il utilise une méthode très connue dans le domaine des CNA, un signal PWM ou Pulse With Modulation. Cela signifie que le port en question va émettre un signal rectangulaire, dont on !33 PROJET DOMOTIQUE, DÉVELOPPEMENT TECHNIQUE pourra régler le rapport cyclique et l’amplitude. La moyenne de ce signal sera donc une tension analogique qui variera en fonction de ces paramètres. Leur configuration se passe dans le dossier « /sys/class/pwm ». Les ports UART : (Universal Asynchronous Receiver Transmitter) Tout comme les microcontrollers standards, le BeagleBone dispose de ports UART. Ceux-ci lui permettent de communiquer avec des modules requérant ce type de fonctionnement, tels que les Xbee. La communication est ensuite accessible depuis le mini logiciel Linux Minicom déjà implanté dans le BeagleBone. Leur configuration se passe dans le dossier « /sys/kernel/debug/omap_mux». Puis, pour lancer Minicom : « minicom -b 9600 -D /dev/ttyO2 » dans le terminal du BeagleBone (9600 correspond à la vitesse en baud, à régler en fonction du périphérique). ! III - Mise en place des composants ! La carte principale, installée sur le BeagleBone : Pour une mise en place du système plus simple et plus efficace, nous avons décider de réaliser des circuits imprimés pour y loger tous les composants. Figure : 13 - Carte électronique du BeagleBone !34 PROJET DOMOTIQUE, DÉVELOPPEMENT TECHNIQUE Elle regroupe, les socles d’installation du module Xbee (U+) de réception et du module RF (RF1), une fiche de connexion pour câble USB-série (U3), et enfin un condensateur de découplage sur l’alimentation du Xbee. Il y a également des pins, pour des utilisations temporaires. ! Les cartes secondaires, capteur de température : Figure : 14 - Carte du capteur de température Le capteur envoi une tension proportionnelle à la température détectée. Cette tension sera ensuite convertie à l’aide du CAN 4096 bits intégré au BB. Il faut ensuite effectuer une série de calcul pour obtenir la valeur en degrés Celcius. ! Étape Description Exemple 1 Lire la valeur numérique # cat /sys/devices/platform/omap/tsc/ain1 1670 2 Convertir la valeur numérique en (1670 / 4096) * 1800 = 733.8867 mV millivolts. (value / 4096) * 1800mV 3 Convertir les millivolts en (733.8867 mV - 500) / 10 = 23.38867 °C température Celcius. (millivolt - 500mV) / 10 !35 PROJET DOMOTIQUE, DÉVELOPPEMENT TECHNIQUE Les cartes secondaires, capteur d’ouverture : Figure : 15 - Carte du capteur d’ouverture Le capteur de température agit comme un interrupteur simple. Il envoi 0 ou 1 au Xbee qui transmettra les données. Il est cependant nécessaire d’installer un « pull-down » (résistance R1) pour ramener la valeur à 0 lorsque l’interrupteur est ouvert. ! ! La commande des douilles Chacon : ! Comme cité dans le cahier des charges, les douilles chacon utilisent le protocole ouvert DI-0. En utilisant un transmetteur RF de même fréquence (433,94 MHz) et l’application d’un code en C, il est possible de contrôler les douilles. Voir la rubrique « conclusion - exploitation des résultats ». ! IV - La maquette finale Après la mise en fonctionnement des différentes cartes, elles ont été mises en place sur une maquette représentative d’une maison. Ci-après le rendu final : !36 PROJET DOMOTIQUE, DÉVELOPPEMENT TECHNIQUE Xbee ! ! ! ! ! ! Capteur d’ouverture Douille commandable Ventilateur de refroidissement du capteur ! ! ! ! ! ! Capteur de température + Xbee BeagleBone LED représentative du chauffage !37 PROJET DOMOTIQUE, DÉVELOPPEMENT TECHNIQUE Phase de test Afin de vérifier le bon fonctionnement des cartes et éviter les destructions de composants, il est recommandé de suivre un processus rigoureux de test (tensions, pistes, connexions…). Ci-dessous, vous trouverez les phases organisés par étapes et dans l’ordre chronologique de réalisation. ! Phase 1 : HORS TENSION Phase 2 : SOUS TENSION Fonction testée Méthode et matériel Résultat attendu Résultat obtenue Vérification de l’état des pistes. A l’oeuil nue. Toutes les pistes doivent êtres en bon état. OK Vérification de l'état des soudures. A l’oeuil nue. La plaque en epoxy ne doit pas être fondue, les soudures doivent êtres en forme de cône arrondi et ne doivent pas dépasser de surface cuivrée. OK Test des pistes. Test à l’ohmmètre entre les débuts et fin de piste. Signal sonore de l’ohmmètre indiquant le bon fonctionnement. OK Fonction testée Méthode et matériel Résultat attendu Résultat obtenue Test d’alimentation 3V3. Test au voltmètre de la GND et des pistes d’alimentations. 3V3 OK Vérification des tensions des Xbee. Test au voltmètre de la GND et des pistes VCC lié au Xbee. 3V3 OK Vérification de la tension du module RF. Test au voltmètre de la GND et des pistes VCC lié au module RF. 3V3 OK !38 PROJET DOMOTIQUE, DÉVELOPPEMENT TECHNIQUE Phase 3 : SOUS TENSION avec Xbee Phase 4 : Carte connectée au BeagleBone Fonction testée Méthode et matériel Résultat attendu Résultat obtenue Test de communication des Xbee. LED connectée sur la broche de sortie des Xbee récepteurs. Bouton poussoir sur la broche d’entrée du Xbee émetteur. Allumage des LED OK lors de l’appui sur bouton poussoir. Test du capteur d’ouverture. LED connectée sur le fil de sortie du capteur, et alimentation de celui-ci. Approcher l’aimant. La Led doit s’allumer lorsque l’aimant est en contact avec le capteur. OK Test du capteur de température. Alimenté en 3V3 et GND par le BB, et sortie connecté sur un port AIN du BB. Lire et convertir la valeur. Faire varier la température autour du capteur. Comparer avec un thermomètre à mercure. Température détectée par le capteur environ égale à celle du thermomètre à mercure. OK Fonction testée Méthode et matériel Résultat attendu Résultat obtenue Test de communication des Xbee. Envoi d’un signal depuis un port du BB sur un Xbee émetteur et lecture sur un autre port via le Xbee récepteur. Vérifier que la valeur reçue est bien égale à celle envoyée. OK Test de communication du module RF et des douilles. Broche d’entrée du module connectée à un port GPIO du BB. Exécution du script C. Les lampes s’allument et s’éteignent sur commande. OK Test de bon fonctionnement des capteurs en situation de communication sans fil. Lecture des ports de réceptions du Xbee récepteur. Température transmise. OK ! Etat de la porte. !39 PROJET DOMOTIQUE, CONCLUSION Phase 5 : Serveur web actif Fonction testée Méthode et matériel Résultat attendu Résultat obtenue Réception des différentes données sur la page web. Affichage de l’état des portes, lampes, température actuelle. Valeurs affichées, et égales à celles envoyés par les modules. Commandes des modules depuis la page web. Allumage et extinction des lampes et du chauffage. Les lampes et le chauffage s’allument et s’éteignent. Leurs états courant chauffage. Fonction de programmation de l’éclairage sur la page web. Paramétrage des horaires de fonctionnements des lampes. Les lampes s’allument toutes seul lors de l’entrée dans un horaire et s’éteignent à la fin. Leurs états courant change. Fonctionnement du thermostat. Faire varier la température autour du capteur. Le chauffage se déclenche ou s’éteint. ! Une fois toutes ces phases réalisées avec succès, on peut dire que le système est fiable d’un point de vue matériel et logiciel. !40 PROJET DOMOTIQUE, BIBLIOGRAPHIE CONCLUSION ! La finalisation de ce projet signe la réussite de celui-ci. D’une part, tous les objectifs fixés par le clients on été atteints (bien que certains aient été modifiés en cours de réalisation), et d’autre part, les possibilités d’améliorations sont quasi infinies. En effet, on peut imaginer rajouter de nouveaux modules avec de nouvelles fonctions. L’architecture en étoile du réseau mis en place sur les Xbee permet d’en ajouter un nombre considérable. Ainsi, il serait assez facile d’ajouter des modules de contrôle des prises électriques (toujours en utilisant du matériel chacon DI-O), commander des volets électriques, programmer l’horaire de mise en marche de sa cafetière le matin etc. L’unique limitation concernerait le nombres de ports utilisables du BeagleBone. Cela étant dit, il serait aisé d’installer au moins une trentaine de module avant d’être saturé. Ce projet offre ainsi de grandes possibilités en permettant une personnalisation complète de la domotique à installer chez soi, ainsi que de son interface. Dans une optique de commercialisation, chaque client pourrai acheter ou réaliser lui-même les modules qui l’intéresse, grâce à un code ouvert, la communauté autour d’un tel produit grandirait de manière exponentielle. En bref, ce projet reste ouvert à de nombreuses améliorations prometteuses, il pose les bases d’une domotique à bas coût tournant sous linux. Remerciements à l’ISEN BREST et particulièrement aux enseignants Alain Reboux, Thibault Napoléon, Didier Le Foll, Joel Corbel, Didier Munck et Jean-Yves Mulot pour l’aide apportée tout au long du projet. Exploitation des résultats : vous pouvez trouver l’intégralité du code utilisé et des documents en contactant notre référant de projet, M. Alain Reboux, enseignant en électronique à l’ISEN Brest. Vous pouvez également visiter le site web : www.samuelbar.com , rubrique « Projet & activités » : la domotique. Vous y trouverez un lien de téléchargement de ce rapport ainsi que la possibilité de contacter directement un collaborateur du projet. !41 PROJET DOMOTIQUE, ANNEXES BIBLIOGRAPHIE ! Ici se trouve l’ensemble des liens donnants des informations sur la mises en place des composants, la prise en main du BeagleBone, des tutoriels vidéo etc… ! Xbee et reseau sans fil : • h$p://jeromeabel.net/ressources/xbee‐arduino • h$ps://www.youtube.com/watch?v=ZVatcrToSNY • h$p://www.youtube.com/watch?v=6BjV6WNwc40 • h$p://www.digi.com/support/productdetail?pid=3352&osvid=57&type=uPliPes ! DIO et Raspberry : h$p://www.homautomaPon.org/2013/10/09/how‐to‐control‐di‐o‐devices‐ with‐a‐raspberry/ Site mobile : h$p://demos.jquerymobile.com/1.4.2/ Langage web : h$p://www.alsacreaPons.com/apprendre/ BeagleBone : h$p://beagleboard.org/bone Config BeagleBone : h$p://emmanuel.pouly.free.fr/ Domo=que et Raspberry : h$p://blog.idleman.fr/category/raspberry‐pi/ Appren=ssage du PHP : h$p://fr.openclassrooms.com/informaPque/cours/concevez‐votre‐site‐web‐ avec‐php‐et‐mysql Capteur de température : h$p://www.laboelectronique.be/captemp.html ! ! !42 PROJET DOMOTIQUE, ANNEXES ANNEXES ! ! Diagramme de Gan$ réalisé en tout début de projet, il permet de réparPr les tâches préalablement définies sur toute la durée du projet : ! Code PHP : Allumer une lampe via le BeagleBone : ! Lire la valeur du capteur de température et la conver=r en degrés celcius : !43 PROJET DOMOTIQUE, ANNEXES ! Récupérer la température désirée par l’u=lisateur et la rendre exploitable ! Le thermostat PHP : ! Exemple d’iFrame, la webcam Isen (iframe_webcam.php) : !44 ! Et son inclusion dans le code html : !45