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

backbone10

Hi,
schnelle Antwort :),   danke!!!

ad 1 : es ist das neueste Modul
ad 2: im FHEM Logfile steht nichts was nur annnähernd mit gpio oder ports zu tun hat. ich glaub FHEM sprchicht nicht zu dem Modul :)
ad 3: die Berechtigungen scheinen ok

root@raspberrypi:/sys/devices/virtual/gpio/gpio4# ls -la
insgesamt 0
drwxr-xr-x  3 root root       0 Dez 18 22:29 .
drwxr-xr-x 11 root root       0 Dez 18 20:56 ..
-rw-r--r--  1 root root    4096 Dez 18 22:55 active_low
-rw-r--r--  1 root root    4096 Dez 18 22:29 direction
-rw-r--r--  1 fhem dialout 4096 Dez 18 22:29 edge
drwxr-xr-x  2 root root       0 Dez 18 22:53 power
lrwxrwxrwx  1 root root       0 Dez 18 22:29 subsystem -> ../../../../class/gpio
-rw-r--r--  1 root root    4096 Dez 18 22:29 uevent
-rw-r--r--  1 fhem dialout 4096 Dez 18 22:29 value

mfg

bb10

klausw

Ja, das zeigt auch, das Modul exportiert die Pins richtig.
Und wenn nix im Log steht dann musses eigentlich auch Funktionieren.  8)
Schalte mal in FHEM den GPIO4 (also Pin 7 auf dem P1 Connector) auf on und führe danach in der Konsole:
cat /sys/class/gpio/gpio4/value

aus.
Danach auf off und das gleiche machen.
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

backbone10

hi,
bei "ON" kommt als value 1, bei "OFF" 0, trotzdem brennt die LED nicht (anders als beim PIFACE Emulator).
schaut also gut aus ...

mfg

bb10

klausw

Also das Modul funktioniert erstmal bei Dir, Glückwunsch  ;D

Was ist denn ein PIFACE Emulator?
Ich vermute, das du die falschen Pins verwendest.
GPIO4 z.B. ist auf Pin7 am P1 Pfostenstecker (da du es genauso beschriftet hast, vermute ich das ich dir nix neues erzähle)
Aber kann es sein, das das Piface nicht die GPIO's des Raspberry verwendet, sondern einen I2C Portexpander nutzt?
Dann würde mein Modul nicht funktionieren. Das ist ausschließlich für die Raspberry GPIO's gedacht.
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

backbone10

Hi,
ja, ich sehe das auch so, dass es funktioniert. Vielen Dank jedenfalls !!

Ich hab von hier http://wiringpi.com/dev-lib/piface/ rausgelesen, dass es einen Portexpander benutzt, da hast du recht. Trotzdem glaube ich, dass man das zum Laufen kriegt (ich vielleicht nicht :() wenn man die Adressierung anpasst. Wenn man die SPI Treiber ladet, lässt es sich mit  gpio commands ansprechen.
Ist so beschrieben und funktioniert auch so :

gpio -p ...

The optional -p flag causes the gpio program to assume there is a PiFace board fitted to the Rasberry Pi and subsequent commands are interpreted as pins on the PiFace. Note: Pins on the PiFace are 200 through 207 for both reading and writing, with pins 208 through 215 reading the state of the output latch register (ie. you can read the state of the output pins)

Da das auf anhieb funktioniert hat (     gpio -p write 200 1   # first relais "on",    gpio -p write 201 0   # second relais "off", glaube ich dass man das hinbekommt, wenn man die Tabelle im Modul erweitert, aber ich bin leider ein blutiger Anfänger.....

Für mich schwer zu verstehen ist, dass die physikalisch getrennten Input und Output Connectors dieselbe Adresse haben, nur die Richtung (In oder Out) gibt vor, welche Anschlüsse zu verwenden sind. Vielleicht hilft das jemandem weiter...

mfg

bb10

klausw

Hast du mal das Modul PIFACE ausprobiert?

Grundsätzlich lässt es sich integrieren. Einfach erweitern ist nicht, denn... das Modul arbeitet anders als du denkst.
Das Programm gpio von WiringPi wird nur verwendet, um die GPIO Pins des Pi zu exportieren, sprich die Verzeichnisse .../gpiox/ und die darin vorhandenen Dateien anzulegen. Das direkte exportieren der GPIOs funktioniert nur mit root Rechten. Daher der Umweg über das gpio Programm.
Der eigentliche Portzugriff erfolgt über die Perl Bibliothek IO::File. Da ich nur so Interruptsteuerung machen kann.
Interruptsteuerung mit dem Piface funktioniert nicht, da der auf dem Piface genutzte Portextender im I2C Bus als Slave funktioniert und per polling abgefragt wird.

Zitat von: backbone10 am 19 Dezember 2013, 11:05:09
Für mich schwer zu verstehen ist, dass die physikalisch getrennten Input und Output Connectors dieselbe Adresse haben, nur die Richtung (In oder Out) gibt vor, welche Anschlüsse zu verwenden sind. Vielleicht hilft das jemandem weiter...
Das verstehe ich nicht, was hat die selbe Adresse?
Hast du hier schon geschaut?
http://forum.fhem.de/index.php/topic,13236.0.html
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

backbone10

Hi,
danke für deine rasche Antwort. Jetzt hast du mir leider meine Illusion genommen  :o , da hab ich scheinbar das falsche Board gekauft.

Der Satz mit den Connectors hat sich nur auf das PIFACE bezogen ich meinte damit, dass man mit
gpio -p read 200 den Wert des linken Taster auslest aber mit
gpio - p write 200 x das erste Relais steuert.
Taster und Relais haben natürlich andere physikalische connectoren.....

Den Link hab ich mir angesehen, da hab ich noch nicht alles verstanden...

danke jedenfalls..
mfg
bb10

FireFlyer

#22
Hallo,

ich versuche mich auch daran die gpio's zum laufen zu bekommen. Leider habe ich folgende Fehlermeldungen im Log:
2013.12.22 00:26:19 1: Can't open file: Mischer_auf, value
2013.12.22 00:26:20 1: Can't open file: Mischerzu, value

in der Config steht:
define Mischer_auf RPI_GPIO 27
attr Mischer_auf direction output

define Mischerzu RPI_GPIO 22
attr Mischerzu direction output


Die Zugriffsrechte scheinen zu stimmen, auf der Konsole kann ich ohne sudo schalten.

cat /sys/class/gpio/gpio4/value
bringt keine Änderung

Ich habe HiPi und wiringpi installiert. Außerdem habe ich Udev eingestellt wie matzefisi es beschrieben hat.
Ich hoffe Ihr könnt mir helfen.

klausw

Hallo Fireflyer,

Hipi wird nicht mehr gebraucht.
Das udev auch nicht mehr. Vermutlich liegt es am udev. Mazefisi hat selbst geschrieben, das es nicht geht....immer bis zuende lesen  ;)
Lösche die udev Regeln und versuche nochmal.

Can't open file: Mischer_auf, value
bedeutet in Deinem Fall, das auf:
/sys/class/gpio/gpio27/value
nicht geschrieben werden kann.

Mit ls -l /sys/class/gpio/gpio27 kannst Du die Rechte überprüfen. Ddie Datei value sollte fhem gehören.

Was willst Du eigentlich mit cat /sys/class/gpio/gpio4/value bezwecken? Du nutzt doch GPIO27 und 22, richtig?

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

FireFlyer

Moin,
gpio4 ist ein copy & past Fehler ;-) Hab schon die richtigen gpio benutzt.
Werde mich nachher um die Rechte kümmern. Außer mit udev hab ich aber noch nichts gemacht. Werden dann wohl noch root gehören. Wie ändere ich das ggf? Die entsprechenden gpio-Verzeichnise werden automatisch angelegt, das hat sofort funktioniert.

Gruß FireFlyer

P.S. Mit dem Handy geschrieben...

FireFlyer

So folgendes kam heraus:
$ ls -l /sys/class/gpio/gpio22/
insgesamt 0
-rwxrwx--- 1 root gpio 4096 Dez 22 02:17 active_low
-rwxrwx--- 1 root gpio 4096 Dez 22 02:17 direction
-rwxrwx--- 1 root gpio 4096 Dez 22 02:17 edge
drwxrwx--- 2 root gpio    0 Dez 22 02:17 power
lrwxrwxrwx 1 root gpio    0 Dez 22 02:17 subsystem -> ../../../../class/gpio
-rwxrwx--- 1 root gpio 4096 Dez 22 02:17 uevent
-rwxrwx--- 1 root gpio 4096 Dez 22 02:17 value

und ohne udef
$ ls -l /sys/class/gpio/gpio22/
insgesamt 0
-rwxrwx--- 1 root gpio 4096 Dez 22 10:58 active_low
-rwxrwx--- 1 root gpio 4096 Dez 22 10:58 direction
-rwxrwx--- 1 root gpio 4096 Dez 22 10:58 edge
drwxrwx--- 2 root gpio    0 Dez 22 10:58 power
lrwxrwxrwx 1 root gpio    0 Dez 22 10:58 subsystem -> ../../../../class/gpio
-rwxrwx--- 1 root gpio 4096 Dez 22 10:58 uevent
-rwxrwx--- 1 root gpio 4096 Dez 22 10:58 value

erst sudo adduser fhem gpio
hat die Lösung gebracht. Werde jetzt mal HiPi wieder entfernen. Danke für die schnelle Hilfe!

klausw

Hast du nach dem entfernen von udev neu gestartet?
Es sieht, nach Deinen zugriffsrechten, so aus, als ob udev noch aktiv ist.
Value sollte diese Rechte haben:
-rw-r--r--  1 fhem dialout 4096 Dez 18 22:29 value
Die Rechte werden im Modul vom Programm gpio, das bei wiringpi dabei ist, angelegt.
Es kann sein, das udev diese überschreibt.
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

FireFlyer

Hallo,

ich hatte zwischen beiden Listings rebootet. Aber es funktioniert jetzt. Das HiPi bin ich zwar nicht wieder los geworden, weil ich kein uninstall-skript gefunden habe, oder reicht es die Programmordner zu löschen?

Frohe Weihnachten!

klausw

Modul ist jetzt ins SVN eingecheckt. Sollte beim nächsten update verfügbar sein.
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

betateilchen

Da fehlt ein l  8)

  - feature: new module 51_RPI_GPIO.pm added (kausw)
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!