Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input

Begonnen von klausw, 15 November 2013, 14:28:41

Vorheriges Thema - Nächstes Thema

klausw

Hallo Tueftler1983,

gleiche Fragen an die selbe Person in unterschiedlichen Threads zu stellen beschleunigt die Antwort nicht.  8)
RasPi B v2 mit FHEM 18B20 über 1Wire, LED PWM Treiber über I2C, Luchtdruck-, Feuchtesensor und ein paar Schalter/LED\'s zum testen
Module: RPI_GPIO, RPII2C, I2C_EEPROM, I2C_MCP23008, I2C_MCP23017, I2C_MCP342x, I2C_PCA9532, I2C_PCF8574, I2C_SHT21, I2C_BME280

Tueftler1983

Ach sorry hatte garnicht auf den Namen geachtet dachte nur frag mal beim Ersteller des Moduls nach... lol und sorry

Fistandantilus

Hallo, ich habe ebenfalls das Problem, dass bei mir die Gruppe GPIO nicht existiert:

adduser: The Group "gpio" does not exist.

Ein chmod hilft leider immer nur bis zum nächsten reboot. Das System komplett neu aufzusetzen möchte ich vermeiden. Habt Ihr noch eine Idee, das zu fixen?


VG
F.
Raspberry Pi 3 + FHEM + Smartvisu/Fronthem, CUL, HMLAN, Enocean USB300, Eltako (FAM14, FSB14, FSR,FTS14EM,Multisensor,...) - MySQL DB + 2.Raspberry für Heizungsregelung und 3. Raspberry als Alarmanlage

RaspiLED

#318
Hi, wem gehören denn die GPIO Files?

Bitte mal dies probieren:
ll /sys/class/gpio/

-rwxrwx--- 1 root gpio 4096 May 21 08:10 export
lrwxrwxrwx 1 root gpio 0 May 21 08:04 gpio17 -> ../../devices/virtual/gpio/gpio17
lrwxrwxrwx 1 root gpio 0 Jan 1 1970 gpiochip0 -> ../../devices/virtual/gpio/gpiochip0
-rwxrwx--- 1 root gpio 4096 Jan 1 1970 unexport

Hier sieht man schön das user root und der Gruppe gpio der Zugriff gehört.

Gruß Arnd


Gesendet von iPhone mit Tapatalk
Raspberry Pi mit FHEM, CUL, Signalduino, MySensors, HomeBridge, Presence, WifiLight2, Bravia, ...

Tueftler1983

Hallo also der Befehl
ll /sys/class/gpio/
Führt bei mir zu folgendem Ergebnis
root@fhemserver:~# ll /sys/class/gpio/
-bash: ll: Kommando nicht gefunden.

Wernieman

ll ist ein alias, den sich viele anlegen.

mach einfach ein:
ls -lha /sys/class/gpio/
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

Tueftler1983

Das ergibt bei mir dann
root@fhemserver:~# ls -lha /sys/class/gpio/
insgesamt 0
drwxrwx---  2 root gpio    0 Okt 11 09:47 .
drwxr-xr-x 48 root root    0 Okt 10 11:18 ..
-rwxrwx---  1 root gpio 4,0K Okt 11 09:48 export
lrwxrwxrwx  1 root gpio    0 Okt 11 09:47 gpio10 -> ../../devices/platform/soc/20200000.gpio/gpio/gpio10
lrwxrwxrwx  1 root gpio    0 Okt 10 11:19 gpio18 -> ../../devices/platform/soc/20200000.gpio/gpio/gpio18
lrwxrwxrwx  1 root gpio    0 Okt 10 11:20 gpio22 -> ../../devices/platform/soc/20200000.gpio/gpio/gpio22
lrwxrwxrwx  1 root gpio    0 Okt 10 11:20 gpio23 -> ../../devices/platform/soc/20200000.gpio/gpio/gpio23
lrwxrwxrwx  1 root gpio    0 Okt 10 11:20 gpio24 -> ../../devices/platform/soc/20200000.gpio/gpio/gpio24
lrwxrwxrwx  1 root gpio    0 Okt 10 11:20 gpio27 -> ../../devices/platform/soc/20200000.gpio/gpio/gpio27
lrwxrwxrwx  1 root gpio    0 Okt 11 09:47 gpio9 -> ../../devices/platform/soc/20200000.gpio/gpio/gpio9
lrwxrwxrwx  1 root gpio    0 Jan  1  1970 gpiochip0 -> ../../devices/platform/soc/20200000.gpio/gpio/gpiochip0
-rwxrwx---  1 root gpio 4,0K Okt 11 09:45 unexport
root@fhemserver:~#



Fistandantilus

Bei mir sieht es anders aus, beides root:


drwxr-xr-x  2 root root    0 Oct 16 19:40 .
drwxr-xr-x 47 root root    0 Oct 16 16:43 ..
--w-------  1 root root 4.0K Oct 16 18:57 export
lrwxrwxrwx  1 root root    0 Oct 16 16:43 gpio17 -> ../../devices/platform/soc/20200000.gpio/gpio/gpio17
lrwxrwxrwx  1 root root    0 Oct 16 16:43 gpio18 -> ../../devices/platform/soc/20200000.gpio/gpio/gpio18
lrwxrwxrwx  1 root root    0 Oct 16 16:43 gpio2 -> ../../devices/platform/soc/20200000.gpio/gpio/gpio2
lrwxrwxrwx  1 root root    0 Oct 16 19:40 gpiochip0 -> ../../devices/platform/soc/20200000.gpio/gpio/gpiochip0
--w-------  1 root root 4.0K Oct 16 19:40 unexport
Raspberry Pi 3 + FHEM + Smartvisu/Fronthem, CUL, HMLAN, Enocean USB300, Eltako (FAM14, FSB14, FSR,FTS14EM,Multisensor,...) - MySQL DB + 2.Raspberry für Heizungsregelung und 3. Raspberry als Alarmanlage

Tueftler1983

Was mich wundert ist das bei mir GPIO 17 nicht aufgeführt ist da bei mir 17 und 18 für Pilight 433mhz Sender und Empfänger in Gebrauch sind an 22,23,24,27 hängen Relais und 9,10 Sind Eingänge von der Klingel

klausw

Zitat von: Fistandantilus am 16 Oktober 2016, 19:42:34
Bei mir sieht es anders aus, beides root:


drwxr-xr-x  2 root root    0 Oct 16 19:40 .
drwxr-xr-x 47 root root    0 Oct 16 16:43 ..
--w-------  1 root root 4.0K Oct 16 18:57 export
lrwxrwxrwx  1 root root    0 Oct 16 16:43 gpio17 -> ../../devices/platform/soc/20200000.gpio/gpio/gpio17
lrwxrwxrwx  1 root root    0 Oct 16 16:43 gpio18 -> ../../devices/platform/soc/20200000.gpio/gpio/gpio18
lrwxrwxrwx  1 root root    0 Oct 16 16:43 gpio2 -> ../../devices/platform/soc/20200000.gpio/gpio/gpio2
lrwxrwxrwx  1 root root    0 Oct 16 19:40 gpiochip0 -> ../../devices/platform/soc/20200000.gpio/gpio/gpiochip0
--w-------  1 root root 4.0K Oct 16 19:40 unexport


vermutlich hast du ein update von wheezy auf jessie gemacht.
Dieses hat bei mir auch die Rechte zerschossen.
Folgende Lösungen existieren:
1. Neuinstallation
2. in der rc.locals die Rechte anpassen. So werde sie bei jedem Reboot neu gesetzt. Beispiel ist in der commandref
3. wiringpi installieren, darüber kann RPI_GPIO auch die GPIOs exportieren. Allerdings lassen sich in diesem Fall die GPIOs nicht invertieren
RasPi B v2 mit FHEM 18B20 über 1Wire, LED PWM Treiber über I2C, Luchtdruck-, Feuchtesensor und ein paar Schalter/LED\'s zum testen
Module: RPI_GPIO, RPII2C, I2C_EEPROM, I2C_MCP23008, I2C_MCP23017, I2C_MCP342x, I2C_PCA9532, I2C_PCF8574, I2C_SHT21, I2C_BME280

klausw

Zitat von: Tueftler1983 am 16 Oktober 2016, 20:23:30
Was mich wundert ist das bei mir GPIO 17 nicht aufgeführt ist da bei mir 17 und 18 für Pilight 433mhz Sender und Empfänger in Gebrauch sind an 22,23,24,27 hängen Relais und 9,10 Sind Eingänge von der Klingel
Es sind nur die GPIOs aufgeführt, die du auch als input/output angelegt hast (sprich per hand über /sys/class/gpio/export, über RPI_GPIO oder wiringpi).
GPIOs die für alternative Funktionen konfiguriert sind erscheinen nicht im sysfs.
RasPi B v2 mit FHEM 18B20 über 1Wire, LED PWM Treiber über I2C, Luchtdruck-, Feuchtesensor und ein paar Schalter/LED\'s zum testen
Module: RPI_GPIO, RPII2C, I2C_EEPROM, I2C_MCP23008, I2C_MCP23017, I2C_MCP342x, I2C_PCA9532, I2C_PCF8574, I2C_SHT21, I2C_BME280

Tueftler1983

Hmm okay aber GPIO 17 habe ich ja auch nicht von Hand angelegt.... Aber egal.

Übermorgen kommt mein RPI3 dann muss ich eh komplett neu aufsetzen gibt es vielleicht Tipps oder so welche Raspbian Version ich installieren soll?

Tueftler1983

Hallo ich bin noch auf dem RPI 2+ ich habe jetzt in der rc.locals das eingetragen
echo 9 > /sys/class/gpio/export
echo 10 > /sys/class/gpio/export
echo 22 > /sys/class/gpio/export
echo 23 > /sys/class/gpio/export
echo 24 > /sys/class/gpio/export
echo 27 > /sys/class/gpio/export
chown -R fhem:root /sys/devices/virtual/gpio/*
chown -R fhem:root /sys/class/gpio/*

Jedoch kann ich das attr active low nicht nutzen die rechte sehen jetzt so aus
root@fhemserver:~# ls -l /sys/class/gpio/gpio22/
insgesamt 0
-rw-r--r-- 1 root root 4096 Okt 25 22:38 active_low
lrwxrwxrwx 1 root root    0 Okt 25 22:48 device -> ../../../20200000.gpio
-rw-r--r-- 1 root root 4096 Okt 25 22:38 direction
-rw-r--r-- 1 fhem fhem 4096 Okt 25 22:38 edge
lrwxrwxrwx 1 root root    0 Okt 25 22:36 subsystem -> ../../../../../../class/gpio
-rw-r--r-- 1 root root 4096 Okt 25 22:36 uevent
-rw-r--r-- 1 fhem fhem 4096 Okt 25 22:38 value
root@fhemserver:~# ls -la /sys/class/gpio/
insgesamt 0
drwxrwx---  2 root gpio       0 Okt 25 22:36 .
drwxr-xr-x 48 root root       0 Okt 25 22:38 ..
-rwxrwx---  1 fhem dialout 4096 Okt 25 22:38 export
lrwxrwxrwx  1 fhem dialout    0 Okt 25 22:36 gpio10 -> ../../devices/platform/soc/20200000.gpio/gpio/gpio10
lrwxrwxrwx  1 fhem dialout    0 Okt 25 22:36 gpio18 -> ../../devices/platform/soc/20200000.gpio/gpio/gpio18
lrwxrwxrwx  1 fhem dialout    0 Okt 25 22:36 gpio22 -> ../../devices/platform/soc/20200000.gpio/gpio/gpio22
lrwxrwxrwx  1 fhem dialout    0 Okt 25 22:36 gpio23 -> ../../devices/platform/soc/20200000.gpio/gpio/gpio23
lrwxrwxrwx  1 fhem dialout    0 Okt 25 22:36 gpio24 -> ../../devices/platform/soc/20200000.gpio/gpio/gpio24
lrwxrwxrwx  1 fhem dialout    0 Okt 25 22:36 gpio27 -> ../../devices/platform/soc/20200000.gpio/gpio/gpio27
lrwxrwxrwx  1 fhem dialout    0 Okt 25 22:36 gpio9 -> ../../devices/platform/soc/20200000.gpio/gpio/gpio9
lrwxrwxrwx  1 fhem dialout    0 Jan  1  1970 gpiochip0 -> ../../devices/platform/soc/20200000.gpio/gpio/gpiochip0
-rwxrwx---  1 fhem dialout 4096 Jan  1  1970 unexport
root@fhemserver:~#

Wo mache ich noch den fehler?

klausw

wie sehen die Rechte der GPIOs nach dem reboot aus, OHNE das FHEM gestartet wurde?

edge und value mit den Rechten fhem:fhem (und der Rest mit root:root) macht den Eindruck, das diese über wiringpi angelegt wurden.
RasPi B v2 mit FHEM 18B20 über 1Wire, LED PWM Treiber über I2C, Luchtdruck-, Feuchtesensor und ein paar Schalter/LED\'s zum testen
Module: RPI_GPIO, RPII2C, I2C_EEPROM, I2C_MCP23008, I2C_MCP23017, I2C_MCP342x, I2C_PCA9532, I2C_PCF8574, I2C_SHT21, I2C_BME280

manne44

Hallo,
ich habe gerade ein Problem mit "get", das ich mir nicht erklären kann: In einer Funktion (getWDx_I2C() in 99_myUtils.pm), die zuverlässig zu bestimmten Zeiten aufgerufen wird, werden die verdrahteten Fensterkontakte geprüft, die über Arduino nano abgefragt und als Word über I2C an FHEM übertragen und bitweise dort verarbeitet werden, also jedes Bit steht für einen Kontakt. Funktioniert seit geraumer Zeit tadellos.
Nun wollte ich mal kurz auch noch das Gartentor integrieren, das über ein Bit des BPI, auf dem FHEM läuft, abgefragt in fhem.cfg wird:


define pin13 RPI_GPIO 27
attr pin13 direction input
attr pin13 interrupt both
attr pin13 room Garten

define di_pin13 DOIF ([pin13:Pinlevel] eq "high") (setreading OpenWinDoorDummy Door.Garten open) DOELSE (setreading OpenWinDoorDummy Door.Garten closed)


Das funktioniert zwar, aber nicht immer so ganz zuverlässig. Grund unbekannt.
Nun wollte ich noch eine zusätzliche Abfrage in die zyklische Funktion getWDx_I2C() einbauen um zuverlässig zu ermitteln. ob das Tor nun wirklich zu ist:


my $pin13 = fhem(get pin13);


Dort bleibt die Funktion stehen, bzw. wird nicht weiter ausgeführt, was ich an den Log-Einträgen vorher und nachher sehen kann. Weshalb?
Warum bleibt die Abarbeitung der Funktion dort an dieser Stelle stehen und wird nicht weiter durchgeführt?
Wenn mir da mal einer einen Tipp geben kann, wäre ist dankbar.
Gruß
Manne
RPI4-Buster mit SSD, RPI-Zero mit Bookworm