Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • 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

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
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

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    10
    1
    196

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    24
    1
    1.5k

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    9.4k

[Gelöst] Adapter Smartmeter per ser2net und socat

Geplant Angeheftet Gesperrt Verschoben ioBroker Allgemein
smartmeterraspberryvzlogger
7 Beiträge 2 Kommentatoren 2.3k Aufrufe 2 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • ? Offline
    ? Offline
    Ein ehemaliger Benutzer
    schrieb am zuletzt editiert von Ein ehemaliger Benutzer
    #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 Antwort Letzte Antwort
    0
    • ? Ein ehemaliger Benutzer

      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
      Ein ehemaliger Benutzer
      schrieb am zuletzt editiert von Ein ehemaliger Benutzer
      #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 Antwort Letzte Antwort
      1
      • ? Ein ehemaliger Benutzer

        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
        Ein ehemaliger Benutzer
        schrieb am zuletzt editiert von
        #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 Antwort Letzte Antwort
        0
        • arteckA Offline
          arteckA Offline
          arteck
          Developer Most Active
          schrieb am zuletzt editiert von
          #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 Antworten Letzte Antwort
          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
            Ein ehemaliger Benutzer
            schrieb am zuletzt editiert von
            #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 Antwort Letzte Antwort
            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
              Ein ehemaliger Benutzer
              schrieb am zuletzt editiert von
              #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 Antwort Letzte Antwort
              0
              • ? Ein ehemaliger Benutzer

                @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
                schrieb am zuletzt editiert von arteck
                #7

                @levyko na super... klasse DANKE..

                socat kann weg..

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

                1 Antwort Letzte Antwort
                0
                Antworten
                • In einem neuen Thema antworten
                Anmelden zum Antworten
                • Älteste zuerst
                • Neuste zuerst
                • Meiste Stimmen


                Support us

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

                806

                Online

                32.5k

                Benutzer

                81.7k

                Themen

                1.3m

                Beiträge
                Community
                Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                ioBroker Community 2014-2025
                logo
                • Anmelden

                • Du hast noch kein Konto? Registrieren

                • Anmelden oder registrieren, um zu suchen
                • Erster Beitrag
                  Letzter Beitrag
                0
                • Home
                • Aktuell
                • Tags
                • Ungelesen 0
                • Kategorien
                • Unreplied
                • Beliebt
                • GitHub
                • Docu
                • Hilfe