Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Off Topic
    4. Microcontroller
    5. IR-Lesekopf (Stromzähler, SML-Format) einbinden

    NEWS

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    IR-Lesekopf (Stromzähler, SML-Format) einbinden

    This topic has been deleted. Only users with topic management privileges can see it.
    • Codierknecht
      Codierknecht Developer Most Active @topsurfer last edited by

      @topsurfer

      muss ja dort nichts angepasst werden

      Eigentlich nicht.

      Ich nutze GPIO 1. Hinter dem s steht bei mir allerdings eine 0

      >D
      >B
      =>sensor53 r 
      >M 1
      +1,1,s,0,9600,eHZM
      
      1 Reply Last reply Reply Quote 0
      • T
        topsurfer last edited by topsurfer

        So, sehe Daten!

        Hab "spaßeshalber" mal deinen GPIO-Wert "1" bei mir eingetragen, und schon ging es!
        2025-02-05_101538.png
        +1,1,s,0,9600,DWS7612

        Wobei der beschriftete RX vom Lesekopf bei mir klar an GPIO3/RX vom ESp geht (und immer noch) ! (TX analog auf GPIO1).
        Evtl. ist tatsächlich am Lesekopf das RX und TX "getauscht", wobei ich ja vorher auch schon RX/TX getauscht hatte ...

        Was ich jetzt sehe, dass ich nur den Gesamtverbrauch sehe; Pin für Freischaltung des Zählers ist jetzt beantragt.

        Verständnisfrage:
        Man kann ja über den zweiten Wert im Script den RX-Pin (GPIO) mitgeben, aber wie und wo wird der genutzte TX mitgeteilt? Oder ist der letztlich gar nicht notwendig?

        Codierknecht Homoran 2 Replies Last reply Reply Quote 0
        • Codierknecht
          Codierknecht Developer Most Active @topsurfer last edited by

          @topsurfer sagte in IR-Lesekopf (Stromzähler, SML-Format) einbinden:

          Oder ist der letztlich gar nicht notwendig?

          Ich brauche da nix. Hauptsache es funzt 😁

          1 Reply Last reply Reply Quote 0
          • Homoran
            Homoran Global Moderator Administrators @topsurfer last edited by Homoran

            @topsurfer sagte in IR-Lesekopf (Stromzähler, SML-Format) einbinden:

            Wobei der beschriftete RX vom Lesekopf bei mir klar an GPIO3/RX geht

            was der Kopf empfängt muss der Gegenüber senden.
            RX an Rx ist Blödsinn

            edit:
            bitte nichts nachträglich ändern!
            schon gar nicht ohne Kennzeichnung!

            Die nachfolgenden Posts ergeben sonst (teilweise) keinen Sinn mehr!

            MartinP 1 Reply Last reply Reply Quote 0
            • MartinP
              MartinP @Homoran last edited by

              @homoran sagte in IR-Lesekopf (Stromzähler, SML-Format) einbinden:

              was der Kopf empfängt muss der Gegenüber senden.
              RX an Rx ist Blödsinn

              Der Meinung war ich auch, bis ich den TTL-Seriellen Lesekopf bekommen habe...

              Dessen Sendeanschluss war mit "RX" beschriftet, musste also an den mit "RX" beschrifteten Pin des ESP-Moduls ...

              Auch im dem Schaltplan für den "Volkszähler" ist das so.

              https://wiki.volkszaehler.org/hardware/controllers/ir-schreib-lesekopf-ttl-ausgang

              Vielleicht ist das die Erklärung: Die obere Hälfte EMPFÄNGT das Signal vom Zähler, und RXD bedeutet "vom Zähler empfangene Daten"
              volkszähler

              T 1 Reply Last reply Reply Quote 0
              • T
                topsurfer @MartinP last edited by topsurfer

                So,
                habe heute den Pin für den Stromzähler erhalten, sehe auch mehr Daten als zuvor in der Tasmota GUI, aber nicht im iob bzw. nicht über MQTT.
                Warum ist das so? Wie kan ich diese 3 Werte über MQTT in iob "reinbekommen" ?

                Das Script sieht aktuell so aus, und liefert ja auch Daten an den ESP mit dem Stromzähöer

                >D
                >B
                =>sensor53 r
                >M 1
                +1,1,s,0,9600,DWS7612
                1,77070100010800ff@1000,Energie,kWh,energy,4
                1,77070100020800ff@1000,Energie geliefert,kWh,energy,0
                1,77070100100700ff@1,Leistung,W,power,2
                #  
                

                Tasmota Web-Gui zeigt auch korrekte Daten:
                2025-02-11_181355.png

                Aber im Object in iob (und über MQTT-Excplrer) sieht das so aus, es fehlt der oberer "Energie" Wert:

                {
                  "Time": "2025-02-11T18:17:07",
                  "DWS7612": {
                    "energy": 5448,
                    "power": -3.91
                  }
                }
                
                Homoran Codierknecht 2 Replies Last reply Reply Quote 0
                • Homoran
                  Homoran Global Moderator Administrators @topsurfer last edited by

                  @topsurfer sagte in IR-Lesekopf (Stromzähler, SML-Format) einbinden:

                  Warum ist das so?

                  ich hab das mal hierhin verschoben, scheint ja um Tasmota zu gehen

                  T 1 Reply Last reply Reply Quote 0
                  • T
                    topsurfer @Homoran last edited by

                    OK,
                    hab es gelöst, im Script war zweimal das Keyword (?) "energy" genutzt,
                    in anderen Scripts hab eich das keyword "en_out" gsehen und damit ersetzt, jetzt komemn per MQTT alle drei Werte an.

                    So sieht es nun bei mir aus, für einen DWS7612.2, evtl. kann es ja jemand gebrauchen:

                    >D
                    >B
                    =>sensor53 r
                    =>sensor53 l2
                    >M 1
                    +1,1,s,0,9600,DWS7612
                    1,77070100010800ff@1000,Energie eingespeist,kWh,en_out,1
                    1,77070100020800ff@1000,Energie geliefert,kWh,energy,1
                    1,77070100100700ff@1,Leistung aktuell,W,power,0
                    # 
                    
                    1 Reply Last reply Reply Quote 0
                    • Codierknecht
                      Codierknecht Developer Most Active @topsurfer last edited by Codierknecht

                      @topsurfer sagte in IR-Lesekopf (Stromzähler, SML-Format) einbinden:

                      Wie kan ich diese 3 Werte über MQTT in iob "reinbekommen" ?

                      Wie bei allem was mit Tasmota läuft: Über den Sonoff-Adapter.
                      Der dröselt das JSON für Dich auseinander.

                      T 1 Reply Last reply Reply Quote 0
                      • T
                        topsurfer @Codierknecht last edited by

                        Dachte es würde laufen ...
                        in der Tasmota Web-Gui werden die Daten (speziell sichtbar am "Aktuellen Verbrauch: x W") im Sekunden Rhythmus aktualisiert, super.

                        Aber im MQTT Explorer und in iob sehe ich nur selten aktuallisierungen, evtl. minütlich.

                        Gibt es noch einen Parameter, wie oft er MQTT rausschicken soll?
                        Oder ist dieses Intervall normal?

                        W 1 Reply Last reply Reply Quote 0
                        • W
                          warp735 @topsurfer last edited by warp735

                          @topsurfer
                          Kannst einstellen am Gerät. Glaub Standard steht da 300s mqtt Intervall

                          configuration > configuration logging > telemetry period

                          T 1 Reply Last reply Reply Quote 0
                          • T
                            topsurfer @warp735 last edited by

                            @warp735 said in IR-Lesekopf (Stromzähler, SML-Format) einbinden:

                            c

                            Oh danke, stimmt, da war was ...

                            Hab auch was verwechselt, ich hatte in meiner alten Installation (noch unter OpenHab) einen S0 Strom-Zähler genutzt.
                            (Zeit zwischen zwei Impuslen wurde bei höherem akt. Verbrauch geringer, diese Impulse über GPIO eines Raspberry überwacht, aus der Zeit zwischen 2 Impulsen den realen Momentan-Verbrauch ermittelt (in Echtzeit also).

                            Jetzt geht es ja über MQTT ... kleinstes Intervall was in "Telemetry period" akzeptiert wird ist "10" (Sekunden), gibts da einen "Trick", den auf 2s zu setzen?

                            BananaJoe 1 Reply Last reply Reply Quote 0
                            • BananaJoe
                              BananaJoe Most Active @topsurfer last edited by

                              @topsurfer sagte in IR-Lesekopf (Stromzähler, SML-Format) einbinden:

                              Jetzt geht es ja über MQTT ... kleinstes Intervall was in "Telemetry period" akzeptiert wird ist "10" (Sekunden), gibts da einen "Trick", den auf 2s zu setzen?

                              EasyMeterHichi.gif

                              Ja, wenn du direkt an einen MQTT-Broker sendest. Du musst das SML-Skript bearbeiten, hier als Beispiel anhand meines Skriptes.
                              Mein Skript:

                              >D
                              >B
                              =>sensor53 r
                              >M 1
                              +1,3,s,0,9600,SML
                              1,77070100010801ff@1000,Verbrauch_Tarif_1,kWh,Verbrauch_T1,7
                              1,77070100010802ff@1000,Verbrauch_Tarif_2,kWh,Verbrauch_T2,7
                              1,77070100010800ff@1000,Verbrauch_Summe,kWh,Verbrauch_Summe,7
                              1,77070100020800ff@1000,Einspeisung_Summe,kWh,Einspeisung_Summe,7
                              1,=h-- 
                              1,77070100240700ff@1,Leistung_L1,W,Watt_L1,2
                              1,77070100380700ff@1,Leistung_L2,W,Watt_L2,2
                              1,770701004c0700ff@1,Leistung_L3,W,Watt_L3,2
                              1,77070100100700ff@1,Leistung_Summe,W,Watt_Summe,2
                              1,=h-- 
                              1,77070100200700ff@1,Spannung_L1,V,Volt_L1,1
                              1,77070100340700ff@1,Spannung_L2,V,Volt_L2,1
                              1,77070100480700ff@1,Spannung_L3,V,Volt_L3,1
                              #
                              >S
                              =>Publish Soyosource/SOYO_1ce2fb/L1L2L3 %sml[8]%
                              

                              Den Wert aus Zeile 14 möchte ich nun bei jeder Änderungen gesendet haben:

                              1,77070100100700ff@1,Leistung_Summe,W,Watt_Summe,2
                              

                              Nun heißt es zählen. Zeile 14 ist der 8. Wert der ermittelt wurde, in den Zeilen 6 bis 9 und 11 bis 13 werden 7 Werte ermittelt, Zeile 14 ist der 8.

                              Unten unter das

                              >S
                              

                              habe ich dafür die Zeile

                              =>Publish Soyosource/SOYO_1ce2fb/L1L2L3 %sml[8]%
                              

                              diese sendet den 8. Wert bei jeder Änderung an das Topic Soyosource/SOYO_1ce2fb/L1L2L3

                              Wie man das in Zusammenhang mit dem Sonoff-Adapter gehen würde weis ich nicht, ich lasse das an meinen MQTT-Adpater senden (mit Mosquitto dazwischen) und - um @Codierknecht zu referenzieren - drösel das JSON selbst auseinander (für den Rest)

                              Wie du siehst geht das sogar noch schneller als auf der Weboberfläche.
                              Nein, langsamer geht nicht, einen Tod musst du sterben. Entweder jede Änderungen oder alle 10 Sekunden und höher.

                              T 1 Reply Last reply Reply Quote 0
                              • T
                                topsurfer @BananaJoe last edited by topsurfer

                                @bananajoe said in IR-Lesekopf (Stromzähler, SML-Format) einbinden:

                                Ja, wenn du direkt an einen MQTT-Broker sendest. Du musst das SML-Skript bearbeiten, hier als Beispiel anhand meines Skriptes.

                                Super, das klappt, danke dir!
                                Hatte erst ein kleines "s" genutzt, das hat nicht funktioniert.

                                Kann ich beim Publish direkt mitgeben, das er nur ganzzahlig senden soll, also ohne Nachkommastellen?
                                In der Web-Gui geht das ja mit dem letzten Parameter (...,0) (= Null Nachkommastellen)

                                Update: Oder wie lautet im Alias die Konvertierungsformel ? (runden oder umwandeln in Ganzzahlig sollte damit doch möglich sein
                                val ...

                                BananaJoe Codierknecht 2 Replies Last reply Reply Quote 0
                                • BananaJoe
                                  BananaJoe Most Active @topsurfer last edited by

                                  @topsurfer sagte in IR-Lesekopf (Stromzähler, SML-Format) einbinden:

                                  Kann ich beim Publish direkt mitgeben, das er nur ganzzahlig senden soll, also ohne Nachkommastellen?
                                  In der Web-Gui geht das ja mit dem letzten Parameter (...,0) (= Null Nachkommastellen)

                                  Da bin ich raus, statt Alias verwende ich ein kleines Skript was noch mal auf Plausibilität prüft und das ganze dann in einen eigenen Datenpunkt schreibt. (Letztendlich macht Alias das gleiche)

                                  1 Reply Last reply Reply Quote 0
                                  • Codierknecht
                                    Codierknecht Developer Most Active @topsurfer last edited by

                                    @topsurfer sagte in IR-Lesekopf (Stromzähler, SML-Format) einbinden:

                                    wie lautet im Alias die Konvertierungsformel ? (runden oder umwandeln in Ganzzahlig sollte damit doch möglich sein

                                    Ganzzahl:
                                    Math.round(val)
                                    Runden auf 2 Nachkommastellen:
                                    Math.trunc(val * 100) / 100

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

                                    Support us

                                    ioBroker
                                    Community Adapters
                                    Donate

                                    892
                                    Online

                                    31.6k
                                    Users

                                    79.6k
                                    Topics

                                    1.3m
                                    Posts

                                    7
                                    26
                                    984
                                    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