CUL mit serial für eindeutige Zuordnung per udev?

Begonnen von kpwg, 03 August 2014, 12:13:24

Vorheriges Thema - Nächstes Thema

kpwg

Hallo Leute,

nachdem ich jetzt das Forum durchstöbert habe und wir auch im Chat das Thema hatten, jedoch keine befriedigende Lösung fanden, stelle ich das hier als Wunsch zur Debatte:

Besteht die Möglichkeit, jedem CUL eine Serial oder anderes eindeutiges Merkmal zu verpassen? Ich betreibe mehrere CUL868 mit verschiedenen Antennen und habe aktuell nach jedem Reboot die CULs zufällig zugeordnet. Mal klappt's, dann wieder nicht. Entsprechend habe ich dann manche Sensoren nicht mehr auf dem Schirm.

Die Idee, per Bus:Device die Sticks mit udev zu unterscheiden ist nicht die Lösung, da spätestens bei der nächsten Änderung am USB-Hub oder dessen Ersatz die Zuordnung wieder futsch ist. Auch sollte die Lösung ein Update der culfw überleben.

Wie denkt ihr darüber?

Viele Grüße, Ricardo

schka17

Hallo Ricardo,

Ich hatte mit mehreren Jeelinks immer wieder Probleme, ich habs dann über die Serial ID gelöst.

Beispiel:

/dev/serial/by-id/usb-FTDI_FT232R_USB_UART_AE01DTY1-if00-port0

Gruß

Karl
M: Thinclient x64 Debian | CUL FS20, HMS100WD, HMS100TF, HMS100T, HMS100CO, S300, S555TH | OWServer DS1420, DS18B20, DS2408 | RFXCOM UVN128, THWR800, THGR228N,RTGR328, PCR800 |Jeelink PCA301 EC3000|CUNO+IR|HMLAN|HMUSB|CUL433 Somfy|mySensors|espEasy
S1:Raspberry mit BPM810, Jeelink EC3000

kpwg

Zitat von: schka17 am 03 August 2014, 12:25:06
Ich hatte mit mehreren Jeelinks immer wieder Probleme, ich habs dann über die Serial ID gelöst.

Hallo Karl,

genau diese Serial ID (oder eine andere Eindeutigkeit) fehlt dem CUL.

Tobias

Ich stand vor dem selben Problem (habe 3x CUL) und habe auch keine Lösung gehabt, schlussendlich ist es aber egal, da die Funkprotokolle per attr gesetzt werden. Normalerweise ist es egal ob Homematic der erste oder der 2te sendet.
Ich würde an deiner Stelle allen eine einheitliche antenne verpassen.
Maintainer: Text2Speech, TrashCal, MediaList

Meine Projekte: https://github.com/tobiasfaust
* PumpControl v2: allround Bewässerungssteuerung mit ESP und FHEM
* Ein Modbus RS485 zu MQTT Gateway für SolarWechselrichter

kpwg

Tobias, das löst aber das Problem nicht. Die Antennen wurden auf bestimmte Richtungen experimentell optimiert und die CUL befinden sich an unterschiedlichen Standorten (5m USB-Verlängerung funktioniert  8)). Mit komplett identischen Antennen erreiche ich meinen Außensensor nicht mehr (bzw. empfange ihn nicht).

Tobias

Ich weiß nur, das es keine Lösung gibt. Hift dir nicht ein Repeater weiter? Für HM setze ich auch einen ein, für FS20 gibt es auch einen bzw nutze ich hier einen abgesetzten CUNO statt CUL
Maintainer: Text2Speech, TrashCal, MediaList

Meine Projekte: https://github.com/tobiasfaust
* PumpControl v2: allround Bewässerungssteuerung mit ESP und FHEM
* Ein Modbus RS485 zu MQTT Gateway für SolarWechselrichter

no_Legend

#6
Hi ich bin gerade auch auf der Suche nach einer Lösung.

Ich habe einen CUL für 433 und einen für 868.
Kann man nicht einen Statische Zuweisugn über USB Port machen?
Muss ja nicht unbedingt die Seriennummer herhalten.

Hab mich jetzt noch nicht in Uhde eingelesen.
Auch keine Ahnung wie es sich mit USB Hubs verhält.

Muss ich die Tage mal testen.

Edit:
Hab was gefunden
http://askubuntu.com/questions/49910/how-to-distinguish-between-identical-usb-to-serial-adapters

Es müsste also gehen anhand der port Nummer zu arbeiten.

Gruß Robert
IntelNUC mit Ubuntu mit FHEM immer aktuell,2x HMLAN, CUL443, CUL868 -homekit/siri -tablet ui -homebridge
Device, diverse:
HM-SEC-KEY,HM-LC-BL1-FM,HM-SEC-SD,HM-Sen-DB-PCB,HM-Sec-RHS,HM-Sec-SC-2,HM-WDS10-TH-O,Harmony,Netamo, 433MHz Steckdosen uvm.

hermannk

Hallo kpwg,

Zitat von: kpwg am 03 August 2014, 17:33:06
genau diese Serial ID (oder eine andere Eindeutigkeit) fehlt dem CUL.

wirklich? ich betreibe einen CUL433 (slowRF) und einen CUL868 (HM) parallel.

ls -l /dev/serial/by-id
total 0
lrwxrwxrwx 1 root root 13 Feb 27 14:30 usb-busware.de_CUL433-if00 -> ../../ttyACM0
lrwxrwxrwx 1 root root 13 Feb 27 14:31 usb-busware.de_CUL868-if00 -> ../../ttyACM1
lrwxrwxrwx 1 root root 13 Feb 27 13:46 usb-Silicon_Labs_CP2102_USB_to_UART_Bridge_Controller_0001-if00-port0 -> ../../ttyUSB0


Also: Wenn sich die Frequenzen unterscheiden, dann bekommen sie unter /dev/serial/by-id verschiedene Portnamen.

Mit udev-Regeln (...ATTRS{iProduct}="CUL433", ...) war ich zuvor gescheitert, weil iProduct anscheinend nicht ausgewertet wird.

Gruss,

Hermann

no_Legend

Das mit den USB Ports scheint zu funktionieren.
Ich hab es so eingerichtet.

MIt der Frequenz geht nur wenn du nur einen Stick mit der Frequenz hast.
Solltest du zwei haben mit der gleichen Frequenz geht das nicht mehr.
IntelNUC mit Ubuntu mit FHEM immer aktuell,2x HMLAN, CUL443, CUL868 -homekit/siri -tablet ui -homebridge
Device, diverse:
HM-SEC-KEY,HM-LC-BL1-FM,HM-SEC-SD,HM-Sen-DB-PCB,HM-Sec-RHS,HM-Sec-SC-2,HM-WDS10-TH-O,Harmony,Netamo, 433MHz Steckdosen uvm.

noxinu

Alternativ by-path:
pi@pi ~ $ ls -l /dev/serial/by-path/
insgesamt 0
lrwxrwxrwx 1 root root 13 Jan  1  1970 platform-bcm2708_usb-usb-0:1.2:1.0 -> ../../ttyACM0
lrwxrwxrwx 1 root root 13 Jan  1  1970 platform-bcm2708_usb-usb-0:1.3:1.0 -> ../../ttyACM1
lrwxrwxrwx 1 root root 13 Jun 27 17:15 platform-bcm2708_usb-usb-0:1.4:1.0 -> ../../ttyACM2
lrwxrwxrwx 1 root root 13 Jan  1  1970 platform-bcm2708_usb-usb-0:1.5:1.0-port0 -> ../../ttyUSB0


also zum Beispiel:

define CUL_2 CUL /dev/serial/by-path/platform-bcm2708_usb-usb-0:1.3:1.0@9600 1234


noansi

#10
Hallo Zusammen,

Ich hatte das gleiche Problem und mein RasPi hat die CULs auch in der Reihenfolge vertauscht, wenn ich einen Warmstart statt eines Kaltstart gemacht habe. Blöd, wenn einer eine 433Hz und einer 868MHz Version ist. (Und noch blöder, wenn man gerade Änderungen an SlowRf testet und nur deswegen plötzlich der Empfang mies ist... und HM nicht mehr gut empfangen wird... und man schon neue CULs ordern will...  :o).

Code für eine einstellbare Seriennummer ist hier http://forum.fhem.de/index.php/topic,24436.msg377742.html#msg377742 zu finden in den Descriptors.

Das müsste nur in der allgemeinen Version verfügbar gemacht werden.
Da ich aber beim Firmware Code abseits des Standard Pfades unterwegs bin, kann ich das nicht mal eben machen.

Im Standard Code gibt es noch einen Define LUFA, der, wenn gesetzt die Seriennummer des Atmel Chips als USB Seriennummer nutzbar machen sollte. Vielleicht mal in die board.h bei CUL_V3 u. CUL_V4 einbauen, compilieren, flashen und testen?

Grüße und frohes Fest,

Ansgar.

PeMue

Zitat von: noansi am 23 Dezember 2015, 16:19:34
Code für eine einstellbare Seriennummer ist hier http://forum.fhem.de/index.php/topic,24436.msg377742.html#msg377742 zu finden in den Descriptors.

Das müsste nur in der allgemeinen Version verfügbar gemacht werden.
Da ich aber beim Firmware Code abseits des Standard Pfades unterwegs bin, kann ich das nicht mal eben machen.
Hallo Ansgar,

kennst Du diese application note von Atmel http://www.atmel.com/Images/doc8201.pdf? Könnte man das in die Descriptors.c einbauen und per board.h verfügbar machen?

Gruß Peter
RPi3Bv1.2 rpiaddon 1.66 6.0 1xHM-CC-RT-DN 1.4 1xHM-TC-IT-WM 1.1 2xHB-UW-Sen-THPL-O 0.15 1x-I 0.14OTAU  1xCUNO2 1.67 2xEM1000WZ 2xUniroll 1xASH2200 3xHMS100T(F) 1xRFXtrx 90 1xWT440H 3xTFA30.3150 5xFA21
RPi1Bv2 LCDCSM 1.63 5.8 2xMAX HKT 1xMAX RT V200KW1 Heizung Wasser

noansi

#12
Hallo Peter,

Die application note hatte ich gelesen.

Wenn LUFA definiert ist, dann ist das wohl schon so gedacht, daß das von Lufa so gemacht wird.
Man müsste dem Code dazu mal in Lufa nachgehen, wo es klemmt oder ob LUFA das nur nicht mit dem ATmega32U4 macht.

EDIT: Es klemmt an der LUFA Version im CUL Projekt. Im letzten Stand wird auch ATmega32U4 und ATmega32U2 mit der integrierten ATMEL Seriennummer unterstützt. D.h. der LUFA code wäre entsprechend anzupassen.

Der Weg, einen einstellbaren Seriennummer Descriptor einzubauen, war schneller und einfacher umzusetzen.  ;)

Gruß, Ansgar.

noxinu

Hi.

Die Zuweisung "by-path" ist auch Käse und führt zumindest bei mir auf einem VMware ESX immer wieder zu Problemen, da die Gerät scheinbar nach Shutdown-Restarts verschiedener VMs immer wieder auf anderen virtuellen Ports zu finden sind.

Alternativ lässt sich die ID des Geräts editieren in der board.h

Näheres findet sich hier http://culfw.de/commandref.html

die culfw auschecken via
svn checkout svn://svn.code.sf.net/p/culfw/code/trunk culfw-code

wenn im HOME Verzeichnis ausgepackt,
dann findet sich in ~/culfw-code/culfw/Devices/CUL/

die Datei board.h

diese lässt sich dann zB via

nano board.h

bearbeiten.

Editiert habe ich...


#define BOARD_ID_STR            "CUL868FS20"
#define BOARD_ID_USTR           L"CUL868FS20"


Das Ergebnis sieht dann so aus:


root@debian ~ > ls -l /dev/serial/by-id
insgesamt 0
lrwxrwxrwx 1 root root 13 Jan 18 22:40 usb-busware.de_CUL433-if00 -> ../../ttyACM2
lrwxrwxrwx 1 root root 13 Jan 13 11:55 usb-busware.de_CUL868FS20-if00 -> ../../ttyACM1
lrwxrwxrwx 1 root root 13 Jan 13 11:48 usb-busware.de_CUL868HM-if00 -> ../../ttyACM0
lrwxrwxrwx 1 root root 13 Nov 26 23:40 usb-FTDI_FT232R_USB_UART_A603IGD0-if00-port0 -> ../../ttyUSB2
lrwxrwxrwx 1 root root 13 Nov 26 23:40 usb-FTDI_FT232R_USB_UART_A7031F5L-if00-port0 -> ../../ttyUSB1
lrwxrwxrwx 1 root root 13 Jan 13 10:18 usb-FTDI_FT232R_USB_UART_AL006T17-if00-port0 -> ../../ttyUSB0


Das brauchte ich neulig selbst wieder und konnte die Info auf die Schnelle nicht finden, deshalb hier kurz zusammengefasst.

Achja, um den CUL in den Bootloader zu schicken kann man das Teil natürlich mit gedrücktem Taster in den USB Port stecken.... oder aber....

set CUL_xxx raw B01

an das zu flashende Gerät absetzen...

Have Fun

Darkman

#14
Moin,

danke fuer den Tipp mit der Firmware anpassung. Ich wuerde an der Stelle jedoch die "Serial" nehmen die Busware auf das Ding drauf gedruckt hat. Dann hat man ein eindeutigen Identifikationsstring der auch auf dem Ding drauf steht. Falls dann doch mal der HM Stick fuer was anderes herhalten soll.

Wer sich das ersparen moechte, koennte noch folgenden "Trick" versuchen:
Statt die ID zu nehmen gibt es auch noch den USB Port als Referenz. Wer also nicht extra neue Firmware bauen moechte kann die Dinger via.

/dev/serial/by-path/

einbinden. Wenn man dort mit einem "ls -la" guckt, sieht man die aktuelle Zuordnung (so als Hilfe) und kann die entsprechenden Devices darueber einbinden. Also fuer nen Raspi (ohne Gewaehr!) z.B. ueber

/dev/serial/by-path/platform-3f980000.usb-usb-0:1.3:1.0-port0

fuer den ersten USB Port, port1 fuer den 2. usw.

Solange ihr die Sticks dann in die richtigen Ports steckt, passts.

Gruss,
Sven[/code]