Ankündigung

Einklappen
Keine Ankündigung bisher.

neues Plugin: smartmeter für DLMS- und SML-Zähler

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    neues Plugin: smartmeter für DLMS- und SML-Zähler

    Moin,

    auf mehrfachen Wunsch hin habe ich ein neues Plugin zusammengebastelt, das Smartmeter auslesen kann. Es unterstützt DLMS- und SML-Protokolle, kann - eingeschränkt - das unterstütze Protokoll selbstständig erkennen und ist WebIf- sowie Standalone-fähig.

    Es ist im aktuellen develop integriert und kann gern getestet werden.

    SML kann per cycle, per crontab oder asyncio genutzt werden, DLMS (bisher) nur cycle und crontab.

    Die Parameter habe ich versucht, soweit wie möglich "analog" zu den alten Parametern zu halten, bei den Item-Attributen habe ich (insb. bei DLMS) etwas vereinfacht und mit SML vereinheitlicht. Es ist insofern keine "echte" 1:1-Übertragung.

    Aus dem WebIf könnt ihr euch per Button ein Itemfile erstellen lassen, das alle gelesenen Werte mit "neutral" benannten Items exportiert, so dass sich das einfach in eure Konfiguration integrieren lässt. Der Dateiname enthält die Seriennummer des Zählers, so dass das ziemlich eindeutig sein sollte.

    Falls jemand von euch helfen kann -

    ich benötige noch Tester mit SML-Zählern, die sich "lustig" verhalten und
    jemanden, der DLMS asyncio testen kann (habe keinen DLMS-Zähler).

    Bei Fragen gerne schreiben; wenn ich noch was anpassen oder ergänzen kann, gern.

    Ziel ist, dann später SML, SMLx, SML2 und DLMS in Rente zu schicken.

    #2
    Hallo Morg!

    habe smlx soeben durch smartmeter ersetzt. smlx hatte leider das Problem - ich führe es jetzt mal auf das Plugin zurück - dass nach ein paar Tagen keine Werte mehr kamen. Nur ein Neustart von Smarthome brachte etwas.

    Es hat etwas Getüftel gebraucht um die plugin.yaml richtig zu bekommen, aber dann kann man tatsächlich smlx nach smartmeter umstellen. Mit 2 Instanzen für 2 Zähler (Haushalt und WP) funktioniert es jetzt soweit. Mal sehen wie lange...

    Frage hätte ich noch zu cycle vs asyncio. async wäre ja soweit fein - non-blocking an database schreiben - aber wie wird das eingestellt? Ein Abfrage-cycle bräuchte es ja dennoch!?


    Grüße

    Kommentar


      #3
      Hi, schön, dass es bei dir läuft

      Du nutzt SML, richtig? Dann kannst du cycle nicht setzen und stattdessen poll auf false setzen, dann sollte er mit asyncio empfangen.

      Die SML-Meter senden in der Regel periodisch, je nach Zähler zwischen 2 - 60 Sekunden. Poll/cycle fragt regelmäßig und muss dann ggf. warten; asyncio lauscht dauerhaft und gibt immer dann etwas zurück, wenn der Zähler etwas sendet.

      Probier es gerne aus und berichte, wie es bei dir läuft.

      Kommentar


        #4
        Morg Hab das Plugin auch seit Januar im einsatz, bei mir ist ein Zwei-Richtungszähler "LandisGyr E320" verbaut.
        Das Plugin erkennt ihn als SML Zähler. Bisher hatte ich das Plugin immer mit einem cycle von 5 sec. und aktiver Poll abfrage am laufen.
        Du schreibst nun, dass man bei SML-Protokoll das cycle nicht nutzen kann, und poll auf "false" setzen soll.
        Sobald ich das aber mache werden bei meinem Zähler keine Werte mehr registriert und das Plugin sagt "nicht verbunden".
        Setze ich den Poll auf "true" werden ebenfalls keine Daten empfangen, erst wenn ich die zyklische Abfrage wieder aktiviere werden Daten im WebIF des Plugins angezeigt. Ist das OK, oder eher ein sonderfall ? In der beschriebenen form arbeitet das Plugin aber super, und die Werte kommen im 5 sec. takt als aktuelle Werte an.

        Angehängte Dateien
        Zuletzt geändert von Mike01; 17.02.2026, 16:41.

        Kommentar


          #5
          Ich stelle fest, dass ich noch keine Doku für das Plugin geschrieben habe.. sollte ich vielleicht mal nachholen...

          Du kannst im Polling-Modus (regelmäßige Abfrage) arbeiten (poll=true) oder im async-Modus (ständiges "Lauschen", poll=false). Im Pollingmodus musst du cycle setzen, im async-Modus brauchst du das nicht.

          Mein Zähler sendet alle 2 Sekunden Daten... da ich die auch in die DB schreibe und mir das zu viel ist, läuft er bei mir trotzdem mit cycle=60

          Wenn du poll=false nutzen willst, musst du pyserial-asyncio installieren, hast du das von Hand gemacht? Ich habe es nicht als requirement eingetragen, weil man es für den Polling-Modus nicht braucht.. vielleicht sollte ich es aber reinschreiben.

          Kommentar


            #6
            Morg
            Danke für die Erklärung, Hatte das Python Plugin pyserial-asyncio natürlich nicht installiert.
            Hab die Installation gerade gemacht und das ganze nochmal überprüft.
            Der async Modus funktioniert aber trotzdem nicht. Bei meinem Zähler kommen nur Werte wenn ich Poll auf true setze und cycle auf 5 sec setze.
            Laut beschreibung soll der Zähler im sekundentakt Werte senden, Ein Abstand von 5 sec. reicht aber eigentlich eh aus.
            Die kurze Abfrage wird halt benötigt, da ich damit eine Heizstabregelung erstellt hab, die mir bei PV überschuss den Heizstab entsprechend ein-/ausschaltet.

            Kommentar

            Lädt...
            X