Echanges et conseils en électricité | |||||||||||||||||||
Derniers messages |
Projet domos - Domotique faite maisonLe projet Domos a pour but de réaliser un petit
ensemble domotique personnalisé employant une carte de contrôle de
relais à distance (carte Web Relay ou IP800) que vous avez découvert
dans notre article sur la commande d'appareils électriques
par ordinateur. ![]() Pourquoi faire un ensemble domotique ? Pouvoir allumer des éclairages, lancer l'arrosage automatique du jardin ou nourrir les poissons rouges... On peux le faire en appuyant sur un interrupteur quand on est sur place ; on peux également le faire par le réseau avec une carte relai IP ; alors pourquoi ne pas le faire automatiquement... L'idée : Employer un ordinateur pour agir sur la carte de la même manière que le ferai un être humain devant son ordinateur. Ce projet permet de faire une programmation horaire ou rendre le système réactif à des actions sur les entrées. Description du système : Le projet prend place sur un petit ordinateur connecté au réseau domestique. Le système utilise une machine disposant de quelques programmes gratuits, nécessitant paramétrages et réglages des actions à effectuer. L'ensemble des outils est disponible sur internet et se doit d'être accessible en terme de fonctionnement même sans connaissances. La simplicité de ce projet s'accompagne d'une personnalisation à volonté ; ce qui lui offre les possibilités suivantes :
Les actions à effectuer pourrons l'être sur autant de temps que nécessaire, et plusieurs actions en même temps.
Ce dont vous aurez besoin :Les outils et programmes sont :
Il vous faudra bien sûr une carte Web Relay ou une IP800. Sur laquelle seront placées les pages fournies avec le projet. Le système est fonctionnel avec un ordinateur de type PentiumII à 400 Mhz datant de 10 ans avec un tout petit disque dur. La distribution Slitaz est parfaitement adaptée à ce type de vieille machine. Si vous optez pour une machine plus performante, vous pourrez employer une distribution comme Xubuntu 910. Les outils Gawk et Elinks sont disponibles en paquets optionnels et s'installent très rapidement. Ils sont également disponibles pour toute distribution linux de type Ubuntu ou Debian. Le plan de mise en œuvre :
I_a Installer la machine : I_a_1 Le matériel : Le choix de la machine est quelconque. De marque ou d'assembleur, du moment que les éléments minimums suivants sont présents :
L'usage du cdrom est temporaire et sert uniquement lors de l'installation. A l'usage plus de 128 Mo de mémoire vive est appréciable. Récupérez le fichier image de la distribution et gravez le sur un cd-r. Certains vieux lecteurs de cdrom ne reconnaissent pas les cd-rw. Pour une slitaz, j'ai choisit la version "cooking", disponible à cette adresse. Pour effectuer ce gravage, vous pouvez avoir besoin d'un logiciel qui sait graver une image .iso, le logiciel gratuit BurnCdCC de Terabyte le fait sans effort. Il est disponible à cette adresse. Assurez vous que la machine démarre en essayant le cdrom, pour ce faire accédez au setup ou au bios. Selon le fabricant, cela peut être obtenu par del, Echap, F1, F2, F10 dans les tous premiers temps du démarrage. L'option est "ordre de démarrage" ou "Boot order", ou encore "Boot priority". Si la machine démarre le cdrom et vous affiche glorieusement le menu de démarrage du Live-CD Slitaz, alors suivez les indications (clavier français, localisation) jusqu'à l'accomplissement et le lancement du bureau de l'utilisateur (tux par défaut). Voici l'aspect "sortie de boite"... I_a_2 Préparons l'installation sur le disque dur : Lancer le menu de démarrage, dans les outils système choisissez "Gparted" afin de reprendre le disque dur. Sur la ligne concernant votre matériel (dique dur /dev/hda par exemple), cliquez du bouton droit pour obtenir le menu contextuel. Partitionnez le disque dur trouvé et formatez le au format Ext3fs. L'outil dispose d'une documentation si vous doutez. Au passage vous pouvez "Activer" cette partition afin de la rendre amorçable. -> activation : clic droit sur partition puis "gérer les drapeaux", cocher "boot" si ce n'est pas le cas puis fermer. Lancez le menu de démarrage, dans les outils système choisissez "installeur Slitaz" et démarrez l'installation. Choisissez le disque dur et lancer le processus. Si vous optez pour le formatage (optionnel si effectué par Gparted), pour le choix de la partition : Cliquer sur "List", recopier le chemin complet trouvé (ex : /dev/hda1) ; ensuite viens la copie des fichiers, à la question "installer le Grub" répondez "oui" pour installer ce système de démarrage. Redémarrez la machine en retirant le cdrom. A partir de là vous pourrez arranger les divers paramètres de votre slitaz selon vos goûts. Le plus simple étant de se placer en superutilisateur pour toutes les opérations de paramétrage : root avec mot de passe root. I_a_3 Réglage du réseau : Cliquez sur l'icône du réseau dans la barre des tâches, choisissez "configuration". Dans l'onglet Ethernet, optez pour eth0 et activez le "dhcp" validez. Il est normalement déjà activé sur votre passerelle internet ou votre routeur si vous avez laissé les réglages par défaut. Sur l'icône du réseau en barre des tâches, cliquez du bouton droit et demandez "surveillez l'interface Eth0". Vous pouvez lancer Firefox pour vérifier le bon fonctionnement du réseau et de la connection vers votre passerelle voir vers internet. I_b Implanter les paquets optionnels : I_b_1 Utiliser le Taz paqueteur : Cet outil est présent par défaut en bas à droite de votre bureau, dans la barre des tâches. Il lui est nécessaire d'avoir la connection vers internet. Un clic simple le lance, le dernier onglet fournit l'activation de la recherche des paquets disponibles. Dans le premier onglet, choisissez les paquets suivants dans cet ordre (un double clic pour installer avec "Get et Install") :
L'installation est automatisée. Le paquet Elinks peut indiquer que bzip2 est nécessaire, mais il est juste optionnel. Vous pouvez installer bzip2, c'est sans conséquence. I_b_2 pas de connection internet : Dans le cas ou le réseau disponible n'accède pas à l'internet, vous pouvez récupérer les paquets à cette adresse puis les placer sur un cd ou une clé usb pour les charger sur la slitaz manuellement. N'hésitez pas à consulter la documentation en ligne. I_c Modifier les services et réglages : Afin de parfaire l'installation, il nous faut activer le service des tâches planifiées, crond. Ce service observe à chaque minute un tableau de planning propre à chaque utilisateur et agit en conséquence. I_c_1 Activer Crond : Lancez le menu démarrer, dans les outils système, en haut choisissez "Boite de contrôle". Dans l'onglet "initialization" ajoutez à la fin de la ligne où figurent déjà firewall, slim etc, le mot "crond". Appliquez la modification. Tadaa. I_c_2 Paramètres optionnels : Il nous faut quelques options afin d'avoir un compte rendu satisfaisant du fonctionnement de crond. Pour cela, ouvrez le gestionnaire de fichiers, et circulez jusqu'à voir le contenu de l'arborescence /etc/ Cliquez sur daemons.conf afin de l'ouvrir avec Leafpad, l'éditeur de texte. A la ligne concernant crond voici ce qu'il faut placer : CROND_OPTIONS="-bS -l 4 -L /var/log/crond1.log" Enregistrez et sortez. De cette manière, chaque lancement de crond fournira une ligne dans le fichier /var/log/crond1.log lisible par le superutilisateur. Il est nécessaire de relancer la machine pour bénéficier du service crond ainsi activé. I_c_3 Configuration de Elinks : Elinks est un navigateur internet en ligne de commande par la console. La console se lance avec l'icône idoine dans la barre des tâches. Ouvrez elinks par un appel simple dans la console : elinks Puis demandez les options par 'o'. Circulez avec les flèches de circulation les bien nommées, déployez avec la barre d'espace l'onglet "User interface", descendez jusqu'au "Timer options". Là dans les trois champs il faut choisir :
A partir de là Elinks s'arrête au bout de 5s d'inactivité. I_c_4 Paramètrage de ssmtp : Le paquet ssmtp fourni à notre projet la possibilité d'envoyer un message ou un rapport par email. L'usage de cette fonction est optionnel, et si vous n'envisagez pas de l'employer vous pouvez passer ce paramétrage. Afin d'obtenir l'envoi des mails, il vous faut l'identifiant (login utilisateur) ainsi que le mot de passe du compte. Il vous faut le nom du serveur d'envoi de votre fournisseur de messagerie et son numéro de port (25 par défaut, 587 chez SFR, Gmail) Ces réglages sont identiques à ceux utilisés par votre logiciel habituel (messagerie Thunderbird ou Outlook par exemple). Le message à envoyer devra de préférence présenter les renseignements minimum de destinataire et de sujet en entête. Voici par exemple un entête que vous devrez paramétrer à vos coordonnées : lien vers l'entête Les étapes indiquées ici sont reprises en partie des indications de la documentation Ubuntu, lisible à cette adresse et du manuel linux section 8, lisible à cette adresse. En tant que superutilisateur, localisez à l'aide du gestionnaire de fichier, le répertoire /etc/ssmtp Il s'y trouve deux fichiers, le premier est "revaliases", il s'ouvre avec l'éditeur Leafpad. Placez y le nom d'utilisateur (root), votre adresse de messagerie puis le service d'envoi de votre fournisseur et son port. Le format doit être respecté avec les ":" entre chaque champ, ce qui donne par exemple : root:monadresse@fourniseur.fr:smtp.fournisseur.fr:25Ce fichier permettra aux divers services de l'ordinateur d'envoyer un email ayant pour origine le compte "root". Le second fichier est "ssmtp.conf" et contient l'ensemble des paramètres, là aussi c'est Leafpad qui l'ouvre.
Si tout est en place, vous pouvez essayer un envoi en ouvrant une console et en tapant ceci : echo blabla | sendmail -v -omIl y a un problème si les lignes ne finissent pas par OK mais par une erreur 503, 504 ou autre "No authentication". Si le message de test n'est pas compris par ssmtp, cela ne l'empêche pas de réaliser la connection vers le service smtp de votre fournisseur. Et c'est cela qui compte. Vous recevrez un message d'origine "monadresse@fournisseur.fr" contenant le texte "blabla" si tout va bien. Les options de lignes de commande reconnues par ssmtp sont les suivantes : Il est important de placer un entête à vos messages.-fnom : indique le nom de l'émetteur du message si non défini dans l'entête ; II_ Installation du projet : II_d Implanter le projet Domos : Le cœur du sujet, l'archive du projet est fournie à cette adresse. Le fichier installation.txt reprend les directives d'installation de cette notice. Enregistrez la plus récente archive tarball Gz sur votre machine puis décompactez le contenu. L'emplacement choisit ne sera pas critique, mais il faut que chaque utilisateur puisse y avoir accès. Je vous propose pour les exemples qui suivrons de placer le projet dans /home/tux/domos/ notez bien l'absence de majuscules, linux en tiens compte. Dans le répertoire se trouve trois sous répertoires et trois fichiers : Le fichier regle_de_base.awk sera la procédure de base. Le fichier domos.cron sert de patron pour votre planning personnalisé. Une copie de ces deux derniers fichiers se trouve dans le répertoire /Patrons de base à fin d'archive. Le répertoire /Patrons de base contiend des règles plus évoluées que nous avons créé afin d'obtenir un fonctionnement plus complexe du système. Vous pourrez irez y prendre les règles qui vous intéressent pour votre installation et placer leur copie dans la racine du projet. Le répertoire /Patrons personnalisés pourra contenir tous vos essais de règles... Le répertoire /Serveur Relais IP contiens des pages web spéciales à placer sur le serveur de la carte, elles seront appelées par le système pour activer le relais du même nom (pour des règles supplémentaires). Le fichier de style fournit peut être remplacé par le votre ou celui déjà employé sur la carte. Avec l'éditeur de texte Leafpad vous pourrez modifier à volonté les fichiers .awk et .cron, j'ai placé de nombreux commentaires expliquant le pourquoi du comment. Les fichiers .awk sont des procédures interprétées par le langage Gawk. De conception concises et dépouillées, elles fournissent l'ensemble des actions à réaliser par le "robot". Vous n'aurez dans un premier temps pas de modifications à y effectuer si ce n'est de vérifier que l'adresse de la carte Web relay est correcte. C'est la valeur URLserveur qui doit correspondre à votre matériel (surement 192.168.1.20 ou 192.168.1.21). Voici de quoi à l'air ce fichier -> regle de base Cette règle nécessite trois valeurs de paramètre qui seront indiquées par la syntaxe -v nom=valeur
Cette règle peut par exemple être utile pour vérifier que les lumières sont éteintes et actionner le relais de commande si ce n'est pas le cas. II_e Régler le planning : Le fichier .cron quant à lui est le patron du planning que vous aurez à modifier. C'est surtout ce fichier qui accueillera tous vos choix d'actions et leurs horaires. Les commentaires sont suffisamment explicites je l'espère. Et voici à quoi ressemble le fichier fourni domos.cron. Le texte présent après le # est un commentaire. Les tâches planifiées sont définies sur une ligne par tâche. Commençant avec les paramètres de temps indiquant à crond quand cette tâche sera à faire. Tous les paramètres doivent être présent dans cette série selon l'ordre "m s T M W". Par exemple : 1 2 3 4 * sera lancé à la minute 1 de l'heure 2 du jour 3 d'avril. Le caractère magique * indique "tous", ou "toute heure" ou encore "tous les jours" selon son emplacement. Dans l'exemple de domos.cron, s T M W sont à * donc toute heure, tous les jours de tous les mois. Le caractère magique /x indique de réaliser la tâche toutes les x fois, dans l'exemple m vaut */3 sera donc toutes les 3 minutes. Ensuite la ligne indique la tâche à exécuter. Il faut y placer la ligne de commande telle quelle serait à entrer manuellement dans une console. Afin de tester une commande il est donc pratique (et recommandé) de la lancer dans une console pour vérifier. Notez bien que l'appel de la procédure regle_de_base.awk doit se faire à l'aide du chemin que vous aurez choisi pour le projet. Evitez d'employer des chemins d'accès avec des espaces. Comme nous l'avons vu précédemment, la tâche pour cette règle doit se finir par l'indication des trois valeurs nécessaires pour l'automate. Chacune étant indiquée par la syntaxe -v nom=valeur. Par exemple : -v test=relais1 -v etat=1 -v action=relais1_eteint Enfin, il nous est possible de rediriger vers le fichier "cronlog.log" le visuel du résultat. Ceci peux servir dans un premier temps pour vérifier les actions. Le fichier sera placé dans le répertoire du compte utilisateur (par exemple /home/tux/). Retirez le "> cronlog.log" ultérieurement. II_f Activer le planning : Voilà, vous y êtes, tout est paramétré comme il faut, votre domos.cron est prêt. Les lancements d'action ont été vérifiés par des essais avec la console. Ouvrez une console (c'est décidément pratique) et entrez la commande suivante : crontab /home/tux/domos/domos.cronC'est fait ! Pour vérifier que c'est enregistré vous pouvez lister le planning en cours pour l'utilisateur : crontab -lPour annuler le planning en cours tapez : crontab -rToutes les minutes, crond jète un œil si il y a quelque chose à faire dans le planning. Voilà, c'est tout ce qu'il faut pour automatiser les activités de la carte Web Relay. III_ Personnaliser votre domos : Nous avons évoqué le contenu de la règle de base, qui est une procédure du langage Awk. Afin de vous permettre de réaliser vos propres règles commençons par expliquer ce qui ce cache dans les fichier .awk. III_g les procédures awk : Le programme Awk est un interpréteur de commande axé sur la manipulation de caractères. Notre projet emploi la version GNU Awk qui est fournie avec une très complète documentation disponible en anglais en ligne (à cette adresse) ou sur papier aux édition O'Reilly. Un supplément très interessant concernant le travail avec des fichiers sur réseau se trouve à cette adresse. Afin de ne pas paraphraser ces deux manuels, voici très brièvement comment fonctionne une procédure .awk :
Les divers états pourrons être employé en fonction de vos desiderata. Je vous rappelle que lorsque qu'un shunt est présent aux bornes d'une des quatre entrées, celle ci passe à l'état "contact" indiqué par le mot "dn". Nous avons choisi d'agir sur les relais par les actions de la règle de base, mais nous pourrions aussi bien placer un rapport dans un répertoire local, dans un mail ou afficher un message de notification à l'écran. Les procédures étant de simples fichiers de texte, ils sont visionables et manipulables à volonté. Vous pouvez créer vos propres procédures pour faire tous les essais nécessaires dans une console en appelant par exemple : gawk -f /home/tux/domos/ma_procedure.awk III_h les patrons supplémentaires : Afin de personnaliser les règles, nous mettrons d'abord un scenarii en place avant d'expliquer ce que fait la règle. Règle "tous éteins" : Imaginons que votre installation de luminaire du jardin soit activée depuis la carte IP. Pour enjoliver la présentation en début de soirée, vous avez placé des spots sous les plus beaux arbres, des rampes de néons sous les lisses des barrières et une allée lumineuse jusqu'au garage. Pas mal quoi. Vous avez placé les rampes de néons sur deux circuits distincts (relais 1 et 2) et ils s'allument dès qu'il fait nuit, le relais 1 vers 19h et le relais 2 vers 19h30. La règle de base vous sert dans ce cas pour l'allumage, avec deux lignes sur le planning testant "si l'état du relais est éteins alors l'allumer". L'allée lumineuse doit être allumée quand vous arrivez mais éteinte après l'heure probable de votre retour. Là encore la règle de base sert à l'allumage et à l'extinction du relais concerné. Enfin, les spots mettent en valeur le jardin les soirées en weekend, c'est le relais 4 qui y est dévolu. Le réglage du planning de l'allumage sur les jours 0 et 6 le rendra effectif samedi et dimanche. Il faut voir à ne pas consommer inutilement, et ce quel que soit les relais activé. Si vous décidez qu'à minuit trente cela sera assez, voici la règle "tous éteins". Lancée à l'heure voulue elle fait le tour de tous les relais et actionne ceux qui sont encore allumé. De part son principe, elle ne requiert pas de valeur de paramètres. Voir la procédure au format texte Règle "serveur sur batterie" : Prenons comme exemple l'emploi de la carte pour gérer l'adduction électrique d'un centre informatique privé comme celui présenté sur le sujet dévolu à la personnalisation de la carte relais. Dans cette configuration, la carte indique par l'état des entrées si l'onduleur concerné est en fonctionnement sur secteur (valeur "up") ou sur batterie (valeur "dn"). La règle place un compteur dans un fichier si un changement est survenu. En plaçant cette règle dans le planning toutes les 5 à 7 minutes, on peut ainsi déterminer si l'onduleur était déjà sur batterie lors du lancement précédent, et en tenir compte. Si on souhaites avertir le responsable de cet état, il suffit de lui envoyer un mail explicite, la règle le fera si le paramètre -v mail=oui est présent. Si on souhaites éteindre le serveur sur lequel est le planning, la règle le fera si le paramètre -v extinction=oui est présent et que l'état de l'onduleur était déjà sur batterie. le lien vers "serveur_sur_batterie.awk.txt" Et elle crée systématiquement un fichier journal dans /var/log : Lien vers onduleurs.log Cette règle nécessite de placer avec elle les quatre fichiers jetonX.txt qui servirons à connaitre l'état de la carte précédemment. Afin d'employer l'option -v mail=oui, il faut avoir installé avec succès le paquetage ssmtp ou avoir la fonction "sendmail" présente. Il faut placer avec la procédure un fichier personnalisé servant d'entête pour les emails. L'envoi est effectif avec le superutilisateur "root" (propriétaire du mail) et avec l'utilisateur restreint "tux". Une copie du message sera placée dans le répertoire /home/tux à fin d'archive et nommé "message.txt" Afin d'optimiser le fonctionnement en mode "sur batterie" il est judicieux d'effectuer les vérifications par le planning pour une fréquence correspondante à 40% de l'autonomie de l'onduleur (soit 7 minutes pour 15 minutes d'autonomie). Règle de base "action" : Cette règle fonctionne de la même manière que la règle de base classique, à ceci près qu'il n'est pas nécesaire d'indiquer dans quel état vous souhaitez que le relais actionné passe. Donc au lieu d'indiquer -v action=relais7_allume il faut lui indiquer -v action=relais7. La contrepartie est que vous devrez charger sur le serveur de la carte les pages spéciales d'action qui se trouvent dans le répertoire /serveur relais IP. Moyennant quelques modifications, ces pages pourrons effectuer plusieurs actions personnalisées... Fin des règles supplémentaires pour le moment, à suivre sur le forum
1 commentaire le 08 mai 2011
Invité
très bon exposé, félicitations !
Joindre un commentaire
| ||||||||||||||||||