FHEM Forum

Verschiedenes => Bastelecke => ESP Familie => Thema gestartet von: DerD am 11 Oktober 2025, 13:55:48

Titel: Mittelwertbildung im Tasmota scripting für SML
Beitrag von: DerD am 11 Oktober 2025, 13:55:48
Hi zusammen,

ich habe für einen ESP32-C3 Tasmota 15.0.1 inklusive Scripting kompiliert um SML meiner PV auszulesen. Das funktioniert soweit mit dem folgenden Standardscript für meinen Landis + Gyr E320.

>D
>B
=>sensor53 r
>M 1
+1,4,s,20,9600,E320
1,77070100020800ff@1000,Total Delivered,kWh,Total_out,3
1,77070100010800ff@1000,Total Consumed,kWh,Total_in,3
1,77070100100700ff@-1,Current power,W,Power_in,0
1,77070100600100ff@#,Server-ID,,Meter_Number,0   
#

Gesendet wird über MQTT alle 300s wie in der Telemetrie eingestellt.

Ausgelesen werden die Daten vom Smartmeter im Sekundentakt und auch im Tasmota Webinterface aktualisiert. Nun möchte ich aber nicht alle 5min den aktuellen Leistungswert schicken, sondern den Mittelwert der letzten 5 Minuten.
Jede Sekunde die Daten verschicken und in FHEM dann glätten ginge zwar, finde ich aber nicht ganz so hübsch ;)

Hier (https://forum.fhem.de/index.php?topic=111873.msg1231419#msg1231419) hat Ralf etwas in die Richtung "Rechnen im Script" erwähnt, schlau werde ich allerdings nicht daraus, und auch nicht so recht aus den Beispielen in der Tasmota scripting Beschreibung (https://tasmota.github.io/docs/Scripting-Language/).

Wäre toll, wenn mir da jemand einen hilfreichen Tipp geben könnte

----------
Edit: link korrigiert
Titel: Aw: Mittelwertbildung im Tasmota scripting für SML
Beitrag von: Gisbert am 11 Oktober 2025, 16:38:59
Ich lese interessiert mit und bin auf die Lösung gespannt, die ich auch gut gebrauchen kann.
Titel: Aw: Mittelwertbildung im Tasmota scripting für SML
Beitrag von: DerD am 11 Oktober 2025, 19:44:21
 Ich glaube, ich habe sogar 2 Lösungen:
- Hier (https://forum.fhem.de/index.php?topic=132620.15) die existierende von Leuten die sicher mehr Ahnung von der Materie haben wie ich. Leider erst gesehen, als meines halbwegs lief
- mein script, zu dem zu erwähnen ist: ich weiß noch nicht, wie das bei realen Werten läuft, derzeit liefert die PV nur Null Watt, nicht dass der moving-average speichermäßig Probleme macht. Und die Mittelwerte werden aktuell noch bewusst parallel zu den über die Telemetrie eingestellten Periode gesendet.
Möglicherweise nicht Bug-frei, also falls jemand einen findet, wäre ich sicher nicht böse.

>D 48
pow=0
; moving average for 300 seconds
M:mpow=0 300
>B
=>sensor53 r
>T
; get sensor values
pow=sml[3]
>S
; average sensor values every second
mpow=pow
; write average to sensor log every 5 minutes
if upsecs%300==0
then
; send MQTT
=>Publish tele/%topic%/SENSOR {"Script":{"avPower":%0mpow%}}
endif
>M 1
+1,4,s,20,9600,E320
1,77070100020800ff@1000,Total Delivered,kWh,Total_out,3
1,77070100010800ff@1000,Total Consumed,kWh,Total_in,3
1,77070100100700ff@-1,Current power,W,Power_in,0
1,77070100600100ff@#,Server-ID,,Meter_Number,0   
#
Titel: Aw: Mittelwertbildung im Tasmota scripting für SML
Beitrag von: Gisbert am 12 Oktober 2025, 00:33:22
Hallo Dieter,

ChatGPT war nicht sonderlich hilfreich, teilweise richtig falsch - bis auf eine Kleinigkeit, die besser gelöst wurde. Wenn man den publish-Befehl so schreibt:
=>Publish tele/%topic%/curr_w_avg %mpow%dann wird der gemittelte Wert direkt in das Reading geschrieben.

Mein Script sieht insgesamt so aus, wobei die Teleperiod auch auf 300 gesetzt wurde:
>D
pow=0
; moving average
M:mpow=0
>B
=>sensor53 r
>T
; get sensor values
pow=sml[1]
>S
; average sensor values every second
mpow=pow
; write average to sensor log every 5 minutes
if upsecs%300==0
then
; send MQTT
=>Publish tele/%topic%/curr_w_avg %mpow%
endif
>M 1
+1,3,s,0,9600,PICUS
1,77070100100700ff@1,Consumption (current),W,curr_w,0
1,77070100010800ff@1000,Consumption (total),Kwh,total_kwh,4
1,77070100020800ff@1000,Feed (total),Kwh,total_kwh_out,4
#
Ich hoffe, dass ich damit der Datenflut Herr werde, ohne dass die Qualität darunter leidet. Ich werde berichten, wenn ich was nennenswertes rausgefunden habe.
 
Viele Grüße Gisbert
Titel: Aw: Mittelwertbildung im Tasmota scripting für SML
Beitrag von: DerD am 12 Oktober 2025, 09:35:12
Meine Erfahrung mit ChatGPT in Bezug auf tasmota Scripting: taugt nichts. Zumindest nicht wenn's man keine Ahnung hat und meint es allein machen lassen zu können. Bei jeder Fehlermeldung kommt ein ,,klar, habe jetzt verstanden" um mit der Änderung in neue Fehler zu laufen. Hatte versucht, per Script den RSSI als Feedback auf eine W2812 auszugeben. Ein Vormittag für nichts.

Bezüglich obigem Vorschlag: ich werde meinen beibehalten, damit kann ich das Reading gezielt an meine bisherigen anpassen, ohne Logs und Charts ändern zu müssen.

Die Werte sehen auch bei Tags gut aus, obwohl er im Dauergrau wenig zu Mitteln hat ;)
Titel: Aw: Mittelwertbildung im Tasmota scripting für SML
Beitrag von: DasQ am 12 Oktober 2025, 12:14:57
Das ist bei mir jetzt etwas her, drum kann ich dir da keine löffelfertige Lösung liefern.

Aber, schau doch mal einfach Hier (https://ottelo.jimdofree.com/)

Diese tasmota Lösung hat von Haus aus, etliches mehr an Script.

Geht es um eine nulleinspeisung, empfehle ich mal nach zeroexport script zu suchen. Das läuft zwar eigenständig, sollte aber viel mehr machen als du willst