Hallo zusammen,
Ich habe eine Gerät mit Opencollectorausgängen an meinen Raspi angeschlossen. Ich konnte die Richtung als Input, den Pullupwiderstand erfolgreich auf up setzen. Ich habe einen Interrupt auf die fallende Flanke gesetzt. Das Problem ist aber, dass der nicht triggert, wenn der Pin auf low geht. Wenn ich set GW1_Blitzereignis readvalue
mache, kommt im Logfile das an:
8.01.12 13:43:16 1: GW1_Blitzereignis GetFn: readout of Pinvalue fail
2018.01.12 13:43:35 1: Can't open file: GW1_Blitzereignis, edge
2018.01.12 13:44:10 1: Can't open file: GW1_Blitzereignis, value
2018.01.12 13:44:10 1: GW1_Blitzereignis GetFn: readout of Pinvalue fail
2018.01.12 13:44:24 1: Can't open file: GW1_Blitzereignis, value
2018.01.12 13:44:24 1: GW1_Blitzereignis GetFn: readout of Pinvalue fail
Ist das ein Problem mit Zugriffsrechten? Der User fhem darf bei auf /sys/class/gpio zugreifen.
Änderungen des Pullupwiderstand oder Pulldownwiderstand kann mit gpio readall nachvollziehen. Zugriff auf den Pullup geht also. Auch das mit der Richtung.
Das Listing schaut so aus:
Internals:
DEF 19
GPIO_Basedir /sys/class/gpio
GPIO_Nr 19
NAME GW1_Blitzereignis
NR 82
STATE ???
TYPE RPI_GPIO
WiringPi_gpio /usr/local/bin/gpio
filehandle
Helper:
DBLOG:
state:
logmysql:
TIME 1515764516.91527
VALUE readValue
READINGS:
Pinlevel:
TIME 2018-01-12 15:36:45
VAL
fhem:
interfaces switch
Attributes:
direction input
interrupt both
pud_resistor up
room Wetter
Was passt da nicht?
Grüße Martin
was ergibt denn ein "ls-l" vom Verzeichnis "/sys/class/gpio" und dem GPIO Unterverzeichnis?
Here we go
@raspberrypi:/sys/class/gpio $ ls -l
insgesamt 0
-rwxrwx--- 1 root gpio 4096 Jan 12 14:05 export
lrwxrwxrwx 1 root gpio 0 Jan 11 12:07 gpio13 -> ../../devices/platform/soc/3f200000.gpio/gpiochip0/gpio/gpio13pi@raspberrypi:/sys/class/gpio/gpio19 $ ls -l
lrwxrwxrwx 1 root gpio 0 Jan 11 12:07 gpio19 -> ../../devices/platform/soc/3f200000.gpio/gpiochip0/gpio/gpio19
lrwxrwxrwx 1 root gpio 0 Jan 11 17:38 gpio26 -> ../../devices/platform/soc/3f200000.gpio/gpiochip0/gpio/gpio26
lrwxrwxrwx 1 root gpio 0 Jan 11 12:07 gpiochip0 -> ../../devices/platform/soc/3f200000.gpio/gpio/gpiochip0
lrwxrwxrwx 1 root gpio 0 Jan 11 12:07 gpiochip100 -> ../../devices/gpiochip2/gpio/gpiochip100
lrwxrwxrwx 1 root gpio 0 Jan 11 12:07 gpiochip128 -> ../../devices/gpiochip1/gpio/gpiochip128
-rwxrwx--- 1 root gpio 4096 Jan 11 12:07 unexport
Und
pi@raspberrypi:/sys/class/gpio/gpio19 $ ls -l
insgesamt 0
-rwxrwx--- 1 root gpio 4096 Jan 11 12:07 active_low
lrwxrwxrwx 1 root gpio 0 Jan 11 12:07 device -> ../../../gpiochip0
-rwxrwx--- 1 root gpio 4096 Jan 11 12:07 direction
-rwxrwx--- 1 fhem dialout 4096 Jan 11 12:07 edge
drwxrwx--- 2 root gpio 0 Jan 11 12:07 power
lrwxrwxrwx 1 root gpio 0 Jan 11 12:07 subsystem -> ../../../../../../../class/gpio
-rwxrwx--- 1 root gpio 4096 Jan 11 12:07 uevent
-rwxrwx--- 1 fhem dialout 4096 Jan 11 12:07 value
Hilft das weiter?
Die Rechte der Dateien passen. wenn der user fhem in dn Gruppen gpio und dialout ist und FHEM auch unter dem Nutzer fhem läuft dann müsste eigentlich alles funktionieren.
Aber du hast trotzdem keinen Zugriff, auch das EXCEPT_FD wird nicht angelegt
Hast du nach dem setzen der Rechte neu gestartet? (ein einfacher Reboot scheint in manchen Fällen nicht zu reichen)
Was kommt wenn du {`id`} in FHEM eingibst?
Das gpio Tool von WiringPi finde ich persönlich nicht gut (wird meines Wissens nicht weiter gepflegt) und den Pullup kann man auch an den Pin ranbauen 8). Ich glaube aber nicht, das es daran liegt.
Was passiert wenn du folgende Zeilen direkt in FHEM eingibst:
{`cat /sys/class/gpio/gpio18/direction`}
{`cat /sys/class/gpio/gpio18/value`}
Also offensichtlich ging was bei der /etc/local.rc schief. Ich hab es noch mal korrigiert und jetzt geht es.
Ansonsten noch zu den Fragen:
Ausgabe bei{`id`} ist uid=999(fhem) gid=20(dialout) Gruppen=20(dialout),997(gpio)
{`cat /sys/class/gpio/gpio18/direction`} da kommt in
{`cat /sys/class/gpio/gpio18/value`} da kommt 0 bzw. 1
Das mit dem Ranbauen vom Widerstand wäre kein Problem gewesen, ;)
Super vielen Dank, für die schnelle und tollen Antworten.
Zitat von: maddinthebrain am 13 Januar 2018, 21:12:47
Also offensichtlich ging was bei der /etc/local.rc schief. Ich hab es noch mal korrigiert und jetzt geht es.
schön das es geht, aber funktioniert es bei dir nicht ohne Anpassung der local.rc?
user fhem in die Gruppe gpio
neustarten
das wars
so funktioniert es bei einem frisch installierten raspbian (wheezy, jessie, stretch habe ich getestet)
Zitat von: klausw am 13 Januar 2018, 23:13:43
schön das es geht, aber funktioniert es bei dir nicht ohne Anpassung der local.rc?
user fhem in die Gruppe gpio
neustarten
das wars
so funktioniert es bei einem frisch installierten raspbian (wheezy, jessie, stretch habe ich getestet)
Offensichtlich hat das nicht gereicht. Hatte ich zuerst gemacht, und auch so verstanden. Vielleicht ist es ja wert dem mal nachzufühlen.
Grüße Martin
Hallo Martin,
den Thread bitte als gelöst markieren
Hallo klausw,
ich habe ein ähnliches Problem in Docker.
wäre es dir möglich mal bitte hier zu schauen?
https://forum.fhem.de/index.php/topic,89745.msg1093466.html#msg1093466 (https://forum.fhem.de/index.php/topic,89745.msg1093466.html#msg1093466)
vielleicht hast du eine Idee
ich Danke schon mal
MfG
Uwe
Das Problem wird hier eher das sein, dass man dem Container ja Rechte geben muss, damit er auf die Schnittstellen zugreifen darf. Wie genau, weiß ich leider nicht. Meine Docker Erfahrung ist nicht besonders viel. Bin wieder davon abgekommen.
Grüße Martin