Eindeutige Zuordnung ttyUSBx ?

Wenn mehr als ein Gerät an den Raspberry angeschlossen werden sollen. Z.B. ein Regler und ein Wechselrichter oder mehrere Wechselrichter. Das Maximum sind 6 Geräte pro Raspberry Pi.
Nafets
Beiträge: 18
Registriert: Di 10. Sep 2019, 10:25

Eindeutige Zuordnung ttyUSBx ?

Beitrag von Nafets » Sa 8. Feb 2020, 12:16

Nach meinen gestrigen Umbaumaßnahmen wurde die Zuordnung der beiden Victron VE.direct USB Adapter vertauscht.
Vermutlich habe ich sie anders in die USB-Ports gesteckt, als davor.

@Ulrich
Ist es im 1.user.config.php möglich, anstatt des Bezeichners /dev/ttyUSB0 den ausführlicheren (und Eindeutigen)

Code: Alles auswählen

pi@solaranzeige:~ $ ls -l /dev/serial/by-id
insgesamt 0
lrwxrwxrwx 1 root root 13 Feb  7 21:47 usb-VictronEnergy_BV_VE_Direct_cable_VE3GQP35-if00-port0 -> ../../ttyUSB0
lrwxrwxrwx 1 root root 13 Feb  7 21:47 usb-VictronEnergy_BV_VE_Direct_cable_VE3H70ER-if00-port0 -> ../../ttyUSB1
zu verwenden ?

Benutzeravatar
Ulrich
Administrator
Beiträge: 844
Registriert: Sa 7. Nov 2015, 10:33
Wohnort: Essen
Kontaktdaten:

Re: Eindeutige Zuordnung ttyUSBx ?

Beitrag von Ulrich » Sa 8. Feb 2020, 14:37

Ja das geht! Bei Kabeln die eine Seriennummer haben, wie z.B. die VE.direct Kabeln ist das möglich. Bei einfachen USB Kabeln nicht, da die alle gleich heißen. Bitte die Namen in Gänsefüßchen einfassen.
z.B. "usb-VictronEnergy_BV_VE_Direct_cable_VE3H70ER-if00-port0"
--------------------------------------
Ulrich [Admin]

Nafets
Beiträge: 18
Registriert: Di 10. Sep 2019, 10:25

Re: Eindeutige Zuordnung ttyUSBx ?

Beitrag von Nafets » Sa 8. Feb 2020, 22:37

Habs in variable $USBDevice kurz vorm dateiende geändert

Schreibt den neuen Namen auch brav ins logfile
Jedoch keine Baud Rate dahinter

In der Abfrageschleife gibts dann aber ne USB Fehlermeldung

Code: Alles auswählen

08.02. 21:51:24    -Die seriellen Schnittstellen werden initialisiert.
08.02. 21:51:24    -Device: usb-VictronEnergy_BV_VE_Direct_cable_VE3GQP35-if00-port0 Geschwindigkeit: 
08.02. 21:51:24    -Zeile gefunden. Gerätenummer kann ausgetauscht werden. Index: 97   $GeraeteNummer = "1";

08.02. 21:51:24    -Zeile gefunden. Platine kann ausgetauscht werden. Index: 431   $Platine = "Raspberry Pi 3 Model B Rev 1.2";

08.02. 21:51:24    -Device: usb-VictronEnergy_BV_VE_Direct_cable_VE3H70ER-if00-port0 Geschwindigkeit: 
08.02. 21:51:24    -Zeile gefunden. Gerätenummer kann ausgetauscht werden. Index: 109   $GeraeteNummer = "2";

08.02. 21:51:24    -Zeile gefunden. Platine kann ausgetauscht werden. Index: 466   $Platine = "Raspberry unbekannt";

08.02. 21:52:11    -Multi Regler Auslesen [Start].
08.02. 21:52:11 MQT-0-CONX-OK|
08.02. 21:52:11    -Verarbeitung von: '1.user.config.php'   Regler: 4
08.02. 21:52:11 |------------   Start  victron_solarregler.php   ----------------- 
08.02. 21:52:11 XX -USB Port kann nicht geöffnet werden. [1]
08.02. 21:52:11 XX -Exit.... 
08.02. 21:53:01 MQT-0-CONX-OK|




Wieder zurück geändert auf /dev/ttyUSBx
Dann funktionierts und sieht so aus:

Code: Alles auswählen

08.02. 22:26:02    -Multi Regler Auslesen [Start].
08.02. 22:26:02    -Verarbeitung von: '1.user.config.php'   Regler: 4
08.02. 22:26:02 |------------   Start  victron_solarregler.php   ----------------- 
08.02. 22:26:24    -Die seriellen Schnittstellen werden initialisiert.
08.02. 22:26:24    -Device: /dev/ttyUSB0 Geschwindigkeit: 9600
08.02. 22:26:24    -Zeile gefunden. Gerätenummer kann ausgetauscht werden. Index: 97   $Gera
eteNummer = "1";

08.02. 22:26:24    -Zeile gefunden. Platine kann ausgetauscht werden. Index: 431   $Platine 
= "Raspberry Pi 3 Model B Rev 1.2";

08.02. 22:26:24    -Device: /dev/ttyUSB1 Geschwindigkeit: 9600
08.02. 22:26:24    -Zeile gefunden. Gerätenummer kann ausgetauscht werden. Index: 109   $Ger
aeteNummer = "2";

08.02. 22:26:24    -Zeile gefunden. Platine kann ausgetauscht werden. Index: 466   $Platine 
= "Raspberry unbekannt";

08.02. 22:27:01 MQT-0-CONX-OK|
08.02. 22:27:01    -Multi Regler Auslesen [Start].
08.02. 22:27:01    -Verarbeitung von: '1.user.config.php'   Regler: 4
08.02. 22:27:01 |------------   Start  victron_solarregler.php   ----------------- 
08.02. 22:27:03    -MQTT Daten zum [ localhost ] senden.
08.02. 22:27:03 *  -Daten zur lokalen InfluxDB [ solaranzeige ] gesendet. 
08.02. 22:27:03    -OK. Datenübertragung erfolgreich.
08.02. 22:27:03 |------------   Stop   victron_solarregler.php   ----------------- 
08.02. 22:27:03    -Verarbeitung von: '2.user.config.php'   Regler: 4
08.02. 22:27:03 |------------   Start  victron_solarregler.php   ----------------- 
08.02. 22:27:06 *  -Daten zur lokalen InfluxDB [ solaranzeige2 ] gesendet. 
08.02. 22:27:06    -OK. Datenübertragung erfolgreich.
08.02. 22:27:06 |------------   Stop   victron_solarregler.php   ----------------- 
08.02. 22:27:06    -Multi Regler Auslesen [Stop].

08.02. 22:27:59 MQT-Ende der Verarbeitung. (MQTT)
08.02. 22:28:01 MQT-0-CONX-OK|


Was soll ich als nächstes testen ?

franza
Beiträge: 4
Registriert: Di 12. Nov 2019, 23:12
Wohnort: Wien

Re: Eindeutige Zuordnung ttyUSBx ?

Beitrag von franza » So 9. Feb 2020, 18:34

Hallo,
ich hatte ein ähnliches Problem mit den Steca Solarix (AX 5000 Type). Hinter dem USB Port ist ein "ID 0665:5161 Cypress Semiconductor USB to Serial" verbaut, und meine drei Hybrid Inverter kamen dann gemeinsam mit 4 weiteren als /dev/hidraw(x) daher. Leider nicht nach jedem Reboot gleich.

Code: Alles auswählen

pi@solarctrl:~ $ ls /dev/hid* -al 
crw------- 1 root root 245, 0 Feb  5 07:52 /dev/hidraw0
crw------- 1 root root 245, 1 Feb  5 07:52 /dev/hidraw1
crw------- 1 root root 245, 2 Feb  5 07:52 /dev/hidraw2
crw------- 1 root root 245, 3 Feb  5 07:52 /dev/hidraw3
crw------- 1 root root 245, 4 Feb  5 07:52 /dev/hidraw4
crw------- 1 root root 245, 5 Feb  5 07:52 /dev/hidraw5
crw------- 1 root root 245, 6 Feb  5 07:52 /dev/hidraw6
Ich habe dann versucht, über udev Rules fixe Zuordnungen zu machen, habe aber bei dem Chip kein eindeutiges Attribut (etwa SerialNumber) gefunden.

Schließlich habe ich das Problem plump aber effektiv "erledigt":

Die 3 Geräte sind jeweils auf fixe Positionen eines kleinen 4-Port USB Hub angesteckt. ( EAN: 4260113575703 )
In einem Shell Script hole ich mir die /dev/hidraw* und frage mit udevadm den ganzen Pfad ab. Wenn es sich um einen Cypress Chip handelt, dann errechne ich mir aus dem Port des USB Hub einen schönen Namen (Inv1 .. Inv3) und erzeuge eine Link unter /dev/cypress.

Code: Alles auswählen

pi@solarctrl:~ $ ls /dev/cypress/ -al 
insgesamt 0
drwxr-xr-x  2 root root  100 Feb  5 07:52 .
drwxr-xr-x 19 root root 3900 Feb  5 07:52 ..
lrwxrwxrwx  1 root root   12 Feb  5 07:52 Inv1 -> /dev/hidraw0
lrwxrwxrwx  1 root root   12 Feb  5 07:52 Inv2 -> /dev/hidraw3
lrwxrwxrwx  1 root root   12 Feb  5 07:52 Inv3 -> /dev/hidraw6
pi@solarctrl:~ $ 
Das Script startet über Cron nach dem Reboot. Hat jetzt über wohl 20-30 Reboots sauber funktioniert.
Aufgefallen ist mir, dass es beim Raspi 3b+ andere USB Pfade gibt als beim normalen 3b, und ich gehe davon aus, dass es auf anderer Hardware wieder anders aussieht. Daher hänge ich das Script hier mal nicht direkt rein.

--
Franz

Benutzeravatar
Ulrich
Administrator
Beiträge: 844
Registriert: Sa 7. Nov 2015, 10:33
Wohnort: Essen
Kontaktdaten:

Re: Eindeutige Zuordnung ttyUSBx ?

Beitrag von Ulrich » So 9. Feb 2020, 19:31

Hallo Nafets,


Lese doch bitte einfach einmal diesen Beitrag:
viewtopic.php?f=4&t=435&p=1798&hilit=%2Fdev%2F#p1798

Dort steht alles genau drin.
--------------------------------------
Ulrich [Admin]

Nafets
Beiträge: 18
Registriert: Di 10. Sep 2019, 10:25

Re: Eindeutige Zuordnung ttyUSBx ?

Beitrag von Nafets » So 9. Feb 2020, 21:29

Danke für die Info

...hat nur der Pfad /dev/serial/by-id/ gefehlt

Jetzt läufts wie gewünscht !

Antworten