D0 Zähler SML auslesen mit Tasmota

  • Hi Miteinand,
    die SML - Dekodierung funktioniert prima. Allerdings wird bei der Wirkleistung meines EMH ED300L immer ein positiver Wert angezeigt... das ist technisch ja nicht korrekt, zumal der Zähler bei Einspeisung auch -A an Stelle + A anzeigt.
    Gibt es dafür eine Lösung? Ist das jetzt in der letzten Änderung von gemu2015 https://github.com/gemu2015/So…/tree/universal8/tasmota5 drin?

    Grüße
    smhe

    Beim jüngsten Commit von Gemu geht es um EBUS. Ein anderes Protokoll.

    Wenn der Wert ansonsten korrekt ist nur das Vorzeichen fehlt, dann probiere mal vor dem Faktor ein "-" zu setzen.

    Code
    1. Beispiel: 1,77070100020800FF@-1000,Zählerstand Einsp.,kWh,Tariflos,2


    Grüße!

  • Zitat

    Wenn der Wert ansonsten korrekt ist nur das Vorzeichen fehlt, dann probiere mal vor dem Faktor ein "-" zu setzen.

    Das geht, hatte ich schon ausprobiert..... Dann werden aber alle Werte negativ angezeigt (also Einspeisung wie auch Bezug). Interessant ist es doch die Stromflussrichtung mit anzugeben.


    Vielleicht kann man das aus den HEX - Daten auch mit raus ziehen... Schaue ich mir mal an.


    Danke dir auch!

    VG smhe

  • sunburstc  meierchen006


    Guten Morgen,


    ja, mein Script auf meinem Stromzähler Wemos sieht so aus:



    bzw. nutze ich dort unerklärlich die Rules, obwohl Script im Code aktiviert ist.

    Ich kann auch Script aktivieren und einpflegene, Rules wird aber weiter favorisiert.

    Musste man das noch irgendwo zusätzlich deaktivieren außer über die User Config?


    Eintrag xsns_95_sml.ino:

    Code
    1. // diesen Zähler auswählen
    2. #define METER EHZ161_0


    Einträge in meiner User Config override:

    Code
    1. #undef USE_RULES
    2. #define USE_SCRIPT
    3. #define USE_SCRIPT_WEB_DISPLAY
    4. #undef USE_SML_M
    5. #define USE_SML_M
    6. #define SML_BSIZ 32

    Nehme ich meine bestehende Config rüber zur Uni 8 klappt alles. Dort gibt es keine Probleme.

    Und das merkwürdige ist, ich hatte die Config zu Uni6 Zeiten erstellt und da ging es ja auch... Nur um IC Nutzung z.B erweitert

    Alles sehr merkwürdig!


    Fakt ist jedenfalls, unter Uni8 kann ich meinen Q3D Stromzähler nicht auslesen, mittels Uni 6 Stand 6.6.0.13 gibt es keine Probleme!

    Ich werde mit Original Tasmota noch weitertesten, hatte nur noch keine Zeit gefunden.


    Ich berichte wieder.


    Besten Gruß


    URBANsUNITED

  • Nach langem Versuchen endlich geschafft. Mein Zähler liefert allerdings nur den Zählerstand und den aktuellen Gesamtverbrauch (saldierend).

    Werde mal versuchen ob es vom Hersteller Hinweise gibt für mehr Infos oder Berechnungen (Kosten) innerhalb des Scripts wie es hier schon einige gelungen ist.

    grüsse aus Heidelberg


    1x Touch, 6x S20, 24x Basic (davon 8x 2.Relais am GPIO), 2x 4ch Pro, 1x 4ch, 1x TH16, 2x 7-32V Sonoff, 4x POW, 6x DUAL, 1x PIR+Bridge,2x Obi Steckdose

    Domoticz, HA-Bridge, 2xHarmonyHub, 3xAlexa, MQTT, Homebridge-HomeKit-Siri , 2xFeinstaunsensor via Domoticz

  • Hallo URBANsUNITED


    als vergleich mal teile aus meinem Script:

    aus meiner user_config_override:


    //--Rules oder Scripter benutzen: -----------------
    //um rules zu verwenden gar nichts tun
    // -- um scripter zu verwenden
    #undef USE_RULES
    #define USE_SCRIPT


    // -- Serial sensors ------------------------------

    #define USE_SML_M


  • URBANsUNITED

    Vielleicht findest du hier auch noch etwas interessantes für dich: HowTo Bezieht sich allerdings auf die Original Tasmota FW. Gemus Fork ist schon länger nicht mehr aktualisiert worden.


    Ich verstehe allerdings nicht ganz, wieso du weiterhin den 95er verwendest statt 53.

    Und vor allem, wieso du sowohl im Skript einen Zähler definierst als auch Hardcoded.

    An der xsns_53_sml.ino brauchst du nichts mehr ändern. Alles wird im Webgui Skript definiert. Siehe HowTo.

  • Vielen Dank für das HowTo!:thumbup:

    Man sieht wie viel Arbeit da rein geflossen ist.


    Ich bin schier verzweifelt an diesem eigentlich einfachen Teilprojekt.

    Unglaublich wie viele halbfertige / veraltete / mangelhafte Pseudo-Lösungen im Netz zu finden sind.


    Es funktioniert!


    Kleine Ergänzung in der Doku:

    - das Flashen macht oftmals Probleme, wenn der Lesekopf am RX/TX pin angeschlossen ist

    - das MQTT Sendeintervall wird unter Einstellungen-> Logging-->Telemetrieperiode definiert



    Grüße

  • So etwa nach dem Muster Versuche ich die Werte an Domoticz zu übergeben


    aus:


    SmartHome/Energie/100-WGS-Zaehler/tele/SENSOR = {"Time":"2020-03-18T14:01:16","SML":{"Total_in":2182.26,"Power_curr":42.1}}


    versuchte ich im Script:

    >S


    if upsecs%30==0


    then


    => ENERGY#Total_in do publish domoticz/in {"idx":266,"svalue":"%value%"}


    => ENERGY#Power_curr do publish domoticz/in {"idx":267,"svalue":"%value%"}



    endif


    hatte da jemand schon mehr Erfolg als ich und kann mir weiterhelfen ?

    grüsse aus Heidelberg


    1x Touch, 6x S20, 24x Basic (davon 8x 2.Relais am GPIO), 2x 4ch Pro, 1x 4ch, 1x TH16, 2x 7-32V Sonoff, 4x POW, 6x DUAL, 1x PIR+Bridge,2x Obi Steckdose

    Domoticz, HA-Bridge, 2xHarmonyHub, 3xAlexa, MQTT, Homebridge-HomeKit-Siri , 2xFeinstaunsensor via Domoticz

  • Kenne mich garnicht mit dometicz aus. Aber ein "=>" bedeutet, dass du es in die Konsole schreibst. Hast du mal probiert ob dein Code den du dort aufrufst in der Webkonsole funktioniert? Weil wenn nicht, dann wird er im Skript auch nicht laufen.

  • Dann werde ich wohl etwas ausprobieren müssen. in der derzeitigen Lebenssituition ist ja leider Zeit dafür.

    Mein Zähler selber liefert ja wirklich nicht viel. Die Ser.Nr. wird als Hex geliefert aber derzeit noch falsch codiert.

    Für alle DZG DWS74.... Zähler ist das leider so, Das Resultat nach Eingabe der PIN seht ihr im Bild.


    grüsse aus Heidelberg


    1x Touch, 6x S20, 24x Basic (davon 8x 2.Relais am GPIO), 2x 4ch Pro, 1x 4ch, 1x TH16, 2x 7-32V Sonoff, 4x POW, 6x DUAL, 1x PIR+Bridge,2x Obi Steckdose

    Domoticz, HA-Bridge, 2xHarmonyHub, 3xAlexa, MQTT, Homebridge-HomeKit-Siri , 2xFeinstaunsensor via Domoticz

  • Wirkleistung bei Einspeisung mit negativem Vorzeichen darstellen?!


    Hi Miteinand,
    wie bekannt, wird bei der Tasmota-Lösung die aktuelle Wirkleistung immer mit einem positiven Wert angegeben. Wenn man aber einen Zweirichtungszähler und Überschusseinspeisung hat, ist das ungünstig, da der Zähler zumindest bei der Wirkleistung Bezug anzeigt, obwohl man manchmal auch einspeist. Ich habe nun die Stelle gefunden die im SML-Protokoll des EMH ED300 L für das Vorzeichen infrage käme (danke an Ronald). Leider bin ich nicht so fit das ich mit dem Skripten in Tasmota oder auch mit Programmierung das Vorzeichen setzen kann.

    Kann mir einer auf die Sprünge helfen?



    Hier der Zusammenhang aus dem SML-Protokoll:


    Verbrauch EMH ED300 L


    77

    07 01 00 01 08 00 ff Zählwerk positive Gesamtenergie (+A - Verbrauch)

    64 01 01 82die 82 steht für Verbrauch/Bezug

    → Zählwerk pos. Wirkenergie, tariflos → Obis 1.8.0


    77

    07 01 00 02 08 00 ff Zählwerk ngegative Gesamtenergie (-A - Einspeisung)

    64 01 01 82

    → Zählwerk neg. Wirkenergie, tariflos → Obis 2.8.0




    Einspeisung EMH ED300 L


    77

    07 01 00 01 08 00 ff Zählwerk positive Gesamtenergie (+A - Verbrauch)

    64 01 01 a2a2 steht für Einspeisung

    → Zählwerk pos. Wirkenergie, tariflos → Obis 1.8.0


    77

    07 01 00 02 08 00 ff Zählwerk ngegative Gesamtenergie (-A - Einspeisung)

    64 01 01 a2

    → Zählwerk neg. Wirkenergie, tariflos → Obis 2.8.0



    Bleibt gesund !


    Danke!

  • Ich habe das mal übernommen und für meine Werte angepasst. Beim Starten stürzt Domoticz komplett ab. Ich sehe den Fehler nicht.


    >B

    ->sensor53 r

    tper=10


    ; definiere Variablen

    >D


    p_in=0

    p_curr=0


    ; lese die tele Variablen ein

    >T


    p_in=SML#Total_in

    p_curr=SML#Power_curr


    >S


    ; sende zu Domoticz bei teleperiod

    if upsecs%tper==0


    then

    =>publish domoticz/in {"idx":331,"svalue":"%p_in%"}

    =>publish domoticz/in {"idx":332,"svalue":"%p_curr%"}

    endif


    >M


    +1,14,s,1,9600,SML

    1,77070100010800ff@1000,Zählerstand,KWh,Total_in,2

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

    #

    grüsse aus Heidelberg


    1x Touch, 6x S20, 24x Basic (davon 8x 2.Relais am GPIO), 2x 4ch Pro, 1x 4ch, 1x TH16, 2x 7-32V Sonoff, 4x POW, 6x DUAL, 1x PIR+Bridge,2x Obi Steckdose

    Domoticz, HA-Bridge, 2xHarmonyHub, 3xAlexa, MQTT, Homebridge-HomeKit-Siri , 2xFeinstaunsensor via Domoticz

  • Hallo zusammen,


    ich versuche mich gerade daran, meinen Stromzähler für die Einspeisung der PV-Anlage auszulesen. Den Zählerstand und die Zählernummer habe ich bereits. Gerne würde ich die aktuelle Leistung der PV-Anlage dokumentieren. Kann mir jemand sagen, ob der Zähler dies hergibt (siehe Anhang).


    Danke!

    Ausgabe.txt

  • Hallo Alex,

    was für ein Zähler? Hauptzäher 2-Richtung (Netzbetreiber)? Oder nur PV-Produktion?

    Ich denke Hauptzähler 2-Richtung. Dann wirst du die aktuelle Leistung der PV-Anlage nicht bekommen. Der macht nur saldierende Werte.
    PV-Zähler - klar. Finde bei Tasmota das richtige Skript für deinen Zähler.
    VG

  • Hallo

    Bei Gesamtenergie machen negative Werte gar keinen Sinn!

    Nur bei aktueller Wirkleistung ist das sinnvoll und funktioniert bei den meisten Zählern auch problemlos (z.B. bei meinem Zweirichtungszähler EHZ363)

    Dein Zähler gibt laut Datenblatt bei aktueller Wirkleistung nur den Betrag aus, also auch nur positive Werte.


    Gruß Gerhard



    Pos

    OBIS-T-Kennzahl

    Bezeichnung

    OBIS Kenn- zahl

    Ein- richtungs- zähler
    +A

    Ein- richtungs- zähler
    -A

     

    Zwei- richtungs- zähler
    +A / -A

    Saldie- render Zähler

     

    1

    81 81 C7 82 03 FF

    Hersteller

     

    X

    X

       

    X

    X

       

    2

    01 00 00 00 09 FF

    Gerätenum mer

    0.0.9

    X

    X

     

    X

    X

     

    3

    01 00 01 08 00 FF

    Zählwerk pos. Wirkenergie, tariflos

    1.8.0

    X

    X

    4

    01 00 02 08 00 FF

    Zählwerk neg. Wirkenergie,

    tariflos

    2.8.0

    X

    X

    X

    5

    01 00 01 08 01 FF

    Zählwerk pos. Wirkenergie, Tarif 1

    1.8.1

    X

    X

    6

    01 00 02 08 01 FF

    Zählwerk neg. Wirkenergie, Tarif 1

    2.8.1

    X

    X

    X

    7

    01 00 01 08 02 FF

    Zählwerk pos. Wirkenergie, Tarif 2

    1.8.2

    X

    8

    01 00 0F 07 00 FF

    Aktuelle pos. Wirkleistung Betrag

     

    15.7.0

    X

    X

     

    X

    X

     

    9

    01 00 01 11 00 FF

    Signierter Zählerstand (nur im EDL40- Modus)

    1.17.0

    X

    X

    10

    81 81 C7 82 05 FF

    Public Key

     

    X

    X

       

    X

    X

       
  • Gelöst: ED300L (EMH) stellt nun auch die aktuelle Wirkleistung bei Einspeisung mit negativen Werten dar.


    Danke gemu2015 !


    https://github.com/gemu2015/Sonoff-Tasmota

    https://github.com/arendst/Tasmota/issues/8001


    Übrigens hast du ja völlig recht:

    Zitat

    Hallo

    Bei Gesamtenergie machen negative Werte gar keinen Sinn!

    Nur bei aktueller Wirkleistung ist das sinnvoll und funktioniert bei den meisten Zählern auch problemlos (z.B. bei meinem Zweirichtungszähler EHZ363)

    Dein Zähler gibt laut Datenblatt bei aktueller Wirkleistung nur den Betrag aus, also auch nur positive Werte.

    Das meinte ich auch nicht. Aber du selber hast es nun gelöst ... und wie du auf git angemerkt hast ... ist der Zähler blöd :-).
    Habe mich wahrscheinlich zu umständlich ausgedrückt.

    Nochmals Danke für die tolle Arbeit!


    Horst

  • Hallo,

    ich habe einen Logarex lk13bd Zähler und konnte folgene Inofs im Internet finden. Damit soll es wohl möglich sein den gesamt Verbrauch auszulesen.


    7E1

    300 baud, 1 Startbit, 7 Datenbits, 1 Paritätsbit, 1 Stoppbit Modus C


    Leider kann ich als DAU mit diesen Daten nichts anfangen.

    Ich habe einen leicht modifizierten TCRT5000 im EInsatz. Dieser ist wie folgt an meinen NodeMCU angeschlossen:

    D0 -> RX

    GND -> G

    VCC -> 3V

    In Tasmota habe ich folgende Anpassungen vorgenommen:

    my_user_config.h:


    #define USE_SML 300

    #define USE_SML_M


    ssns_53_sml:


    #define SML_BAUDRATE 300

    #define METER EHZ161_0


    Leider bekomme gar nichts angezeigt. Ich denke es liegt an dem Startbit, welches gesendet werden muss. Leider bin ich überfragt :/

  • 7E1

    300 baud, 1 Startbit, 7 Datenbits, 1 Paritätsbit, 1 Stoppbit Modus C


    Leider kann ich als DAU mit diesen Daten nichts anfangen.

    Dann nochmal ca. 10-15 Seiten des Threads rückwärts lesen und auch das HowTo lesen!

    Die Art wie du den Zähler definieren möchtest (Hardcoded) gibt es zwar noch, ist aber nicht mehr Zeitgemäß. Inzw. findet das alles im Scripter statt. Auch solltest du von der Definition in der "my_user_config.h" - Datei absehen und dies über die "user_config_override.h" regeln.

    Die Parität von 7E1 wird automatisch eingestellt wenn du einen Zähler als OBIS Zähler definierst. Die Baudrate (300) lässt sich ebenso im Scripter später einstellen.