Domotiser la piscine – partie 1 : la pompe

Avant toute chose, je ne saurais que trop vous déconseiller d’avoir une piscine, je vous préviens c’est beaucoup d’ennui. Bon, trop tard, vous avez fait la bétise et maintenant vous voulez vous facilitez un peu la vie et économiser un peu d’argent ? Alors voici le programme : 1 raspberry (pour changer), 1 sonde DS18B20, un relai 5V .. et c’est parti. Ah non j’oubliais il faut un peu vérifier qu’on fait ce qu’il faut donc il faut un capteur de courant (mais c’est pas obligé).

Tout d’abord, il faut commencer par prendre la température de la piscine, c’est la que la sonde entre en jeux. Et oui, la durée de pompage (et donc la facture d’électricité) dépend de la température.

Ensuite, il faut “domotiser” la pompe. On va juste mettre un relais 5V/220V 4A qui permettra au raspberry de piloter la pompe.

Ensuite ce n’est plus que de l’algorithmie de bas étage. L’idée étant de prendre la température, de diviser par deux et cela vous donner la durée de filtration. En passant vous en déduisez donc le cout journaliser de la pompe car vous connaissez sa puissance et le prix de l’électricité. Pour ma part l’algo est donc basique (efficace devrais je dire) : je fixe l’heure d’arrêt de la pompe à 22h. Je relève la température, divise par 2 pour obtenir le temps de filtration en heure et je le retranche à 22. J’obtiens l’heure de début.

Mon script sait donc entre quelle heure et quelle heure il doit fonctionner. Vu qu’il est lancé en cron toutes les minutes, il regarde à chaque fois quelle heure il est, quelles sont les conditions et il dit si, oui ou non, on active la pompe (le relais).

En écrivant cet article je m’appercois que c’est peut etre mieux de faire à l’envers. En effet, quand il y a le plus besoin de filtration, l’été, la température augmente dans la journée. Or mon script calcule la date de début donc il ne pourra pas augmenter la durée de pompage.

Il faut donc mieux définir l’heure de démarrage, disons 7h et calculer au fur et à mesure de la journée la date de fin. Si la température augmente il la repousse, si elle descend il la recule.

La mesure de courant dans la pompe permet de vérifier que la consigne est appliquée et de sévir le cas échéant .. ou en tout cas d’alerter .. Pour ma part, chaque soir je vérifie qu’elle a bien tourné le temps temps prévu (je mesure à 22h) et sinon je m’envoie un petit mail pour éviter que l’eau tourne. Je suis moins embeté depuis !

Pourquoi mesurer la luminosité ? Quelle(s) utilités ?

Bon déjà première réponse parce que .. oui c’est tout parce que .. ben oui c’est comme ca, ca m’amuse, c’est fun de pouvoir qu’aujourd’hui il ne fait pas juste beau ou très beau il fait 1023 en luminosité .. et que c’est presque le max ..

Bon voila blague à part, comment s’en servir ?

Pour ma part l’utilité majeure a été de mesurer le temps de fonctionnement de ma chaudière à gaz. Oui .. il y un œilleton qui permet de voir (ou non) la flamme.. et bien je me suis servi de cela pour venir y plaquer un capteur de luminosité. Pour cela j’ai utilisé une plaque de test d’esp8266 comme celle ci-dessous qui a déjà ce fameux capteur.

Pour des raisons pratiques, j’ai désoudé le composant et l’ai ressoudé au bout d’un long fil (je suis assez fier de moi malgré la médiocrité de la tâche). Ensuite, je suis venu plaqué (um um scotché en fait, oui je sais c’est pas très pro mais c’est chez moi) le capteur contre la vitre de l’œilleton. Le reste n’est qu’une simple capture de données avec un esp flashé avec espeasy (par exemple) et envoyé dans votre système de domotique (maison dans mon cas).

Le capteur étant plaqué (oui scotché c’est bon!) la lumière ne passe pas autrement dit la valeur est ridiculement petite la plupart du temps (50-100) … et des que la flamme s’allume oh magie .. ca monte nettement ..

J’ai donc post-traité (un grand mot pour rendre classe la suite) mes données en fixant un seuil à 200 : autrement dit je considère que la flamme est vraiment la si j’ai une valeur au dessus de 200 .. donc je remplace toutes les valeurs inférieures à 200 par 0, et toutes celles qui dépassent par un 1 ..

Confronté (voir article sur la domotisation de la chaudière) aux informations venant du relais piloté .. ca marche !!!

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