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.



Aucun commentaire:

Enregistrer un commentaire