Ich setze FHEM auf einem Raspberry pi3 unter dem aktuellen OSMC-Image (ein Minimal-Linux für Kodi) ein. Dort fehlt die Gruppe gpio, stattdessen gibts die Gruppe osmc (genausowenig gibt es übrigens den User pi, stattdessen den User osmc).
Da es in /etc/rules.d/996-fix-gpiomem.rules eine Regel gibt, um in sysfs die Gruppenrechte bzgl. gpio auf osmc zu setzten, habe ich FHEM mal in die Gruppe osmc gepackt und neu gebootet. Leider gibts immer noch einige Fehlermeldungen von FHEM beim define.
Viel Googlen hat erbracht, daß diese udev-Regel wohl tw. feherhaft ist und man insbesondere Zugriffsrechte in /sys/devices/virtual/bcm2835-gpiomem benötigt, die ich manuell gesetzt habe. Danach kann ich mittels define ... RPI_GPIO .. Ports mit etwas weniger Fehlermeldungen anlegen. Es verbleibt aber diese Fehlermeldung
PERL WARNING: Can't exec "export": Datei oder Verzeichnis nicht gefunden at ./FHEM/51_RPI_GPIO.pm line 647.
Wenn ich den Code dort richtig interpretiere, wird dort ein Programm von WiringPi benutzt, das aber laut Doku nicht zwingend erforderlich sei (außer zur Aktivierung der internen pullup/down-Widerstände, die ich nicht benötige).
Das Lesen vom GPIO-Port funktioniert ohne Fehlermeldung. Ich habe aber meine neu gelötete "Hardware" noch nicht angeschlossen, da ich erst Alles auf Software-Seite austesten will, so daß ich nur den low-Wert sehen kann.
Und jetzt zur Frage: Kann ich obige Fehlermeldung ignorieren?
Hier noch das neu angelegte GPIO-Device:
Internals:
CFGFN
DEF 27
FUUID 6208dc4e-f33f-ba1b-786a-069d9d256d70cbb3
GPIO_Basedir /sys/class/gpio
GPIO_Nr 27
NAME StateTV
NR 131
STATE off
TYPE RPI_GPIO
WiringPi_gpio
READINGS:
2022-02-13 12:16:01 Pinlevel low
2022-02-13 11:25:05 state off
fhem:
interfaces switch
Attributes:
Grüßle, Michael
Zumindest teilweise kann ich meine Frage selber beantworten: die GPIO-Ports funktionieren problemlos. Hab' meine Optokoppler an den Raspi angeschlossen, und ihr Zustand wird richtig gemeldet.
D. h. ich kann wohl die Fehlermeldung ignorieren.
Grüßle, Michael
Vielleicht doch nicht. Ich habe zwei GPIOs als input definiert und bei einem davon das interrupt Attribut auf rising gesetzt. Aber ich sehe keinerlei Events, wenn sich der Pinlevel ändert. Aber den aktuellen Zustand kann ich problemlos und richtig auslesen. Benötigt man doch WiringPi?
Internals:
CFGFN
DEF 22
EXCEPT_FD 17
FUUID 6208d8b2-f33f-ba1b-b912-b611053c805c9263
GPIO_Basedir /sys/class/gpio
GPIO_Nr 22
NAME StateBeamer
NR 106
STATE off
TYPE RPI_GPIO
WiringPi_gpio
READINGS:
2022-02-14 20:59:44 Pinlevel low
2022-02-14 20:59:44 state off
fhem:
interfaces switch
Attributes:
direction input
interrupt rising
Auf dem Raspi 3 läuft OSMC in aktueller Version (nicht bullseye).
Grüßle, Michael
Ich habe mittlerweile das Problem selber lösen können:
Um die "richtigen" Zugriffsrechte auf die GPIO-Ports zu bekommen, muß man nur das Debian-Paket rpi.gpio-common installieren. Der Zugriff wird dann für alle Mitglieder der Gruppe dialout gewährt, so daß fhem als Mitglied automatisch Zugriff hat (also kein "aduser fhem gpio" erforderlich).
Danach gibt es keine Fehlermeldungen von RPI_GPIO, und interrupt-Events werden wie erwartet erzeugt.
Wäre schön, wenn die Doku von RPI_GPIO entsprechend angepaßt würde.
Grüßle, Michael
Nachtrag:
Habe heute einen vollständigen update von fhem gemacht (mit Ausnahme von DevIo.pm). Danach funktionierte RPI_GPIO komplett nicht:
2022.02.17 16:06:37 1: Can't open file: StateTV, value
2022.02.17 16:06:37 1: StateTV GetFn: readout of Pinvalue fail
2022.02.17 16:06:37 1: PERL WARNING: Use of uninitialized value $zustand in concatenation (.) or string at ./FHEM/51_RPI_GPIO.pm line 198.
und weitere Fehlermeldungen bzgl. RPI_GPIO devices. fhem habe ich natürlich mittels shutdown restart vorher neu gestartet.
Aber nach einem kompletten Reboot meines Raspberry pi 3 funktioniert RPI_GPIO wieder fehlerfrei.
Grüßle, Michael