D0 Zähler SML auslesen mit Tasmota

  • Hallo,

    Verzweifele gerade ein klein wenig mit einen Easymeter Q3DB1024.

    In der Konsole mit „sensor53 d1“ erhalte ich

    08:39:39.698 : /ESY5Q3DB1024 V3.03
    08:39:39.730 : 1-0:0.0.0*255(0272022411512)
    08:39:39.770 : 1-0:1.8.0*255(00027324.3288448*kWh)
    08:39:39.807 : 1-0:2.8.0*255(00101221.1565457*kWh)
    08:39:39.840 : 1-0:21.7.255*255(000093.35*W)
    08:39:39.873 : 1-0:41.7.255*255(-000059.24*W)
    08:39:39.906 : 1-0:61.7.255*255(000040.10*W)
    08:39:39.937 : 1-0:1.7.255*255(000074.21*W)
    08:39:39.958 : 1-0:96.5.5*255(82)
    08:39:39.993 : 0-0:96.1.255*255(1ESY1224001512)
    08:39:39.997 : !

    Das Script erstellt….

    >D

    >B

    =>sensor53 r

    >M 1

    +1,3,o,0,9600,Haupt,1

    1,1-0:1.7.0*255(@1,P_in,W,P_in,18

    1,1-0:1.8.0*255(@1,E_in,kWh,E_in,19

    1,1-0:2.8.0*255(@1,E_out,kWh,E_out,19

    1,1-0:21.7.0*255(@1,L1,W,L1,18

    1,1-0:41.7.0*255(@1,L2,W,L2,18

    1,1-0:61.7.0*255(@1,L3,W,L3,18

    1,1-0:0.0.0*255(@1,Netzbetreiber-ID,,NetID,0

    1,0-0:96.1.255*255(@#),Seriennummer,,serial,0

    #

    Als Rückmeldung bekomme ich lediglich die Zählerstände. Die Phasen und Gesammtleistung kommt mit 0.00 W auf der Webseite und per MQTT zurück.

    Wo liegt mein Fehler?

    Gruß

    stenny

  • Hallo in die Runde!

    Ich versuche seit einiger Zeit, meinen DD3 BZ06 ETA - ODZ1 mit IR-Lesekopf via einen NodeMCU auf dem Tasmota (12.4.0) geflasht wurde auszulesen. Es ist der gleiche Zähler wie im Beitrag #1.286 erwähnt - und da ging es ja anscheinend (grundsätzlich) ohne Probleme. Bei mir leider nicht - ich bekomme keine Daten gelesen/angezeigt...

    Ich bin mir ziemlich sicher, dass es nichts mit der Platzierung des Lesekopfs zu tun hat - das habe ich via die serielle Schnittstelle auf einem Raspberry Pi überprüft (mit screen /dev/ttyS0 9600), und da kamen jede Sekunde (unlesbare) Daten, die jeweils mit eBZ anfingen. Es kann meiner Meinung nach auch nicht (nur) am Skript liegen - da ich auch mit "sensor53 d1" auf der Console gar nichts angezeigt bekomme. (Das Skript habe ich von https://tasmota.github.io/docs…symeter-q3d-q3da1024-obis übernommen - aber da steht "Tested with an eBZ DD3 2R06 ODZ1", und das ist ja nicht genau mein Modell.) Ich vermute nun, dass ich beim kompilieren ggf. etwas nicht beachtet habe, das als Option für meinen Zähler nötig wäre - aber die Lektüre dieses Threads und der Dokumentation meines Zählers (https://www.ob-netz.de/fileadm…_DD3_Rev02_2017-05-04.pdf) haben mir nicht geholfen - ich bin ziemlicher Anfänger und scheine da den Wald vor lauter Bäumen nicht zu sehen... ;)

    Ich würde mich sehr über einen Hinweis freuen, der die Fehlerquelle einschränkt!

    Dank und Gruß - Sebastian

  • Hallo Sebastian, siehe dir mal den Beitrag an, weiter unten erkläre ich die Vorgehensweise wie man einen Lesekopf zum Laufen bringt.
    Unterstütze meinen Vorschlag, sodass auch andere Neuling wie du schnell geholfen werden kann.
    Erstelle einen neuen Beitrag der speziell für deinen Zähler DD3 BZ06 ETA – ODZ1 ist.
    Schreibe dort welches Skript funktioniert und dir einen Wert zurückgibt.
    Dort werde ich versuchen, mit dir dein Lesekopf zum Reden zu bewegen.
    Schön wäre es, wenn es funktioniert, eine Rückmeldung zu bekommen, mit dem Code und ein paar Screenshots, damit man meinen Vorschlag umsetzen kann.
    Nachtrag.
    Versuche mal diesen Code:

    Code
    >D
    >B
    ->sensor53 r
    >M 1
    +1,3,o,0,300,STROM,1,100,2F3F210D0A
    1,1-0:1.8.1*255(@1,Total Consumed,KWh,Total_in,3
    1,1-0:2.8.1*255(@1,Total Delivered,KWh,Total_out,3
    1,1-0:0.0.0*255(@#),Meter Number,,Meter_number,0
    #


    Gruß Lutz

    Einmal editiert, zuletzt von gabischatzm (12. April 2023 um 13:38)

  • In der Beschreibung von dem Zähler steht, dass er zwei verschiedene Kommunikationsschnittstellen besitzt.

    Zitat

    6 Datenschnittstellen
    Der Zähler DD3 weist zwei optische Kommunikationsschnittstellen (MSB und Info, beide infrarot) auf. Die MSB-Schnittstelle ist je nach Zählertyp unidirektional (OBIS) oder bidirektional (SML, dann versiegelt). Es werden folgende Messwerte ausgegeben:Versuche mal diesen Code:

  • Kann ich später gerne machen. Angesichts der Tatsache, dass ich via die serielle Schnittstelle eines Raspberry Pi Daten erhalten habe, kann ich mir nicht vorstellen, dass eine Drehung um 180 Grad das Problem lösen wird. Aber wer weiß... Ich experimentiere nochmals, wenn ich zu Hause bin - auch mit dem Pi - und dann kann ich das Problem vielleicht besser eingrenzen.

  • Hallo,

    ich habe seit gestern auch einen Tasmota. Installation hat alles prima geklappt. Als Zähler habe ich den EML ED300L.

    >D

    >B

    =>sensor53 r

    >M 1

    +1,3,s,0,9600,

    1,77070100010800ff@1000,Gesamtverbrauch,KWh,Total_in,2

    1,77070100020800ff@1000,Gesamteinspeisung,KWh,Total_out,2

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

    #

    Der Zähler kann aber eigentlich noch den Verbrach des letzen Tages, 7 Tage und letzte 365 Tage anzeigen. Nur das geht nicht. Habe den Code aus der Beschreibung des Zweirichtungszählers.

    Hat einer eine Idee?

    Das hier müsste eigentlich funktionieren:

    1,7707010001080060@1000,Verbrauch 1 Tag,KWh,Total_1d,2

    1,7707010001080061@1000,Verbrauch 7 Tag,KWh,Total_7d,2

    1,7707010001080062@1000,Verbrauch 30 Tag,KWh,Total_30d,2

    1,7707010001080063@1000,Verbrauch 1 Jahr,KWh,Total_365d,2

  • Hallo Zusammen,

    erstmal ein Lob an dieses Forum und die extrem hilfsbereiten Member! Nach 97 Seiten Thread frage ich mich leider immer noch, warum ich keine Werte aus meinen Zählern erhalte, obwohl ich so ziemlich jeden Rat den ihr euch gegenseitig gegeben habt, befolgt habe :-/ scheine zwei Zähler zu besitzen, die etwas sehr speziell sind und zwar wurden bei uns 2x ZPA TCM 221/18 - 5613 (Typ GS303) verbaut von DIGImeto im Auftrag unseres Energieversorgers.

    Beide Zähler sind per PIN freigeschaltet und liefern aktuelle IST-Werte im internen Display. Die D0-Schnittstelle habe ich inzwischen aufgegeben, weil der Handshake zwischen 300Baud 7E1 und 9600 Baud 7E1 einfach keine Daten liefert, bis auf die Herstellerkennung vor dem ACK "/ZPA5GS303g02.04 r56" ...

    Ich gehe also davon aus, das RX und TX sowie der Hitchi Lesekopf schonmal laufen. Ich habe zur Sicherheit dennoch einen 4,7k Pullup Wiederstand zwischen RX und VCC eingelötet um die Signalqualität zu verbessern, jedoch schweigt sich Tasmota in v12.5.0 weiterhin aus :(

    Kann doch echt nicht sein, dass keiner im Netz diesen Zähler hat und nicht wenigstens über die DSS-Infoschnittstelle mit 8N1 und 9600Baud irgendwelche Werte aus dem Ding rausbekommt, oder? Das Skript was ich laut FAQ mit den selbst kompilierten Binaries verwende auf einem "Olimex ESP32-PoE" lautet:

    >D

    >B

    =>sensor53 r

    >M 1

    +1,15,s,0,9600,Haus

    1,0.0.1(@1,Zählernummer,,Meter_number,0

    #

    Wenn ich in der Meter-Definition auf r=Raw binary coding umstelle, erhalte ich im 1sek Takt den CR = HEX13 mit sporadischen FF = HEX12 sonst nichts brauchbares ... mit s=SML ist das Logging mit "Sensor53 d1" komplett leer! Habe ich hier einen Denkfehler oder übersehe ich das Offensichtliche?

    Wer hat von euch eventuell diesen Zähler oder irgendwelche neuen Tipps, was ich noch testen könnte?


    Danke euch schonmal für eure Mühe!

    Grüße TechniX

  • sicherlich ein Denkfehler- auf welcher Seite auch immer

    um weitere Daten aus dem Zähler zu holen gehören auch weitere Zeilen in den Skript (https://tasmota.github.io/docs/Smart-Met…imeto-gs303-sml) und die Pin-Eingabe zum Datenlesen ist oft auch Bedingung

    https://digimeto.de/wps/wcm/connect/digimeto/e1b06823-d132-4dd9-aa91-dcf6b86ac362/GS303_Plus_Bedienungsanleitung.pdf?MOD=AJPERES&CVID=nxFq48V

  • Hallo, TechniX,

    falls Du den GS303 ohne "plus" hast, dann ist dieses Manual wohl richtiger:

    https://digimeto.de/wps/wcm/connect/digimeto/c900629a-b62e-49be-aa65-34964d351e17/Bedienungsanleitung-GS303.pdf?MOD=AJPERES&CVID=mX5YKjU

    Als erstes würde ich aber mal den Lesekopf direkt an die serielle Schnittstelle stöpseln und z.B. mit hterm (https://der-hammer.info/pages/terminal.html) gucken, ob was sinvolles rauskommt. Die Umschaltung von 300 auf 9600 Baud kann man auch manuell anschubsen. Das ist zwar etwas frickelig und zeitkritisch, aber es geht.

    Gruß Thomas.

  • Also ich denke ich habe einen Zähler ohne Plus, da nirgends ein Hinweis darauf zu finden ist, jedoch haben die in beiden Anleitungen die gleichen Schnittstellen erwähnt nur in der Plus-Anleitung etwas ausführlicher dokumentiert ... Whatever, ist ja nach der verlinkten Norm eh geregelt wie der Kommunikationsaufbau stattfindet.

    Die Zähler sind wie schon im ersten Post geschrieben beide per Pin freigeschaltet und zeigen das auch mit einem offenen Schloss an + geben Sie die Momentanverbräuche im Info-Display an.

    Das kurze Skript habe ich nur für den Initialen Test verwendet, denn damit holt man sich ja nur aus der kompletten Antwort vom Zähler die Werte die einen Interessieren bzw. welche man überhaupt geliefert bekommt (normales Parsing also) ... die Antwort vom Zähler sollte ja aber immer einen vollständigen Satz an Werten liefern, korrekt?

    Seltsamerweise habe ich auch schon einmal eine komplette Antwort per OBIS bekommen aber nur ein einziges Mal leider und dann nie wieder :( jetzt sendet er im DSS-Schnittstellen-Modus fleißig seine HEX13 = DC4 = XOFF ? und im D0-Schnittstellen-Modus auf 300baud 7E1 eben seine Herstellerkennung sonst nix. Im Anhang findet ihr mal das Log vom Bray-Terminal und der Direktverbindung zum Lesekopf da könnt ihr das sehen (Die HEX-Werte in der ersten Zeile sind noch der Rest der Herstellerkennung vom D0-Modus).

    Irgendwie scheint er sich verhangen zu haben und 9600Baud überhaupt nicht mehr zu sprechen ... kann man Smart Meter irgendwie resetten ohne komplett die Haussicherung zu ziehen? XON schicken per HEX hab ich im Terminal auch schon probiert, war aber eher eine Verzweiflungstat ^^

  • Guten Morgen,

    kann mir jemand bei meinem Tasmota Script bzw. den Einstellungen helfen ?

    Zum Verständnis, ich habe zwei Impulszähler mit 2000Imp/kWh. Über mein Script wird auch etwas angezeigt leider sehr ungenau.

    Die Leistungsangabe W springt von von null auf einen höheren Wert und wieder zurück auf null usw. Es entstehen keine stabilen Verbrauchsdaten.

    Ich habe es schon mit verschiedenen Debouncing Zeiten mit Pull-up und ohne probiert.

    Der Aufbau besteht aus einem ESP32 und Drähten und einem 10K Widerstand.

    Einmal editiert, zuletzt von Kiter1988 (6. Juni 2023 um 08:09)

  • Hallo allerseits,

    vielleicht kann mir jemand bei einer etwas besonderen Konstellation helfen.

    Habe einen wemos d1 mini mit dem speziellen Tasmota geflasht. Ich will 4 Zähler anschließen (5 ist ja wohl das Maximum).

    2 Zähler sind SML ansprechbar, 2 mit OBIS. Bei diesen beiden letztgenannten Zählern (Elster E1350) ist das Übertragen einer Startsequenz erforderlich, um sie zum Übermitteln der Daten anzuregen.

    Die SML-Zähler laufen einwandfrei, die Elster klappen nicht.

    Ich verwende das folgende Skript:

    ————————————————————————————————-

    >D

    scnt=0

    res=0

    >B

    =>sensor53 r

    >F

    ; count 100ms

    scnt+=1

    switch scnt

    ;500ms after start: set sml driver to 300 baud and send /?! as HEX to trigger the Meter

    case 5

    res=sml(2 0 300)

    res=sml(2 1 „2F3F210D0A“)

    res=sml(4 0 300)

    res=sml(4 1 „2F3F210D0A“)

    ;1700ms later: Ack and ask for switching to 9600 baud

    case 22

    res=sml(2 1 „063035300D0A“)

    res=sml(4 1 „063035300D0A“)

    ;300ms later: switch sml driver to 9600 baud

    case 25

    res=sml(2 0 9600)

    res=sml(4 0 9600)

    ;6000ms after start: Restart sequence

    case 60

    scnt=0

    ends

    >M 4

    +1,4,s,0,9600,

    ; GPIO4 = D2

    1,=h===============

    1,=hUeberschuss nur BHKW:

    1,=h(ISKRA 6692 Z2)

    1,=h===============

    1,77070100010800ff@1000,Bezug_BHKW_180,KWh,180,3

    1,77070100020800ff@1000,Lieferung_BHKW_280,KWh,Total_out,3

    1,=h===============

    +2,5,o,0,9600,A1350,1

    ; GPIO5 = D1

    2,1.8.1(@1,Nachtkauf_181,kWh,Nachtkauf,16

    2,1.8.2(@1,Tagkauf_182,kWh,Tagkauf,16

    2,2.8.1(@1,Nachtverkauf_281,kWh,Nachtverkauf,16

    2,2.8.2(@1,Tagverkauf_282,kWh,Tagverkauf,16

    2,=h===============

    2,=hPV Erzeugung:

    2,=h(ISKRA 6691 Z3)

    2,=h===============

    +3,12,s,0,9600,

    ; GPIO12 = D6

    3,77070100010800ff@1000,Bezug_PV_180,KWh,Bezug,3

    3,77070100020800ff@1000,Lieferung_PV_280,KWh,Lieferung,3

    3,=h===============|

    +4,14,o,0,9600,A1350,1

    ; GPIO14 = D5

    4,2.8.0(@1,Erzeugung BHKW,KWh,Erzeugung BHKW,16

    #

    ——————————————————————————————————–

    Vermutlich ist die Initialisierungssequenz (die noch dazu an 2 Zähler gesendet wird) der Knackpunkt.

    Wenn man EINEN Elster-Zähler mit einer Initialisierung anspricht, klappt das übrigens. Das heißt, die Zähler übermitteln Daten. Also muss es an meinem Skript liegen.

    Was ist falsch ? Kennt jemand die Lösung ??

    Grüße

    Gerhard