jeudi 13 février 2014

Contrôle de la VMC Double-Flux - Partie 2 - Domopi v0.7

Voilà, vous l'attendiez tous, mon programme de gestion de ma VMC double-flux.

Et vous avez de la chance car je vous le fournis sous license GPLv3.

Il s'agit d'une application PHP (désolé, je ne connais pas -encore?- le python). Deux parties : une partie cerveau, qui à partir d'une configuration donnée va allumer ou non la VMC. Une partie interface web pour visualiser l'état des capteurs et aussi des graphs rrdtool.

https://www.dropbox.com/s/ygxndrvse9r48vk/domopi-v0.7.tar

L'archive contient un fichier README.txt que je vous invite à lire (même s'il ne contient pas toutes les informations que vous allez désirer avoir).

Voilà, brut de fonderie, quelques éléments informatifs :

- J'utilise un raspberryPI
- L'OS installé est raspbian
- J'ai installé Apache et PHP5 (php5 php5-cli php5-common php5-rrd)
- J'ai modifié le fichier /etc/apache2/envvars pour que l'utilisateur exécutant le service soit l'utilisateur 'pi'.

export APACHE_RUN_USER=pi
export APACHE_RUN_GROUP=pi

- J'ai installé l'outil rrdtool
- J'ai téléchargé, compilé et installé wiringPi pour disposer de l'outil gpio
- J'ai activé les modules wire w1_gpio et w1_therm (dans /etc/modules).

Si vous avez fait pareil, à ce moment vous êtes capable de lire les informations de vos sondes de température : dans le répertoire /sys/devices/w1_bus_master1/ vous y trouverez des répertoires dont le nom correspond à l'uid de la sonde, qui contiennent chacun le fichier w1_slave

shell> cat /sys/devices/w1_bus_master1/28-0000041cb50c/w1_slave
f5 00 4b 46 7f ff 0b 10 d7 : crc=d7 YES
f5 00 4b 46 7f ff 0b 10 d7 t=15312


 Vous pouvez également agir sur vos gpios :

shell> /usr/local/bin/gpio readall
+----------+------+--------+------+-------+
| wiringPi | GPIO | Name   | Mode | Value |
+----------+------+--------+------+-------+
|      0   |  17  | GPIO 0 | IN   | Low   |
|      1   |  18  | GPIO 1 | IN   | High  |
|      2   |  27  | GPIO 2 | IN   | Low   |
...


shell> gpio mode 2 out
shell> gpio write 2 1
shell> gpio write 2 0
...

Téléchargez les sources de mon programme et décompressez l'archive dans /var/www/

shell> tar xvf domopi-v0.7.tar -C /var/www/
shell> chown pi.pi /var/www/domopi -R

Editez la crontab de l'utilisateur 'pi' pour y rajouter :

*/5 * * * * cd /var/www/domopi/cli && /usr/bin/php main.php -s

Voilà, à ce moment vous êtes bien installé.

Reste la configuration.

Et tout se passe dans le fichier config.xml. Attention, ne vous trompez pas dans la syntaxe, aucune vérification n'est faite, si la syntaxe n'est pas bonne, l'application ne saura lire les données.

Lisez ce fichier est vous comprendrez tout j'en suis sûr, j'ai confiance en vous !

Vous lirez mon config.xml à moi. J'y ai configuré 5 sondes de température. 4 pour la VMC, une cinquième pour la température des combles (la pièce dans laquelle se trouve la VMC). Les sondes sont sur le GPIO7 (le GPIO du 1-wire).

J'ai deux relais, un sur le GPIO 5 et l'autre sur le GPIO 6. Et 3 actions possibles : VMC éteinte, VMC allumée à la vitesse 1 et VMC allumée à la vitesse2. Pour chaque action, indiquez dans quels états doivent être les GPIO. Ne vous étonnez pas que les deux GPIO ne soient pas dans le même état lorsque la VMC est éteinte, en effet, le relais pour la vitesse 1 est sur l'état NO (Normaly Open) alors que le relais pour la vitesse 2 sur l'état NC (Normalu Close). Ainsi, si le serveur plante ou je ne sais quoi, la VMC se mettra en marche en vitesse 1 (c'est-à-dire que si le relais 1 ne fonctionne plus, il est dans l'état ouvert, donc il laisse passer le courant).

Je passe la définition des modes, j'y reviendrais plus tard, pour aller à la définition des programmes.
Vous pouvez définir autant de programme que vous le souhaitez. Par contre, vous ne devez en activer qu'un pour un jour donné (il prendra le premier si vous ne m'écoutez pas).  Car un programme s'applique sur des jours donnés (daysofweek).  Par exemple, vous pouvez très bien avoir 2 programmes en hivers, mais l'un pour la semaine et l'autre pour le week-end.

Un programme définit selon des horaires des modes à appliquer. Vous pouvez faire chevaucher les horaires, pas de problème. Vous avez même le droit d'utiliser le caractère * (pour les heures), soit *:10 signifie à n'importe quelle heure et 10 minutes.  Le système se débrouillera pour prendre le bon (vous comprendrez plus tard dans la définition des modes).
Ou vous pouvez jouer avec les priorités. Une priorité faible gagne sur une priorité forte (en fait plus on se rapproche de 1 plus on est fort !).

Voilà, on peut passer aux modes. Vous pouvez également créez autant de mode que vous le souhaitez. Commencez par choisir la priorité des actions. Puis l'approximation pour la température (+ ou - °C).
Ensuite, un mode contient des conditions. Pour qu'un mode soit utilisé, ou soit candidat à l'utilisation car si plusieurs modes, il va falloir les départager, alors il faut qu'une condition soit remplie.

On ne peut pas dire qu'il existe beaucoup de conditions. SUP et FORCE.
SUP : vous allez vouloir dans la majorité des modes comparer 2 températures, et agir en conséquence; soit dire : si température1 est supérieur à température2 alors on allume la VMC  à la vitesse2.
FORCE : pas de condition, vous voulez impérativement telle action. Utile par exemple pour dire que vous voulez impérativement et quoiqu'il arrive que la VMC soit allumé de telle heure à telle heure.

Juste 2 conditions, mais ça me suffit déjà pour bien piloter ma VMC.

Voilà, une fois votre fichier de configuration fait, testez-le en lançant l'application :

shell> cd /var/www/domopi/cli && php main.php --verbose --report


Vous avez également la possibilité d'avoir des stats. C'est un peu plus compliqué car il faut créer les bases de données rrdtool. Inspirez-vous du script graph.sh qui contient les commandes de création des bases. Ce script remplissait également les bases avec les données des fichiers d'enregistrement (créés dans le répertoire des statistiques). Un fichier d'enregistrement par sonde et par état dont chaque ligne est : timestamp:donnée

Si tout marche bien, et que vous avez passé quelques heures à tout comprendre, vous devriez avoir à la fin une belle page web avec les derniers états et des graphs.



Le courant passe ?

Je me suis fait récemment un petit outil pour m'aider à vérifier que mes connexions fonctionnaient. Avant, j'utilisais un voltmètre. Mais j'avais au fond de mes affaires ce support de pile plate et une led. Du coup, deux petites soudures et le tour est joué.

Mode d'emploi ? facile ! si la LED s'allume, vous avez gagné !



lundi 10 février 2014

Contrôle de la VMC Double-Flux - Partie 1

Comme je vous en parlais dans Pilotage de la VMC double flux, mon premier projet fut de contrôler l'allumage et l'arrêt de ma VMC double flux selon différent paramètre. En fait deux paramètres : les températures mesurées en entrées et sorties et l'heure.

Le pilotage se fait à travers une application écrite en PHP que je décrirais plus tard. Mais sachez que cette application s'appuie sur des programmes configurables basés sur l'heure et différentes températures.

4 températures sont prises en compte :
  • Air entrant
    • entrée de VMC (air qui vient de l'extérieur)
    • sortie de VMC (air qui va être soufflé dans la maison et qui a été réchauffée dans l'échangeur thermique)
  • Air sortant (vicié)
    • entrée de VMC (air qui vient de la maison et qui va réchauffer l'air venant de l'extérieur)
    • sortie de VMC (air expulsé dehors)
Le système pourrait très bien prendre en compte d'autres températures. Le nombre et le comportement n'étant pas figé.


Le système est composé de deux parties :
  1. le serveur (le cerveau) à base de raspberryPi qui restera dans la maison à portée du concepteur.
  2. le boîtier déporté sur lequel seront branchées les sondes de température et le relais qui permet de contrôler l'allumage de la VMC (les 2 vitesses).
Entre les deux parties, j'ai choisi de mettre un câble RJ45.

Pour la petite histoire, je travaille dans l'informatique. J'ai la possibilité de pouvoir récupérer du vieux matériel destinée à la benne. Les vieilles cartes réseaux me permettent de récupérer les connecteurs (même si le prix d'un connecteur n'est pas énorme, sur le plan écologique pourquoi ne pas utiliser ceux destinés à la benne ?). J'ai également récupéré les câbles de CD-Rom, ceux qui relient la carte son au lecteur CD-Rom. Et du vieux câble RJ45. Bref, si vous pouvez récupérer, faites-le, vous apprendrez également à désouder des composants.


Le serveur est en fait composé de deux élements : la carte raspberryPi et une carte supplémentaire qui accueillera le connecteur RJ45 pour le départ vers les combles (où se trouve la VMC), et quelques LEDs pour pouvoir être informé de l'état du système (quel relais est allumé).


 
Le connecteur pour écran LCD ne sert à rien. Je ne compte plus brancher d'écran LCD (écran Nokia 5110). Mais je pourrais vous en parler si vous désirez.

J'ai branché un écran de lecteur DVD portable via la prise RCA.


Du côté de la VMC, il y a l'arrivée RJ45, les PINs pour pouvoir brancher les sondes de température, le connecteur pour brancher le relais double et la prise d'alimentation car le relais nécessite du 5v que ne peut fournir le raspberryPi.


Voici le second ciruit.  le "Vers relais" est relié au "Vers carte" avec un câble.
Le "Sélecteur Alim Temp" permet de choisir si les sondes de température sont alimentées en 3.3v depuis le raspberryPi (j'ai réservé deux fils dans le câble RJ45 pour le 3.3V et la masse), ou depuis l'alimentation externe 5v.

Parce que j'ai oublié de vous dire que les sondes de température utilisées sont les fameuses sondes Dallas DS18b20 qui acceptent aussi bien le 3.3v que le 5v. Je ne vous détaillerais pas le branchement de ces sondes de températures. c'est relativement simple et d'autres sites expliquent mieux que moi. Quoique, il faut juste relier la patte Data et la patte Vcc avec une résistance de 4.7kOhm.

Il y a double relais car le premier relais contrôle les deux moteurs (celui pour l'entrée et celui pour la sortie d'air) en vitesse 1, et le second relais pour la vitesse 2.

En situation, cela donne : 





Vous pouvez voir les sondes de températures (fils bleu) qui partent vers les gaines de la VMC, le câble réseau qui part vers le cerveau, l'alimentation externe et les deux câbles d'alimentation des moteurs.


Côté branchement avec les GPIOs du raspberryPI : 

les sondes de température DS18b20 utilise le 1-wire sur le GPIO7. J'utilise les GPIO5 et GPIO6 pour le contrôle des relais (pour ceux qui n'auraient pas compris, les relais me permettent de contrôler l'alimentation 220v de la VMC alors que je suis en 5v.).

Pour l'ensemble des composants, vous les trouverez facilement sur ebay ou sur des sites spécialisés (snootlab, belectronique, hackspark, ebay restant le moins cher).

Dans la version 2 que je suis en train de me faire, j'utilise des sondes DS18b20 waterproof que j'ai trouvé à pas cher sur ebay par 6 chez un vendeur français. J'utiliserais un 8-relais trouvé chez un vendeur anglais à pas trop cher. Pour mes achats sur e-bay, je ne choisis que des power-resellers. Vous pouvez maintenant acheter le raspberryPi chez Amazon. 

Dans le prochain épisode, je vous parlerais du programme PHP.

dimanche 9 février 2014

La soudure

Avant d'entrer dans le coeur du sujet, il convient de s'arrêter un moment sur la soudure.

Je ne suis pas un spécialiste de la soudure, donc je ne vais pas vous expliquer en long et en travers comment souder vos composants, car vous allez être amené à le faire si vous souhaitez vous lancer dans la domotique.

Voici un site très intéressant qui vous expliquera mieux que moi : http://www.interface-z.fr/conseils/soudure.htm

Le seul conseil que je puisse vous donner c'est que la soudure ne fonctionne bien que lorsque les deux corps que vous souhaitez assembler sont suffisamment chaud pour faire fondre la soudure. Dans le cas contraire, vous ferez fondre la soudure, mais elle n'accrochera pas (voir paragraphe 3 et 4 de cette page http://www.interface-z.fr/conseils/soudure3.htm)

Voici ce que j'arrive à faire. Je ne sais pas si c'est bien ou pas, mais ça marche. J'utilise comme fil de raccord du câble réseau RJ45 monobrin. Je soude aussi bien par en dessous que par au dessus.


Équipez-vous de bon matériel, ce qui ne veut pas dire d'acheter du matériel cher. Si comme moi vous ne comptez pas souder tous les jours, mais juste occasionnellement, pas la peine d'investir dans un appareil professionnel. Je viens de m'acheter le Velleman VTSS5 pour une vingtaine d'euro et j'en suis très content.

Mais bon, pour commencer, vous pouvez vous équiper d'une platine d'essai (ou breadboard) qui vous permettra de tester vos montages avant soudage.


Pilotage de la VMC double flux

Je sens que vous êtes pressés. Donc je vais commencer par vous présenter mon premier projet à base de RaspberryPI.

Je me suis installé dans mes combles une VMC double-flux avec prise d'air sous la toiture en ardoise. J'espère pouvoir récupérer la chaleur du soleil qui s'accumule dans les ardoises en hiver pour pouvoir apporter de la chaleur "gratuitement" dans la maison.

Ma VMC n'est pas équipée de by-pass. Et je ne souhaite pas faire fonctionner la VMC 24h/24 afin de ne pas renouveler l'air trop souvent. La VMC n'ayant pas un rendement  de 100%, elle apporte encore du froid (même à minima). En apparté, sur mon autre blog  un manteau pour ma maison, je relate les travaux d'isolation effectués sur ma maison (isolation extérieure, vmc, changement de fenêtre....), autant de travaux pour tenter d'obtenir une efficacité énergétique maximale. Vous comprennez alors le rôle de la VMC dans cet ensemble.

J'ai donc dans un premier temps branché ma VMC sur un minuteur. Et puis j'ai découvert le RaspberryPI. Et je me suis dit : si je contrôlais la marche de la VMC avec un raspberryPI, peut-être que je pourrais l'allumer plus intelligemment ? (je me suis interrogé en été, lorsque la température en entrée de VMC avoisinnait les 45°C.)

Et voilà mon nouveau projet : piloter ma VMC double.

Je peux déjà vous dire que la première version est "en production" depuis au moins 6 mois. J'ai un raspberryPI au rez-de-chaussée qui contrôle l'allumage. Il est relié à une carte électronique maison avec un câble réseau RJ45 qui lui permet d'obtenir les températures de 5 sondes de températures dallas DS18b20 et allume la VMC avec un double relais (2 vitesses). J'ai écrit une application PHP qui à partir d'une configuration donnée allume ou éteint la VMC selon des critères définis (et modifiables, car les critères ne sont pas les mêmes en hivers qu'en été). Cette même application stocke les températures et me permet de suivre les différents états à travers une interface web (avec graphes rrdtool).

Je suis actuellement en cours de réalisation de la version 2 afin de rajouter des relais supplémentaires : j'ai dans l'idée de me construire un by-pass maison, mais pour cela je dois pouvoir n'allumer/n'arrêter qu'un seul moteur sur les deux que compte ma VMC double-flux. Mon problème actuel est que lorsqu'il y a du soleil en hiver, ma VMC récupère bien cet apport de chaleur, mais comme le flux passe par l'échangeur thermique, la majorité de cet apport de chaleur est transmit à l'air sortant. Le by-pass me permettrait de ne pas passer par cet échangeur thermique et donc de garder toutes ces calories récupérées.
J'en profite pour améliorer le dispositif en connectant par exemple mes sondes de températures avec des connecteurs USB.

J'ai également construit une sonde de température sans fil en me basant sur ce post d'idleman : construire une sonde de température pour 7€. A base d'arduino. Cette sonde fera l'objet d'articles à part, mais l'intégration dans le projet de pilotage de VMC m'oblige à rajouter un récepteur radio sur le dispositif. J'espère alors par ce biais récupérer la température extérieure.

Le début

Bienvenue sur ce blog DomoBlink.

Je suis informaticien depuis un certain nombre d'années, mais n'allez pas penser que je suis vieux, plutôt entre deux âges. Je travaille essentiellement dans le développement et l'intégration. Mes compétences vont de la programmation à l'administration système.
J'aime les nouvelles technologies sans être geek (c'est possible, suffit de se raser !). J'ai découvert le RaspberryPI il y a maintenant 1 an. Mais également l'écosystème qui s'était développé autour : une multitude de blogs et de sites nous permettant, nous novices de l'électronique de mettre un pas dans le monde de la domotique. Pour n'en citer qu'un, j'ai beaucoup appris sur le blog d'Idleman. Et c'est grâce à son blog que je me suis lancé dans ma première réalisation de domotique.

Je vais tenter de vous faire partager à travers ce blog mes travaux en matière de domotique et vous présenter ce que j'aurais réussi à faire.

A bientôt.