Table des matières
Suite à l’intégration d’un compteur électrique triphasé intelligent (Sagemcom T211) dans Jeedom, j’ai été effrayé de constater une consommation électrique de fond de 300wh-400wh durant la nuit.
Or j’avais l’impression que tout ce qui pouvait être éteint l’était. Où passait donc ces Wh, ce qui représente une consommation de fond de 3000 kWh par an, soit un montant d’environ 650 euros ?
J’ai donc décidé de construire un wattmètre portable connecté avec Jeedom afin d’investiguer point par point.
Le choix de la solution technique
Bien entendu, j’aurais pu simplement acheter une prise de courant connectée avec suivi de consommation. Il en existe beaucoup et je suis d’ailleurs très content la marque Meross qui s’intègre bien dans Jeedom.
Mais, je désirais deux choses importantes que ne peuvent fournir les prises connectées :
- Un capteur qui observe mais ne commande pas. Imaginez la catastrophe si un “Ok Google, éteint X” était mal compris et que Google coupait, par mégarde, l’alimentation d’un frigo ou d’un congélateur
- Un capteur capable de mesurer finement les donnée et de les remonter à haute fréquence dans Jeedom (plusieurs fois par minutes). Le but n’est pas d’avoir uniquement une consommation moyenne sur plusieurs heures mais vraiment de suivre, minute par minute, comment la consommation se comporte.
Je désirais aussi quelque chose de facilement transportable et qui se branche sur une prise de courant (n’ayant pas envie de brancher quelque chose au niveau du compteur ou d’avoir à démonter des fils électriques).
Ayant été content des technologies ESP88266 et du firmware ESP Easy, c’est tout naturellement vers ces dernières que je me suis tourné. Elles constituent donc la base de mon wattmètre portable. Si vous ne connaissez ni les ESP8266 ni ESP Easy, je vous conseille de lire tout d’abord cet article.
Les pinces ampèremétriques PZEM-004T
Du point de vue matériel de mesure, j’ai opté pour des pinces ampèremétriques afin de capter les informations électriques.
Une pince ampèremétrique est un type d’ampèremètre qui permet de mesurer l’intensité du courant électrique circulant dans un fil conducteur sans avoir à ouvrir le circuit pour y placer un ampèremètre classique. Le fonctionnement de la pince ampèremétrique repose sur la mesure du champ magnétique que génère une circulation de courant afin d’en déduire, ensuite, l’intensité de ce courant.
Les PZEM-004T sont des capteurs qui associent une pince ampèremétrique et une carte électronique pour gérer la captation et la distribution des mesures.
Le capteur PZEM-004T va être combiné avec le micro-processeur ESP8266 afin de récupérer les données.
Les PZEM-004T existent en plusieurs versions. On trouve par exemple des versions recouvertes d’un plastique bleu protecteur. Comme ce capteur est relié à du 230V, il est prudent de prendre cette variante. On a aussi des versions supportant jusqu’à 100A et d’autres uniquement jusqu’à 10A. Ces dernières seront plus précises dans leur mesure mais l’usage est limité à de petits appareils. ll y a enfin deux types de pinces possibles : les pinces rectangulaires qui s’ouvrent et évitent de devoir démonter les fils électriques. Et les pinces rondes qui elles ne s’ouvrent pas et nécessitent donc de débrancher les fils de phase ou de neutre pour y glisser ce dernier au travers de la pince.
J’ai déjà acheté les deux types et je recommande fortement la pince ronde. Sa mesure du flux magnétique me semble beaucoup plus précise et, comme on le verra plus loin, on doit de toute façon démonter les fils lors de la construction du wattmètre.
Quelques informations techniques
Les PZEM-004T possèdent un côté haute tension, à gauche, sur lequel on vient brancher le 230V (sur le schéma, les deux fils en bas à gauche). Les deux fils de la pince ampèremétrique (sur le schéma, les deux fils en haut à gauche) se branchent juste au-dessus.
Du côté droit, on retrouve la basse tension (5V) avec la partie TTL (Transistor Transistor Logic). C’est cette dernière qui permet la communication et qu’on branche donc sur l’ESP8266.
Il y a un point important à retenir : le branchement du 230V n’alimente pas la PZEM-004T. Ce branchement sert à mesurer la tension entre les deux fils (pour calculer, avec le courant, la consommation).
L’alimentation de la PZEM-004T se fait via la basse tension TTL et plus précisément via les deux câbles GND (câble du dessus) et 5V (câble du bas). Ces deux câbles ne peuvent donc pas être utilisé pour alimenter l’ESP8266 et, à l’inverse donc, il faut y fournir du 5V. Les deux derniers câbles de la partie TTL, à savoir les TX et RX, servent d’interface de communication pour le transfert des données à l’ESP8266.
Le matériel pour la réalisation du wattmètre portable.
Pour réaliser le wattmètre portable, les équipements suivants sont nécessaires:
- un capteur PZEM-004T avec une pince ampèremétrique
- un microcontrôleur ESP8266
- un transformateur 5V (2A suffisent)
- trois connecteurs Wago (attention de bien prendre des Wago à 4 entrées
- Quelques petits câbles de branchement de type Elegoo
- une cordelière électrique
- une boite isolante en plastique, suffisamment grande pour accueillir tout ce matériel. J’ai récupéré une vieille boite à tartine en plastique pour ce faire.
L’installation du firmware ESP Easy
L’installation du firmware ESP Easy avait été déjà expliquée dans l’article à propos de la mesure de niveau d’une cuve à mazout. Il faut donc suivre les quatre premières étapes qui y sont décrites et l’on continue, ici, à l’étape 5.
A l’heure d’écrire cet article, j’avais constaté que la dernière version de Mega ne contenait pas de firmware pour le PZEM-004T. Je m’étais donc tourné vers un autre firmware ESP Easy, celui de Djelau : https://www.letscontrolit.com/forum/download/file.php?id=4305
En décembre 2024, j’avais des soucis pour l’envoi des données dans Home Assistant. J’ai donc mis à jour le firmware via OTA. Je me suis connecté à la page https://github.com/letscontrolit/ESPEasy/releases/tag/mega-20240229 et j’y ai téléchargé la version “ESPEasy_mega_20240229_ESP82xx_binaries.zip”. Une fois ce fichier zip décompressé, c’est le firmware energy 4M1M qui a été utilisé, soit la version “ESP_Easy_mega_20240229_energy_ESP8266_4M1M.bin”.
Etape 5: les premiers branchements
Le schéma est le suivant :
Pour la simplicité de la lecture, il manque le fil de terre. Il faut bien entendu l’ajouter en reliant avec un Wago les deux terres de la cordelière et le fil de terre vers le transformateur.
On coupe donc une cordelière électrique en deux et on passe un des fils dans la pince ampèremétriques. Attention à ne pas passer les deux fils car, en ce cas, les flux magnétiques s’annulent et on mesure alors 0 A en permanence. On relie ensuite ces fils via un Wago. De ces même Wago, on alimente (en 230V donc):
- le transformateur 5V (côté L, N et terre)
- la PZEM-004T
Pour la haute tension, c’est tout.
Côté basse tension, on commence par alimenter en 5V à la fois la PZEM-004T et l’ESP8266.
Pour la PZEM-004T, cela se fait via la PIN supérieur sur laquelle on met la masse (ou GND) en liaison avec la borne V- du transformateur 5V. Le fil inférieur de la PZEM-004T est lui relié à la borne V+ du transformateur.
Pour l’alimentation en 5V de l’ESP8266, on relie :
- la PIN VIN de l’ESP8266 (en bas à gauche sur le schéma) avec la borne V+ du transformateur
- la PIN GND de l’ESP8266 (en bas à gauche sur le schéma) avec la borne V- du transformateur
Etape 6 : on finalise les autres branchements avec la liaison entre le PZEM-004T et l’ESP8266
Pour la liaison entre la PZEM-004T et l’ESP8266, il y a deux câbles à connecter : TX et RX
On connecte donc :
- la PIN TX de la PZEM-004T avec la PIN D7 (appelé aussi GPIO-13) de l’ESP8266
- la PIN RX de la PZEM-004T avec la PIN D6 (appelé aussi GPIO-12) de l’ESP8266
C’est joli sur un schéma. En vrai, c’est plus vite brouillon (mais cela fonctionne) :
Une remarque sur les tensions
Tout d’abord, un grand “disclaimer” : on manipule ici du 230V et il y a donc danger de mort. Il faut faire très attention à ce que l’on fait et procéder dans les règles de l’art, avec les mesures de sécurité adéquates.
Théoriquement, il ne faut pas brancher 5V sur les PIN de l’ESP8266 mais il faut réduire la tension à 3,3V. Des réducteurs de tension existent sur Amazon. Une autre option est de réaliser un pont diviseur avec des résistances (les explications se trouvent facilement sur internet).
Ayant lu que les ESP8266 résistaient souvent à 5V, j’ai pris le risque de m’en passer. C’est même devenu une (dangereuse) habitude. Je n’ai pas eu de soucis jusqu’à présent et il y a des capteurs qui tournent depuis des mois. Mais, bien entendu, chacun prendra son risque ou non et chacun en assumera les conséquences.
Etape 7: Configurer l’ ESP8266
1. Désactiver le port série. Dans le navigateur internet à l’URL de l’ESP8266, cliquer sur “Tools” et puis “Advanced”. Décocher “Enable Serial port”.
2. Configurer la PZEM-004T. Cliquer sur “Devices” et appuyer sur “Add”. Toute une série de capteurs prédéfinis existe (c’est l’avantage du firmware ESP Easy). Il faut choisir le capteur “PZEM-004Tv30-Multiple” et cliquer sur le bouton “Submit”. Si vous ne trouvez pas “PZEM-004Tv30-Multiple”, c’est que vous n’avez pas chargé le bon firmware dans l’ESP8266 (je vous renvoie alors ci-dessus pour vous trouver le bon firmware)
3. Sur l’écran de configuration du capteur, introduire les paramètres suivants :
- Choisir un nom
- Cocher “Enabled”
- Serial Port : laisser SoftwareSerial
- GPIO <- TX : choisir la pin GPIO-13 (D7) puisque c’est celle là qu’on a branché. Note: si cette PIN est grisée, c’est probablement parce que vous avez oublié l’étape 1 ci-dessus
- GPIO -> RX : choisir la pin GPIO-12 (D6).
- Adresse of PZEM : laisser 0 puisqu’on a qu’une seule PZEM-004T
- Pour intervalle, le développeur du firmware conseille 3 secondes. En cas de soucis (comme des “NaN” qui apparaissent de temps en temps au lieu des mesures), il faut alors augmenter cette durée. J’ai choisi 5 secondes.
- A noter: Il y a quatre valeurs possibles par défaut : Voltage, Current, Power et Energy. Mais, en fait, il y en a six (dont le cos-phi). On peut choisir au maximum 4 valeurs parmi les 6 possibles au travers des listes déroulantes (celle de Value 1,…. Value 4). Si vous souhaitez remonter les 6 valeurs, c’est possible mais alors au travers de deux “Device”.
- Cliquer sur le bouton “Submit” en bas de l’écran pour sauver le tout.
Etape 7: C’est fini
Voilà, c’est terminé. On voit logiquement les informations s’afficher, en vert à droite sur l’écran : 229,3V et 2,1 W.
Home Assistant
La configuration MQTT dans le firmware ESP Easy de l’ESP8266
L’idée est d’ajouter un contrôleur via l’interface de l’ESP8266 dans l’onglet « controllers ». Les informations à mentionner sont:
- Type de contrôleur: Home Assistant (openHAB) MQTT
- Adresse IP: celle du broker MQTT. En général, il est installé sur la même machine que Home Assitsant et on indique donc ici l’adresse IP de son instance Home Assistant
- Le port MQTT qui est, par défaut, 1883
On coche aussi les cases ci-dessous:
Enfin, on ajoute le nom d’utilisateur et le mot de passe pour se connecter au broker MQTT.
Si vous n’avez plus ces informations, vous pouvez les récupérer en ouvrant le fichier /config/.storage/core.config_entries avec File Editor. Les informations se trouvent au niveau de la ligne “broker”:”core-mosquitto”.
Dans l’onglet “Devices”, on coche la case “Send to Controller 2”
Dans l’onglet “Config”, on s’assure que le Unit Number est bien unique. Un peu truc, j’utilise en général le dernier nombre de l’adresse IP de l’appareil.
Par sécurité, on redémarre l’ESP8266 et on se connecter à MQTT Explorer dans Home Assistant afin de vérifier que les trames de l’équipement «PZEM-Vache-blueu» (dans ma configuration) apparaissent bien.
La configuration dans Home Assistant
Contrairement à ESPHome, les entités créées dans ESP Easy n’apparaissent automatiquement dans Home Assistant. Il faut donc procéder manuellement, dans un fichier de configuration .yaml comme documenté sur la page MQTT Sensor: https://www.home-assistant.io/integrations/sensor.mqtt/
Il est toujours préférable d’organiser ses fichiers de configuration .yaml pour éviter de se retrouver avec un énorme fichier qui n’en finit plus. Je conseille donc de créer un fichier mqtt.yaml où se trouveront toutes les configuration MQTT. Au niveau du fichier configuration.yaml, on ajoute dès los cette ligne:
mqtt: !include mqtt.yaml
Avec File Editor, on crée ou on édite maintenant le fichier mqtt.yaml et on y ajoute ce contenu:
sensor:
#ESPEASY – Compteur-PZEM-Vache-Bleue
– name: “Puissance Vache Bleue”
state_topic: “ESP_Easy_Vache_Bleu_191/PZEM-Vache-bleue/Power_W”
suggested_display_precision: 0
unique_id: sensor.ESP_Easy_Vache_Bleue_Puissance
device_class: power
unit_of_measurement: W
device:
name: “ESPEasy Vache Bleue”
identifiers: “ESPEasyVacheBleue”
– name: “Energy Vache Bleue”
state_topic: “ESP_Easy_Vache_Bleu_191/PZEM-Vache-bleue/Energy_kWh”
suggested_display_precision: 2
unique_id: sensor.ESP_Easy_Vache_Bleue_Energy
device_class: energy
unit_of_measurement: kWh
state_class: total_increasing
device:
name: “ESPEasy Vache Bleue”
identifiers: “ESPEasyVacheBleue”
Cela donne, dans Home Assistant, un appareil avec deux capteurs : un pour la puissance instantanée et l’autre pour l’énergie consommée. On peut bien entendu compléter le fichier de configuration pour y ajouter le voltage et l’ampèrage.
La remontée des mesures dans Jeedom
C’est le plugin Jeedom ESP Easy qui va gérer la remontée des mesures des capteurs dans Jeedom. Ce plugin se trouve sur le market officiel de Jeedom.
Après l’avoir installé, il faut l’activer et installer les dépendances. En bas de l’écran, dans la partie “configuration”, on voit les paramètres qu’il faut reporter dans le module ESP8266.
On se reconnecte donc, via un navigateur internet, au module ESP8266 pour le configurer (comme on l’a fait précédemment). On clique cette fois sur “Controllers” et puis sur “Add”.
Les valeurs à introduire sont :
- Generic HTTP
- Controlleur IP : l’adresse IP de Jeedom (qui est aussi celle que l’on peut lire dans “IP Controleur à saisir dans ESPeasy (onglet config)” sur la page de configuration du plugin Jeedom ESPEasy)
- Controlleur Port : 8121 (qui est aussi le numéro que l’on peut lire dans “Port Controleur à saisir dans ESPeasy (onglet config)” sur la page de configuration du plugin Jeedom ESPEasy)
- Controlleur Publish (plus bas dans l’écran): device=%sysname%&taskid=%id%&cmd=%valname%&value=%value% (qui est aussi ce qu’on voit sur la page du plugin)
- Cocher la case “Enabled”
Si vous vous arrêtez ici, vous ne verrez rien dans Jeedom. Il faut encore remplir une dernière étape au niveau du capteur. Il faut cliquer sur “Devices”, cocher la case “Send to Controlleur” (si ce n’est pas déjà fait) et cliquer sur le bouton “Submit” pour sauver les changements.
Vous pouvez maintenant retourner dans Jeedom : Plugins / Protocole Domotique / ESPeasy
Cliquer sur le bouton “+ Inclusion”. Un équipement, correspondant au capteur, devrait apparaitre.
Il faut configurer cet équipement en cliquant dessus, en lui donnant un nom, en cochant “Activer” et “Visible” et en lui attribuant une pièce (via Objet parent). On peut aussi choisir “Energie” comme “Catégorie de l’espeasy” ou laisser le “Aucun” par défaut.
Au niveau des commandes, on voit les quatre commandes existantes sur l’ESP8266 à savoir Current_(A), Energy_(WH), Power_(W) et Voltage_(V) :
Si on se rend dans le Dashboard de Jeedom, on voit les données envoyées par le capteur PZEM-004T:
Conclusions
Cette réalisation, peu chère, permet facilement de traquer très finement ses consommations afin de trouver quels sont les éléments énergivores. Vous avez en effet, 5 secondes par 5 secondes, les informations précises de consommation.
Vous pouvez aussi l’utiliser pour un frigo ou un congélateur sans courir risque que Google, Jeedom ou Home Assistant ne le coupe inopinément.
C’est donc bien plus qu’un gadget !
BRIDE
Bonjour,
super tuto bien expliqué, est il possible de faire une pince ampèremétrique dans le même genre qui pourrait déclencher un relais a une certaine puissance car j’ai des panneaux solaires en autoconsommation et cela me serait bien utile.
Merci.
ObjetsConnectesAdmin
Merci. C’est en effet une option
blanchet
Bonjour,
Super tuto, je l’ai appliqué à la lettre, ça fonctionne très bien dans ESP EASY les valeurs remontées sont correctes. Mais impossible de l’inclure dans le plugin ESPeasy de JEEDOM.
Si quelqu’un a un idées, ça m’intéresse
Calade
Bonjour,
Il y a quelques inexactitudes : le branchement 220V alimente bien le PZEM à travers le regulateur U4 d’une part, d’autre part le +5V en sortie des optos n’est pas une alimentation mais le pull-up du Tx qui est à collecteur ouvert, et pour les LEDs et celle de Tx. Donc on n’a pas besoin de convertisseur +5/+3V, il suffit de brancher le point marqué +5V du PZEM au +3V de l’ESP et ça fonctionne tout seul.
Voir le schéma : https://forum.arduino.cc/t/esp32-pzem-004t-v3-communication-problem/881630/2
Cdt,
ObjetsConnectesAdmin
Merci pour les précisions