Note de ce sujet :
  • Moyenne : 0 (0 vote(s))
  • 1
  • 2
  • 3
  • 4
  • 5
VMC double flux et Zennio Quad
#27
Pas de page wiki...

Attention : je ne pilote pas la VMC, je me suis contenté de mesurer la température dans les 4 conduits. Donc un Zennio Quad + 4 sondes.

Le quad est configuré pour envoyer la température toutes xx minutes ou à chaque changement :

Côté linknx.xml il y a plusieurs lignes intéressantes
- dans <services>
<persistence type="mysql" host="localhost" user="xxx" pass="yyy" db="linknx" table="persist" logtable="log" />
- dans <objects> mes 4 températures avec les 4 GAD utilisées par le Quad
<object type="9.xxx" id="TempVmcInsuflation" gad="3/0/6" init="request" log="true">Temperature VMC Insuflation</object>
<object type="9.xxx" id="TempVmcNeuf" gad="3/0/5" init="request" log="true">Temperature VMC Neuf</object>
<object type="9.xxx" id="TempVmcRejet" gad="3/0/8" init="request" log="true">Temperature VMC Rejet</object>
<object type="9.xxx" id="TempVmcVicie" gad="3/0/7" init="request" log="true">Temperature VMC Vicie</object>

Comme les données sont persistantes elles sont stockées dans une base mysql

La base est ultra simple :

Code :
mysql> show tables;
+------------------+
| Tables_in_linknx |
+------------------+
| log              |
| persist          |
+------------------+
2 rows in set (0.01 sec)

mysql> desc persist;
+--------+--------------+------+-----+-------------------+-----------------------------+
| Field  | Type         | Null | Key | Default           | Extra                       |
+--------+--------------+------+-----+-------------------+-----------------------------+
| object | varchar(256) | NO   | PRI | NULL              |                             |
| value  | varchar(256) | NO   |     | NULL              |                             |
| ts     | timestamp    | NO   |     | CURRENT_TIMESTAMP | on update CURRENT_TIMESTAMP |
+--------+--------------+------+-----+-------------------+-----------------------------+
3 rows in set (0.00 sec)

mysql> desc log;
+--------+--------------+------+-----+-------------------+-------+
| Field  | Type         | Null | Key | Default           | Extra |
+--------+--------------+------+-----+-------------------+-------+
| ts     | timestamp    | NO   |     | CURRENT_TIMESTAMP |       |
| object | varchar(256) | NO   | MUL | NULL              |       |
| value  | varchar(256) | NO   |     | NULL              |       |
+--------+--------------+------+-----+-------------------+-------+
3 rows in set (0.01 sec)

Donc tout arrive dans log, j'ai rien dans persist :
Code :
mysql> select count(*) from log;
+----------+
| count(*) |
+----------+
|  1273127 |
+----------+
1 row in set (0.02 sec)

Par exemple les 10 dernières entrèes (c'est du temps réel :-)

Code :
mysql> select * from log where object like 'TempVmc%' order by ts desc limit 10;
+---------------------+--------------------+-------+
| ts                  | object             | value |
+---------------------+--------------------+-------+
| 2014-02-16 23:25:18 | TempVmcInsuflation | 16.8  |
| 2014-02-16 23:25:18 | TempVmcNeuf        | 10.2  |
| 2014-02-16 23:24:18 | TempVmcInsuflation | 16.7  |
| 2014-02-16 23:24:18 | TempVmcRejet       | 9.2   |
| 2014-02-16 23:24:18 | TempVmcNeuf        | 10.1  |
| 2014-02-16 23:23:18 | TempVmcInsuflation | 16.9  |
| 2014-02-16 23:23:18 | TempVmcNeuf        | 10.2  |
| 2014-02-16 23:22:18 | TempVmcInsuflation | 17    |
| 2014-02-16 23:22:18 | TempVmcRejet       | 9.3   |
| 2014-02-16 23:21:18 | TempVmcInsuflation | 16.8  |
+---------------------+--------------------+-------+
10 rows in set (39.18 sec)

ça c'est pour le stockage des données.

Pour le graphique, rrdtool (cf Google). je suis pas très doué en rrd, donc ce n'est probablement pas optimisé

Création des 4 bases rrd pour les 4 températures

Code :
rrdtool create tempvmcneuf.rrd --step=300 --start=1348915602 "DS:temp:GAUGE:600:U:U" "RRA:LAST:0.5:1:288" "RRA:LAST:0.5:1:2016" "RRA:MAX:0.5:12:168" "RRA:MAX:0.5:288:365" "RRA:AVERAGE:0.5:12:168" "RRA:AVERAGE:0.5:288:3

rrdtool create tempvmcrejet.rrd --step=300 --start=1348915602 "DS:temp:GAUGE:600:U:U" "RRA:LAST:0.5:1:288" "RRA:LAST:0.5:1:2016" "RRA:MAX:0.5:12:168" "RRA:MAX:0.5:288:365" "RRA:AVERAGE:0.5:12:168" "RRA:AVERAGE:0.5:288:

rrdtool create tempvmcinsuflation.rrd --step=300 --start=1348915602 "DS:temp:GAUGE:600:U:U" "RRA:LAST:0.5:1:288" "RRA:LAST:0.5:1:2016" "RRA:MAX:0.5:12:168" "RRA:MAX:0.5:288:365" "RRA:AVERAGE:0.5:12:168" "RRA:AVERAGE:0.

rrdtool create tempvmcvicie.rrd --step=300 --start=1348915602 "DS:temp:GAUGE:600:U:U" "RRA:LAST:0.5:1:288" "RRA:LAST:0.5:1:2016" "RRA:MAX:0.5:12:168" "RRA:MAX:0.5:288:365" "RRA:AVERAGE:0.5:12:168" "RRA:AVERAGE:0.5:288:


Ensuite, je ne savais pas trop comment faire, alors j'ai fait un script qui toutes les 5 minutes pousse les valeurs depuis la base mysql vers rrdtool.

On doit probablement pouvoir faire ça directement depuis linknx !

L'appel du script en crontab :
*/5 * * * * /home/pi/rrd/rrd-push_value.sh tempvmcneuf

Le script
Code :
#!/bin/bash

RRDPATH=/home/pi/rrd

if [ "$1" == "" ]; then
  echo "Il faut donner le nom de l'objet dont il faut récupérer la valeur"
  exit -1
fi
OBJET=$1

if [ "$2" != "" ]; then
  RRDFILE=$2
else
  RRDFILE=$RRDPATH"/"$1.rrd
fi

if [ ! -f "$RRDFILE" ]; then
  echo "Il n'y a pas de fichier $RRDFILE"
  echo "Vous pouvez donner le nom de fichier en second paramètre ou changer le chemin par defaut dans le script ($RRDPATH qui sera compléter par le nom de l'objet) "
  exit -1
fi

data=`mysql --batch --disable-column-names -u xxxx-plinknx yyyy -e "select unix_timestamp(ts),value from log where object = '$OBJET' order by ts desc limit 1;"`

if [ "$data" == "" ]; then
  echo "Erreur dans la requête SQL pour l'objet $OBJET : pas de valeur"
  exit -1
fi

data_ts=`echo $data | cut -d ' ' -f1`
data_value=`echo $data| cut -d ' ' -f2`

rrdtool update $RRDFILE N:$data_value
if [ "$?" -eq "1" ]; then
  echo "Erreur d'exécution de rrdtool update pour l'objet $OBJET"
  exit -1
fi  

exit 0


Et ensuite je génère le graphe qui prend les 4 valeurs avec de la couleur etc...
Code :
rrdtool graph /var/www/rrd/tempvmc-day.png --right-axis 1:0 --vertical-label=VMC --start now-3d --end now --width 1728 --height 300 "DEF:neuf=/home/pi/rrd/tempvmcneuf.rrd:temp:LAST" "DEF:insuflation=/home/pi/rrd/tempvmcinsuflation.rrd:temp:LAST" "DEF:vicie=/home/pi/rrd/tempvmcvicie.rrd:temp:LAST" "DEF:rejet=/home/pi/rrd/tempvmcrejet.rrd:temp:LAST" "VDEF:vneuf=neuf,LAST" "VDEF:vinsuflation=insuflation,LAST" "VDEF:vvicie=vicie,LAST" "VDEF:vrejet=rejet,LAST" "CDEF:economie=insuflation,neuf,-" "AREA:neuf#ffe7e7" "AREA:insuflation#e4ffe4" "LINE2:neuf#FF0000:Neuf\\t" "GPRINT:vneuf:%2.1lf °C\\n"  "LINE1:insuflation#00c500:Insuflation\\t" "GPRINT:vinsuflation:%2.1lf °C\\n" "LINE1:vicie#0000FF:Vicie\\t" "GPRINT:vvicie:%2.1lf °C\\n" "LINE1:rejet#000000:Rejet\\t" "GPRINT:vrejet:%2.1lf °C\\n" "LINE:19#FF00FF" > /dev/null

et ça ressemble à ça
http://www.suricat.net/vmc.png

Tu n'as pas tout compris ? Normal, c'est du bricolage...

Relire, relire et relire :-)

Poses tes questions ensuite !
Viens voir !!! La lampe s'allume, la lampe s'allume !!!!
Répondre


Messages dans ce sujet
VMC double flux et Zennio Quad - par Suricat - 03/10/2012, 10:57:51
RE: VMC double flux et Zennio Quad - par mil3d - 03/10/2012, 11:06:11
RE: VMC double flux et Zennio Quad - par Suricat - 03/10/2012, 11:14:06
RE: VMC double flux et Zennio Quad - par mil3d - 03/10/2012, 11:18:22
RE: VMC double flux et Zennio Quad - par fma38 - 03/10/2012, 11:48:06
RE: VMC double flux et Zennio Quad - par MichelD - 03/10/2012, 12:00:10
RE: VMC double flux et Zennio Quad - par dothell - 03/10/2012, 18:04:40
RE: VMC double flux et Zennio Quad - par dothell - 03/10/2012, 12:43:24
RE: VMC double flux et Zennio Quad - par Suricat - 03/10/2012, 13:16:16
RE: VMC double flux et Zennio Quad - par tityann - 03/10/2012, 17:16:09
RE: VMC double flux et Zennio Quad - par Suricat - 03/10/2012, 18:48:48
RE: VMC double flux et Zennio Quad - par dothell - 03/10/2012, 20:12:07
RE: VMC double flux et Zennio Quad - par dothell - 22/04/2013, 18:54:10
RE: VMC double flux et Zennio Quad - par fma38 - 23/04/2013, 10:15:59
RE: VMC double flux et Zennio Quad - par seb@leon - 23/04/2013, 10:27:03
RE: VMC double flux et Zennio Quad - par TALA_KNX - 16/08/2013, 10:50:08
RE: VMC double flux et Zennio Quad - par TALA_KNX - 16/08/2013, 12:29:39
RE: VMC double flux et Zennio Quad - par dclik - 05/02/2014, 14:43:39
RE: VMC double flux et Zennio Quad - par Suricat - 10/02/2014, 21:53:56
RE: VMC double flux et Zennio Quad - par dclik - 11/02/2014, 11:49:29
RE: VMC double flux et Zennio Quad - par dclik - 14/02/2014, 14:15:03
RE: VMC double flux et Zennio Quad - par Suricat - 16/02/2014, 23:37:48
RE: VMC double flux et Zennio Quad - par fma38 - 17/02/2014, 07:20:24
RE: VMC double flux et Zennio Quad - par dclik - 18/02/2014, 09:20:29

Atteindre :


Utilisateur(s) parcourant ce sujet : 1 visiteur(s)