NEWS
Stromzähler per Sonoff ESP8266 auslesen
-
Hallo zusammen erstmal an das Forum!
Ich bin fleissiger Leser und hab schon solch manch brauchbare Info hier gefunden!
Jetzt komme ich nicht weiter und denke, dass ich hier richtig aufgehoben bin.
Ich versuche, mit tasmota meinen smarten Stromzähler auszulesen.
Das klappt auch gut über das Webinterface.
Jedoch sind für meine Anwendung die mqtt-Daten interessanter. Diese werden jedoch von dem ESP8266 nur nach einem Neustart aktualisiert bzw. bereitgestellt.C:\Program Files (x86)\mosquitto>mosquitto_sub -h 192.168.1.133 -t tasmota/#
{"ip":"192.168.1.31","dn":"Tasmota","fn":["Tasmota",null,null,null,null,null,null,null],"hn":"tasmota_0DF0CF-4303","mac":"4417930DF0CF","md":"Generic","ty":0,"if":0,"ofln":"Offline","onln":"Online","state":["OFF","ON","TOGGLE","HOLD"],"sw":"9.2.0.3","t":"tasmota_0DF0CF","ft":"%prefix%/%topic%/","tp":["cmnd","stat","tele"],"rl":[0,0,0,0,0,0,0,0],"swc":[-1,-1,-1,-1,-1,-1,-1,-1],"swn":[null,null,null,null,null,null,null,null],"btn":[0,0,0,0],"so":{"4":0,"11":0,"13":0,"17":0,"20":0,"30":0,"68":0,"73":0,"82":0,"114":0},"lk":1,"lt_st":0,"sho":[0,0,0,0],"ver":1}
{"sn":{"Time":"2022-07-30T10:13:46","SML":{"Total_in":61.6,"Total_out":677.6891,"Power_curr":-1191,"Volt_p1":235.4,"Volt_p2":234.9,"Volt_p3":235.8,"Ampere_p1":1.66,"Ampere_p2":1.73,"Ampere_p3":1.93,"frequency":49.9}},"ver":1}
{"ip":"192.168.1.118","dn":"Tasmota","fn":["Tasmota",null,null,null,null,null,null,null],"hn":"tasmota_0D4704-1796","mac":"4417930D4704","md":"Generic","ty":0,"if":0,"ofln":"Offline","onln":"Online","state":["OFF","ON","TOGGLE","HOLD"],"sw":"9.2.0.3","t":"tasmota_0D4704","ft":"%prefix%/%topic%/","tp":["cmnd","stat","tele"],"rl":[0,0,0,0,0,0,0,0],"swc":[-1,-1,-1,-1,-1,-1,-1,-1],"swn":[null,null,null,null,null,null,null,null],"btn":[0,0,0,0],"so":{"4":0,"11":0,"13":0,"17":0,"20":0,"30":0,"68":0,"73":0,"82":0,"114":0},"lk":1,"lt_st":0,"sho":[0,0,0,0],"ver":1}
{"sn":{"Time":"2022-07-30T20:13:39","SML":{"Total_in":63.1,"Total_out":686.0649,"Power_curr":161,"Volt_p1":233.9,"Volt_p2":234.9,"Volt_p3":234.8,"Ampere_p1":0.70,"Ampere_p2":0.71,"Ampere_p3":0.86,"frequency":50.0}},"ver":1}Da für gewöhnlich das Problem eher vor dem Bildschirm sitzt: Hat jemand einen Rat für mich, wo ich da den Bock drinnen habe?
Bei Tasmota unter Logging habe ich schon diverse Telemetry-Periods getestet, alles ohne Erfolg ;-( .
Viele Grüße
Torsten -
@henni774 Mal abgesehen davon das du auf einer uralten Version von Tasmota unterwegs bist wäre es noch recht schön wenn du die Ausgabe in Code Tags packen würdest die man dann besser lesen kann.
Was steht in den Einstellungen unter "Telemetrieperiode" (Bei Logging der unterste Punkt)?
-
@chaot
Vielen Dank für Deine Antwort.
Bei den Einstellungen unter Telemetrieperiode habe ich aktuell 30, habe aber auch schon 10, 100 und 300 probiert.
Mein Script schaut so aus (ich hoffe, das passt so mit der Darstellung) :>D >B ->sensor53 r >M 1 +1,4,s,16,9600,SML 1,77070100010800ff@1000,Bezug Gesamt,kWh,Total_in,1 1,77070100020800ff@1000,Einspeisung,kWh,Total_out,4 1,77070100100700ff@1,Aktueller Verbrauch,W,Power_curr,16 1,77070100200700ff@1,Volt P1,V,Volt_p1,1 1,77070100340700ff@1,Volt P2,V,Volt_p2,1 1,77070100480700ff@1,Volt P3,V,Volt_p3,1 1,770701001f0700ff@1,Ampere P1,A,Ampere_p1,2 1,77070100330700ff@1,Ampere P2,A,Ampere_p2,2 1,77070100470700ff@1,Ampere P3,A,Ampere_p3,2 ;1,77070100510704ff@1,Phaseangle I-L1/U-L1,deg,phase_angle_p1,1 ;1,7707010051070fff@1,Phaseangle I-L27I-L2,deg,phase_angle_p2,1 ;1,7707010051071aff@1,Phaseangle I-L3/I-L3,deg,phase_angle_p3,1 1,770701000e0700ff@1,Frequenz,Hz,frequency,1 #
Die Datenabfrage dann so:
C:\Program Files (x86)\mosquitto>mosquitto_sub -h 192.168.1.133 -t tasmota/#
-
Eigenartiger Weise sind die Daten auf der Weboberfläche gefühlt sekündlich aktuell. Über mqtt kommen immer nur die Daten nach dem letzten Neustart des ESP.
Grüße
Torsten -
@henni774
Hast du JSON Export aktiviert?#ifndef USE_SML_M #define USE_SML_M #endif #ifndef USE_SML_SCRIPT_CMD #define USE_SML_SCRIPT_CMD #endif #ifndef USE_SCRIPT_WEB_DISPLAY #define USE_SCRIPT_WEB_DISPLAY #endif #ifndef USE_SCRIPT_JSON_EXPORT #define USE_SCRIPT_JSON_EXPORT #endif
Das dann im Script dazu:
>J ,"Verbrauch Tag":"%sd%" ,"Verbrauch Monat":"%smn%" ,"Verbrauch Jahr":"%syn%" ,"Zählerstand 0:00Uhr":"%2sm%" ,"Zählerstand Monatsanfang":"%2sma%" ,"Zählerstand Jahrenanfang":"%2sya%" ,"Kosten dieses Jahr":"%2yspr%"
Soweit ich mich erinnere habe ich das für MQTT gebraucht.
-
@chaot
Oh, ich glaube, das könnte zielführend werden, danke schön!
Wo führe die Aktivierung des JSON Exports durch? -
@henni774 Noch was gemerkt:
Bei mir läuft web log level auf "2"
Dann siehst du zumindest in der Konsolenansicht ob dort aktualisiert wird.Geh auch mal mit der Tasmotaversion auch über 10. Da gab es gerade bei den Scripts einige Veränderungen.
-
@henni774
Die Aktivierungen musst du beim Erstellen der Firmware angeben. Du hast ja auch SML aktiviert. Also in der userconfig -
@chaot
Besten Dank, ich werd mich da nachher mal drum kümmern -
@chaot
Hallo Chaote, bin jetzt auf Tasmota 12.0, Json Export ist drin. Aber derzeit ohne Besserung - die mqtt-Daten kommen nur einmal nach dem Neustart.
Wobei ich zu mqtt im Scipt nichts drinnen habe. Erklärt sich mir nicht, warum er dann am Anfang sendet ... .
Es ist zum Mäuse melken ... das aber erscheint mir komisch (kommt aus der Konsole):17:17:44.424 MQT: tele/tasmota_0D4704/STATE = {"Time":"2022-07-31T17:17:44","Uptime":"0T00:15:40","UptimeSec":940,"Heap":20,"SleepMode":"Dynamic","Sleep":50,"LoadAvg":25,"MqttCount":1,"Wifi":{"AP":1,"SSId":"o2-WLAN08","BSSId":"B0:EA:BC:FE:2C:A3","Channel":11,"Mode":"11n","RSSI":96,"Signal":-52,"LinkCount":1,"Downtime":"0T00:00:04"}}
Der mqtt-Zähler steht und bleibt auf 1 ....
Hier mal die user_config:
#ifndef _USER_CONFIG_OVERRIDE_H_ #define _USER_CONFIG_OVERRIDE_H_ #ifndef USE_SCRIPT #define USE_SCRIPT //# adds about 17k flash size, variable ram size #endif #ifdef USE_RULES #undef USE_RULES #endif #define USE_SML_M #undef STA_SSID1 #define STA_SSID1 "o2-WLAN08"// [Ssid1] Wifi SSID #undef STA_PASS1 #define STA_PASS1 "********" // [Password1] Wifi password #undef MQTT_HOST #define MQTT_HOST "192.168.1.133" // [MqttHost] #undef MQTT_PORT #define MQTT_PORT 1883 // [MqttPort] MQTT port (10123 on CloudMQTT) #undef MQTT_USER #define MQTT_USER "" // [MqttUser] Optional user #undef MQTT_PASS #define MQTT_PASS "" // [MqttPassword] Optional password #define USE_SCRIPT_WEB_DISPLAY #define USE_SCRIPT_JSON_EXPORT #define USE_EXPRESSION #define SUPPORT_IF_STATEMENT #ifndef USE_SML_SCRIPT_CMD #define USE_SML_SCRIPT_CMD #endif #endif
-
Oha, ich habs ....
-
Ich hab den Scriptaufruf völlig ignoriert, jetzt läufts ...
=>publish %topic% %e%;%p%;%s%
Vielen vielen Dank nochmal für die Hilfe.
TorstenPS: Wiedermal saß das Problem vor dem Bildschirm .... .
-
@m4
Hallo M4,
ich möchte über einen WT32-ETH01 und eine Hichi-Lesekopf meinen Stromzähler per SML auslesen.
Arbeiten soll das Ganze über LAN, da kein ausreichender Empfang per WLAN im Sicherungskasten vorhanden ist.
Diese Konstellation scheinst Du ja auch zu nutzen.
Jetzt zu meinem Problem: Egal wie ich das bin-File für den ESP32 auch compiliere (TasmoCompiler, Tasmota Installer oder über Visual Studio Code),
es funktioniert immer nur entweder Ethernet oder Script (SML). Es gelingt mir nicht beides zu Laufen zu bringen.
Wie hast Du das denn geschafft ? Kannst Du mir vielleicht eine nachvollziehbare Lösung nennen ?
Ich wäre wirklich dankbar dafür...
Hugo -
Hi zusammen. Danke an alle, für die wirklich gute Unterstützung und Anregung für's Scripten.
Ich bräuchte bitte Hilfe, da ich irgendwie ein Problem habe die Autarkie meiner PV Anlage mit Speicher in das Script zu bringen.
So schaut die Auswertung momentan aus.Wäre schön, wenn jemand eine Idee zur Formel hat und umsetzen könnte für das Script. Danke ...
Hier noch mein Script.
>D rssi=0 s1="Tagesverbrauch: {m}<b><span style=>" v2=0 v3=0 sec=0 hr=0 md=0 yr=0 p:sm=0 sd=0 p:sme=0 sde=0 p:sma=0 p:smb=0 smn=0 smo=0 p:sya=0 p:syb=0 syn=0 syo=0 sspr=0.1993 ssps=0.086 yspr=0 ysps=0 yspt=0 ysgp=150.00 ystag=0 yetag=0 getmon=0 yemon=0 ysyear=0 setoff=72 >T v2=SML#Total_in v3=SML#Total_out rssi=Wifi#RSSI >B ->sensor53 r >S ;Tagesverbrauch hr=hours if chg[hr]>0 and hr==0 then sm=v2 sme=v3 svars endif if upsecs%tper==0 then sd=v2-sm sde=v3-sme endif ;Monatsverbrauch md=day if chg[md]>0 and hr==0 and md==1 then sma=v2 smb=v3 svars endif if upsecs%tper==0 then smn=v2-sma+setoff smo=v3-smb endif ;Jahresverbrauch yr=year if chg[yr]>0 and hr==0 and md==1 then sya=v2 syb=v3 svars endif if upsecs%tper==0 then syn=v2-sya+setoff syo=v3-syb endif ;Kosten ystag=sd*sspr yetag=sde*ssps getag=ystag-yetag yspr=syn*sspr+ysgp getmon=smn*sspr yemon=smo*ssps ysps=syo*ssps yspt=yspr-ysps ysyear=syn*sspr endif >J ,"Verbrauch Tag":"%sd%" ,"Einspeisung Tag":"%sde%" ,"Verbrauch Monat":"%smn%" ,"Einspeisung Monat":"%smo%" ,"Verbrauch Jahr":"%syn%" ,"Kosten pro Tag":"%2ystag%" ,"Ertrag pro Tag":"%2yetag%" ,"Kosten pro Monat":"%2getmon%" ,"Ertrag pro Monat":"%2yemon%" >W WLAN Empfang: {m}%rssi% dBm ============== Tagesverbrauch: {m} %2sd% KWh {m} %2ystag% € Tagesertrag: {m} %2sde% KWh {m} %2yetag% € Monatsverbrauch: {m} %2smn% KWh {m} %2getmon% € Monatsertrag: {m} %2smo% KWh {m} %2yemon% € Jahresverbrauch: {m} %2syn% KWh {m} %2ysyear% € Jahresertrag: {m} %2syo% KWh {m} %2ysps% € ============== Strom Bezug Preis/kWh: {m} %4sspr% € Strom Ertrag Preis/kWh: {m} %4ssps% € Strom Grundpreis: {m} %2ysgp% € -------------- Strom Bezug lfd. Jahr:{m} %2yspr% € Strom Ertrag lfd. Jahr:{m} %2ysps% € Strom Gesamtkosten lfd. Jahr:{m} %2yspt% € ============== Strom Zählerstände: aktuell: {m} %2v2% KWh 0:00 Uhr: {m} %2sm% KWh 0:00 UhrEins: {m} %2sme% KWh Monatsanfang: {m} %2sma% KWh MonatsanfangEins: {m} %2smb% KWh Jahresanfang: {m} %2sya% KWh ============== >M 1 +1,3,s,0,9600,SML 1,77070100010800ff@1000,Total Bezug,KWh,Total_in,4 1,77070100020800ff@1000,Total Ertrag,KWh,Total_out,4 1,77070100100700ff@1,Current ,W,Power_curr,0 #
-
Servus Zusammen,
wie bekommt Ihr den Tagesverbrauch, Monats.... und Strom Zählerstände zum laufen?
Bei mir werden nur die aktuellen Verbräuche angezeigt.
Habe natürlich die versch. "Extensions" in der override Datei hinzugefügt.
Muss man im Skript noch werte eintragen? Ausser dem Strompreis?
Wäre um jede Hilfe Dankbar!
Hier mal mein Script:>D rssi=0 s1="Tagesverbrauch: {m}<b><span style=>" v2=0 hr=0 md=0 yr=0 ;Strom p:sm=0 sd=0 p:sma=0 smn=0 p:sya=0 syn=0 sspr=0.304 yspr=0 ysgp=120 y€=0 >T v2=SML#Total_in rssi=Wifi#RSSI >B ->sensor53 r >S ;Tagesverbrauch hr=hours if chg[hr]>0 and hr==0 and v2>0 then sm=v2 svars endif if upsecs%tper==0 then sd=v2-sm ;Monatsverbrauch md=day if chg[md]>0 and hr==0 and md==1 and v2>0 then sma=v2 svars endif if upsecs%tper==0 then smn=v2-sma endif ;Jahresverbrauch yr=year if chg[yr]>0 and hr==0 and md==1 and v2>0 then sya=v2 svars endif if upsecs%tper==0 then syn=v2-sya ;Kosten yspr=syn*sspr+ysgp endif >J ,"Verbrauch Tag":"%sd%" ,"Verbrauch Monat":"%smn%" ,"Verbrauch Jahr":"%syn%" ,"Zählerstand 0:00Uhr":"%2sm%" ,"Zählerstand Monatsanfang":"%2sma%" ,"Zählerstand Jahrenanfang":"%2sya%" ,"Kosten dieses Jahr":"%2yspr%" >W WLAN Empfang: {m}%rssi% dBµV =============== Tagesverbrauch: {m} %2sd% kWh Monatsverbrauch: {m} %2smn% kWh Jahresverbrauch: {m} %2syn% kWh =============== Strom Preis/kWh: {m} %4sspr% € Strom Grundpreis: {m} %2ysgp% € --------------- Strom kosten lfd. Jahr:{m} %2yspr% € =============== Strom Zählerstände: aktuell: {m} %2v2% kWh 0:00 Uhr: {m} %2sm% kWh Monatsanfang: {m} %2sma% kWh Jahresanfang: {m} %2sya% kWh =============== >M 1 +1,3,s,0,9600,,1 1,77070100010800ff@1000,Zählerstand,kWh,Total_in,2 1,77070100020800ff@1000,Einspeisung,kWh,Total_out,2 1,77070100100700ff@1,Stromverbrauch,W,Power_curr,0 1,77070100100700ff@1000,Aktuell,kW,Actual_pow,3 1,=h===============| 1,77070100200700ff@1,Spannung L1,V,Volt_p1,1 1,77070100340700ff@1,Spannung L2,V,Volt_p2,1 1,77070100480700ff@1,Spannung L3,V,Volt_p3,1 1,=h===============| 1,770701001f0700ff@1,Strom L1,A,Ampere_p1,1 1,77070100330700ff@1,Strom L2,A,Ampere_p2,1 1,77070100470700ff@1,Strom L3,A,Ampere_p3,1 1,=h===============| 1,770701000e0700ff@1,Netzfrquenz,Hz,Freq,1 1,=h===============| #
-
Ich hätte eine Frage, ich habe den WIFI-Lesekopf soweit installiert, und bekomme auch Werte in IOBROKER via MQTT gesendet. Allerdings kommen die Werte in IOBROKER nur alle 5 Minuten an. Kann man den Wert irgendwie verändert dass diese so alle Minute an IOBROKER via MQTT gesendet werden?
-
@bernd78 Das stellst du bei Tasmota ein unter:
Einstellungen - Logging - Telemetrieperiode.
Bei mir steht da 10 für 10 Sekunden. Original steht da 300 für 300 Sekunden = 5 Minuten -
@MICHAEL BRUNNER
Hallo,
Ich hatte auch versucht die Werte für die Zählerstände des Monats- /Jahresanfang irgendwo im script file zu hinterlegen.
Habe allerdings nicht die passenden Stellen gefunden.Letzendlich habe ich die Werte für die Zählerstände am Monats- /Jahresanfang über die normale Tasmota-Console gesetzt.
;JAHRESANFANGSZÄHLERSTAND via Console setzen!
script >sya=xxxxxxx;MONATSANFANGSZÄHLERSTAND via Console setzen!
script >sma=yyyyyyyDanach noch ein reboot und sobald neue Daten rein kommen werden auch der Monats- und Jahres-Verbrauch berechnet.
-
@da_ba_bw hallo, ist bei deiner Nachfrage an die Stadtwerke was herausgekommen? Habe ebenfalls einen Smartmeter verbaut bekommen mit deaktivierten Funktionen im Menü. Alle 120 Sekunden schaltet er wieder auf den reduzierten Datensatz zurück.
-
@marc_el_k Ja das war erfolgreich. Da ist gleich einer mit dem Laptop vorbei gekommen und hat mir kostenlos die PIN-Abfrage deaktiviert und alle verfügbaren Daten auf der Info-Schnittstelle freigeschaltet.