D0 Zähler SML auslesen mit Tasmota

  • Versuch mal das:

    Danke. Hier ist der Output:

    16:23:22.109 script compressed to 252 bytes = 68 %

    16:23:22.111 Script: nv=2, tv=0, vns=9, vmem=47, smem=2560

    16:23:22.113 Script: performs "sensor53 r"

    16:23:22.127 SNS: Hardware Serial

    16:23:22.133 MQT: stat/tasmota_FA3251/RESULT = {"Time":"2023-02-13T16:23:22","SML":{"CMD":"restart"}}

    16:23:52.671 CMD: sensor53 d1

    16:23:52.678 MQT: stat/tasmota_FA3251/RESULT = {"Time":"2023-02-13T16:23:52","SML":{"CMD":"dump: 1"}}

    16:27:04.374 MQT: tele/tasmota_FA3251/STATE = {"Time":"2023-02-13T16:27:04","Uptime":"0T01:55:12","UptimeSec":6912,"Heap":19,"SleepMode":"Dynamic","Sleep":50,"LoadAvg":19,"MqttCount":1,"POWER":"OFF","Wifi":{"AP":1,"SSId":"FritzLu","BSSId":"3C:A6:2F:56:5E:2E","Channel":1,"Mode":"11n","RSSI":100,"Signal":-43,"LinkCount":1,"Downtime":"0T00:00:05"}}

    16:27:04.380 MQT: tele/tasmota_FA3251/SENSOR = {"Time":"2023-02-13T16:27:04","LGUH50":{"waermemenge":0}}

    16:32:04.392 MQT: tele/tasmota_FA3251/STATE = {"Time":"2023-02-13T16:32:04","Uptime":"0T02:00:12","UptimeSec":7212,"Heap":19,"SleepMode":"Dynamic","Sleep":50,"LoadAvg":19,"MqttCount":1,"POWER":"OFF","Wifi":{"AP":1,"SSId":"FritzLu","BSSId":"3C:A6:2F:56:5E:2E","Channel":1,"Mode":"11n","RSSI":100,"Signal":-42,"LinkCount":1,"Downtime":"0T00:00:05"}}

    16:32:04.398 MQT: tele/tasmota_FA3251/SENSOR = {"Time":"2023-02-13T16:32:04","LGUH50":{"waermemenge":0}}

    16:37:04.379 MQT: tele/tasmota_FA3251/STATE = {"Time":"2023-02-13T16:37:04","Uptime":"0T02:05:12","UptimeSec":7512,"Heap":19,"SleepMode":"Dynamic","Sleep":50,"LoadAvg":19,"MqttCount":1,"POWER":"OFF","Wifi":{"AP":1,"SSId":"FritzLu","BSSId":"3C:A6:2F:56:5E:2E","Channel":1,"Mode":"11n","RSSI":100,"Signal":-43,"LinkCount":1,"Downtime":"0T00:00:05"}}

    16:37:04.385 MQT: tele/tasmota_FA3251/SENSOR = {"Time":"2023-02-13T16:37:04","LGUH50":{"waermemenge":0}}

    Der Lesekopf sitzt mit dem USB Stecker nach oben auf dem Zähler.

  • Ja. Dann lass jetzt einmal laufen. Bei mir kommen die Werte auch nur einmal die Stunde.

    Hey, super. Werte kommen an. Wenn ich Dein Skript richtig lese, dann übernimmt es die Werte die z.B. mit 6.8*01 benannt sind.
    Mein Output sieht so aus:

    12:06:05.731 : I

    12:06:05.928 : 6.26*01(02330.72*m3)6.8*01(0150.012*GJ)

    12:06:06.076 : F(0)9.20(67903583)6.35(60*m)

    12:06:06.424 : 6.6(0011.2*kW)6.6*01(0011.2*kW)6.33(000.420*m3ph)9.4(091.6*C&090.4*C)

    12:06:06.780 : 6.31(0028676*h)6.32(0000001*h)9.22(R)9.6(188&67903583&0&000&67903583&0)

    12:06:07.120 : 9.7(20000)6.32*01(0000000*h)6.36(01-01&00:00)6.33*01(000.420*m3ph)

    12:06:07.305 : 6.8.1()6.8.2()6.8.3()6.8.4()6.8.5()

    12:06:07.465 : 6.8.1*01()6.8.2*01()6.8.3*01()

    12:06:07.585 : 6.8.4*01()6.8.5*01()

    12:06:07.708 : 9.4*01(091.6*C&090.4*C)

    12:06:07.912 : 6.36.1(2022-02-06)6.36.1*01(2022-02-06)

    12:06:08.119 : 6.36.2(2021-12-07)6.36.2*01(2021-12-07)

    12:06:08.316 : 6.36.3(2021-12-27)6.36.3*01(2021-12-27)

    12:06:08.519 : 6.36.4(2022-02-13)6.36.4*01(2022-02-13)

    12:06:08.840 : 6.36.5()6.36*02(01&00:00)9.36(2023-02-14&11:34:45)9.24(0.6*m3ph)

    12:06:08.971 : 9.17(0)9.18()9.19()9.25()

    12:06:09.307 : 9.1(0&1&0&0000&CECV&CECV&1&5.21&5.21&F&101008&1>1>04&08&0&00&:5&00)

    12:06:09.452 : 9.2(&&)9.29()9.31(0028379*h)

    12:06:09.802 : 9.0.1(00000000)9.0.2(00000000)9.34.1(000.00000*m3)9.34.2(000.00000*m3)

    12:06:10.003 : 8.26.1(00000000*m3)8.26.2(00000000*m3)

    12:06:10.227 : 8.26.1*01(00000000*m3)8.26.2*01(00000000*m3)

    12:06:10.357 : 6.26.1()6.26.4()6.26.5()

    12:06:10.596 : 6.26.1*01()6.26.4*01()6.26.5*01()0.0(67903583)

    Aber es werden keine Daten auf der Tasmota Startseite angezeigt.Stimmt da die Formatierung im Skript nicht bei mir?
    Nachommastellen sind identisch im Skript und output.


    UPDATE: Nun werden die Werte übernommen. Warum weiss ich nicht. :(
    Was habe ich verändert?

    1x 'sensor53 d1' 3 Stunden gewartet und dann 1x 'Sensor 53 d0'.

    Tja, wie gesagt, keine Erklärung.

    Danke an holgerwolf  KeinAuskennr  Webranger und andere für Eure Inspiration und Beiträge.

    Einmal editiert, zuletzt von Jesmart (14. Februar 2023 um 18:12)

  • UPDATE: Nun werden die Werte übernommen. Warum weiss ich nicht. :(
    Was habe ich verändert?

    1x 'sensor53 d1' 3 Stunden gewartet und dann 1x 'Sensor 53 d0'.

    Tja, wie gesagt, keine Erklärung.

    Danke an holgerwolf  KeinAuskennr  Webranger und andere für Eure Inspiration und Beiträge.

    Noch eine Frage holgerwolf : mit Deinem Skript von weiter oben wird jetzt alle 5min abgefragt.

    Könnte mir jemand bitte zeigen, wie ich ein längers Abfrageintervall einstellen kann?

    Wie ich verstanden habe wird das in 100ms Schritten geändert.

    Danke, Jens

  • Hallo zusammen,

    ich habe mich vom photovoltaikforum, über otellos blog (ottelo.jimdofree.com) jetzt bis hierher durchgeschlagen und hoffe auf Hilfe:

    Ich habe genau das von McSaarli schon 2020 beschriebene Problem: EMH ED300L Zähler, der nach PIN-Entsperrung am Gerät (Taster oder Taschenlampe) nach 120s ohne Aktion wieder gesperrt wird (und somit auch per Tasmota keine Momentanleistung etc. mehr ausgegeben wird). Um das Problem zu umgehen gibt es zwei Lösungsmöglichkeiten, bei denen ich aber nicht weiß, wie umsetzen (Programmierkenntnisse, allerdings in JAVA vorhanden, grundlegende Fähigkeit eine Doku zu lesen ebenfalls, wenig Erfahrung mit Tasmota und SML, bin da erst vor 3 Tagen über den WLAN Hichi zu gekommen ;-)):

    1. Regelmäßig (z.B. alle 20 Sekunden) eine "Eingabe" per IR über den Hichi. Ob hier "irgendeine" Eingabe ausreicht, weiß ich nicht, ich würde es allerdings damit mal versuchen. Leider scheint das Senden über folgende Skriptzeile nicht zu funktionieren (zumindest bleibt er nicht entsperrt). Muss ich das vorne vllt mit einem "o" statt einem "s" machen oder woran könnte es sonst liegen?

    Code
    +1,3,s,0,9600,Haus,1,20,01

    2. Die automatische Sperrung einfach ausschalten bzw. regelmäßig per Remotebefehl einfach den PIN eingeben. Sollte gehen, gibt dazu auch in der Dokumentation des Zählers die entsprechenden OBIS Kennzahlen (Produkthandbuch für den (regionetz.de) Seite 22). Konkreter Auszug zu dem OBIS Befehl ist in folgender Tabelle, der Einleitungstext über der Tabelle ist:

    Der ED300L erlaubt die direkte Abfrage einzelner Eigenschaften. Der Zugriff erfolgt immer per ‚SML_GetProcParameter‘ unter der Angabe der OBIS Kennzahl zur Auswahl der gewünschten Eigenschaft. Folgende Parameter und Eigenschaften sind aufrufbar:

    Pos.KennzahlSchreiben erlaubtLesen erlaubtDatentypBedeutung
    1881 81 C7 8C 0D FFxxbooleanBei ‚true’ wird der Mechanismus zur automatischen Aktivierung des Schutzes per PIN-Code nach Ablauf von 120 s eingeschaltet


    Beide Varianten könnten zum Ziel führen, beides sollte auch machbar sein. Ich weiß nur nicht wie...und ich würde gerne die Schwarmintelligenz von euch dafür nutzen. Kann mir jemand einen Tipp geben oder helfen? Wie man überhaupt (erfolgreich) etwas sendet? wie man "SML_GetProcParameter‘" mit einer OBIS Kennzahl und einem Datentyp an den Zähler sendet (hier wäre ja auch einmalig per Console möglich, müsste ja gar nicht unbedingt in einen Skript)? Oder ob ihr weitere Ideen habt?

    Vielen herzlichen Dank schon mal :-)!

  • Guten Tag,

    ich habe schon eine ganze Weile einen ESP32-LAN mit meinem EHZ am laufen.

    Mir ist jetzt aufgefallen, das das Thema svars anscheinend nicht so richtig funktioniert.

    Bei einem Reboot geht mir immer der Wert für den 1ten des Monats verloren.

    Hier mein Script.

    script_26022023.txt

    Es läuft Tasmota 11.0.0.4 von Theo Arends

    Kann bitte ein Wissender mal daraufschauen.

    Danke :)

  • Hallo zusammen,

    Ich habe die kompletten 96 Seiten gelesen und habe auch einige Dinge versucht, komme aber nicht weiter.

    Ich nutze einen IR TTL Lesekopf an einem D1 Mini um einen Elster AS1440 auszulesen. Ich habe das Skript von der Tasmota Seite probiert und auch ein paar andere die ich so in den weiten des Internet gefunden habe, ich bekomme jedoch keine Werte auf die Startseite. In der Konsole kommen alle Werte an, aber auf der Startseite bleibt alles bei 0.

    Folgendes Skript nutze ich (jetzt im Moment):

    >D

    scnt=0

    res=0

    >B

    =>sensor53 r

    >F

    ; count 100ms

    scnt+=1

    switch scnt

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

    case 3

    res=sml(1 0 300)

    res=sml(1 1 "2F3F210D0A")

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

    case 20

    res=sml(1 1 "063035300D0A")

    ;300ms later: switch sml driver to 9600 baud

    case 23

    res=sml(1 0 9600)

    ;6000ms after start: Restart sequence

    case 60

    scnt=0

    ends

    >M 1

    +1,3,o,0,9600,AS1440,1

    1,1.7.0(@0.001,Power In,W,power_in,16

    1,1.8.1(@1,Total In,KWh,Total_in,1

    1,2.7.0(@0.001,Power Out,W,power_out,16

    1,2.8.1(@1,Total Out,KWh,Total_out,1

    #

    und im Anhang findet Ihr ein Stück der Konsolenausgabe.

    Kann mir jemand helfen?

  • Hallo zusammen,

    ich habe mich vom photovoltaikforum, über otellos blog (ottelo.jimdofree.com) jetzt bis hierher durchgeschlagen und hoffe auf Hilfe:

    Ich habe genau das von McSaarli schon 2020 beschriebene Problem: EMH ED300L Zähler, der nach PIN-Entsperrung am Gerät (Taster oder Taschenlampe) nach 120s ohne Aktion wieder gesperrt wird (und somit auch per Tasmota keine Momentanleistung etc. mehr ausgegeben wird). Um das Problem zu umgehen gibt es zwei Lösungsmöglichkeiten, bei denen ich aber nicht weiß, wie umsetzen (Programmierkenntnisse, allerdings in JAVA vorhanden, grundlegende Fähigkeit eine Doku zu lesen ebenfalls, wenig Erfahrung mit Tasmota und SML, bin da erst vor 3 Tagen über den WLAN Hichi zu gekommen ;-)):

    1. Regelmäßig (z.B. alle 20 Sekunden) eine "Eingabe" per IR über den Hichi. Ob hier "irgendeine" Eingabe ausreicht, weiß ich nicht, ich würde es allerdings damit mal versuchen. Leider scheint das Senden über folgende Skriptzeile nicht zu funktionieren (zumindest bleibt er nicht entsperrt). Muss ich das vorne vllt mit einem "o" statt einem "s" machen oder woran könnte es sonst liegen?

    Code
    +1,3,s,0,9600,Haus,1,20,01


    mit Hilfe von Hichi habe ich so umgesetzt, dass die IR-Diode für 1 Sekunde alle 5 Sekunden leuchtet. Damit wird die Sperre bei meinem Zähler einfach alle 5 Sekunden zurückgesetzt. Hier ist der Code:


    Die Kommentarzeilen (";" mit davor) können natürlich gelöscht werden.

  • Hallo, nachdem ich diesen ganze Wahnsinnsthread hier schon fast auswendig kann (ok fast..) aber trotzdem nicht weiter komme, hoffe ich auf Hilfestellung um mein Easymeter Q3D mit WEMOS und Tasmota zum laufen zu bringen.

    Was bisher geschah:

    Hardware: Easymeter Q3DB 1024 V 3.03 (nach Tasmota wohl ein. OBIS Zähler)

    NPN Fototransistor gekauft: SFH309FA-5 880...1120nm ±12° 35V 15mA ø3mm schwarz

    Wichtige Frage vorweg (Emitter = kurz, Collector = langer Pin??)

    Hab im Netz gefunden, das man den Emitter direkt an GND gibt und den Collector auf RX (GPIO3) anschliesst.

    Eine weitere Webseite gab den Hinweis, einen 10kOhm Pullup zwischen 5V undRX zu schalten. getan

    Also fix alles verlötet..

    WEMOS D1 Mini mit Tasmota geflashed, Version 12.3.1.6. mit aktiviertem Skripting

    folgendes Skript von der tasmota GitHub eingetragen:

    >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
    #

    Auf tasmota den Hinweis gesehen, dass man hier nur an Hardware Serial gehen kann, da es sich um ein 7 Bit Signal handelt.

    Also auf der Konsole noch mal

    SerialConfig 7E1

    eingegeben, damit man nicht Patchen muss.

    In der Vorlage für Tasmota : Generic(18) alles auf none gesetzt, teleperiod ist auf 30, Serial Logging ist auf 0,

    trotzdem empfange ich auf tasmota keine Daten:

    mit sensor53 d1 kommt folgendes

    14:46:17.531 MQT: stat/easmeter/RESULT = {"Time":"2023-03-12T14:46:17","SML":{"CMD":"dump: 1"}}

    14:46:25.423 MQT: tele/easmeter/STATE = {"Time":"2023-03-12T14:46:25","Uptime":"0T00:05:40","UptimeSec":340,"Heap":19,"SleepMode":"Dynamic","Sleep":50,"LoadAvg":19,"MqttCount":1,"Wifi":{"AP":1,"SSId":"Muckinet50000","BSSId":"DC:39:6F:B5:91:DD","Channel":1,"Mode":"11n","RSSI":78,"Signal":-61,"LinkCount":1,"Downtime":"0T00:00:05"}}

    14:46:25.431 MQT: tele/easmeter/SENSOR = {"Time":"2023-03-12T14:46:25","SML":{"P_in":0.00,"L1":0.00,"L2":0.00,"L3":0.00,"E_in":0.000,"E_out":0.000,"NetID":0,"serial":""}}

    14:46:35.438 MQT: tele/easmeter/STATE = {"Time":"2023-03-12T14:46:35","Uptime":"0T00:05:50","UptimeSec":350,"Heap":19,"SleepMode":"Dynamic","Sleep":50,"LoadAvg":19,"MqttCount":1,"Wifi":{"AP":1,"SSId":"Muckinet50000","BSSId":"DC:39:6F:B5:91:DD","Channel":1,"Mode":"11n","RSSI":76,"Signal":-62,"LinkCount":1,"Downtime":"0T00:00:05"}}

    14:46:35.448 MQT: tele/easmeter/SENSOR = {"Time":"2023-03-12T14:46:35","SML":{"P_in":0.00,"L1":0.00,"L2":0.00,"L3":0.00,"E_in":0.000,"E_out":0.000,"NetID":0,"serial":""}}


    Hat jemand ne Idee und kann mir helfen? Hab ich was vergessen?


  • erstaunlich was hier so für Mythen drin stehen.

    Obis geht mit Software und Hardware Serial 7E1 wird als 8E1 empfangen und das Parity wird ignoriert.

    SerialConfig macht hier gar keinen Sinn.

    Software Serial ist nur ein Problem bei höheren Baudraten z.B. 115200 da sollte man immer Hardware Serial benutzen.

    Dein Problem liegt bei der WEMOS Hardware. Sollte eigentlich in dem Thread mal angesprochen worden sein.

    RX ist mit 500 Ohm mit dem USB-UART Chip verbunden und zieht den Eingang deshalb nach HIGH so dass der Fototransistor es nicht mehr schafft die GPIO nach Masse zu ziehen.

    Entweder den Widerstand auslöten oder vergrößern , z.B. auf 4,7 k

    oder auf einen anderen Pin gehen mit Softwareserial.

  • Ich habe jetzt nochmal folgendes probiert:

    Widerstand auslöten... keine Änderung

    SerialConfig 8N1. keine Änderung

    Diode per an D4 (GPIO 2) angeschlossen und das Skript angepasst. Wenn ich es über den Zähler positioniere, blinkt auch die LED des WEMOS fröhlich wie die IR LED.

    Aber Daten empfange ich noch immer nicht.

    habe auch noch mal das Skript gecheckt und es stimmt mit dem, was der Hersteller so schreibt überein....
    Sorry, wenn ich hier nerve :)

    >D

    >B

    =>sensor53 r

    >M 1

    +1,2,o,0,9600,Haupt,1

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

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

    1,1-0:2.8.0*255(@1,Lieferung,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

    #

    #

  • DANKE !!!!! DAS WAR ES !! Nachdem ich den Pullup dazwischen gesetzt habe funktioniert es.

    Alles perfekt

    ich musste das Skript noch anpassen, um für den Easymeter die Momentanleistung zu lesen.

    >D

    >B

    =>sensor53 r

    >M 1

    +1,2,o,0,9600,OBIS,1

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

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

    1,1-0:2.8.0*255(@1,Lieferung,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

    #

    2 Mal editiert, zuletzt von Drmucki (12. März 2023 um 19:40)