Domotiser un radiateur soufflant

Pourquoi faire ? Et bien je me disais que ca serait bien qu’il intégre son petit thermostat .. et oui j’ai envie que mon radiateur réfléchisse un peu et qu’il prenne ses responsabilité : 17 la nuit et 19 en journée.

Pour cela j’ai utilisé plusieurs solutions.

La première est à base de prise X10 .. kesako ? Ce sont des prises télécommandées par courant porteur. Il faut un émetteur qui est relié en RS232 (converti en USB) au raspberry et un petit logiciel sur le raspberry et hop la on peut commander des prises par une simple commande du genre : X10 A2 ON (ou A2 est l’identifiant de la prise).

Etant donné que mon raspberry récupère les températures dans toute la maison, il suffit alors d’un petit script qui regarde la température qui va bien et qui envoie la commande on ou off selon l’heure et la température.

Oui mais voila depuis on a fait mieux (moins cher en tout cas) : Pour cela je vous invite à voir l’article sur le hack du sonoff. Le principe est alors encore plus simple : on a une prise qui contient un ESP8266 qu’on vient flasher avec espeasy (par exemple) et auquel on vient ajouter une petite sonde de température (une dallas 18b20). Reste plus qu’à se connecter à la prise et lui dire d’actionner quand la température est trop basse. Mais en plus, le top, on peut actionner manuellement par le bouton en facade.

compteur d’eau domotisé .. utile ?

Dans ma lubie de vouloir maitriser ma consommation, et donc la comptabiliser, je n’ai pas résister à vouloir suivre ma consommation d’eau .. J’ai donc acheté un compteur d’eau “domotisé” à savoir avec un compteur d’impulsion .. Le principe est simple, quand l’aiguille passe devant l’aimant, cela génère un petit courant, une impulsion, qu’il “suffit de” comptabiliser..

Sur le principe, c’était parfaitement adapté à l’ESP8266 que j’ai muni d’ESPEASY .. facile, il y a déjà une entrée de type impulsion .. le tout envoyé en “http push” sur mon site .. super .. j’ai gagné !

Enfin presque ..

Assez vite je me suis appercu que j’avais des impulsions très souvent .. et parfois très très souvent ..

Qu’a cela ne tienne un petit tour chez mes ami Electronicien qui m’apprenne au passage ce qu’est un filtre : une capa et une résistance et hop, on est censé gommer les impuretés .. et c’est vrai qu’on en gomme ..

Pourtant j’avais toujours des impulsions parasite .. En cherchant longtemps j’ai compris le problème : quand l’aiguille est arrêtée devant le capteur et bien cela génère le petit courant, malgré le filtre (qui retarde le probleme) l’impulsion arrive ..

Donc conclusion, suivre votre consommation est à peu pres possible .. cela ne sera pas exact .. et si vous vouliez, comme moi, détecter des fuites et bien c’est tout à fait hors de propos.

Comment faudrait il faire alors ?

J’ai l’idée mais je ne l’ai pas encore implementée : en fait il faudrait un compteur avec non pas 1 capteur d’impulsion mais au moins 2, voire 3 et même pourquoi pas 4. Et on comptabilise l’impulsion (le tour) qu’une fois qu’on a les 4 impulsions qui se suivent. Si on a qu’une impulsion d’un meme capteur qui revient alors c’est un parasite ..

affaire à suivre …

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.

Enfin, en regardant les specs constructeurs, on a la taille du gicleur et on peut déduire la consommation de gaz.. Mais la c’est un peu plus compliqué car le volume de gaz dépend de la température ..

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

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 .. Pour 15€ vous avez une sonde qui vous affiche la température ..

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 🙂

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 ..

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% !