D0 Zähler SML auslesen mit Tasmota

  • Hallo zusammen,

    ich lese derzeit meine beiden Stromzähler (PV / Bezug) aus. Leider bekomme ich nicht alle Daten in den ioBroker. Hierfür verwende ich den Sonoff Adapter und MQTT. Seltsamerweise werden nur die Daten des zweiten Zählers übermittelt. Mein Skript sieht wie folgt aus:

    >D

    >B

    ->sensor53 r

    tper=10

    >M 2

    +1,3,s,0,9600,

    +2,14,s,0,9600,

    1,77070100240700ff@1,Leistung L1,W,LeistungL1,2

    1,77070100380700ff@1,Leistung L2,W,LeistungL2,2

    1,770701004C0700ff@1,Leistung L3,W,LeistungL3,2

    1,77070100100700ff@1,Leistung L1+L2+L3,W,Power_curr,2

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

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

    1,77070100000009ff@#,Zählernummer,,Meter_number,0

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

    2,77070100100700ff@1,Aktuelle Leistung,W,Power_curr,0

    2,77070100010800ff@1000,Zählerstand,kWh,Total_in,2

    2,77070100000009ff@#,Zählernummer,,Meter_number,0

    #

  • Im Sonoff Adapter "Automatisches generieren von Datenpunkten für tele state und sensor angeklickt? bzw. einen Haken gesetzt?

  • Im Sonoff Adapter "Automatisches generieren von Datenpunkten für tele state und sensor angeklickt? bzw. einen Haken gesetzt?

  • Ich habe mir nun den Momentanverbrauch berechnet. Ich hatte hier auch schon irgendwo gelesen wie ich diesen Wert per MQTT übertragen kann - finde es aber leider nicht mehr :( Eventuell kann mir da noch mal jemand auf die Sprünge helfen :)

    Vielen Dank und frohe Ostern.

  • Ich habe mir nun den Momentanverbrauch berechnet. Ich hatte hier auch schon irgendwo gelesen wie ich diesen Wert per MQTT übertragen kann - finde es aber leider nicht mehr :( Eventuell kann mir da noch mal jemand auf die Sprünge helfen :)

    Vielen Dank und frohe Ostern.

    Sofern beim kompilieren deiner TasmotaFW du folgendes definiert hast:

    Code
    #define USE_SCRIPT_JSON_EXPORT

    siehe: LINK

    dann ist eine Möglichkeit:

    Code
    >J
    ,"Regen_mm":%3r%
    ,"Strom_Heute":%3sd%
    ,"Strom_Vortag":%3vs%
    ,"Wasser_Heute":%3wd%
    ,"Wasser_Vortag":%3vw%
    ,"Gas_Heute":%3gd%
    ,"Gas_Vortag":%3vg%
    ,"Gesamtkosten":%2y€%
    ,"Guthaben":%2gh%

    Wobei die entsprechenden Variablen z.B.: %3r% deinen Variablen entsprechen müssen.

    Die Zahl vor der Variable gibt die Dezimalstellen an.

    Der Name in den Anführungszeichen, dementsprechend den späteren Datenpunkt.

    Eine andere alternative, allerdings nicht getestet:

    Code
    >T
    =>publish tele/%topic%/SENSOR {"Regen_mm":%3r%} 

    Musst dir ggf. mal den richtigen JSON String zurecht fuchsen.

    Frohe Ostern.

  • Hey,

    ich versuche gerade meinen Gaszähler BK-G4MT mit aufzunehmen. Heute kam von Reichelt mein Reedkontakt (MK 471B).

    Mein Script vorher:

    Nun die Anpassung für den Gaszähler dazu:

    Wenn ich das Script so speichere liest der Sensor für den Stromzähler nichts mehr aus. Der NodeMCU verhält sich seltsam sobald der Reedkontakt angeschlossen ist. Regiert nicht immer, stürzt mit exceptions ab ( Restart-Reason: Exception) etc.

    Den Reedkontakt habe ich wie folgt angeschlossen. Eine Seite an GND und eine Seite an 10k und dann an D4. Hat jemand eine IDee woran das liegen könnte?

    PS: Habe es nun wie folgt angeschlossen:

    Ein Ende an GND

    Ein Ende an D3 und über 10k an 3,3V

    Leider bleibt das verhalten unverändert.

    Sobald ich den Gaszähler deklariere:

    +2,4,c,0,50,GAS

    und aus >M 1 >M 2 machen liefert der Stromsensor keine Werte mehr.

    Einmal editiert, zuletzt von fanavity (14. April 2020 um 15:06)

  • Hallo zusammen,

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

    Ich habe aktuell einen Raspi mit vzlogger laufen, an dem zwei Serial>USB Adapter mit angeschlossenen IR-Empfängern (Eigenbau) mit 4,7kOhm (?) stecken. Der vzlogger schiebt die Daten dann in eine InfluxDB zur Auswertung.

    Das würde ich jetzt gern mit einem NodeMCU ersetzen. Jetzt die Fragen:

    1. Kann ich an einem Arduino zwei IR-Dioden anstecken und mir über Tasmota ausgeben lassen

    2. Kann Tasmota evtl. sogar eine Influxdb bestücken?

    Ich hab so leidlich Erfahrung mit C++ und hab mir schon den Code für einen Impulsnehmer für meinen Gaszähler zusammengeklöppelt, der in eine Influx schreibt. Bei SML und Serial ist bei mir aber leider kaum Wissen vorhanden.

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

    Ach ja. Zähler sind die EMH eHZ von der LEW. Ein Erzeugungszähler und ein Zweiwegezähler Bezug/Lieferung.

    Vielen Dank!
    Michael

  • Allerdings habe ich doch starke Abweichungen beim Verbrauch. Mein via IR Transistor ausgelesener Q3B hat über 24h fast 1kW mehr Verbrauch auf der Uhr als es der SBC hat.

    Im Allgemeinen würde ich sagen, dass die Janiza oder auch SDM Geräte genauer auflösen.

    Wie sind deine Erfahrungen damit?

    Hi Sunburst,

    gesundes Neues ;)

    Finale Aussage zu den Thema (s.o.): nach knapp 4 Monaten und 1560 kWh sind es immer noch ca. 1,2% Abweichung.

    Also ich denke die Dinger liegen im Limit. Viel Erfolge noch!

    Ekkehard.

  • Hallo

    du darfst an GPIO 0,1,2 KEINE reed Kontakte oder Schalter anschliessen, da sonst die CPU nicht mehr richtig booten kann.

    (D3=GPIO0) (D4=GPIO2)

    Gruß Gerhard

    Das Ändern des GPIO auf 12 (D6) ändert an dem Verhalten leider nichts. Sobald ich im Script > M1 auf > M2 ändere werden keine Werte mehr vom Stromzähler gelesen. Wenn ich dann Debug aktiviere wird mir auch nichts mehr ausgespuckt.

  • Das Ändern des GPIO auf 12 (D6) ändert an dem Verhalten leider nichts. Sobald ich im Script > M1 auf > M2 ändere werden keine Werte mehr vom Stromzähler gelesen. Wenn ich dann Debug aktiviere wird mir auch nichts mehr ausgespuckt.

    Nicht das ich denke, dass es daran liegt, allerdings könntest du mal statt eines externen Pullups, einfach den vom Wemos nehmen. Dazu im Script einfach die 0 hinter dem "c" durch eine "1" ersetzen.:

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

    natürlich dann den Pullup den du angelötet hast entfernen. Brauchst dann quasi das Relais nur noch an deinem Pin und GND anschließen.

    Viele Wemos D1 mini Clones aus China haben einen falschen Spannungsregler verbaut. Dazu kannst du im Internet viel finden. Das Problem ist,dass dieser falsche Spannungsregler nicht genug Strom liefert. Oft nicht einmal genug Spannung um überhaupt die Platine zu betreiben. Jedes weitere Gerät welches dann dort angeschlossen wird und Strom verbraucht führt dazu, dass der ESP nicht mehr genug Strom bekommt und es dadurch zu den verrücktesten Fehlern kommt. Von WIFI/MQTT Verbindungsfehlern über ständige Neustarts bis zum kompletten aufhängen.

    Hier ein Infolink zu dem Thema.

  • 1. Ja kannst du. Du kannst mehrere Zähler mit dem Treiber auslesen.

    2. Nein InfluxDB läuft nicht direkt auf dem ESP8266. Du musst also definitiv ein Gerät haben auf dem die INFLUXDB installiert ist und auf dem du MQTT Nachrichten empfangen kannst, und dies umsetzen kannst um Sie in der Datenbank zu speichern.

    Eine Möglichkeit ist z.b. ioBroker auf einem RaspberryPi mit dem installierten Sonoff Adapter und dem InfluxDB Adapter. Zusätzlich auch mit der InfluxDB Datenbank. Von dem Wemos D1 Mini oder einem NodeMCU welches du an deinem Zähler angebracht hast, kannst du die Daten dann an das Raspberrypi schicken. Empfangen werden sie dann von dem iobroker sonoff Adapter oder eines anderen MQTT Adapters und lassen sich von dort aus mithilfe des InfluxDB Adapters in die Datenbank überspielen.


    ––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––

    Viele Infos zum SML Treiber findet Ihr zusammengefasst in meinem HOWTO!

  • Hi fanavity

    Habe dein Script getestet (hab natürlich nicht deinen Zähler)

    kein Unterschied ob M 1 oder M 2 die Anforderung wird immer gesendet.

    Allerdings ist mir aufgefallen dass du über Pin 12 sendest. Falls du aber einen 7E1 Zähler hast (wie die meisten OBIS Zähler) geht das nur über Pin 3

    also Hardware serial. (TX)

    Leider kann ich ohne den passenden Zähler nicht mehr testen

    Gruß Gerhard

  • Vielen Dank für die Ausführungen. Das es nur an pin 3 funktionieren kann kann finde ich merkwürdig. Da der Zähler seit Tagen problemlos läuft. Sobald ich m2 schreibe kommen keine Daten mehr. Ansonsten läuft es problemlos. Finde ich seltsam. Ich kann es ja mal mit pin 3 Testen. Rx\Tx

    Ich melde mich nachher nochmal :)

  • Vielen Dank für die Ausführungen. Das es nur an pin 3 funktionieren kann kann finde ich merkwürdig. Da der Zähler seit Tagen problemlos läuft. Sobald ich m2 schreibe kommen keine Daten mehr. Ansonsten läuft es problemlos. Finde ich seltsam. Ich kann es ja mal mit pin 3 Testen. Rx\Tx

    Ich melde mich nachher nochmal :)

    Hier gibt es weiter unten auf der Seite eine Liste mit den GPIOs die verwendet werden können. bzw. welche Funktionen sie noch haben. Dort ist auch noch einmal der Hinweis, dass GPIO0 und 2 fürs Booten verwendet werden.

  • Hm. Irgendwie verstehe ich es nicht.

    Habe die Pins nun abgeändert.

    Mit folgendem Script läuft der Stromzähler problemlos.:

    Wenn ich es dann zu >M 2 ändere bekomme ich keine Werte mehr vom Stromzähler.

  • Deine Antwort macht mich gerade etwas stutzig. Zur definition muss ich doch den GPIO-Pin angeben oder nicht?

    Denn bei dem NodeMCU ist PIN3 TX allerdings ist das GPIO1 und RX ist PIN4 was GPIO3 ist. Demnach geben ich im Script doch 3(RX) und 1(TX) an oder nicht?

    GPIO14 entspricht dann D5 auf dem NodeMCU, darauf habe ich nun den Reedkontakt gelegt. Oder ist mein vorgehen falsch?