Regelmäßig Ausreißer (Wert statt Differenz) bei Tasmota Energie

Wenn man das Wlan ausschließen kann, könnte es auch an der Stromversorgung liegen. Damit hatte ich anfangs auch Probleme. Ich habe mir dann ein Raspi-Netzteil besorgt und dann war Ruhe. In der Info siehst du aber wie lange Tasmota schon am Stück läuft.

Bei mir sind es jetzt nur fünf Minuten, weil ich am experimentieren bin. Aber vorher stand da über 40 Tage, also seit dem letzten Update.

Das funktioniert nicht, in dem Moment wo die Umwandlung aus irgendeinem Grund fehlschlägt bekommst du 6900+56120,32 = 63020,32 als Wert

Dann funktionieren diese ganzen if elif else Skripte, die hier / woanders kursieren, aber alle nicht, denn die enthalten alle ein float(fester Wert).

63020,32 ist dann immer noch besser als 0 mit float(0). Wobei das “Zähler zurücksetzen”, also den Wert von float eintragen, eh immer nur passiert ist, als ich beim Testen des neuen Scripts die Konfiguration neu geladen habe. Wenn es da nicht “genullt” wird, dann gar nicht.

Aber ich gebe euch Recht, die einzig wirklich saubere Variante wäre für den Tasmota das Abfangen in dessen Skript (da bin ich jetzt dran, es zu testen), und ansonsten die Umstellung auf Verbrauchszähler, oder vielleicht (und damit jetzt nach der Laufzeit einfacher umzusetzen) das mit einem Parameter für outlier in der Sensor-Config.

Ich habe das Skript nun mal so ergänzt:

>D
>B
->sensor53 r
smlj=0
>S
if (sml[63035]>0) {
smlj=1
}
>M 1
+1,5,s,0,9600,M60,4
1,=soC,1024,0
1,77070100010800ff@1000,Verbrauch,kWh,E_in,3
1,77070100020800ff@1000,Einspeisung,kWh,E_out,3
1,77070100100700ff@1,akt. Leistung,W,Power,0
1,77070100240700ff@1,Leistung_L1,W,power_L1,0
1,77070100380700ff@1,Leistung_L2,W,power_L2,0
1,770701004c0700ff@1,Leistung_L3,W,power_L3,0
#

und den Bitshake Smartmeterreader neu gestartet. [63035] ist der Gesamtertrag, seit der Reader misst + alles davor. Die Leistungswerte bei Einspeisung sind negativ (waren sie immer) und M50 Einspeisung = 6917,670 kWh. am Gesamtwert im Reader hat sich also nichts verändert, aber das sollte wahrscheinlich auch nicht, wobei dann vermutlich [63035] falsch ist und [6907] sein müsste, also der Zählerstand des Readers minus 10?

Der Gesamtertrag, den HA anzeigt, ist durch die Skriptanpassung wenig überraschend nicht verändert, weil der Reader ja noch immner denselben Zählerstand meldet.

Das funktioniert nicht.
smlj 0 ist die anweisung an tasmota nichts zu senden
sml[1] ist der Index der Zeilen im script

wenn sml[1] einen wert > 0 hat wird die Ausgabe in Mqtt von Tasmota angeschaltet.

Dein Script hat sicher keine 63000 Zeilen :slight_smile:

Versuch es mal hiermit:

>D
>B
->sensor53 r
smlj=0
>S
if (sml[1]>0) {
smlj=1
}
>M 1
+1,5,s,0,9600,M60,4
1,77070100010800ff@1000,Verbrauch,kWh,E_in,3
1,77070100020800ff@1000,Einspeisung,kWh,E_out,3
1,77070100100700ff@1,akt. Leistung,W,Power,16
1,77070100240700ff@1,Leistung_L1,W,power_L1,0
1,77070100380700ff@1,Leistung_L2,W,power_L2,0
1,770701004c0700ff@1,Leistung_L3,W,power_L3,0
1,=soC,1024,0
#

So werden nur Werte per Mqtt gesendet wenn der Gesamtbezug > 63030kWh ist. Also nur wenn Werte da sind.

Die 63000 sind ein errechneter Wert den hat er nicht im bitshake

Ach so, dann soll er mal die Ausgabe vom Webif schicken. Also so was.:

Habe mich schon über den hohen Zählerstand gewundert.

Habe das Script oben noch mal geändert. Jetzt ist der Zählerstand egal, Hauptsache >0.

Das wäre das Hauptmenü vom Tasmota

Also könnte ich im Script auch >6910 setzen, richtig?

Lass es so wie in meinem Beispiel oben. Das sollte funktionieren. Ich habe es auch so und schon seit mindestens drei Jahren keine Ausreißer mehr. Solltest du in HA dennoch welche haben, kannst du zumindest den Bitshake ausschließen.

1 „Gefällt mir“

Wie muss ich das Skript anpassen, wenn bei meinem 2. Bitshake in beide Richtungen gemessen wird, oder bleibt das trotzdem gleich?

Der Energieverbrauch zählt ja immer hoch. Deswegen bleibt es gleich. Du kannst ja das Script von deinem zweiten Bitshake auch mal hier einstellen. Dann schau ich mir das auch mal an. Es geht ja darum, das bei einem Reboot nicht gesendet wird solange keine Werte da sind. Normalerweise schickt der Bitshake beim Reboot nur Nullen. Danach schickt er die realen Werte. HA sieht die Nullen, dann den realen Wert und rechnet dann die Differenz auf den letzten logischen Wert. Wenn das mehrmals am Tag vorkommt, kommen da manchmal Summen zusammen, die du kaum noch beherrschen kannst, so wie in deinem Fall. Die kleine Anpassung im Script verhindert einfach nur das Tasmota sendet solange der Wert nicht größer als 0 ist.

Ok. Die beiden Bitshake sind identisch und haben deshalb auch dasselbe Skript, das jetzt so aussieht:

>D
>B
->sensor53 r
smlj=0
>S
if (sml[1]>0) {
smlj=1
}
>M 1
+1,5,s,0,9600,M60,4
1,=soC,1024,0
1,77070100010800ff@1000,Verbrauch,kWh,E_in,3
1,77070100020800ff@1000,Einspeisung,kWh,E_out,3
1,77070100100700ff@1,akt. Leistung,W,Power,0
1,77070100240700ff@1,Leistung_L1,W,power_L1,0
1,77070100380700ff@1,Leistung_L2,W,power_L2,0
1,770701004c0700ff@1,Leistung_L3,W,power_L3,0
#

Damit sollte das passen. Danke für die Hilfe.

1 „Gefällt mir“

Da du nicht mit Verbrauchszählern arbeitest musst du trotzdem noch die unavaible Meldung
bei Neustart von HA abfangen.

Da passiert in der Praxis nichts, da ich abfange, dass Werte, die mehr als 0,5 differieren, eingetragen werden.

BTW ist mir das mit den Verbrauchszählern nach einem ersten Test noch suspekt. Das ist entweder eine Hokuspokus-Blackbox, oder da funktioniert bei mir irgendwas nicht.