Gestion de l'énergie avec Home Assistant : retour d'expérience

Voici un retour d'expérience d'une gestion complète de l'énergie : électricité, eau (réseau de ville et puits), gaz et panneaux solaires avec batterie. Une belle illustration de ce qui peut être fait avec Home Assistant dans le domaine de l'énergie.
Gestion de l'énergie avec Home Assistant : retour d'expérience

Sommaire

Introduction

Cet article n'est pas un tuto. Mon objectif est de décrire, pour que d’autres s’en inspirent, comment je contrôle sous Home Assistant ma production et consommation d’électricité, ma consommation d’eau de ville, du puits, celle de gaz ainsi que le détail des coûts correspondants.

Ma maison comporte un RDC et un étage, chaque niveau avec un panneau électrique. Elle est équipée d’un compteur Linky pour l’électricité, d’un compteur d’eau communicant (mais enterré sous une dalle) et d’un compteur Gazpar.

Je possède également une voiture électrique e208 avec une borne de recharge dans mon garage.

J’ai installé au cours du printemps dernier d’abord deux panneaux solaires plug and play de Sunology : le Playmax doté d’une batterie et le Play2, chacun doté de son propre onduleur puis 2 panneaux plug and play de Solarchoc (anciennement Chocdiscount) avec un onduleur Hoymiles.

Chaque fournisseur possède sa propre application sur smartphone Stream chez Sunology, S-Miles Enduser pour les onduleurs Hoymiles.

J’ai aussi acquis auprès de Sunology le transmetteur Linky Stream contrôlant ce transmetteur Linky.

J’ai fait une simple déclaration auprès d’Enedis et demandé que le compteur Linky passe d’historique à standard afin de suivre notamment l’électricité réinjectée gratuitement si les panneaux produisent plus que ma consommation.

J’ai découvert dans le même temps Home Assistant, étant précédemment équipé de Jeedom. Pour cela, j’ai acquis chez Domadoo une HomeAssistant green avec son dongle usb zigbee.

À partir de là, et de fil en aiguille, j’ai voulu contrôler et unifier dans Home Assistant ma consommation & production d’électricité, puis celle de l’eau de ville, mais aussi celle produite par mon puits et enfin ma consommation de gaz.

Dans chacun des paragraphes suivants, je décrirai le matériel supplémentaire nécessaire et son intégration dans Home Assistant.

J’ai aussi découvert la communauté HACF avec cet esprit de partage que j’avais connu dans les années 90 à Clermont-Ferrand où j’étais président de Linux-Arverne donc militant des logiciels libres.

À mon tour de partager.

Électricité

C’est la source d’énergie la plus complexe à contrôler.

Pour cela, j'ai utilisé un Shelly EM (aussi disponible chez Domadoo) avec deux pinces ampèremétriques.

Dans mon panneau électrique desservant l’étage et situé à côté du compteur Linky, j’ai installé deux pinces ampèremétriques sur le même Shelly EM :

  • L’une sur la phase à la sortie du Linky mesurant l’énergie électrique totale consommée par ma maison, mais aussi celle négative rendue gratuitement à EDF.
  • La deuxième sur le four électrique de l’étage.
⚠️
Attention la flèche sur la pince doit être dans le sens EDF vers maison.

Le Shelly EM est alimenté par L et N à câbler sur n’importe quelle phase et neutre. J’ai choisi la hotte en coupant bien sûr le disjoncteur correspondant.

Le pointillé bleu n’est pas connecté. Le shelly em a du wifi qu’il faut appairer à sa box.

Voir le disjoncteur hotte (deuxième depuis la droite) sur lequel est branché l’alimentation du shelly em et le disjoncteur table de cuisson four (cinquième depuis la droite) sur la phase duquel est mise la deuxième prise ampèremétrique.

La photo ci-dessous présente le tableau électrique ouvert et le Shelly EM alimenté sur la hotte, la deuxième pince sur la phase du four et la première pince (à droite de la photo) sur la phase générale.

Photo du panneau électrique ouvert

Du côté de Home Assistant, il faut installer l’intégration Shelly puis ajouter un appareil.

On peut voir ici les deux Shelly celui du panneau électrique dont on vient de parler (le deuxième) dans la buanderie et celui du RDC dans les WC.

Le Shelly EM dans le panneau électrique des WC contrôle avec deux pinces ampèremétriques la borne de recharge et le chauffe-eau. Inutile de vous mettre une photo...

La consommation des autres appareils électriques sera décrite dans le paragraphe Utilisation détaillée des appareils individuels.

Après avoir configuré le tableau Energy de Home Assistant, on obtiendra ceci (exemple pour la journée du 13 janvier 2025) :

  • En bleu, la consommation électrique heure par heure mesurée par pince ampèremétrique à la sortie du Linky
  • En jaune, la production consommée des panneaux solaires ; en violet ce qui est restitué à EDF.
  • À droite, la distribution animée de l’énergie.

Production solaire

Panneaux Solarchoc

Les panneaux Solarchoc sont connectés à un onduleur Hoymiles qui est supporté par Home Assistant.

Il a fallu installer le module complémentaire HoyMiles Solar Gateway stable Addon puis par configuration de ce module l’intégrer dans MQTT qui doit donc déjà être installé (module complémentaire Mosquitto broker).

La configuration de l'addon est assez simple :

Puis ENREGISTRER (c'est inactif ici car déjà fait).

Panneau Sunology PlayMax

L’onduleur sur le panneau Sunology PlayMax est un Hoymiles HMS-400 qui n'est lui pas accessible directement par Home Assistant : j'ai dû ajouter un DTU (passerelle de communication).

Le DTU compatible a été commandé ici :

1- OpenDTU Pro Max – Pré-assemblé pour suivre la production de vos panneaux solaires avec Micro Onduleur Hoymiles (HM + HMS + HMT) – iCrea35 – La boîte à idées créatives
ATTENTION QUANTITÉ LIMITÉE Contenue du produit : Boîtier imprimé 3D au format MOB, dimensions (L x l x H = 65 x 65 x 52mm) OpenDTU préinstallé et partiellement configuré Supporte jusqu’à 10 onduleurs Carte ESP32 Carte radio CMT+NRF Antenne externe Ecran 0.96 Pouce ou 1,30 Pouces Le manuel en ligne via Qrcode. Le DTU est assemblé, préinstallé avec OpenDTU et testé avant envoi avec un de mes micro onduleur. ATTENTION DE VÉRIFIER LA COMPATIBILITÉ: WiFi: 2.4Ghz 802.11 b/g/n (802.11n à 150 Mbps) chiffrement WPA et WPA2. Le vieux protocole de chiffrement WEP n’est pas supporté. Micro-onduleurs: Onduleurs HMS compatible MS-300-1T, HMS-350-1T, HMS-400-1T, HMS-450-1T, HMS-500-1T, HMS-600-2T, HMS-700-2T, HMS-800-2T, HMS-900-2T, HMS-1000-2T, HMS-1600-4T, HMS-1800-4T HMS-2000-4T Onduleurs HMT compatible HMT-1600-4T, HMT-1800-4T, HMT-2000-4T, HMT-1800-6T, HMT-2250-6T Onduleurs HM compatible Sunology PLAY (Hoymiles HM-400), Sunology CITY (Hoymiles HM-300) Vérifier bien la référence du micro onduleur fourni par Sunology car il peut s’agir d’une autre référence que des Hoymiles. Beem 300W (Hoymiles HM-300), Beem 420W (Hoymiles HM-400) Vérifier bien la référence du micro onduleur fourni par Beem car il peut s’agir d’une autre référence que des Hoymiles. Hoymiles HM-300, HM-350, HM-400, HM-600, HM-700, HM-800, HM-1000, HM-1200, HM-1500 Solenso SOL-H350, SOL-H400, SOL-H800 TSUN TSOL-M350, TSOL-M800, TSOL-M1600 Bourgeois Global by Hoymiles MOBG-800HM ATTENTION DE VÉRIFIER LA COMPATIBILITÉ DANS LE CHOIX DE VOS OPTIONS Compatible toutes les séries HM,HMS, HMT (SAUF LES MODELE HMS-xxxxW-xT ne sont pas compatibles avec aucun modèle OpenDTU car les micro onduleurs comportant un W dans la référence du modèle sont seulement livrée avec une puce wifi.)

Guillaume d’Icrea35 m’a aidé à configurer son OpenDTU, et également m’a mis les pieds à l’étrier de Home Assistant.

Son boîtier qui a son propre serveur web accessible sur une adresse IP locale s’occupe de l’intégration à MQTT où il apparaît ainsi :

Panneau Sunology Play2 et son onduleur Micro Inverter

Le panneau Play2 a un onduleur TSUN. Ce dernier a un serveur web et une adresse IP. Je possède un VPS SHPV (serveur virtuel) sur lequel j’ai installé docker puis sur celui-ci un container tsun-gen3-proxy.

GitHub - s-allius/tsun-gen3-proxy: This proxy enables a reliable connection between TSUN third generation inverters (eg. TSOL MS600, MS800, MS2000) and an MQTT broker to integrate the inverter into typical home automations.
This proxy enables a reliable connection between TSUN third generation inverters (eg. TSOL MS600, MS800, MS2000) and an MQTT broker to integrate the inverter into typical home automations. - s-alli…

Screen a également été installé sur le VPS. On fait tourner docker dans un screen-S docker après avoir défini une configuration qui s’occupe de l’intégration dans MQTT.

N'hésitez par à me contacter si vous avez un onduleur Tsun sur vos panneaux solaires.

Le Micro Inverter dans MQTT

Résultat dans le tableau Énergie

La production solaire apparaît dans le panneau Energy de Home Assistant après avoir renseigné la configuration partie panneaux solaires.

Trois onduleurs produisent de l’électricité : Hoymiles en jaune, Micro Inverter (Play2) en jaune-brun, Playmax en brun.
À droite 3 jauges qui parlent d’elles-mêmes.

Si la copie d’écran était faite après 17h, on verrait apparaître la production de la batterie du PlayMax car une partie de la production du PlayMax a été stockée dans la batterie et est restituée plus tard.

Sunology prépare pour cet été une batterie qui stockera en temps réel l’électricité restituée à EDF (en violet).

Gaz

Données GRDF

Pour le gaz les retours de GRDF sont actualisées avec un décalage de 2 jours. Un module complémentaire d’Home Assistant Gazpar2MQTT les récupère depuis votre espace client GRDF.

Il faut se rendre sur Mon Espace GRDF où vous devrez renseigner une adresse email avec mdp, votre PCE, et le nom donné à votre compteur communicant Gazpar (pour moi « maison Doyet »).

Il faut aussi créer le sensor suivant dans configuration.yaml :

sensor:
- platform: 'gazpar'
  name: 'mygazpar'
  username: 'adresse email renseignée'
  password: 'votre mdp'
  pce_identifier: '14 chiffres de votre PCE'
  tmpdir: '/homeassistant/tmp'
  scan_interval: '08:00:00'

et dans la partie template: de configuration.yaml ceci :

- sensor:
 - name: gas_energy
 unit_of_measurement: 'kWh' 
 state: "{{ states('sensor.mygazpar') | float(default=0) }}" 
 icon: mdi:fire
 device_class: energy
 state_class: total

Le module complémentaire récupère une fois par jour les données. Elles apparaissent dans MQTT sous le nom d’appareil « gazpar maison Doyet » avec les informations essentielles :

  • consumption date : on voit ici le décalage de 2 jours
  • conversion factor : 11,05 kWh/m³ en ce moment.

Voici ce qui apparaitra dans le sensor gas_energy.

⚠️
Ces données ne sont pas en temps réel. J’ai donc voulu exploiter les possibilités de la prise TIC du gazpar.

Prise TIC du GazPar

Deux ZiPulses ont été successivement installés sur la prise :

LIXEE ZIPULSES - Compteur impulsions Zigbee 3.0 (eau, gaz, électricité) - Compatible Gazpar, Home Assistant et Jeedom
Remontez un index de consommation en Zigbee à votre ordinateur ou box domotique grâce au compteur impulsions d’eau, de gaz) Lixee ZiPulses.

avec le câble homologué Gazpar :

Câble pour compteur GAZPAR
Câble pour compteur GAZPAR

ZiPulses est connecté en Zigbee via la clef usb Zigbee SkyConnect de Home Assistant Green.

Voir aussi la documentation du ZIPulse.

Aucun des ZiPulses ne captait les impulsions du Gazpar mais seulement la température et l'état de la batterie. Pourtant, deux prises extérieures Zigbee ont été installées près du boîtier du gazpar afin de servir de routeur relais.

J’ai demandé à GRDF de venir vérifier que les impulsions parviennent bien à la prise tous les 10 L de gaz consommé. Après changement du compteur j'ai bien les impulsions.

Entre-temps, j’ai installé un bouton Sonoff « impulsions gaz » zigbee relié au Gazpar par le câble homologué avec 2 fils soudés à la sortie du bouton.
Les impulsions sont bien captées.

J'utilise ZHA avec l’intégration suivante :

L'appareil « impulsions gaz » dans l’intégration zigbee nous donne ceci :

Deux automatisations décrémentent ou incrémentent le compteur indexreel qui est déclaré dans appareils et services : Entrées avec valeur initiale le relevé du compteur au moment de la pose du bouton et un pas de 10. Ce compteur est en litres.

Un petit aimant sur le 0 des litres active une impulsion magnétique lorsqu’il est à l’intérieur (quand on voit le 6 au niveau des litres). Donc une impulsion est émise vers la prise TIC lorsqu’un tour complet est effectué soit 10 litres. Ensuite un compteur de Home Assitant (counter.indexreel) est incrémentré de 10 à chaque impulsion puis un template sensor gaz_energy (ci-dessous le code dans configuration.yaml) le traduit en m³  en le divisant par 1000 puis en kWh en le multipliant par 11.05 le facteur de conversion actuel pour notre fournisseur de gaz Engie-gaz-passerelle.
À changer dès que l’on constate un changement.

  - sensor:
      - name: gaz_energy
        unit_of_measurement: 'kWh'
        state: "{{ (states('counter.indexreel') | int / 1000 | round(2)) * 11.05 | float(default=0) | round(2) }}"
        icon: mdi:fire
        device_class: energy
        state_class: total

C’est ce sensor gaz_energy qui est renseigné dans la partie consommation de gaz du panneau Energy de Home Assistant. Le coût renseigné est 0.12272 le kWh.

Le 15 janvier à 17h le panneau consommation de gaz fait apparaitre gaz_energy

Mais deux jours après j'ai constaté que le contact avec le bouton sonoff était perdu
(peut-être une question de pile).

ZiPulses fonctionne à nouveau (le 22 janvier)

J’ai réappairé un ZiPulses en me plaçant près du nouveau Gazpar.
Et la « Consommation » se met bien à jour. Le ZiPulses stocke les impulsions et peut en envoyer 2 ou 3 à la fois au réseau zigbee. Du coup dans configuration.yaml j’ai créé dans la partie template : deux sensors energy_gazpar et volume_gazpar

- sensor:
 - name: energy_gazpar
   unit_of_measurement: 'kWh'
   state: "{{ (states('sensor.zipulses_consommation') | int / 100 | round(2)) *   10.91 | float(default=0) | round(2) }}"
   icon: mdi:fire
   device_class: energy
   state_class: total
- sensor:
 - name: volume_gazpar
   unit_of_measurement: 'L'
   state: "{{ 121596 + states('sensor.zipulses_consommation') | int * 10 }}"
   icon: mdi:fire
   device_class: gas
   state_class: total
  • le premier energy_gazpar traduit en kWh et c’est ce qui est renseigné dans le panneau Energy partie gaz
  • le second volume_gaz est aligné sur le compteur physique. Cela permettra de vérifier de temps en temps que des impulsions ne se perdent pas en route.

Vérification le 23 janvier à 11h45 :

  • compteur physique : 147966
  • compteur volume_gazpar : 147986

Pour 20 litres de différence je ne change rien pour le moment. Sinon il faudrait remplacer 121596 dans le sensor volume_gazpar par 121576

Eau

les compteurs d'eau

J’ai fait installer par mon plombier le compteur d’eau à impulsions Gioanola 1/4l et je lui ai connecté un ESP32 selon les modalités de l’article :

Gestion de la consommation d’eau avec Home Assistant
Maîtriser sa consommation d’eau est essentielle dans le contexte actuel. Cet article présente des solutions pour mettre en place un compteur connecté, afficher ses consommations d’eau et coûts associés dans Home Assistant, et enfin détecter les éventuelles fuites.

Un deuxième « compteur » a été installé à la sortie de la pompe à surpresseur tirant l’eau de mon puits. Le code de esp-puits est directement inspiré de celui de esp-eau.

Il faut donc avoir installé ESP Home dans Home Assistant.

Mes compteurs
  • À gauche, le compteur Gionola avec son compteur à impulsions et l’esp-eau dans le petit boîtier bleu.
  • À droite le « compteur » à impulsions chinois (une petite turbine intérieure envoie une impulsion à chaque 0.015 litre)
    ** comptage du nombre de litres : 1 impulsion ajoute 0.015 (compteur 1 / 0.015 litre)
  • L’esp-puits dans le petit boitier gris.

Eau et panneau Energy

Dans le panneau Energy correctement configuré, on retrouvera la consommation d’eau.

En bleu clair l’eau de ville 6,75L de 10h à 11h ; en bleu foncé l’eau du puits (deux WC et machine à laver le linge). HomeAssistant mesure cela grâce à deux ESP32 dans ESPHome.

Sources d'énergie

Le tableau Energy permet de voir les différentes sources d'énergie. Ce sont les capteurs qui donnent l’énergie électrique produite (gratuite) par les 3 onduleurs ; puis celle venant d’EDF consommée (au prix heures pleines -de 8h à minuit- ou heures creuses de mon contrat électricité-auto ) ; et celle gratuite produite. Le gaz puis l’eau de ville seule payante.
Dans tous ces coûts les abonnements ne sont pas comptés.

Consommation des appareils individuels

Pour mesurer la consommation individuelle des appareils, j'ai utilisé des prises Nous zigbee 3,0 vendues par 4 chez Domadoo et aussi 2 prises extérieures zigbee servant de routeur relais pour le capteur gaz :

NOUS - Lot de 4x Prise intelligente Zigbee 3.0 + Mesure de consommation
La prise intelligente Zigbee 3.0 NOUS permet de contrôler tout dispositif électrique traditionnel à distance, via son smartphone ou par la voix.
NOUS - Prise extérieure double Zigbee Tuya + mesure de consommation
Contrôlez 2 dispositifs électriques de votre jardin à distance depuis votre téléphone et suivez la consommation avec la prise extérieure Zigbee Tuya NOUS.
⚠️
Attention zigbee pas wifi

Voici le rendu dans le tableau Energy :

Illustration : la nuit du 13 janvier à 2h du matin ma voiture e208 s’est chargée sur sa borne, dont la consommation (36,09kWh) est mesurée par une pince ampèremétrique. De même une autre pince ampèremétrique connectée au même ShellyEM mesure la consommation du chauffe-eau (5,04kWh). Les consommations des autres appareils sont mesurées par des prises Nous Smart Zigbee Socket A1Z.

Ma cave comporte un réfrigérateur-congélateur, un congélateur et une cave à vin. Le lave-vaisselle est programmé pour tourner à 3h du matin (donc en heures creuses).

En projet

J'ai en projet l'utilisation de la batterie Storey. La voiture électrique est chargée en gros une fois par semaine et en heures creuses à 0,160€/kWh. En heures pleines, le prix est de 0,295€/kWh.

Je compte sur la batterie Storey, ce à condition qu’elle stocke bien l’électricité en surplus même si les onduleurs ne sont pas Sunology, et qu’elle soit restituée dans le réseau en temps réel.
Actuellement je surveille l'énergie injectée (voir commentaire 29) avec l'idée de l'envoyer à la batterie Storey ou de lancer une lessive par exemple. La batterie du Playmax je n'en ai pas le contrôle. C'est Sunology à travers le logiciel Stream qui l'a !!
J'ai installé une intégration de simulation de batterie Tesla PowerWall de 13.5 kWh (voir commentaire 32). La vraie coûte 6945€. La Storey de 2.2 kWh est prévue à 1390€.

Conclusion

Voilà, je vous ai présenté l'ensemble de mon installation avec une illustration de tout ce que l'on pouvait faire avec le module Energy de Home Assistant. N'hésitez pas à poser vos questions et commenter.