Für die, die sich etwas genauer damit beschäftigen möchten hier noch eine kurze Erklärung dazu:
Die USB-Geräte werden über sogenannte udev Rules als Symlink erzeugt, damit in den Konfigurationen auch nach einem Neustart die Geräte unter der gleichen Adresse angesprochen werden können.
Hier eine Anleitung, wie Ihr den einzelnen Geräten anhand der USB-Seriennummer einen festen Namen vergeben könnt.
Es ist hier eigentlich egal, ob ihr schon mehrere Geräte angeshclossen habt und eine funktionierende Solaranzeige betreibt oder erst mit einem Gerät beginnt. Ich versuche es so zu erlären damit jeder damit zurecht kommt.
Mit
Code: Alles auswählen
lsusb
z.B.
Code: Alles auswählen
pi@solaranzeige:~ $ lsusb
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 004: ID 10c4:ea60 Cygnal Integrated Products, Inc. CP2102/CP2109 UART Bridge Controller [CP210x family]
Bus 001 Device 003: ID 10c4:ea60 Cygnal Integrated Products, Inc. CP2102/CP2109 UART Bridge Controller [CP210x family]
Bus 001 Device 002: ID 2109:3431 VIA Labs, Inc. Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Code: Alles auswählen
ls -la /dev/serial/by-id/
Code: Alles auswählen
pi@solaranzeige:~ $ ls -la /dev/serial/by-id/
insgesamt 0
drwxr-xr-x 2 root root 80 Jun 2 16:42 .
drwxr-xr-x 4 root root 80 Jun 2 16:42 ..
lrwxrwxrwx 1 root root 13 Jun 2 16:42 usb-Silicon_Labs_CP2102_USB_to_UART_Bridge_Controller_0006-if00-port0 -> ../../ttyUSB1
lrwxrwxrwx 1 root root 13 Jun 2 16:42 usb-Silicon_Labs_CP2102_USB_to_UART_Bridge_Controller_0007-if00-port0 -> ../../ttyUSB0
Habt ihr bereits mehrere angeschlossen und verwendet die Multi-Regler-Version, ist meistens ttyUSB0 das Gerät in der 1.user.config.php, ttyUSB1 in 2.user.config.php usw. Aber das könnt ihr ja in den Dateien nochmal nachschauen.
Um den einzelnen Geräten nun eine feste Bezeichnung vergeben zu können, benötigen wir die Seriennummern der einzelnen USB-Geräte, da diese einmalig sein sollte.
Mit
Code: Alles auswählen
udevadm info -a -n /dev/ttyUSB0 | grep '{serial}' | head -n1
Code: Alles auswählen
udevadm info -a -n /dev/ttyUSB1 | grep '{serial}' | head -n1
z.B.
Code: Alles auswählen
pi@solaranzeige:~ $ udevadm info -a -n /dev/ttyUSB0 | grep '{serial}' | head -n1
ATTRS{serial}=="0007"
pi@solaranzeige:~ $ udevadm info -a -n /dev/ttyUSB1 | grep '{serial}' | head -n1
ATTRS{serial}=="0006"
Code: Alles auswählen
sudo mcedit /etc/udev/rules.d/99-usb-serial.rules
Der Aufbau einer solchen Zeile ist folgender:
Code: Alles auswählen
SUBSYSTEM=="tty", ATTRS{serial}=="SERIENNUMMER", SYMLINK+="WUNSCHNAME", OWNER="pi"
Bei SYMLINK die Info, wohin der Systemlink zeigen soll.
Mit OWNER dann abschließend noch die Angabe, welcher Benutzer Zugriff erhalten soll. Wer Raspberry Pi OS einsetzt, trägt eben den User “pi” ein.
in meinem Beispiel würde es dann so aussehen
Code: Alles auswählen
SUBSYSTEM=="tty", ATTRS{serial}=="0006", SYMLINK+="Geraet1", OWNER="pi"
SUBSYSTEM=="tty", ATTRS{serial}=="0007", SYMLINK+="Geraet2", OWNER="pi"
Code: Alles auswählen
sudo reboot
Code: Alles auswählen
ls -l /dev/Geraet1
Code: Alles auswählen
pi@solaranzeige:~ $ ls -l /dev/Geraet1
lrwxrwxrwx 1 root root 7 Jun 2 16:42 /dev/EZ -> ttyUSB0
pi@solaranzeige:~ $ ls -l /dev/Geraet2
lrwxrwxrwx 1 root root 7 Jun 2 16:42 /dev/2RZ -> ttyUSB1
Code: Alles auswählen
$USBDevice = "/dev/Geraet1";
Code: Alles auswählen
$USBDevice = "/dev/Geraet2";
Falls Fragen sind, gerne mirstellen und ich versuche Sie zu beantworten.