Skip to content
  • Home
  • Recent
  • Tags
  • 0 Unread 0
  • Categories
  • Unreplied
  • Popular
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. ioBroker Allgemein
  4. [Gelöst] Adapter Smartmeter per ser2net und socat

NEWS

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    17
    1
    3.3k

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    13
    1
    1.1k

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.4k

[Gelöst] Adapter Smartmeter per ser2net und socat

Scheduled Pinned Locked Moved ioBroker Allgemein
smartmeterraspberryvzlogger
7 Posts 2 Posters 2.3k Views 2 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • ? Offline
    ? Offline
    A Former User
    wrote on last edited by A Former User
    #1

    Hallo zusammen,

    ich bräuchte mal etwas Hilfe oder einen Denkanstoß in Sachen Smartmeter Adapter :dizzy_face:

    Was bisher geschah:

    ioBroker läuft hier in einer VM (VMM, nicht Docker) auf einem Synology NAS (Intel Architektur). Da das NAS samt aller anderer Netzwerk-Komponenten in einem Rack im Serverraum steht, aber unser Stromzähler im Hausanschlußraum untergebracht ist, kann ich die Smartmeter-Anbindung nur per Netzwerk (LAN-Dosen sind im HAR vorhanden) realisieren. In diversen Einträgen habe ich nun schon gelesen, dass es in einer ioBroker-Multihost-Umgebung funktioniert, aber ich möchte ungern noch eine zusätzliche Instanz und somit Baustelle (nicht negativ gemeint) aufmachen. Darüber hinaus soll die finale Konstellation mit einem Arduino Uno und WLAN-Shield abgebildet werden.

    Der erste Schritt war also der Bau des Lesekopfs: TEKT5400S Fototransistor (lag hier eh noch in der Bastelkiste), 1k Widerstand, etwas Kabel, Lochrasterplatine, Lötkolben und fertig war die Laube. Das Ganze dann an P1, P6 und P10 an einem Pi3, Bluetooth deaktivieren und per raspi-config anpassen. Den Lesekopf mit Tape auf die Schnittstelle am eHZ-HW8E, Pi3 Neustart und ein cat /dev/ttyAMA0 liefert wunderbar Daten.

    Zur Verifizierung, dass nicht nur Müll gelesen wird, habe ich vzlogger installiert, konfiguriert, gestartet und mich darüber gefreut, dass im vzlogger.log tatsächlich die Daten korrekt angezeigt werden (in diesem Fall 1.8.0, 1.8.1, 1.8.2 und 15.7.0). Somit war die erste Hürde genommen.

    In Erinnerung an die guten alten Mainframe-Zeiten kam mir ser2net in den Sinn. Also installiert und per Config mit "192.168.55.72,9999:raw:0:/dev/ttyAMA0:9600 8DATABITS NONE 1STOPBIT" als TCP-Stream auf Port 9999 bereitgestellt.

    Nun ging es an den ioBroker-Host. Hier das passende Gegenstück (socat) installiert, als Service eingerichtet und mit "/usr/bin/socat pty,link=/dev/ttyVSP0 tcp:192.168.55.72:9999" hochgefahren.

    Das Resultat: Ein "cat /dev/ttyVSP0 | od -tx1" liefert Daten. Auch hier dann wieder den vzlogger installiert und geprüft, ob die Daten korrekt sind.

    Somit habe ich nun also auf dem ioBorker ein serielles Device, welches mir die notwendigen Daten für den Adapter liefert.

    Nun kommt aber das Problem:
    Im Adapter habe ich die Einstellungen gemäß Screenshot vorgenommen.

    Bildschirmfoto 2019-08-31 um 12.50.22.png

    Der Adapter (im Debug-Modus) bringt mir folgende Einträge im ioBroker-Log:

    Bildschirmfoto 2019-08-31 um 12.56.59.png

    Korrekte Daten kommen definitiv alle 2 Sekunden an. Diese kann ich im vzlogger.log sehen:

    Bildschirmfoto 2019-08-31 um 12.59.13.png

    Der vzlogger ist natürlich nur kurz zum Testen gestartet und dann sofort wieder beendet. Das Serial-Device ist also nicht blockiert bzw. gelockt.

    Hat jemand noch eine Idee?

    Vielen Dank und beste Grüße
    Levy

    ? 1 Reply Last reply
    0
    • ? A Former User

      Hallo zusammen,

      ich bräuchte mal etwas Hilfe oder einen Denkanstoß in Sachen Smartmeter Adapter :dizzy_face:

      Was bisher geschah:

      ioBroker läuft hier in einer VM (VMM, nicht Docker) auf einem Synology NAS (Intel Architektur). Da das NAS samt aller anderer Netzwerk-Komponenten in einem Rack im Serverraum steht, aber unser Stromzähler im Hausanschlußraum untergebracht ist, kann ich die Smartmeter-Anbindung nur per Netzwerk (LAN-Dosen sind im HAR vorhanden) realisieren. In diversen Einträgen habe ich nun schon gelesen, dass es in einer ioBroker-Multihost-Umgebung funktioniert, aber ich möchte ungern noch eine zusätzliche Instanz und somit Baustelle (nicht negativ gemeint) aufmachen. Darüber hinaus soll die finale Konstellation mit einem Arduino Uno und WLAN-Shield abgebildet werden.

      Der erste Schritt war also der Bau des Lesekopfs: TEKT5400S Fototransistor (lag hier eh noch in der Bastelkiste), 1k Widerstand, etwas Kabel, Lochrasterplatine, Lötkolben und fertig war die Laube. Das Ganze dann an P1, P6 und P10 an einem Pi3, Bluetooth deaktivieren und per raspi-config anpassen. Den Lesekopf mit Tape auf die Schnittstelle am eHZ-HW8E, Pi3 Neustart und ein cat /dev/ttyAMA0 liefert wunderbar Daten.

      Zur Verifizierung, dass nicht nur Müll gelesen wird, habe ich vzlogger installiert, konfiguriert, gestartet und mich darüber gefreut, dass im vzlogger.log tatsächlich die Daten korrekt angezeigt werden (in diesem Fall 1.8.0, 1.8.1, 1.8.2 und 15.7.0). Somit war die erste Hürde genommen.

      In Erinnerung an die guten alten Mainframe-Zeiten kam mir ser2net in den Sinn. Also installiert und per Config mit "192.168.55.72,9999:raw:0:/dev/ttyAMA0:9600 8DATABITS NONE 1STOPBIT" als TCP-Stream auf Port 9999 bereitgestellt.

      Nun ging es an den ioBroker-Host. Hier das passende Gegenstück (socat) installiert, als Service eingerichtet und mit "/usr/bin/socat pty,link=/dev/ttyVSP0 tcp:192.168.55.72:9999" hochgefahren.

      Das Resultat: Ein "cat /dev/ttyVSP0 | od -tx1" liefert Daten. Auch hier dann wieder den vzlogger installiert und geprüft, ob die Daten korrekt sind.

      Somit habe ich nun also auf dem ioBorker ein serielles Device, welches mir die notwendigen Daten für den Adapter liefert.

      Nun kommt aber das Problem:
      Im Adapter habe ich die Einstellungen gemäß Screenshot vorgenommen.

      Bildschirmfoto 2019-08-31 um 12.50.22.png

      Der Adapter (im Debug-Modus) bringt mir folgende Einträge im ioBroker-Log:

      Bildschirmfoto 2019-08-31 um 12.56.59.png

      Korrekte Daten kommen definitiv alle 2 Sekunden an. Diese kann ich im vzlogger.log sehen:

      Bildschirmfoto 2019-08-31 um 12.59.13.png

      Der vzlogger ist natürlich nur kurz zum Testen gestartet und dann sofort wieder beendet. Das Serial-Device ist also nicht blockiert bzw. gelockt.

      Hat jemand noch eine Idee?

      Vielen Dank und beste Grüße
      Levy

      ? Offline
      ? Offline
      A Former User
      wrote on last edited by A Former User
      #2

      Das Problem ist gelöst!

      Dies ist das Device oder besser gesagt der Symlink, welcher von "socat" angelegt wird:

      lrwxrwxrwx  1 root root          10 Sep  1 14:53 ttyVSP0 -> /dev/pts/1
      

      Folgt man dem Symlink, kommt das dabei heraus:

      crw--w----  1 root tty  136, 1 Sep  1 14:53 1
      

      Da ioBroker unter dem Benutzer iobroker läuft, hat der Smartmeter-Adapter also gar keine Möglichkeit, das serielle Device anzusprechen.

      Gegenprobe: Auf der Konsole als root (oder per sudo) den folgenden Befehl ausführen. Dieser sollte den Smartmeter-Adapter starten, die Datenpunkte im ioBroker anlegen und natürlich auch die Werte aktualisieren.

      node smartmeter.js --force --logs
      

      Um die Berechtigungen dahingehend anzupassen, dass auch ioBroker auf das Device zugreifen darf, kann sollte man direkt ein chmod auf /dev/pts/1 ausführen und danach die Datei /etc/fstab anpassen. Nach Anpassung der Datei werden die entsprechenden Recht direkt bei Systemstart eingetragen bzw. die Devices werden direkt mit den richtigen Rechten angelegt.

      Von nun an funktioniert der Smartmeter-Adapter einwandfrei.

      Viele Grüße
      Levy

      ? 1 Reply Last reply
      1
      • ? A Former User

        Das Problem ist gelöst!

        Dies ist das Device oder besser gesagt der Symlink, welcher von "socat" angelegt wird:

        lrwxrwxrwx  1 root root          10 Sep  1 14:53 ttyVSP0 -> /dev/pts/1
        

        Folgt man dem Symlink, kommt das dabei heraus:

        crw--w----  1 root tty  136, 1 Sep  1 14:53 1
        

        Da ioBroker unter dem Benutzer iobroker läuft, hat der Smartmeter-Adapter also gar keine Möglichkeit, das serielle Device anzusprechen.

        Gegenprobe: Auf der Konsole als root (oder per sudo) den folgenden Befehl ausführen. Dieser sollte den Smartmeter-Adapter starten, die Datenpunkte im ioBroker anlegen und natürlich auch die Werte aktualisieren.

        node smartmeter.js --force --logs
        

        Um die Berechtigungen dahingehend anzupassen, dass auch ioBroker auf das Device zugreifen darf, kann sollte man direkt ein chmod auf /dev/pts/1 ausführen und danach die Datei /etc/fstab anpassen. Nach Anpassung der Datei werden die entsprechenden Recht direkt bei Systemstart eingetragen bzw. die Devices werden direkt mit den richtigen Rechten angelegt.

        Von nun an funktioniert der Smartmeter-Adapter einwandfrei.

        Viele Grüße
        Levy

        ? Offline
        ? Offline
        A Former User
        wrote on last edited by
        #3

        Meinen vorigen Post bitte ignorieren! Diese Lösung ist a) nicht dauerhaft und b) widerspricht den Regeln für ein sicheres Linux-System.

        Hier nun die korrekte Lösung für das Problem:

        Damit socat als Dienst/Service startet, muss eine Datei socat.service im Verzeichnis /etc/systemd/system/ mit folgendem Inhalt anlegt werden:

        [Unit]
        Description=SOCAT Listen Service
        After=network.target redis.service
        Wants=redis.service
        
        [Service]
        Type=simple
        User=iobroker
        ExecStart=/bin/bash -c '/usr/bin/socat pty,link=/tmp/ttyCOM tcp:192.168.55.72:9999'
        Restart=on-failure
        
        [Install]
        WantedBy=multi-user.target
        

        Die IP-Adresse sowie der Port sollten den Angaben in ser2net angepasst sein.

        Danach folgendes in der Shell ausführen:

        root@iobroker:~# systemctl daemon-reload
        root@iobroker:~# systemctl start socat
        root@iobroker:~# systemctl status socat
        ● socat.service - SOCAT Listen Service
           Loaded: loaded (/etc/systemd/system/socat.service; disabled; vendor preset: enabled)
           Active: active (running) since Fri 2019-09-06 18:30:09 CEST; 4s ago
         Main PID: 26865 (socat)
            Tasks: 1 (limit: 4915)
           CGroup: /system.slice/socat.service
                   └─26865 /usr/bin/socat pty,link=/tmp/ttyCOM tcp:192.168.55.72:9999
        
        Sep 06 18:30:09 iobroker systemd[1]: Started SOCAT Listen Service.
        root@iobroker:~# 
        

        Sofern man nicht direkt als root arbeitet, sollte vor jedem Befehl sudo stehen.

        Nun in der Instanz im ioBroker nur noch unter "Serielles Gerät: Name:" /tmp/ttyCOM eintragen.

        So läuft socat unter dem Benutzer iobroker und funktioniert einwandfrei.

        Viele Grüße
        Levy

        1 Reply Last reply
        0
        • arteckA Offline
          arteckA Offline
          arteck
          Developer Most Active
          wrote on last edited by
          #4

          ich mach das Thema mal auf

          es gibt ein Problem wenn socat die Verbindung verliert
          diese wird nicht wieder eaufgemacht.. somit verliert auch Smartmeter die Verbindung

          zigbee hab ich, zwave auch, nuc's genauso und HA auch

          ? 2 Replies Last reply
          0
          • arteckA arteck

            ich mach das Thema mal auf

            es gibt ein Problem wenn socat die Verbindung verliert
            diese wird nicht wieder eaufgemacht.. somit verliert auch Smartmeter die Verbindung

            ? Offline
            ? Offline
            A Former User
            wrote on last edited by
            #5

            @arteck
            An dieser Problematik sitze ich jetzt auch schon eine Weile. ser2net läuft ziemlich stabil, aber socat verliert ab und zu die Verbindung. Leider habe ich bisher noch keinen Weg gefunden, dies zu überwachen und im Fall der Fälle einen Reload bzw. Restart auszuführen. Ich hatte es mal mit der Dienstüberwachung probiert (auch per externem Script), aber leider zeigt socat ein "Alles in Ordnung" an, obwohl die Verbindung nicht da ist. Per Status oder PID fällt somit eine Überwachung weg.

            Am Optimalsten wäre es immer noch, wenn der smartmeter-Adapter selbst eine socat-Anbindung anbieten könnte. Der Adapter "sieht" ja, wenn keine Daten kommen und könnte den Dienst neu starten.

            1 Reply Last reply
            0
            • arteckA arteck

              ich mach das Thema mal auf

              es gibt ein Problem wenn socat die Verbindung verliert
              diese wird nicht wieder eaufgemacht.. somit verliert auch Smartmeter die Verbindung

              ? Offline
              ? Offline
              A Former User
              wrote on last edited by
              #6

              @arteck
              Aaaaarggghhh... die Lösung ist so nah! Bitte vergiss socat. Das braucht man mittlerweile nicht mehr. Auf der einen Seite ser2net ist korrekt und dann im smartmeter-Adapter einfach die Konfiguration in der Zeile "Datenübertragung" auf "Netzwerk/TCP-Daten werden nur gelesen" setzen.

              Dann kann man im mittleren Bereich unter "TCP Server" und "TCP Port" die Daten von ser2net eintragen und es läuft.

              Vielen Dank @apollon77 für dieses Feature!!! Muss socat trotzdem installiert bleiben, weil der Adapter diesen Dienst lokal nutzt oder kann das weg?

              arteckA 1 Reply Last reply
              0
              • ? A Former User

                @arteck
                Aaaaarggghhh... die Lösung ist so nah! Bitte vergiss socat. Das braucht man mittlerweile nicht mehr. Auf der einen Seite ser2net ist korrekt und dann im smartmeter-Adapter einfach die Konfiguration in der Zeile "Datenübertragung" auf "Netzwerk/TCP-Daten werden nur gelesen" setzen.

                Dann kann man im mittleren Bereich unter "TCP Server" und "TCP Port" die Daten von ser2net eintragen und es läuft.

                Vielen Dank @apollon77 für dieses Feature!!! Muss socat trotzdem installiert bleiben, weil der Adapter diesen Dienst lokal nutzt oder kann das weg?

                arteckA Offline
                arteckA Offline
                arteck
                Developer Most Active
                wrote on last edited by arteck
                #7

                @levyko na super... klasse DANKE..

                socat kann weg..

                zigbee hab ich, zwave auch, nuc's genauso und HA auch

                1 Reply Last reply
                0
                Reply
                • Reply as topic
                Log in to reply
                • Oldest to Newest
                • Newest to Oldest
                • Most Votes


                Support us

                ioBroker
                Community Adapters
                Donate
                FAQ Cloud / IOT
                HowTo: Node.js-Update
                HowTo: Backup/Restore
                Downloads
                BLOG

                623

                Online

                32.7k

                Users

                82.3k

                Topics

                1.3m

                Posts
                Community
                Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                ioBroker Community 2014-2025
                logo
                • Login

                • Don't have an account? Register

                • Login or register to search.
                • First post
                  Last post
                0
                • Home
                • Recent
                • Tags
                • Unread 0
                • Categories
                • Unreplied
                • Popular
                • GitHub
                • Docu
                • Hilfe