Bien que le prix sois moins intéressant que certaine prise qui supporte 16A que l’on peux trouver sur Ali express comme cette prise la a 7.5€
Ce tuto reste très intéressant pour un branchement dans le tableau électrique vu le PZEM0004T supporte jusqu’à 100A
Liste de matériel à acheter
- 1 PZEM 004T v3.0 lien
- 1 NodeMCU lien
- 5 Câble pour breadboard femelle/femelle lien
Liste de matériel à récupérer
- Rallonge électrique (avec terre (conseillé))
- domino
Caractéristique technique du wattmètre PZEM004T v3
Paramètre électrique mesure :
• Voltage
• Intensité
• Puissance Instantané
• Énergie
• Fréquence (que sur la V3)
• Facteur de puissance (que sur la V3)
Communications en TTL avec le NodeMCU
Dans domoticz
Dans réglages / matériel crée un matériel ‘Compteur Elec’ de type Dummy

Avec le nouveau matériel crée 5 capteurs virtuels

-Tension -Ampère (monophasé) -Électricité (Instant+Compteur) -Fréquence -Facteur de puissance
Allez dans Reglages / Dispositif et note les IDX des diffèrent capteur crée
Dans Arduino IDE
Télécharger la librairie du PZEM 004T v3 en allons dans :
Croquis / Inclure une librairie / Gérer les bibliothèque
Rechercher pzem Et instaler le PZEM004Tv30
Modifier le sketch suivant avec vos paramètre et televersé le dans votre NodeMCU
Code : Tout sélectionner
/*
PZEM004T v3.0 vers Domoticz GET
*/
#include <ESP8266WiFi.h>
#include <SoftwareSerial.h>
//#include <PZEM004T.h>
#include <PZEM004Tv30.h>
// initialisation du PZEM004T
#define PZEM_RX_PIN 4
#define PZEM_TX_PIN 5
SoftwareSerial pzemSWSerial(PZEM_RX_PIN, PZEM_TX_PIN);
PZEM004Tv30 pzem(pzemSWSerial);
#define SLEEP_DELAY_IN_SECONDS 30
//parametre Wifi
const char* ssid = "toto";
const char* password = "12345678";
// Paremetre Domoticz
const char* domoticz_server = "192.168.0.8"; //adresse IP de domoticz
String IDX_U = "551"; //idx du capteur virtuels tension lidR%TVe1R9Su?V>j!lqvqM?9dJ 5%M+vC_(=-y>|FFQ&NSeB%-SU_bci%QNhoN
String IDX_I = "552"; //idx du capteur virtuels intensite
String IDX_W = "553"; //idx du capteur virtuels puissance et energie
String IDX_F = "554"; //idx du capteur virtuels puissance et energie
String IDX_PF = "555"; //idx du capteur virtuels puissance et energie
WiFiClient domoticz_client;
int nbtent=0;
void setup(void) {
Serial.begin(115200);
// Connexion au WiFi
delay(10);
// We start by connecting to a WiFi network
Serial.println();
Serial.print("Connecting to ");
Serial.println(ssid);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
if (nbtent<10){
nbtent++ ;
delay(1000);
Serial.print(".");
}
else{
Serial.println("Restet");
ESP.deepSleep(2 * 1000000, WAKE_RF_DEFAULT);
}
}
Serial.println("");
Serial.println("WiFi connected");
Serial.println("IP address: ");
Serial.println(WiFi.localIP());
//initialisation ttl avec PZEM004T
//pzem.setAddress(ip);
}
void loop(void){
Serial.println("");
Serial.print("Custom Address:");
Serial.println(pzem.readAddress(), HEX);
float v = pzem.voltage();
if (v < 0.0) v = 0.0;
Serial.print(v);Serial.print("V; ");
delay(10);
float i = pzem.current();
if(i >= 0.0){ Serial.print(i);Serial.print("A; "); }
delay(10);
float p = pzem.power();
if(p >= 0.0){ Serial.print(p);Serial.print("W; "); }
delay(10);
float e = pzem.energy();
if(e >= 0.0){ Serial.print(e);Serial.print("Wh; "); }
float f = pzem.frequency();
if(f >= 0.0){ Serial.print(f);Serial.print("Hz; "); }
float pf = pzem.pf();
if(pf >= 0.0){ Serial.print(pf);Serial.print("; "); }
Serial.println();
EnvoieDomoticz(IDX_U,String(v)); // tension
EnvoieDomoticz(IDX_I,String(i)); // intensite
EnvoieDomoticz(IDX_W,String(p)+ ";" +String(e)); // puissance
EnvoieDomoticz(IDX_F,String(f)); // frequence
EnvoieDomoticz(IDX_PF,String(pf)); // facteur de puissance
delay(100);
Serial.println("Pausse de "+String(SLEEP_DELAY_IN_SECONDS)+" secondes...");
delay(SLEEP_DELAY_IN_SECONDS * 1000);
}
int EnvoieDomoticz(String IDX, String Svalue) {
domoticz_client.connect(domoticz_server, 8080);
delay(500);
int Resultat=0 ;
int NbTentEnvoie=0;
String deel1 = "GET /json.htm?type=command¶m=udevice&idx="+IDX+"&nvalue=0&svalue=";
String deel3 = " HTTP/1.1\r\nHost: www.local.lan\r\nConnection: keep-alive\r\nAccept: */*\r\n\r\n";
String dataInput = String(deel1 + Svalue + deel3);
while (Resultat!=1) {
if (NbTentEnvoie<10){
NbTentEnvoie++ ;
Serial.print("_");
domoticz_client.println(dataInput);
delay(500);
// Si le serveur repond lire toute les lignes
while(domoticz_client.available()){
String line = domoticz_client.readStringUntil('\r');
if (line.lastIndexOf("status")>0 and line.lastIndexOf("OK")>0){
Serial.println("Status OK");
Resultat = 1 ;
}
}
}
else{
Serial.println("Restet");
ESP.deepSleep(2 * 1000000, WAKE_RF_DEFAULT);
}
}
// deconexion
domoticz_client.println("Connection: close");
domoticz_client.println();
return(Resultat);
}

Et voilà Apres le branchement vous devriez obtenir de belle courbe