D0 Zähler SML auslesen mit Tasmota

  • Pumo


    Habe den Zähler auch vor ca. 4 Wochen bekommen.


    Aktuell ist bei mir der folgende Stand.


    Meine Hardware ist der Volkszähler Lesekopf und ein Sonoff S20. Der Lesekopf kann an die Pins angeschloßen werden, die auch zum flashen genutzt werden. RxD & TxD müssen aber genau wie beim UART getauscht werden.


    Ich bin mir nicht sicher, aber eventuell muss die PIN deaktiviert sein, bevor man über die Schnittstelle Daten geliefert bekommt.


    Habe zuerst Tasmota mit dem Zählertyp "#define **METER EHZ161_1" geflasht. Mit der Einstellung wurde die Zählernummer an angezeigt. Bei Verbrauch und aktueller Verbrauch wurde aber nichts angezeigt.


    In der Konsole wurde aber nach dem Kommando "Sensor95 d1" folgendes ausgegeben (Zählernummer für Forum verändert).


    Habe mir dann (gerade vor 1h) einen eigenen Zählertyp in der xsns_95_sml.ino angelegt, weil beim EHZ161_1 nur 4 Nachkommastellen angegeben sind und unser 8 hat. Außerdem tauchte die Einspeisung nicht in der Konsole auf.


    Meine Definition für den Zähler sieht aktuell so aus.

    Code
    1. #if METER==EBZ06_1
    2. #define METERS_USED 1
    3. struct METER_DESC const meter_desc[METERS_USED]={
    4. [0]={0,'o',0,SML_BAUDRATE,"OBIS"}};
    5. const uint8_t meter[]=
    6. "1,1-0:1.8.1*255(@1," D_TPWRIN ",KWh," DJ_TPWRIN ",8|"
    7. "1,1-0:16.7.0*255(@1," D_TPWRCURR ",W," DJ_TPWRCURR ",2|"
    8. "1,1-0:0.0.0*255(@#)," D_METERNR ",," DJ_METERNR ",0";
    9. #endif

    Leider wird aktuell auch damit nicht mehr die Zählernummer angezeigt.


    Mein Verdacht war, dass ich die richtige Anzahl der Nachkommastellen in der Definition angeben muss. Eventuell ist das aber auch nur für die Anzeige. Vielleicht kennt Sicht ja jemand anders damit aus und kann uns da weiter helfen.


    Bin ab Sonntag für 5 Tage im Kurzurlaub und habe auch erst danach wieder Zeit das Problem weiter zu verfolgen.

  • Pumo


    Habe den Volkszähler mit TTL im Einsatz. Habe in bei Ebay fertig gekauft, weil ich keine Lust hatte, mir das selber zu bauen. Das Kabel habe ich dann noch mit Kabelklemmen fixiert. Der Lesekopf sitz nicht besonders fest mit dem Magneten und so kann er nicht verrutschen. Die Klemmen habe ich von Amazon.


    Das ganze sieht jetzt so aus.


    Ich habe noch etwas an der Konfiguration angepasst. Als ich die dann flashen wollte, habe ich festgestellt, dass ein Kabel vom Lesekopf nicht mehr verbunden war. Das hatte ich scheinbar nur geklebt und nicht gelötet. ;-) Deswegen wurde dann auch nichts angezeigt.


    Nachdem ich die Änderungen geflasht habe, wurden auch Werte angezeigt.


    Hier noch mal meine Änderungen an der xsns_95_sml.ino (nur die Stellen, die ich eingefügt habe).

  • Wie ich zuvor geschrieben habe funktioniert die Anbindung für meine Zähler eBZ06 inzwischen und die Werte werden auch per MQTT an FHEM übertragen und ausgewertet. Zwei Dinge stören mich aber noch.


    1. Per MQTT werden die Daten des Zähler nur alle 5 Minuten verschickt. In der Web-Oberfläche von Tasmota werden die Werte jede Sekunde aktualisiert. Ich würde gerne die Werte per MQTT jede Minute übertragen lassen, habe aber im Wiki von arendst nicht dazu gefunden. Ist das eventuell nur speziell für die Version von gemu2015 machbar, da ist die Doku aber dünn.


    2. Die Anzeige des aktuellen Verbrauch schwankt in der Web-Oberfläche z.T. sehr start (ca. um 150 W). Direkt am Zähler schwankt der Wert auch, aber nicht so extrem. Kennst jemand dieses Problem und die Ursache?


    Dann ist noch eine Sache, die mir nicht zu 100% klar ist. Wenn z.B. alle 5 Minuten ein Wert per MQTT übertragen wird, dann tippe ich mal, das der Wert der Verbrauch zum Zeitpunkt der Übertragung ist. Das ist aber nach meiner Sicht dann nicht so sinnvoll. Wenn ich zwischen zwei Übertragungen ein Gerät mit hohem Verbrauch kurz einschalte, würde das beim aktuellem Verbrauch unter den Tisch fallen und nur im Gesamtverbrauch mit einfließen. Daher wäre es eventuell sinnvoll den Mittel- oder Max-Wert der Zeitspanne zwischen zwei Übertragungen zu übermitteln. Eventuell ist das auch schon so, ich bin mir da aber nicht sicher.

  • Hallo Roadrunner,


    wenn du das senden über rule und Websend machst dann sieht es bei mir so aus:


    zu Frage 1

    • Beispiel:
    • rule2 on Time#Minute|5 do Websend ... ->> die fünf sagt das alle 5 Minuten gesendet wird.
    • evtl. kürzere Zeit dort eingeben


    zu Frage 2

    • mit dem Befehl teleperiod kannst du einstellen wie oft der Wert aktualisiert werden soll, Standard ist auch dort 300 Sekunden "teleperiod 300" für 5 Minuten
    • also in Konsole: "teleperiod 10" eingeben, dann wird alle 10 Sekunden schon mal der Wert aktualisiert.

    So könntest das mal testen, vielleicht hilft das schon.


    Selbst nutze ich kein MQTT

  • Hallo @all,


    so ich habe mich entschieden den Cyble Sensor zurückzugeben, keine ordentliche Funktion möglich.


    Vor ein paar Tagen kam mein Näherungsschalter (Näherungsschalter Heschen LJ12 A3-4-Z/BX), den ich dann Morgens montiert habe.

    • funktioniert bisher problemlos als ganz normaler "Sensor95 c1 counter" mit der Firmware "gemu2015 - Universal3", Stand 10.05.2019
    • bei Gelegenheit werde ich diese wieder aktualisieren
    • Näherungsschalter direkt auf dem Kunststoffglas des Wasserzähler aufgesetzt, hat direkt Impulse aufgenommen von dieser Metallfläche des Wasserzählers

    Zum Anschliesen:

    • mit 3,3V Spannungsversorgung funktioniert der Näherungssensor nicht,
      es müssen 5V Spannungsversorgung sein
    • Funktioniert nur mit dem,
      esp8266 mit CP2102 , so wie ich ihn verschaltet habe, mit nur einem Netzteil
    • Funktioniert nicht mit dem  siehe Beitrag #411 und 412
      esp8266 mit CH340

    Der esp 8266 mit CP2102 NodeMCU gibt bei Spannungsversorgung über seine Micro USB Schnittstelle bei den Anschlüssen Vin und GND auch ca. 5V aus, das macht der esp8266 mit CH340 Chip nicht.



    So jetzt mein Fazit:


    • Der Zähler funktioniert so angeschlossen perfekt.
    • Allerdings hatte ich etliche Probleme den Näherungsschalter ohne Fehlzählungen in Betrieb zu nehmen.
    • Zuerst habe ich mal das Kabel des Näherungsschalters abgeschirmt (ob es Notwendig war weis ich nicht)
    • Danach hatte ich immer noch Fehlzählungen, bis zu mehreren 100 Liter am Tag zuviel
    • Nächster Verdacht Powerline, (Bingo) das war es, Powerline außer Betrieb genommen zählt richtig
    • Mehrmals mit und ohne PL getestet, nur ohne Powerline Fehlerlos
    • Verstehe ich zwar nicht ganz, da der Gaszähler mit gleichen Einstellungen ohne Probleme Funktioniert
    • Gaszähler, Stromzähler und Wasserzähler sind alle im gleichen Raum,
    • Gas und Wasser nur 1m auseinander
    • Gaszähler 50 cm Kabel, Wasserzähler 1 m Kabel

    Einstellungen zu meinen Zählern in "xsns_95_sml.ino" :


  • Hallo meierchen,


    schön das es bei dir jetzt klappt.


    Ich ärgere mich noch mit dem Lichtsensor an meinem Wasserzähler herum. Er zählt auch immer etwas zu viel. Die Zeit habe ich schon erhöht aber vielleicht muss ich auch das Signal "verbessern".



    Kannst du hier mal bitte ein Foto von deiner Metallscheibe posten? Bei mir hat die LED am Sensor nicht regiert. Würde auch lieber den Näherungsschalter benutzen.

  • Hallo,


    meierchen006 kannst du bitte ein Bild vom Aufbau/montierten Schalter posten?

    Ich würde diesen mir bestellen:

    https://www.amazon.de/Heschen-…rmalerweise/dp/B071ZQ6VV6

    Entspricht dem deinen, oder?


    Das Bild 4064-pasted-from-clipboard-png ist nicht anzeigbar. Kannst du das auch noch mal bitte korrigieren?


    Hattest du evtl auch einen Wemos D1 probiert? Der gibt doch auch 5V aus obwohl CH340...

    Obwohl der NodeMCU Lua Lolin V3 sollte 5V aber auch können:


    Vielen herzlichen Dank!


    Bye

    URBANsUNITED

  • Hallo URBANsUNITED,

    • ein Wemos D1 steht mir nicht zur Verfügung.
    • Ja das ist der Sensor den ich gekauft habe.
    • Das mit dem Bild verstehe ich nicht, du hast es doch selbst nochmal in deinem Antwort-Beitrag, ist auch alles drauf.
    • Mit den 5V am Node MCU V3 werde ich testen, OK funktioniert

    Heute mal wieder eine Falschzählung gehabt +7 Liter??

    Ich habe heute mit dem Hochdruckreiniger den Hof gesäubert danach +7 Liter, auch kein Powerline in Betrieb.


    Habe die Pollzeit jetzt mal auf 100 geändert.

    Zitat
    • struct METER_DESC const meter_desc[METERS_USED]={
    • [0]={5,'c',0,100,"H20"}, // GPIO5 (D1) Wasser Zähler
    • [1]={4,'c',0,50,"GAS"}, // GPIO4 (D2) Gas Zähler
    • [2]={3,'s',0,SML_BAUDRATE,"SML"}}; // SML hardware serial RX pin


    So der esp8266 Node MCU V3 mit CH340 Chip ist jetzt wieder in Betrieb und läuft auch.


    Mit Pollzeit 100 werde ich jetzt wieder beobachten.


    Zu der Befestigung des Sensor:

    • an der Wand ein 90° Winkel
    • daran ein ALU Flachblech
    • daran wieder ein Alu Flachblech mit Langloch zum verschieben und um besser zu positionieren des Sensors
    • Langloch an Bild 2 unter der Unterlagscheibe versteckt ;)
    • Bilder sagen mehr als Worte:

      


      

  • meierchen006


    TOP!!!! Vielen herzlichen Dank!! Klasse Bilder und Erklärung :love:! Alles so picko bello bei dir 8|


    Ich hatte in der Zwischenzeit bei mir auf der Arbeit nach einer Montagelösung gesucht und gefunden ohne deine vorher zu kennen:

    Wandhalter


    Lochbohren und den Schieber umdrehen, passt!


    Dein Bild wird bei mir nicht angezeigt. So sieht es aus. Hatte mich auch deswegen abgemeldet, um zu sehen, ob es dann angezeigt wird:


    Mein Schalter kommt Samstag und werde mich dann direkt ranmachen und berichten.


    Nochmals vielen Dank!! Schönen Vatertag morgen 8)


    URBANsUNITED

  • So nachdem der Stromzähler jetzt funktioniert, wollte ich mal den Wasserzähler versuchen.

    Moin Leute,

    habe heute auch meinen Stromzähler DDWS7412.2 entsprechend euren Anleitungen verkabelt und war zunächst guter Dinge weil es scheinbar funktionierte. Der Verbrauch unter Tasmota und am Zähler waren identisch. Nun guck ich gerade eben noch einmal drauf und muss feststellen, dass die Werte nicht stimmen. Ist der akt. Verbrauch über 1000W wird der Wert in Tasmota richtig angezeigt. Schalte ich die 500W Pumpe aus wird am Zähler entsprechend 500 angezeigt über Tasmota allerdings -80W. Ich habe keine Photovoltaikanlage ;)


    Habe ich evlt. was beim Flashen falsch gemacht? Meine Schritte waren user_config_override.h geändert und zwar WLAN und den Befehl #define USE_SML_M hinzugefügt. Mehr nicht! Hätte ich irgendwo noch was ändern müssen?


    Da dieser Beitrag schon sehr viele Seiten und Kommentare hat ist es evtl. sinnvoll für Gas und Wasser einen separaten anzulegen?

  • Hallo Surfrobbe ,


    da kannst du ja Froh sein das was angezeigt wird, die "xsns_95_sml.ino" ist die Hauptdatei um am Zähler was einzustellen, was gelesen werden soll.

    Dort muss der Zähler angepasst werden.


    Bezüglich auslagern von Gas und Wasserzähler, finde ich nicht gut da alles in der eben genannten Datei bearbeitet wird. Lesen muss man das ganze schon.

    Evtl. sollte/könnte ein "Moderator" den Beitragstitel anpassen in:


    SML, OBIS, GAS- u. Wasser- Zähler mit Tasmota


    @all

    mit der Pollzeit von 100 habe ich gestern Abend schon ein Liter zu wenig Wasserverbrauch gehabt, heute Morgen wieder ein Liter zu wenig.

    Also 100 ist zuviel, jetzt mal 75 eingestellt.


    Zitat
    • struct METER_DESC const meter_desc[METERS_USED]={
    • [0]={5,'c',0,75,"H20"}, // GPIO5 (D1) Wasser Zähler
    • [1]={4,'c',0,50,"GAS"}, // GPIO4 (D2) Gas Zähler
    • [2]={3,'s',0,SML_BAUDRATE,"SML"}}; // SML hardware serial RX pin
  • Dann ist noch eine Sache, die mir nicht zu 100% klar ist. Wenn z.B. alle 5 Minuten ein Wert per MQTT übertragen wird, dann tippe ich mal, das der Wert der Verbrauch zum Zeitpunkt der Übertragung ist. Das ist aber nach meiner Sicht dann nicht so sinnvoll. Wenn ich zwischen zwei Übertragungen ein Gerät mit hohem Verbrauch kurz einschalte, würde das beim aktuellem Verbrauch unter den Tisch fallen und nur im Gesamtverbrauch mit einfließen. Daher wäre es eventuell sinnvoll den Mittel- oder Max-Wert der Zeitspanne zwischen zwei Übertragungen zu übermitteln. Eventuell ist das auch schon so, ich bin mir da aber nicht sicher.

    Du hast Recht, dass wenn du die Werte nur alle 5 Minuten sendest, Verbraucher die z.B. nur 1 Minute laufen beim aktuellen Verbrauch vielleicht nicht erfasst werden.

    Bei mir habe ich es so eingestellt, dass der aktuelle Verbrauch und die beiden Zählerstände für Bezug und Einspeisung einmal pro Minute gesendet werden.

    In ioBroker werden diese 3 Werte in einer Datenbank gespeichert.

    Über Grafana habe ich mir Diagramme erstellt.

    Was ich eigentlich sagen wollte, anstatt den aktuellen Verbrauch kannst du die Auswertung auch über die Zählerstände erstellen. Dort erkennst du dann auch das in den 5 Minuten ein größerer Verbrauch erfasst wurde. In Grafana gibt es z.B die Einstellung Difference für den eingestellten Zeitraum.

  • Vielen Dank für die Info bzgl. der Datei meierchen006 . Die Argumentation für Gas/Wasser kann ich Teilen.


    Kalli01 da du den gleichen Zähler hast wie ich, wäre es interessant was du in der xsns_95_sml.ino eingestellt hast. Funktioniert bei dir der aktuelle Verbrauch immer? Ich habe den Zähler noch einmal beobachtet und er springt teilweise gerade bei schnelleren Abweichungen in Tasmota in den negativen Bereich. Der ges. Verbrauch wird richtig dargestellt.

  • Surfrobbe


    Mein letzter Stand ist die Sonoff-Tasmota-Universal3 vom ca 10 Mai 2019. Dort habe ich mir einen neuen Zählereintrag erstellt "#define DWS74 14"

    Für meinen Zähler hat gemu2015 extra sein Programm angepasst, da der Zähler komische Dinge tut. Also so wie bei dir.

    Das ganze steht in der xsns_95_sml Datei als "#define DWS74_BUG"


    Nach gemus Anpassung stimmt der aktuelle Verbrauch. Bis auf meinen Eintrag musste ich nichts umstellen.


    Unter Zählernummer wird mir auch etwas angezeigt aber die Zahlen und Buchstaben habe ich mir nicht weiter angeschaut.