[Gelöst] Tasmota SML/OBIS (Smartmeter Interface) Events via MQTT

Begonnen von rubinho, 25 April 2022, 21:45:08

Vorheriges Thema - Nächstes Thema

rubinho

Hallo Zusammen,

ich habe mir vor kurzem zwei SML/OBIS Wifi-Leseköpfe von Hichi gekauft.
Die Software der Leseköpfe basiert auf Tasmota (ESP-01s).

Nun möchte ich die Leistungswerte mittels MQTT an Fhem übermitteln, was auch funktioniert.
Aber leider werden die Werte nur periodisch via MQTT übermittelt und nicht per Eventtrigger. Also eine Übertragung wenn sich ein Wert ändert.
Ich habe die Zeit zwar auf 10 Sekunden runtergeschraubt, aber mir wäre es lieber wenn eine Übermittlung nur bei Änderung eines Wertes initiiert wird.

Ich kenn mich mit Tasmota nicht wirklich aus und tue mir anscheinend etwas schwer damit, aber ich meine gelesent zu haben, dass es mit Rules bzw. in meinem Fall mit einem Script möglich wäre, einen Event zu triggern.

Kennt sich jemand mit Tasmota etwas besser aus als ich  :-[

Wichtig wäre hauptsächlich der Wert consumption.

Hier mein vorandenes Script für meinen PV Zähler von Hager.
>B 
->sensor53 r
>M 1 
+1,3,o,0,9600,OBIS 
1,1-0:32.7.0*255(@1,Voltage L1,V,Volt_p1,1
1,1-0:52.7.0*255(@1,Voltage L2,V,Volt_p2,1
1,1-0:72.7.0*255(@1,Voltage L3,V,Volt_p3,1
1,1-0:31.7.0*255(@1,Amperage L1,A,Amperage_p1,1
1,1-0:51.7.0*255(@1,Amperage L2,A,Amperage_p2,1
1,1-0:71.7.0*255(@1,Amperage L3,A,Amperage_p3,1
1,1-0:21.7.0*255(@1,consumption L1,W,Watt_p1,1
1,1-0:41.7.0*255(@1,consumption L2,W,Watt_p2,1
1,1-0:61.7.0*255(@1,consumption L3,W,Watt_p3,1
1,1-0:2.8.1*255(@1,Total Feed,KWh,Total_out,4 
1,=m 7+8*#-1 @1,Current consumption,W,Power_curr,1 
1,1-0:0.0.0*255(@#),Meter Nr,, Meter_number,0 
#


Vorab danke.

Gruß
Rubinho
Fhem 5.9@Zotac Zbox Ci327 | HMCCU | Z-Wave@ZMEEUZB1 | HUE Bridge Gen2 | knxd over IP

Otto123

#1
Hi,

Du meinst PowerDelta? So ist das zumindest typischerweise bei den Tasmota basierten Leistungsmesser.
https://tasmota.github.io/docs/Commands/#power-monitoring

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

rubinho

Hallo Otto,

ich denke das ist es nicht.

Als Beispiel hab ich hier ein Beitrag in einem anderen Forum, allerdings verstehe ich nur Trainstation :D

https://www.loxforum.com/forum/german/software-konfiguration-programm-und-visualisierung/228511-tasmota-sendet-mqtt-nur-periodisch-nicht-nach-zustands%C3%A4nderung

Rules sind in meinem Fall aber deaktiviert, da ich Scripts aktiv habe. Aber sowas kann man auch per Scripts realisieren... glaube ich.
Wie gesagt, was Tasmota angeht, da bin ich ein absoluter Neuling. Es ist zwar viel dokumentiert, aber ein passendes Beispiel von dem ich es ableiten kann, fehlt mir.
Fhem 5.9@Zotac Zbox Ci327 | HMCCU | Z-Wave@ZMEEUZB1 | HUE Bridge Gen2 | knxd over IP

Otto123

Ja ich lag falsch, das was Du hast ist spezieller. Aber schau mal hier:
https://tasmota.github.io/docs/Smart-Meter-Interface/#special-commands
Und suche nach teleperiod - es gibt verschiedene Stellen wo Parameter für Sofortübertragung gesetzt werden können.
Hinweis: Teleperiod ist die zyklische, zeitgesteuerte Übertragung, die Du jetzt auf 10 sec hast.
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

rubinho

Ok, geschafft.

Mit dem Script pushe ich die Änderungen direkt per Mqtt und das ist so viel, dass ich es in Fhem wieder einschränken muss  ;D

Danke Otto für deine Bemühungen.

Gruß
rubinho

>D
v1=0
v2=0
v3=0
>B
->sensor53 r
>M 1
+1,3,s,0,9600,EHZ
1,77070100100700ff@1,Aktuell,W,Power_curr,0
1,77070100010800ff@1000,Zählerstand Verb.,kWh,b_t0,4
1,77070100010801ff@1000,Zählerstand Verb.T1,kWh,b_t1,4
1,77070100010802ff@1000,Zählerstand Verb.T2,kWh,b_t2,4
1,77070100020800ff@1000,Zählerstand Einsp.,kWh,e_t0,4
1,77070100020801ff@1000,Zählerstand Einsp.T1,kWh,e_t1,4
1,77070100020802ff@1000,Zählerstand Einsp.T2,kWh,e_t2,4
1,7707010060320101@#,Hersteller-Ident,,HI,1
1,77070100600100ff@#,Server ID,,ID,1
>T
v1=EHZ#Power_curr
v2=EHZ#b_t0
v3=EHZ#e_t0
>S

if v1!=0
then
=>publish stat/tasmota_ehz/RESULT {"EHZ_Power_curr":%0v1%}
endif

if v2!=0
then
=>publish stat/tasmota_ehz/RESULT {"EHZ_b_t0":%4v2%}
endif

if v3!=0
then
=>publish stat/tasmota_ehz/RESULT {"EHZ_e_t0":%4v3%}
endif
#
Fhem 5.9@Zotac Zbox Ci327 | HMCCU | Z-Wave@ZMEEUZB1 | HUE Bridge Gen2 | knxd over IP

choenig

Hi,

ich kenne mich auch noch nicht gut aus im Tasmota-Umfeld, aber folgendes könnte Dir Dein Script ersetzen:

Wenn du den <precision> wert um 16 erhöhst (so verstehe ich auf jeden fall die Doku), dann sendet er jede Änderung per MQTT.

Aus https://tasmota.github.io/docs/Smart-Meter-Interface/#meter-metrics:

<precision> number of decimal places. Add 16 to transmit the data immediately. Otherwise it is transmitted on TelePeriod only.

D.h. aus

1,77070100100700ff@1,Aktuell,W,Power_curr,0


wird

1,77070100100700ff@1,Aktuell,W,Power_curr,16


Das löst aber leider nicht Deine ursprüngliche Frage.

LG
Christian

rubinho

@choenig
Vielen Dank !

Wer lesen kann ist eindeutig im Vorteil  ;D

Damit reduziert sich das Script um ein Vielfaches und die Werte werden trotzdem direkt übermittelt.

>D
>B
->sensor53 r
>M 1
+1,3,s,0,9600,EHZ
1,77070100100700ff@1,Aktuell,W,Power_curr,16
1,77070100010800ff@1000,Zählerstand Verb.,kWh,b_t0,4
1,77070100010801ff@1000,Zählerstand Verb.T1,kWh,b_t1,4
1,77070100010802ff@1000,Zählerstand Verb.T2,kWh,b_t2,4
1,77070100020800ff@1000,Zählerstand Einsp.,kWh,e_t0,4
1,77070100020801ff@1000,Zählerstand Einsp.T1,kWh,e_t1,4
1,77070100020802ff@1000,Zählerstand Einsp.T2,kWh,e_t2,4
1,7707010060320101@#,Hersteller-Ident,,HI,0
1,77070100600100ff@#,Server ID,,ID,0
#
Fhem 5.9@Zotac Zbox Ci327 | HMCCU | Z-Wave@ZMEEUZB1 | HUE Bridge Gen2 | knxd over IP