PZEM004T

Forum dédié aux bricolages d'objets connectés IOT et leurs communications avec DomoticZ :
- Remplacement de firmware des prises, modules relais ...
- Fabrication à base d'ESP8266, de NodeMCU, de Weemos et consorts ...
VBill
Messages : 86
Inscription : 26 janv. 2019, 16:43

PZEM004T

Message par VBill »

Bonjour
J'ai bidouillé un prog Arduino pour NodeMcu V3 (ESP8266) pour 3 PZEM-004T et une entrée TOR
Données récupérer sur les PZEM : Tension Courant Puissance Energie Fréquence et Facteur de puissance
Pour la création des dispositif sous domoticz s'est indiqué dans le prog ex : Tension (General Voltage) ou Puissance (Usage Electric) ou Energie (General Custom Sensor KWh) etc ...
Le prog est facilement paramétrable grace à la partie "Variables" :
Possibilité d'activer ou pas l'entrée TOR
Possibilité d'activer ou pas les PZEM 2 et 3
Possibilité de récupérer que les infos qui vous intéresse sur les PZEM : seulement la tension si ça vous chante
//Variables
const char* ssid ="NomduWifi";//SSID du Wifi
const char* password = "MotdePasse";//Mot de passe du Wifi
const String DZ1 = "GET /json.htm?type=command&param=udevice&idx=";//Ne pas toucher
const String DZ2 = "&nvalue=0&svalue=";//Ne pas toucher
const String DZ3 = " HTTP/1.1";//Ne pas toucher
const String DZ4 = "&nvalue=";//Ne pas toucher
const String DZ5 = "&svalue=0 HTTP/1.1";//Ne pas toucher
const String AdrIP = "192.168.x.x";//Adresse IP de domoticz
const int Port = 8080;//Port de domoticz
//Temps d'attente entre 2 mesures
const int Temps = 5000;//5000 = 5 secondes
//Boucle
int Boucle;//Ne pas toucher
float Data;//Ne pas toucher
String IDX;//Ne pas toucher
String DataInput;//Ne pas toucher
int ChangEtat;//Ne pas toucher
//IDX des recepteurs dans domoticz
//D0 GPIO 16
const int EntreeActive = 1;//0= entree inactive 1=entree active
const String IDXI1 = "106";//IDX de l'interrupteur
int Input1 = 0;//Ne pas toucher
//D8 GPIO 15
const int RaZActif = 1;//0= RaZ inactif 1=RaZ actif
//PZEM004T n°1
const String IDX1A = "274";//IDX PZEM004T n°1 Tension (General Voltage) ou NIL si pas utilise
const String IDX2A = "275";//IDX PZEM004T n°1 Intensité (General Current) ou NIL si pas utilise
const String IDX3A = "276";//IDX PZEM004T n°1 Puissance (Usage Electric) ou NIL si pas utilise
const String IDX4A = "277";//IDX PZEM004T n°1 Energie (General Custom Sensor KWh) ou NIL si pas utilise
const String IDX5A = "278";//IDX PZEM004T n°1 Frequence (General Custom Sensor Hz) ou NIL si pas utilise
const String IDX6A = "279";//IDX PZEM004T n°1 Facteur de puissance (General Custom Sensor Cos Phi) ou NIL si pas utilise
//PZEM004T n°2
const int PZEM2Actif = 1;//0= PZEM004T n°2 inactif 1=actif
const String IDX1B = "280";//IDX PZEM004T n°2 Tension (General Voltage) ou NIL si pas utilise
const String IDX2B = "281";//IDX PZEM004T n°2 Intensité (General Current) ou NIL si pas utilise
const String IDX3B = "282";//IDX PZEM004T n°2 Puissance (Usage Electric) ou NIL si pas utilise
const String IDX4B = "283";//IDX PZEM004T n°2 Energie (General Custom Sensor KWh) ou NIL si pas utilise
const String IDX5B = "284";//IDX PZEM004T n°2 Frequence (General Custom Sensor Hz) ou NIL si pas utilise
const String IDX6B = "285";//IDX PZEM004T n°2 Facteur de puissance (General Custom Sensor Cos Phi) ou NIL si pas utilise
//PZEM004T n°3
const int PZEM3Actif = 1;//0= PZEM004T n°3 inactif 1=actif
const String IDX1C = "286";//IDX PZEM004T n°3 Tension (General Voltage) ou NIL si pas utilise
const String IDX2C = "287";//IDX PZEM004T n°3 Intensité (General Current) ou NIL si pas utilise
const String IDX3C = "288";//IDX PZEM004T n°3 Puissance (Usage Electric) ou NIL si pas utilise
const String IDX4C = "289";//IDX PZEM004T n°3 Energie (General Custom Sensor KWh) ou NIL si pas utilise
const String IDX5C = "290";//IDX PZEM004T n°3 Frequence (General Custom Sensor Hz) ou NIL si pas utilise
const String IDX6C = "291";//IDX PZEM004T n°3 Facteur de puissance (General Custom Sensor Cos Phi) ou NIL si pas utilise
En rouge les parties à adapter à votre installation
Cablage :
Les GND des 3 PZEM sur G du NodeMcu (au dessus de VU)
Les 5V des 3 PZEM sur VU du NodeMcu
Le RX du PZEM 1 sur D2
Le TX du PZEM 1 sur D1
Le RX du PZEM 2 sur D5
Le TX du PZEM 2 sur D3
Le RX du PZEM 3 sur D7
Le TX du PZEM 3 sur D6
Entrée Tor entre D0 et 3V + résistance de 1Kohm entre D0 et G

Dans arduino :
Type de Carte NodeMcu 1.0
Bibliothèque :
PZEM004Tv30 (à ajouter)
ESP8266WiFiMulti (déjà présente dans ardouino)
WiFiClient (déjà présente dans ardouino)

Le Prog :
en pièce jointe.

Modif je supprime toutes les anciennes version et ne laisse que la dernière avec la bibliothèque
Pièces jointes
PZEM004Tx3TorRaz.zip
(2.3 Kio) Téléchargé 546 fois
PZEM.png
PZEM.png (94.88 Kio) Consulté 9081 fois
PZEM-004T-v30-master.zip
(12.72 Kio) Téléchargé 428 fois
Dernière modification par VBill le 20 avr. 2020, 11:31, modifié 10 fois.
VBill
Messages : 86
Inscription : 26 janv. 2019, 16:43

Re: PZEM004T

Message par VBill »

Bonjour
Ci-joint une version épurée
Moins de bibliothèque et un code plus "programmeur" (moins de répétitions)
Je vous ajoute la librairie du pzem à copier dans C:\Program Files (x86)\Arduino\libraries ou C:\Program Files\Arduino\libraries suivant votre installation de arduino
Dernière modification par VBill le 18 avr. 2020, 22:07, modifié 1 fois.
VBill
Messages : 86
Inscription : 26 janv. 2019, 16:43

Re: PZEM004T

Message par VBill »

Bon encore une petite modif :
La remise à zéro des compteurs énergies grâce à un bouton poussoir câblé sur D8
J'ai ajouté le câblage en début de fichier :
//Cablage du NodeMcu V3
//PZEM NodeMcuV3
//5V VU
//GND G
//RX D2/D5/D7
//TX D1/D3/D6
//
//Entrées
//1 résistance de 1Kohm entre D0 et G
//1 résistance de 1Kohm entre D8 et G
//Pour D0 Contact entre 3V et D0
//Pour D8 bouton poussoir entre 3V et D8

Voilà maintenant je pense que tout y est
Amusez vous bien
Dernière modification par VBill le 18 avr. 2020, 22:07, modifié 1 fois.
VBill
Messages : 86
Inscription : 26 janv. 2019, 16:43

Re: PZEM004T

Message par VBill »

Pensez à activer ou pas les entrées (Active par défaut)
ex si vous n'utilisez pas de bouton raz donc D8 pas câblé vous risquez des états aléatoire sur l'entrée et des raz intempestif
donc si pas câblé dans les variables mettre RaZActif = 0
Idem pour l'entrée TOR EntreeActive = 0

Autre remarque les boutons sont scrutés avec le même cycle que les pzem (5 secondes par défaut) donc si vous mettez 1 minute ce n'est pas très grave pour l'entrée TOR (Si utilisé pour un contact EJP par ex), c'est plus embêtant pour le RaZ : vous risquez de devoir appuyer sur le bouton presque 1 minute pour effectuer le raz.

Si vous avez des questions ...
VBill
Messages : 86
Inscription : 26 janv. 2019, 16:43

Re: PZEM004T

Message par VBill »

Bonjour
Je viens de faire une dernière modif
Le temps de scrutation des boutons est maintenant de 1 secondes
Le temps de scrutation des pzem est de 5 secondes modifiable :
const int Temps = 5;//5 = 5 secondes
pour 1 minute mettre 60 à la place de 5
adv
Messages : 580
Inscription : 02 févr. 2016, 13:54
Contact :

Re: PZEM004T

Message par adv »

Bravo, ce que tu as fait est magnifique !

Je pense qu'on est un certain nombre à l'avoir attendu, bon peut-être pas tous sur ce forum mais j'ai déjà vu des discussions pour avoir 3 PZEM sur le même ESP sans vraiment d'aboutissement...

Je suis à deux doigts de me lancer.

Quelques questions maintenant...

1/ Comment est géré la reconnexion au Wifi ?
As tu essayé de débrancher ta box un moment et la rebrancher et voir si ton ESP "raccroche" le wifi tout seul ou s'il faut le redémarrer ? (ça doit être la librairie du wifi qui gère ça ?!)

2/ As tu testé plusieurs jours consécutivement sans bug ?

En tous les cas merci encore, ça semble top ! (même si je pense que le code optimisable mais on s'en fou, au moins comme ça il est parfaitement compréhensible pour un bricolo de l'arduino comme moi) <- ce n'est pas un reproche hein soyons clairs :lol:

A+
Raspberry pi 3 - Domoticz 2024.4 | Piface v.2 + Téléinfo + RFXtrx433E
sondes Oregon | motorisations Somfy Yslo Flex 2 RTS
prises chacon, wifi | Sonoff easyESP, Tasmota, Espurna | ParadoxMG5050
VBill
Messages : 86
Inscription : 26 janv. 2019, 16:43

Re: PZEM004T

Message par VBill »

adv a écrit : 19 avr. 2020, 15:49 Bravo, ce que tu as fait est magnifique !

Je pense qu'on est un certain nombre à l'avoir attendu, bon peut-être pas tous sur ce forum mais j'ai déjà vu des discussions pour avoir 3 PZEM sur le même ESP sans vraiment d'aboutissement...

Je suis à deux doigts de me lancer.

Quelques questions maintenant...

1/ Comment est géré la reconnexion au Wifi ?
As tu essayé de débrancher ta box un moment et la rebrancher et voir si ton ESP "raccroche" le wifi tout seul ou s'il faut le redémarrer ? (ça doit être la librairie du wifi qui gère ça ?!)

2/ As tu testé plusieurs jours consécutivement sans bug ?

En tous les cas merci encore, ça semble top ! (même si je pense que le code optimisable mais on s'en fou, au moins comme ça il est parfaitement compréhensible pour un bricolo de l'arduino comme moi) <- ce n'est pas un reproche hein soyons clairs :lol:

A+
Salut
Pour le wifi je n'ai pas de réponse exacte à te rapporter : on a bien fait un reboot du routeur il y a 2 jours parce que les enfants trouvaient que ça ramait mais je n'ai pas vérifié la reconnexion et comme j'ai reprogrammé plusieurs fois le bousin au fur et à mesure des modif, franchement je ne sais pas.
Je fais un test dès que je le peux (C'est compliqué on est 4 à la maison en télétravail) un soir très tard ...

Pour le fonctionnement, pareil, comme j'ai reprogrammer plusieurs fois,mais je dirais que oui c'est stable.

Pour le code optimisable, c'est certain, mais je ne cherche pas à faire le bignoux de la mort qui tue mais plutôt un truc qui fonctionne et que si dans un ans ou deux je dois me remettre dedans, que je recomprenne le fonctionnement rapidement sans me torturer la tête car oui, comme toi je suis plus un bricolo qu'un codeur.
Et puis c'est mon premier projet avec arduino, j'utilise beaucoup tasmota et un peu espeasy.

Et aussi merci à tous ceux qui on commencé des choses avec le pzem et qui mon permis de butiner à droite et à gauche pour en arriver là

Donc plus d'infos d'ici quelques jours

Pareil je ferais une photo de mon câblage finale avec les quelques fioritures que j'ai ajouté :
Remplacement des connecteurs des pzem par des connecteur usb femelle et utilisation de vieux câble usb pour faire la liaison nodemcu pzem
Ajout de led sur les rx tx sur le nodemcu
Impression d'un boitier de facade pour mettre sur mon coffret de répartition avec les led et le bouton de raz dessus
VBill
Messages : 86
Inscription : 26 janv. 2019, 16:43

Re: PZEM004T

Message par VBill »

Ci joint la photo du proto de test et le final en cours de cablage
et le cablage (Les LED sont optionnelles)

Oups j'avais une boulette au niveau du contact sec sur le plan de cablage, c'est corrigé
Pièces jointes
Cablage.png
Cablage.png (615.6 Kio) Consulté 9080 fois
20200419_193424.jpg
20200419_193424.jpg (1.75 Mio) Consulté 9087 fois
20200419_192712.jpg
20200419_192712.jpg (2.52 Mio) Consulté 9087 fois
20200419_192405.jpg
20200419_192405.jpg (2.78 Mio) Consulté 9087 fois
adv
Messages : 580
Inscription : 02 févr. 2016, 13:54
Contact :

Re: PZEM004T

Message par adv »

C'est chouette, pour le wifi je testerai peut-être la semaine prochaine, pas possible cette semaine, j'ai deux PZEM de rab à la maison.

Si tu n'as pas déjà vu je t’oriente vers mon tuto, à la fin y'a un script pour répartir les conso par HP/HC et calculer le coûts en conséquence (via un P1 SmartMeter virtuel), je signale que je ne suis pas l'auteur du script, je l'ai juste adapté/corrigé:
voir la partie 3: https://easydomoticz.com/forum/viewtopi ... =24&t=8420

Pour l'alim de ton montage je te conseille le HLK-PM01, à moins que tu comptes réutiliser une vieille alim de téléphone, ça s'intègre proprement sur un circuit c'est l'avantage.

Et question sans importance, tu t'en sers pour mesurer ton conso en triphasé, ou pour mesurer la conso de trois appareils/circuits en mono.

Encore merci de ta contribution et bon télétravail.
Raspberry pi 3 - Domoticz 2024.4 | Piface v.2 + Téléinfo + RFXtrx433E
sondes Oregon | motorisations Somfy Yslo Flex 2 RTS
prises chacon, wifi | Sonoff easyESP, Tasmota, Espurna | ParadoxMG5050
VBill
Messages : 86
Inscription : 26 janv. 2019, 16:43

Re: PZEM004T

Message par VBill »

adv a écrit : 20 avr. 2020, 09:52 C'est chouette, pour le wifi je testerai peut-être la semaine prochaine, pas possible cette semaine, j'ai deux PZEM de rab à la maison.

Si tu n'as pas déjà vu je t’oriente vers mon tuto, à la fin y'a un script pour répartir les conso par HP/HC et calculer le coûts en conséquence (via un P1 SmartMeter virtuel), je signale que je ne suis pas l'auteur du script, je l'ai juste adapté/corrigé:
voir la partie 3: https://easydomoticz.com/forum/viewtopi ... =24&t=8420

Pour l'alim de ton montage je te conseille le HLK-PM01, à moins que tu comptes réutiliser une vieille alim de téléphone, ça s'intègre proprement sur un circuit c'est l'avantage.

Et question sans importance, tu t'en sers pour mesurer ton conso en triphasé, ou pour mesurer la conso de trois appareils/circuits en mono.

Encore merci de ta contribution et bon télétravail.
Salut
Merci pour le tuto je vais regarder ça même si je pense que je devrais le modifier : je suis encore en tarif EJP et en Triphasé
Pour l'alim c'est une vielle alim de tél pour l'instant mais je note car je le connaissais pas celui la

Pour info je viens de refaire une petite modif du code pour attribuer un nom réseau, par défaut PZEMx3, c'est plus sympa quand on fait une recherche sur son réseau que ESP-BFDC92
Répondre