Domotique à la maison
Objectif :
- Récupérer la température ambiante intérieure, extérieure, en sortie de chaudière, en entrée de chaudière.
- Contrôler la mise en marche de la chaudière
- Contrôler la mise en marche d'une lampe ( pour dissuasion de présence )
- Contrôler le reboot de ma freebox.
- Visualiser les températures sur une page web, lisible depuis mon téléphone portable.
- Afficher le niveau de la citerne de récupération d'eau de pluie, sur un afficheur LCD. Historisation des valeurs pour gestion.
- Gestion d'une mini centrale d'alarme (détection de mouvement).
Materiel :
- 1 micro PC Banana pi CPU
- 1 HDD 120Go minimum
- 4 Ports USB
- 1 Port Ethernet
- 2 Ports serie
- 1 Interface USB 1-Wire DS2490
- 1 Kit velleman 8 relais K8056
- 4 Capteurs de température
- 1 Contrôleur 1-wire
- 8 Interrupteurs 1-Wire
- 1 Détecteur PIR
- 1 Thermostat Aube TH140 (contrôlable à distance)
- 1 Afficheur LCD 4x20 avec chip HD44780
- 1 Module LCD2USB
- 1 Carte DVR (Chipset Techwell 6805)
- 1 sonde temperature 433 MHz Lacrosse
Logiciel :
Raspbian V3.1
Owfs pour la gestion du One-Wire
Apache / MySQL / PHP
K8056 pour linux, pour la gestion de la carte K8056
lcd4linux pour la gestion de l'afficheur LCD
Librairie Wiring bPi
Installation et configuration :
Raspian sur BananaPi:
Ce document n'a pas pour but de décrire l'installation d'un linux, la documentation Raspberry Pi étant très bien fournie, je vous laisse le soin de consulter les pages sur le site de votre distribution choisie.
Installation k8056 :
On récupère les sources et on compile :
|
k8056 est opérationnnel.
Voir article sur la version client/server, rubrique développement.
Gestion de l'affichage LCD :
Ayant des besoins particuliers, j'ai choisi d'installer la dernière version LCD4Linux 0.11.0-SVN-1129M
Cela permet éventuellement aux développeurs d'apporter des modifications.
Récupération des sources, compilation et installation
|
Afin de paramétrer l'afficheur, on alimentera le fichier /etc/lcd4linux.conf
voici mon script :
# Descripteur de l'interface Display LCD2USB { # Variables Variables { # WIDGET Widget pipe { Widget NMenu { Widget Gmenu { Widget GAlarme { Widget OW0Bar { Widget OW0 { Widget OW2 { Widget OW3 { Widget OW4 { Widget iconealarm { Widget iconepluie { Widget iconeselect { Widget iconepourcent { # Definition des touches Widget keydown { Layout Default { Row2 { Row3 { Row4 { Keypad1 'keydown' # FIN |
Pour mes besoins, je dois Afficher 5 températures :
- Temp1 : Thermostat général
- Temp2 : Etage
- Temp3 : Extérieur
- Temp4 : Cave
- Temp5 : Citerne
Puis le niveau de ma citerne en % et sur un bargraph de 10 Caractère
Ensuite on affichera les alarmes détectées, avec les détecteurs concernés.
Puis le menu sur la dernière ligne :
J'ai défini mon afficheur comme ceci :
IconsT : Temp1 | Temp2 | Temp3 | Temp4
IconsP : NivNum % | IconsT : Temp6 | NivBar
IconsA : Message sur les Alertes
IconsM : Menu :
- Acquittement
- Mise en Fonction
- Mise Hors Fonction.
Le menu étant gérer par 2 boutons, le bouton du haut sert au défilement (Select), et le bouton du bas sert à l'entrée dans le sous menu et à la validation (Valid).
J'ai ajouté un décompteur invisible, qui permet de baisser le retro éclairage au bout de 10 secondes d'inactivité.
Si on appuie sur Select, le rétro éclairage se réactive pour 10 secondes.
Compilation de OWFS :
On récupère les sources et on compile :
|
Afin de démarrer owfs au lancement de la machine, j'ai crée ce script dans /etc/init.d
#!/bin/sh |
Puis dans /etc/init.d, faire update-rc owfs defaults
On vérifie le point de montage avec un ls /mnt/1wire
-----------------------------------------
Mes sondes de température étant connectées, et le capteur de niveau d'eau construit, on peut déjà afficher quelques informations :
Reste la phase de création des scripts de traitement, et les pages web pour les commandes et interprétations des informations.
On va créer un 'moteur' qui permet de traiter les éléments du bus One Wire, et d'alimenter les différents fichiers de données.
La gestion de l'alarme sera gérée directement par lcd4linux (Mise En, Mise Hors, Acquittement, Déclanchement)
La première question à se poser, combien de fois dans une heure nous devons rafraichir les données ?
Pour la sonde de niveau, 1 fois suffit largement.
Pour les températures, si on veut avoir des courbes précisent, toutes les minutes serai convenable.
Pour les détecteurs de présence, il faut être encore plus précis, toutes les secondes. Ces dernier étant géré directement par lcd4linux, nous n'intégrerons pas cette gestion dans notre 'moteur'.
Mais patience, je cherche.....
Liens :
http://www.thierry-jaouen.fr/dokuwiki/doku.php?id=brouillon_1-wire
http://vesta.homelinux.net/mediawiki/index.php/Bus_1-wire
http://vesta.homelinux.free.fr/site/wiki/the_k8056_interface_board_from_velleman_on_linux.html
http://www.digitemp.com/
http://rosset.org/linux/temperature/howto.html
http://www.owfs.org/
http://oww.sourceforge.net/index.html
http://www.hobby-boards.com
https://fedorahosted.org/digitemp/browser/Makefile
http://automation.binarysage.net/?p=1244
http://ssl.bulix.org/projects/lcd4linux/
http://www.harbaum.org/till/lcd2usb/index.shtml



