Domotiser une chaudière ELM Leblanc : comptabiliser

Les chaudières Leblanc sont équipées d’une prise diagnostic mais le service client (qui est au passage d’une médiocrité à toute épreuve) refuse de donner la moindre information sur le format des données qui pourraient transiter .. on peut le comprendre (pas leur médiocrité mais leur discrétion) ..

Donc comment faire pour avoir une petite idée de la consommation .. J’ai bien dit une petite idée, je ne prétend pas ici faire un calcul exact .. ce n’est pas possible de calculer quand on a les yeux fermés et les bras attachés dans le dos ..

Mon idée est basée sur un constat : le chauffe eau chauffe de l’eau .. oui oui .. et il chauffe même des eaux .. soit de l’eau sanitaire, soit de l’eau de chauffage .. en réfléchissant d’avantage je me suis donc dit que si il chauffait l’eau on devait pouvoir mesurer la température de l’eau .. Alors comme je suis un peu tordu j’ai imaginé des systèmes compliqués avec une sonde immergée .. et puis un jour au travail, des gens dont c’est le travail ont présenté plusieurs moyens de mesurer la température d’un liquide dans un tuyau : parmi les systèmes testés l’un d’entre eux consistait à coller une sonde contre le tuyau .. en connaissant l’épaisseur du tuyau, les caractérisque du fluide, le débit .. on arrivait à avoir une valeur très précise de la température .. Alors banco, j’ai pris deux sondes DS18b20 et je les ai collées sur les deux tuyaux de sortie de la chaudiere .. Je passe les détails mais je les ai branchées sur mon raspberry.

On obtient alors deux jolies courbes .. super .. bon déjà on est content car cela reflète la réalité. Le chauffage n’est pas en route donc on ne voit pas de fluctuation sur le tuyau. Coté eau sanitaire, on voit bien à chaque fois qu’on fait appel à de l’eau chaude.

Le reste est très bête : je pourrais parler de dérivée mais pour faire simple je parcours la courbe point à point et je fais la différence entre la valeur actuelle et la valeur précédente. Si je vois que la température augmente de 2% je considère que la chaudière est en train de chauffer (et empiriquement ca colle vu que quand on est devant, on entend et on voit la flamme). j’en déduis donc un temps de fonctionnement.

Donc au final je m’arrête à la dernière donnée relativement fiable, un temps de fonctionnement…

C’est tout me direz vous ?

Non … on peut avoir une idée assez précise de la consommation de gaz dans mon cas parce que vu que la chaudière n’est lancée que sur des temps courts ou elle doit chauffer, elle ne fait pas de régulation. Chaque fois qu’on lui demande, elle allume la flamme et brule du carburant. (petit détour au passage : j’ai mesuré le temps d’allumage de la flamme grâce à un ESP8266 sur une devboard chinoise qui contient un détecteur de luminosité, et je confirme, la flamme est toujours la quand je commande à la chaudière de chauffer). Mais quelle quantité de carburant ? et bien cela dépend du “gicleur” et ca, ca tombe bien c’est une donnée constructeur. Par contre, le gicleur vous donne un débit en Litres par seconde .. mais, problème, votre quantité de gaz est en tonne. L’approche calculatoire est impossible à nous simples mortels, il faudrait en effet pouvoir connaitre la température du carburant, donc dans la cuve .. et il faudrait donc pouvoir convertir en direct vos volumes en kilos ..

Mon approche nécessite un peu plus de patience (mais elle est récompensée) : sur deux ans, j’ai relevé les temps de fonctionnement entre deux recharges. En regardant la facture j’ai obtenu le volume et le poids livré (et je l’ai payée aussi) et la donc (j’arrondis pour simplifier le calcul) :

année 1 : 800kg pour 80h de fonctionnement

année 2 : 400kg pour 40h de fonctionnement

ah ben tiens j’ai 60h de fonctionnement l’année 3 .. voyons donc .. 800 kg/80h, 400kg/40h .. ca ferait pas du 10kg/h ca ?! donc pour 60h je vais payer 600kg ? .. attendons .. ah ben oui ca a marché

10kg par heure donc .. oui mais moi je chauffe par tranche de 5 minutes … 10kg/60minutes ca doit donner 0.83kg pour 5 minutes …

Attendons encore une année maintenant mais a priori la marge d’erreur est de 5% .. quand on sait qu’une cuve vide est à 15% et une cuve pleine à 85% (oui oui véridique) on voit qu’on est pas à 5% près.

Quel modèle de sonde de température choisir ?

Ah ca c’est une question qu’elle est bonne .. toutefois une bonne réponse exige une bonne question et j’ai envie de commencer par : ca dépends. Mais ca serait trop facile .. alors voici plutot les critères que je prends en compte pour vous livrer ma réponse après 10 ans :

  • prix attractif
  • fiabilité
  • facilité d’installation

J’ai expérimenté pas mal de choses :

  • sondes 1-wire (à base de DS18b20) (filaire donc) connectée sur un hub puis avec un convertisseur RS232>USB sur le raspberry
  • sondes sans fil AREXX avec passerelle USB (connectée sur le raspberry)
  • modules ESP8266 équipés d’une sonde DS18b20 (ou DHT11 pour l’humidité)
  • sondes Oregon dont la trame est espionnée par rflink (carte arduino branchée en usb sur le raspberry

Le filaire c’est super, mais quand on construit sa maison et qu’on prévoit tous les fils. Si je construisais ma maison, je prévoierais une salle pour toute mon installation domotique .. mais bon avec des si .. donc bref, je ne retiens pas cette solution. Elle est toutefois utile à connaitre car on peut avoir des mesures a proximité du raspberry. Dans mon cas le raspberry est dans la chaufferie donc j’en profite pour prendre la température des conduits d’eau (et déduite ma consommation mais j’en parle dans un autre topic)

Les sondes AREXX sont également super.. C’est du sans fil et cela m’a grandement simplifié la vie .. mais c’est pas franchement fait pour tourner sous LINUX et il faut un module pour recevoir l’information .. à 25€ la sonde de température (ce qui est déjà pas mal) il faut ajouter encore quelques dizaines d’euros ..Et je ne connais pas de moyen d’avoir en plus un affichage de la température sur la sonde. Bref, je ne conseille pas.

En grand radin que je suis j’ai bien évidemment été attiré par les nombreux billets sur les nombreux blogs qui vantent l’ESP8266 et son capteur autonome à moins de 5€. Mouais .. J’en ai acheté une bonne vingtaine .. seul 1 est en vie après 1 an. La solution est donc, il est vrai, peu couteuse.. mais elle est assez peu robuste et demande beaucoup de temps (le nombre de fois ou la mise à jour du firmware plante). Pire, je n’ai jamais réussi à faire une sonde de température vraiment autonome : elles demandent toutes une alimentation 5V et un bon vieux cable pour être alimentées. J’ai bien sur essayé les piles, les batteries externes .. mais je n’ai jamais réussi à avoir une température pendant plus d’une semaine. Pour info, une sonde Arexx et Oregon produisent des données toutes les minutes pendant des mois .. DES MOIS. Bref, il faut acheter du bon matos, pas n’importe quel ESP8266, mettre le bon firmware .. et régler le deep sleep .. pas si simple .. il faut ensuite un écran adapté et le code qui va bien pour affciher la température … bref, à refaire ben, je ne le referais pas. En plus, si on regarde vraiment le prix tout mis bout à bout, je ne suis pas sur de faire mieux que les 15€ d’une sonde oregon. (mince j’ai trahis la conclusion)

Vous l’aurez compris mon choix se portent vers les sondes Oregon .. V1 ou V2 peu importe .. elles produisent toujours des trames propres .. durent dans le temps .. Elles indiquent dnas la trame si la batterie est OK ou non ..

Petit up 2020 : vu que les sondes Oregon sont désormais introuvables il m’a fallu revoir ma position et tester autre chose. Je me suis orienté vers les dondes “Capteur station météo TX3TH” .. 25€ pour deux (frais de livraison inclus) .. elles sont parfaites !

Sinon pour 15€ vous avez une sonde qui vous affiche la température .. (mais pas connectée)

La seule question à se poser dans ce cas est : est ce que j’achete le Rfxcom USB Transceiver (75€) ou est ce que je fais mon propre émetteur/Récepteur RF ? (25€) .. Pour ca je n’ai pas la réponse 🙂 .. Je vais quand même essayer de vous aider : faire vous même si vous êtes patients et curieux (et un peu radin en argent mais pas en temps) et que vous aimez maitriser exactement ce qui se passe, si vous êtes pressés le rfxcom est parfait.

PS : je le regrette mais je suis un penseur libre, je ne touche d’argent ni aucune forme d’avantage d’aucune marque.

Arexx et raspberry

Avant de m’intéresser à RFLINK je me suis équipé de sondes Arexx. POur cela il faut donc des sondes mais aussi le logger. Pendant longtemps le tout tournait, à merveille je dois dire, sous Windows.. oui mais voila j’ai voulu faire marcher la chose sur raspberry ..

Et bien la on se sent un peu seul voyez vous ..

Il faut télécharger un programme qui date de 2003 ..

http://www.arexx.com/downloads/templogger/linux/rf_usb_http_rpi_0_6.zip

Bien sur on l’installe et on lit le readme .. par chance le programme sait faire un appel http .. on va donc utiliser cela .. voici comment paramétrer le fichier rulefile.txt

Vrulefile
A1php push
B1
C0
E213.186.122.44/getdata.php
Zdata==arexx&&name==$i-$q&&value==$v&&type==$q

en première ligne, vous lui dites que vous faite du “push” php .. ensuite en 5 ieme ligne vous donner l’url de base sans préciser http:// mais avec un E devant

Enfin, après un Z, vous spécifiez les noms des variables et la valeur

dans mon cas donc l’url appelée serait

http://213.186.122.44/getdata.php?data=arexx&name=20242-0&value=12.6&type=hum

Ensuite il ne reste plus qu’à appeler le programme. Mais malheureusement ca ne marche pas, et il n’y aucune doc. Qu’a cela ne tienne, on va le gruger. J’appelle le programme et redirige la sortie standard dans un fichier, le tout pendant 30s.

sudo ./rf_usb_http.elf -v rulefile.txt > logfile < <(sleep 30;echo -e "\n")

Une fois la sortie récupérée je vais nettoyer tout ca et récupérer la partie qui m’intéresse et faire le curl moi meme.

cat logfile | grep GET | uniq | awk '{print $2}' >> tmp
while read -r line
do
        url="http://monsiteamoi$line"
        echo "curl sur $url"
        /usr/bin/curl --connect-timeout 1 --max-time 5  $url
done < tmp

Voila, c’est dégoutant mais ca marche …

J’en profite pour souligner que les sondes Arexx sont de super qualité. Je les utilise depuis 10 ans, j’en ai une qui cessé de vivre après être tombée, mais sinon elles sont super, les piles durent super longtemps.

Malheureusement, le protocol utilisé n’est pas décrypté par rflink .. ce serait un travail à faire … peut etre un jour .. cela permettrait de se passer de la passerelle usb.

Toutefois, si vous avez un rflink, cela ne fait pas le poids avec une sonde Oregon qui a le bon gout d’indiquer, dans la trame, le niveau de batterie..

Publier ses données de son raspberry sur son site

Comme déjà présenté, je n’ai pas opté pour domoticz puisque je veux accéder à mes données de l’extérieur. Pour autant je ne souhaite pas accéder de l’extérieur à ma maison ..

J’ai donc un site chez un hébergeur et une base mysql. C’est un prérequis.

Pour la suite, j’ai opté pour la simplicité : sur mon site j’ai un script getdata.php qui passe en argument le nom de la donnée et sa valeur

Ca donne ca :

<?php
//informations sur l'appelant
$vip=$_SERVER["REMOTE_ADDR"];
$vpays=$_SERVER["HTTP_X_FORWARDED_FOR"] ;
$vua=$_SERVER["HTTP_USER_AGENT"];
$vfr=$_SERVER["HTTP_REFERER"] ;
//récupération des données
if (isset($_GET['name']))$acquired_name=$_GET['name'];
else $acquired_name="UNKNOWN";
if (isset($_GET['value']))$acquired_value=$_GET['value'];
else $acquired_value="UNKNOWN";
if (($acquired_value!="UNKNOWN") && ($acquired_name!="UNKNOWN")) {
  insertValueInDb($acquired_name, $acquired_value);
}

Depuis le raspberry, à chaque lecture d’une valeur, quelqu’elle soit, le principe est toujours le même et cela tient en une commande (shell script)

/usr/bin/curl -s --connect-timeout 5 --max-time 10 http://monsiteamoi.com/getdata.php?name=Tcuisine&value=20.1

lire les trames RF avec RFlink depuis LINUX

RFlink est un super code qui décode à la volée les trame RF, les reconnait et les transmets .. à domoticz ..

Domoticz est un produit super … mais j’ai préféré m’en passer.

J’utilise pour ma part un script shell qui parse le fichier (oui sous LINUX l’arduino connecté en USB peut etre vu comme un fichier) et qui transmet les informations lues à mon site sur lequel un webservice REST tourne.

Pour commencer, comment paramétrer la lecture du “fichier” ou plutot du flux : on utilise pour cela la commande stty en lui donnant les bons paramètres

#8 data bits, 1 stop bit, no parity
/bin/stty -F /dev/ttyACM0 57600 sane -parenb cs8 -cstopb cread inlcr

Ensuite, on peut lire ou écrire, pour ma part je commande à désactiver le mode débug

echo "10;rfdebug=off;" >> /dev/ttyACM0

Enfin, on peut s’atteler à la lecture. Pour cela je fais une boucle infinie dans laquelle je vais décoder chaque ligne avec des awk. Cela permet de savoir quel type de trame on a (la variable what) et son la valeur de son id ..

/bin/cat /dev/ttyACM0 | while read line; do
  fullcontent=`/bin/echo ${line:4} | tr -d ' '`
  what=`/bin/echo $fullcontent | /usr/bin/awk -F";" '{print $2}'`
  id=`/bin/echo $fullcontent | /usr/bin/awk -F";" '{print $3}'`
  id=${id#ID=}
done

On suivra le meme principe en changement la commande pour récupérer, selon le type de trame, la température, la valeur du “switch”, de la commande, de la batterie .. Dans un prochain article je détaillerais comment, avec ce système, je récupère la valeur des sondes oregon ..

Hack de sonoff

Dans ce cas je voudrais asservir un appareil (de chauffage en l’occurence) à la température ambiante.

J’ai retenu le sonoff car il contient un ESP8266 qu’on peut donc “hacker”. Vous aurez sans doute trouvé avant ce blog le papier détaillé de https://projetsdiy.fr/hacker-prise-connectee-sonoff-s20-super-smart-plug-espeasy-rules/

Maintenant que vous avez tout acheté, tout fait .. faisons le marcher !

ESPEasy est merveilleux donc avez accès à votre prise radiocommandée et moyennant l’écriture d’une ou deux règles (que vous aurez la encore trouvé sur le net) cela fonctionne .. une fois .. deux … et la vous voyez qu’il y a un joli bouton, éclairé des fois .. alors vous le toucher.

Et voila, pour moi ca c’est arrêté la ! En effet dans la pratique cela se passe autrement malgré la qualité (toujours meilleure car je pars de loin) de mes soudures/connexions. Concrètement, il semble que le problème vienne du bouton mais il est utile. Et oui, vous peut être pas, mais votre femme voudra sans doute forcer le chauffage même si vous avez décidé que 25° c’est tout à fait suffisant pour une salle de bain et que vous avez coupé le relais .. A l’inverse, quand il fait déjà 35° le 15 Août et que je cherche plutôt du frais, j’apprécie de pouvoir couper le radiateur qui s’est déclenché (parce qu’on m’a obligé sous peine de divorce à le déclencher).

Donc voila le besoin : un relais qui est régit par :

  1. un système automatique qui applique le démarrage/arrêt selon des règles objectives.
  2. plusieurs systèmes manuels (humains ou assimilés) qui appliquent le démarrage/arrêt selon des règles subjectives.

Comment faire ?

Et bien ce que je peux dire c’est qu’il ne faut pas suivre les tuto qui ne prennent en compte que le premier point ..

pour la suite .. bientot !

Bref

Shield arduino uno pour analyse de courant/tension (et plus car affinité)

Comme vous l’avez peut etre vu, j’ai mis en place un relevé de fonctionnement de ma pompe de piscine : ce cas était simpliste vu que seule l’information en marche/arrêt m’intéressait. Dans ce cas pratique je cherche à faire un vrai relevé de consommation, précis qui plus est.

Voici le matériel que nous avons retenu et testé :

Le branchement étant un peu moche nous avons fait imprimer un shield :

Domotiser une chaudière ELM Leblanc

et voila, ma nouvelle chaudière vient d’être installée et mise en mode hiver ..

mais maintenant j’aimerais bien avoir une idée de sa consommation (c’est mon truc vous verrez… )

Le service client et technique d’ELM Leblanc étant aussi aimable que collaboratif et compétent, il va falloir se débrouiller seul.

Par chance, la chaudière est équipée d’une entrée thermostat qui se trouve être un contact sec ..

Tiens donc, mais faire mordre un contact c’est le job d’un relais .. et pilote un relais avec le raspberry je sais faire ! Essayons

Equipement :

  • un relais 5v
  • un raspberry
  • des cables dupont et dupond

Dans mon cas la chaudière gère l’eau chaude de chauffage j’ai donc des radiateurs avec des têtes thermostatiques mais tout ce qu’il y a de plus vieux et basique.

Je les règle sur une valeur qui correspond au maximum que je tolère (si ce n’est plus mon rapsberry qui pilote).

Ensuite c’est assez simple, le raspberry collecte les températures et évalue le besoin de chauffage (si une pièce est trop froide par rapport à la consigne) et si oui, on active le relais.

A noter que le relais est branché en “normalement fermé”, cela veut dire qu’en cas de perte du raspberry, par défaut on chauffe (enfin si les têtes thermostatiques laissent passer l’eau) ainsi on a du chauffage même si notre rapsberry nous a laché (votre femme appréciera).

La routine d’évaluation du besoin de chauffage tourne à interval régulier et on note le résultat (chauffage demandé ou pas). On a ainsi plus qu’a multiplié le nombre de demande de chauffage par le temps de cycle de notre routine et on obtient le temps de chauffage. En faisant l’approximation de la consommation de gaz (le débit est désormais variable est piloté par votre chaudière) on a une estimation de la consommation de gaz. Sur une année, mon erreur est en dessous de 10% !

Utiliser l’ESP comme un périphérique USB sur le raspberry

Oui ca fait un peu bizarre comme ça .. vous devez vous demander “Pourquoi?”

En effet, l’ESP8266 est utilisé parce qu’il sait parler en wifi .. le raspberry sait faire aussi .. donc pourquoi les brancher entre eux ?

Et ben parce que la ou ces deux la se cotoient, il n’y a pas la WIFI .. donc ils ne peuvent pas se parler ..

oui mais alors pourquoi brancher l’ESP sur le raspberry et pas faire “l’acquisition de données” directement avec les raspberry .. bon la je n’ai pas de bonnes raisons .. j’avais envie de tester cela 🙂 Peut être quelqu’un trouvera-t-il une bonne raison ?