Ankündigung

Einklappen
Keine Ankündigung bisher.

Verlust von serial device bringt Enocean und smarthomeNG zum Absturz

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

    Verlust von serial device bringt Enocean und smarthomeNG zum Absturz

    Hallo,

    ich nutze die aktuelle smarthomeNG 1.9.5 und smartVisu auf einem Pi 4.

    Als Gateway zu den verschiedenen Devices (Enocean, KNX, Zigbee, IR Kopf, MBus) nutze ich einen Beaglebone Black mit dem Cape von Robert, der von der smarthomeNG Instanz auf dem Pi angesprochen wird.
    Die serielle Schnittstelle für Enocean wird über 2 socat Befehle an den Pi durchgereicht. Dabei wird ein virutelles serielles Device auf dem Pi (z.B. /tmp/ttyS4) angelegt, auf das das Enocen Plugin dann zugreift. Das funktioniert stabil.

    Wenn die socat-Verbindung unterbrochen wird, wird sie neu aufgebaut.
    Leider verschwindet dann kurzzeitig die virutelle serielle Schnittstelle, hier /tmp/ttyS4.
    Das führt im Enocean Plugin zu einer Fehlermeldung:

    Code:
    2023-06-04  18:26:53 ERROR    lib.plugin          Plugin 'enocean' exception in run() method: device reports readiness to read but returned no data (device disconnected or multiple access on port?)
    Traceback (most recent call last):
      File "/usr/local/smarthome/lib/plugin.py", line 703, in run
        self.plugin.run()
      File "/usr/local/smarthome/plugins/enocean/_init_.py", line 454, in run
        readin = self._tcm.read(1000)
      File "/usr/lib/python3/dist-packages/serial/serialposix.py", line 595, in read
        raise SerialException(
    serial.serialutil.SerialException: device reports readiness to read but returned no data (device disconnected or multiple access on port?)​
    Als Folge verliert die smartVisu auch die Verbindung zum smarthomeNG websocket. Ich kann also nichts mehr über die Visu steuern.

    Ein Neustart von smarthomeNG löst das Problem zwar, es wäre aber schöner, wenn das Fehlerhandling im Enocean-Plugin angepasst werden könnte, um mit dieser Situation umgehen zu können.

    Vielen Dank
    Gerd



    #2
    Hallo Gerd,

    ich konnte Dein Problem bei mir nachstellen. Im Develop ist eine neue plugin Version, die jetzt robust gegen einen Verlust des seriellen Enocean Sticks ist. Das plugin implementiert keine neues Verbinden, allerdings legt es damit jetzt nicht das ganze smarthomeNG lahm.

    Gerne testen und hier Rückmeldung geben.

    Grüße
    Alex

    Kommentar


      #3
      Hallo Alex,

      vielen Dank für die schnelle Antwort.
      Mit den Anpassungen bleibt smarthomeNG am Leben, das ist schon mal gut.
      Allerdings habe ich dann keine Verbindung mehr zu den Enocean Devices und ich muss smarthome neu starten.

      Es wäre sehr nett, wenn du das Plugin noch so anpassen könntest, dass beim Senden einer Message ggfls die Verbindung neu aufgebaut wird, wenn sie in dem Moment nicht existiert, zumindestr 1x, also keine Endlosschleife.

      Grüße
      Gerd

      Kommentar


        #4
        Hallo Alex,

        vielleicht wäre der bessere Ansatz die Implementierung des rfc2217 Protokolls im Enocean Plugin.

        Wenn ich das richtig sehe (siehe Diskussion hier: https://community.openhab.org/t/solv...rt-howto/81633), wäre das genau die benötigte Gegenseite für ser2net.
        Und rfc2217 scheint in der pyserial Lib unterstützt zu sein, vielleicht ist es dann gar nicht so komplex und aufwändig.

        Zur Vollständigkeit noch meine socat Befehle:

        Beaglebone Black
        Code:
        /usr/bin/socat -d -d tcp-l:60001,reuseaddr /dev/ttyS4,b57600,raw,echo=0
        Pi
        Code:
        /usr/bin/socat -d -d  pty,link=/tmp/ttyS4,b57600,raw,echo=0,mode=770,nonblock tcp:192.168.24.74:60001
        Auf dem Beaglebone müsste ich dann evtl auf ser2net umsteigen.

        Siehst du eine Möglichkeit, rfc2217 in das Enocean-Plugin einzubauen? Wäre super.

        Grüße
        Gerd

        Kommentar

        Lädt...
        X