[NodeMCU]Un wattmètre connecté à Domoticz pour environ 10€

Vos échanges, bricolages, idées et questions concernant l'ESP8266, les NodeMCU,Weemos, et consort
Répondre
vinz973
Messages : 31
Enregistré le : 30 août 2017, 13:50

[NodeMCU]Un wattmètre connecté à Domoticz pour environ 10€

Message par vinz973 »

Liste de matériel à acheter
- 1 PZEM 004T 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 éléctrique
- transformateur avec prise usb mini (pour alimenter le NodeMCU)

Caractéristique technique du wattmètre PZEM004
Paramètre électrique mesure :
• Voltage
• Intensité
• Puissance Instantané
• Energie

Communications en TTL avec le NodeMCU

Dans domoticz
Dans réglages / matériel crée un matériel ‘Compteur Elec’ de type Dummy
Image

Avec le nouveau matériel crée 3 capteurs virtuels
Image

-Tension
Image

-Ampère (monophasé)
Image

-Electricité (Instant+Compteur)
Image

Allez dans Reglages / Dispositif et note les IDX des diffèrent capteur crée
Image

Dans Arduino IDE
Télécharger la librairie du PZEM 004T pour arduino : https://github.com/olehs/PZEM004T
et installer là.

Modifier le sketch suivant avec vos paramètre et televersé le dans votre NodeMCU

Code : Tout sélectionner

/*
 PZEM004T vers Domoticz GET
 
*/

#include <ESP8266WiFi.h>
#include <SoftwareSerial.h> 
#include <PZEM004T.h>

// initialisation du PZEM004T
PZEM004T pzem(4,5);  // RX,TX borne D1 et D2
IPAddress ip(192,168,1,1);

#define SLEEP_DELAY_IN_SECONDS  30 //interval envoi des données

//parametre Wifi

const char* ssid     = "NomduWifi"; // Nom du reseau WIFI utilise
const char* password = "12345678"; // Mot de passe du reseau WIFI utilise


// Paremetre Domoticz
const char* domoticz_server = "192.168.0.x"; //adresse IP de domoticz
String IDX_U     = "293"; //idx du capteur virtuels tension             
String IDX_I     = "292"; //idx du capteur virtuels intensite            
String IDX_W     = "294"; //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("");  

  float v = pzem.voltage(ip);
  if (v < 0.0) v = 0.0;
  Serial.print(v);Serial.print("V; ");
  delay(10); 
  float i = pzem.current(ip);
  if(i >= 0.0){ Serial.print(i);Serial.print("A; "); }
  delay(10);   
  float p = pzem.power(ip);
  if(p >= 0.0){ Serial.print(p);Serial.print("W; "); }
  delay(10);   
  float e = pzem.energy(ip);
  if(e >= 0.0){ Serial.print(e);Serial.print("Wh; "); }
  Serial.println();

  EnvoieDomoticz(IDX_U,String(v)); // tension
  EnvoieDomoticz(IDX_I,String(i)); // intensite
  EnvoieDomoticz(IDX_W,String(p)+ ";" +String(e)); // 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&param=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);
}
Branché le Ndembu au PZEM 004T comme sur le schéma ci-dessous
et alimenter le NodeMCU par sa prise usb l'aide d'un transformateur branché sur le 220V
Image
--


Image

Image

Image


Moi personnellement je l’ai branche dans mon tableau électrique général

Image
Fichiers joints
5.png
5.png (8.94 Kio) Vu 20304 fois
Domoticz(1).png
Domoticz(1).png (155.13 Kio) Vu 20309 fois
IMG_8400(02).png
IMG_8400(02).png (1.09 Mio) Vu 20312 fois
IMG_8394(02).png
IMG_8394(02).png (1.19 Mio) Vu 20312 fois
IMG_8389(02).png
IMG_8389(02).png (809.71 Kio) Vu 20312 fois
6.png
6.png (15.25 Kio) Vu 20312 fois
4.png
4.png (6.67 Kio) Vu 20312 fois
3.png
3.png (5.86 Kio) Vu 20312 fois
2.png
2.png (10.57 Kio) Vu 20312 fois
1.png
1.png (22.98 Kio) Vu 20312 fois
rect4057.png
rect4057.png (17.05 Kio) Vu 20312 fois
Modifié en dernier par vinz973 le 17 mai 2019, 23:34, modifié 4 fois.

digdogger
Messages : 213
Enregistré le : 16 juil. 2017, 09:21

Re: [NodeMCU]Un wattmètre connecté à Domoticz pour environ 10€

Message par digdogger »

Salut vinz973,

je réfléchissais depuis quelques jours pour acheter un OWL Micro+ CM180.
Ta solution a l'air vraiment bien et pas chère. Je pense me lancer dedans.

En commençant par voir si j'arrive à compiler le code, j'ai malheureusement déjà quelques soucis:
-J'ai bien installé la librairie
-Je compile pour une carte nodeMCU-0.9 (j'ai essayé aussi avec nodeMCU-1.0)

Voici ce que j'obtiens comme erreurs:

Code : Tout sélectionner

Build options changed, rebuilding all
WARNING: library PZEM004T-master claims to run on (avr) architecture(s) and may be incompatible with your current board which runs on (esp8266) architecture(s).
C:\Users\Fabien\Documents\Arduino\libraries\PZEM004T-master\PZEM004T.cpp: In member function 'bool PZEM004T::recieve(uint8_t, uint8_t*)':

C:\Users\Fabien\Documents\Arduino\libraries\PZEM004T-master\PZEM004T.cpp:137:37: error: 'class SoftwareSerial' has no member named 'listen'

         ((SoftwareSerial *)serial)->listen();

                                     ^

exit status 1
Error compiling for board NodeMCU 0.9 (ESP-12 Module).
Modifié en dernier par digdogger le 31 août 2017, 08:56, modifié 1 fois.
Raspberry Pi 3 + Raspbian Jessie Lite + Domoticz V4.9700 - RFlink USB V48 433.42MHz - Volets Somfy RTS - MySensors USB V2.1.1 - IDE Arduino 1.8.8

Neutrino
Messages : 1555
Enregistré le : 10 juil. 2015, 15:42
Localisation : Challans (85)
Contact :

Re: [NodeMCU]Un wattmètre connecté à Domoticz pour environ 10€

Message par Neutrino »

Sympa !
Etant friand du DIY, je suis moins fan quand il s'agit de balancer du 220 dedans.
On peut se contenter de la bobine ou le branchement au secteur est obligatoire ?
Ma maison à plein d'IP ! :mrgreen:
SAV Bonjour. Vous avez vidé le cache ?

ericd
Messages : 157
Enregistré le : 24 janv. 2017, 11:04
Localisation : Toulouse

Re: [NodeMCU]Un wattmètre connecté à Domoticz pour environ 10€

Message par ericd »

Merci pour ton partage.

Il risque d'y avoir prochainement un plugin ESPEASY alors..... :lol:

Jeff
Messages : 791
Enregistré le : 17 nov. 2016, 20:54
Localisation : Rennes (35)

Re: [NodeMCU]Un wattmètre connecté à Domoticz pour environ 10€

Message par Jeff »

Merci et bravo pr le tuto.
Il y a la fonction d'envoi a domoticz qui est fort intéressante :D
Il y a aussi des projets avec un HLW8912 dans un sonoff pow sous espurna qui est un peu plus sécurisé et aussi des projets avec espeasy et un plugin...
Version: 4.9700; RFXCOM Rfxtrx433e ext/1007 ; Zwave (Z-stick GEN5, Fibaro...), Zigbee2MQTT.

vinz973
Messages : 31
Enregistré le : 30 août 2017, 13:50

Re: [NodeMCU]Un wattmètre connecté à Domoticz pour environ 10€

Message par vinz973 »

digdogger a écrit : Voici ce que j'obtiens comme erreurs:

Code : Tout sélectionner

Build options changed, rebuilding all
WARNING: library PZEM004T-master claims to run on (avr) architecture(s) and may be incompatible with your current board which runs on (esp8266) architecture(s).
C:\Users\Fabien\Documents\Arduino\libraries\PZEM004T-master\PZEM004T.cpp: In member function 'bool PZEM004T::recieve(uint8_t, uint8_t*)':

C:\Users\Fabien\Documents\Arduino\libraries\PZEM004T-master\PZEM004T.cpp:137:37: error: 'class SoftwareSerial' has no member named 'listen'

         ((SoftwareSerial *)serial)->listen();

                                     ^

exit status 1
Error compiling for board NodeMCU 0.9 (ESP-12 Module).
Salut digdogger
desoler mais je n'arrive pas a obtenir ton erreur est tu sous une version superieur a arduino 1.6.6
essaye les exemple dans PZEM004T

vinz973
Messages : 31
Enregistré le : 30 août 2017, 13:50

Re: [NodeMCU]Un wattmètre connecté à Domoticz pour environ 10€

Message par vinz973 »

Neutrino a écrit :Sympa !
Etant friand du DIY, je suis moins fan quand il s'agit de balancer du 220 dedans.
On peut se contenter de la bobine ou le branchement au secteur est obligatoire ?
je n'ai pas essayé sans le 220V
mais sans le 220V pas de visualisation de la puissance et de l’énergie
c'est ce qui est intéressant dans ce wattmètre

si tu veux visualiser le courant achète un transformateur de courant

Neutrino
Messages : 1555
Enregistré le : 10 juil. 2015, 15:42
Localisation : Challans (85)
Contact :

Re: [NodeMCU]Un wattmètre connecté à Domoticz pour environ 10€

Message par Neutrino »

P = U x I
Sans mesure de U, pas de calcul de P...
Mon cerveau avait oublié que la tension envoyée par Enidis est légèrement fluctuante :D
Merci pour ce tuto
Ma maison à plein d'IP ! :mrgreen:
SAV Bonjour. Vous avez vidé le cache ?

digdogger
Messages : 213
Enregistré le : 16 juil. 2017, 09:21

Re: [NodeMCU]Un wattmètre connecté à Domoticz pour environ 10€

Message par digdogger »

vinz973 a écrit :
Salut digdogger
desoler mais je n'arrive pas a obtenir ton erreur est tu sous une version superieur a arduino 1.6.6
essaye les exemple dans PZEM004T
Oui, je suis en 1.8.2 mais j'ai essayé avec un PC qui lui est en 1.6.4 et même problème.
Les exemples ne compilent pas non plus. La librairie du PZE a été mise à jour le 5 août dernier, tu utilises bien la dernière?
Raspberry Pi 3 + Raspbian Jessie Lite + Domoticz V4.9700 - RFlink USB V48 433.42MHz - Volets Somfy RTS - MySensors USB V2.1.1 - IDE Arduino 1.8.8

vinz973
Messages : 31
Enregistré le : 30 août 2017, 13:50

Re: [NodeMCU]Un wattmètre connecté à Domoticz pour environ 10€

Message par vinz973 »

digdogger a écrit :
vinz973 a écrit :
Salut digdogger
desoler mais je n'arrive pas a obtenir ton erreur est tu sous une version superieur a arduino 1.6.6
essaye les exemple dans PZEM004T
Oui, je suis en 1.8.2 mais j'ai essayé avec un PC qui lui est en 1.6.4 et même problème.
Les exemples ne compilent pas non plus. La librairie du PZE a été mise à jour le 5 août dernier, tu utilises bien la dernière?
j'ai essayé avec la version du 05 août et effectivement j'ai le même message d'erreur
moi j'utilise un version antérieur ,essaye de recompiler avec cette version

http://vinz973.free.fr/img/PZEM004T-master.zip
Fichiers joints
PZEM004T-master.zip
(6 Kio) Téléchargé 596 fois
Modifié en dernier par vinz973 le 17 mai 2019, 23:42, modifié 1 fois.

Répondre