IR Lesekopf im FHEM Docker Container ansteuern

Begonnen von Fhemschorsch, 02 November 2022, 16:01:48

Vorheriges Thema - Nächstes Thema

Fhemschorsch

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?



Dr. Boris Neubert

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 oder viele andere Stellen im Netz, um zu lernen, wie das geht.
Globaler Moderator, Developer, aktives Mitglied des FHEM e.V. (Marketing, Verwaltung)
Bitte keine unaufgeforderten privaten Nachrichten!

Wernieman

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)
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

Dr. Boris Neubert

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.
Globaler Moderator, Developer, aktives Mitglied des FHEM e.V. (Marketing, Verwaltung)
Bitte keine unaufgeforderten privaten Nachrichten!

Wernieman

War ich früher auch der Meinung, habe mich hier im Forum vom Gegenteil überzeugen lassen ..... aber zum erstmal gucken ist es jedenfalls optimal ...
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

Fhemschorsch

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

Dr. Boris Neubert

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
Globaler Moderator, Developer, aktives Mitglied des FHEM e.V. (Marketing, Verwaltung)
Bitte keine unaufgeforderten privaten Nachrichten!

Wernieman

Synology  .. hatte ich überlesen ...

Must Du im Hostmodus nicht auch den USB-Bus mit übergeben? also "mounten"?
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

Fhemschorsch

#8
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 :-)




Wernieman

Stichwort: Berechtigungen? Also auf der Synology UND im Container ...
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

Fhemschorsch

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 :-).