D0 Zähler SML auslesen mit Tasmota

  • Das ist ja aber eine NodeMCU und kein D1 Mini.

    Macht hier keinen Unterschied.

    Pull-Up Widerstände werden für definierte Spannung am Eingang gebraucht,

    macht hier den Unterschied zwischen stabil und instabil bei "Reed-Kontakt nicht geschlossen".

    Beliebigen GPIO kann man für den Reed-Kontakt nicht wählen,

    sonst kann es passieren, dass der ESP8266 nicht mehr startet (bei GPIO0, 2 oder TX z.B.).

    LG

  • Das ist ja aber eine NodeMCU und kein D1 Mini.

    gemu2015 meinte aber in einem Beitrag den ich zitiert habe dass kein Widerstand nötig wäre. Wollte nur auf Nummer sicher gehen. Was bezweckt der Widerstand hier genau eigentlich und was würde passieren wenn ich den Reed kontakt direkt an GND und einen beliebigen GPIO hänge?

    Hier wäre noch ein weiters Schaltbild.

    Bzgl. Pull-Ups und Pull-Downs könntest du dir die Erklärung hier anschauen.

    Im Prinzip ist ein NodeMCU nur ein anderes Entwicklerboard. Hat aber den gleichen Chip, den ESP8266, an Board.

    meierchen006 hat letztens eine wunderbare Zusammenstellung von Informationen in diesem Beitrag gesammelt.

    Tatsächlich ist es so, dass man nicht jeden GPIO verwenden kann. Es gibt beim Wemos aber auch beim NodeMCU bestimmte GPIOs die beim einschalten des Boards, einen bestimmten Zustand haben müssen. High oder Low. Wenn sie dies nicht haben, z.B. weil sie durch einen pullup widerstand "High" gezogen werden, fährt der ESP8266 nicht in den normalen Modus sondern unter Umständen in den Flash Modi.

    Auch dazu gibt es Informationen im Internet. Siehe Liste im Link.

    Generell gilt das die GPIOs nur 3,3V vertragen. Allerdings stimmt dies nicht ganz wie hier nachzulesen ist.

    Aber, mit 3,3V bist du in jedem Falle erstmal auf der sicheren Seite.

    Bei mir läuft der Reedkontakt am besten wenn er ganz weit rechts (wenn man drauf schaut) in der Vertiefung unter der Zählertrommel angebracht wird.

    Viel Erfolg!

  • Irgendwie will mein Zusatzspeicher nicht. Es bleibt bei

    1536 chars left

    // -- zusätzlicher Speicher I2C 24C256 ----------------

    #define USE_24C256

    Ist in meiner override, in den Einstellungen habe ich auch SDA & SCL angegeben.

    Muss ich noch was machen? All 4 Leitungen sind mit den an den anderen angeschlossen. Mittlerweile ein ganz schönes Kabelgewirr :huh:

  • Vielleicht haben sie die gleiche Adresse? Kein Plan ob es bei dem Speicher zum tragen kommt. Bei manchen I2C Geräten kann man die Adresse recht einfach mit einer Lötbrücke oder umstecken eines Jumpers ändern. Vielleicht wäre das eine Möglichkeit?

    meierchen006 Mir ist aufgefallen, dass der Wert für 0Uhr erst um 1 Uhr resettet wird. Ich denke, dass es im skript auf 23 Uhr gestellt werden müsste.

  • URBANsUNITED

    gib mal in der Konsole i2cscan ein, dann solltest du ein device mit Adresse 0x50 sehen.

    Wenn ja, wird das EEPROM gefunden und der Speicher sollte eigentlich erweitert werden

    Nope

    {"I2CScan":"No devices found"}

    Hab den at24cxx, wie du.

    Hab jetzt keinen anderen Leitungen am Wemos.

    Edit

    Jetzt hat i2cscan doch auf einmal was gefunden.

    MQT: stat/meinsonoff/RESULT = {"I2CScan":"Device(s) found at 0x50"}

    Es bleibt aber bei 1536 chars left

    Einmal editiert, zuletzt von URBANsUNITED (8. September 2019 um 13:18)

  • Das war es! USE_SCRIPT_FATFS hatte ich vorsorglich schon mal eingetragen.

    Das sich das mit dem I2C beißt ist klar, übersehen hab ich es trotzdem... Doof!

    4095 Chars left 8|

    Danke!!!

  • Ich bin total begeistert, dass ich meinen Strom-Zählerstand auslesen kann und auch die richtigen Werte auf der Weboberfläche angezeigt bekomme.

    Leider kriege ich die Daten aber nicht per MQTT an FHEM versendet.

    Die Datensätze, die in der Tasmota-Konsole mit "MQT" angezeigt werden, sehe ich im FHEM, die mit "RSL" sehe ich nicht.

    Wenn ich am Raspberry mit dem mosqitto logge (pi@FHEMpi:~ $ mosquitto_sub -d -v -t \#), sehe ich auch nur die Datensätze, die in der Konsole mit "MQT" markiert sind. Ich vermute, dass die RSLs nicht versendet werden, oder beim Empfang aussortiert werden.

    Die Beispiele der Werte, die hier im Thread gezeigt wurden, zeigen alle "MQT: /sonoff-SML/tele/SENSOR =..."

    Ich habe verschiedene commits aus universal6 und universal7 ausprobiert, alle mit dem gleichen Ergebnis. Es muss also an meiner Konfiguration liegen...

    Kann mir jemand weiterhelfen und weiß durch welches Setting dieses Verhalten verursacht wird?

    00:00:00 CFG: aus Flash geladen am F9, zählen 40

    00:00:00 Projekt sonoff-SML Sonoff-SML Version 6.6.0.10(sonoff)-2_5_2

    00:00:00 SNS: Hardware Serial

    00:00:00 WIF: verbinden mit AP1 Funknetz in Modus 11N als sonoff-SML-3408...

    00:00:04 WIF: verbunden

    00:00:04 HTP: Web-Server aktiv bei sonoff-SML-3408 mit IP-Adresse 192.168.178.87

    20:28:15 MQT: Verbindungsversuch...

    20:28:15 MQT: verbunden

    20:28:15 MQT: /sonoff-SML/tele/LWT = Online (beibehalten)

    20:28:15 MQT: /sonoff-SML/cmnd/POWER =

    20:28:15 RSL: /sonoff-SML/tele/INFO1 = {"Module":"Generic","Version":"6.6.0.10(sonoff)","FallbackTopic":"cmnd/DVES_184D50_fb/","GroupTopic":"sonoffs"}

    20:28:15 MQT: /sonoff-SML/tele/INFO2 = {"WebServerMode":"Admin","Hostname":"sonoff-SML-3408","IPAddress":"192.168.178.87"}

    20:28:15 MQT: /sonoff-SML/tele/INFO3 = {"RestartReason":"Power on"}

    20:34:34 RSL: /sonoff-SML/tele/STATE = {"Time":"2019-09-08T20:34:34","Uptime":"0T00:06:25","UptimeSec":385,"Heap":23,"SleepMode":"Dynamic","Sleep":50,"LoadAvg":19,"MqttCount":2,"Wifi":{"AP":1,"SSId":"xxx","BSSId":"ff:ff:ff:ff:C1:9B","Channel":11,"RSSI":46,"LinkCount":1,"Downtime":"0T00:00:04"}}

    20:34:34 RSL: /sonoff-SML/tele/SENSOR = {"Time":"2019-09-08T20:34:34","SML":{"Total_in":18642.2997,"Power_curr":331,"Meter_number":"06454xxxxxxxxx"}}

  • Muellmann Wie hast du das es denn überhaupt umgesetzt? Via GUI Script oder im Code vor dem hochladen? Gepostet werden die Werte immer nur zur Teleperiod. Diese steht normalerweise erst einmal auf 5 min. Du könntest in der Konsole "teleperiod 10" schreiben. Dann werden die Werte alle 10 Sek. via MQTT auf die reise geschickt.

    @all

    Ich bin ein Stückchen weiter was meine Wasseraufzeichnung angeht. Also die IC555 Schaltung hat wenig gebracht. Stattdessen habe ich festgestellt, dass jedesmal, wenn ich im Keller das Licht (Leuchtstoffröhren) eingeschaltet habe, der Wemos einen Liter hinzugefügt hat. Seltsamerweise nur beim Wasser nicht beim Gas. Habe deshalb das ungeschirmte Kabel zum Wassersensor soweit es geht gekürzt und den IC555 wieder entfernt. Tatsächlich scheint dies schon einiges gebracht zu haben. Leider ist es allerdings nicht völlig gelöst. Am Wemos Eingang hängt zwischen 5V und GND 1000uF + 10nF zum entstören. Aber auch das brachte bisher keinen Erfolg. Habt ihr noch eine Idee?

    Ansonsten bleibt wohl nur die Lösung, die Steckdose im Stromkasten auf eine andere Phase zu legen. Allerdings weiß man auch nicht, was dort für Schwankungen sind.

    Viele Grüße.

  • Hallo sunburstc

    ich hatte vor ca. 1 Jahr mal mehrere Billig-China-Steckdosen auf Tasmota 6.1.1 umgerüstet (für die Verwendung mit FHEM) und die dort verwendeten Anpassungen für STA_SSIDx, STA_PASSx und MQTT_HOST in die my_user_config.h des Forks von gemu_2015 gemerged. Außerdem habe ich noch die #defines einiger dort eingeschalteten Sensoren auskommentiert, weil ich einen schlankeren Code haben wollte.

    Damit der Stromzähler überhaupt ausgelesen wird, habe ich zudem eine Zeile mit #define USE_SML_M 9600 hinzugefügt und mir einen eigenen Abschnitt #if METER==EHZI für meinen Zähler zusammengebastelt (für universal6 in xsns_95_sml.ino und für universal7 in xsns_53_sml.ino).

    Das ganze habe ich dann mit der Arduino-IDE in einen ESP-01 geflasht, den Sensor angesteckt und gewartet bis Daten in der Konsole und im FHEM ankommen...

    Zusammengefasst: Konfiguration im Code und kein Scripting

    ...und wenn ich "teleperiod 10" in der Konsole eingebe, werden die RSL: /sonoff-SML/tele/SENSOR eben jede 10s versandt.

    Heute Abend werde ich das Ganze nochmal neu aufsetzen und die Konfiguration nach user_config_override.h verlagern (Das macht das Austesten verschiedener Commits deutlich einfacher). Dort werde ich dann auch nur die unbedingt für meine Anwendung notwendige Konfiguration vornehmen und erst wenn das läuft, weitere Experimente machen.

    Danke erstmal, ich melde mich wieder.

  • Hallo Leute,

    ich habe vorhin nochmal die universal7 ausgecheckt und dort in der user_config_override.h nur minimale Anpassungen an den mqtt-Server gemacht. Die xsns_53_sml.ino ist an meinen Zähler angepasst.

    Unmittelbar nach dem Programmieren, noch im Programmieradapter kommen die Sensordaten als MQT.

    Super! Habe mich gefreut und die Platine in den Keller geräumt. Ordentliche Netzwerkverbindung und der Zähler wird gelesen. Allerdings werden die Sensordaten wieder als RSL in der Konsole angezeigt und nicht versendet.

    nach einigem Hin- und Her-Probieren, meine Beobachtungen:

    Sensor im abgesteckt und ESP neu gestartet -> Sensordaten werden erwartungsgemäß nicht gemessen, aber mit MQT versandt

    Sensor an laufenden ESP wieder angesteckt -> Sensordaten werden wieder gemessen, aber keine MQT mehr!

    Sensor wieder abgesteckt, ESP läuf weiter -> Sensordaten bleiben auf letztem Messwert stehen, immer noch RSL

    Kann mir jemand dieses Verhalten erklären? Ist das Absicht?

    Was bedeutet RSL in der Konsole?

    Kann ich das MQT irgendwie erzwingen?

    Gruß, Rainer

  • Was RSL genau bedeutet kann ich dir nicht sagen. Du könntest nach RSL mal im Github suchen.

    Alternativ probiere doch mal den scripter! Vielleicht läuft es ja darüber. Dazu musst du aber noch einmal deine override anpassen und dann Script aktivieren und rules deaktivieren. Siehe:

    Link

    Und dann in den gui Einstellungen unter Script deinen Zähler eintragen. Siehe: Link

    Weitere Beispiele gibt es auf den letzten Seiten dieses Threads.


    Ansonsten kannst du bei der Definition deiner Zähler Dezimalstellen mit 16 addieren. Dann wird jede Änderung des Wertes direkt gepostet.

    Also wenn du 2 nachkommastellen hast gibst du statt 2 eine 18 ein.

  • Ansonsten kannst du bei der Definition deiner Zähler Dezimalstellen mit 16 addieren. Dann wird jede Änderung des Wertes direkt gepostet.

    Also wenn du 2 nachkommastellen hast gibst du statt 2 eine 18 ein.

    das hat es tatsächlich gebracht! Nun sendet der ESP die aktuellen Messwerte zyklisch per MQT an FHEM.

    (Ich werde unabhängig davon trotzdem noch nach der Bedeutung von RSL forschen und meine Erkenntnisse hier posten.)

    Vielen Dank für die Hilfe!

  • Hallo Zusammen,

    Hallo Muellmann,

    ich lese nun schon seit einigen Wochen mit und bin begeistert was alles möglich ist. Habe mir eine kleine 620 W Peak Solaranlage angeschafft und möchte jetzt noch meinen "tollen" Stromzähler EHZIW8... mit Domoticz auslesen. Muellmann könntest du bitte den angepassten Code für den EHZI Hier reinstellen bzw. zur Verfügung stellen ?

    Danke schon mal

    Grüße

    Julian