[Gelöst] GPIO ohne WiringPi - Fehlermeldung beim define

Begonnen von olwaldi, 13 Februar 2022, 12:30:23

Vorheriges Thema - Nächstes Thema

olwaldi

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

olwaldi

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

olwaldi

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

olwaldi

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

olwaldi

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