La domotique s’invite sur la station Météo !

juin 24, 2023

Dans un précédent billet,  https://meteo-pontscorff.fr/nouvelle-annee-nouvelle-installation-et-nouveautes/

je vous avais décrit des modifications importantes sur ma gestion de ma station météo.

Petit Rappel de l’installation : 

je vous avais décrit une grosse mise à jour pour la récupération des données de ma station Météo :   

Puisque j’utilisais un broker Mqttt (https://obrienlabs.net/how-to-setup-your-own-mqtt-broker/ )   pour pouvoir utiliser le template Belchertown (https://github.com/poblabs/weewx-belchertown)  , j’avais trouvé une solution pour utiliser ce fameux Mosquitto pour présenter les datas différemment.

J’avais donc modifié  mon broker Mqtt afin qu’il alimente un système de base de données en time series : influxDB    ( https://www.influxdata.com/ ) puis à travers un outil pour afficher données chronologiques., Grafana qui permet à partir d’une série de données collectées, il permet d’obtenir un panorama graphique de la situation.

Donc Station Météo => mqtt => InfluxDb => Grafana .

Puis le solaire s’invite sur le broker ! 

 

En début d’année , j’ai fait l’acquisition de 1 panneau solaire puis un 2eme rapidement  : 2 Panneaux solaires en autoconsommation :  la puissance produite est réinjectée  dans le réseau électrique de la maison , si pour X ou Y, raisons , je descends à zéro  consommation , c’est ré-injecté sur le réseau ENEDIS gratuitement. Il faut donc faire attention aux nombres de panneaux à acheter : Trop de panneaux n’est peut être pas vraiment utile. il faut calculer ce qu’on appelle sa consommation « talon » , bref ici n’est pas le sujet.

(Pour information,   ma consommation « Talon » allait subitement augmentée  suite  à des transformations dans mon habitation).

 

 

 

Comme tout le monde , j’ai utilisé l’appli Smart Life de chez Tuya qui est fournie gratuitement sur les Stores puisque le panneau est fourni avec une prise connectée qui permet de récupérer la puissance produite par les panneaux (temps réel, journalier, mensuel, mais pas pour chaque panneau).

En lisant, en interrogeant sur certains groupes Facebook , j’ai appris qu’il était possible d’interroger également les MO des panneaux solaires en temps réel avec un DTU .

Toujours en cherchant , je suis tombé sur le github  de tbnobody  : Le lien du dépôt c’est par ici  :  https://github.com/tbnobody/OpenDTU

Par contre cela demande à  re-chauffer mon bon vieux fer à souder Wuller et donc de refaire un peu d’électronique et de programmation  :  il a fallu acheter deux circuits  et les « monter » : 

je vous mets les liens AliExpress  (Attention , ce ne sont pas des liens affiliés , juste les modèles que j’ai acheté et qui fonctionnent, attention il peut y a voir des déchets …)

ESP32 : https://fr.aliexpress.com/item/1005001636295529.html?spm=a2g0o.order_list.order_list_main.92.41935e5bSBuMJk&gatewayAdapt=glo2fra

NRF24L01https://fr.aliexpress.com/item/32848834985.html?spm=a2g0o.order_list.order_list_main.97.41935e5bSBuMJk&gatewayAdapt=glo2fra

Ensuite il a fallu suivre le schéma de câblage  :  (Schéma copyright OpenDTu  sur le github), normalement pas très compliqué :

8 fils de couleurs différentes à câbler aux bons endroits (« le fil vert sur le bouton vert  , le fil rouge sur le bouton rouge« ).

Et ce qui donne ca en vrai , mais rassurez vous tout a été mis dans un boitier « propre » .

 

Ensuite, je vous passe les détails : tout est bien expliqué sur le github du  projet , vous avez le choix de compiler les sources ou d’utiliser un outil qui  vous permettra de programmer la puce directement.

 

Attention les binaires sont mis à  jour régulièrement : il faut souvent suivre le github du  projet afin de mettre à  jour son boitier régulièrement:

Ici  : https://github.com/tbnobody/OpenDTU/releases , Vous retrouverez les différentes versions  : 

il suffira de mettre votre boiter avec le fameux OTA ( « Over The Air »)  :  http://adresse_ip//firmware/upgrade

 

Après  une mise à jour du composant, installation d’un réseau Wifi ( ou utilisation de votre Wifi Maison, si vous positionnez votre DTU a proximité de  vos panneaux) et quelques réglages , on peut suivre en « temps réel » sa production.

De base le DTU possède ce que l’on appelle un PA ( point d’accès) Wifi fixe  : 192.168.4.1 , il faudra s’y connecter avec soit un smartphone soit un PC possédant du  WIFI pour  en faire le paramétrage 

Ce réseau  ne sert que pour  le paramétrage , il faudra ensuite paramétrer le client Wifi  (en paramétrant le réseau Wifi de votre domicile et lui donner une adresse  ip : Au  choix laisser en DHCP avec le risque qu’elle change au redémarrage du  boitier , ou  lui adresser une adresse  ip  fixe qui est bien entendu   non utilisée sur votre réseau local) 

Pour info , il  a fallu que je modifie la « puissance » de mon gain d’antenne , attention il est bien noté que l’alimentation USB doit être de « bonne facture ».

Options : Paramètres puis paramètres du DTU  : NRF24 Niveau de puissance d’émission

 

et comme ce petit OpenDTU possède un client Mqtt (en gros il peut alimenter le broker)  , j’ai donc modifié mon paramétrage coté serveur Linux, apres avoir modiifé les parametres de mon DTU en mettant le même topic « solar » pour enfin récupérer les datas de mes panneaux  : 

Extrait de mon fichier acl de Mosquitto :

topic read solar/#
user XXXXXX
topic solar/#

le fichier de config de OpenDTU :

Le topic sera donc « solar » 

Vous  pouvez utiliser ce logiciel « libre »  : MQTT-Explorer » sous Windows  :  MQTT-Explorer-0.4.0-beta1 que vous pouvez télécharger ici  : http://mqtt-explorer.com/

oui mais après ? 

 Connexion du broker MQTT avec influxDB2  

il faut créer un nouveau « connecteur » avec l’outil Telegraf : 

Extrait de mon fichier de configuration « mqtt-solar.conf » à pousser sous /etc/telegraf/telegraf.d/

# Read metrics from MQTT topic(s)
[[inputs.mqtt_consumer]]
  ## Broker URLs for the MQTT server or cluster.  To connect to multiple
  ## clusters or standalone servers, use a separate plugin instance.
  ##   example: servers = ["tcp://localhost:1883"]
  ##            servers = ["ssl://localhost:1883"]
  ##            servers = ["ws://localhost:1883"]
  servers = ["tcp://localhost:1883"]

  ## Topics that will be subscribed to.
  topics = [
    "solar/+/status/+",
    "solar/+/0/+",
    "solar/+/1/+",
    "solar/+/2/+",
    "solar/ac/",
    "solar/dtu/"
  ]

data_format = "value"
data_type = "float"
tagexclude = ["host","topic"]
[[inputs.mqtt_consumer.topic_parsing]]
  topic = "solar/+/+/+"
  tags = "_/serial/channel/field"
  [[processors.pivot]]
    tag_key = "field"
    value_key = "value"

Au préalable vous aurez créé un « bucket » Solar, par exemple, dans InfluxDB2

Et la Oh miracle ! 

Exemple   : Récupération de la puissance de mes deux panneaux sur 24 heures lissant : 

 

 

La requête influxdb2 :

from(bucket: "mqtt")
  |> range(start: v.timeRangeStart, stop: v.timeRangeStop)
  |> filter(fn: (r) => r["_measurement"] == "mqtt_consumer")
  |> filter(fn: (r) => r["_field"] == "yieldday")
  |> filter(fn: (r) => r["channel"] == "0")
  |> filter(fn: (r) => r["serial"] == "112182219859" or r["serial"] == "112184745118")
  |> aggregateWindow(every: v.windowPeriod, fn: mean, createEmpty: false)
  |> yield(name: "mean")

oui mais après ?

 

L’intégration d’un tableau de bord GRAFANA ! 

Puisque vous avez installé le broker mqtt, puis le telegraf qui connecte influxDB et enfin Grafana , vous pouvez donc avoir un merveilleux tbd de ce style  : 

 

 

Comme j’ai une station Météo avec un capteur d’indice UV, il est tout a fait possible de coupler les datas venant de la météo et les mélanger à ceux des panneaux  :

 

En conclusion : 

Avec un peu de connaissances et de savoir , pas mal de recherches on peut arriver a de belles choses.

Vous auriez pu également utiliser un autre outil comme « Home Assistant » sans mettre la main dans le cambouis.

Ce qui resterait à faire : dockeriser tous mes outils  : weewx  / grafana / InfluxDb / telegraf … mais ca c’est un autre « chantier » !