D0 Zähler SML auslesen mit Tasmota

  • Dann werde ich vorerst mal auf den alten Speicher verzichten müssen.

    Nach Ottelos tollen Seite bin ich bis 4e gekommen.

    Polarität, Durchgang und Position geprüft.

    Bild von dort benutzt: https://docs.google.com/document/d/1ol…=h.wmjnqlqwy04h

    Als Script verwende ich das per Copy/Paste: Von Gemu und habe den Descriptor auf meinen Zähler angepasst.

    +1,44,s,16,9600,SML 44 ist hier der UART RX GPIO

    Unter Module ist dort None eingetragen. In Template steht dort User. In Other wird der Wert 1 benutzt.

    Aber leider führt ein sensor53 d1 nur das zu Tage:

    09:57:19.861 CMD: sensor53 d1
    09:57:19.864 RSL: RESULT = {"Time":"2025-08-29T09:57:19","SML":{"CMD":"dump: 1"}}

    Nun komme ich nicht mehr weiter....

    Einmal editiert, zuletzt von gnubbbel (29. August 2025 um 11:57)

  • So-da-le,

    Aktueller Stand: ESP S3 empfängt keine Daten. Habe auch mit verschiedenen Widerstandswerten experimentiert.

    Wutentbrannt einen D1Mini Pro mit der passenden Otello.bin tasmotizier-t, das Shelly Script händisch eingedampft und angepasst.

    Heute morgen angeschlossen -läuft8)

    Nur die einzelnen Phasen - Leistung (Spannung interessiert nicht) bekomme ich nicht decodiert.

    Edit: Gerade festgestellt das mein Zähler diese Daten nicht per IR preis gibt.

    Mein neues Script....

    2 Mal editiert, zuletzt von gnubbbel (30. August 2025 um 14:42)

  • Nun, es läuft so lala. Trotzdem vielen Dank für die Mühen mit der Software.

    Das Problem: Andauernd muss ich per App die Venus, per Aktualisieren, anschubsen sich die Daten vom ESP zu holen.

    Ich nutze den 1Phasen Modus (im obigen Script aktiviert) und wenn die Daten fließen werden diese auch richtig in der App angezeigt.

    Hier noch eine Consolen - Ausgabe:

    Habe ich da etwas falsch gemacht?

  • Bei einem 3-phasigen SM werden die beiden OBIS Codes 1.7.0 und 2.7.0 für die momentane, aggregierte Leistung des Bezugs und der Einspeisung ausgelesen.

    Wenn die Leistung einer PVA 3 kW gleich verteilt auf die 3 Phasen einspeist und ein EV auf einer Phase mit 1.8 kW Leistung geladen wird, liefert dieser SM gleichzeitig die Werte von 0.8 kW Bezugs- und 2 kW Einspeiseleistung.

    Mit OBIS 1.7.0 in sml[2] sowie 2.7.0 in sml[3] sowie dem special command des Smartmeter Interfaces mit Tasmota 15.0.1 für Arithmetik:

    1,=m 3-2 @1,sum Po - Pi = sP,kW,sP,0

    würde ich erwarten, dass sP den saldierten Wert von 1.2 kW liefern würde.

    Dies scheint jedoch nur so lange zu funktionieren, wie kein negatives Ergebnis entsteht. Danach gibt es keine Aktualisierung des letzten positiven Werts von sP mehr. Auch mit folgendem Versuch eines Offsets von 10 kW, bleibt das Problem bestehen.

    1,=m 3+#10000-2 @1,sum Po - Pi = sP,kW,sP0

    Es scheint, dass das Problem von der Subtraktion stammt, weil das folgende Beispiel mit der Addition funktioniert (jedoch ein sinnloses Ergebnis liefert):

    1,=m 3+2 @1,sum Po + Pi = sP,kW,sP,0

    Es wäre nützlich & erfreulich, wenn dieses Problem in einem nächsten Tasmota Release repariert werden könnte und das Resultat der Arithmetik auch einen negativen Wert annehmen dürfte.

    Anmerkung:
    Die Methode der Aggregation der Leistungen dieser beiden OBIS Codes wird nicht bei allen SM gleich angewandt. Die Mehrheit der SM saldiert diese so, dass nur entweder 1.7.0 oder 2.7.0 einen positiven Wert aufweist. Dies erscheint intuitiver, ist aber scheinbar nicht ganz korrekt?

    Gemäss Dokument Code Liste der OBIS Kennzahlen von edi@energy, Version 2.4, publizier unter http://www.bundesnetzagentur.de, gilt für 1.7. 0 und 2.7.0:

    Die Angaben: ∑ Li Wirk- / Blind- / Scheinleistung bedeuten: Summe über alle Phasen

    Oder ist dieses Dokument der BNA ist nicht präzise genug?
    Oder ist meine Interpretaion falsch?

  • Mal eine Frage in die Runde. In welchem Intervall sendet euer Zähler die Daten? Ich habe ein MT175 und laut Console (sensor53 d1) sendet meiner in keinem festen Intervall, sondern zwischen 1-4 Sekunden. Komischerweise sendet er in kürzeren Abständen bei höheren Leistungen (>1000W). Das ist sehr merkwürdig ...

    Man kann das auch gut via MQTT sehen. Dafür muss man natürlich die Daten sofort senden lassen, das geht mit einer 16 (keine Dezimalstelle) oder 17 (eine Dezimalstelle) am Ende der SML Zeile z.B:

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

  • Hallo ottelo ,

    ich hätte mal eine Frage zu einer Zeile im Script. Ist die Zeile, siehe Markierung im Screenshot, so richtig?

    Oder müsste es Request statt equest heißen. Da ich kein ITler bin, möchte ich einfach mal nachfragen. Mir ist das schon im Script von gemu2015 , das ich zur Zeit verwende, aufgefallen.

  • Moin,

    Im PV Forum komme ich mit dem Problem nicht weiter.

    Also in Kürze: ESPC3 und Venus E funktionieren nach Anleitung von Otello bestens - Danke!

    Aber mein Trucki 2 Stick nicht mehr.

    Ich den denke es liegt an der Abfrage der Werte.

    Das kam mit Tasmota 9xxx mit > T Sektion und funktionierte:

    Code
    21:42:18 CMD: Status 10
    21:42:18 RSL: STATUS10 = {"StatusSNS":{"Time":"2025-11-07T21:42:18","SML":{"Total_in":0.0000,"Total_out":0.0000,"Power_curr":0}}}
    21:42:19 0.00

    Das kommt mit Tasmota 15 und Otello Script Charts+PV:

    Code
    21:43:42.816 CMD: Status10
    21:43:42.820 RSL: STATUS = {"Status":{"Module":1,"DeviceName":"Shelly EMU","FriendlyName":["Tasmota"],"Topic":"tasmota_99F534","ButtonTopic":"0","Power":"0","PowerLock":"0","PowerOnState":3,"LedState":1,"LedMask":"FFFF","SaveData":1,"SaveState":1,"SwitchTopic":"0","SwitchMode":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"ButtonRetain":0,"SwitchRetain":0,"SensorRetain":0,"PowerRetain":0,"InfoRetain":0,"StateRetain":0,"StatusRetain":0}}

    Und das kommt vom Log des Stick's um die Verwirrung komplett zu machen:


    Wo kommt das \r her?

    Der Entwickler meint das könnte das Problem sein.

    Beste Grüße

  • Hi. SML\r ist der Name, den du in der Meter Description (>M Sektion) vergeben hast! Da hast du wohl ein \r drin.

    Du hast auch einmal "Status 10" das andere mal "Status10" eingegeben. Das gibt unterschiedliche Ausgaben!

  • Moin,

    die Leerstelle hatte ich gar nicht gesehen.

    Ausgabe nun richtig:

    Code
    08:43:09.852 CMD: Status 10
    08:43:09.855 RSL: STATUS10 = {"StatusSNS":{"Time":"2025-11-08T08:43:09","SML
    ":{"Power_curr":917,"Total_in":21743.7640,"Total_out":40455.4226}}}


    So sieht die Sektion bei mir aus:

    Code
    >M 1
    +1,5,s,0,9600,SML
    1,77070100100700ff@1,Aktueller Verbrauch,W,Power_curr,0
    1,77070100010800ff@1000,EVU Bezug,KWh,Total_in,4
    1,77070100020800ff@1000,Einspeisung,KWh,Total_out,4;
    #

    Da ist kein \r drin....