[Tasmota] un "autre" wattmètre connecté pour moins de 15€ + calcul HP/HC

Vos échanges, bricolages, idées et questions concernant l'ESP8266, les NodeMCU,Weemos, et consort
Répondre
adv
Messages : 241
Enregistré le : 02 févr. 2016, 13:54
Contact :

[Tasmota] un "autre" wattmètre connecté pour moins de 15€ + calcul HP/HC

Message par adv » 03 mai 2019, 11:21

Salut à tous,

déjà merci à vinz973 du forum qui m'a pas mal inspiré (son wattmètre tourne avec ESPeasy) :!:
et merci à l'auteur du script de création d'un compteur virtuel à deux tarifs ici -> https://matdomotique.wordpress.com/2017 ... f-virtuel/
(que j'ai corrigé/modifié très légèrement)

Bon alors pourquoi un sujet qui fait presque "doublon" avec le sujet de vinz973 ?
Et bien c'est pas compliqué, je me suis pris la tête des heures (sans mentir) pour essayer de faire marcher ESPeasy avec le PZEM-004T ! :oops:
J'ai essayé de compiler moi même (MEGA + plugin 171), gros fails, j'ai trouvé des firmwares déjà compilés, guère mieux...
Et si je suis parvenu à le faire fonctionner et bien j'avais des pertes de comm entre mon Wemos et le PZEM (donc calcul de conso erroné).

Alors j'ai testé avec Tasmota et en quelques dizaines de minutes, le temps de comprendre comment ça se compile, crac boum tout était debout, et stable (cela fait plusieurs mois que je le vérifie...).

Je pense savoir pourquoi (dans mon cas) Tasmota fonctionne mieux...
ESPeasy utilise un port série virtuel pour communiquer avec le PZEM, quand Tasmota utilise le port matériel...
Ceci n'est que supposition mais y'a pas photo...

Alors aujourd'hui on repart de zéro (un nouveau besoin de mesure à la maison) et on documente !!! :geek:

Étapes:
- Construction
- Compilation de Tasmota sous ArduinoIDE + config + téléversement.
- Configuration de Tasmota + MQTT + Domoticz (on va naviguer entre ces trois)

Tout ne sera pas imagé, ça ferait beaucoup de captures !!!

1/ Construction

La construction ne présente pas de difficulté particulière...

J'ai décidé d'alimenter le Wemos et le PZEM avec un module d'alimentation 5v 3w HLK-PM01.
Au primaire, on protège notre installation avec un fusible correctement calibré (- de 1A) et une varistance en aval du fusible.
Au secondaire, RAS, j'ai juste mis des condos de découplage, 10µF + 100nF en parallèle (je ne sais pas si c'est indispensable mais je l'avais vu sur un schéma).

Le module alimente en direct le Wemos D1 pro et le PZEM.

Le port COM du Wemos est connecté au port COM du PZEM.

La liste des courses:
- Wemos D1 mini pro.
- PZEM-004T
- HLK-PM01
- 1 porte fusible 5*20 + 1 fusible (- de 1A)
- 1 varistance (recup dans mon cas)
- condensateurs 10µF + 100nF
- 1 boite de dérivation de 80*80
- un circuit imprimé à trous

Voilà schéma et photo :

montage.png
montage.png (485.11 Kio) Vu 927 fois
boite.png
boite.png (601.44 Kio) Vu 927 fois

Et voilà !

PS : en théorie il faudrait une adaptation de signaux électriques entre le PZEM (E/S et alim en 5 volts) et le Wemos (le RX ne supportant que 3,3v, mais mon Wemos supporte bien les 5 volts depuis des mois alors...)


2/ Compilation de Tasmota sous ArduinoIDE + config + téléversement

Un gros pavé de texte pas imagé mais ultra détaillé (testé et retesté !).

Installer Arduino IDE.
Ajouter l'adresse "https://arduino.esp8266.com/stable/pack ... index.json" dans Fichier/Préférences/Paramètres/URL de gestionnaire de cartes supplémentaires.
Aller dans Outils/Type de carte/Gestionnaire de cartes.
Rechercher et installer ESP8266 version 2.5
Télécharger Tasmota "source code" (j'ai compilé la 6.4.1 à l'époque qui marche parfaitement): https://github.com/arendst/Sonoff-Tasmo ... v6.4.1.zip
Dézipper le fichier...
Copier le contenu du dossier \Sonoff-Tasmota-6.4.1\lib dans C:\Program Files (x86)\Arduino\libraries
Renommer le fichier C:\Users\votre compte\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.5.0\platform.txt en plateform.ori
Copier le fichier \Sonoff-Tasmota-6.4.1\arduino\version 2.5.0\platform.txt dans C:\Users\votre compte\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.5.0\
Double cliquer sur le fichier \Sonoff-Tasmota-6.4.1\sonoff\Sonoff.ino qui doit s'ouvrir avec l'IDE Arduino...
Aller à l'onglet "my_user_config.h"
Mettre le nom de votre wifi domestique et son mot de passe à la ligne 64 et 65.
Sauver (CTRL+S)
Brancher votre Wemos sur un port USB et trouver le port COM assigné dans le gestionnaire de périphériques de votre PC.
Aller dans Outils/Type de carte et choisir LOLIN(WEMOS) D1 mini pro.
Aller dans Outils/Port et choisir le bon port COM.
Téléverser le contenu !
La compilation et le téléchargement prennent plusieurs minutes.

A la programmation votre Wemos ne doit être connecté à rien d'autre que votre PC en USB (pas d'alim, pas de PZEM !)

Le téléversement est terminé ? Alors bravo, une belle étape est franchie !

3/ Configuration de Tasmota + MQTT + Domoticz

Dans Domoticz, créer un dummy « PZEM004 » puis les 4 capteurs virtuels :
- Tension (nom : tension - idx : 711)
- Ampère (monophasé) (nom : courant clim - idx:712)
- Électrique (instantané+compteur) (nom : puissance clim - idx : 714)
- P1 Compteur intelligent (nom : conso clim - idx:715)

idx.png
idx.png (16.41 Kio) Vu 927 fois

Installer MQTT (chez moi installation locale sur le Rpi) :

Code : Tout sélectionner

sudo apt-get install mosquitto

Config de Domoticz :

mqtt_domoticz.png
mqtt_domoticz.png (22.41 Kio) Vu 927 fois

On va ensuite passer au script LUA qui va permettre « d’alimenter » le compteur intelligent qui vous permettra de suivre les coût selon le tarif HP/HC.

Le miens est basé sur le travail de l’auteur du blog «  matdomotique.wordpress.com »

Cependant… l’original utilise un switch virtuel HP/HC (donc avec un planning). Disposant d’un module de téléinfo je n’ai pas besoin de cette couche supplémentaire… on va simplement utiliser le dispositif « Tarif en cours » créé lors de l’ajout du téléinfo, et qui peut prendre deux valeurs… (1) Heures Creuses ou (2) Heures Pleines et qui a l’idx 420.

hp-hc.png
hp-hc.png (3.99 Kio) Vu 925 fois

Veuillez donc vous rendre sur le blog cité dans les sources si vous n’avez pas de téléinfo chez vous…
A noter, l’auteur a confondu HP/HC enfin disons que si vous avez de la téléinfo vous remarquerez que Utilisation 1 et Utilisation 2 sont inversés...

Voici le code (vous devrez adapter vos idx !):

Code : Tout sélectionner

function log(p_message)
-- print("[HPHC] " .. p_message)
end
function getdevname4idx(deviceIDX)
 for i, v in pairs(otherdevices_idx) do
   if v == deviceIDX then
     return i
   end
 end
 return 0
end

commandArray = {}
DEBUG = false

local nomCompteurPrincipal = getdevname4idx(714)
local idxCompteurIntelligent = 715
local nomCompteurIntelligent = getdevname4idx(idxCompteurIntelligent)--HPHC
local nomHeureCreuse = getdevname4idx(420) -- Switch Heures Creuses

for deviceName,deviceValue in pairs(devicechanged) do
 if (deviceName==nomCompteurPrincipal) then
   -- On récupère la valeur du compteur unique => consEnergy
   ConsPower, consEnergy = string.match(otherdevices_svalues[nomCompteurPrincipal], "(%d+%.*%d*);(%d+%.*%d*)")
   log(ConsPower.."-"..consEnergy)
   --on somme les compteurs HP et HC => EnergyImport
   --http://www.domoticz.com/wiki/Upload_energy_data_to_PVoutput
   EnergyImportLow, EnergyImportHigh, EnergyExportLow, EnergyExportHigh, PowerImport, PowerExport = otherdevices_svalues[nomCompteurIntelligent]:match("([^;]+);([^;]+);([^;]+);([^;]+);([^;]+);([^;]+)")
  
   -- For the first time, the value are not initilize in the smart counter, we set 0 by default.
   if(EnergyImportLow == nil)then
     EnergyImportLow =0
     EnergyImportHigh =0
     EnergyExportLow = 0
     EnergyExportHigh =0
     PowerImport = 0
     PowerExport = 0
   end
   -- Lors du changement de pile du compteur unique, consEnergy a été réinitialisé, faussant complémtement les valeurs de EnergyImportLow/EnergyImportHigh
   if((EnergyImportLow+0) < 0 or (EnergyImportHigh+0) < 0) then
     EnergyImportLow =0
     EnergyImportHigh =0
     log("  ----- Reinit de EnergyImportLow/EnergyImportHigh");
   end

   EnergyImport = EnergyImportLow + EnergyImportHigh
   EnergyExport = EnergyExportLow + EnergyExportHigh

   log(" ----- PowerImport = " .. PowerImport .. " W");
   log(" ----- EnergyImportLow = " .. EnergyImportLow .. " Wh");
   log(" ----- EnergyImportHigh = " .. EnergyImportHigh .. " Wh");
   log(" ----- EnergyImport = " .. EnergyImport .. " Wh");
   log(" ----- PowerExport = " .. PowerExport .. " W");
   log(" ----- EnergyExportLow = " .. EnergyExportLow .. " Wh");
   log(" ----- EnergyExportHigh = " .. EnergyExportHigh .. " Wh");
   log(" ----- EnergyExport = " .. EnergyExport .. " Wh");
 
   --On calcule le delta avec le compteur actuel
   delta = consEnergy - EnergyImport
 
   --On ajoute le delta sur le bon tarif
   if (otherdevices[nomHeureCreuse] == '(2) Heures Pleines') then
       
     EnergyImportLow = EnergyImportLow + delta
   else
     EnergyImportHigh = EnergyImportHigh + delta
   end
 
   --On modifie le compteur intelligent
   commandArray['UpdateDevice'] = idxCompteurIntelligent.."|0|"..EnergyImportLow..";"..EnergyImportHigh..";0;0;"..ConsPower..";0"

 end
end

return commandArray
Alimentez le montage complet et mettez une charge (ampoule par exemple).

Trouvez l’adresse IP reçue par votre Wemos (via Fing, votre routeur, Advanced IP scanner, etc...)

Connectez vous à son interface Web: http://IP

Allez dans le menu Configuration/Configure module
Choisir le type « Generic (18) »
Sauver
Allez dans le menu Configuration/Configure module
- TX GPIO1 Serial Out : PZEM0XX Tx (62)
- RX GPIO3 Serial In : PZEM004 Rx (63)

comme ça :

config module.png
config module.png (33.52 Kio) Vu 927 fois

Une fois reconnecté vous devriez voir des nouvelles informations sur la page web principale, c’est encore une belle avancée et cela signifie que votre PZEM et votre Wemos échangent bien !!!

principal tasmota.png
principal tasmota.png (20.05 Kio) Vu 927 fois

Paramétrer le serveur MQTT (on l’a installé sur notre Rpi pour mémoire, adaptez l'adresse IP !) :

mqtt.png
mqtt.png (24.23 Kio) Vu 927 fois

Paramétrer les idx précédemment générés par Domoticz :

idx tasmota.png
idx tasmota.png (26.97 Kio) Vu 927 fois

A partir de cet instant vous devriez voir venir des informations dans Domoticz (tension, courant, consommation instantanée, et puis plus tard des courbes et des calculs de coût dans votre compteur intelligent) !

Voilà ce que ça donne:

valeurs domoticz.png
valeurs domoticz.png (21.83 Kio) Vu 927 fois
P1.png
P1.png (194.45 Kio) Vu 927 fois
couts.png
couts.png (86.92 Kio) Vu 927 fois


EDIT correctif: passer la commande "teleperiod 60" dans la console Tasmota pour envoyer les données toutes les 60 secondes via MQTT à Domoticz. Du coup je n'ai pas trop compris le paramètre "Update timer" dans la page de config...
Mais garantie ça fonctionne impec !

A vous de jouer !!!
Modifié en dernier par adv le 18 juil. 2019, 22:27, modifié 1 fois.
Raspberry pi 3 - Domoticz beta | Piface v.2 + Téléinfo + RFXtrx433E + Aeon Z-Wave+GEN5
sondes Oregon | motorisations Somfy Yslo Flex 2 RTS | prises chacon | Fibaro FGD-212, FGSD002, FGFS101 | Sonoff easyESP, Tasmota, Espurna | Sherlock S2 | ParadoxMG5050

Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


adv
Messages : 241
Enregistré le : 02 févr. 2016, 13:54
Contact :

Re: [Tasmota] un "autre" wattmètre connecté pour moins de 15€ + calcul HP/HC

Message par adv » 25 mai 2019, 11:58

Salut à tous,

variante avec les nouveaux PZEM-004T v3 reconnaissables à leurs opto blancs et à des leds de diagnostique bien pratiques (présence 220, TX et RX).

Les anciennes versions à terme ne seront plus commercialisées.

Ce PZEM n'est pas compatible avec la librairie présente dans l'espeasy, Tasmtota prend tout son sens, car il est compatible avec le PZEM-016 et c'est justement le même protocole de com que le PZEM-004T v3.

Nouveau paramètre de mesure: la fréquence (OK on s'en moque un peu !)

Rien ne change dans la procédure à part dans le menu de configuration:
pzem004t v3.png
pzem004t v3.png (675.15 Kio) Vu 799 fois
config.png
config.png (17.32 Kio) Vu 799 fois
données.png
données.png (16.26 Kio) Vu 799 fois
Bon weekend !!!
Raspberry pi 3 - Domoticz beta | Piface v.2 + Téléinfo + RFXtrx433E + Aeon Z-Wave+GEN5
sondes Oregon | motorisations Somfy Yslo Flex 2 RTS | prises chacon | Fibaro FGD-212, FGSD002, FGFS101 | Sonoff easyESP, Tasmota, Espurna | Sherlock S2 | ParadoxMG5050

djksage
Messages : 135
Enregistré le : 16 déc. 2015, 19:42

Re: [Tasmota] un "autre" wattmètre connecté pour moins de 15€ + calcul HP/HC

Message par djksage » 31 mai 2019, 21:33

adv a écrit :
25 mai 2019, 11:58
Ce PZEM n'est pas compatible avec la librairie présente dans l'espeasy, Tasmtota prend tout son sens, car il est compatible avec le PZEM-016 et c'est justement le même protocole de com que le PZEM-004T v3.
Bonjour,

je me suis pris la tête avec espeasy, arduino et consort pour le faire fonctionner, je pensais que mon PZEM004T V3 était mort, mais tu viens de me faire comprendre qu'il n'était juste pas compatible. je regarde comme fonctionne MQTT et teste ça ce week end :D

merci

adv
Messages : 241
Enregistré le : 02 févr. 2016, 13:54
Contact :

Re: [Tasmota] un "autre" wattmètre connecté pour moins de 15€ + calcul HP/HC

Message par adv » 31 mai 2019, 22:19

Pas de souci !

Tu peux suivre mon tuto à la lettre, l'install du broker mosquitto tient en une ligne, domoticz se configure en une minute en tant que client, la seule difficulté est la compil et l'install de Tamota, mais j'ai tout détaillé en pris la peine de tester deux fois en repartant de zéro pour écrire ce tuto. Tu devrais rapidement retomber sur tes pattes !

N'hésites pas à repasser ici si tu n'as pas réussi à t'en sortir, ou au contraire pour nous dire si ça marche !

A+
Raspberry pi 3 - Domoticz beta | Piface v.2 + Téléinfo + RFXtrx433E + Aeon Z-Wave+GEN5
sondes Oregon | motorisations Somfy Yslo Flex 2 RTS | prises chacon | Fibaro FGD-212, FGSD002, FGFS101 | Sonoff easyESP, Tasmota, Espurna | Sherlock S2 | ParadoxMG5050

Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


djksage
Messages : 135
Enregistré le : 16 déc. 2015, 19:42

Re: [Tasmota] un "autre" wattmètre connecté pour moins de 15€ + calcul HP/HC

Message par djksage » 01 juin 2019, 15:05

j'ai un message d'erreur :oops:

StaticJsonBuffer is a class from ArduinoJson 5. Please see arduinojson.org/upgrade to learn how to upgrade your program to ArduinoJson version 6

j'ai essayé avec mon deuxième pc et une version plus anciène de IDEarduino et j'ai un autre message d'erreur,

La je doit remplacer tous les JsonBuffer par JsonDocument, en cours de compil :D

Edit: c'est plus compliquer que juste de remplacer :x, bref pas gagné tout ça

je vais essayer une version plus récente de tasmota

djksage
Messages : 135
Enregistré le : 16 déc. 2015, 19:42

Re: [Tasmota] un "autre" wattmètre connecté pour moins de 15€ + calcul HP/HC

Message par djksage » 02 juin 2019, 11:50

Voila TOUS fonctionne! Encore merci pour ton tuto ;) j'ai pas implémenté le scripte pour le bi-horaire, j'ai un simple compteur, il ne faut plus que le placer dans une belle boite pour faire propre :lol: et c'est parfait

Pour les semi-noob comme moi, si vous avez des erreurs de compil:
- Vérifiez que vous utilisez bien les bonnes lib (arduinoJson en 5.11.X)
- Effacez toutes les lib et ne mettez QUE celles fournis dans le .ZIP

djksage
Messages : 135
Enregistré le : 16 déc. 2015, 19:42

Re: [Tasmota] un "autre" wattmètre connecté pour moins de 15€ + calcul HP/HC

Message par djksage » 02 juin 2019, 17:23

Re,

est ce que chez toi les 3 capteurs virtuels sont considérer par domoticz comme à pile?

j'ai niveau signal entre 5 et 6 (sûrement le wifi) et batterie 45%

adv
Messages : 241
Enregistré le : 02 févr. 2016, 13:54
Contact :

Re: [Tasmota] un "autre" wattmètre connecté pour moins de 15€ + calcul HP/HC

Message par adv » 05 juin 2019, 09:43

Salut, déjà merci d'avoir confirmé que tout fonctionnait !

Perso je n'ai pas eu à me soucier du premier point (par "chance" j'ai la 5.11.2 installée) et puis je n'ai pas eu de problème en copiant-collant les libs sans supprimer celles d'origine mais bon t'manière y'a trop souvent des c***** si tu débarque un peu dans le monde arduino/studio code/atom et plateformio tu peux trèèèèèès vite être découragé pour compiler un firmware perso !

Passons...

Je suis à 5 en signal et 39 en batterie !

Je vais regarder si je trouve à quoi cela correspond.

A+

EDIT:
en effet le signal est bien proportionnel au RSSI
et batterie est proportionnel au VCC mesuré par l'ESP
Raspberry pi 3 - Domoticz beta | Piface v.2 + Téléinfo + RFXtrx433E + Aeon Z-Wave+GEN5
sondes Oregon | motorisations Somfy Yslo Flex 2 RTS | prises chacon | Fibaro FGD-212, FGSD002, FGFS101 | Sonoff easyESP, Tasmota, Espurna | Sherlock S2 | ParadoxMG5050

Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


Répondre