Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Praktische Anwendungen (Showcase)
    4. Stromzähler per Sonoff ESP8266 auslesen

    NEWS

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    Stromzähler per Sonoff ESP8266 auslesen

    This topic has been deleted. Only users with topic management privileges can see it.
    • S
      sportfreund @Jaschkopf last edited by sportfreund

      Hallo zusammen und danke für dieses spannende Projekt 🙂 Das hat mich heute gut durch den verregneten Samstag begleitet, leider bin ich elektronisch nicht ganz 100% bewandert und "es geht noch nicht". Da ich momentan noch zuviele Fehlerquellen habe, könnte mich vielleicht einer auf den richtigen Weg bringen?

      Tasmota mit SML kompiliert und auf NodeMCU v3 geflasht. Soweit, so gut.
      Ich habe hier ein EasyMeter Q3M und habe dazu einen passenden IR-Lesekopf, welcher RS232 spricht (Lingg Janke 87220).
      Die PIN-Belegung sieht hierbei wie folgt aus:
      ir.PNG
      Hier ist schonmal die erste Fehlerquelle, wie ich auf den Western-Stecker schauen muss, damit die PIN-Reihenfolge passt. Ich gehe mal davon aus, dass der die Frontalansicht mit Kabel nach unten gemeint ist, dann passen immerhin die Adernfarben (rot = V, schwarz = GND, grün = RxD, gelb = TxD).
      oder ist hier der Blick "von vorne" gemeint?
      ir2.PNG
      Dann wäre gelb = V, grün = GND, schwarz = RxD, rot = TxD.

      Das Ganze habe ich mit einem RS232-to-TTL-Adapter verbunden und wie folgt verkabelt:
      frage.PNG
      Könnte ich hier auch direkt die seriellen PINs auf der NodeMCU nehmen oder grille ich mir da was mit 5 Volt? Wie hiesse dieser "RX" Pin (auf der NodeMCU rechts der dritte von unten) in Tasmota?

      Momentan erhalte ich nur Null-Werte. auch auf der Konsole. Ich habe aber viele potentielle Fehlerquellen:

      1. ist die Belegung des Western-Steckers von mir richtig interpretiert?
      2. Ist die Belegung der RS232-Steckers richtig interpretiert? Habe auch schon PIN 2 verwendet. Auf der Platine ist aber female montiert, nicht male.
      3. Ich muss von RX auf dem TTL-Board zum NodeMCU, richtig?
      4. PIN "D7" ist im Script schon als "PIN13" zu bezeichnen, oder bezeichne ich den mit D7?

      Ich wäre ja schon froh, wenn ich überhaupt Daten hereinkommen sähe, um die passende Formatierung kann ich mich danach ja kümmern.
      Vielleicht kann ja einer das Brett vor meinem Kopf nehmen 🙂
      Danke!

      1 Reply Last reply Reply Quote 0
      • Holger Etzel
        Holger Etzel last edited by

        Hallo,
        als Neuling habe ich überhaupt keine Ahnung wie man flashed mit Atom. Vielleicht kann einer mal eine Beschreibung geben was genau zu tun ist. Die diversen Dateien ändern bekomme ich gerade noch so hin.
        Wie geht es dann weiter, Wie ist die Vorgehensweise im Programm?
        Gruß
        Holger

        RalfTh 1 Reply Last reply Reply Quote 0
        • RalfTh
          RalfTh @Holger Etzel last edited by RalfTh

          @Holger-Etzel ich selbst habe das mit Visual Studio Code (VSC) gemacht, weil das bei mir mit Atom irgendwie nicht hingehauen hat.
          Bei mir war das ein Wemos D1 Mini. Den habe ich über USB mit dem Rechner, auf dem VSC läuft verbunden. Dabei wird ein Com-Port erzeugt. Diesen musst du auswählen und darüber dein Gerät flashen.
          Natürlich musst du, egal ob VSC oder Atom, gewisse Vorbereitungen bei den Editoren durchführen. Diese hat Jaschkopf in seinem Artikel beschrieben.

          Spezifischer geht es unter den Umständen leider nicht.

          Holger Etzel 1 Reply Last reply Reply Quote 0
          • Holger Etzel
            Holger Etzel @RalfTh last edited by

            @RalfTh Die Dateien habe ich soweit geändert, wie funktioniert der Flash-Vorgang. was muss ich im VSC drücken?

            1 Reply Last reply Reply Quote 0
            • Holger Etzel
              Holger Etzel last edited by

              Hallo, als neuling versuche ich schon seit etlichen Stunden das ganze zu Flaschen und bekomme es nicht hin. Bin schon am verzweifeln.
              Entweder startet das ganze nicht oder es wird geflashed., aber nichts funktioniert. Zumindest die Zählerauslesung. Wlan geht.
              Ganz zu schweigen ist bei mir dann was zum Skript aktivieren und eingeben zu sehen.

              Entweder habe ich die falsche Datei oder ich mache generell was falsch. Gibt es irgendwo eine flashbare Version ohne WLAN-Daten?

              Wäre voll begeistert wenn es das gäbe

              Gruss
              Holger

              RalfTh 1 Reply Last reply Reply Quote 0
              • RalfTh
                RalfTh @Holger Etzel last edited by

                @Holger-Etzel So, jetzt mal der Reihe nach.

                Hast du jetzt erfolgreich geflasht, oder nicht?
                Aus deinem Post ist nämlich nicht mit Sicherheit zu entnehmen, welchen Stand dein Gerät hat.
                Und gebe mal eine Info, welchen Zählertyp du hast, weil man in der Sektion >M nämlich entsprechende Anpassungen machen muss.

                Holger Etzel 1 Reply Last reply Reply Quote 0
                • Holger Etzel
                  Holger Etzel @RalfTh last edited by Holger Etzel

                  @RalfTh also ich komme zumindest mit der IP auf den tasmota. da ich mich mit dem Thema flashen nicht so auskenne kann ich nicht sagen ob ich alles richtig gemacht habe. Habe alles nach der Anleitung im ersten Post gemacht.

                  Zählertyp muss ich heute abend mal nachsehhen.

                  RalfTh 1 Reply Last reply Reply Quote 0
                  • RalfTh
                    RalfTh @Holger Etzel last edited by

                    @Holger-Etzel Es kann dir allerdings keiner weiterhelfen, wenn du nicht mal ein Bild oder eine Typenbezeichnung deines Zählers sendest. Wenn du nämlich so was siehst

                    2533aa5a-3e25-468e-8628-8fdbce001f55-image.png

                    dann musst du das Skript unter dem Menüpunkt Einstellungen und dann Skript konfigurieren eingeben.

                    >D
                    s1="Tagesverbrauch: {m}<b><span style="
                    v2=0
                    hr=0
                    md=0
                    yr=0
                    ;Strom
                    sm=0
                    sd=0
                    sma=50263.000
                    smn=0
                    sya=49239.000
                    syn=0
                    sspr=0.2502
                    yspr=0
                    ysgp=104.16
                    y€=0
                    
                    >T
                    v2=SML#DJ_TPWRIN
                    
                    >B
                    ->sensor53 r
                    tper=10
                    
                    >S
                    ;Tagesverbrauch
                    hr=hours
                    if chg[hr]>0
                    and hr==0
                    and v2>0
                    then
                    sm=v2
                    svars
                    endif
                    if upsecs%tper==0{
                    sd=v2-sm
                    }
                    
                    ;Monatsverbrauch
                    md=day
                    if chg[md]>0
                    and md==1
                    and v2>0
                    then
                    sma=v2
                    svars
                    endif
                    if upsecs%tper==0{
                    smn=v2-sma
                    } 
                    
                    ;Jahresverbrauch
                    yr=year
                    if chg[yr]>0
                    and hr==0
                    and md==1
                    and v2>0
                    then
                    sya=v2
                    svars
                    endif
                    if upsecs%tper==0{
                    syn=v2-sya
                    ;Kosten
                    yspr=syn*sspr+ysgp
                    }
                    
                    >J
                    ,"Verbrauch Tag":"%sd%"
                    ,"Verbrauch Monat":"%smn%"
                    ,"Verbrauch Jahr":"%syn%"
                    ,"Zählerstand 0:00Uhr":"%3sm%"
                    ,"Zählerstand Monatsanfang":"%2sma%"
                    ,"Zählerstand Jahrsenanfang":"%2sya%"
                    
                    >W
                    
                    ==============
                    
                    Tagesverbrauch:  {m} %2sd%  KWh
                    
                    Monatsverbrauch: {m} %2smn% KWh
                    
                    Jahresverbrauch: {m} %2syn% KWh
                    
                    ==============
                    
                    Preis/kWh:       {m} %4sspr% €
                    
                    Grundpreis:      {m} %2ysgp% €
                    
                    --------------
                    
                    Kosten lfd. Jahr:{m} %2yspr% €
                    
                    ==============
                    
                    Zählerstände:
                    
                    aktuell:         {m} %2v2% KWh
                    
                    0:00 Uhr:        {m} %2sm% KWh
                    
                    Monatsanfang:    {m} %2sma% KWh
                    
                    Jahresanfang:    {m} %2sya% KWh
                    
                    ==============
                    
                    
                    >M
                    
                    +1,13,s,16,9600,SML
                    
                    1,77070100010800ff@1000,Verbrauch,KWh,DJ_TPWRIN,2
                    
                    1,77070100020800ff@1000,Einspeisung,KWh,DJ_TPWROUT,2
                    
                    1,770701000f0700ff@1,Akt. Verbrauch,W,DJ_TPWRCURR,0
                    
                    1,77070100000009ff@#,Zaehler Nr,,Meter_number,0
                    
                    #
                    

                    Besonders für den letzten Teil, ab >M, ist es wichtig, welchen Stromzähler du hast sonst geht da gar nichts.

                    1 Reply Last reply Reply Quote 0
                    • F
                      Feinfinger last edited by

                      N’Abend zusammen,

                      Erstmal danke für das tolle Tutorial, hab den Lesekopf in Betrieb und er liefert fleißig Daten.

                      Hab jetzt aber den ganzen Thread durchgearbeitet und keine Möglichkeit gefunden, die Werte für den Jahresverbrauch zu ändern. Dort steht jetzt mein aktueller Zählerstand, was natürlich etwas hoch ist. Gibt es überhaupt eine Möglichkeit, diese Werte beim Start anzugeben?

                      RalfTh 1 Reply Last reply Reply Quote 0
                      • RalfTh
                        RalfTh @Feinfinger last edited by

                        @Feinfinger Ich habe mir das mittlerweile alles in ein Blockly geschrieben und berechne dort. Das hat auch den Vorteil, dass du noch flexibler bist und die Daten Aufzeichnen kannst.

                        Reicht dir das Skript aus, dann kannst du im Script ganz oben in der Variablen sya den Zählerwert deiner letzten Abrechnung eingeben (falls ungerade Werte bitte das "," durch "." ersetzen.)

                        1 Reply Last reply Reply Quote 0
                        • TheDuke
                          TheDuke last edited by

                          Hallo zusammen ,
                          erst mal danke für die Anleitung .

                          Mein Zähler ist ein MT691
                          MT691.png
                          Funktioniert soweit alles nur ich bekomme leider nur den Zählerstand und den Verbrauch ausgelesen.

                          Wenn ich logge bekomme ich folgenden Code :

                          13:49:48 : 77 07 01 00 60 32 01 01 01 01 01 01 04 49 53 4b 01 
                          13:49:48 : 77 07 01 00 60 01 00 ff 01 01 01 01 0b 0a 01 49 53 4b 00 04 20 2f f5 01 
                          13:49:48 : 77 07 01 00 01 08 00 ff 65 00 1d 69 04 01 62 1e 52 ff 65 09 e4 ad aa 01 
                          13:49:48 : 77 07 01 00 10 07 00 ff 01 01 62 1b 52 00 53 fd cd 01 01 01 63 55 f7 00 76 05 0e cc 8d 4b 62 00 62 00 72 63 02 01 71 01 63 29 cc 00 00 00 1b 1b 1b 1b 1a 02 80 
                          13:49:49 : 8a 1b 1b 1b 1b 01 01 01 01 76 05 0e cc 8d 4c 62 00 62 00 72 63 01 01 76 01 01 05 04 ee d9 c4 0b 0a 01 49 53 4b 00 04 20 2f f5 
                          13:49:49 : 72 62 01 65 04 ee dc 6e 01 63 43 f9 00 76 05 0e cc 8d 4d 62 00 62 00 72 63 07 01 
                          13:49:49 : 77 01 0b 0a 01 49 53 4b 00 04 20 2f f5 07 01 00 62 0a ff ff 72 62 01 65 04 ee dc 6e 74 
                          13:49:49 : 77 07 01 00 60 32 01 01 01 01 01 01 04 49 53 4b 01 
                          

                          Kann es sein das der nicht mehr ausspuckt ?

                          lG TheDuke

                          1 Reply Last reply Reply Quote 0
                          • M
                            MyMeyer last edited by MyMeyer

                            @Jaschkopf sagte in Stromzähler per Sonoff ESP8266 auslesen:

                            Lesekopf (Volkszähler

                            Hi, welchen Lesekopf kann ich von Volkszähler nehmen ? USV ,RS232 TDL oder welche Version ist die Richtige ? NodeNCU ist bereits vorhanden. 5V kommen direkt aus dem Sicherungskasten. Nur beim Lesekopf tue mich schwer. Erst wollte ich eine zusammenbauen , aber jetzt möchte ich doch ein fertiges Gerät kaufen.

                            1 Reply Last reply Reply Quote 0
                            • M
                              MyMeyer last edited by MyMeyer

                              Hallo, habe jetzt den Volkszähler zusammen gebaut und alles angeschlossen inkl. Flash.
                              Ich habe folgenden Zähler: Iskra MT175 SML

                              Script sieht so aus:

                              >D
                              >B
                              ->sensor53 r
                              tper=10
                              >M
                              +1,13,s,0,9600,SML
                              1,77070100010800ff@1000,Verbrauch,KWh,DJ_TPWRIN,3
                              1,77070100020800ff@1000,Einspeisung,KWh,DJ_TPWROUT,3
                              1,77070100100700ff@1000,Akt. Verbrauch,W,DJ_TPWRCURR,3
                              #
                              

                              Leider kommt nichts an.

                              Hier mein Log:


                              16:53:25 CMD: sensor53 d1
                              16:53:25 MQT: stat/Stromzähler_V2/RESULT = {"Time":"2020-08-15T16:53:25","SML":{"CMD":"dump: 1"}}
                              16:53:31 MQT: tele/Stromzähler_V2/STATE = {"Time":"2020-08-15T16:53:31","Uptime":"0T00:00:59","UptimeSec":59,"Heap":20,"SleepMode":"Dynamic","Sleep":50,"LoadAvg":99,"MqttCount":1,"Wifi":{"AP":1,"SSId":"FRITZ-Smart","BSSId":"2A:E8:29:67:35:2D","Channel":1,"RSSI":100,"Signal":-34,"LinkCount":1,"Downtime":"0T00:00:03"}}
                              16:53:31 MQT: tele/Stromzähler_V2/SENSOR = {"Time":"2020-08-15T16:53:31","SML":{"DJ_TPWRIN":0.000,"DJ_TPWROUT":0.000,"DJ_TPWRCURR":0.000}}
                              16:53:41 MQT: tele/Stromzähler_V2/STATE = {"Time":"2020-08-15T16:53:41","Uptime":"0T00:01:09","UptimeSec":69,"Heap":21,"SleepMode":"Dynamic","Sleep":50,"LoadAvg":99,"MqttCount":1,"Wifi":{"AP":1,"SSId":"FRITZ-Smart","BSSId":"2A:E8:29:67:35:2D","Channel":1,"RSSI":100,"Signal":-34,"LinkCount":1,"Downtime":"0T00:00:03"}}
                              16:53:41 MQT: tele/Stromzähler_V2/SENSOR = {"Time":"2020-08-15T16:53:41","SML":{"DJ_TPWRIN":0.000,"DJ_TPWROUT":0.000,"DJ_TPWRCURR":0.000}}
                              16:53:51 MQT: tele/Stromzähler_V2/STATE = {"Time":"2020-08-15T16:53:51","Uptime":"0T00:01:19","UptimeSec":79,"Heap":21,"SleepMode":"Dynamic","Sleep":50,"LoadAvg":99,"MqttCount":1,"Wifi":{"AP":1,"SSId":"FRITZ-Smart","BSSId":"2A:E8:29:67:35:2D","Channel":1,"RSSI":100,"Signal":-33,"LinkCount":1,"Downtime":"0T00:00:03"}}
                              16:53:51 MQT: tele/Stromzähler_V2/SENSOR = {"Time":"2020-08-15T16:53:51","SML":{"DJ_TPWRIN":0.000,"DJ_TPWROUT":0.000,"DJ_TPWRCURR":0.000}}

                              521f135a-c1a6-4fdb-ac38-998b8b4c9aff-image.png
                              kann ich irgentzwie die Diode testen ? Vielleicht habe ich ja beim zusammen löten nicht sauber (zu heiss) gearbeitet. 😞

                              J 1 Reply Last reply Reply Quote 0
                              • J
                                Jaschkopf @MyMeyer last edited by

                                @MyMeyer Du kannst den Lesekopf mit einem FTDI Adapter am Computer direkt testen. Wenn der Lesekopf mit 1cm Abstand über einem weißen Blatt Papier liegt und du Daten sendest, sollte er durch die Reflektion auf dem Papier den identischen Wert zurück lesen. So kannst du einen Hardwarefehler ausschließen.

                                Gruß Jaschkopf

                                B 1 Reply Last reply Reply Quote 0
                                • B
                                  baeri @Jaschkopf last edited by

                                  Hallo zusammen,

                                  mein Stromzähler lief jetzt gut ein halbes Jahr ohne Probleme, nun zerhaut es aber regelmäßig meine Flot Diagramme und auch teilweise die Berechnungen des letzten Tages.
                                  Grund dafür: Der Zähler liefert ab und an eine 0 - die lässt sich ja im Diagramm unterdrücken, aber seit neustem sehe ich in der History auch des öfteren den Wert "1".
                                  Meine Frage: Kann man diese falschen Werte direkt in Tasmota unterdrücken?
                                  Notlösung wäre quasi ein Skript, das überprüft, ob der neue Wert > dem alten ist und in einem separaten Datenpunkt zu speichern. Falls nicht wird der Wert einfach verworfen...

                                  Danke euch im Voraus!

                                  1 Reply Last reply Reply Quote 0
                                  • M
                                    MKMM98 last edited by MKMM98

                                    Hallo,

                                    erstmal danke für die Ausführliche Anleitung.
                                    Habe Tasmota auf dem NODEMCU8266 geflasht und mit dem TTL-Adapter von Jaschkopf verbunden hat alles super funktioniert.
                                    Leider fehlen mir die Daten im Iobroker, unter dem Sonoff Adapter unter Objekte wird das ESP8266 angezeigt.
                                    Der TTL-Adapter ist an 3,3V, GND, RX GPIO3 und TX an GPIO1.
                                    Ich bekomme ich Tasmota Menü die Verbrauchdaten angezeigt nur unter Objekte ich Iobroker nicht.
                                    Mein Zähler ist ein ISKRA MT175.

                                    Zähler_5.jpg Zähler_4.jpg Zähler_3.jpg Zähler_2 - Kopie.jpg Zähler_1.jpg

                                    Beim ersten Start des ESP8266 wurde mir OBIS angzeigt, erst als ich das Script editiert und aktiviert habe hat sich das in SML geändert. SML ist ja auch richtig. Wenn ich das Script deaktiviere bekomme ich unter Objekte im Iobroker 3 Zeilen Zähler OBIS Power_curr, Zähler Obis Total_in und Zähler OBIS Total_out diese Werte bleiben aber dauerhaft auf null da das Script deaktiviert wurde und ich ja auch SML benötige.
                                    Jemmanf vielleicht eine Idee, warum die SML Daten unter Objekte fehlen.

                                    Danke
                                    Gruß
                                    MKMM

                                    Wer lesen kann.......
                                    Hat sich erledigt.
                                    Habe eine Hinweiß von Jaschkopf überlesen.


                                    Wichtig ist nur, dass im Adapter die drei Checkboxen „Automatische Erstellung von Zuständen“ aktiviert werden, damit die Objekte auch angelegt werden.

                                    Gruß
                                    MKMM

                                    oberfragger 1 Reply Last reply Reply Quote 0
                                    • oberfragger
                                      oberfragger @MKMM98 last edited by oberfragger

                                      Sagtmal,

                                      gibts solche Möglichkeit auch mit einem USB-Lesekopf? Also im Zweifel irgendwie den USB an einen Sonoff, NodeMCu o.ä. anschließen? Dann spare ich mir den Smartmeter-Adapter. Das wäre eine super Sache.

                                      Ich habe aktuell so einen Weidmann-Opto-Kopf.

                                      mkrobe 1 Reply Last reply Reply Quote 0
                                      • mkrobe
                                        mkrobe @oberfragger last edited by

                                        Habe diese Script am laufen:

                                        >D
                                        >B
                                        =>sensor53 r
                                        tper=10
                                        >M 1
                                        +1,3,s,1,9600,ED300L
                                        1,77070100010800ff@1000,Gesamtverbrauch,kWh,DJ_Power_IN,3
                                        1,77070100020800ff@1000,eingespeist,kWh,DJ_Power_OUT,3
                                        1,77070100100700ff@1,akt. Verbrauch,W,DJ_Power_akt,0
                                        #
                                        

                                        Ist es möglich, dem "Gesamtverbrauch" einen Wert unterzujubeln den er immer dem aktuellen addiert?
                                        Hintergrund ist das der Solateur beide Zähler umklemmen musste, und mir deswegen ca 5000kWh "fehlen"

                                        RalfTh 1 Reply Last reply Reply Quote 0
                                        • RalfTh
                                          RalfTh @mkrobe last edited by

                                          @mkrobe Natürlich geht das..... Siehe mein Post vom 20.Juni 2020 hier. Vorlage ist dabei Jaschkopf's Skript. Du löst das allerdings eleganter mit einem Blockly im ioBrocker. Hier berechne ich sogar den Tagespreis, Monatspreis und Jahrespreis für den aktuellen Energieversorger. Außerdem protokolliere ich das mit Influx.

                                          mkrobe 1 Reply Last reply Reply Quote 0
                                          • mkrobe
                                            mkrobe @RalfTh last edited by

                                            @RalfTh
                                            Dank Dir für den Tipp, blicke aber durch das Script nicht durch.
                                            Blockly habe ich vermieden, bin froh dass ich das erstmal mit Flott soweit auf dei Reihe bekommen habe 😉 Übrigens solltest Du "kWh" schreiben, dann passt das 🙂

                                            da_Woody 1 Reply Last reply Reply Quote 0
                                            • First post
                                              Last post

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            793
                                            Online

                                            31.7k
                                            Users

                                            79.8k
                                            Topics

                                            1.3m
                                            Posts

                                            d0-schnittstelle esp8266 sml sonoff stromzähler stromzähler auslesen tasmota volkszähler
                                            83
                                            562
                                            173941
                                            Loading More Posts
                                            • Oldest to Newest
                                            • Newest to Oldest
                                            • Most Votes
                                            Reply
                                            • Reply as topic
                                            Log in to reply
                                            Community
                                            Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                                            The ioBroker Community 2014-2023
                                            logo