NEWS
Docker Container RPi Adpater GPIO ansteuern
-
Hallo Zusammen,
ich betreibe meinen iobroker auf einem RPi 4 in dem Docker Container von buanet mittels Portainer. Das funktioniert auch soweit super. Heute wollte ich dann über den RPI-Monitor Adpater einen GPIO schalten (für einen Lüfter). Leider bekomme ich aber sobald ich den GPIO in den Adapter Settings aktivieren den Fehler:
"Cannot setup port 17 as input: Error: EACCES: permission denied, open '/sys/class/gpio/export'"folgendes habe ich schon probiert nach suchen/googlen:
- /sys durchgereicht in den Container
- Container im priviliged mode gestartet
- /dev/mem & /dev/gpiomem in den Container durchgereicht
Leider immer wieder der selbe Fehler. Hat da jemand eine Idee? Es muss auch nicht zwingend über den Adapter gehen. Ich muss nur irgendwie über ein blockly script den GPIO 17 schalten können
Danke & Gruß
-
Kommst du hiermit weiter :
https://forum.iobroker.net/topic/6526/rasppi-gpio-und-iobroker-ein-smarthome/10 -
@glasfaser Nein leider nicht. Die gehen ja von einer lokalen Installation aus. Das Problem bei mir ist ja das iobroker im Docker läuft und somit nich t auf die GPIOs zugreifen kann.
Gruß
-
@chesterb Hallo!
Ist zwar schon älter, aber konntest Du das Problem lösen? Ich stehe grade am gleichen Punkt, habe ein Raspberry 5 mit Docker installiert und möchte meine Gaszählung portieren... iobroker Konfiguration über GPIO22, derzeit bei normaler Installation auf dem Raspi 4 kein Problem.Danke
-
-
@dpcfan sagte in Docker Container RPi Adpater GPIO ansteuern:
Ist zwar schon älter, aber konntest Du das Problem lösen? Ich stehe grade am gleichen Punkt, habe ein Raspberry 5 mit Docker installiert und möchte meine Gaszählung portieren... iobroker Konfiguration über GPIO22, derzeit bei normaler Installation auf dem Raspi 4 kein Problem.
Es gibt zwei Voraussetzungen, um die GPIOs des Raspi direkt aus Docker heraus ansteuern zu können:
- Bind mount (/sys)
- Setzen der Umgebungsvariable "SETGID" auf die Gruppen-ID von "gpio" des Host
Beispiel:
version: "3.9" services: iobroker: container_name: iobroker image: buanet/iobroker:latest-v9 hostname: iobroker restart: unless-stopped networks: test: volumes: - /opt/docker/iobroker:/opt/iobroker - /sys:/sys ports: - "8081-8082:8081-8082" environment: - SETGID=993
-
@marc-berg
Hallo!
Vielen Dank, war etwas abgelenkt (3 Monate?)!
Was sol lder Bind SYS machen und wie wende ich ihn an?
Wie bekomme ich die Gruppen-ID des GPIO22? -
@dpcfan sagte in Docker Container RPi Adpater GPIO ansteuern:
Was sol lder Bind SYS machen und wie wende ich ihn an?
Der soll das Verzeichnis "/sys" in den Container mappen, damit die erforderlichen Befehle erreichbar sind.
https://dev-community.de/resources/docker-bind-mounts-eine-Übersicht.18/Wie bekomme ich die Gruppen-ID des GPIO22?
Es geht hierbei um die Linux-Usergruppen und hat nichts mit den GPIOs zu tun:
https://sysware.computer/linux/scripte_user_gruppen.html#gid -
@marc-berg
OK, Gruppen-ID ist bei mir in der etc/group Datei für gpio auch 993 (Zufall oder immer so, keine Ahnung).Hab die Änderungen in meiner Stack Datei gemacht und ihn neu geladen.
Im Container iobroker den rpi2.0 den GPIO 22 auf Eingang konfiguriert...
Brauche ich noch etwas?
-
@dpcfan bekomme jetzt beim Start des Containers eine Fehlermeldung:
Cannot setup port 22 as input: Error: EROFS: read-only file system, open '/sys/class/gpio/export'
-
@dpcfan sagte in Docker Container RPi Adpater GPIO ansteuern:
bekomme jetzt beim Start des Containers eine Fehlermeldung:
Habe ich leider keine Idee dazu. Die o.g. Vorgehensweise funktionierte bei mir mit einem Pi 4 unter Raspberry Pi OS Lite 12 (Bookworm).
-
Vielleicht hier:
https://pi-buch.info/gpio-reloaded-i-python/
Wo ist das Problem?
In der Vergangenheit gab es mehrere GPIO-Kommuniktionsmechanismen, z.B. das Lesen/Schreiben von sysfs-Dateien (sys/class/gpio) bzw. das direkte Verändern von Speicherbereichen. Diese Verfahren haben schon in der Vergangenheit oft Probleme bereitet.Es kann also nicht mehr wild in '/sys/class/gpio/export' herumgeschrieben werden.
-
@thomas-braun sagte in Docker Container RPi Adpater GPIO ansteuern:
Es kann also nicht mehr wild in '/sys/class/gpio/export' herumgeschrieben werden.
Hm, ich frag' mich nur, was bei mir anders war/ist. Leider kann ich es im Moment nicht nachstellen, weil der Raspi gerade einen anderen Einsatzzweck hat.
-
@dpcfan sagte in Docker Container RPi Adpater GPIO ansteuern:
EROFS: read-only file system, open '/sys/class/gpio/export'
Du könntest noch versuchen, den Container im "privileged" Mode zu starten.
--privileged
-
@marc-berg bin jetzt etwas weiter, mit :rw ist diese Meldung zwar weg, aber es kommt nun das:
Cannot setup port 22 as input: Error: EINVAL: invalid argument, write
Teste mit einem einfachen pulldown und einer Brücke...
-
@thomas-braun danke, werde mich mal einlesen :-(, könnte in die richtige Richtung gehen...