Rademacher DuoFern USB Stick

Begonnen von Telekatz, 16 August 2015, 16:19:46

Vorheriges Thema - Nächstes Thema

JMC

Zitat von: Telekatz am 22 Januar 2023, 20:05:23Ist mir neu das Thema. Hast du einen von diesen neuen Motoren?

Moin, hat eigentlich schon jemand geschafft neue Geräte mit 10-stellen Code zu koppeln? Ich muss in kürze neue Rohrmotoren für mein bestehendes System holen und fürchte mich ein bisschen, dass sie nicht integrierbar sind.
Viele Grüße
JMC

paulbaumann

Ich versuchs nochmal, vielleicht kann mir doch Jemand einen Tip geben.
Habe den  "Home Pilot 3" 9496-3 und den Taster 9494-1. Ich bekomme da nichts hin obwohl mich der Post #1095 und #1096 hier optimistisch gemacht hat.
Den Code vom Wandtaster konnte ich dank der Data Matrix beim Aufkleber erfahren und ihn mit "define WSchalter1 DUOFERN Code" erstellen und da ist schon Ende. Das Einzige was ich eingegeben habe.
Klar kann den Wandschalter mit drücken der 2 Tasten ins Pairing bringen aber wie weiter?
Im FHEM Log sthet nur "No I/O device found for WTaster1" und das mit Stecker ziehen vom Homepilot und den Code vom "Home Pilot 3" bekommen, da passiert gar nichts mit autocreate noch gibt es ein duofern log irgendwo.
Wo ist mein Denkfehler? Wie soll ich den Duofernstick erstellen? Oder geht es schlicht nicht mit dem Home Pilot 3 und der Post #1095 war ein Schreibfehler?

dennisk

#1172
Hallo zusammen,

mir ist aufgefallen, dass der Duofernstick bis Perl 5.42.0 einwandfrei funktioniert. Mit Perl 5.42.1 und 5.42.2 funktioniert er leider nicht mehr und kann laut Log nicht initialisiert werden und wird ignoriert. Dabei ist mir außerdem noch aufgefallen, dass wenn der Stick unter Perl 5.42.0 initialisiert wird, die Parameter der seriellen Schnittstelle über
stty -F /dev/... -aabgefragt eine Baudrate von 115200 anzeigen. Wenn der Stick über 5.42.1 oder 5.42.2 initialisiert wird, dann zeigt der stty-Befehl eine Baudrate von 4098 an, was ja falsch ist. Entscheidend ist: an der Config habe ich nichts geändert, mit 5.42.0 läuft alles, ab 5.42.1 nicht mehr. Also muss es einen Commit in Perl geben, der Auswirkungen auf das DUOFERN-Modul hat bzw. es könnte auch an DevIO liegen, oder?

FHEM ist auf dem aktuellen Stand, läuft auf Arch Linux und einem RPi 5, Linux 6.18.20.

Kann das Verhalten jemand nachvollziehen?

Edit: Mit Hilfe von generativer KI konnte ich einerseits eine mögliche Lösung bzw. einen Workaround finden, andererseits konnte ich ein paar Hinweise finden, warum das Ganze ab Perl 5.42.1 nicht mehr funktioniert.

Das Problem scheint aus einer am Ende falsch übernommenen Baudrate zu resultieren. Trotz des Umstandes, dass ich in der Definition für den Duofernstick nach dem device path ein '@115200' angefügt hatte - was bis 5.42.0 immer funktioniert hat  - läuft ab Perl 5.42.1 bei der Initialisierung etwas schief und die Baudrate ist am Ende 4098 (lässt sich mit stty -F /dev... -a rausfinden).
Ich habe dann nach viel Ausprobieren und Interaktion mit generativer KI letztendlich folgende Lösung gefunden:
1. Anlegen einer udev-Regel, die die Parameter für die serielle Schnittstelle direkt beim Einstecken des Sticks setzt:
SUBSYSTEM=="tty", ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6001", RUN+="/bin/stty -F /dev/%k 115200 raw -echo -hupcl"2. Anpassen der Definition des devices für den Duofernstick in FHEM:
Aus define Rademacher DUOFERNSTICK /dev/serial/by-id/usb-Rademacher_DuoFern_USB-Stick_XXXXXXXX-if00-port0@115200 6FXXXX wird define Rademacher DUOFERNSTICK /dev/serial/by-id/usb-Rademacher_DuoFern_USB-Stick_XXXXXXXX-if00-port0@directio 6FXXXX. Dadurch wird DevIo wohl dazu gezwungen, die Parameter der seriellen Schnittstelle als durch das Betriebssystem korrekt gesetzt zu betrachten und diese in Ruhe zu lassen.

Damit funktioniert der Stick dann auch wieder unter Perl 5.42.1. Die KI hat mir dann noch den Hinweis gegeben, dass sich in Perl zwischen 5.42.0 und 5.42.1 etwas an ioctl/termios geändert hat, was zu einer Inkompatibilität mit DevIo und/oder dem Duofernstick-Modul geführt haben könnte. Leider reichen meine Perl-Kenntnisse und auch Erfahrungen im Umgang mit serieller Kommunikation bei Weitem nicht aus, um mir das selbst näher anzusehen.

Vielleicht hilft der Workaround anderen, die auf das selbe Problem stoßen. Und vielleicht helfen meine Angaben dem jemandem mit mehr Expertise dabei, eine mögliche Lösung zu finden, dass es auch wieder mit der in FHEM explizit gesetzten Baudrate klappt.