FHEM Forum

FHEM - Hausautomations-Systeme => Unterstützende Dienste => Thema gestartet von: Fhemschorsch am 02 November 2022, 16:01:48

Titel: IR Lesekopf im FHEM Docker Container ansteuern
Beitrag von: Fhemschorsch am 02 November 2022, 16:01:48
Hallo,

ich komme hier leider nicht weiter, daher muss ich mein Problem mal hier niederschreiben und freue mich auf jeden Hinweis:

Nach Jahren auf einem RPi2 läuft meine FHEM-Instanz mittlerweile superstabil in einem Docker Container auf meiner Synology DS716+ II. Da der Serverschrank im Keller ist und unser digitaler Strommesser nur ein paar Meter entfernt, habe ich einen USB-IR-Lesekopf geholt, den ich jetzt mit der Synology verbunden habe.

Doch leider bekomme ich den Lesekopf nicht vernünftig adressiert, was wohl an meinen mangelnden Linux Kenntnissen liegt
Da der Container im Host Modus läuft, werden die USB-Devices wohl durchgeleitet, ein lsusb ergibt:

Bus 003 Device 004: ID 0403:6001 Future Technology Devices International, Ltd FT232 Serial (UART) IC   

und im dmesg steht (nach 2maligem Abziehen und wieder anstecken):

[26585.561786] usb 3-2: USB disconnect, device number 2                                                                     
[26614.706083] usb 3-2: new full-speed USB device number 3 using etxhci_hcd-170202                                         
[27322.798398] usb 3-2: USB disconnect, device number 3                                                                     
[27325.309771] usb 3-2: new full-speed USB device number 4 using etxhci_hcd-170202 


im Ordner /dev/ gibt es keine Unterordner /serial/serial-by-id/, mit dem ich das schön adressieren könnte, ein ls /dev/tty* gibt mir nur eine lange durchnummerierte Liste von 0-63 und noch mit Buchstaben von aa - zf.

(ein readlink tty* in /sys/class/tty gibt 4 potentielle Devices aus:
../../devices/platform/serial8250/tty/ttyS0                                                                                 
../../devices/virtual/tty/ttys1                                                                                             
../../devices/pci0000:00/0000:00:1e.4/tty/ttyS1                                                                             
../../devices/virtual/tty/ttys2                                                                                             
../../devices/platform/serial8250/tty/ttyS2                                                                                 
../../devices/virtual/tty/ttys3                                                                                             
../../devices/platform/serial8250/tty/ttyS3


aber unter keinem der 4 Adressen (S0...S3) kommen Daten an, weder mit 7E1 noch mit 8N1. Das OBIS Device zeigt opened, aber nichts passiert
)

Habt Ihr einen Tipp, wie ich das am Besten adressieren kann?


Titel: Antw:IR Lesekopf im FHEM Docker Container ansteuern
Beitrag von: Dr. Boris Neubert am 02 November 2022, 16:42:16
Am besten legst Du eine udev-Regel an, die ein Device mit der ID 0403:6001 einem Symlink auf z.B. irsensor zuweist. Dann kannst Du auf /dev/irsensor zugreifen. Voraussetzung ist, dass nur ein Device mit der ID existiert (bei FT232 möglicherweise aber nicht der Fall).

siehe http://reactivated.net/writing_udev_rules.html (http://reactivated.net/writing_udev_rules.html) oder viele andere Stellen im Netz, um zu lernen, wie das geht.
Titel: Antw:IR Lesekopf im FHEM Docker Container ansteuern
Beitrag von: Wernieman am 02 November 2022, 16:51:43
Wie sieht es mit serial/serial-by-path aus?

Wobei Grunsätzlich ... Hostmodus vom Container, da kann man beinahe fhem auch lokal installieren (aber nur meine persönliche Individuelle Meinung, halte von HostModus nichts)
Titel: Antw:IR Lesekopf im FHEM Docker Container ansteuern
Beitrag von: Dr. Boris Neubert am 02 November 2022, 17:12:57
Zitat von: Wernieman am 02 November 2022, 16:51:43
Wie sieht es mit serial/serial-by-path aus?

Geht das auf die Bus-ID? Wenn ja, dann besteht die Gefahr, dass die ID von Bootvorgang zu Bootvorgang wechselt, da Linux die Busse nicht immer in derselben Reihenfolge aufzählt.
Titel: Antw:IR Lesekopf im FHEM Docker Container ansteuern
Beitrag von: Wernieman am 02 November 2022, 18:41:01
War ich früher auch der Meinung, habe mich hier im Forum vom Gegenteil überzeugen lassen ..... aber zum erstmal gucken ist es jedenfalls optimal ...
Titel: Antw:IR Lesekopf im FHEM Docker Container ansteuern
Beitrag von: Fhemschorsch am 03 November 2022, 08:43:04
Hallo,

vielen Dank schon einmal für das Feedback und die Hilfestellung.

Zu Docker, weil ich das Gefühl habe, mich dafür rechtfertigen zu müssen :-) : Den Hostmodus habe ich ausgewählt, weil im Bridged-Mode die Kommunikation mit einigen Devices nicht funktioniert hat. Ich gebe Dir Recht, natürlich kann man dann fhem auch direkt installieren. Allerdings ist die Synology mittlerweile recht restriktiv und ich hätte bei jedem Update immer die Sorge, dass FHEM nicht mehr funktioniert. So habe ich alles gekapselt in einem Container , kann es komfortabel sichern und es läuft superstabil.

Ich habe das Device mal ausgelesen:

T:  Bus=03 Lev=01 Prnt=01 Port=01 Cnt=01 Dev#= 10 Spd=12  MxCh= 0                                                           
D:  Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS= 8 #Cfgs=  1                                                               
P:  Vendor=0403 ProdID=6001 Rev=06.00                                                                                       
S:  Manufacturer=FTDI                                                                                                       
S:  Product=FT232R USB UART                                                                                                 
S:  SerialNumber=AD0JFYU1                                                                                                   
C:  #Ifs= 1 Cfg#= 1 Atr=a0 MxPwr=90mA                                                                                       
I:  If#=0x0 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=(none)   


Andere Devices hängen nicht dran, also habe ich schon einmal eine Regel angelegt:
ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6001", SYMLINK+="irsensor", ACTION=="add"   

Auf der Synology direkt funktionert das wunderbar,  dort wird das Device /dev/irsensor angelegt.  Innerhalb des Containers funktioniert das leider nicht, da muss ich nochmal weiterforschen...
Leider funktioniert die noch nicht, ich muss da noch weiter nachforschen. Einen Ordner /dev/serial habe ich gar nicht
Titel: Antw:IR Lesekopf im FHEM Docker Container ansteuern
Beitrag von: Dr. Boris Neubert am 03 November 2022, 08:53:12
Mit Containern kenne ich mich leider gar nicht aus.

Die ausgelesenen Werte vom USB-Device stammen aus dem Container? Also sieht Linux im Container den Bus so wie der Host?

Dann würde ich an der Konfiguration von udev weitersuchen. udevadm benutzen.

Grüße
Boris
Titel: Antw:IR Lesekopf im FHEM Docker Container ansteuern
Beitrag von: Wernieman am 03 November 2022, 09:23:36
Synology  .. hatte ich überlesen ...

Must Du im Hostmodus nicht auch den USB-Bus mit übergeben? also "mounten"?
Titel: Antw:IR Lesekopf im FHEM Docker Container ansteuern
Beitrag von: Fhemschorsch am 04 November 2022, 10:36:23
So, ich bin ein Stück weitergekommen. Ich habe die udev-Regel nun auf dem Wirt (der Synology direkt) angelegt, dort ist nun das Device /dev/irsensor vorhanden.

Im Docker habe ich das Binding weitergereicht und sehe auch nun innerhalb von FHEM im Container das Device /dev/irsensor. Jedoch ist es nicht ansprechbar (aktuelles define ist: define Stromzaehler OBIS /dev/irsensor@9600,7,E,1 SML, ich hab aber alles durchprobiert (8,N,1, mit SML, ohne SML), er zeigt nur disconnected. Ich bin da etwas ratlos und schon kurz davor, auf eine Lösung mit ESP und mqtt umzuschwenken, das funktioniert wahrscheinlich OOTB :-)



Titel: Antw:IR Lesekopf im FHEM Docker Container ansteuern
Beitrag von: Wernieman am 04 November 2022, 15:48:45
Stichwort: Berechtigungen? Also auf der Synology UND im Container ...
Titel: Antw:IR Lesekopf im FHEM Docker Container ansteuern
Beitrag von: Fhemschorsch am 04 Januar 2023, 09:37:45
kurze Rückmeldung: Ich habe es tatsächlich aufgegeben und mir eine Lösung über einen ESP-basierenden Lesekopf mit Tasmota / MQTT gebaut. Die funktioniert wunderbar :-).