Nouveau projet solaire !

J’ouvre le pas à un nouveau thème dans mes articles puisque je suis passé au solaire et il y a beaucoup de chose qui se disent sur le sujet. Pour ma part, je parlerais des faits réels sans religion.

Mon premier projet que je vous invite à suivre c’est une sorte d’onduleur inversé. Inversé ? Pourquoi ? Et bien un onduleur cela permet d’alimenter un appareil sur le courant “EDF” (par opposition au courant solaire ou celui venant d’une batterie) mais de basculer sur une batterie (dont on s’est assuré qu’elle était chargé et opérationnelle en permanence) quand il y a une coupure.

Mon besoin c’est l’inverse. J’ai des batteries que j’ai récupérées (changer sans raison sur les voitures) et j’aimerais bien les utiliser. En parallèle j’ai mon serveur de domotique qui consomme en permanence 300W en gros. J’ai mis un certain temps à faire le rapprochement mais donc voila l’idée : pourquoi je n’utiliserais pas ces batteries quand elles sont chargées pour ce besoin continu et permanent ? Voila ..

Comme vous le voyez mes “exigences” sont faibles. Je veux 300W pas plus, pas moins, mais je n’ai pas précisé combien de temps. C’est volontaire. Peu importe si ca dure 1 heure, 2 ou 10 c’est toujours ca d’économisé. Nous verrons combien nous y gagnons à la fin : pour moi c’est un peu un pari mais je me dis, de toute façon, même si l’investissement est amortissable sur 30 ans je serai content d’avoir un système qui demande le moins possible à EDF.

Voici donc le schéma de principe :

En gros donc j’ai un panneau solaire 12V, un controleur de charge basique, une batterie (ou deux ou trois) de voiture, un “inverter” (qui transforme le courant continu 12V en alternatif 230V), un ESP (le choix n’est pas arrêté mais un composant de base avec des entrées et des sorties). L’ESP est donc en charge de mesurer la batterie et de commuter un relai statique : en fait 2 relai statique pour faire passer l’électricité par la bonne source. A noter, je n’ai pas de contrainte de temps de “commutage” car mon PC est sur onduleur.

La domotique efficace ? mais qu’est ce que c’est ?

Après plusieurs mois d’existence, le blog tient enfin son titre : la domotique “efficace” .. super ! Mais qu’est ce que cela veut dire ?

Pour tout dire à la base mes attentes vis à vis de la domotique était d’avantage le coût au plus faible possible. Le titre aurait donc été “la domotique pour les radins”. Le truc c’est qu’en étant radin en argent, je me suis rendu compte, après plusieurs années, que :

  • les solutions “à pas cher” n’étaient pas toutes très fiables dans le temps
  • les solutions “sur l’étagère” permettaient parfois de gagner beaucoup de temps

Donc l’idée d’efficacité est désormais de trouver un juste milieux entre un prix raisonnable, un temps de “maintenance” raisonnable et une durabilité raisonnable. Une solution “efficace” pour moi est donc une solution qui dure dans le temps sans qu’on ait d’opération à faire et sans s’être ruiné. Avant d’écrire des articles plus concrets, voici un exemple concernant les sondes de températures.

Solution : WIFI ESP8266#1 nu avec DS18B20 >> pas efficace (pas cher mais pas fiable dans le temps et long à faire), pas fun car trop complexe mais intéressant pour entrer dans le sujet

Solution : WIFI ESP8266#12 sur devboard NodeMCU >> efficace et fun

Solution : RF433 Sonde Lacrosse ou Oregon avec RFXCOM >> pas efficace (Trop luxueux) et pas fun du tout.

Solution : RF433 Sonde Lacrosse ou Oregon et RFLINK >> efficace et fun

interagir avec les ampoules Philips Hue en HTTP (avec curl..)

Bon c’est vrai, Philips Hue c’est cher .. mais pour avoir testé par mal d’autres choses, il y a quand même deux avantages :

  • ca marche .. et ca marche bien. Ca fait simplement ce qu’on demande. L’appairage est facile, on peut appairer une ampoule à plusieurs télécommandes et plusieurs télécommandes à une ampoule .. finis les vas et viens ..
  • c’est documenté et bien documenté ! .. Donc tout ce que je vous dis la en fait vous le trouvez facilement ..

Reste donc plus qu’à traduire en curl pour faire les actions en scripts depuis votre raspberry. Vu que le pont hue va vous parler json, il est de bon ton d’installer jq, un utilitaire pour processer le json. Il faut aussi connaitre l’IP de votre pont hue ..

Avoir la liste des ampoules (et toutes les infos en fait) :

curl http://192.168.1.30/api/votreidavous/lights | jq -r

ou encore

curl http://192.168.1.30/api/votreidavous | jq -r “.lights”

avoir le nom de l’ampoule 8

curl http://192.168.1.30/api/votreidavous/lights/8 | jq -r ".name"

ou encore (celle ci j’ai mis du temps à la trouver)

curl http://192.168.1.30/api/votreidavous | jq -r “.lights.”8″.name”

avoir le statut (ON / OFF) de l’ampoule 8

curl http://192.168.1.30/api/votreidavous/lights/8 | jq -r ".state.on" | sed "{s/true/ON/;s/false/OFF/}

avoir la luminosité de l’ampoule 8

curl http://192.168.1.30/api/votreidavous/lights/8 | jq -r ".state.on"

Pour fixer les valeurs c’est un poil plus compliqué .. je pourrais expliquer si ca intéresse quelqu’un mais ca donne :

Pour éteindre (avec false sinon devinez ce qui se passe quand vous mettez true)

curl -X PUT http://192.168.1.30/api/votreidavous/lights/8/state -H "Content-Type: application/json" -d "{\"on\":false}"

Fixer la luminosité à 1 :

curl -X PUT http://192.168.1.30/api/votreidavous/lights/8/state -H "Content-Type: application/json" -d "{\"dim\":1}"

Raspberry – gérer les coupures (et redémarrages ..)

Votre raspberry vous rend bien des services, et il ne parait pas, mais il a besoin qu’on prenne un peu soin de lui. Enfin plus précisément, il a besoin qu’on prenne soin de la carte SD. En effet, les cartes SD aussi performantes soient-elles sont limitées en nombre d’écriture. Si vous ne faites rien, tôt ou tard, votre machine ne démarrera pas.

~1 : Premier tips pour Alain : pour qu’un script soit executé au démarrage : il y a plusieurs méthodes mais celle que je préfère (car tout est centralisé ainsi chez moi) en ajoutant une ligne dans la crontab :

Pour cela taper la commande :

crontab -e

Si c’est votre première fois, il faut choisir un éditeur > nano est le moins pire.

Entre ensuite la ligne puis faite CONTROL+X et y (ou o) pour dire oui à l’enregistrement.

@reboot /home/pi/atstart.sh

~2 : Il est bon d’éviter les coupures brutales. Pour cela, j’ai deux solutions. La première consiste à installer un shield qui gère les arrêt/démarrage du raspberry. Concrêtement c’est une carte qu’on branche sur le raspberry et qu’on alimente. Ce sera elle qui arrêtera le raspberry quand il n’y a plus de courant (un arrêt propre) et qui le démarrera. Et en cas de problème, c’est elle qui prendra.

On peut aussi installer une powerbank qui prendra le relais en cas de coupure, qui vous alertera, et qui permettra de faire un arrêt propre. Pour cela, je conseille, tant pour le prix que pour la facilité de mise en oeuvre : http://raspi-ups.appspot.com/en/index.jsp

~3 : la partie la plus pénible et subjective : éviter les écritures sur votre carte SD. Oui, oui. Pour votre scripts, c’est simple, il suffit d’utiliser /dev/shm (la mémoire vive) plutôt que /tmp (votre carte SD). Mais pour le système, il va falloir faire des choix. Par exemple, a-t-on besoin des /var/log/message d’il y a 2 ans ? 2 mois ? 2 jour ? d’avant le redémarrage ? Vous aurez compris, on peut dire au système de “monter” certains répertoires en mémoire vive et économiser ainsi un nombre important d’écriture. Mais les fichiers seront en mémoire vive donc perdu au prochain redémarrage. Affaire à suivr

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.

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.

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

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 :