D0 Zähler SML auslesen mit Tasmota

  • Hast du noch irgendeine Idee was ich testen könnte?

    Gerade das Script auf einen meiner Wemos geladen die hier rumlagen. Kann deinen Fehler auch nicht nachvollziehen. Läuft mit >M 2

    Hast du alle unnötigen Leerzeichen entfernt?

    Denk dran, wenn du keinen externen Pullup verwendest, musst du für den Gaszähler den internen vom Wemos oder NodeMCU verwenden. Dementsprechend also deine Zeile so ändern:

    Code
    +2,14,c,1,50,GAS

    Hast du in den Geräteeinstellungen dein Gerät auf Generic(18) gestellt und alle GPIOs auf None stehen?

    Seriallog ausgeschaltet?

    Ich weiß nicht ob das einen Einfluss darauf hat, das kann gemu2015 vielleicht beantworten. Wenn man #define COUNTER nicht mit kompiliert hat?

  • Ändert leider nichts. Werde mir jetzt mal einen neuen NodeMCU verstellen. Oder was nehmt ihr?

    Unterschiedlich.

    Mit nem NodeMCU machst du denke ich nichts verkehrt.

    Soll es ein Wemos d1 mini sein, dann achte auf die bereits genannten Probleme mit dem LDO.

    Auf der Herstellerseite "Wemos.cc" findest du die Links wo du die originalen Geräte kaufen kannst.

  • Ich habe nun einen neuen NodeMCU v3 von AZDelivery. Leider nach wie vor das selbe Verhalten. Sobald ich M2 eintrage werden keine Werte mehr ermittelt. Wenn ich dann Debug für den Stromzähler aktiviere erhalte ich auch keine Ausgaben mehr.

  • Ich habe nun einen neuen NodeMCU v3 von AZDelivery. Leider nach wie vor das selbe Verhalten. Sobald ich M2 eintrage werden keine Werte mehr ermittelt. Wenn ich dann Debug für den Stromzähler aktiviere erhalte ich auch keine Ausgaben mehr.

    Ok. Mal einen Rundumschlag damit man mal alles auf einem Blick hat.

    Schreib doch mal alles auf was nun Stand der Dinge ist.

    D.h.: Dein Skript posten, deine Verkabelung, wie du kompiliert hast>also mit welchen Defines in welcher Datei.

    Wie versorgst du das Gerät überhaupt mit Strom?

    Evtl. Logs falls wichtig oder nötig.

    Vielleicht auf die Weblog ausgabe bei einmal mit >M 1 und >M 2.

    Ausserdem sollte vorher die Logausgabe auf "weblog 4" also Debug gestellt werden.

  • user_confog_override.h

    Mein aktuelles Script:

    Dort sieht man ja auch wie es angeschlossen ist. Der Gaszähler funktioniert auch ( wie im letzten Log zu sehen). Allerdings kann ich keinerlei Lebenszeichen mehr vom Stromzähler wahrnehmen sobald M 2 "aktiv" ist.


    WEBLOG 4 M2


    WEBLOG 4 M1



    WEBLOG 4 M2 Sensor53 d1


    Der NodeMCU wird mit meinem "alten" Netzteil vom Raspberry PI 3 betrieben -> 2,5A 5V. Das hat den PI immer problemlos mit Strom versorgt.

  • fanavity

    Habe zwar keinen OBIS Zähler aber ich denke ich habe das Problem gefunden. Kann es reproduzieren.

    gemu2015

    Die Zeit ist das Problem.

    Wie von fanavity beschrieben, funktioniert sein Skript solange er nur >M 1 benutzt. Bei >M 2 sendet er keinen Triggerstring mehr.

    Konnte folgendes reproduzieren:

    Code
    >M 2
    +1,3,o,0,300,STROM,1,9,2F3F210D0A,063030300D0A

    funktioniert. Sobald die Trigger Zeit größer 9 ist, und >M 2 funktioniert er nicht mehr.

    Also es muss entweder die Zeit auf <=9 gesetzt werden oder nur ein Meter definiert sein.

    Die Baudrate hat anscheinend keinen Einfluss darauf. Auch eine Baudrate von 9600 bei 10*100ms Triggerzeit läuft nicht unter >M 2.

    Scheint also ein Bug zu sein gemu2015 ?

    Grüße.

  • vielen Dank für die schnelle Anpassung. Jetzt scheint beides zusammen zu laufen. Allerdings scheint der Gaszählern nun nicht ganz zu passen. Dieser zählte gerade munter obwohl gar nichts verbraucht wurde. Nach kurzer Zeit ist er dann stehen geblieben und hat aufgehört zu zählen. Ich muss jetzt mal schauen wie ich den aktuellen Zählerstand setzen kann und dann beobachte ich mal wie genau der Gasverbrauch ist. Sorry für die doofe Frage, aber wo genau stelle ich denn die cbm menge je Impuls ein? Und noch mal VIELEN DANK!


    PS: seltsamerweise zählt der Gaszählern nun relativ willkürlich obwohl gar kein Gas verbraucht wird. Kann das sein oder ist bei meinem Aufbau nun etwas faul?

    Einmal editiert, zuletzt von fanavity (21. April 2020 um 20:26)

  • vielen Dank für die schnelle Anpassung. Jetzt scheint beides zusammen zu laufen. Allerdings scheint der Gaszählern nun nicht ganz zu passen. Dieser zählte gerade munter obwohl gar nichts verbraucht wurde. Nach kurzer Zeit ist er dann stehen geblieben und hat aufgehört zu zählen. Ich muss jetzt mal schauen wie ich den aktuellen Zählerstand setzen kann und dann beobachte ich mal wie genau der Gasverbrauch ist. Sorry für die doofe Frage, aber wo genau stelle ich denn die cbm menge je Impuls ein? Und noch mal VIELEN DANK!


    PS: seltsamerweise zählt der Gaszählern nun relativ willkürlich obwohl gar kein Gas verbraucht wird. Kann das sein oder ist bei meinem Aufbau nun etwas faul?

    Falls du immer noch das Skript vom vorherigen Post verwendest:

    Spoiler anzeigen

    Und dabei keinen externen PullupWiderstand an deinem Reedkontakt hast, dann funktioniert das so nicht.

    Also wenn du kein Pullup hast, dann schalte einfach den internen Pullup von dem NodeMCU ein. indem du die Definition vom Gaszähler auf:

    Code
    +2,14,c,1,50,GAS

    änderst.

    So brauchst du nur den einen Draht des Reedkontaktes an GPIO14 anschließen und den anderen an GND. Fertig.

  • Hallo zusammen,

    ich hab jetzt versucht das Thema von vorne durchzulesen, hab aber irgendwann den Überblick verloren. Daher entschuldigt bitte die Fragen...

    Wäre klasse, wenn ich hier einen Hinweis auf einen Ansatz für mein Problem finden könnte. Falls ihr auch Lösungen ohne Tasmota kennt, die ich mit zwei IR-Lesern adaptieren könnte, wäre das auch interessant...

    Hi,

    um meinen Stromzähler auszulesen, habe ich mir ein reines SML-to-MQTT-Gateway auf Basis des ESP8266 gebaut.

    Möglicherweise ist das für Dich interessant: https://github.com/mruettgers/SMLReader

    Telegraf (der Datensammler von InfluxDB) hat auch einen MQTT-Consumer, mit dem Du direkt vom MQTT-Broker Daten importieren kannst.

    Verwende ich bspw. in Verbindung mit NodeRED, also NodeRED sammelt alle Metriken (SMLReader, 1wire-Temperatursensoren, KNX-Sensordaten, etc.) und stellt die dann Telegraf per MQTT unter einem bestimmten Topic zur Verfügung.

    Müsste aber auch direkt vom SMLReader aus per MQTT in Richtung Telegraf gehen, habe ich nur noch nicht ausprobiert.

    Viele Grüße,

    Michael

    Einmal editiert, zuletzt von mruettgers (1. Mai 2020 um 22:51)

  • Hallo Zusammen,

    anscheinend ist mein esp-01 Stromsensor abgeschmiert.
    Und schon fingen die Probleme an, neues Realease Tasmota rauf, Script rein, und es kommt nur stotterhaft an.

    Mal habe ich werte, mal nicht bzw. nullen....

    Natürlich eine ältere Version die man vermeindlich damals drauf geschmissen hat zu Universal/Universal2 Zeiten
    rauf geschmissen, liest zwar regelmäßig, also ohne aussetzter das werte fehlen, aber die Werte
    sind alles andere als Richtig, vollkommen falsche Werte werden angezeigt, statt verbrauch um die 47000 werden
    etwas um die 84000 angezeigt usw.

    Also ich vermute wie auch schon URBANsUNITED vor einigen Posts geschrieben hatte, dass sich da im Bereich des Treibers für
    die Stromzähler was verändert hat....

    Wie gesagt, der Alte Stand liest alles werte aber falsch, ich vermute das war eher eine Zwischen Version zum testen
    und die Aktuellste liest nicht alle Werte überspringt ständig etwas.

    Zähler ist der Q3D

    hat jemand Erfahrungen, was da anders ist?

    gemu2015
    weißt Du irgendwas oder welche Version ich wo laden kann die noch geht?

    Ideal wäre schon eine mit script

    Danke Euch
    Gruß Jens

  • AingTii

    Mir persönlich ist nichts bekannt. Aber seit der Uni2 ist ja auch schon verdammt viel Zeit und Entwicklung vergangen.

    Vielleicht wäre ein Ansatz, dass du mal dein Script postest welches du für die aktuelle Tasmotaversion verwendest und auch wie deine Hardwarekonfiguration aussieht =)!

    Viele Grüße.

  • Hallo Zusammen,

    AingTii

    Mir persönlich ist nichts bekannt. Aber seit der Uni2 ist ja auch schon verdammt viel Zeit und Entwicklung vergangen.

    Vielleicht wäre ein Ansatz, dass du mal dein Script postest welches du für die aktuelle Tasmotaversion verwendest und auch wie deine Hardwarekonfiguration aussieht =)!

    Viele Grüße.

    Ja das stimmt, aber wie heißt es so schön, never touch a Running system.
    Nachdem ich Gestern noch so einiges Probiert hatte und die original release 7 runtergeladen hatte, und diese "hardware mäßig"
    mit dem 53er sml konfiguriert habe läuft es wieder. Alles ohne script

    ich schaue gleich noch mal eben nach dem script den ich genutzt hatte

    wobei die Widerstände je 10K sind..


    eigentlich wollte ich das bereits in ein Gehäuse packen, aber leider gab es dann ja die Probleme...

    der script der nur ab un an einige Werte ausgab in der uni8...

    Gruß Jens

    Einmal editiert, zuletzt von AingTii (8. Mai 2020 um 06:29)

  • Hallo in die Runde,

    ich habe ein Problem beim Auslesen meines "eBZ D33 2R06 DTA-SMZ1" Stromzaehler.

    Zum Auslesen benutze ich einen "BPW40" Fototransistor an einem "Wemos D1 mini" mit einem 10kOhm Pullup Widerstand.

    Prinzipiell funktioniert das Auslesen mit folgendem Script prima:

    Der Verbrauch "Aktual_in" wird auch immer korrekt ausgelesen und angezeigt. Beim Gesamtverbrauch "Total_in" kommt es alle 200-300 Auslesevorgaenge zu einzelnen Ausreissern (nach oben und unten)

    nach oben:

    Code
    11:51:34 MQT: keller/stromzaehler/STATE = {"Time":"2020-05-06T11:51:34","Uptime":"5T14:23:55","UptimeSec":483835,"Heap":22,"SleepMode":"Dynamic","Sleep":50,"LoadAvg":19,"MqttCount":4,"Wifi":{"AP":1,"SSId":"FFNB-WLAN","BSSId":"E0:28:6D:BB:B9:E6","Channel":1,"RSSI":60,"Signal":-70,"LinkCount":2,"Downtime":"0T00:00:09"}}
    11:51:34 MQT: keller/stromzaehler/SENSOR = {"Time":"2020-05-06T11:51:34","SML":{"Total_in":752.82,"Aktual_in":264.62}}
    11:52:34 MQT: keller/stromzaehler/STATE = {"Time":"2020-05-06T11:52:34","Uptime":"5T14:24:55","UptimeSec":483895,"Heap":22,"SleepMode":"Dynamic","Sleep":50,"LoadAvg":19,"MqttCount":4,"Wifi":{"AP":1,"SSId":"FFNB-WLAN","BSSId":"E0:28:6D:BB:B9:E6","Channel":1,"RSSI":62,"Signal":-69,"LinkCount":2,"Downtime":"0T00:00:09"}}
    11:52:34 MQT: keller/stromzaehler/SENSOR = {"Time":"2020-05-06T11:52:34","SML":{"Total_in":1055608171.43,"Aktual_in":261.27}}
    11:53:34 MQT: keller/stromzaehler/STATE = {"Time":"2020-05-06T11:53:34","Uptime":"5T14:25:55","UptimeSec":483955,"Heap":22,"SleepMode":"Dynamic","Sleep":50,"LoadAvg":19,"MqttCount":4,"Wifi":{"AP":1,"SSId":"FFNB-WLAN","BSSId":"E0:28:6D:BB:B9:E6","Channel":1,"RSSI":62,"Signal":-69,"LinkCount":2,"Downtime":"0T00:00:09"}}
    11:53:34 MQT: keller/stromzaehler/SENSOR = {"Time":"2020-05-06T11:53:34","SML":{"Total_in":752.83,"Aktual_in":259.37}}

    nach unten:

    Code
    13:06:20 MQT: keller/stromzaehler/STATE = {"Time":"2020-05-08T13:06:20","Uptime":"0T20:59:09","UptimeSec":75549,"Heap":24,"SleepMode":"Dynamic","Sleep":50,"LoadAvg":19,"MqttCount":1,"Wifi":{"AP":1,"SSId":"FFNB-WLAN","BSSId":"E0:28:6D:BB:B9:E6","Channel":1,"RSSI":56,"Signal":-72,"LinkCount":1,"Downtime":"0T00:00:03"}}
    13:06:20 MQT: keller/stromzaehler/SENSOR = {"Time":"2020-05-08T13:06:20","SML":{"Total_in":771.60,"Aktual_in":3332.56}}
    13:07:20 MQT: keller/stromzaehler/STATE = {"Time":"2020-05-08T13:07:20","Uptime":"0T21:00:09","UptimeSec":75609,"Heap":24,"SleepMode":"Dynamic","Sleep":50,"LoadAvg":19,"MqttCount":1,"Wifi":{"AP":1,"SSId":"FFNB-WLAN","BSSId":"E0:28:6D:BB:B9:E6","Channel":1,"RSSI":56,"Signal":-72,"LinkCount":1,"Downtime":"0T00:00:03"}}
    13:07:20 MQT: keller/stromzaehler/SENSOR = {"Time":"2020-05-08T13:07:20","SML":{"Total_in":0.00,"Aktual_in":3322.00}}
    13:08:20 MQT: keller/stromzaehler/STATE = {"Time":"2020-05-08T13:08:20","Uptime":"0T21:01:09","UptimeSec":75669,"Heap":24,"SleepMode":"Dynamic","Sleep":50,"LoadAvg":19,"MqttCount":1,"Wifi":{"AP":1,"SSId":"FFNB-WLAN","BSSId":"E0:28:6D:BB:B9:E6","Channel":1,"RSSI":54,"Signal":-73,"LinkCount":1,"Downtime":"0T00:00:03"}}
    13:08:20 MQT: keller/stromzaehler/SENSOR = {"Time":"2020-05-08T13:08:20","SML":{"Total_in":771.72,"Aktual_in":3324.90}}

    Da das "Aktual_in" immer funktioniert, gehe ich nicht von einem Problem mit dem Leser aus (ich habe ihn aber auch schon verschiedentlich neu positioniert - immer das Gleiche).

    Als "flag"-Attribut im Script habe ich sowohl mit "0", "1" als auch mit "16" getestet. Das Ergebnis aendert sich nicht.

    Prinzipiell wuerden die Aussreisser ja nicht stoeren - da ich zur Visualisierung aber "Grafana" benutze, zerschiesst es mir darin die Skalierung, wenn ploetzlich ein Wert 484GWh ist.

    Hat jemand eine Idee, was ich noch probieren koennte?

    Vielen Dank!

    Gruss,

    Jan