Ankündigung

Einklappen
Keine Ankündigung bisher.

Synology OpenHAB User /dev/ttyUSB0

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

    #16
    Hi,
    ich bin einen anderen Weg gegangen, da es für mich nicht aktzeptabel ist, wenn nach einem Synology Update nichts mehr geht:
    Ich hab das nrjavaserial projekt angepasst, sodass es remote Zugriff auf einen serial port erlaubt (mit RFC2217 Support). Dadurch kann man einen günstigen Rechner (z.B. RPI B+ oder YPort+) einsetzen auf dem es keine Treiberprobleme gibt. Auf fast allen Linux Distributionen gibt es ser2net, welches den RFC2217 unterstützt.

    Das IEC62056-21 Meter Binding funktioniert damit ohne Probleme bei mir.

    Die ser2net configuration (bei mir auf dem Wiregate) sieht folgendermaßen aus:
    Code:
    3002:telnet:0:/dev/ttyUSB0:9600 remctl
    IEC62056-21 Meter Binding Konfiguration:
    Code:
    iec6205621meter:houseMeter.serialPort=socket://192.168.178.22:3002                                   #anstatt /dev/ttyUSB0
    Wenn jemand interessiert daran ist, kann ich ein Binding (z.B. zwave) anpassen, und zur Verfügung stellen.
    Ich werde auf jeden Fall versuchen, meine Änderungen im nrjavaserial projekt einfließen zu lassen, damit diese dann auch in openhab verfügbar sind.

    Grüße
    ​Matthias
    Zuletzt geändert von Incognito666; 23.06.2015, 06:27.

    Kommentar


      #17
      Hi incognito666,

      kannst du das noch etwas genauer beschreiben? was muss auf der pi Seite angepasst werden?

      Was muss am Binding geändert werden?

      Gruß

      Kommentar


        #18
        Auf dem PI läuft dann halt ser2net mit oben beschriebener Konfiguration. Das binding muss eine andere Implementierung eines SerialPort verwenden (TelnetSerialPort). Das ist nur eine minimale Änderung, die leider aufgrund der Architektur der nrjavaserial library nötig ist.

        Mittlerweile ist der rfc2217 Support in das nrjavaserial Projekt schon eingeflossen. In Openhab allerdings noch nicht.

        Bei mir läufts nun schon seit einiger Zeit fehlerfrei, allerdings müsste ich den Code noch anpassen, sodass das offizielle nrjavaserial verendet wird. Dann noch einen PR in openhab dazu.

        Ich kann auch nicht sicher sagen, ob jedes Binding damit zurecht kommt. Problematisch wird es immer dann, wenn ein bestimmtes Timingverhalten gefordert ist. Ich lese damit z. B. Meinen Stromzähler (Volkszähler.org) aus.

        Kommentar


          #19
          Hab gestern auf DSM 6.0 aktualisiert, nun funktioniert auch fast alles, nur eben z-wave nicht.
          Bin mittlerweile soweit, dass wenn ich OpenHAB per root starte, ich wieder Z-Wave zugriff bekomme.

          Nutze nicht die USBSerialdriver, sondern direkt die beiden benötigten Dateien.
          Der Port wird auch jeden Start angelegt.

          Könnte nun mit /var/lock zusammenhängen.
          -bekomme folgendes gezeigt, wenn ich OpenHAB per root ausführe:
          RXTX Warning: Removing stale lock file. /var/lock/LCK..ttyUSB0
          -Wenn ich die ownership von /var/lock/ ändern möchte erhalte ich folgende Meldung:
          chown: changing ownership of `/var/lock': Function not implemented

          Anbei mein Startscript für die USB-Seriell Treiber.
          Ging so bisher gut. Zuletzt konnte man sogar die USB Serial Treiber des Authors benutzten, ohne modifikationen im Skript.

          Kann mir jemand weiterhelfen?

          Code:
          #!/bin/sh
          #
          #
          #
          NAME=zwave
          #
          #
          start() {
                 echo "Starting Service: $NAME"
                 mknod /dev/ttyUSB0 c 188 0
                 insmod /volume1/public/OpenHAB/usbdriver/usbserial.ko >/dev/null
                 insmod /volume1/public/OpenHAB/usbdriver/cp210x.ko >/dev/null
                 sleep 2
                 chmod 775  /dev/ttyUSB0
                 chown -R openhab.users /dev/ttyUSB0
                 chown -R root.users /var/lock
                 chmod 775 /var/lock
          }
          #
          #
          stop() {
                echo "Stopping Service: $NAME"
          }
          #
          #
          case "$1" in
                 start)
                         start
                         ;;
                 stop)
                         stop
                         ;;
                 restart)
                         stop
                         start
                         ;;
                 *)
                         echo "Usage: $0 (start|stop|restart)"
                         exit 1
                         ;;
          esac
          #
          # End

          Kommentar


            #20
            chown sollte so aussehen:
            Code:
            chown openhab:users /dev/ttyUSB0
            also ein Doppelpunkt statt eines einzelnen Punktes. Die Option -R bedeutet, dass ein Verzeichnis rekursiv durchlaufen wird, das geht bei einem Gerät nicht. Abgesehen davon sollte das Gerät eigentlich root gehören. Mit dem Umbiegen des Gruppenbesitzes sollte es getan sein, also
            Code:
            chown root:openhab /dev/ttyUSB0
            Du könntest auch schauen, wie die Rechte und der Besitz vor dem Verbiegen aussehen, Standard für ttyUSB0 dürfte ähnlich wie ttyS0 aussehen, das gehört normalerweise root:dialout. Dann reicht es, einmalig (!) dem User openhab zusätzlich die Gruppe dialout zuzuweisen:
            Code:
            adduser openhab dialout
            und schon ist der Zugriff jederzeit möglich (soweit das Modul geladen ist natürlich) Schreib-Leserechte sollten für eine serielle Schnittstelle ausreichen, also das chmod 775 einfach weglassen, Standard ist 750 (kannst Du sicherheitshalber ja per
            Code:
            ls -l /dev/ttyUSB0
            überprüfen - bevor Dein Script gestartet wurde.
            Mit /var/lock wäre ich auch vorsichtig, dort einfach allen Usern volle Rechte zu geben ist nicht nur ein Sicherheitsleck, sondern kann auch erhebliche Auswirkungen auf die Stabilität des Systems haben. Schau lieber nach, welche Rechte openhab wirklich benötigt und erteile nur diese.

            Kommentar


              #21
              Hey, Danke für deine Antwort,

              /dev/ttyUSB0 ist ein Gerät, rekursiv kann ich da keine Änderungen tätigen, das ist wohl wahr.
              Hab das relativ schnell erstellt, daher hab ich da nicht drauf geachtet.

              chown root : openhab /dev/ttyUSB0 schlägt fehl, lediglich chown openhab:root ... bzw chown openhab.root wird ausgeführt.
              Dennoch habe ich danach keinen Zugriff auf den USB Port.

              Synology hat wohl mit dem letzten Update Sicherheitsvorkehrungen getroffen, die nun verhindern, dass ich auf den USB Port zugreifen kann,
              solange OpenHAB nicht als root läuft. OpenHAB braucht keine Root Privilegien.

              Kommentar


                #22
                Hast du auch /var/run/lock die selben Rechte wie /var/lock gegeben? /var/lock ist ja nur ein Symlink.
                Danach ging die USB-Verbindung auch auf einer DSM 6.0.2-8451 Update 7 und OpenHAB2 (wobei ich hier openhab2 als Benutzer nehmen musste)

                Kommentar

                Lädt...
                X