FHEM Forum

FHEM - Hardware => Einplatinencomputer => Thema gestartet von: klausw am 15 November 2013, 14:28:41

Titel: Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: klausw am 15 November 2013, 14:28:41
Hier, nun endlich mein erstes Modul (das ohne die Hilfe von Rudi nicht zustande gekommen wäre) :)

Ist mittlerweile im SVN trunk committed und per update installierbar

Wenn Interesse besteht würde ich das Modul gern zum FHEM Paket hinzufügen. Was sind die Voraussetzungen dafür?

Es bietet Zugriff auf die GPIOs der Raspberrys. Sie können als Ein- und Ausgang konfiguriert werden. Wenn als Eingang genutzt, lässt sich der Pegel per poll interval abfragen oder auch bei Pegeländerung ein Interrupt auslösen, der die Readings sofort ändert.
Der Eingang lässt sich weiterhin als Toggleinput verwenden. Dabei kann ein Taster angeschlossen werden und bei jedem Tastendruck ändert sich der Pegel.

Vorbereitung: (ich habe bei mir HiPi installiert, aber die Datei "hipi-expin" sollte ausreichend sein, bitte um Rückmeldung ob es geht)
Auf GPIO Pins wird im Modul über sysfs zugegriffen. Die Dateien befinden sich unter /system/class/gpio und können nur mit root erreicht werden. Eine Möglichkeit, das zu umgehen, ist mit udev die Rechte von /system/class/gpio zu ändern:
Wenn sich bereits die HiPi Perl Bibliothek auf dem System befindet, kann auf den download von hipi-expin verzichtet werden.
jetzt sollte es möglich sein, mit normalem Nutzer auf die GPIO's zuzugreifen (um folgende Zeilen zu testen muss sich der user mit dem man testet auch in der Gruppe gpio befinden)
    echo "17" > /sys/class/gpio/export
    echo "out" > /sys/class/gpio/gpio17/direction
    echo "1" > /sys/class/gpio/gpio17/value

Wenn es keine Zugriffsfehler gibt dann ist alles Ok.

Befehlsreferenz:
Define
      define <name> RPI_GPIO <GPIO number>

      Beispiele:
            define Pin12 RPI_GPIO 18
            attr Pin12
            attr Pin12 poll_interval 5

Set
      set <name> <value>

      value ist dabei einer der folgenden Werte:

            Für GPIO der als output konfiguriert ist
                  off
                  on
                  toggle
                  Die set extensions werden auch unterstützt.

            Für GPIO der als input konfiguriert ist
                  readval

      Beispiele:
            set Pin12 off
            set Pin11,Pin12 on

Get
      get <name>

      Gibt "high" oder "low" entsprechend dem aktuellen Pinstatus zurück und schreibt den Wert auch in das reading Pinlevel

Attributes
      direction
            Setzt den GPIO auf Ein- oder Ausgang.
            Standard: input, gültige Werte: input, output

      interrupt
            kann nur gewählt werden, wenn der GPIO als Eingang konfiguriert ist
            Aktiviert Flankenerkennung für den GPIO
            bei jedem interrupt Ereignis werden die readings "Pinlevel" und "state" aktualisiert
            Zusätzlich wird bei falling und rising ein Reading "Toggle" angelegt und bei jedem dieser Ereignisse invertiert (dieses Reading wird mit dem Attribut toggletostate auf das reading "state" kopiert)
            Standard: none, gültige Werte: none, falling, rising, both

      poll_interval
            Fragt den Zustand des GPIO regelmäßig ensprechend des eingestellten Wertes in Minuten ab
            Standard: -, gültige Werte: decimal number

      toggletostate
            Funktioniert nur bei auf falling oder rising gesetztem Attribut interrupt
            Wenn auf "yes" gestellt wird bei jedem Triggerereignis das state reading invertiert
            Standard: no, gültige Werte: yes, no

      pud_resistor
            ohne Funktion


Nun testet mal schön und teilt mir eure Meinung mit 8)

Die nächste Woche bin ich im Urlaub, also nicht wundern wenn bis zum 26.11 keine Antwort kommt.

edit: Anhang gelöscht
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: betateilchen am 15 November 2013, 22:20:26
ZitatEine Möglichkeit, das zu umgehen, ist mit udev die Rechte von /system/class/gpio zu ändern

udev heißt udev, weil es Änderungen in /dev/... vornimmt und nicht in /system/...

Was Du da vorschlägst, widerspricht nach meiner (selbstverständlich unmassgeblichen) Meinung sämtlichen allgemeingültigen Standards zum Thema "Zugriff auf Systemverzeichnisse unter Linux"
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: klausw am 15 November 2013, 23:59:33
Wenn du eine Idee hast wie man es anders machen könnte, immer her damit :D
Ich habe keine Ahnung von der Rechteverwaltung in Linux. Die udev Geschichte habe ich mir von der HiPi Bibliothek abgeschaut.
Ist es denn ein Sicherheitsproblem es so zu machen? Ich hatte es so verstanden, das bei Zugriffsversuch auf das Gpio Verzeichnis einfach nur die Rechte dieses Verzeichnisses und der Unterpfade angepasst werden.
Ist es nicht das selbe Verfahren, das du auch beim I2C Drucksensor nutzt?



Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: matzefisi am 30 November 2013, 10:55:39
Hallo zusammen,

ich habe das Problem mit der Berechtigung direkt mit Udev gelöst (fhem läuft bei mir auf dem RPi):

Neue Datei anlegen (/etc/udev/rules.d/51-gpio.rules) und folgendes eintragen:
SUBSYSTEM=="subsystem", KERNEL=="gpio",  ACTION=="add", PROGRAM="/bin/sh -c 'chown -R fhem:dialout /sys%p'"
Update:
SUBSYSTEM=="subsystem", KERNEL=="gpio",  ACTION=="add", PROGRAM="/bin/sh -c 'chown -R fhem:dialout /sys/class/gpio/*'"
SUBSYSTEM=="gpio", ACTION=="add", PROGRAM="/bin/sh -c 'chown -R fhem:dialout /sys/class/gpio/*'"


Udev neu starten:
service udev restart

Schauen ob die änderungen funktioniert haben:
ls -la /sys/class/gpio/

Allerdings werden, durch dein Modul neu angelegte Ordner, noch nicht in ihrer Berechtigung geändert: (Manueller workaround):
sudo udevadm test --action=add /class/gpio

Und jetzt zu deinem Modul:
Erstens:
Ich würde es gerne dazu benutzen um den Status eines GPIO Ports zu überwachen (high/low). Das Modul zeigt zwar den PIN Status (high/low) korrekt an, allerdings ändert sich der State nicht und es wird leider auch kein Event generiert. Daher kann ich auch nicht mit einem notify darauf reagieren.
Funktioniert doch :)

Zweitens:
Im Log wird beim DEFINE und beim Ändern eines Attributes immer die Meldung "2013.11.30 10:38:53 1: Can't open file: test, direction" angezeigt. Wahrscheinlich nicht normal oder?

Ansonsten schonmal ein großes Danke für deine Arbeit!

MfG
Matthias


Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: klausw am 30 November 2013, 12:25:36
Hi Matthias,

zu1(wenn auch schon erledigt :)):
Wenn du attr <name> interrupt both nutzt dann wird der state Wert sofort geändert.

zu2:
Deine Fehlermeldung kann ich bei mir nicht nachvollziehen.
Sie bedeutet, das die Datei /sys/class/gpio/gpioN/direction nicht geschrieben werden konnte.
Bei dir funktioniert es trotzdem, da diese Datei beim anlgen des GPIO standardmäßig den Inhalt "in" hat, also auf Input eingestellt ist.

Aber in diese Datei schreibe ich beim define erstmal zur Sicherheit  ein "in" für Input.
Bei attr lese ich sie auch fast immer mit aus, da ich die Attribute gegenchecken muss. (z.B. kann Interrupt nur im zusammenhang mit Input funktionieren)

Kannst du bitte die Rechte der Datei prüfen? Vermutlich klappt mit dem udev nochwas nicht.

Grüße
Klaus
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: matzefisi am 30 November 2013, 13:30:26
Hi Klaus,

stimmt. Die Dateien und Unterverzeichnisse gehören immer noch dem ROOT. Da muss ich am udev noch was ändern.

MfG
Matthias
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: klausw am 30 November 2013, 13:43:56
man könnte auch einfach die Dateizugriffe mit sudo machen, ich bin nicht sicher, was die beste Lösung ist
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: dennisb am 10 Dezember 2013, 22:52:17
Hi,

man könnte auch wiringPi nutzen: http://wiringpi.com/download-and-install/
Das dazugehörige cmd line tool "gpio" kann auch ohne root genutzt werden.

Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: betateilchen am 10 Dezember 2013, 23:20:35
Zitat von: Dennis B. am 10 Dezember 2013, 22:52:17man könnte auch wiringPi nutzen:
Das dazugehörige cmd line tool "gpio" kann auch ohne root genutzt werden.

Genau deshalb habe ich diesen Weg bei der Umsetzung meines PiFace Moduls gewählt, das ja auch nix anderes macht, als GPIO zu lesen/setzen
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: klausw am 11 Dezember 2013, 21:26:28
Zitat von: Dennis B. am 10 Dezember 2013, 22:52:17
man könnte auch wiringPi nutzen: http://wiringpi.com/download-and-install/
Das dazugehörige cmd line tool "gpio" kann auch ohne root genutzt werden.

Wieso eigentlich nicht. Ich habe das mal implementiert.
Also zuerst http://wiringpi.com/download-and-install/ (http://wiringpi.com/download-and-install/) installieren:

sudo apt-get update
sudo apt-get upgrade
http://wiringpi.com/download-and-install/
git clone git://git.drogon.net/wiringPi
cd wiringPi
./build


Das Attribut pud_resistor funktioniert jetzt und ich habe noch die Attribute debounce_in_ms zum entprellen von Schaltern, sowie restoreOnStartup zum wiederherstellen des Pinzustandes nach restart.




Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: klausw am 13 Dezember 2013, 11:32:23
So, ich habe auf die schnelle noch eine Zählfunktion hinzugefügt.
Wenn das Attribut interrupt auf rising oder falling steht, dann wird ein Reading namens Conter angelegt, welches bei jedem Interruptereignis eins hochzählt.
Ich werde das ganze noch konfigurierbar machen, das man den Zählwert auch im State haben kann. Und ein Multiplikator ist sicher auch nicht verkehrt.
Ideen/Wünsche sind erbeten ;)

Grüße
Klaus
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: klausw am 15 Dezember 2013, 19:52:10
Die letzen Versionen hatten noch einen Fehler: Pins funktionierten generell nicht als Output wenn die HiPi Bibliothek incl. udev nicht eingerichtet sind.
Mir ist es erst jetzt aufgefallen, als ich udev entfernt habe.
Diese Version sollte jetzt ausschließlich mit WiringPi funktionieren.

Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: klausw am 17 Dezember 2013, 01:00:31
kleine Fehlerkorrektur für die SetExtension (konnte vorher bei der Nutzung als Output zum Absturz von FHEM kommen)
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: backbone10 am 18 Dezember 2013, 22:28:22
Hi,
danke für deine Mühe und Zeit die du opferst !!

Ich würde das ganze mit einem PIFACE verwenden wollen, das krieg ich aber nich hin. Das PiFace selbst funktioniert schon (mit gpio Commands via Console)
Das FHEM hab ich auch soweit hinbekommen, nur schalten will es nicht. ich habe foldende defines gmacht :

define Pin12 RPI_GPIO 18
attr Pin12 direction output
attr Pin12 loglevel 5
     
define Pin11 RPI_GPIO 17
attr Pin11 direction output
define Pin13 RPI_GPIO 27
attr Pin13 direction output
define Pin15 RPI_GPIO 22
attr Pin15 direction output
define Pin16 RPI_GPIO 23
attr Pin16 direction output
define Pin18 RPI_GPIO 24
attr Pin18 direction output
define Pin22 RPI_GPIO 25
attr Pin22 direction output
define Pin7 RPI_GPIO 4
attr Pin7 direction output


aber nicht eine einzige LED brennt wenn ich einschalte....mit gpio readall sehe ich auch keine änderung des Zustandes

Mir ist aber auch das Mapping der physikalischen Anschlüsse des Piface zu den GPIO Ports ein Rätsel, vielleicht kann wer was dazu sagen.

Danke vorab !!!

mfg

bb10
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: klausw am 18 Dezember 2013, 22:48:38
Die Config sieht ok aus.

Hast du die neuste Modulversion installiert?
Steht im Logfile entsprechendes drin?
Du kannst auch einmal schauen wie im GPIO Verzeichnis die Rechte vergeben sind.
Das sollte so aussehen:
-rw-r--r-- 1 fhem dialout 4096 Dez 18 21:47 edge
-rw-r--r-- 1 fhem dialout 4096 Dez 18 21:47 value


Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: backbone10 am 18 Dezember 2013, 23:00:52
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
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: klausw am 18 Dezember 2013, 23:15:42
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.
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: backbone10 am 18 Dezember 2013, 23:35:52
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
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: klausw am 18 Dezember 2013, 23:51:19
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.
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: backbone10 am 19 Dezember 2013, 11:05:09
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
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: klausw am 19 Dezember 2013, 12:09:42
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 (http://forum.fhem.de/index.php/topic,13236.0.html)
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: backbone10 am 19 Dezember 2013, 12:39:19
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
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: FireFlyer am 22 Dezember 2013, 00:38:01
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.
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: klausw am 22 Dezember 2013, 01:12:59
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?

Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: FireFlyer am 22 Dezember 2013, 09:20:51
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...
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: FireFlyer am 22 Dezember 2013, 11:08:17
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!
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: klausw am 22 Dezember 2013, 11:17:17
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.
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: FireFlyer am 23 Dezember 2013, 21:30:08
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!
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: klausw am 03 Januar 2014, 13:40:49
Modul ist jetzt ins SVN eingecheckt. Sollte beim nächsten update verfügbar sein.
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: betateilchen am 05 Januar 2014, 11:40:38
Da fehlt ein l  8)

  - feature: new module 51_RPI_GPIO.pm added (kausw)
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: klausw am 05 Januar 2014, 20:04:37
Ich fühle mich überwacht ;)

habs korrigiert

Zitat von: betateilchen am 05 Januar 2014, 11:40:38
Da fehlt ein l  8)
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: uwe.bart am 08 Januar 2014, 18:22:46
Ich hab grade RPI_GPIO in mein fhem eingebaut und funktioniert super. Danke erstmal für die Mühe.
Ich hätte noch eine Idee / Wunsch:
Ich würd gern einen oder mehrere Taster an die GPIO-Ports hängen und damit verschiedene Lichter an und aus schalten.
Möchte dabei eine Logik einbauen, die bei einem kurzen Tastendruck ein Licht einschaltet, das nach ca. 30 Sekunden wieder ausgeht und bei einem langen Tastendruck (größer 2 sec) das Licht dauerhaft einschaltet.

Ist sowas mit RPI_GPIO denkbar? Oder evtl. so etwas wie "Doppelklick" und "Einfachklick" auf nen Taster?
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: klausw am 08 Januar 2014, 21:24:46
Zitat von: uwe.bart am 08 Januar 2014, 18:22:46
Ich hätte noch eine Idee / Wunsch:
Ich würd gern einen oder mehrere Taster an die GPIO-Ports hängen und damit verschiedene Lichter an und aus schalten.
Möchte dabei eine Logik einbauen, die bei einem kurzen Tastendruck ein Licht einschaltet, das nach ca. 30 Sekunden wieder ausgeht und bei einem langen Tastendruck (größer 2 sec) das Licht dauerhaft einschaltet.

Ist sowas mit RPI_GPIO denkbar? Oder evtl. so etwas wie "Doppelklick" und "Einfachklick" auf nen Taster?

Über den langen Tastendruck habe ich auch schon nachgedacht, das müsste sich machen lassen. Ich schaue mir das am Wochenende mal an.
Da würde dann aber mithilfe eines Timers laufen. D.h. ich könnte ein weiteres Reading einbauen, das, sobald eine Taste länger als eine Sekunde gedrückt ist, auf on geht.
Doppelklick geht vielleicht auch auf diese Weise, aber dann müsste man zwischen zwei einfachklicks mind. 1s warten.
Der Timer kann minimal nur 1s.
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: klausw am 11 Januar 2014, 16:56:46
So, habe eine neue Version eingecheckt. Morgen kann sie über update geholt werden.

Wenn das Attribut interrupt auf both gestellt ist, dann wird beim ersten setzten des GPIO auf high (für länger als 1s) das reading Longpress angelegt und auf on gesetzt. Beim loslassen wird es wieder auf off gesetzt.
Wenns benötigt wird kann man die Erkennungszeit noch einstellbar machen und auch das reading Longpress auf State ausgeben.

Für Doppelklick habe ich noch keine Idee wie ich ihn sinnvoll umsetze (soll ein reading bei doppelklick toggeln, oder kurz auf on gehen oder...).
Da brauche ich noch konkrete Beispiele.
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: uwe.bart am 15 Januar 2014, 09:22:25
Danke, hast du toll gemacht.
Ich hab damit mal ein Treppenhauslicht realisiert.
Hier mal der Ausschnitt aus der fhem.cfg:
Zitat
# GPIO14
# Dummy-Schalter definieren
define gpio14 dummy
attr gpio14 room GPIO

# den Dummy überwachen
define n_gpio14 notify gpio14:toggle {\
    if(OldValue('gpio14') eq 'off'){\
        fhem("set gpio14 on");;\
        fhem("define a_tmp_gpio14 at +00:00:30 set gpio14  off");;\
    }elsif(OldValue('gpio14') eq 'on'){\
        fhem("set gpio14 off");;\
    }\
}
attr n_gpio14 room GPIO

# RPI_GPIO für pin 14 definieren
define pin0014 RPI_GPIO 14
attr pin0014 debounce_in_ms 50
attr pin0014 direction input
attr pin0014 interrupt both
attr pin0014 pud_resistor down
attr pin0014 room GPIO

# das on-Event von pin 14 überwachen
define n_pin0014 notify pin0014:on {Log 1,$EVENT;;\
    fhem("set gpio14 toggle");;\
    }
attr n_pin0014 room GPIO

# das Longpress-Event von pin 14 überwachen und den Timer damit löschen
define n_pin0014_longpress notify pin0014:Longpress.*on {\
    Log 1,$EVENT;;\
    fhem("delete a_tmp_gpio14");;\
    }
attr n_pin0014_longpress room GPIO
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: klausw am 15 Januar 2014, 10:28:01
Der Dummy steht in Vertretung für dein Treppenlicht?
Wenn du vorhast es über einen GPIO Output schaltest kannst du auch die setextensions verwenden:
set myoutputpin on-for-timer 30
Dieser Timer lässt sich jederzeit mit "set myoutputpin on/off" abbrechen.
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: uwe.bart am 15 Januar 2014, 12:37:54
Hab ich tatsächlich vor, bin aber noch nicht dazu gekommen mich mit RPI_GPIO als output zu beschäftigen. Danke für den Tip.
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: fruemmel am 20 Januar 2014, 12:50:38
Hallo,

kann mir jemand verraten, woher die Gruppe "gpio" kommt? Das "sudo adduser fhem gpio" bringt die Meldung, dass die Gruppe gpio
nicht existiert.
Mit manuellem Setzen der Rechte scheint alles zu funktionieren.

Gruß Wolfgang
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: klausw am 20 Januar 2014, 16:39:29
Gute Frage, wenn ich mich recht erinnere sollte die Gruppe gpio beim Raspbian von Anfang an mit dabei sein.
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: fruemmel am 20 Januar 2014, 17:13:50
Zitat von: klausw am 20 Januar 2014, 16:39:29
Gute Frage, wenn ich mich recht erinnere sollte die Gruppe gpio beim Raspbian von Anfang an mit dabei sein.

Achso, und ich habe die ganze Zeit die Installation von wiringPi als Erzeuger in Verdacht gehabt. Ich habe meinen Pi mit wheezy aufgesetzt, da ist (oder war) die Gruppe nicht vorhanden.
Ist aber nicht schlimm, läuft ja jetzt nach manueller Anpassung der Dateien auch so.

Vielen Dank auf jeden Fall für das tolle Engagement. Ich hatte mir bisher mit eigenem c-Code geholfen, das war etwas holprig.

Noch ein Wunsch: Es wäre super, wenn das  Modul die event-on-change-reading bzw. event-on-update-reading Attribute unterstützen könnte. das würde für die entstehenden Events beim Pollen sinnvoll sein.
Bisher hatte ich mit meiner eigenen Konstruktion das Problem, das irgendwann keine Interrupts mehr durchkamen. Dann rettet das Pollen den korrekten Zustand.

Gruß Wolfgang
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: StefanP am 20 Januar 2014, 17:51:33
Hallo,
also bei mir gibt's die Gruppe nicht.
Ich habe die Platine von Locutus auf dem RPI laufen und da wird auch WiringPi benutzt:
http://forum.fhem.de/index.php/topic,14156.msg118637.html#msg118637 (http://forum.fhem.de/index.php/topic,14156.msg118637.html#msg118637)

pi@fhemraspi ~ $ groups
pi adm dialout cdrom sudo audio video plugdev games users netdev input


Gruß StefanP
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: klausw am 20 Januar 2014, 23:10:41
Hallo zusammen,

ich habe gerade nochmal einen SD Karte mit der Raspbian Version 2013-12-20-wheezy-raspbian.img bespielt.

pi@raspberrypi ~ $ groups
pi adm dialout cdrom sudo audio video plugdev games users netdev input spi gpio


Die Gruppe gpio ist bei mir vorhanden.
@Wolfgang: wie hast du die Anpassung manuell vorgenommen?

Zitat von: fruemmel am 20 Januar 2014, 17:13:50
Noch ein Wunsch: Es wäre super, wenn das  Modul die event-on-change-reading bzw. event-on-update-reading Attribute unterstützen könnte. das würde für die entstehenden Events beim Pollen sinnvoll sein.
Ist eingebaut und sollte beim nächsten Update dabei sein.

Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: fruemmel am 21 Januar 2014, 09:32:59
Zitat von: klausw am 20 Januar 2014, 23:10:41
Hallo zusammen,

ich habe gerade nochmal einen SD Karte mit der Raspbian Version 2013-12-20-wheezy-raspbian.img bespielt.

pi@raspberrypi ~ $ groups
pi adm dialout cdrom sudo audio video plugdev games users netdev input spi gpio


Die Gruppe gpio ist bei mir vorhanden.

Hallo Klaus,

mein wheezy ist deutlich älter (ca. Q2 2013), vielleicht liegt es daran.

Zitat von: klausw am 20 Januar 2014, 23:10:41
@Wolfgang: wie hast du die Anpassung manuell vorgenommen?
Ist eingebaut und sollte beim nächsten Update dabei sein.

Ich habe in allen Verzeichnissen unter  /sys/devices/virtual/gpio/ bei den Dateien edge und value den owner auf fhem gesetzt. Damit funktioniert es bei mir.

Zum Thema event-on-change-reading etc:
Zitat von: klausw am 20 Januar 2014, 23:10:41
Ist eingebaut und sollte beim nächsten Update dabei sein.
Super, vielen Dank!!

Gruß Wolfgang
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: klausw am 21 Januar 2014, 10:01:48
Zitat von: fruemmel am 21 Januar 2014, 09:32:59
Ich habe in allen Verzeichnissen unter  /sys/devices/virtual/gpio/ bei den Dateien edge und value den owner auf fhem gesetzt. Damit funktioniert es bei mir.
Das machst du mit einem Script nach jedem reboot?
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: ollir am 21 Januar 2014, 11:01:57
Hallo Klaus,

habe gerade dein Modul ausprobiert. SPITZE  ;D
Jetzt brauche ich nicht mehr umständlich mit sripten und notifys rumzuwerkeln.

Wenn ich das richtig verstehe setzt du WiringPi auf?

Wäre es dann auch möglich die PWM Funktion zu integrieren?  ::)

Dann wären alle Funktionen der GPIO's unterstützt.

Vielen Dank

Olaf
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: fruemmel am 21 Januar 2014, 12:01:32
Zitat von: klausw am 21 Januar 2014, 10:01:48
Das machst du mit einem Script nach jedem reboot?

Ich habe gerade einen reboot gemacht (vom Pi), bei mir "überlebt" fhem als owner der Dateien.
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: klausw am 21 Januar 2014, 17:26:25
Ok, das ist interessant. Verstehen kann ich's aber nicht. Die Dateien existieren ja praktisch nicht. Sie werden beim booten erzeugt.
Aber Hauptsache es geht ;D
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: ollir am 23 Januar 2014, 21:28:04
Hallo Klaus,

neben meiner Frage, ob es möglich die PWM-Funktion mit einzubauen habe ich noch eine weitere:

Wäre es möglich bei der Interrupt-Funktion (both) die Impulsdauer in den Readings anzuzeigen?

Mein Ziel wäre es die Dauer eines Impulses zu messen um HC-SR04 Ultraschall Sensoren einzubinden.
hier ein Beispiel: http://www.gtkdb.de/index_36_2272.html

Man könnte dann über einen GPI-Out einen Impuls auf den Triggereingang geben und bekommt über Echo auf einen Interrupteingang einen Impuls mit der Dauer in Abhängigkeit von der Entfernung zurück.

Vielen Dank
Olaf

EDIT: Mangels Perl kann ich leider noch nicht viel programmieren. Habe hier jedoch weitere Infos gefunden:
http://www.tinkerforge.com/de/doc/Software/Bricklets/DistanceUS_Bricklet_Perl.html#distance-us-bricklet-perl-examples
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: klausw am 23 Januar 2014, 23:28:15
Hallo Olaf

Dein Beitrag war mir durch die Lappen gegangen ...so als letzer auf einer Seite ;)

Zitat von: ollir am 21 Januar 2014, 11:01:57
Wenn ich das richtig verstehe setzt du WiringPi auf?

jein, ich nutze nur das gpio Tool von wiringpi um die GPIO's als Normaluser exportieren zu können.
Danach greife ich über das Dateisystem auf die Ports zu. Auf diesem Weg funktioniert das mit der Software PWM nicht. Auch das gpio Tool kann keine PWM Werte setzen. Ich habe noch ein weiteres Programm gefunden, welches angeblich Software PWM auf allen Ports ermöglicht. Dazu brauche ich aber eine ruhige Minute.

Das mit der Impulsdauer kann ich versuchen, am We habe ich denke ich etwas Zeit.
Hast du so ein Modul? Ich bin nicht sicher, ob das in FHEM schnell genug geht. Da kommt es schließlich auf ein paar ms an.

Grüße
Klaus

Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: ollir am 24 Januar 2014, 07:43:53
Hallo Klaus,

leider habe ich noch kein HC-SR04 Modul.
Werde gleich mal ein paar bestellen.

Ich dachte mir man könnte mit der steigenden Flanke einen Timer starten und diesen mit der fallenden Flanke stoppen. Die abgelaufene Timerzeit dann als Rückgabewert.
Die Berechnung der Distanz könnte im UserReading geschehen.

Wann und wie oft der HC-SR04 messen soll, wird über den Trigger Eingang gesteuert.
Für seltene Messungen (z.B. Zizterne) einen GPI_Out über FHEM kurz Schalten.

Für stetige und schnelle Messungen (z.B. Abstandsmessung Haustüre) müsste man ca. 20ms Impulse auf den Trigger Eingang erzeugen.

Vielen Dank

Olaf
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: klausw am 24 Januar 2014, 12:32:48
Für 1cm musst du auf 3ms auflösen können ... ich weiss nicht wie die Looptime vom FHEM ist, aber das erscheint mir sportlich.
Organisiere lieber erstmal nur eins ;)
Die Tür kannst du doch mit einem Kontakt machen, oder nimm ein PIR Modul ... gibts für 5V und kostet keine 5€
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: backbone10 am 26 Januar 2014, 21:16:22
Hi,
ich habe zwei Fragen, für die ich trotz SUFU und Wiki nicht lösen konnte :)

1.Hat schon jemand das Attribut "active_low" erfolgreich eingesetzt ? ich habs probiert, bei den Readings in FHEM ändert sich aber nichts bei mir. Oder ich verstehe das ganze falsch, ich hab eine kleine Schaltung angeschlossen, die Level High liefert, wenn der Zustand off ist - vielleicht ist es nicht für das gemacht.....

2. Die Zeilen im Modul selbst sind mir nicht klar

Bei  interrupt both wird ein reading Longpress angelegt, welches auf on gesetzt wird solange der Pin länger als 1s gedrueckt wird<br>
     Bei "falling" und "rising" wird ein reading Toggle angelegt, das bei jedem Interruptereignis toggelt und das Reading Counter, das bei jedem Ereignis um 1 hochzählt..

Ist das so richtig verstanden, dass bei "both" keine Counter mitgezählt werden?? - wenn ja wie heisst der Counter genau ??

danke

bb10

Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: klausw am 26 Januar 2014, 23:03:54
Zitat von: backbone10 am 26 Januar 2014, 21:16:22
1.Hat schon jemand das Attribut "active_low" erfolgreich eingesetzt ? ich habs probiert, bei den Readings in FHEM ändert sich aber nichts bei mir. Oder ich verstehe das ganze falsch, ich hab eine kleine Schaltung angeschlossen, die Level High liefert, wenn der Zustand off ist - vielleicht ist es nicht für das gemacht.....
Doch, dafür isses gemacht. Allerdings funktioniert es wirklich nicht mehr. Das Attribut hatte ich bei der Umstellung auf WiringPi übersehen. Werde ich beim nächsten Update mit reinbringen.
Zitat von: backbone10 am 26 Januar 2014, 21:16:22
Bei  interrupt both wird ein reading Longpress angelegt, welches auf on gesetzt wird solange der Pin länger als 1s gedrueckt wird<br>
     Bei "falling" und "rising" wird ein reading Toggle angelegt, das bei jedem Interruptereignis toggelt und das Reading Counter, das bei jedem Ereignis um 1 hochzählt..

Ist das so richtig verstanden, dass bei "both" keine Counter mitgezählt werden?? - wenn ja wie heisst der Counter genau ??
Die Frage verstehe ich nicht. Der Counter heisst Counter :).
Der Counter zählt nur bei "falling" und "rising" bei entsprechendem Ereignis um eins hoch. Bei "both" würde jeder Tastendruck doppelt zählen...macht meiner Meinung nach keinen Sinn
Toggle funktioniert auch nur bei "falling" und "rising". Bei "both" macht es auch keinen Sinn, sonst müsste man noch ein weiteres Attribut einfügen, um festzulegen bei welchem Flankenwechsel der Toggel umgeändert werden soll.
Der Interrupt ist nur Mittel zum Zweck.
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: backbone10 am 26 Januar 2014, 23:48:43
Hi klausw,
danke für die prompte Antwort.
Punkt 1 ist damit klar.
Punkt 2 habe ich aufgrund meiner bescheidenen Erfahrung schlecht dargestellt. Ich hab mir überlegt, den Counter als Zähler für die Einschaltereignisse zu verwenden, auch wenn ich ihn durch2 dividiere. Muß noch ein wenig spielen damit, sorry..
mfg

bb10
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: klausw am 26 Januar 2014, 23:53:09
gern geschehen

wenn bei dir Einschalten = wechsel von 0 auf 1 am GPIO bedeutet, kannst du interrupt auf "rising" stellen und schon wird jedes Einschaltereignis gezählt. Du musst nix durch 2 dividieren.
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: Maergsche am 27 Januar 2014, 16:45:30
Hallo ollir,

so ein HC-SR04 wäre absolut gut um einen Wassertank  oder Oeltank zu überwachen .... Hast Du vor das Thema noch zu verfolgen?
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: ollir am 27 Januar 2014, 19:29:25
Zitat von: Maergsche am 27 Januar 2014, 16:45:30
Hallo ollir,

so ein HC-SR04 wäre absolut gut um einen Wassertank  oder Oeltank zu überwachen .... Hast Du vor das Thema noch zu verfolgen?
Ich habe Klaus's Modul mit einem Rückgabewert (gettimeofday welcher bis mircosekunden zurück gibt) bei der Interrupterkennung (Rising/Falling) ergänzt.
Ob es funktioniert werde ich sehen, wenn die Sensoren da sind.
Ich weis nur nicht in welchem Zeitfenter die Interrupterkennung reagiert.
Werde dran bleiben und berichten.

VG
Olaf
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: klausw am 27 Januar 2014, 19:56:31
Zitat von: ollir am 27 Januar 2014, 19:29:25
Ich weis nur nicht in welchem Zeitfenter die Interrupterkennung reagiert.
Werde dran bleiben und berichten.
Ich habe auch mal testweise ein Reading eingefügt, welches die on Zeit darstellt.
Jetzt fehlt nur noch ein kurzer Impuls zum testen. Wenn Du es vor mir schaffst gib Bescheid und ich baue es ein.
Vermute aber das man nicht unter 100ms kommt.
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: ollir am 28 Januar 2014, 11:35:29
Hallo Klaus,

mangels externen Generator kann ich die Funktion auch nicht genau testen. Zur Zeit gebe ich über einen GPI-Out einen Impuls aus.
Mit diesem komme ich auch nicht kleiner als ca. 100ms.
Ich denke es liegt aber an dem Ausgabe-Impuls der über FHEM ausgegeben wird.

Ich hoffe das mit einen Externen Impuls die Zeitangabe über Interrupt wesentlich kürzer und genauer funktioniert.

Würdest die Zeitangabe über HiPi::Interupt::Message ($msg->timestamp Returns an epoch timestamp in milliseconds for the message.) machen?
Evtl. ist dies noch genauer/schneller als im Modul selber über (gettimeofday)?

VG
Olaf

Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: klausw am 28 Januar 2014, 16:24:44
Hi Olli,
Zitat von: ollir am 28 Januar 2014, 11:35:29
Würdest die Zeitangabe über HiPi::Interupt::Message ($msg->timestamp Returns an epoch timestamp in milliseconds for the message.) machen?
Evtl. ist dies noch genauer/schneller als im Modul selber über (gettimeofday)?
HiPi nutze ich für das Modul nicht mehr. Es macht keinen Sinn, da für die Interruptfunktionen der Prozess geforkt werden muss und das hat im Zusammenhang mit FHEM nicht funktioniert. Ausserdem war die Vorarbeit für diese Bibliothek recht umständlich.

Ich werde versuchen die Interruptverarbeitung noch ein bisschen zu optimieren. Zum testen leihe ich mit einen Funktionsgenerator von Arbeit aus. Evtl. komme ich am We dazu.
Wenn das alles nichts hilft könntest Du ein zusätzliches Script schreiben, auf das Du von FHEM aus zugreifst. Ich hatte mal ein python script dafür getestet. Das lieferte einigermaßen brauchbare Werte.
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: ollir am 29 Januar 2014, 16:59:43
Hallo Klaus,

die China-Lieferung ist schneller angekommen als gedacht.
Meine Änderungen an deinem Modul sind noch nicht zufrieden stellend.
Das im Internet zu findende Python script funktioniert jedoch sehr gut.

Kannst du mir evtl. deine Version zukommen lassen?

Ich habe noch ein HC-SR04 Modul übrig. Schicke mir einfach eine Mail mit Deiner Anschrift.

VG
Olaf
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: klausw am 29 Januar 2014, 20:49:02
Hallo Olaf,

das minimum, welches ich hinbekomme sind um die 17ms, das entspricht fast 6m (müssten 3m Abstand sein)
Also zum Abstandsmessen ist das nicht brauchbar. Mehr lässt sich nicht rausholen, da der Interrupt von FHEM zurückgemeldet wird.

Man könnte es noch mit einer blockierenden Funktion probieren, aber alles andere als elegant.

Danke fürs Angebot, aber ich hatte mich auch schonmal so nen Modul bestellt.
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: klausw am 04 Februar 2014, 15:09:21
Zitat von: backbone10 am 26 Januar 2014, 21:16:22
1.Hat schon jemand das Attribut "active_low" erfolgreich eingesetzt ? ich habs probiert, bei den Readings in FHEM ändert sich aber nichts bei mir. Oder ich verstehe das ganze falsch, ich hab eine kleine Schaltung angeschlossen, die Level High liefert, wenn der Zustand off ist - vielleicht ist es nicht für das gemacht.....

Ich wollte gerade das "active_low" Attribut reparieren. Allerdings funktioniert es bei mir.
In der Datei /sys/class/gpio/gpio<Pinnummer>/active_low steht bei mit eine "1" wenn  active_low auf "yes" gesetzt ist
Wenn nicht, müsste ausserdem im Logfile:
Can't open file: <NAME>, active_low stehen

Könnt ihr das mal überprüfen, ob es bei euch geht?

Grüße
Klaus
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: ollir am 04 Februar 2014, 20:21:28
Hallo Klaus,

vielen Dank für deine Mühe. Ich hatte es schon fast befürchtet.
Zur Zeit mache ich die Abstandsmessung über ein Pythonscripit, welches über einen AT-Job gestartet wird und über Telnet sein Ergebnis zurück im ein Dummy schreibt.

Vielen Dank
Olaf

Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: klausw am 05 Februar 2014, 10:10:46
Hi Olaf
Zitat von: ollir am 04 Februar 2014, 20:21:28
Zur Zeit mache ich die Abstandsmessung über ein Pythonscripit, welches über einen AT-Job gestartet wird und über Telnet sein Ergebnis zurück im ein Dummy schreibt.
Das ist sicher die beste Lösung.
FHEM ist dafür nicht gedacht.
Du kannst das Script hier gerne posten. Es gibt sicher noch einige Interessenten.
Mittelst du im Script eigentlich über mehrere Messungen und schmeißt die Abweicher raus?
Ich kann mich erinnern das, insbesondere bei höherer Prozessorlast, einige Messungen vollkommen daneben lagen.

Grüße
Klaus
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: ollir am 05 Februar 2014, 19:12:09
Hallo Klaus,

ich mittlere von drei Messungen und gebe sie zurück.
Ab und zu habe ich Ausreißer nach oben.
Diese Messungen verwerfe ich, wenn sie größer als 400cm sind.

Werde die Tage mal alles zusammenschreiben  und in's Forum schreiben.

Viele Grüße
Olaf

EDIT: Anleitung mit Externem Script: http://forum.fhem.de/index.php/topic,19812.0.html (http://forum.fhem.de/index.php/topic,19812.0.html)
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: backbone10 am 09 Februar 2014, 20:22:09
ZitatIch wollte gerade das "active_low" Attribut reparieren. Allerdings funktioniert es bei mir.
In der Datei /sys/class/gpio/gpio<Pinnummer>/active_low steht bei mit eine "1" wenn  active_low auf "yes" gesetzt ist
Wenn nicht, müsste ausserdem im Logfile:
Code: [Auswählen]

Can't open file: <NAME>, active_low

stehen

Könnt ihr das mal überprüfen, ob es bei euch geht?

Hi klausw,
bitte um Nachsicht, ich habs grad wieder probiert und nachdem ich die Rechte von "active_low" auf owner fhem - gruppe dialout gesetzt (644) habe funktioniert es auch bei mir. Bin noch beim Aufbau der Grundkenntnisse - geht leider alles sehr viel schwieriger als erwartet..

Update : jetzt hat aufeinmal wieder root/root die rechte und es zeigt wieder verkehrt an, weil in active_low eine 0 stand.

keine Ahnung warum das passiert ist, vielleicht bei einem reboot  ?? Wie sollten die Berechtigungen sein ??

nochmal Update : das passiert bei mir leider dauernd, auch die Fehlermeldung im Log...

danke

bb10

danke nochmal

bb10 

Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: klausw am 18 Februar 2014, 23:04:38
Zitat von: backbone10 am 09 Februar 2014, 20:22:09
Update : jetzt hat aufeinmal wieder root/root die rechte und es zeigt wieder verkehrt an, weil in active_low eine 0 stand.

keine Ahnung warum das passiert ist, vielleicht bei einem reboot  ?? Wie sollten die Berechtigungen sein ??

nochmal Update : das passiert bei mir leider dauernd, auch die Fehlermeldung im Log...

Wenn Du die Rechte manuell änderst, dann sind sie nach einem Reboot wieder weg. Es sind ja keine wirklichen Dateien. Sie werden beim starten angelegt und geben Dir nur einfachen Zugriff auf die GPIO's über das Dateisystem.

Wenn es generell nicht geht (k.A. wieso das bei mit funktioniert) dann muss ich es anders implementieren. Das wird aber eine Weile dauern, da ich das Modul komplett umändern muss. Es ist nicht einfach mit einer Invertierung der Werte getan. Auch die Interrupts müssen angepasst werden.

Grüße
Klaus
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: klausw am 18 Februar 2014, 23:07:11
vorerst könntest Du readingsProxy verwenden um einfach die Ports zu invertieren.
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: klausw am 20 Februar 2014, 00:39:55
Zitat von: backbone10 am 09 Februar 2014, 20:22:09
bitte um Nachsicht, ich habs grad wieder probiert und nachdem ich die Rechte von "active_low" auf owner fhem - gruppe dialout gesetzt (644) habe funktioniert es auch bei mir. Bin noch beim Aufbau der Grundkenntnisse - geht leider alles sehr viel schwieriger als erwartet..
fängt ja jeder mal an :)
komisch ist es aber trotzdem

logge dich mal über ssh ein und gib folgendes ein: id fhem
dann solltest du sowas bekommen: uid=999(fhem) gid=20(dialout) Gruppen=20(dialout),1003(gpio)


Nun gehe bitte nochmal in ein GPIO Verzeichnis, von einem GPIO den Du in FHEM definiert hast:
cd /sys/class/gpio/gpioN/

und führe folgenden Befehl aus:
ls -l

nun müsste es etwa so aussehen:
-rwxrwx--- 1 root gpio 4096 Feb 20 00:36 active_low
-rwxrwx--- 1 root gpio 4096 Feb 20 00:36 direction
-rwxrwx--- 1 root gpio 4096 Feb 20 00:36 edge
drwxrwx--- 2 root gpio    0 Feb 20 00:36 power
lrwxrwxrwx 1 root gpio    0 Feb 20 00:36 subsystem -> ../../../../class/gpio
-rwxrwx--- 1 root gpio 4096 Feb 20 00:36 uevent
-rwxrwx--- 1 root gpio 4096 Feb 20 00:36 value


Der User ist zwar root, aber die Gruppe ist gpio und alle Dateien haben Schreibrechte für die Gruppe. Somit sollte es funktionieren.

Teste das bitte mal und poste die Ergebnisse hier.

Grüße
Klaus


Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: backbone10 am 20 Februar 2014, 08:19:59
Hi,
danke dass du dir da ansiehst..

pi@raspberrypi:~$ id fhem
uid=999(fhem) gid=20(dialout) Gruppen=20(dialout)

pi@raspberrypi:/sys/class/gpio/gpio24$ ls -l
insgesamt 0
-rw-r--r-- 1 fhem dialout 4096 Feb 20 07:57 active_low
-rw-r--r-- 1 fhem dialout 4096 Feb 20 07:57 direction
-rw-r--r-- 1 fhem dialout 4096 Feb 20 07:57 edge
drwxr-xr-x 2 fhem dialout    0 Feb 20 07:48 power
lrwxrwxrwx 1 fhem dialout    0 Feb 20 07:48 subsystem -> ../../../../class/gpio
-rw-r--r-- 1 fhem dialout 4096 Feb 20 07:48 uevent
-rw-r--r-- 1 fhem dialout 4096 Feb 20 07:41 value
pi@raspberrypi:/sys/class/gpio/gpio24$


das war aber nachdem ich die Berechtigungen manuell gesetzt habe.

Nach einem Neustart habe ich immer 0 in dem File und  Root als Besitzer und Gruppe Root drin  (und wie schon gesagt RW, Gruppe und andere RW)

Danke

bb10
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: klausw am 20 Februar 2014, 09:44:24
der user fhem sollte auch in der Gruppe gpio sein

mit
sudo adduser fhem gpio
und neu starten

der Besitzer der Files ist root, das ist normal. Allerdings sollte die Gruppe auch bei Dir schon gpio sein.

nach dem Neustart bitte nochmal ls -l machen und hier posten, ich möchte wissen, ob alle Dateien die gleichen Rechte haben.

wenn dann wieder Nutzer und Gruppe root sind bitte folgendes als user pi versuchen:
/usr/local/bin/gpio export 8 in
wobei Pin und Richtung keine Rolle spielen
und dann von diesem Pin nochmals:
ls -l

Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: backbone10 am 20 Februar 2014, 18:31:24
Hi,
danke..

User hab ich hinzugefügt, dann reboot und
pi@raspberrypi /sys/class/gpio/gpio24 $ ls -l
insgesamt 0
-rw-r--r-- 1 root root    4096 Feb 20 18:15 active_low
-rw-r--r-- 1 root root    4096 Feb 20 18:15 direction
-rw-r--r-- 1 fhem dialout 4096 Feb 20 18:15 edge
drwxr-xr-x 2 root root       0 Feb 20 18:17 power
lrwxrwxrwx 1 root root       0 Feb 20 18:15 subsystem -> ../../../../class/gpio
-rw-r--r-- 1 root root    4096 Feb 20 18:15 uevent
-rw-r--r-- 1 fhem dialout 4096 Feb 20 18:15 value
pi@raspberrypi /sys/class/gpio/gpio24 $



dann das zweite

pi@raspberrypi /sys $ cd /sys/class/gpio/gpio24
pi@raspberrypi /sys/class/gpio/gpio24 $ ls
active_low  direction  edge  power  subsystem  uevent  value
pi@raspberrypi /sys/class/gpio/gpio24 $ ls -l
insgesamt 0
-rw-r--r-- 1 root root    4096 Feb 20 18:15 active_low
-rw-r--r-- 1 root root    4096 Feb 20 18:15 direction
-rw-r--r-- 1 fhem dialout 4096 Feb 20 18:15 edge
drwxr-xr-x 2 root root       0 Feb 20 18:17 power
lrwxrwxrwx 1 root root       0 Feb 20 18:15 subsystem -> ../../../../class/gpio
-rw-r--r-- 1 root root    4096 Feb 20 18:15 uevent
-rw-r--r-- 1 fhem dialout 4096 Feb 20 18:15 value
pi@raspberrypi /sys/class/gpio/gpio24 $ ^C
pi@raspberrypi /sys/class/gpio/gpio24 $ cd /sys/class/gpio/gpio8
pi@raspberrypi /sys/class/gpio/gpio8 $ /usr/local/bin/gpio export 8 in
pi@raspberrypi /sys/class/gpio/gpio8 $ ls -l
insgesamt 0
-rw-r--r-- 1 root root 4096 Feb 20 18:21 active_low
-rw-r--r-- 1 root root 4096 Feb 20 18:24 direction
-rw-r--r-- 1 pi   pi   4096 Feb 20 18:20 edge
drwxr-xr-x 2 root root    0 Feb 20 18:21 power
lrwxrwxrwx 1 root root    0 Feb 20 18:20 subsystem -> ../../../../class/gpio
-rw-r--r-- 1 root root 4096 Feb 20 18:20 uevent
-rw-r--r-- 1 pi   pi   4096 Feb 20 18:20 value
pi@raspberrypi /sys/class/gpio/gpio8 $


Jetzt ist Besitzer und Gruppe wieder root und in active_low steht wieder die 0..... :'(

mfg

bb10

Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: klausw am 20 Februar 2014, 18:46:34
Value und EDGE haben aber User und Gruppe übernommen. An so ein Verhalten kann ich mich noch erinnern. Nachdem Ende letzten Jahre meine Sdkarte abgeraucht ist, habe ich das Pi neu aufgesetzt. Seitdem scheint die Rechtevergabe etwas anders zu sein. Von wann ist Deine Pi Installation? Und wann hast du wiringpi installiert?
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: backbone10 am 20 Februar 2014, 20:34:54
Hi,
den PI habe ich ca. im August aufgesetzt, wiringpi dann später, wird so ca. anfang dezember gewesen sein
Ich habe den PI öfters mit sudo apt-get update / upgrade aktualisiert.
Versionsnummern habe ich keine gefunden, soll ich wieder mal updaten und das nochmal probieren ? FHEM ist ganz uptodate..

danke
bb10

Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: klausw am 20 Februar 2014, 21:04:02
wenn ich das wüsste...
ich hätte als erstes wiringpi in Verdacht. Da ja bei Dir und mir die Gpio Dateien mit unterschiedlichen Rechten angelegt werden.

gpio -v

sagt bei mir:
gpio version: 2.13

und bei Dir?

Aber vielleicht liegt es auch an den Kerneltreibern.
cat /proc/version

bringt bei mir:
Linux version 3.10.25+ (dc4@dc4-arm-01) (gcc version 4.7.2 20120731 (prerelease) (crosstool-NG linaro-1.13.1+bzr2458 - Linaro GCC 2012.08) ) #622 PREEMPT Fri Jan 3 18:41:00 GMT 2014

Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: backbone10 am 21 Februar 2014, 19:48:34
Hi,
genau das gleiche  :(

soll ich mal was neu installieren ? wen ja, was und mit welchem user ?

mfg

bb10

Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: klausw am 27 Februar 2014, 12:01:39
puh, gute frage
hast Du eine 2. SD Karte?
Dann würde ich es komplett neu aufsetzten mit der aktuellen raspbian Version.
Ich habe letzte Wochen mein 2. Raspi neu aufgesetzt. Da hat es auch auf Anhieb funktioniert.

PS: ich habe alle installationen mit dem user pi gemacht
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: backbone10 am 02 März 2014, 23:41:39
Hi,
kann ich hiermit bestaetigen. Funktioniert ;)

Danke

bb10
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: Apollo am 27 März 2014, 14:36:44
Ich komme mit dem Interrupt nicht weiter, was muß ich da noch konfigurieren?
Ich habe jetzt folgendes:

define Pin12 RPI_GPIO 18
attr Pin12 direction input
attr Pin12 interrupt falling

Egal was ich weiteres einstelle, der Zustand des PIN12 ändert sich in FHEM nicht.
Außerdem habe ich beobachtet, dass die CPU auf 100% geht, sobald ich den Interrupt einschalte.
Dabei gehen knapp 50% an perl und ebenfalls knapp 50% an startpar.

Letztendlich möchte ich mit dem Interrupt das lesen des MCP23017 per i2c auslösen.

Danke
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: klausw am 27 März 2014, 15:48:54
Zitat von: Apollo am 27 März 2014, 14:36:44
Ich komme mit dem Interrupt nicht weiter, was muß ich da noch konfigurieren?
Ich habe jetzt folgendes:

define Pin12 RPI_GPIO 18
attr Pin12 direction input
attr Pin12 interrupt falling

Egal was ich weiteres einstelle, der Zustand des PIN12 ändert sich in FHEM nicht.
Außerdem habe ich beobachtet, dass die CPU auf 100% geht, sobald ich den Interrupt einschalte.
Dabei gehen knapp 50% an perl und ebenfalls knapp 50% an startpar.

Letztendlich möchte ich mit dem Interrupt das lesen des MCP23017 per i2c auslösen.

Danke
interrupt falling bedeutet, das bei fallender Flanke die werte aktualisiert werden
Da kannst natürlich du keine Veränderung von state sehen (da immer nur der low Pegel aktualisiert wird). Allerdings sollte sich die Zeit bei jedem Interrupt ändern. Pinlevel wird in diesem Fall nur bei einem reload aktualisiert.
Aber um ein notify zum auslesen des MCP... zu erzeugen reicht das.
Mit interrupt both ändert sich state bei jedem Pegelwechsel.
Mit interrupt both ändert sich
Wie lang bleibt die CPU denn auf 100%? Das habe ich mir noch nciht angeschaut
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: Apollo am 27 März 2014, 18:49:08
danke für deine schnelle Antwort.

Leider geht das auch mit both auch nicht. Der Pinlevel wird nur beim Reload der Detailseite aktualisiert, aber das macht es ja auch ohne den Interrupt-Eintrag.

Die 100% CPU bleiben so lange, bis ich den Interrupt-Eintrag wieder kösche, dann ist sofort 98% Idle.

Revision 1 oder 2 des RPI dürfe ja keinen unterschied machen, oder? (Ich hab die 1)
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: klausw am 27 März 2014, 18:58:06
Zitat von: Apollo am 27 März 2014, 18:49:08
Leider geht das auch mit both auch nicht. Der Pinlevel wird nur beim Reload der Detailseite aktualisiert, aber das macht es ja auch ohne den Interrupt-Eintrag.
Genau, das beteutet aber schonmal das es grundsätzlich funktioniert

Zitat von: Apollo am 27 März 2014, 18:49:08
Die 100% CPU bleiben so lange, bis ich den Interrupt-Eintrag wieder kösche, dann ist sofort 98% Idle.
Was bedeutet löschen? Den Pin zurücksetzen? Oder ein Undefine?
Geht FHEM noch wenn du bei 100% bist?


Zitat von: Apollo am 27 März 2014, 18:49:08
Revision 1 oder 2 des RPI dürfe ja keinen unterschied machen, oder? (Ich hab die 1)
Das sollte egal sein ... bis auf die Tatsachem das einige GPIOs auf anderen Pins sitzen.

Wie alt ist Deine Raspbian Installation?
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: Apollo am 27 März 2014, 19:58:34
Ja eben, es geht ja grundsätzlich. Ich kann den Zustand des Pins auslesen oder ihn als Ausgang benutzen, nur das mit dem Interrupt will nicht.

Mit löschen meinte ich das Attribut "interrupt", entweder direkt auf der Detailseite mit "deleteattr", oder direkt in der fhem.cfg und save (das braucht nicht mal ein rereadcfg).
Erstaunlicherweise geht FHEM trotz der 100% CPU noch recht gut.

Raspbian ist das letzte (2014-01-07)

edit: das Log sagt auch nichts weiter
2014.03.27 20:52:56 5: Cmd: >define Pin12 RPI_GPIO 18<
2014.03.27 20:52:56 5: Loading ./FHEM/51_RPI_GPIO.pm
2014.03.27 20:52:56 5: Pin12: direction: input
2014.03.27 20:52:57 5: Cmd: >attr Pin12 direction input<
2014.03.27 20:52:57 5: Pin12: direction: input
2014.03.27 20:52:57 5: Cmd: >attr Pin12 interrupt both<
2014.03.27 20:52:57 5: Datei: /sys/class/gpio/gpio18/value, FH: IO::File=GLOB(0x1ebfc08), EXCEPT_FD: 8, akt. Wert: 1
2014.03.27 20:52:57 5: Pin12: interrupt: both

Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: klausw am 28 März 2014, 00:15:05
Ja, das Log sieht normal aus.
Die Perl Version ist auch aktuell?
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: Apollo am 28 März 2014, 01:19:48
Ich habe noch mal update/upgrade von Raspbian gemacht, somit sollte perl aktuell sein.
Komischer weise ist jetzt die hohe CPU-Last weg. Geändert hat sich beim Interrupt aber nichts.

welches Modul ist eigentlich das aktuellere?
das im trunk
http://sourceforge.net/p/fhem/code/HEAD/tree/trunk/fhem/FHEM/
oder das im Board
http://forum.fhem.de/index.php/topic,16519.msg115933.html#msg115933

Ich werde mal die Tage Raspbian noch mal komplett neu aufzusetzen, eventuell ist ja doch irgendwo etwas quer.
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: klausw am 28 März 2014, 01:48:24
per update im FHEM solltest Du die aktuelle Version bekommen
das ist dann das im trunk
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: Apollo am 28 März 2014, 02:02:33
Ich habe gerade in einem anderen Beitrag gelesen, dass die pins mit 3,3V arbeiten. ich hab für mein Steckboard die 5V vom RPI abgegriffen, kann das mein Interrupt-Problem sein?

Beim I2C-Bus müsste das ja egal sein, da die ICs ja mit low-Pegel arbeiten und die Pullups auf dem RPI sind.
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: klausw am 28 März 2014, 09:57:58
Zitat von: Apollo am 28 März 2014, 02:02:33
Ich habe gerade in einem anderen Beitrag gelesen, dass die pins mit 3,3V arbeiten. ich hab für mein Steckboard die 5V vom RPI abgegriffen, kann das mein Interrupt-Problem sein?

Beim I2C-Bus müsste das ja egal sein, da die ICs ja mit low-Pegel arbeiten und die Pullups auf dem RPI sind.

Das steht auch in der connmandref drin.
Mit 5V kannst du Dir die Pins zerschießen, vielleicht ist das auch schon passiert.
Wie der Controller dann reagiert ist schwer zu sagen.
Hast Du noch einen Pin, der keine 5V gesehen hat? Dann solltest Du es an diesem noch einmal probieren.

Manche I2C Module haben aber auch Pullups drauf. Da würde ich aufpassen.
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: Apollo am 28 März 2014, 11:13:30
Ja, erst lesen wäre besser. Meistens mach ich das leider anders herum.
Ich hatte einen 4,7k Widerstand gegen 5V, das hat der Pin denke ich überlebt.
Ich hab jetzt auch noch Pin7 (GPIO4) dran, aber ist das selbe.
Wenn ich das pollen lasse (Attr:poll_interval) dann geht es ( in Minutenabständen :( ), nur nicht per Interrupt.

Momentan hab ich ja nur ein Steckboard dran und da hab ich die Pullups komplett weg gelassen.
Wenn es dann so funktioniert, wie es soll, dann baue ich mir die Module auch selber.

Das die hohe CPU-Last weg ist, stimmt übrigens nicht. Hatte gestern wahrscheinlich auf die falsche SSH Konsole geschaut, war schon spät.

Wenn ich Zeit habe, werde ich noch mal mit einem frischen Raspbian anfangen.
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: Apollo am 31 März 2014, 16:18:18
Bin zwar noch beim Einrichten des I2C, aber den Interrupt auf den GPIOs konnte ich mit einem frischen System schon mal erfolgreich testen.
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: klausw am 31 März 2014, 16:35:54
Super, es wäre zwar interessant, woran es gelegen hat. Aber so weisst du schonmal, das die Hardware Ok ist
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: IPPhoner2b am 07 April 2014, 22:09:51
Hallo zusammen,

Ich hoffe, ich verhalte mich nicht falsch, weil ich ein Neuling im Forum bin.

Ich habe einen Raspberry Pi mit Fhem aufgesetzt, und möchte damit über den I2C-Bus 4 MCP23017 Chips ansprechen.
Konkret möchte ich damit die Rollos kabelgebunden steuern. Von der Hardware Seite funktioniert schonmal alles. Jetzt geht es um die Software.

Ich habe mal testweise ein Python Script zum ansteuern der Ausgänge getestet, und in dem Script mit WiringPi2 gearbeitet. Die Bedienung finde ich als Einsteiger sehr einfach.

Gibt es eine Möglichkeit mit dem GPIO Modul von euch, auch die MCP Bausteine komfortabel anzusteuern?
Also ich würde gerne von den insgesamt 64 zur Verfügung stehenden Ports, 16 als Eingänge von Schaltern überwachen, und 48 als Ausgänge.

Wobei ich zum testen auch mit 4 Eingängen und 16 Ausgängen klar komme.

Könnt ihr mir da helfen? Ein Riesen Schritt wäre ja, wenn ich mit GPIO die MCP's ansprechen könnte, und wenn mir kurz ne Hilfe bzgl der Eingänge gegeben werden könnte, ob dass bei den Porterweiterungen auch über "Verzeichnisse" klappt.

Falls ich falsch sein sollte, oder es unpassend ist, bitte ich vielmals um Entschuldigung.

Ansonsten schon mal vielen Dank im Voraus.

Gruß
Christian
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: klausw am 07 April 2014, 23:24:18
Zitat von: IPPhoner2b am 07 April 2014, 22:09:51
Gibt es eine Möglichkeit mit dem GPIO Modul von euch, auch die MCP Bausteine komfortabel anzusteuern?
kurz gesagt nein
Das Modul ist ausschließlich für die GPIO's des Raspberry gedacht.
Es gibt noch ein weiteres Modul um I2C Bausteine am Raspberry anzusteuern.
Hier (http://forum.fhem.de/index.php/topic,20452.0.html) und hier (http://forum.fhem.de/index.php/topic,19797.0.html)
Allerdings gibt es da noch kein fertiges Modul für den MCP....das muss erst noch geschrieben werden.
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: Apollo am 08 April 2014, 00:40:38
so ähnlich versuche ich das auch gerade, nur dass ich für die Schaltausgänge den PCF8574 verwende, die Eingänge realisiere ich auch über den MCP23017.
Das Auslesen und Auswerten des MCP23017 ist recht einfach.
Auf dem Pin7 (GPIO4) habe ich den Interrupt des MCP23017. Der Port wird vom GPIO Interrupt überwacht.
Eine Änderung lößt ein Notify aus, dass dann die Auswertung übernimmt.
Pin7.off {
     my $wa = fhem("get bus read 21 12") + 0;
     my $wb = fhem("get bus read 21 13") + 0;
     if ($wa & 1) {fhem ("set IC1_A0 on")} else {fhem ("set IC1_A0 off")}
     if ($wa & 2) {fhem ("set IC1_A1 on")} else {fhem ("set IC1_A1 off")}
     if ($wa & 4) {fhem ("set IC1_A2 on")} else {fhem ("set IC1_A2 off")}
     if ($wa & 8) {fhem ("set IC1_A3 on")} else {fhem ("set IC1_A3 off")}
     if ($wa & 16) {fhem ("set IC1_A4 on")} else {fhem ("set IC1_A4 off")}
     if ($wa & 32) {fhem ("set IC1_A5 on")} else {fhem ("set IC1_A5 off")}
     if ($wa & 64) {fhem ("set IC1_A6 on")} else {fhem ("set IC1_A6 off")}
     if ($wa & 128) {fhem ("set IC1_A7 on")} else {fhem ("set IC1_A7 off")}
     if ($wb & 1) {fhem ("set IC1_B0 on")} else {fhem ("set IC1_B0 off")}
     if ($wb & 2) {fhem ("set IC1_B1 on")} else {fhem ("set IC1_B1 off")}
     if ($wb & 4) {fhem ("set IC1_B2 on")} else {fhem ("set IC1_B2 off")}
     if ($wb & 8) {fhem ("set IC1_B3 on")} else {fhem ("set IC1_B3 off")}
     if ($wb & 16) {fhem ("set IC1_B4 on")} else {fhem ("set IC1_B4 off")}
     if ($wb & 32) {fhem ("set IC1_B5 on")} else {fhem ("set IC1_B5 off")}
     if ($wb & 64) {fhem ("set IC1_B6 on")} else {fhem ("set IC1_B6 off")}
     if ($wb & 128) {fhem ("set IC1_B7 on")} else {fhem ("set IC1_B7 off")}}

"bus" ist das RPII2C Modul, die Adresse des ICs ist in meinem Fall 21, IC1_A0 bis IC1_B7 sind Dummys
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: klausw am 08 April 2014, 01:18:13
Wieso nicht einfach ein Modul schreiben. Ich bin grade bisschen beschäftigt und habe auch nix mit nem Mcp. Aber wenn jemand das Modul für den Mcp... weiterschreiben will bitte Pn an mich.
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: IPPhoner2b am 08 April 2014, 06:01:15
Wow, das ging ja schnell mit antworten.

Danke schon mal dafür.

Wenn du sagst, "ein Modul für den mcp weiterschreiben"

Ich habe gestern mal nen flüchtigen Blick auf das GPIO Script geworfen. Das ist zwar nicht wirklich meine Welt, aber wenn ich nur die Ein- und Ausgänge des MCP auswerten und setzen möchte, und dies (weil zum verstehen einfacher)  mit WiringPi2 realisieren möchte, was muss ich da konkret machen?

HHabe vor 3 Jahren für dieses Avr-Net-Io Bord von Pollin ein paar Programme geschrieben, deswegen ist das nicht so ganz fremd, und mir geht es ja nur um diese "einfachen"  Sachen und nix kompliziertes.

Also wenn mir nur ne gaaaaanz kurze Crash Einweisung gegeben würde, würde ich mich gerne dran versuchen.

Kann man die Python Befehle da fast übernehmen, oder in welcher Sprache muss das geschrieben werden?  (Perl)

Jedenfalls Respekt vor der Arbeit.

:EDIT:

@Apollo,
das sieht auch schonmal sehr interessant aus.
Kannst du mir bei den Bezeichnungen in deinem Script helfen, welche Bezeichnungen was bedeuten?

Da ich echt noch Neuling bin, was heißt, dass du den Interupt des MCP auf den GPIO 4 gelegt hast?
Und könntest du mir bitte noch erklären, wie du die Dummys angelegt hast, oder wo ich das alles nachlesen kann?

Vielen Dank im voraus
Gruß Christian
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: klausw am 08 April 2014, 16:44:19
Zitat von: IPPhoner2b am 08 April 2014, 06:01:15
Das ist zwar nicht wirklich meine Welt, aber wenn ich nur die Ein- und Ausgänge des MCP auswerten und setzen möchte, und dies (weil zum verstehen einfacher)  mit WiringPi2 realisieren möchte, was muss ich da konkret machen?
Mit WiringPi kann ich Dir nicht helfen, da ich es nicht nutze (mit Ausnahme des gpio tools zur Rechteanpassung). Ehrlich gesagt will ich es auch nicht nutzen, weil es keine Standardlösung für FHEM bringt und sich jeder selbst was zurecht basteln muss. Ein eigenes Modul für den MCP könnte jeder nutzen (sogar auf anderen Systemen).

Das RPI_GPIO Modul ist auch das falsche. Du müsstest Dir das I2C_PCF8574 anschauen. So ähnlich muss auch das Modul für den MCP aussehen. Es ist, wie FHEM auch, in Perl geschrieben. Wenn man es sich mal in Ruhe anschaut ist es eigentlich auch recht logisch aufgebaut ;) (ich bin auch auf diese Weise in die Modulprogrammierung rein gekommen). Ich suche mal nach meiner ersten Version für den I2C_MCP23017 und stelle sie hier ein.
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: IPPhoner2b am 08 April 2014, 21:21:04
Ja ok,
Das macht Sinn, dass man nicht das Rad neu erfinden muss, und wenn das mit dem GPIO auch soweit funktioniert, und ich es verstehe, wäre es mir auch egal, wie ich es ansprechen muss.

Dann werde ich mir mal die Datei für den PCF... ansehen, und so wenigstens die Ausgänge komfortabel setzen zu können. Das ist super nett von dir, wenn ich mir deine Datei anschauen kann, und noch besser wäre es, wenn ich dann auch hier und da mal Tipps bekommen kann.

Was meinst du denn, sollte ich die Eingänge wie Apollo das gemacht hat abfragen, oder geht dass dann auch mit dem "Modul"?

Wie geht das denn mit der Eingangsabfrage über den GPIO 4, habe schonmal nach gesucht, aber noch nicht viel zufriedenstellendes gefunden.
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: klausw am 08 April 2014, 23:33:28
Zitat von: IPPhoner2b am 08 April 2014, 21:21:04
Dann werde ich mir mal die Datei für den PCF... ansehen, und so wenigstens die Ausgänge komfortabel setzen zu können. Das ist super nett von dir, wenn ich mir deine Datei anschauen kann, und noch besser wäre es, wenn ich dann auch hier und da mal Tipps bekommen kann.

Was meinst du denn, sollte ich die Eingänge wie Apollo das gemacht hat abfragen, oder geht dass dann auch mit dem "Modul"?

Wie geht das denn mit der Eingangsabfrage über den GPIO 4, habe schonmal nach gesucht, aber noch nicht viel zufriedenstellendes gefunden.
Ok, lass mich das Modul noch an die neue Schnittstelle zu den I2C Modulen anpassen.
Du kannst dann mit dem MCP.... Modul sämtliche GPIO des IC direkt als Ein oder Ausgänge nutzen. In diesem Modul sollte auch der Interrupt konfiguriert werden.
Den Interrupt Ausgang kannst Du dann an jeden beliebigen GPIO der Raspberry anschließen und über die Interrupt Funktion des Moduls Rpi_GPIO das auslesen der Portpins vom MCP starten.
So kannst Du ohne den Prozessor zu belasten die Portpins als Input nutzen.
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: klausw am 10 April 2014, 18:36:45
So hier (http://forum.fhem.de/index.php/topic,23164.0.html) das Modul für den MCP23017

In Ermangelung eines Testsamples kann ich es nicht selbst testen.
Über die Attribute:
OutputPorts
Pullup
active_low
Interrupt

Können einige Konfigurationen ausgeführt werden.
Die Werte für die Attribute müssen Kommagetrennte Portbezeichnungen sein.
z.B A1,B4,B7
Wenn es funktioniert werde ich es einchecken.
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: IPPhoner2b am 10 April 2014, 20:33:38
Hallo Klaus,

Vielen Dank schonmal für deine Unterstützung, heute und morgen werde ich wohl noch keine Zeit dafür haben, aber ich hoffe, nächste Tage dann mal die Ruhe dafür zu haben.

Also mit den Interrupt d.h. Also den Pin IntA oder IntB auf den GPIO z.b. pin4 des RPI zu legen, richtig?

Über den Befehl Pullup kann ich also für die Eingänge die internen Pullup Widerstände aktivieren?!

Herrje, ich habe wirklich noch viel vor mir, und ich glaube zur Sicherheit könnte ich dem Klaus noch nen Satz MCP23017 zukommen lassen. Wenn du dann mal in ferner Zukunft die Lust verspürst eine "richtige funktionierende" Version zu erstellen, dann wäre anderen Usern auch direkt geholfen.

Ich bin ja immer dankbar, dass es so Leute gibt, die sich so selbstlos einsetzen *Alle Daumen hoch*  :) :)

Gruß Christian
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: klausw am 10 April 2014, 22:25:54
gern geschehen  8), alleine hätte ich es aber auch nicht hinbekommen
Selbstlos isses ja nicht. Den MCP hatte ich auch schonmal ins Auge gefasst.

Zitat von: IPPhoner2b am 10 April 2014, 20:33:38
Also mit den Interrupt d.h. Also den Pin IntA oder IntB auf den GPIO z.b. pin4 des RPI zu legen, richtig?
Genau, im Moment müssen die beide auf getrennte GPIO's. Sobald ich weitere Konfigurationsregister eingebaut habe lassen die sich auch zusammenschließen bzw. intern verbinden.

Zitat von: IPPhoner2b am 10 April 2014, 20:33:38
Über den Befehl Pullup kann ich also für die Eingänge die internen Pullup Widerstände aktivieren?!
yepp... 100k Pullup Pinselektiv

Zitat von: IPPhoner2b am 10 April 2014, 20:33:38
Herrje, ich habe wirklich noch viel vor mir, und ich glaube zur Sicherheit könnte ich dem Klaus noch nen Satz MCP23017 zukommen lassen. Wenn du dann mal in ferner Zukunft die Lust verspürst eine "richtige funktionierende" Version zu erstellen, dann wäre anderen Usern auch direkt geholfen.
Na ich hoffe doch, das die Version schon richtig funkioniert  :D
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: IPPhoner2b am 11 April 2014, 20:39:15
Was würde ich nur ohne dich machen  ;D  ::)

Du bist so gut zu mir  ;)

Dann werde ich mich morgen mal dran setzen, und schauen wie ich das alles gestemmt bekomme, meine weiteren Fragen werde ich wohl hier wieder kund tun  :o

Gruß Christian
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: IPPhoner2b am 15 April 2014, 09:05:31
S, ich werde den RPi zur Sicherheit doch nochmal komplett neu aufsetzen, hatte ja doch hier und da sachen drin, die dort nicht hingehören.

Nur ne kurze Frage bzgl der ganzen Dinge, die installiert werden müssen.
Basis: Raspian Wheezy vom 07.01.2014 und updaten
dann im groben und ganzen Fhem installieren und updaten

- den I2C Bus aktivieren und die I2C-Tools und WiringPi installieren

Gibt es da einen Unterschied, ob ich WiringPi oder WiringPi2 installiere? Habe momentan die ...2 drauf, weiß aber nicht, ob das kompatibel ist.

Und dann könnte es doch in groben schritten schon fast losgehen, um die "Defines" einzurichten, oder?

Gruß
Christian
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: klausw am 15 April 2014, 10:02:59
Zitat von: IPPhoner2b am 15 April 2014, 09:05:31
Nur ne kurze Frage bzgl der ganzen Dinge, die installiert werden müssen.
Basis: Raspian Wheezy vom 07.01.2014 und updaten
dann im groben und ganzen Fhem installieren und updaten

- den I2C Bus aktivieren und die I2C-Tools und WiringPi installieren

Gibt es da einen Unterschied, ob ich WiringPi oder WiringPi2 installiere? Habe momentan die ...2 drauf, weiß aber nicht, ob das kompatibel ist.

Und dann könnte es doch in groben schritten schon fast losgehen, um die "Defines" einzurichten, oder?
Du benötigst auch die Moose und SMBus Perl library (steht in der commandref drin wie Du es installiert).
Sonst passt es soweit.
Von WiringPi wird nur das gpio tool benötigt. Das sollte bei beiden Versionen dabei sein.

Apollo hat ein Script (http://forum.fhem.de/index.php/topic,20452.msg154861.html#msg154861) geschrieben, welches alles automatisch installiert.
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: IPPhoner2b am 16 April 2014, 08:45:07
Hallo Klaus,

na schau mal, die Libmoose hatte ich nicht drin, danke für den Hinweis mit dem Installscript von Apollo, dann werde ich es jetzt damit nochmal zur Sicherheit neu machen, damit auch wirklich alles drauf ist, was da sein muss. :o

Achso, eine Frage noch, habe mir das Script mal grob angesehen, eine Sache konnte ich jedoch nicht entziffern, wird der Speicherplatz der SD Karte auf das maximum erweitert? Wenn ja, welcher Befehl in dem Script ist das dann?

:EDIT:
Hmm, komisch, bekomme das Script nicht gestartet, muss ich da in einem besonderen Verzeichnis sein?
ich glaube ich muss es doch wieder auf die altmodische Weise machen, und kopiere mir die Befehle aus dem Script heraus  :o ::)

pi@raspberrypi ~ $ wget -q http://binichschondrin.info/install && chmod 755 install && ./install
-bash: ./install: /bin/bash^M: bad interpreter: No such file or directory
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: klausw am 16 April 2014, 09:59:31
das musst Du vermutlich mit sudo machen

aber immer alles neu machen muss auch nicht sein ;)
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: IPPhoner2b am 16 April 2014, 11:44:41
Habe es auch direkt danach mit sudo versucht, kam aber die gleiche Fehlermeldung :'(

Ich bin wirklich nicht sehr routiniert was Linux und son Zeugs angeht, und da ich ja eh noch am Anfang bin, wollte ich es halt einmal so aufsetzen, das nur das nötigste installiert ist.


:EDIT:
Hi Klaus,
eine kleine Anmerkung in eigener Sache, wenn du die Scripte erstellst, kannst du nicht evtl oben ein Datum der Überarbeitung mit reinschreiben? Das würde es einfacher machen, gleich die aktuellste Datei zu finden.
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: klausw am 16 April 2014, 13:46:41
Zitat von: IPPhoner2b am 16 April 2014, 11:44:41
wenn du die Scripte erstellst, kannst du nicht evtl oben ein Datum der Überarbeitung mit reinschreiben? Das würde es einfacher machen, gleich die aktuellste Datei zu finden.
welche Scripte meinst Du?
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: IPPhoner2b am 16 April 2014, 14:23:43
Meinte die RPI_I2C, oder MCP_23017 oder so.
Weil doch oben dein Name drin steht, dachte ich, die wären von dir.

Jedenfalls wäre es dann einfacher herauszufinden, welche Datei jetzt die aktuellste Version immer ist (beim MCP ja noch sehr einfach  ;D )

Sagmal, bin jetzt mal ein bisschen angefangen rum zu experimentieren.
Die Sachen werden doch alle in die Fhem.cfg geschrieben, oder?

Ich komme nur noch nicht so richtig zurecht mit der Sprache, muss mich da doch noch stark durch Wiki lesen oder so.

Was muss dort alles rein, dass ich z.B. mit
set <name> <port> <value> den Ausgang A0 schalten kann?
Wenn ich
set mcp_20 A0 1
eingebe, kommt

no IODev assigned to 'mcp_20

in der Fhem.cfg habe ich folgendes:
define chip RPII2C 1
define mcp_20 I2C_MCP23017 0x20

auch mit
attr mcp_20 OutputPorts A0
kommt die gleiche Meldung, aber ich weiß nicht, was ich mit IODev machen muss

Über
attr mcp_20 IODev 1
kommt auch nichts fruchtbares

Oh mann, ich scheitere schon an so Basics, wo soll das noch hinführen  :-[

:EDIT:
Kann das evtl. damit zusammenhängen, dass folgender Befehl bei mir noch nicht ausgeführt wurde? Läuft jetzt grade, aber das dauert ja recht lange

sudo cpan -i  Device::SMBus
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: klausw am 16 April 2014, 21:41:41
Zitat von: IPPhoner2b am 16 April 2014, 14:23:43
Meinte die RPI_I2C, oder MCP_23017 oder so.
Weil doch oben dein Name drin steht, dachte ich, die wären von dir.
Jedenfalls wäre es dann einfacher herauszufinden, welche Datei jetzt die aktuellste Version immer ist (beim MCP ja noch sehr einfach  ;D )

Mit ausnahme des I2C_MCP23017 werden bei einem update von FHEM die aktuellsten Modulversionen heruntergeladen. Da muss man nix herausfinden :)

Zitat von: IPPhoner2b am 16 April 2014, 14:23:43
Sagmal, bin jetzt mal ein bisschen angefangen rum zu experimentieren.
Die Sachen werden doch alle in die Fhem.cfg geschrieben, oder?

jein
Du kannst sie in die fhem.cfg schreiben.
Du kannst sie aber auch nacheinander oben in FHEM in die Eingabezeile eingeben. Die Module bleiben dann bis zum Neustart erhalten ("safe config" schreibt es in die fhem.cfg und Du hast die Einstellungen auch nach dem Neustart noch)

Zitat von: IPPhoner2b am 16 April 2014, 14:23:43
Ich komme nur noch nicht so richtig zurecht mit der Sprache, muss mich da doch noch stark durch Wiki lesen oder so.

links unten in FHEM auf commanref drücken...da hast Du eine Übersicht über die Befehle für alle in FHEM enthaltenen Module.

Zitat von: IPPhoner2b am 16 April 2014, 14:23:43
Was muss dort alles rein, dass ich z.B. mit
set <name> <port> <value> den Ausgang A0 schalten kann?
Wenn ich
set mcp_20 A0 1
eingebe, kommt

no IODev assigned to 'mcp_20

in der Fhem.cfg habe ich folgendes:
define chip RPII2C 1
define mcp_20 I2C_MCP23017 0x20

auch mit
attr mcp_20 OutputPorts A0
kommt die gleiche Meldung, aber ich weiß nicht, was ich mit IODev machen muss

Über
attr mcp_20 IODev 1
kommt auch nichts fruchtbares
bei IODev muss natürlich das IODev rein B) in Deinem Fall chip

define chip RPII2C 1              #IODev für I2C definieren 
define mcp_20 I2C_MCP23017 0x20   #MCP23017 definieren
attr mcp_20 IODev chip            #IODev dem MCP23017 zuweisen
attr mcp_20 OutputPorts A0,A1,A2  #Ports A0 bis A2 als Output definieren


Zitat von: IPPhoner2b am 16 April 2014, 14:23:43
Kann das evtl. damit zusammenhängen, dass folgender Befehl bei mir noch nicht ausgeführt wurde? Läuft jetzt grade, aber das dauert ja recht lange

sudo cpan -i  Device::SMBus
Ohne Device::SMBus funktioniert die Kommunikation über RPII2C nicht.
Die Installation muss vorher abgeschlossen werden.
Wenn du Moose nicht vorher installiert hat dauert die Installation über 8h.
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: IPPhoner2b am 18 April 2014, 11:05:59
Hallo Klaus,

vielen Dank für deine Hilfe, hatte mir eigentlich vorgenommen in meinem Urlaub richtig was zu schaffen, aber naja, wie das eben so ist, Urlaub ist vorbei, und ich habe es grade mal zu den Basics geschafft :o ;)

Aber dank deiner Hilfe wird es jetzt voran gehen *Du tust mir jetzt schon Leid, dich mit so einem Noob herumschlagen zu dürfen*  ::) ;D

Das "Libmoose" Zeugs hatte ich schon vorher installiert, und habe mich so extrem gewundert, dass er dann bei dem cpan Befehl innerhalb extremst kurzer Zeit fertig war.

Ich werde Testen und berichten  :P

:EDITH sagt
Du bist einfach nur genial, was so eine kleine vergessene Zuordnung doch anstellen kann  ::) ;D



:Da ist noch eine EDITH im Spiel,
irgendwas ist total komisch, ich konnte meine Eingänge abfragen, und meine Ausgänge schonmal per Webinterface steuern,
dann habe ich die Sachen vom Steckbrett auf meine Platine umgeändert, also eigentlich nur den Interrupt Pin mit angeschlossen, und jetzt klappt irgendwie nix mehr.
Habe zwar 4 MCPs auf der Platine, und habe die auch passend adressiert, wie den ersten davon, aber seitdem klappt nix mehr, beim aktualisieren der Übersichtsseite springen auf einmal die Eingänge oder die Ausgänge auf on oder off usw, ohne dass sich aber an der Platine eine LED "erleuchtet". Ich konnte auch keine Ausgänge setzen, oder Eingänge abfragen. Habe dann die anderen 3 Chips auskommentiert und aus dem Sockel entnommen, klappte aber trotzdem nicht.

Zurück aufs Steckbrett, und tja, was soll ich sagen, es klappt auch nicht mehr.  :-[

Der Ausgang wird gesetzt, aber sofort wieder auf 0 gesetzt, und Eingänge ignoriert er gekonterweise  >:(

2014.04.18 15:14:22 1: mcp_20 set regaddr: 12 inhalt: 01
2014.04.18 15:14:22 1: mcp_20 UpdReadings Register: 18, Inhalt: 1; RegA: 18, RegB: 19
2014.04.18 15:14:22 1: mcp_20 UpdReadings Register: 19, Inhalt: 0; RegA: 18, RegB: 19
2014.04.18 15:14:22 1: mcp_20 UpdReadings Register: 18, Inhalt: 0; RegA: 18, RegB: 19


Das hier ist der Bereich für die Fhem.cfg
define chip RPII2C 1
define mcp_20 I2C_MCP23017 0x20
attr mcp_20 IODev chip
attr mcp_20 OutputPorts A0,A1,A2,A3,A4,A5,A6,A7
attr mcp_20 Pullup B0,B1,B2,B3,B4,B5,B6,B7
attr mcp_20 active_low B0,B1,B2,B3,B4,B5,B6,B7

#define mcp_21 I2C_MCP23017 0x21
#attr mcp_21 IODev chip
#attr mcp_21 OutputPorts A0,A1,A2,A3,A4,A5,A6,A7,B0,B1,B2,B3,B4,B5,B6,B7

#define mcp_22 I2C_MCP23017 0x22
#attr mcp_22 IODev chip
#attr mcp_22 OutputPorts A0,A1,A2,A3,A4,A5,A6,A7,B0,B1,B2,B3,B4,B5,B6,B7

#define mcp_24 I2C_MCP23017 0x24
#attr mcp_24 IODev chip
#attr mcp_24 OutputPorts A0,A1,A2,A3,A4,A5,A6,A7
#attr mcp_24 Pullup B0,B1,B2,B3,B4,B5,B6,B7
#attr mcp_24 active_low B0,B1,B2,B3,B4,B5,B6,B7

define Eingang_mcp_20 RPI_GPIO 8
attr Eingang_mcp_20 direction input
attr Eingang_mcp_20 interrupt rising

#define Eingang_mcp_24 RPI_GPIO 10
#attr Eingang_mcp_24 direction input
#attr Eingang_mcp_24 interrupt rising
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: Puschel74 am 22 April 2014, 10:49:43
Hallo zusammen,

Heute wurde bei uns (endlich) ein Wasserzähler mit Impulsausgang montiert.
Diesen Impulsausgang (1 Imp. = 1 Liter) möchte ich nun gerne an meinen RasPi klemmen und (logischerweise) abfragen.

Aber - ich habe an diesem RasPi bereits den I2C-Port belegt.
Darüber frage ich zur Zeit 3 LM75-Temperatursensoren ab.

Nun erstmal natürlich die Frage:
Geht mein Vorhaben oder kommt sich I2C(GPIO1/2) und z.B. GPIO 17 in die Quere?
Nicht das sich das Modul resp. die WiringPi erstmal alle GPIO krallt und der I2C dann nichtmehr zur Verfügung steht.

Sollte das so klappen dann würde es ja genügen von Pin1 (3.3V) über den Kontakt auf Pin11 (GPIO17) zu verdrahten und mit dem Modul dann diesen Pin auf Eingang zu setzen und das Attribut interrupt zu aktivieren.

Oder habe ich hier einen Denkfehler?

Danke schonmal für Eure Antworten bzw. Hilfestellungen.

Grüße

P.S.: Ein kurzes und knappes "Nein" würde mir schon reichen wenn ich gedanklich ganz daneben liege  ;D
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: klausw am 22 April 2014, 11:29:26
Zitat von: Puschel74 am 22 April 2014, 10:49:43
Heute wurde bei uns (endlich) ein Wasserzähler mit Impulsausgang montiert.
Diesen Impulsausgang (1 Imp. = 1 Liter) möchte ich nun gerne an meinen RasPi klemmen und (logischerweise) abfragen.
...
P.S.: Ein kurzes und knappes "Nein" würde mir schon reichen wenn ich gedanklich ganz daneben liege  ;D
Das Modul ist sehr genügsam  ;D
Es werden nur die Pins exportiert, die auch definiert werden. Ich nutze auch I2C parallel dazu.
Es ist also eher ein kurzes ja.
Wie stark der interne Pullup ist, kann ich Dir nicht sagen. Evtl musst Du extern noch einen dazu setzen.
Ich würde noch einen 1k Angstwiderstand in Reihe zur 3.3V setzen.

Grüße
Klaus

PS: im Modul werden aber nur die Pulse gezählt. Mehr habe ich noch ich implementiert.
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: Puschel74 am 22 April 2014, 11:50:45
Hallo,

ZitatEs ist also eher ein kurzes ja.
Wunderbar.
Vielen Dank für die Antwort.

Und danke auch für die Hinweise mit den Widerständen.
Werd ich auf alle Fälle machen.

ZitatPS: im Modul werden aber nur die Pulse gezählt.
Mehr hätte ich auch garnicht erwartet  ;D
Das ist eigentlich genau das was mir ja schon genügt.
ZitatFür GPIO der als input konfiguriert ist

    readval

readval aktualisiert das reading Pinlevel und, wenn attr toggletostate nicht gesetzt ist, auch state
Wenn ich das richtig lese kann ich ja den Pinlevel bzw. state auslesen und wenn der brav mit jedem Kontakt hochzählt hab ich ja schonmal die Liter.
Alles weitere sollte ja dann das "kleinere" Problem sein (hoffe ich mal).

Nu geh ich erst mal ans löten  8)

Grüße
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: klausw am 22 April 2014, 14:37:14
Zitat von: Puschel74 am 22 April 2014, 11:50:45
Für GPIO der als input konfiguriert ist

    readval

readval aktualisiert das reading Pinlevel und, wenn attr toggletostate nicht gesetzt ist, auch state


Wenn ich das richtig lese kann ich ja den Pinlevel bzw. state auslesen und wenn der brav mit jedem Kontakt hochzählt hab ich ja schonmal die Liter.
Der Pinlevel nützt Dir doch nix. Du möchtest die Impulse (Flanken) zählen.
Natürlich kannst Du den Pinlevel pollen, das muss aber nicht sein.
Sobald Du das Attribut interrupt auf falling oder rising gesetzt hast, wird bei entsprechender Flanke ein Interrupt ausgelöst und das Reading Counter um 1 hochgezählt.
Dieses Reading kannst du dann zyklisch auslesen und für Deine Verbrauchsdarstellung nutzen.
Du kannst auch bei jedem Zyklus mit setreading den Counter wieder zurücksetzen.
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: klausw am 22 April 2014, 15:03:56
Zitat von: IPPhoner2b am 18 April 2014, 11:05:59
:Da ist noch eine EDITH im Spiel,
irgendwas ist total komisch, ich konnte meine Eingänge abfragen, und meine Ausgänge schonmal per Webinterface steuern,
dann habe ich die Sachen vom Steckbrett auf meine Platine umgeändert, also eigentlich nur den Interrupt Pin mit angeschlossen, und jetzt klappt irgendwie nix mehr.
Habe zwar 4 MCPs auf der Platine, und habe die auch passend adressiert, wie den ersten davon, aber seitdem klappt nix mehr, beim aktualisieren der Übersichtsseite springen auf einmal die Eingänge oder die Ausgänge auf on oder off usw, ohne dass sich aber an der Platine eine LED "erleuchtet". Ich konnte auch keine Ausgänge setzen, oder Eingänge abfragen. Habe dann die anderen 3 Chips auskommentiert und aus dem Sockel entnommen, klappte aber trotzdem nicht.

Zurück aufs Steckbrett, und tja, was soll ich sagen, es klappt auch nicht mehr.  :-[

Der Ausgang wird gesetzt, aber sofort wieder auf 0 gesetzt, und Eingänge ignoriert er gekonterweise  >:(

2014.04.18 15:14:22 1: mcp_20 set regaddr: 12 inhalt: 01
2014.04.18 15:14:22 1: mcp_20 UpdReadings Register: 18, Inhalt: 1; RegA: 18, RegB: 19
2014.04.18 15:14:22 1: mcp_20 UpdReadings Register: 19, Inhalt: 0; RegA: 18, RegB: 19
2014.04.18 15:14:22 1: mcp_20 UpdReadings Register: 18, Inhalt: 0; RegA: 18, RegB: 19


Das hier ist der Bereich für die Fhem.cfg
define chip RPII2C 1
define mcp_20 I2C_MCP23017 0x20
attr mcp_20 IODev chip
attr mcp_20 OutputPorts A0,A1,A2,A3,A4,A5,A6,A7
attr mcp_20 Pullup B0,B1,B2,B3,B4,B5,B6,B7
attr mcp_20 active_low B0,B1,B2,B3,B4,B5,B6,B7

#define mcp_21 I2C_MCP23017 0x21
#attr mcp_21 IODev chip
#attr mcp_21 OutputPorts A0,A1,A2,A3,A4,A5,A6,A7,B0,B1,B2,B3,B4,B5,B6,B7

#define mcp_22 I2C_MCP23017 0x22
#attr mcp_22 IODev chip
#attr mcp_22 OutputPorts A0,A1,A2,A3,A4,A5,A6,A7,B0,B1,B2,B3,B4,B5,B6,B7

#define mcp_24 I2C_MCP23017 0x24
#attr mcp_24 IODev chip
#attr mcp_24 OutputPorts A0,A1,A2,A3,A4,A5,A6,A7
#attr mcp_24 Pullup B0,B1,B2,B3,B4,B5,B6,B7
#attr mcp_24 active_low B0,B1,B2,B3,B4,B5,B6,B7

define Eingang_mcp_20 RPI_GPIO 8
attr Eingang_mcp_20 direction input
attr Eingang_mcp_20 interrupt rising

#define Eingang_mcp_24 RPI_GPIO 10
#attr Eingang_mcp_24 direction input
#attr Eingang_mcp_24 interrupt rising


Soo, ich war Ostern offline ... sehr erholsam :D

zu aller erst: wenn es zuerst funktioniert hat dann sollte es nach dem Rückbau in gleicher Konfiguration auch wieder gehen.

Wird der Ausgang auch messbar am Pin gesetzt, oder nur im Frontend?

Bevor ich mit den Kopf zerbreche:
geht es ohne define Eingang_mcp_20 RPI_GPIO 8 wieder?
Geht es ohne die Attribute Pullup und activelow?

Es währe gut zu wissen, bei welcher Änderung es nicht mehr geht.


Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: Puschel74 am 22 April 2014, 15:16:10
Hallo,

Zitatund das Reading Counter um 1 hochgezählt.
Äh, ja klar.

Da gibt es schon eine deutsche commandref dazu und dann les ich nur die Hälfte  ::)

Stimmt ja.
Da gibt es ja dann den Counter <-- noch besser.
Danke für den Schupps.

Grüße
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: linusd am 27 April 2014, 16:37:23
Hallo Klaus,

zunächst mal ein großes Lob für das Modul!
Für jemanden wie mich, der erst dabei ist sich in die Untiefen der IC's zu begeben, spart dieses Modul zunächst viel Zeit für die (test)Inbetriebnahme. :D

Dennoch ist es natürlich hilfreich und sinnvoll zu verstehen mit was und wie man damit arbeitet.
Neben dem Datenblatt ist mir folgende Seite zwar bisher sehr hilfreich gewesen, aber ich bin eben noch am Anfang.::)

http://www.elektronx.de/tutorials/porterweiterung-mit-mcp23017-und-i2c/ (http://www.elektronx.de/tutorials/porterweiterung-mit-mcp23017-und-i2c/)

Mein Problem ist nur, dass der Interrupt leider nicht reagiert.
Meine Testkonfiguration:
- REED-Kontakt auf GPA7
- INTA auf GPIO4 gelegt (bleibt immer auf High!?!)


define chip RPII2C 1

define testMCP23017 I2C_MCP23017 0x20
attr testMCP23017 IODev chip
attr testMCP23017 Interrupt A7

define dummyMCP23017 dummy

define notifyMCP23017 notify testMCP23017 {my $MCP23017state=ReadingsVal("testMCP23017","PortA7",0);; fhem ("set dummyMCP23017 $MCP23017state")}
attr notifyMCP23017 showTriggerTime 1


Die Ports (die Readings) werden nur ausgelesen wenn ich das <testMCP23017> geöffnet habe und F5 drücke. ??? :-[
Muss ich evtl. den INTA noch konfigurieren und wenn ja wie?

Vielen Dank schonmal bis hierhin und im Voraus!
(P.S: Ich freue mich natürlich über jede Hilfe!)

Gruß
Christian
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: klausw am 27 April 2014, 23:14:36
Hallo Christian,

Zitat von: linusd am 27 April 2014, 16:37:23
Mein Problem ist nur, dass der Interrupt leider nicht reagiert.
Meine Testkonfiguration:
- REED-Kontakt auf GPA7
- INTA auf GPIO4 gelegt (bleibt immer auf High!?!)


define chip RPII2C 1

define testMCP23017 I2C_MCP23017 0x20
attr testMCP23017 IODev chip
attr testMCP23017 Interrupt A7

define dummyMCP23017 dummy

define notifyMCP23017 notify testMCP23017 {my $MCP23017state=ReadingsVal("testMCP23017","PortA7",0);; fhem ("set dummyMCP23017 $MCP23017state")}
attr notifyMCP23017 showTriggerTime 1


Die Ports (die Readings) werden nur ausgelesen wenn ich das <testMCP23017> geöffnet habe und F5 drücke. ??? :-[
Muss ich evtl. den INTA noch konfigurieren und wenn ja wie?

Deine Konfiguration scheint schonmal zu funktionieren.
Der Interrupt kann noch nicht laufen, da die Konfiguration noch unvollständig ist.
Der Gpio vom Raspberry muss noch eingestellt werden.
z.B. so:

define meinIntport RPI_GPIO 4
attr meinIntport direction input
attr meinIntport interrupt rising


Dieser sollte dann bei jedem Interruptereignis auslösen.
Wenn das geht, kannst Du über den GPIO ein notify auslösen, welches eine get für den MCP23017 auslöst.

Grüße
Klaus
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: IPPhoner2b am 01 Mai 2014, 12:34:21
Zitat von: klausw am 22 April 2014, 15:03:56
Soo, ich war Ostern offline ... sehr erholsam :D

zu aller erst: wenn es zuerst funktioniert hat dann sollte es nach dem Rückbau in gleicher Konfiguration auch wieder gehen.

Wird der Ausgang auch messbar am Pin gesetzt, oder nur im Frontend?

Bevor ich mit den Kopf zerbreche:
geht es ohne define Eingang_mcp_20 RPI_GPIO 8 wieder?
Geht es ohne die Attribute Pullup und activelow?

Es währe gut zu wissen, bei welcher Änderung es nicht mehr geht.

Hallo Klaus,

hoffe du hast die Tage gut überstanden, ich bin auch in letzter Zeit überhaupt nicht mehr zu gekommen.

Bin jetzt mal in die Fhem.cfg, und habe unten alles rausgelöscht, jetzt steht nur noch folgendes drin:

define chip RPII2C 1
define mcp_20 I2C_MCP23017 0x20
attr mcp_20 IODev chip
attr mcp_20 OutputPorts A0,A1,A2,A3,A4,A5,A6,A7


#define Eingang_mcp_20 RPI_GPIO 12
#attr Eingang_mcp_20 direction input
#attr Eingang_mcp_20 interrupt rising


Aber selbst so wird der gesetzte Ausgang sofort zurückgenommen
2014.05.01 12:22:55 1: mcp_20 UpdReadings Register: 19, Inhalt: 0; RegA: 18, RegB: 19
2014.05.01 12:22:55 1: mcp_20 UpdReadings Register: 18, Inhalt: 0; RegA: 18, RegB: 19
2014.05.01 12:23:01 1: mcp_20 set regaddr: 12 inhalt: 20
2014.05.01 12:23:01 1: mcp_20 UpdReadings Register: 18, Inhalt: 32; RegA: 18, RegB: 19
2014.05.01 12:23:01 1: mcp_20 UpdReadings Register: 19, Inhalt: 0; RegA: 18, RegB: 19
2014.05.01 12:23:01 1: mcp_20 UpdReadings Register: 18, Inhalt: 0; RegA: 18, RegB: 19
2014.05.01 12:23:07 1: mcp_20 UpdReadings Register: 19, Inhalt: 0; RegA: 18, RegB: 19
2014.05.01 12:23:07 1: mcp_20 UpdReadings Register: 18, Inhalt: 0; RegA: 18, RegB: 19
2014.05.01 12:23:12 1: mcp_20 set regaddr: 12 inhalt: 02
2014.05.01 12:23:12 1: mcp_20 UpdReadings Register: 18, Inhalt: 2; RegA: 18, RegB: 19
2014.05.01 12:23:12 1: mcp_20 UpdReadings Register: 19, Inhalt: 0; RegA: 18, RegB: 19
2014.05.01 12:23:12 1: mcp_20 UpdReadings Register: 18, Inhalt: 0; RegA: 18, RegB: 19


Als Anhang nochmal ein Screenshot, von der Übersichtsseite des MCP, warum steht dort bei I2C-Address eine 32? Das ist aber richtig so, oder?


Also egal, welchen Ausgang ich setze, es wird sofort gekillt.

Wird noch in eine andere Datei außer der Fhem.cfg was geschrieben, weil ich habe keine Ahnung, wo der Fehler sonst liegen kann.

Ich wechsel mal kurz den MCP Chip, ob das klappt, und sonst danach noch den RPI, und wenns dann auch nicht ist, muss ja eingetlich irgendwo an der Software ein Fehler liegen.  :-[

Vielen Dank schonmal für die Unterstützung, und einen schönen ersten Mai noch.

:EDIT:
also den Chip habe ich getauscht, bringt jedenfalls keine Änderung, dann habe ich den Chip bzw. die Verbindungen alle getrennt, um zu sehen, ob er den Chip überhaupt erkennt bzw. anspricht, dann kommt beim Start auch sofort eine Fehlermeldung im Log

2014.05.01 12:59:03 3: mcp_20: failure in message from chip
2014.05.01 12:59:03 3: Direction: i2cread I2Caddress: 32 Register: 18 Data: undef received: undef


So, und jetzt noch eben den RPI getauscht, ist das selbe Spiel, der Ausgang wird ohne Verzögerung sofort deaktiviert. Bin jetzt kurz davor alles nochmal neu zu machen, weil irgendwann habe ich mal diese attribute oder define oder so übers WebInterface oben in die Zeile eingegeben. Vielleicht hat der irgendwo was hingeschrieben, dass es deshalb nicht mehr klappt....

Jetzt bin ich irgendwie noch Ratloser, als vorher

Gruß
Christian
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: klausw am 01 Mai 2014, 18:21:04
Hallo Christian,

in Deiner config kann ich keinen Fehler erkennen.

Verändere erstmal nix, ich vermute, das der Fehler im Modul liegt. Es gibt keine andere Config, es sei denn Du hast die in der fhem.cfg eingebunden.

Zitat von: IPPhoner2b am 01 Mai 2014, 12:34:21
Als Anhang nochmal ein Screenshot, von der Übersichtsseite des MCP, warum steht dort bei I2C-Address eine 32? Das ist aber richtig so, oder?
32 ist eine Dezimalzahl und entspricht Hexadezimal 0x20

Wenn bei SENDSTAT ok stehe, dann antwortet der MCP auch...also die Kommunikation ist in Ordnung.

Versuche mal folgendes:

ausserdem kannst Du mal mit i2cread auf der Konsole schauen, was in den ersten 2 Registern vom MCP steht.
Ich vermute, die Ports werden nicht auf Output gesetzt....warum auch immer.

Grüße
Klaus
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: hajo23 am 02 Mai 2014, 00:57:52
Hallo,

ich beschäftige mich seit Kurzem auch mit dem Modul für den MCP23017 von Klaus. Ich habe aber das Problem, dass der Chip nicht korrekt initialisiert wird.
"attr mcp_20 OutputPorts A0,A1,A2,A3,A4,A5,A6,A7" wird beim Start vermutlich nicht übertragen. Wenn ich das Attribut nochmals über die Eingabezeile schiebe, dann läuft alles.

Nach dem Start steht Folgendes im log:
2014.05.02 00:24:19 5: chip: vom client empfangen|direction: i2cwrite|reg: 0|data: 0|i2caddress:
2014.05.02 00:24:19 5: chip: vom client empfangen|direction: i2cwrite|reg: 1|data: 0|i2caddress:

Grüße,
Hajo
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: klausw am 02 Mai 2014, 13:58:14
Zitat von: hajo23 am 02 Mai 2014, 00:57:52
ich beschäftige mich seit Kurzem auch mit dem Modul für den MCP23017 von Klaus. Ich habe aber das Problem, dass der Chip nicht korrekt initialisiert wird.
.....
Nach dem Start steht Folgendes im log:
2014.05.02 00:24:19 5: chip: vom client empfangen|direction: i2cwrite|reg: 0|data: 0|i2caddress:
2014.05.02 00:24:19 5: chip: vom client empfangen|direction: i2cwrite|reg: 1|data: 0|i2caddress:

Das ist ein Fehler im Modul. Irgendwie werden die Attribute gesendet, bevor die I2C Adresse im Hash abgelegt wird.
Wesshalb was so ist weiss ich nicht, im define wird die Adresse schließlich angegeben. Ich bin an dem Thema dran...
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: IPPhoner2b am 02 Mai 2014, 14:08:21
Hallo Klaus,

also habe grade deine Anleitung befolgt *g*, und es hat auf Anhieb funktioniert, hier das Log:

2014.05.02 14:05:42 0: Server started with 11 defined entities (version $Id: fhem.pl 5705 2014-04-30 10:26:25Z rudolfkoenig $, os linux, user fhem, pid 1963)
2014.05.02 14:06:01 5: chip: vom client empfangen|direction: i2cwrite|reg: 0|data: 0|i2caddress: 32
2014.05.02 14:06:01 5: chip: HWaccess I2CAddr: 20
2014.05.02 14:06:01 5: chip; Register 00 schreiben - Inhalt: 00 Returnvar.: 0
2014.05.02 14:06:01 5: chip ->Client gefunden: mcp_20, I2Caddress: 32
2014.05.02 14:06:01 3: mcp_20: failure in message from chip
2014.05.02 14:06:01 3: Direction: i2cwrite I2Caddress: 32 Register: 0 Data: 0 received: undef
2014.05.02 14:06:01 5: chip: vom client empfangen|direction: i2cwrite|reg: 1|data: 255|i2caddress: 32
2014.05.02 14:06:01 5: chip: HWaccess I2CAddr: 20
2014.05.02 14:06:01 5: chip; Register 01 schreiben - Inhalt: FF Returnvar.: 0
2014.05.02 14:06:01 5: chip ->Client gefunden: mcp_20, I2Caddress: 32 Data: 255
2014.05.02 14:06:01 1: mcp_20 UpdReadings Register: 1, Inhalt: 255; RegA: 18, RegB: 19
2014.05.02 14:06:13 5: chip: vom client empfangen|direction: i2cread|nbyte: 2|reg: 18|i2caddress: 32
2014.05.02 14:06:13 5: chip: HWaccess I2CAddr: 20
2014.05.02 14:06:13 5: chip; Register 12 lesen - Inhalt: 00
2014.05.02 14:06:13 5: chip; Register 13 lesen - Inhalt: 00
2014.05.02 14:06:13 5: chip ->Client gefunden: mcp_20, I2Caddress: 32
2014.05.02 14:06:13 1: mcp_20 UpdReadings Register: 19, Inhalt: 0; RegA: 18, RegB: 19
2014.05.02 14:06:13 1: mcp_20 UpdReadings Register: 18, Inhalt: 0; RegA: 18, RegB: 19
2014.05.02 14:06:19 1: mcp_20 set regaddr: 12 inhalt: 08
2014.05.02 14:06:19 5: chip: vom client empfangen|direction: i2cwrite|reg: 18|data: 8|i2caddress: 32
2014.05.02 14:06:19 5: chip: HWaccess I2CAddr: 20
2014.05.02 14:06:19 5: chip; Register 12 schreiben - Inhalt: 08 Returnvar.: 0
2014.05.02 14:06:19 5: chip ->Client gefunden: mcp_20, I2Caddress: 32 Data: 8
2014.05.02 14:06:19 1: mcp_20 UpdReadings Register: 18, Inhalt: 8; RegA: 18, RegB: 19
2014.05.02 14:06:19 5: chip: vom client empfangen|direction: i2cread|nbyte: 2|reg: 18|i2caddress: 32
2014.05.02 14:06:19 5: chip: HWaccess I2CAddr: 20
2014.05.02 14:06:19 5: chip; Register 12 lesen - Inhalt: 08
2014.05.02 14:06:19 5: chip; Register 13 lesen - Inhalt: 00
2014.05.02 14:06:19 5: chip ->Client gefunden: mcp_20, I2Caddress: 32
2014.05.02 14:06:19 1: mcp_20 UpdReadings Register: 19, Inhalt: 0; RegA: 18, RegB: 19
2014.05.02 14:06:19 1: mcp_20 UpdReadings Register: 18, Inhalt: 8; RegA: 18, RegB: 19


Mit der Console, meintest du da I2Cget, oder I2Cread? Weil Read kenne ich und das System nicht  ::)

:EDIT ist wieder da:

Habe danach die Config gespeichert, also dass das mit Verbose 5 da drin steht, und habe neu gestartet, ohne die Ausgänge extra neu zu definieren. Dann klappt es wieder nicht, hier davon das log

2014.05.02 14:10:06 0: Server started with 11 defined entities (version $Id: fhem.pl 5705 2014-04-30 10:26:25Z rudolfkoenig $, os linux, user fhem, pid 1949)
2014.05.02 14:10:12 5: chip: vom client empfangen|direction: i2cread|nbyte: 2|reg: 18|i2caddress: 32
2014.05.02 14:10:12 5: chip: HWaccess I2CAddr: 20
2014.05.02 14:10:12 5: chip; Register 12 lesen - Inhalt: 00
2014.05.02 14:10:12 5: chip; Register 13 lesen - Inhalt: 00
2014.05.02 14:10:12 5: chip ->Client gefunden: mcp_20, I2Caddress: 32
2014.05.02 14:10:12 1: mcp_20 UpdReadings Register: 19, Inhalt: 0; RegA: 18, RegB: 19
2014.05.02 14:10:12 1: mcp_20 UpdReadings Register: 18, Inhalt: 0; RegA: 18, RegB: 19
2014.05.02 14:10:21 1: mcp_20 set regaddr: 12 inhalt: 04
2014.05.02 14:10:21 5: chip: vom client empfangen|direction: i2cwrite|reg: 18|data: 4|i2caddress: 32
2014.05.02 14:10:21 5: chip: HWaccess I2CAddr: 20
2014.05.02 14:10:21 5: chip; Register 12 schreiben - Inhalt: 04 Returnvar.: 0
2014.05.02 14:10:21 5: chip ->Client gefunden: mcp_20, I2Caddress: 32 Data: 4
2014.05.02 14:10:21 1: mcp_20 UpdReadings Register: 18, Inhalt: 4; RegA: 18, RegB: 19
2014.05.02 14:10:21 5: chip: vom client empfangen|direction: i2cread|nbyte: 2|reg: 18|i2caddress: 32
2014.05.02 14:10:21 5: chip: HWaccess I2CAddr: 20
2014.05.02 14:10:21 5: chip; Register 12 lesen - Inhalt: 00
2014.05.02 14:10:21 5: chip; Register 13 lesen - Inhalt: 00
2014.05.02 14:10:21 5: chip ->Client gefunden: mcp_20, I2Caddress: 32
2014.05.02 14:10:21 1: mcp_20 UpdReadings Register: 19, Inhalt: 0; RegA: 18, RegB: 19
2014.05.02 14:10:21 1: mcp_20 UpdReadings Register: 18, Inhalt: 0; RegA: 18, RegB: 19


:Nochmals:
So, habe auf der Console I2Cget 1 0x20 eingegeben, und habe als Antwort 0x04 erhalten, als ich dann in Fhem die Ausgänge nochmals definiert habe, so wie "Hajo23" auch schrieb, ging sofort die LED an, und auf der Webseite stand sofort dass der Ausgang gesetzt wurde

Habe nochmal nach einem Neustart die Register 0x00 und 0x01 ausgelesen, diese waren beide wieder bei 0xff, nachdem die Ports wieder in Fhem zugeordnet wurden, stand 0x00 auf 0x00  ;D

Gruß
Christian
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: klausw am 03 Mai 2014, 01:04:48
hier (http://forum.fhem.de/index.php/topic,23164.0.html) ist eine Neue Version des MCP23017 Moduls

Bitte dort weiterdiskutieren.

Dieser Thread sollte dem Modul für die Pi GPIOs vorbehalten sein.
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: linusd am 03 Mai 2014, 09:00:42
Mein Fehler ist mit der neuen Version des Moduls behoben.
Ich habe meine funktionieren Beispielkonfiguration hier (http://forum.fhem.de/index.php/topic,23164.msg164846.html#msg164846) bereitgestellt.
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: Hoeness am 10 Juli 2014, 10:38:56
Hallo,

Ich benutze das GPIO Moul bereits zum einlesen von Tastern. Das funktioniert auch super.

Jetzt bin ich auf der Suche nach einer Lösung für das Erkennen eines Longpress eines Tasters.

Die Suchfunktion hat mich da nicht wirklich weiter gebracht.

Kann mir da jemand weiterhelfen. Link zu einer Beschreibung bzw. Code-Bsps wären top.

Danke

Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: klausw am 10 Juli 2014, 12:21:39
Zitat von: Hoeness am 10 Juli 2014, 10:38:56
Hallo,

Ich benutze das GPIO Moul bereits zum einlesen von Tastern. Das funktioniert auch super.

Jetzt bin ich auf der Suche nach einer Lösung für das Erkennen eines Longpress eines Tasters.

Die Suchfunktion hat mich da nicht wirklich weiter gebracht.

Kann mir da jemand weiterhelfen. Link zu einer Beschreibung bzw. Code-Bsps wären top.

Danke
Schau dir mal readingsproxy an.
Das könnte was für dich sein.
Wenn interrupt auf both gesetzt ist dann wird bei langem Tastendruck bereits das reading longpress gesetzt.
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: einnordlicht am 21 Juli 2014, 13:46:30
Hallo,
ich moechte gerne ueber mein FHEM auf dem Raspberry PI den Brennersuastnd meiner Heizung ueberwachen. Um nicht auf Loesungen wie der modifizierten MAX Sensoren auszuweichen, habe ich es mit einer pragmatischen Loesung versucht und einfach ein altes Steckernetzteil (Handyladegeraet) parallel zum Betriebsstundenzaehlerausgang der Heizung gelegt. Der bekommt - wenn der Brenner laeuft - 230 V und erzeugt ein 5V Gleicspannungssignal, und liefert nchts wenn der Brenner aus ist. MIt einer Widerstandskaskade wurden die 5V auf die fuer GPIO ports erlaubten 3.3V gebracht und an GPIO 23 angegeschlossen. Und parallel zur Widerstandskaskade wurde noch ein 1,5k Widerstand gelegt, damit das Netzteil nach ausschalten in weniger als einer Sekunde keine Signifikante Spannung liefert.   
Hier die Settings


Dann habe ich erst mit GPIO24 einen Test gemacht
define Heizung RPI_GPIO 23
attr Heizung direction input
attr Heizung interrupt both
attr Heizung pud_resistor down
attr Heizung restoreOnStartup yes
attr Heizung room GPIO

define Heizung_FileLog FileLog ./log/Heizung-%Y.log Heizung
attr Heizung_FileLog logtype text
attr Heizung_FileLog room GPIO

Der auf output gestellte GPIO Port24 wurde mit 6k Widerstand direkt an GPIO 23 angeschlossen und je nach Zustand folgt der Heizungsstatus dem Port 24.
Nachdem ich aber das mit der Heizung verkoppelte Netzteil an Port angeschlossen habe, bekomme ich  ich aber nicht nur Wechsel ein / aus, sondern eine Kaskade von off:
2014-07-21_12:30:28 Heizung Pinlevel: low
2014-07-21_12:30:28 Heizung off
2014-07-21_12:30:46 Heizung Pinlevel: high
2014-07-21_12:30:46 Heizung on
2014-07-21_12:30:57 Heizung Pinlevel: low
2014-07-21_12:30:57 Heizung off
2014-07-21_12:31:34 Heizung Pinlevel: low
2014-07-21_12:31:34 Heizung off
2014-07-21_12:31:58 Heizung Pinlevel: low
2014-07-21_12:31:58 Heizung off
2014-07-21_12:32:03 Heizung Pinlevel: low
2014-07-21_12:32:03 Heizung off
2014-07-21_12:32:03 Heizung Pinlevel: low
2014-07-21_12:32:03 Heizung off
2014-07-21_12:32:03 Heizung Pinlevel: low
2014-07-21_12:32:03 Heizung off
2014-07-21_12:32:03 Heizung Pinlevel: low
2014-07-21_12:32:03 Heizung off
2014-07-21_12:32:03 Heizung Pinlevel: low
2014-07-21_12:32:03 Heizung off
2014-07-21_12:32:03 Heizung Pinlevel: low
2014-07-21_12:32:03 Heizung off
2014-07-21_12:32:04 Heizung Pinlevel: low
2014-07-21_12:32:04 Heizung off
2014-07-21_12:32:04 Heizung Pinlevel: low
2014-07-21_12:32:04 Heizung off
2014-07-21_12:32:04 Heizung Pinlevel: low
2014-07-21_12:32:04 Heizung off
2014-07-21_12:32:04 Heizung Pinlevel: low
2014-07-21_12:32:04 Heizung off
2014-07-21_12:32:04 Heizung Pinlevel: low
2014-07-21_12:32:04 Heizung off
2014-07-21_12:32:04 Heizung Pinlevel: low
2014-07-21_12:32:04 Heizung off
2014-07-21_12:32:04 Heizung Pinlevel: low
2014-07-21_12:32:04 Heizung off
2014-07-21_12:32:04 Heizung Pinlevel: low
2014-07-21_12:32:04 Heizung off
2014-07-21_12:32:04 Heizung Pinlevel: low
2014-07-21_12:32:04 Heizung off
2014-07-21_12:32:04 Heizung Pinlevel: low
2014-07-21_12:32:04 Heizung off
2014-07-21_12:32:04 Heizung Pinlevel: low
2014-07-21_12:32:04 Heizung off
2014-07-21_12:32:04 Heizung Pinlevel: low
2014-07-21_12:32:04 Heizung off
2014-07-21_12:32:04 Heizung Pinlevel: low
2014-07-21_12:32:04 Heizung off
2014-07-21_12:32:04 Heizung Pinlevel: low
2014-07-21_12:32:04 Heizung off
2014-07-21_12:32:04 Heizung Pinlevel: low
2014-07-21_12:32:04 Heizung off
2014-07-21_12:32:04 Heizung Pinlevel: low
2014-07-21_12:32:04 Heizung off
2014-07-21_12:32:04 Heizung Pinlevel: low
2014-07-21_12:32:04 Heizung off
2014-07-21_12:32:04 Heizung Pinlevel: low
2014-07-21_12:32:04 Heizung off
2014-07-21_12:32:04 Heizung Pinlevel: low
2014-07-21_12:32:04 Heizung off
2014-07-21_12:32:04 Heizung Pinlevel: low
2014-07-21_12:32:04 Heizung off
2014-07-21_12:32:04 Heizung Pinlevel: low
2014-07-21_12:32:04 Heizung off
2014-07-21_12:32:04 Heizung Pinlevel: low
2014-07-21_12:32:04 Heizung off
2014-07-21_12:32:04 Heizung Pinlevel: low
2014-07-21_12:32:04 Heizung off
2014-07-21_12:32:04 Heizung Pinlevel: low
2014-07-21_12:32:04 Heizung off
2014-07-21_12:32:04 Heizung Pinlevel: low
2014-07-21_12:32:04 Heizung off
2014-07-21_12:32:05 Heizung Pinlevel: low
2014-07-21_12:32:05 Heizung off
2014-07-21_12:32:05 Heizung Pinlevel: low
2014-07-21_12:32:05 Heizung off
2014-07-21_12:32:05 Heizung Pinlevel: low
2014-07-21_12:32:05 Heizung off
2014-07-21_12:32:05 Heizung Pinlevel: low
2014-07-21_12:32:05 Heizung off
2014-07-21_12:32:05 Heizung Pinlevel: low
2014-07-21_12:32:05 Heizung off
2014-07-21_12:32:05 Heizung Pinlevel: low
2014-07-21_12:32:05 Heizung off
2014-07-21_12:32:05 Heizung Pinlevel: low
2014-07-21_12:32:05 Heizung off
2014-07-21_12:32:05 Heizung Pinlevel: low
2014-07-21_12:32:05 Heizung off
2014-07-21_12:32:05 Heizung Pinlevel: low
2014-07-21_12:32:05 Heizung off
2014-07-21_12:32:05 Heizung Pinlevel: low
2014-07-21_12:32:05 Heizung off
2014-07-21_12:32:05 Heizung Pinlevel: low
2014-07-21_12:32:05 Heizung off
2014-07-21_12:32:06 Heizung Pinlevel: low
2014-07-21_12:32:06 Heizung off
2014-07-21_12:32:06 Heizung Pinlevel: low
2014-07-21_12:32:06 Heizung off
2014-07-21_12:32:07 Heizung Pinlevel: low
2014-07-21_12:32:07 Heizung off
2014-07-21_12:32:07 Heizung Pinlevel: low
2014-07-21_12:32:07 Heizung off
2014-07-21_12:32:09 Heizung Pinlevel: low
2014-07-21_12:32:09 Heizung off
2014-07-21_12:32:09 Heizung Pinlevel: low
2014-07-21_12:32:09 Heizung off
2014-07-21_12:32:10 Heizung Pinlevel: low
2014-07-21_12:32:10 Heizung off
2014-07-21_12:32:10 Heizung Pinlevel: low
2014-07-21_12:32:10 Heizung off
2014-07-21_12:32:10 Heizung Pinlevel: low
2014-07-21_12:32:10 Heizung off
2014-07-21_12:32:11 Heizung Pinlevel: low
2014-07-21_12:32:11 Heizung off
2014-07-21_12:32:11 Heizung Pinlevel: low
2014-07-21_12:32:11 Heizung off
2014-07-21_12:32:12 Heizung Pinlevel: low
2014-07-21_12:32:12 Heizung off
2014-07-21_12:32:12 Heizung Pinlevel: low
2014-07-21_12:32:12 Heizung off
2014-07-21_12:32:12 Heizung Pinlevel: low
2014-07-21_12:32:12 Heizung off
2014-07-21_12:32:12 Heizung Pinlevel: high
2014-07-21_12:32:12 Heizung on
2014-07-21_12:34:17 Heizung Pinlevel: high
2014-07-21_12:34:17 Heizung on
2014-07-21_12:34:17 Heizung Pinlevel: low
2014-07-21_12:34:17 Heizung off
2014-07-21_12:48:47 Heizung Pinlevel: low

Zur Erlauterung: die ersten 3 Schaltungen (12:30) waren der Test mit GPIO24. Die weiteren Eintraege entstanden, als die Heizung ansprang und die 3.3V am GPIO23 anlagen. Erst nach 40 Sekunden war zwei "on" MEsswerte zu sehen. Erst dachte ich, dass auf dem Eingang viele Unterbrechungen liegen, aber dann haetten doch auch immer high/low bzw. on/off im Wechsel erfolgen muessen, oder?  Auch mit gpiscope gemessen  zeigt GPIO23 nur high values und keine Einbrueche (die ggf. theoretisch schneller erfolgen koennen als gpiscope aufloesen kann. 
Was kann es noch sein, dass diese vielen low messwerte erzeugt?
Gruss vom Nordlich aus Koelle 
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: klausw am 21 Juli 2014, 15:37:12
Zitat von: einnordlicht am 21 Juli 2014, 13:46:30
Zur Erlauterung: die ersten 3 Schaltungen (12:30) waren der Test mit GPIO24. Die weiteren Eintraege entstanden, als die Heizung ansprang und die 3.3V am GPIO23 anlagen. Erst nach 40 Sekunden war zwei "on" MEsswerte zu sehen. Erst dachte ich, dass auf dem Eingang viele Unterbrechungen liegen, aber dann haetten doch auch immer high/low bzw. on/off im Wechsel erfolgen muessen, oder?  Auch mit gpiscope gemessen  zeigt GPIO23 nur high values und keine Einbrueche (die ggf. theoretisch schneller erfolgen koennen als gpiscope aufloesen kann. 
Was kann es noch sein, dass diese vielen low messwerte erzeugt?
Gruss vom Nordlich aus Koelle

Zusammengefasst funktioniert es, wenn Du den GPIO24 als Quelle nutzt, aber nicht mit dem Netzteil als Quelle. Richtig?

Deine Konfiguration ist soweit richtig (restoreOnStartup sollte last sein, aber yes funktioniert im mom auch noch)

Ich teile Deine Vermutung, das gpioscope (ist das eine SW Lösung, die direkt auf dem Pin misst?) wird zu langsam sein.
Kannst Du mit einem richtigen Oszi nachmessen?
Die Tatsache, das Du immer nur low misst legt nahe, das auf der Leitung Glitches drauf sind. Ist die Leitung zum Brenner lang?
Ein Glitch kann Problemlos einen Interrupt auslösen. Beim Messen am GPIO ist die Spannung dann aber schon wieder normal
Ein Tiefpass könnte da helfen (oder auch das Attribut event_on_change_reading .... aber das ist in diesem Fall sehr unsauber, da die permanenten Interrups das System auslasten).
Das mit den ersten High Werten nach 40s verstehe ich nicht. Kommen die 40s zu spät?

Mit Widerstandskaskade meinst Du sicher Spannungsteiler...allerdings wir Dir ein dazu parallesgeschalteter Widerstand das Teilungsverhältnis verbiegen. Es ist besser, den Spannungsteiler einfach niederohmiger zu machen.

Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: einnordlicht am 21 Juli 2014, 21:53:37
ZitatZusammengefasst funktioniert es, wenn Du den GPIO24 als Quelle nutzt, aber nicht mit dem Netzteil als Quelle. Richtig?
Korrekt. Alles sauber, jeder Schaltvorgang fuehrt zu einem Interrupt und einem korrektem Status.

ZitatIch teile Deine Vermutung, das gpioscope (ist das eine SW Lösung, die direkt auf dem Pin misst?) wird zu langsam sein.
Kannst Du mit einem richtigen Oszi nachmessen?
Habe ich leider nicht. piscope ist von der http://abyz.co.uk/rpi/pigpio (http://abyz.co.uk/rpi/pigpio) Seite und ist eigentlich ganz gut, aber wahrscheinlich nicht gut genug...
Mal sehen, vielleicht setze ich sicherheits/probehalber einen kleinen Glaettungskondensator daneben.
Die Leitung zum Brenner ist 30cm zum Netzgeraet und dann 80cm zum Raspberry. Sollte eigentlich ok sein.Wenn ich es testweise direkt einschalte, ist die Spannung instantan da, beim Abschalten verschwindet die Restspannung innerhalb von  0,5sec (alledings am Digitalvoltmeter, denen sieht man das ja nicht so doll an). Aber 40 sec und so 50 ueberfluessige Flanken halte ich  beim Einschalten fuerkein gutes Signal,   zumal ich dann dann noch das Betriebsstundenzaehler Plugin damit betreiben moechte.

Ach ja, tschuldigung, ich meinte in der Tat  Spannungsteiler. Ich hatte aber nur 5  Stueck zu 1,5k zur Hand und wollte 5:3 Teilen, also 5 in Reihe und bei 3 abgegriffen. Danke fuer den Hinweis, aber so wie ich die Ohmschen Gesetze erinnere,  verbiegt ein dazu (also zu allen 5 in Reihe geschalteter Widerstaend) parallelgeschalteter Widerstand  nicht den Spannungsteiler, sondern senkt nur den Gesamtwiderstand:
Ein Zweig mit 5 in Serie 1.5 hat 5 * 1,5 =7.5k. Parallel dazu einen 1.5k macht Gesamt 1.25k  (1/Rges = 1/R1 + 1/R2)... ;) (ich hoffe, da habe ich mich jetzt nicht voellig blamiert, aber ich war so erstaunt, dass ich fast 30 Jahre spaeter es noch wusste)

Vielen Dank fuer die schnelle Antwort und noch mehr fuer die Erstellung des Plugin!
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: klausw am 21 Juli 2014, 22:17:26
Zitat von: einnordlicht am 21 Juli 2014, 21:53:37
Korrekt. Alles sauber, jeder Schaltvorgang fuehrt zu einem Interrupt und einem korrektem Status.
Habe ich leider nicht. piscope ist von der http://abyz.co.uk/rpi/pigpio (http://abyz.co.uk/rpi/pigpio) Seite und ist eigentlich ganz gut, aber wahrscheinlich nicht gut genug...
Gut für mich...dann liegt es schonmal nicht am Modul ;)

Zitat von: einnordlicht am 21 Juli 2014, 21:53:37
Mal sehen, vielleicht setze ich sicherheits/probehalber einen kleinen Glaettungskondensator daneben.
Die Leitung zum Brenner ist 30cm zum Netzgeraet und dann 80cm zum Raspberry. Sollte eigentlich ok sein.Wenn ich es testweise direkt einschalte, ist die Spannung instantan da, beim Abschalten verschwindet die Restspannung innerhalb von  0,5sec (alledings am Digitalvoltmeter, denen sieht man das ja nicht so doll an). Aber 40 sec und so 50 ueberfluessige Flanken halte ich  beim Einschalten fuerkein gutes Signal,   zumal ich dann dann noch das Betriebsstundenzaehler Plugin damit betreiben moechte.
Ich habe keine Ahnung, wie der Brenner aufgebaut ist. Aber vielleicht gibt es so eine Art Testpulse, die überprüfen, ob ein Brenner angeschlossen ist. Die könnten dann natürlich überkoppeln. Schließlich ist der Anschluss ausschließlich für einen Brenner gedacht. Das Netzteil an sich sollte ja bereits eine Glättung besitzen.
Alternativ könntest Du einen Optokoppler verwenden. Der Aufwand ist nur geringfügig größer.

Zitat von: einnordlicht am 21 Juli 2014, 21:53:37
Ach ja, tschuldigung, ich meinte in der Tat  Spannungsteiler. Ich hatte aber nur 5  Stueck zu 1,5k zur Hand und wollte 5:3 Teilen, also 5 in Reihe und bei 3 abgegriffen. Danke fuer den Hinweis, aber so wie ich die Ohmschen Gesetze erinnere,  verbiegt ein dazu (also zu allen 5 in Reihe geschalteter Widerstaend) parallelgeschalteter Widerstand  nicht den Spannungsteiler, sondern senkt nur den Gesamtwiderstand:
Ein Zweig mit 5 in Serie 1.5 hat 5 * 1,5 =7.5k. Parallel dazu einen 1.5k macht Gesamt 1.25k  (1/Rges = 1/R1 + 1/R2)... ;) (ich hoffe, da habe ich mich jetzt nicht voellig blamiert, aber ich war so erstaunt, dass ich fast 30 Jahre spaeter es noch wusste)
Das hast Du Dir gut gemerkt :D. Ich hatte es so verstanden, das die zusätzlichen 1,5k direkt am GPIO angebracht sind.
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: einnordlicht am 21 Juli 2014, 22:42:19
Ach ja, was so 50 oder 100 microF doch die Wogen glaetten koennen. Nach dem ich eine alte IDE  Bus Ethernetkarte geschlacht und um   einen Kondensator beraubt habe (Ich muss mich echt mal wieder eine Restekiste zulegen),  der dann parallel zum 5V Ausgang gelegt wurde, funzt der Geber genauso wie er  sollte: pro Ein / Ausschaltvorgang ein Signal.
Also alles super, nix mecker am Modul!  Ein rauf mit Mappes. Und ein zufriedener Nutzer mehr.

Ich muss mir mal die Struktur dieser Module anschauen, vielleicht kann ich ja auch mal etwas der Gemeinschaft zurueckliefern.

Und wie gesagt: nach dem die Daten sauber reinkommen, kann ich mich mit dem Betriebstundenzaehler Plugin an die Statistik und die Graphen machen.

Gruss aus Koelle vom Nordlicht (bei dem Wetter mit Heimweh)
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: backbone10 am 29 Oktober 2014, 18:12:20
Hi,
kann mir hier bitte jemand weiterhelfen ? Ich verwende das GPIO Modul Interruptgesteuert um die Ereignisse mit dem Hourcounter auszuwerten. Geht auch sehr gut, allerdings sind die Plots nie aktuell , weil oft zu lange keine Ereignisse stattgefunden haben. Der Hourcounter reagiert nur auf on off..Wie kann ich es anstellen, dass das letzte "on" oder "off" regelmässig wiederholt wird z.b. alle 15 minuten und um 23:59....Mit dem Attribut poll intervall gehts leider nicht...Mit dem addlog habe ich es auch nicht hinbekommen

Für den Fall dass ich mich undeutlich ausgedrückt habe, kopiere ich die relevanten Teile der fhem.cfg hinein...

mit bestem Dank

Tom


define Pin18 RPI_GPIO 24
attr Pin18 active_low yes
attr Pin18 alias BRENNER
attr Pin18 debounce_in_ms 250
attr Pin18 devStateIcon on.*:icoHEIZUNG off.*:icoHeizungAn
attr Pin18 direction input
attr Pin18 interrupt both
attr Pin18 pud_resistor off
attr Pin18 restoreOnStartup yes


define CN.BRENNER HourCounter Pin18:on Pin18:off
define SHUTTER.BRENNER.event notify SHUTTER.BRENNER:onoff.*  { appHCNotify("%NAME","%EVTPART0","%EVTPART1");;}

define SVG_FileLog_SHUTTER.BRENNER SVG FileLog_SHUTTER.BRENNER:SVG_FileLog_SHUTTER.BRENNER:CURRENT
define SVG_CN.BRENNER.FileDay SVG CN.BRENNER.FileDay:SVG_CN.BRENNER.FileDay:CURRENT


Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: klausw am 03 November 2014, 12:35:48
Hallo Tom,

Zitat von: backbone10 am 29 Oktober 2014, 18:12:20
Wie kann ich es anstellen, dass das letzte "on" oder "off" regelmässig wiederholt wird z.b. alle 15 minuten und um 23:59....Mit dem Attribut poll intervall gehts leider nicht...Mit dem addlog habe ich es auch nicht hinbekommen

Was wird in dem Plot angezeigt? Die kummulierten Betriebsstunden, oder einfach die An-Aus-Zeiten?
Das Attribut poll_intervall erzeugt im angegebenen Intervall ein Ereignis, aber wenn der HourCounter dies filtert, müsstest Du auch bei diesem Modul ansetzen.
Wenn Du nur die An-Aus-Zeiten visualisieren möchtest dann kannst Du das auch direkt von Deinem Pin18 machen. Dann funktioniert auch poll_intervall

Grüße
Klaus
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: Ralli am 03 November 2014, 15:12:30
Hallo,

nun bräuchte ich hier auch bitte mal kurz Hilfe. Ich überwache einen schnurgebundenen Kontakt wie folgt:


define PIN18 RPI_GPIO 18
attr PIN18 active_low no
attr PIN18 direction input
attr PIN18 eventMap low:open high:closed
attr PIN18 interrupt both
attr PIN18 restoreOnStartup yes
attr PIN18 stateFormat Pinlevel


Funktioniert einwandfrei. Jedes Öffnen und Schließen löst einen Event aus, ausgewertet wird der Pinlevel, der auf open/closed gemapt wird.

Mein Problem: das restoreOnStartup. Ich möchte, dass beim Startup eben nicht einfach was zurückgeschrieben wird sondern anhand des tatsächlichen Pinlevels neu gesetzt wird. Es könnte ja sein, dass während der Down-Zeit von fhem eine Zustandsänderung eingetreten ist. Um diese festzustellen, müsste beim Start von fhem bzw. besser beim Initialisieren des Devices ein set <dev> readValue Pinlevel ausgeführt werden.

Je nachdem, was ich bei restoreOnStartup einstelle, in der jetzigen Modul-Version (bzw. bei meiner o.a. Konfiguration) werden nach einem fhem-Neustart bei einer Zustandsänderung zwar die Readings aktualisiert, nicht jedoch das Internal STATE.

Was kann ich tun?
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: backbone10 am 03 November 2014, 20:41:59
Hallo Klaus,
danke dass du mir auch diesmal weiterhilfst. Im Plot zeigt er ab dem letzten off Ereignis gar nichts mehr an, der Plot wir erst beim nächsten ON Ereignis wieder aktualisiert und die Daten für die Zeit dazwischen "nachgezeichnet". Daher hat auch das poll intervall nicht geholfen, er hat ja nur wieder "OFF" reported, und das motiviert den Hour Counter nicht zum weiterarbeiten. Ich denke das kann man - so wie du es gesagt hast - nur im Hour Counter lösen...

Danke jedenfalls nochmals

Grüße

Tom



Zitat von: klausw am 03 November 2014, 12:35:48
Hallo Tom,

Was wird in dem Plot angezeigt? Die kummulierten Betriebsstunden, oder einfach die An-Aus-Zeiten?
Das Attribut poll_intervall erzeugt im angegebenen Intervall ein Ereignis, aber wenn der HourCounter dies filtert, müsstest Du auch bei diesem Modul ansetzen.
Wenn Du nur die An-Aus-Zeiten visualisieren möchtest dann kannst Du das auch direkt von Deinem Pin18 machen. Dann funktioniert auch poll_intervall

Grüße
Klaus
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: klausw am 06 November 2014, 13:02:39
Zitat von: Ralli am 03 November 2014, 15:12:30
Je nachdem, was ich bei restoreOnStartup einstelle, in der jetzigen Modul-Version (bzw. bei meiner o.a. Konfiguration) werden nach einem fhem-Neustart bei einer Zustandsänderung zwar die Readings aktualisiert, nicht jedoch das Internal STATE.

Was kann ich tun?

Pobiere mal angehängte Version aus.
restoreOnStartup ist für normale Eingänge meiner Meinung nach nicht notwendig
Ich habe das Modul erweitert, das für Inputs (die toggletostate nicht nutzen) beim starten automatisch der aktuelle Wert vom Pin übernommen wird.
Wenn es funktioniert werde ich es einchecken.

Grüße
Klaus
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: Ralli am 06 November 2014, 13:30:25
Herzlichen Dank, dass Du Dich der Sache annimmst!

Habe die 51_RPI_GPIO ersetzt, dann fhem gestoppt, nach dem Stoppen eine Alarmschleife unterbrochen und dann fhem neu gestartet.

Die Readings sind aktualisiert, leider aber nicht das Internal STATE. Anbei ein Bildschirmfoto, auf dem man sieht, dass STATE und state nicht zusammen passen - dazu muss man allerdings noch wissen, dass ich den STATE wie folgt definiere:


attr GPIO21 stateFormat {ReadingsVal("GPIO21","Pinlevel",0) eq "low" ? "open" : "closed"}


... also wenn Strom anliegt, Pinlevel high, dann ist die Schleife geschlossen und STATE closed. Wenn kein Strom anliegt, Pinlevel low, dann ist Schleife unterbrochen und STATE open.

Edit:
Das tritt umgekehrt auch auf, wenn ich fhem stoppe, eine zuvor unterbrochene Alarmschleife wieder schließe und dann fhem starte.

Edit2:
Führe ich dann manuell ein "set GPIO21 readValue Pinlevel" aus, liest er brav den tatsächlichen Pinlevel ein und setzt state/STATE.

Edit3:
Das steht im Logfile, wenn vor dem Beenden von fhem Pinlevel low, wenn fhem beendet Eingang beschalten, dann fhem starten:


2014.11.06 12:49:15 5: Cmd: >setstate GPIO21 closed<
2014.11.06 12:49:15 4: GPIO21: STATE kann auf closed wiederhergestellt werden 2014-11-06 12:49:15
2014.11.06 12:49:15 5: Cmd: >setstate GPIO21 2014-11-06 12:46:55 Longpress on<
2014.11.06 12:49:15 4: GPIO21: Longpress kann auf on wiederhergestellt werden 2014-11-06 12:46:55
2014.11.06 12:49:15 4: INPUT GPIO21: STATE von Pin lesen
2014.11.06 12:49:15 5: GPIO21, in fileaccess: value
2014.11.06 12:49:15 4: INPUT GPIO21: Pinwert ist: on
2014.11.06 12:49:15 5: Cmd: >setstate GPIO21 2014-11-06 12:48:20 Pinlevel low<
2014.11.06 12:49:15 4: GPIO21: Pinlevel kann auf low wiederhergestellt werden 2014-11-06 12:48:20
2014.11.06 12:49:15 4: INPUT GPIO21: STATE von Pin lesen
2014.11.06 12:49:15 5: GPIO21, in fileaccess: value
2014.11.06 12:49:15 4: INPUT GPIO21: Pinwert ist: on
2014.11.06 12:49:15 5: Cmd: >setstate GPIO21 2014-11-06 12:47:46 state off<
2014.11.06 12:49:15 4: GPIO21: state kann auf off wiederhergestellt werden 2014-11-06 12:47:46
2014.11.06 12:49:15 4: INPUT GPIO21: STATE von Pin lesen
2014.11.06 12:49:15 5: GPIO21, in fileaccess: value
2014.11.06 12:49:15 4: INPUT GPIO21: Pinwert ist: on
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: klausw am 06 November 2014, 14:32:03
Zitat von: Ralli am 06 November 2014, 13:30:25
Herzlichen Dank, dass Du Dich der Sache annimmst!

Habe die 51_RPI_GPIO ersetzt, dann fhem gestoppt, nach dem Stoppen eine Alarmschleife unterbrochen und dann fhem neu gestartet.

Die Readings sind aktualisiert, leider aber nicht das Internal STATE. Anbei ein Bildschirmfoto, auf dem man sieht, dass STATE und state nicht zusammen passen - dazu muss man allerdings noch wissen, dass ich den STATE wie folgt definiere:


attr GPIO21 stateFormat {ReadingsVal("GPIO21","Pinlevel",0) eq "low" ? "open" : "closed"}



geht es denn, wenn Du das Attribut stateFormat löschst?
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: Ralli am 06 November 2014, 14:36:39
Ja, dann funktioniert es!

Allerdings generiert er keinen Event bzw. triggert nichts an.
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: klausw am 06 November 2014, 14:46:22
Dann sollte es auch so gehen:
attr GPIO21 stateFormat {state eq "off" ? "open" : "closed"}

Den Pinvalue könnte ich allerdings auch noch mit beim starten schreiben...
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: Ralli am 06 November 2014, 14:58:42
Nein, das gibt einen Fehler.

... leider wird bei der jetzigen Lösung beim initialen Setzen des Pinlevels auch kein Event getriggert.

Problem:
Wie gesagt, Alarmschleife. Wenn fhem läuft und auf einmal wird ein Pinlevel low bedeutet das, dass irgendwo ein Fenster aufgegangen ist. Kann ich wunderbar mit einem Notify oder DOIF abfangen. Wenn nun alles ordnungsgemäß geschlossen, dann ist fhem warum auch immer kurz offline und in der Zeit wird ein Fenster geöffnet, fhem startet wieder, dann wird jetzt der Status zwar aktuell ausgelesen und übernommen, jedoch wird kein Event generiert. Die Aktion auf ein plötzlich geöffnetes Fenster bleibt dann aus.

Ich kenne mich mit der Systematik von den Modulen und der fhem-Internas nicht aus. Aber ich würde es (laienhaft) so machen:

Beim Zurückschreiben der Werte in die Readings prüfen, ob der aktuelle Pinlevel (und damit ja auch state) von dem zurückzuschreibenden Wert abweicht. Wenn ja, nicht nur den aktuellen Wert schreiben sondern auch den Event triggern (gemäß dem interrupt-Attribut).
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: klausw am 06 November 2014, 16:12:09
Zitat von: Ralli am 06 November 2014, 14:58:42
Nein, das gibt einen Fehler.

... leider wird bei der jetzigen Lösung beim initialen Setzen des Pinlevels auch kein Event getriggert.

Mit an Sicherheit grenzender Wahrscheinlichkeit geht das so auch nicht. Im Grunde liegt kein Triggervent vor. Es wird einfach ein Zustand beim laden übernommen. Ich übergebe im Modul beim Starten die Werte an State genauso, wie auch im Interruptfall.
Beim hochfahren von FHEM werden vermutlich noch keine Events ausgelöst ...wie auch, es wird schließlich alles erst geladen.

Das triggern machst Du sicher über notify, oder?
Darauf habe ich keinen Einfluss, das läuft über die Mainloop.

Aber:
ich habe jetzt einen einmaligen Timer eingefügt, der macht 60s nach dem booten eine Leseaktion
schau mal, ob dir das hilft

Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: Ralli am 06 November 2014, 16:52:54
Danke.

Ich glaube, das ist der richtige Ansatz, kann es aber nun erst morgen probieren. Sollte es so noch nicht funktionieren, werde ich mal experimentieren, ob es mit dem einmaligen Timer klappt, OHNE das vorher der Pinlevel gemäß aktueller Überprüfung gesetzt wird (denn wenn Du gemäß aktuellem Auslesen die Readings setzt und danach nochmal einen Poll machst, ändern sich ja die Readings nicht mehr und damit würde u.U. dann ja auch kein Event ausgelöst. Aber, wie gesagt, dafür bin ich nicht tief genug im Code und der Systematik drin.

Ich gebe Rückmeldung!
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: klausw am 06 November 2014, 17:27:45
Der einmalige Timer ist schon im Modul selbst eingebaut. Das notify wird trotzdem ausgelöst, auch wenn sich der Wert nicht ändert. Das kannst Du auf der Detailseite vom GPIO sehen, wenn Du sie vor Ablauf der ersten Minute aufrufst.
Evtl.musst du dein Notify anpassen
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: Ralli am 07 November 2014, 10:00:08
Hallo Klaus,

ich habe das Modul wie beigefügt modifiziert.

Grundlegende Überlegung: Das Zurückschreiben von Readings nach fhem-Restart anhand des Statefiles ist m.E. bei einem als Input definierten GPIO unsinnig - ein Input wird halt nicht durch fhem beeinflusst sondern von extern.

Ich habe daher nun definiert, dass wenn restoreOnStartup auf no (oder off) steht (oder gar nicht definiert ist), ein Poll unmittelbar getimert wird. Bei einem direkten Funktionsaufruf werden keine Events generiert, bei einem getimerten Aufruf schon  ??? . Wenn restoreOnStartup auf yes (oder on) steht, werden die Readings anhand des aktuellen tatsächlich anliegenden Wertes aktualisiert und es werden KEINE Events ausgelöst. Ein klassisches Zurückschreiben durch das Statefile wird nicht vernichtet, wenn restoreOnStartup auf last steht.
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: klausw am 07 November 2014, 12:16:12
Zitat von: Ralli am 07 November 2014, 10:00:08
ich habe das Modul wie beigefügt modifiziert.

schaue gleich mal rein...
funktionierte denn meine Version nicht?

Zitat von: Ralli am 07 November 2014, 10:00:08
Grundlegende Überlegung: Das Zurückschreiben von Readings nach fhem-Restart anhand des Statefiles ist m.E. bei einem als Input definierten GPIO unsinnig - ein Input wird halt nicht durch fhem beeinflusst sondern von extern.
Jein, der Counter und der Toggle sollten wiederhergestellt werden.
Und wenn toggletostate gesetzt ist, dann natürlich auch state (soll schließlich eine Tasterfunktion nachbilden)

Zitat von: Ralli am 07 November 2014, 10:00:08
Ich habe daher nun definiert, dass wenn restoreOnStartup auf no (oder off) steht (oder gar nicht definiert ist), ein Poll unmittelbar getimert wird. Wenn restoreOnStartup auf yes (oder on) steht, werden die Readings anhand des aktuellen tatsächlich anliegenden Wertes aktualisiert und es werden KEINE Events ausgelöst. Ein klassisches Zurückschreiben durch das Statefile wird nicht vernichtet, wenn restoreOnStartup auf last steht.
restoreOnStartup hat du, vermute ich, falsch verstanden:
Ich werde die commandref dazu noch verfeinern.
Für Input sollte generell der Status am Pin hergezogen werden (ausser bei toggletostate)

Zitat von: Ralli am 07 November 2014, 10:00:08
Bei einem direkten Funktionsaufruf werden keine Events generiert, bei einem getimerten Aufruf schon  ??? .
die Events können beim FHEM sStart nicht geladen werden, da zur Ladzeit des Pins das dazugehörige notify noch nicht geladen ist. Daher läuft es ins leere. Der Timer verschiebt es einfach.
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: klausw am 07 November 2014, 12:17:47
Das auslesen über state ist sowieso mist -> wenn es kein statefile vorhanden ist dann wird es auch nciht ausgelöst
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: Ralli am 07 November 2014, 12:28:54
Zitat von: klausw am 07 November 2014, 12:16:12
schaue gleich mal rein...
funktionierte denn meine Version nicht?
Jein - nicht so, wie gewünscht bzw. nicht mit den jetzt eingebauten Möglichkeiten.

Zitat
Jein, der Counter und der Toggle sollten wiederhergestellt werden.
Und wenn toggletostate gesetzt ist, dann natürlich auch state (soll schließlich eine Tasterfunktion nachbilden)
Das habe ich auch so gelassen.

Zitat
restoreOnStartup hat du, vermute ich, falsch verstanden:

  • no -> kein wiederherstellen
  • off -> auf off wiederherstellen
  • on -> auf on wiederherstellen
  • last -> auf letzten wert
  • yes ist ein Überbleibsel aus Kompatibilitätsgründen (werde ich jetzt entfernen)
Nein, hab ich schon richtig verstanden, kann man aber m.M. nicht so auf GPIOs anwenden, die auf Input konfiguriert sind, da das einfach nicht "passt". Für einen Input bekommen die Einstellmöglichkeiten einfach andere Bedeutungen.

Zitat
Für Input sollte generell der Status am Pin hergezogen werden (ausser bei toggletostate)
Genau.

Zitat
die Events können beim FHEM sStart nicht geladen werden, da zur Ladzeit des Pins das dazugehörige notify noch nicht geladen ist. Daher läuft es ins leere. Der Timer verschiebt es einfach.
Ok!

Zitat
Das auslesen über state ist sowieso mist -> wenn es kein statefile vorhanden ist dann wird es auch nciht ausgelöst
Richtig! Das ist noch ein Manko.

Edit:
Ich habe aber noch eine andere Idee.

Die Funktion RPI_GPIO_State wird ja nach meinem Verständnis nur aufgerufen, wenn mittels Statefile die gespeicherten Readings/Stati zurückgeschrieben werden müssen.

Dann müsste eigentlich bei einem Input nur der zu setzende Wert mit dem tatsächlichen Pinlevel verglichen werden. Und nur wenn der abweicht, wird ein RPI_GPIO_Poll getimert.

So wie angehangen - ist aber noch nicht getestet!
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: klausw am 07 November 2014, 14:08:48
Das ist aber immer noch das gleiche Problem.
Wenn im Statefile keine state Variable für den Input existiert, dann wird die Stateroutine auch nicht aufgerufen.
Obwohl dann ist es halt so.
Ich könnte den Timer auch ins define verlegen. Allerdings trifft der Timer dann auch für Outputs zu. Das wiederum hat den NAchteil, das die Timestamp geändert wird. Diese sollte aber den letzten Schaltzeitpunkt zeigen.
Fazit, ich werde es in der Stateroutine lassen.
Was die restoreOnStartup Attribute betrifft, werde ich sie bei inputs ausschießlich für toggle verwenden.

Was ich noch nicht verstanden habe, wieso Du bei den Inputs einmal ein event auslösen möchtest und einmal nicht.

Es nur auszulösen, wenn gespeicherter Wert und reeller Wert unterschiedlich sind finde ich da sinnvoller.
(was das Dein Problem? Also das immer getriggert wurde, auch wenn sich der Wert nicht geändert hat?)
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: Ralli am 07 November 2014, 14:34:15
Ganz einfach:

Für mich ist es am sinnvollsten, wenn ein Event nur ausgelöst wird, wenn auch tatsächlich (in der Downzeit) eine Statusänderung stattgefunden hat.

Ich habe ein notify oder doif auf xy:open bzw. xy:off sitzen. Wenn das zur Laufzeit von fhem ausgelöst wurde, braucht es nicht neu ausgelöst werden, wenn dann fhem weg war und wieder kommt.

Ansonsten waren die in meiner ersten Version eingebauten Möglichkeiten eben nur Möglichkeiten für diejenigen, die warum auch immer so etwas brauchen. Denkbar: Normalerweise werden zur Laufzeit von fhem diverse Dinge über die Inputs getriggert. Wenn fhem nun down geht und wieder kommt und in der Zwischenzeit sich an den Inputs was getan hat, kann es ja sein, dass nicht jeder auf jeden Fall dann auch noch eine Aktion auslösen lassen möchte - während der Laufzeit von fhem aber sehr wohl.
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: klausw am 07 November 2014, 17:39:18
Soo, folgende Version übernimmt die Pinwerte. Wenn Pinwerte mit denen aus dem Statefile nicht übereinstimmen dann wird ein Timer gestartet um ein notify auslösen zu können. Sonst werden nur die Werte übernommen.
Das ganze funktioniert immer, wenn restoreOnStartup nicht "no" ist.
Schau mal obs so passt für dich

Lösche bitte Deine alten Modulvorschläge, die irritieren nur :)
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: Ralli am 07 November 2014, 18:11:53
Hallo Klaus,

das wird langsam ;) . Aber ich glaube, er hat im letzten elsif vor dem Vergleich und im letzten else den alten Wert nicht in $sval?
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: klausw am 07 November 2014, 18:18:54
Zitat von: Ralli am 07 November 2014, 18:11:53
Hallo Klaus,

das wird langsam ;) . Aber ich glaube, er hat im letzten elsif vor dem Vergleich und im letzten else den alten Wert nicht in $sval?
sollte schon, $sval wird vorher nicht neu geschrieben
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: fnord am 07 November 2014, 23:27:08
Hi zusammen,

ich betreibe FHEM auf einem BBB mit Debian und habe mir dafür das Relay Cape (http://www.logicsupply.de/beaglebone-black/boards-cases-capes/cbb-relay/) von Logic Supply geholt. Das steuere ich mit RPI_GPIO (und Wiring Pi) an, was für die Eingänge auch gut klappt. Die beiden Relais reagieren aber nicht - das geht nur, wenn ich nach dem FHEM-Start die Direction manuell setze:

echo out > /sys/class/gpio/gpio65/direction

Beim Start geschieht nämlich merkwürdiges (das Device heißt GPIO_Relay1):


2014.11.06 22:00:07 5: GPIO_Relay1, in fileaccess: value 1
2014.11.06 22:00:07 5: GPIO_Relay1, in fileaccess: direction high
2014.11.06 22:00:07 4: GPIO_Relay1: direction ueber gpio utility einstellen
2014.11.06 22:00:07 4: GPIO_Relay1: direction gesetzt auf low
2014.11.06 22:00:07 4: OUTPUT GPIO_Relay1: STATE wiederhergestellt auf off


Und auf der Konsole lese ich derweil:

export: Invalid mode: low. Should be in or out


Soweit ich den Code verstanden habe, wird tatsächlich versucht, als Direction "low" bzw. zu setzen, wo IMHO "out" korrekt wäre (Funktion RPI_GPIO_fileaccess, Zeile 493):


$dir = ($args[1] == $lev ? "high" : "low")


Wenn ich das entsprechend ändere, läuft die Relais-Ansteuerung wunderbar - und ja: die Eingänge funktionieren dann auch noch  ;)


$dir = ($args[1] == $lev ? "in" : "out")


Ich frage mich also, ob die genannte Zeile nicht einen Fehler enthält, den ich in diesem Fall gern korrigiert hätte. Falls ich das Modul irgendwie falsch benutze, dann sorry. Bis auf direction=output hatte ich allerdings keine besonderen Einstellungen vorgenommen.

Und bevor ich es vergesse: Das ist ein für mich sehr nützliches und (ansonsten  ;)) toll funktionierendes Modul, vielen Dank dafür!


Gruß

fnord
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: klausw am 07 November 2014, 23:59:52
Zitat von: fnord am 07 November 2014, 23:27:08
...
Und auf der Konsole lese ich derweil:

export: Invalid mode: low. Should be in or out


Soweit ich den Code verstanden habe, wird tatsächlich versucht, als Direction "low" bzw. zu setzen, wo IMHO "out" korrekt wäre (Funktion RPI_GPIO_fileaccess, Zeile 493):


Du hast es richtig verstanden. Es wird als direction "low" gesetzt. Ein schreiben von low in direction führt dazu, das der Pin als Output gesetzt wird und gleichzeitig auf Low (das soll kurzzeitiges schalten beim booten unterbinden ... für die Details musst Du mal diesen Tread ein Stück zurückverfolgen)
Jetzt scheint Dein Kernel dies nicht zu unterstützen.
Die Frage ist nun, ob Du eine exotische Distribution verwendest, oder ob es beim BBB generell nicht unterstützt wird. Versuche das doch mal herauszufinden  :)
Da ich nur ein paar Pi's habe kann ich dazu nix sagen.
Notfalls müsste ich da noch ein attribut einbauen...wenn das überhaupt so einfach geht.
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: fnord am 08 November 2014, 00:57:56
Danke für die prompte Rückmeldung! Also soetwas wie

echo high > /sys/class/gpio/gpio65/direction

funktioniert hier (Debian wie gesagt) durchaus. Wenn ich es (wiederum) richtig verstehe, wird doch aber an der Stelle das gpio-Tool (https://projects.drogon.net/raspberry-pi/wiringpi/the-gpio-utility/) von Wiring Pi verwendet. Ich rate mal:

gpio export 65 low

...denn das liefert genau die zitierte Fehlermeldung auf der Konsole. Könnte es so sein?


Gruß

fnord
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: klausw am 08 November 2014, 01:42:47
Zitat von: fnord am 08 November 2014, 00:57:56
Danke für die prompte Rückmeldung! Also soetwas wie

echo high > /sys/class/gpio/gpio65/direction

funktioniert hier (Debian wie gesagt) durchaus. Wenn ich es (wiederum) richtig verstehe, wird doch aber an der Stelle das gpio-Tool (https://projects.drogon.net/raspberry-pi/wiringpi/the-gpio-utility/) von Wiring Pi verwendet. Ich rate mal:

gpio export 65 low

...denn das liefert genau die zitierte Fehlermeldung auf der Konsole. Könnte es so sein?
Ah, das Debain habe ich überlesen.

Wenn ich mit den Quellcode anschaue, kann das durchaus passieren. Das muss ich noch anpassen.
Aber es sollte trotzdem gehen. Das passiert nur, wenn der fhem user keine Schreibrechte auf die GPIOs hat.
Gibt es bei Dir eine gruppe namens gpio? und ist fhem Mitglied der selben?
Was zeigt "ls -l" im gpio65 Verzeichnis an?
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: fnord am 08 November 2014, 22:44:48
Die Dateien für die Pins sind bei mir für den FHEM-Benutzer nicht schreibbar. Ich fand es wenig elegant, in die /etc/rc.local noch diverse Initialisierungen zu stopfen. Wiring Pi kann das ja sehr fein selbst erledigen. Wenn ich FHEM die Schreibrechte gebe, dann funktioniert es auch - in diesem Fall wird wohl der else-Zweig der Bedingung ab Zeile 511 genommen:


if ($fname eq "direction" && (not -w $file)) { #wenn direction und diese nicht schreibbar mit gpio utility versuchen
    ...
} else {
    my $fh = IO::File->new("> $file");
    ...


Ich glaube, ich verstehe jetzt auch das Problem besser: In Zeile 496 wird ja RPI_GPIO_fileaccess rekursiv aufgerufen, um vor dem eigentlichen Setting zunächst die Direction zu setzen:

RPI_GPIO_fileaccess($hash, "direction", $dir);

$dir ist dabei "high" oder "low". Dieser Aufruf läuft bis zur o.g. Zeile 511, um dann entweder das gpio-Tool aufzurufen (if) oder den Pin direkt zu setzen (else, Zeilen 520ff). Das direkte Setzen mit high/low funktioniert (wie oben beschrieben), der gpio-Aufruf mit high/low aber eben nicht, wie in meinem letzten Posting geschildert! Mein Vorschlag: Zeile 513

RPI_GPIO_exuexpin($hash, $value);

ändern in

RPI_GPIO_exuexpin($hash, $value eq "high" ? "in" : "out");

Damit klappt es (bei mir) auch wenn die Pin-Rechte fehlen.


Gruß

fnord
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: klausw am 09 November 2014, 00:57:19
Zitat von: fnord am 08 November 2014, 22:44:48
RPI_GPIO_exuexpin($hash, $value eq "high" ? "in" : "out");

Damit klappt es (bei mir) auch wenn die Pin-Rechte fehlen.

was ist dann, wenn der Pin auf low gesetzt werden soll?

ich schlage vor:
$dir = "out" if ( $dir eq ("high" || "low") );
in Zeile 540 einfügen.
Teste das bitte mal.
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: fnord am 09 November 2014, 22:25:25
Zitat$dir = "out" if ( $dir eq ("high" || "low") );

Das klappt leider nicht. Meine Perl-Kenntnisse sind ziemlich rudimentär, aber die Zeile bedeutet doch: "Wenn $dir 'high' oder 'low' enthält, dann setze es auf 'out'", korrekt? Was ich aber erreichen wollte war: "Wenn $dir 'high' enthält, dann setze es auf 'in', wenn es ansonsten "low" enthält, dann setze es auf 'out'". Ich denke, wir sind uns schon einig, und an Deinem Vorschlag erkenne ich, dass Du die Lösung gern in RPI_GPIO_exuexpin hättest. Mein Gegenvorschlag:

sub RPI_GPIO_exuexpin($$) { #export, unexport and direction Pin via GPIO utility
my ($hash, $dir) = @_;
my $sw;
if ($dir eq "unexport") {
$sw = $dir;
$dir = "";
} else {
$sw = "export";

if ($dir eq "high") {
$dir = "in";
} elsif ($dir eq "low") {
$dir = "out";
}

$dir = " ".$dir;
}
if ( defined(my $ret = RPI_GPIO_CHECK_GPIO_UTIL($gpioprg)) ) {
Log3 $hash, 1, "$hash->{NAME}: " . $ret;
} else {
my $exp = $gpioprg.' '.$sw.' '.$hash->{RPI_pin}.$dir;
$exp = `$exp`;
}
}


Das if-elsif habe ich eingefügt, Anfänger-style ;). Funktioniert hier sowohl für Ein- wie Ausgänge. Was hältst Du davon?


Gruß

fnord
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: klausw am 09 November 2014, 22:39:58
was ich will, ist eventuelle Fehler ausbügeln  8)

Was Du vorschlägst macht für mich keinen Sinn.
Die Routine RPI_GPIO_exuexpin wird entweder für einen Input mit "in" und für einen Output mit "out" aufgerufen.
Zusätzlich halt noch über die State Funktion beim booten (was bei wiringpi nicht funktioniert) mit "high" oder "low" für einen Output.
Mit $dir = "out" if ( $dir eq ("high" || "low") ); sollte das glattgezogen sein.
Jedenfalls bedeutet sowohl "high" als auch "low" einen output
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: Ralli am 10 November 2014, 11:42:01
Hallo Klaus,

ich war Dir noch eine Rückmeldung schuldig.

Es klappt! Wenn restoreOnStartup nicht auf no steht, wird bei einem Start von fhem nur bei einem anderen Status des aktuellen Pinlevel gegenüber dem gespeicherten Status ein Event generiert, sonst nicht. So soll es sein.
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: fnord am 10 November 2014, 12:32:52
Zitatwas ich will, ist eventuelle Fehler ausbügeln  8)

Gut, darin sind wir uns einig! Aber nochmal sorry - ich hatte diese high/low-Semantik missverstanden. Beides impliziert ja direction out und setzt nur zusätzlich den value. Dein Code

$dir = "out" if ( $dir eq ("high" || "low") );

funktioniert allerdings nur für $dir="high". Nach etwas ausprobieren bin ich auf

$dir = "out" if ( $dir eq "high" || $dir eq "low" );

gekommen. Ok?


Gruß

fnord
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: klausw am 10 November 2014, 17:47:40
Zitat von: fnord am 10 November 2014, 12:32:52
Gut, darin sind wir uns einig! Aber nochmal sorry - ich hatte diese high/low-Semantik missverstanden. Beides impliziert ja direction out und setzt nur zusätzlich den value. Dein Code

$dir = "out" if ( $dir eq ("high" || "low") );

funktioniert allerdings nur für $dir="high". Nach etwas ausprobieren bin ich auf

$dir = "out" if ( $dir eq "high" || $dir eq "low" );

gekommen. Ok?


Gruß

fnord

oh, das kann gut sein, ich war nicht sicher, das mein Code ok ist, aber da es keine Fehlermeldungen gab dachte ich es funktioniert.
Macht ja nix, wie du siehst macht jeder Fehler  8)
Dein Vorschlag funktioniert bei Dir vollstandig?
Dann baue ich ihn einfach ein.
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: fnord am 10 November 2014, 22:25:27
Ja, die Relais knacken wie gewünscht. Freut mich, dass ich etwas beitragen konnte, womit wir beide zufrieden sind! ;D


Gruß

fnord
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: klausw am 11 November 2014, 09:48:34
Änderungen in restoreOnStartup und für gpio utility sind eingecheckt
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: Ralli am 11 November 2014, 11:47:37
Daumen hoch! Danke.
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: fnord am 11 November 2014, 18:43:27
ZitatÄnderungen in restoreOnStartup und für gpio utility sind eingecheckt

Update, restart, läuft.  8)


Gruß

fnord
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: IPPhoner2b am 16 Dezember 2014, 22:15:23
Habe da mal eine kurze Frage bzgl des "neuen" Raspi B+:
Der hat auf seiner 40pol Leiste die GPIOs 5 + 6 sitzen, wenn ich an diese einen Schalter mache, und ihn dementsprechend definiere, klappt es leider nicht, auf den anderen von mir getesteten Port (9-11-13-19-20-26) klappt es hingegen problemlos. Kann es sein, dass es da einen Konflikt zwischen Version B und B+ gibt?
Bei den beiden Pins gibt er mir bei den Readings nur "Pinlevel" und "State" aus, bei den anderen Pins steht noch Longpress und Counter.

Könnt ihr mir da nen Tip geben  :o ;D

Wie gesagt, alle gleich definiert, nach folgendem Schema:
#  RPI_GPIO 19 ist der Eingangspin am Raspberry, um den Schalter einzulesen
define sklih RPI_GPIO 19
attr sklih active_low no
attr sklih alias 20 B0 Schalter Küchenrollo Links Hoch
attr sklih debounce_in_ms 10
attr sklih direction input
attr sklih event-on-change-reading state
attr sklih group InputPorts
attr sklih interrupt both

#  RPI_GPIO 5 ist der Eingangspin am Raspberry, um den Schalter einzulesen
define skreh RPI_GPIO 5
attr skreh active_low no
attr skreh alias 20 B2 Schalter Küchenrollo Rechts Hoch
attr skreh debounce_in_ms 10
attr skreh direction input
attr skreh event-on-change-reading state
attr skreh group InputPorts
attr skreh interrupt both


Achja, der State ist immer auf ON gesetzt, als ob der Eingang betätigt wäre, siehe Bild
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: klausw am 17 Dezember 2014, 10:20:14
steht was im Logfile drin?

wurde der GPIO angelegt?
was gibt folgender Befehl aus?
ls -l /sys/class/gpio/gpio5

Longpress und Counter werden erst angelegt wenn diese Ereignisse auftreten
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: IPPhoner2b am 17 Dezember 2014, 12:12:41
Hallo Klaus,

Das einzige ist, dass er bei GPIO5 nen "Zeilenumbruch" oder so mit drin hat

also für den GPIO 5 bekomme ich als Meldung
ls -l /sys/class/gpio/gpio5
lrwxrwxrwx 1 root gpio 0 Dec 16 22:17 /sys/class/gpio/gpio5 -> ../../devices/vir                                                            tual/gpio/gpio5


und für GPIO 13 eigenltich die gleiche (der funktioniert aber)
ls -l /sys/class/gpio/gpio13
lrwxrwxrwx 1 root gpio 0 Dec 16 22:17 /sys/class/gpio/gpio13 -> ../../devices/virtual/gpio/gpio13


WiringPi habe ich installiert, und auf die anderen Pins habe ich auch im WebIF zugriff, nur bei Port 5+6 nicht, zumindest, sind das die, die ich bis jetzt ausprobiert habe.

Das hier ist der Mittschnitt aus dem Log mit Global Verbose 5, und da sieht man eben, dass der Pin 5 gleich auf 1 gesetzt wird, aber warum ?
2014.12.17 12:06:52 5: Cmd: >define sklir RPI_GPIO 13<
2014.12.17 12:06:52 4: sklir: write access to file /sys/class/gpio/export, use it to export GPIO
2014.12.17 12:06:52 5: Cmd: >attr sklir active_low no<
2014.12.17 12:06:52 5: sklir, in fileaccess: active_low 0
2014.12.17 12:06:52 5: sklir: set attr active_low: no
2014.12.17 12:06:52 5: Cmd: >attr sklir alias 20 B1 Schalter Küchenrollo Links Runter<
2014.12.17 12:06:52 5: Cmd: >attr sklir debounce_in_ms 10<
2014.12.17 12:06:52 5: Cmd: >attr sklir direction input<
2014.12.17 12:06:52 5: sklir, in fileaccess: direction in
2014.12.17 12:06:52 5: sklir: set attr direction: input
2014.12.17 12:06:52 5: Cmd: >attr sklir event-on-change-reading state<
2014.12.17 12:06:52 5: Cmd: >attr sklir group InputPorts<
2014.12.17 12:06:52 5: Cmd: >attr sklir interrupt both<
2014.12.17 12:06:52 5: sklir, in fileaccess: edge both
2014.12.17 12:06:52 5: Datei: /sys/class/gpio/gpio13/value, FH: IO::File=GLOB(0x22ad140), EXCEPT_FD: 9, akt. Wert: 0
2014.12.17 12:06:52 5: sklir: set attr interrupt: both

2014.12.17 12:06:52 5: Cmd: >define skreh RPI_GPIO 5<
2014.12.17 12:06:52 4: skreh: write access to file /sys/class/gpio/export, use it to export GPIO
2014.12.17 12:06:52 5: Cmd: >attr skreh active_low no<
2014.12.17 12:06:52 5: skreh, in fileaccess: active_low 0
2014.12.17 12:06:52 5: skreh: set attr active_low: no
2014.12.17 12:06:52 5: Cmd: >attr skreh alias 20 B1 Schalter Küchenrollo Rechts Hoch<
2014.12.17 12:06:52 5: Cmd: >attr skreh debounce_in_ms 10<
2014.12.17 12:06:52 5: Cmd: >attr skreh direction input<
2014.12.17 12:06:52 5: skreh, in fileaccess: direction in
2014.12.17 12:06:52 5: skreh: set attr direction: input
2014.12.17 12:06:52 5: Cmd: >attr skreh event-on-change-reading state<
2014.12.17 12:06:52 5: Cmd: >attr skreh group InputPorts<
2014.12.17 12:06:52 5: Cmd: >attr skreh interrupt both<
2014.12.17 12:06:52 5: skreh, in fileaccess: edge both
2014.12.17 12:06:52 5: Datei: /sys/class/gpio/gpio5/value, FH: IO::File=GLOB(0x2187e78), EXCEPT_FD: 10, akt. Wert: 1
2014.12.17 12:06:52 5: skreh: set attr interrupt: both
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: klausw am 17 Dezember 2014, 12:36:44
Falsch, ich meine natürlich:

ls -l /sys/class/gpio/gpio5/

ohne den Schrägstrich am Ende werde die Dateien nicht angezeigt.

Was ich deinem Log entnehmen kann sieht soweit normal aus.


Mit cat /sys/class/gpio/gpio5/direction solltest du "in" erhalten
Dann ist die Richtung schonmal richtig eingestellt.

Mit cat /sys/class/gpio/gpio5/value kannst du schauen, welchen Wert der Pin hat.
Mache das mit beiden Schaltzuständen und schaue ob sich was ändert.
Vielleicht ist auch der Pin kaputt
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: IPPhoner2b am 17 Dezember 2014, 16:16:21
So, ich erhalte folgende Meldungen:
ls -l /sys/class/gpio/gpio5/
total 0
-rwxrwx--- 1 root gpio 4096 Dec 17 16:02 active_low
-rwxrwx--- 1 root gpio 4096 Dec 17 16:02 direction
-rwxrwx--- 1 root gpio 4096 Dec 17 16:02 edge
drwxrwx--- 2 root gpio    0 Dec 17 16:01 power
lrwxrwxrwx 1 root gpio    0 Dec 17 16:01 subsystem -> ../../../../class/gpio
-rwxrwx--- 1 root gpio 4096 Dec 17 16:01 uevent
-rwxrwx--- 1 root gpio 4096 Dec 17 16:01 value

ls -l /sys/class/gpio/gpio13/
total 0
-rwxrwx--- 1 root gpio 4096 Dec 17 16:02 active_low
-rwxrwx--- 1 root gpio 4096 Dec 17 16:02 direction
-rwxrwx--- 1 root gpio 4096 Dec 17 16:02 edge
drwxrwx--- 2 root gpio    0 Dec 17 16:01 power
lrwxrwxrwx 1 root gpio    0 Dec 17 16:01 subsystem -> ../../../../class/gpio
-rwxrwx--- 1 root gpio 4096 Dec 17 16:01 uevent
-rwxrwx--- 1 root gpio 4096 Dec 17 16:01 value


Richtung steht auf "IN", und wechseln tut sich leider nix, anders sieht es aus, wenn ich GPIO 13 nehme, da wechselt er immer.

Ich habe ja noch nen zweiten B+ hier liegen, werde da die Micro SD Karte mal einwerfen, und diesen testen.

So, habe es eben umgesteckt, und es ist genau das gleiche Phänomen.
Es ist auch egal, ob überhaupt etwas angeschlossen ist, oder nicht, diese beiden Pins sind immer aktiv gesetzt.
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: klausw am 17 Dezember 2014, 16:29:26
Zitat von: IPPhoner2b am 17 Dezember 2014, 16:16:21
So, ich erhalte folgende Meldungen:
ls -l /sys/class/gpio/gpio5/
total 0
-rwxrwx--- 1 root gpio 4096 Dec 17 16:02 active_low
-rwxrwx--- 1 root gpio 4096 Dec 17 16:02 direction
-rwxrwx--- 1 root gpio 4096 Dec 17 16:02 edge
drwxrwx--- 2 root gpio    0 Dec 17 16:01 power
lrwxrwxrwx 1 root gpio    0 Dec 17 16:01 subsystem -> ../../../../class/gpio
-rwxrwx--- 1 root gpio 4096 Dec 17 16:01 uevent
-rwxrwx--- 1 root gpio 4096 Dec 17 16:01 value

ls -l /sys/class/gpio/gpio13/
total 0
-rwxrwx--- 1 root gpio 4096 Dec 17 16:02 active_low
-rwxrwx--- 1 root gpio 4096 Dec 17 16:02 direction
-rwxrwx--- 1 root gpio 4096 Dec 17 16:02 edge
drwxrwx--- 2 root gpio    0 Dec 17 16:01 power
lrwxrwxrwx 1 root gpio    0 Dec 17 16:01 subsystem -> ../../../../class/gpio
-rwxrwx--- 1 root gpio 4096 Dec 17 16:01 uevent
-rwxrwx--- 1 root gpio 4096 Dec 17 16:01 value


Richtung steht auf "IN", und wechseln tut sich leider nix, anders sieht es aus, wenn ich GPIO 13 nehme, da wechselt er immer.

Ich habe ja noch nen zweiten B+ hier liegen, werde da die Micro SD Karte mal einwerfen, und diesen testen.

So, habe es eben umgesteckt, und es ist genau das gleiche Phänomen.
Es ist auch egal, ob überhaupt etwas angeschlossen ist, oder nicht, diese beiden Pins sind immer aktiv gesetzt.

Ok, vielleicht ist da noch nen Bug im Kernel. RPI_GPIO macht nix anderes als diese Dateien auszulesen. Wenn es mit cat nicht funktioniert dann geht es natürlich auch in FHEM nicht.
Du hast aber keine 5V auf die Pins gejagt?
Die einzige Möglichkeit, die ich sehe ist, im Internet nach den besagen GPIOs zu suchen. Das Problem haben sicher noch andere, vielleicht gibt es schon einen Workaround
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: IPPhoner2b am 17 Dezember 2014, 16:52:46
Hi Klaus,

evtl. hilft es ja, habe grade mal alle GPIO Pins die eine GPIO Nummer hatten als Inputs definiert, und jeweils NUR die gewünschten3,3V beaufschlagt  ;D

Folgende GPIOs kann ich nicht als Eingang nutzen, weil diese nicht aktualisiert werden:
GPIO 4 - PIN 7
GPIO 5 - PIN 29
GPIO 6 - PIN 31
GPIO 7 - PIN 26
GPIO 8 - PIN 24
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: klausw am 17 Dezember 2014, 17:16:28
Zitat von: IPPhoner2b am 17 Dezember 2014, 16:52:46
Hi Klaus,

evtl. hilft es ja, habe grade mal alle GPIO Pins die eine GPIO Nummer hatten als Inputs definiert, und jeweils NUR die gewünschten3,3V beaufschlagt  ;D

Folgende GPIOs kann ich nicht als Eingang nutzen, weil diese nicht aktualisiert werden:
GPIO 4 - PIN 7
GPIO 5 - PIN 29
GPIO 6 - PIN 31
GPIO 7 - PIN 26
GPIO 8 - PIN 24

Hmm, es wäre interessant herauszufinden, wieso diese GPIOs nicht funktionieren.
Vielleicht werden sie alternativ von anderen Prozessen blockiert.
z.B. GPIO14 und 15 sind nicht verwendbar, wenn dir serielle Schnittstelle aktiviert ist.
evtl. gibt es da was
Die 1wire Kernelmodule hast du nicht geladen, oder?
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: IPPhoner2b am 17 Dezember 2014, 17:41:36
1wire wäre mir nicht bekannt, also wenn das nicht von vorneherein geladen ist, würde ich jetzt mal nein sagen.
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: klausw am 18 Dezember 2014, 10:30:04
Zitat von: IPPhoner2b am 17 Dezember 2014, 17:41:36
1wire wäre mir nicht bekannt, also wenn das nicht von vorneherein geladen ist, würde ich jetzt mal nein sagen.
Den musst du erst eintragen. Standardmäßig wird der Treiber nicht geladen.
Kann ja auch sein, das es ein B+ Fehler ist, der noch noch nicht behoben wurde.
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: IPPhoner2b am 22 Dezember 2014, 12:47:12
So, habe grade nochmal nen Test gemacht, und ich weiß nicht, ob es daran lag, dass vorher das WiringPi nicht installiert war, aber ich vermute es mal, weil ich nichts mehr an meiner Config geändert habe.

Jedenfalls funktionieren ALLE GPIOs an den RPIs B und B+ mit der gleichen SD Karte so wie gewünscht, also habe ich die Pferde etwas zu unrecht aufgescheucht, tut mir Leid, und ich versuche mich zu bessern  :o 8) ::) ;D
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: klausw am 23 Dezember 2014, 00:25:51
Hauptsache es läuft jetzt ::)
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: kroonen am 26 Dezember 2014, 21:32:42
Hi,

Is it possible to add an extra option for the counter . I'm will use the counter for my watermeter this send a pulse every 0.5L water.

It should be nice to say something like every pulse is 0.5 liter, so that the log is also in the correct format.

I used rfxmeter and there is also something that rfxmeter 0.5 ltr

example output rfxmeter with scale factor 0.5 2014-12-18_19:38:03 RFXWater meter: 645630.5 ltr

regards Richard
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: klausw am 30 Dezember 2014, 15:44:37
Hi Richard,
Zitat von: kroonen am 26 Dezember 2014, 21:32:42
Is it possible to add an extra option for the counter . I'm will use the counter for my watermeter this send a pulse every 0.5L water.

It should be nice to say something like every pulse is 0.5 liter, so that the log is also in the correct format.

I used rfxmeter and there is also something that rfxmeter 0.5 ltr

example output rfxmeter with scale factor 0.5 2014-12-18_19:38:03 RFXWater meter: 645630.5 ltr
of course its possible to implement it.
I'll check it in the next days
But you should be able to solve this problem with readings proxy.
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: kroonen am 01 Januar 2015, 18:41:39
Hi,

I solved this, bij adding a 1-wire counter, and the use an factor for it already.

I have another question. I uses an input (gpio) to check if the garage is open or close.  I Want to know when it was that the last time it was open op closed. So to should be nice to have a statechange timestamp, so when that I know when it was last time.

Is this possible ?

regards Richard
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: Phill am 02 Januar 2015, 01:45:45
Hallo,

hatte mich gerade mit dem Modul rumgeschlagen und da hat mir eine Fehler im Logging das Leben unnötig schwer gemacht.

Beim definieren von einem neuen RPI_GPIO kam folgernder LOG Eintrag:
Zitattest: can't export gpio7, no write access to /sys/class/gpio/export and file /usr/local/bin/gpio doesnt exist
gpio existiert wirklich nicht, nur das Problem lag nicht an den fehlenden Schreibrechten. Das ganze läuft bei mir auf einem Cubietruck und da sind noch die Pin Definition am gpio-Verzeichnis angehängt.
Zitat/sys/class/gpio/gpio6_pg3
Mit define test RPI_GPIO 6_pg3 hat es dann gleich geklappt, wenn der gpio schon angelegt war.
In der LOG müsste eher auf das nicht gefundene gpio Verzeichnis hingewiesen werden.

Das Modul legt den gpio zwar an aber findet logischerweise das Verzeichnis mit dem Zusatz _pg3 nicht.
Glücklicherweise klappt es ja mit dem Umweg wenn ich den Pin komplett eintrage.

Gruß
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: klausw am 02 Januar 2015, 11:13:58
Zitat von: kroonen am 01 Januar 2015, 18:41:39
I have another question. I uses an input (gpio) to check if the garage is open or close.  I Want to know when it was that the last time it was open op closed. So to should be nice to have a statechange timestamp, so when that I know when it was last time.

Is this possible ?
yes:

1. create two dummys (e.g. gate_opened and gate_closed)
2. create an notify for input gpio:


define act_on_Pin23 notify Pin23 {\
my $ts = ReadingsTimestamp("%NAME","state",0);;\
if ("%EVENT" eq "on") {\
fhem "set gate_opened $ts";;\
} elsif ("%EVENT" eq "off") {\
fhem "set gate_closed $ts";;\
}\
}
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: klausw am 02 Januar 2015, 12:20:25
Zitat von: Phill am 02 Januar 2015, 01:45:45
Hallo,

hatte mich gerade mit dem Modul rumgeschlagen und da hat mir eine Fehler im Logging das Leben unnötig schwer gemacht.

Beim definieren von einem neuen RPI_GPIO kam folgernder LOG Eintrag:gpio existiert wirklich nicht, nur das Problem lag nicht an den fehlenden Schreibrechten. Das ganze läuft bei mir auf einem Cubietruck und da sind noch die Pin Definition am gpio-Verzeichnis angehängt.Mit define test RPI_GPIO 6_pg3 hat es dann gleich geklappt, wenn der gpio schon angelegt war.
In der LOG müsste eher auf das nicht gefundene gpio Verzeichnis hingewiesen werden.

Das Modul legt den gpio zwar an aber findet logischerweise das Verzeichnis mit dem Zusatz _pg3 nicht.
Glücklicherweise klappt es ja mit dem Umweg wenn ich den Pin komplett eintrage.
über logausgaben kann man sich immer streiten...ich denke mal über eine sinnvollere Meldung nach.
immerhin hast du es rausgefunden ;)
nutzt du ein neues image auf dem cubie?
wenn ich mich richtig erinnere dann nutzen das schon einige ohne probleme.
Der export funktioniert aber weiterhin über die reine gpio nummer? oder kannst du dort auch z.B. das pg_3 anhängen?
Dann müsste ja nur die Commandreg angepasst werden
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: Phill am 03 Januar 2015, 16:52:06
Ich nutze cubieez 2.0 auf meinem Cubietruck. Weiß ich nicht ob es bei anderen Images den Zusatz am Verzeichnis gibt.

Der export funktioniert nur über die reine Nummer, gibt man den Zusatz mit an klappt es nicht. Auch auf Konsolenebene mit echo > export klappt es nur mit der Nummer.
Ich erzeuge die gpios jetzt in rc.local und setze den benutzer fhem als Besitzer.
Dann kann ich in fhem die RPI_GPIO's mit dem Zusatz definieren.

Evtl. könnte man auch innerhalb des Moduls RPI_GPIO mit regexp arbeiten.
Also so irgendwie, /sys/class/gpio/gpio\d*.*/Wobei ich denke das es so einfach nicht klappt, da er ja nicht ein-ziffrige gpio's mit mehr-ziffrigen gpio's verwechseln darf.
Vielleicht ist das bei mir auch zu exotisch um den Code extra anzupassen. Es funktioniert ja einigermaßen Zufriedenstellend.
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: Ralli am 08 Januar 2015, 18:14:02
Hallo Klaus,

von mir noch mal eine Rückmeldung in Sachen Banana Pi (Pro) und Input:

Aktuelles Raspbian (mit nun vorinstalliertem wiringPi) mit aktuellen fhem. Grundsätzlich funktioniert der GPIO-Zugriff nur, wenn in rc.local entsprechend die zu nutzenden GPIOs vorher geimpft wurden. Dies funktioniert sowohl für Output als auch für Input.

Für Input gibt es allerdings eine wirklich ätzende Einschränkung: Es läuft nicht mittels Interrupt, nur Poll klappt.

Was ist denn in Bezug auf Interrupt zu beachten? Kann ich noch irgendwo dran schrauben?
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: klausw am 08 Januar 2015, 18:38:52
Zitat von: Phill am 03 Januar 2015, 16:52:06
Evtl. könnte man auch innerhalb des Moduls RPI_GPIO mit regexp arbeiten.
Also so irgendwie, /sys/class/gpio/gpio\d*.*/Wobei ich denke das es so einfach nicht klappt, da er ja nicht ein-ziffrige gpio's mit mehr-ziffrigen gpio's verwechseln darf.
Vielleicht ist das bei mir auch zu exotisch um den Code extra anzupassen. Es funktioniert ja einigermaßen Zufriedenstellend.
Exotisch ist deine Hardware sicher nicht.
Ich habe ein bisschen probiert, konnte aber kein befriedigendes Ergebnis erzielen.
Wenn du zwischenzeitlich eine funktionierende Codeanpassung hast, kann ich diese gern einbauen.
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: klausw am 08 Januar 2015, 18:42:43
Zitat von: Ralli am 08 Januar 2015, 18:14:02
Aktuelles Raspbian (mit nun vorinstalliertem wiringPi) mit aktuellen fhem. Grundsätzlich funktioniert der GPIO-Zugriff nur, wenn in rc.local entsprechend die zu nutzenden GPIOs vorher geimpft wurden. Dies funktioniert sowohl für Output als auch für Input.

Für Input gibt es allerdings eine wirklich ätzende Einschränkung: Es läuft nicht mittels Interrupt, nur Poll klappt.

Was ist denn in Bezug auf Interrupt zu beachten? Kann ich noch irgendwo dran schrauben?
schicke mir bitte PM von "ls -l" von einem input gpio verzeichnis und vom gpio verzeichnis und vom logfile
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: Ralli am 09 Januar 2015, 08:54:36

bananapi@fhem /sys/class/gpio $ ls -la
insgesamt 0
drwxrwxrwx  2 root gpio    0 Jan  8 16:26 .
drwxr-xr-x 62 root root    0 Jan  8 16:26 ..
-rwxrwxrwx  1 root gpio 4096 Jan  8 16:26 export
lrwxrwxrwx  1 root gpio    0 Jan  8 16:26 gpio21 -> ../../devices/platform/gpio-sunxi/gpio/gpio21
lrwxrwxrwx  1 root gpio    0 Jan  8 16:26 gpio27 -> ../../devices/platform/gpio-sunxi/gpio/gpio27
lrwxrwxrwx  1 root gpio    0 Jan  8 16:26 gpiochip1 -> ../../devices/platform/gpio-sunxi/gpio/gpiochip1
-rwxrwxrwx  1 root gpio 4096 Jan  8 16:26 unexport


Ein Input-GPIO:


bananapi@fhem /sys/class/gpio/gpio21 $ ls -la
insgesamt 0
drwxrwxrwx 3 root gpio    0 Jan  8 16:26 .
drwxrwxrwx 5 root gpio    0 Jan  8 16:26 ..
-rwxrwxrwx 1 root gpio 4096 Jan  8 16:26 active_low
lrwxrwxrwx 1 root gpio    0 Jan  8 16:26 device -> ../../../gpio-sunxi
-rwxrwxrwx 1 root gpio 4096 Jan  8 16:26 direction
drwxrwxrwx 2 root gpio    0 Jan  8 16:26 power
-rwxrwxrwx 1 root gpio 4096 Jan  8 16:26 pull
lrwxrwxrwx 1 root gpio    0 Jan  8 16:26 subsystem -> ../../../../../class/gpio
-rwxrwxrwx 1 root gpio 4096 Jan  8 16:26 uevent
-rwxrwxrwx 1 root gpio 4096 Jan  8 16:26 value


Ein Output-GPIO:


bananapi@fhem /sys/class/gpio/gpio27 $ ls -la
insgesamt 0
drwxrwxrwx 3 root gpio    0 Jan  8 16:26 .
drwxrwxrwx 5 root gpio    0 Jan  8 16:26 ..
-rwxrwxrwx 1 root gpio 4096 Jan  8 16:26 active_low
lrwxrwxrwx 1 root gpio    0 Jan  8 16:26 device -> ../../../gpio-sunxi
-rwxrwxrwx 1 root gpio 4096 Jan  8 16:26 direction
-rwxrwxrwx 1 root gpio 4096 Jan  8 16:26 edge
drwxrwxrwx 2 root gpio    0 Jan  8 16:26 power
-rwxrwxrwx 1 root gpio 4096 Jan  8 16:26 pull
lrwxrwxrwx 1 root gpio    0 Jan  8 16:26 subsystem -> ../../../../../class/gpio
-rwxrwxrwx 1 root gpio 4096 Jan  8 16:26 uevent
-rwxrwxrwx 1 root gpio 4096 Jan  8 16:30 value


Im Logfile steht nix.


2015.01.09 08:53:07 0: Server shutdown
2015.01.09 08:53:09 1: Including fhem.cfg
2015.01.09 08:53:09 3: telnetPort: port 7072 opened
2015.01.09 08:53:10 3: WEB: port 8083 opened
2015.01.09 08:53:10 3: WEBphone: port 8084 opened
2015.01.09 08:53:10 3: WEBtablet: port 8085 opened
2015.01.09 08:53:10 2: eventTypes: loaded 10 events from ./log/eventTypes.txt
2015.01.09 08:53:10 1: Including ./log/fhem.save
2015.01.09 08:53:10 1: usb create starting
2015.01.09 08:53:11 1: usb create end
2015.01.09 08:53:11 2: SecurityCheck:  WEB,WEBphone,WEBtablet has no basicAuth attribute. telnetPort has no password/globalpassword attribute.  Restart FHEM for a new check if the problem is fixed, or set the global attribute motd to none to supress this message.
2015.01.09 08:53:11 0: Server started with 11 defined entities (version $Id: fhem.pl 7358 2014-12-29 16:03:31Z rudolfkoenig $, os linux, user fhem, pid 2672)


List von GPIO21


Internals:
   DEF        21
   NAME       GPIO21
   NR         20
   RPI_pin    21
   STATE      on
   TYPE       RPI_GPIO
   Readings:
     2015-01-09 08:54:17   Pinlevel        high
     2015-01-09 08:54:17   state           on
   Fhem:
     interfaces switch
Attributes:
   direction  input
   poll_interval 0.01


List vom GPIO27:


Internals:
   DEF        27
   NAME       GPIO27
   NR         21
   RPI_pin    27
   STATE      off
   TYPE       RPI_GPIO
   Readings:
     2015-01-08 16:12:35   Pinlevel        high
     2015-01-09 08:53:10   state           off
   Fhem:
     interfaces switch
Attributes:
   active_low yes
   direction  output
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: klausw am 09 Januar 2015, 09:22:36
Die Pins hattest du schon in der rc.local exportiert?
Wie sieht das ganze aus, wenn du die Zeilen aus der rc.local entfernst?
Wenn wiring pi installiert ist sollte das trotzdem gehen.

Im Log steht nix, da du kein Attribut interrupt für den Input vergeben hast  8)

Bei Deinem GPIO21 fehlt die Datei edge. Über diese läuft die Interruptauswertung.
Vermutlich unterstützt dieser GPIO einfach keinen Interrupt.
Nutze GPIO27 bitte Testweise als Input mit Interrupt.
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: Ralli am 10 Januar 2015, 06:50:10
Ja, bereits in der rc.local exportiert. Wenn ich das nicht tue, klappt so gut wie gar nichts. Das einzige, was dann funktioniert, ist das Beschalten eines Outputs - allerdings kommt er bspw. an active_low schon nicht mehr dran, so dass das auch nicht wirklich richtig klappt.

Mit dem Interrupt hole ich nochmal nach bzw. probiere das aus.
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: klausw am 10 Januar 2015, 15:33:04
Zitat von: Ralli am 10 Januar 2015, 06:50:10
Ja, bereits in der rc.local exportiert. Wenn ich das nicht tue, klappt so gut wie gar nichts. Das einzige, was dann funktioniert, ist das Beschalten eines Outputs - allerdings kommt er bspw. an active_low schon nicht mehr dran, so dass das auch nicht wirklich richtig klappt.
stimmt, wiring pi ermöglicht nur zugriff auf value und edge
aber ein input sollte auch gehen, wenigstens im polling
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: Ralli am 12 Januar 2015, 13:26:02
Input klappt ja im Polling auch - aber eben nicht per Interrupt.

Wenn ich manuell mit GPIO versuche, einen Pin auf Interrupt zu bringen, klappt es auch nicht. Ich bekomme die Fehlermeldung


Unable to open GPIO edge interface for pin 21: No such file or directory


Laut einem Post auf Drogons/Gordons Seite https://projects.drogon.net/raspberry-pi/wiringpi/functions/ könnte das auf eine fehlende Unterstützung im Kernel hinweisen. Und damit ist dann leider Schluss für mich :(.

Frage:

Bedeutet denn das ständige Polling hier im konkreten Fall einen wesentlichen Ressourcen-Mehraufwand gegenüber der Interrupt-Lösung oder ist das zu vernachlässigen - ich kenne die Art und Weise der Abhandlung innerhalb von Perl bzw. fhem nicht? (generell ist Polling ja eher deutlich schlechter als Interrupt...)
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: klausw am 12 Januar 2015, 17:10:11
Zitat von: Ralli am 12 Januar 2015, 13:26:02
Frage:

Bedeutet denn das ständige Polling hier im konkreten Fall einen wesentlichen Ressourcen-Mehraufwand gegenüber der Interrupt-Lösung oder ist das zu vernachlässigen - ich kenne die Art und Weise der Abhandlung innerhalb von Perl bzw. fhem nicht? (generell ist Polling ja eher deutlich schlechter als Interrupt...)
Es kommt immer auf die Anwendung an.
Wenn du minütlich pollst ist das sicher zu vernachlässigen (Zustand Fenster z.B). Aber zum Abfragen von Tasten ist es ungeeignet, du kannst versuchen alle 100ms abzufragen, aber das erzeugt Prozessorlast und ist an sich auch noch zu langsam. Die Interrupt Lösung erzeugt, nachdem sie aktiviert wurde, überhaupt keine Last, solange kein Interrupt ausgelöst wird.
Probiere es aus, vielleicht reicht es für deine Anwendung
Aber ... schön isses natürlich nciht.

Wenn es im Kernel nicht drin ist, kann ich leider auch nicht viel machen.
Was ist denn mit den Pins, wo die edge Datei im Verzeichnis liegt? Das war doch bei dem einen Output Pin bei die der Fall.
Kannst du auf die Datei zugreifen, wenn sie da ist?

Das Polling kannst du auch über wiringpi machen, das brauchst du nix in die rc.local zu schreiben...richtig?
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: Ralli am 19 Januar 2015, 14:49:36
Hallo Klaus,

habe noch was gefunden: http://forum.lemaker.org/thread-11177-1-1-.html

Es ist wohl nicht jeder GPIO auch mit Interrupt nutzbar.

Und siehe da - wenn man einen GPIO für Input nimmt, der auch Interrupt beherrscht, klappt's auch :). Aber auch hier gilt: er muss genau wie die anderen in der rc.local geimpft werden.

Meine rc.local habe ich um Folgendes ergänzt:


# in /etc/init.d/rc.local den Pfad ergänzen um :/usr/local/sbin:/usr/local/bin

gpio reset

# Input-Ports (BCM)
for Port in 4 21
  do
  echo "$Port" > /sys/class/gpio/export
  echo "in" >/sys/class/gpio/gpio${Port}/direction
done

# Output-Ports (BCM)
for Port in 27
  do
  echo "$Port" > /sys/class/gpio/export
  echo "out" >/sys/class/gpio/gpio${Port}/direction
  echo "1" > /sys/class/gpio/gpio${Port}/active_low
  echo "0" >/sys/class/gpio/gpio${Port}/value
done

chmod 775 -R /sys/class/gpio
chown -R root:gpio /sys/class/gpio
chmod 775 -R /sys/devices/platform/gpio-sunxi
chown -R root:gpio /sys/devices/platform/gpio-sunxi
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: hobbynaut am 29 Januar 2015, 21:05:26
Hi,
ich verwende ein paar Raspi-Pins für Alarmsignale wie z.B. von einem Rauchmelder. Da die Signale zum Teil kürzer als eine Minute sind verwende ich den Interrupt-Modus:

define Rauchmelder RPI_GPIO 11
attr Rauchmelder active_low yes
attr Rauchmelder direction input
attr Rauchmelder interrupt falling

Den Pin habe ich mit einem Notify verknüpft, der im Alarmfall eine SMS sendet. Bei einem Test wurde jedoch alle paar Sekunden eine neue SMS gesendet.
Sollte der Notify denn nicht nur bei dem Flankenwechsel ausgelöst werden?

Die Alarmeingänge habe ich auch mit einem Log verknüpft und dort sieht man, dass die Pins sehr oft täglich toggeln und den Counter hochzählen, obwohl der Pinlevel immer Low ist:

2015-01-29_15:44:57 Rauchmelder Pinlevel: low
2015-01-29_15:44:57 Rauchmelder off
2015-01-29_15:44:57 Rauchmelder Toggle: on
2015-01-29_15:44:57 Rauchmelder Counter: 26386
2015-01-29_17:50:39 Rauchmelder Pinlevel: low
2015-01-29_17:50:39 Rauchmelder off
2015-01-29_17:50:39 Rauchmelder Toggle: off
2015-01-29_17:50:39 Rauchmelder Counter: 26387

Ist das bei euren Interrupt-Pins auch so oder mach ich hier etwas falsch?
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: klausw am 03 Februar 2015, 11:29:54
Zitat von: hobbynaut am 29 Januar 2015, 21:05:26
Hi,
ich verwende ein paar Raspi-Pins für Alarmsignale wie z.B. von einem Rauchmelder. Da die Signale zum Teil kürzer als eine Minute sind verwende ich den Interrupt-Modus:

define Rauchmelder RPI_GPIO 11
attr Rauchmelder active_low yes
attr Rauchmelder direction input
attr Rauchmelder interrupt falling

Den Pin habe ich mit einem Notify verknüpft, der im Alarmfall eine SMS sendet. Bei einem Test wurde jedoch alle paar Sekunden eine neue SMS gesendet.
Sollte der Notify denn nicht nur bei dem Flankenwechsel ausgelöst werden?

Die Alarmeingänge habe ich auch mit einem Log verknüpft und dort sieht man, dass die Pins sehr oft täglich toggeln und den Counter hochzählen, obwohl der Pinlevel immer Low ist:

2015-01-29_15:44:57 Rauchmelder Pinlevel: low
2015-01-29_15:44:57 Rauchmelder off
2015-01-29_15:44:57 Rauchmelder Toggle: on
2015-01-29_15:44:57 Rauchmelder Counter: 26386
2015-01-29_17:50:39 Rauchmelder Pinlevel: low
2015-01-29_17:50:39 Rauchmelder off
2015-01-29_17:50:39 Rauchmelder Toggle: off
2015-01-29_17:50:39 Rauchmelder Counter: 26387

Ist das bei euren Interrupt-Pins auch so oder mach ich hier etwas falsch?

Der Pinlevel ist nicht immer Low. Das attribut Interrupt auf falling sorgt allerdings dafür, das nur bei einem high->low Wechsel am GPIO der Status aktualisiert wird. Das heisst, es wird immer nur low reingeschrieben. Trotzdem muss der Pin vorher high gewesen sein. Das wird aber nur registriert, wenn du interrupt auf both stellst. Zum zählen ist es irrelevant.
Ich vermute, das du am GPIO kein stabiles Eingangssignal hast.
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: hobbynaut am 04 Februar 2015, 21:33:41
Bei einem Alarmeingang verwende ich Interrupt = both. Dann müsste ich in dem zugehörigen Log ja auch mal pinlevel = high sehen. In dem Log steht aber immer nur pinlevel = low.
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: Ralli am 06 Februar 2015, 09:30:07
Hallo Klaus,

nachdem ich heute einen B+ mit rpi-update und software-seitig auf aktuellen Stand gebracht habe, ist mir aufgefallen, dass der in der commandref aufgeführte Pfad bei chown -R fhem:root /sys/devices/virtual/gpio/* zumindest unter Raspbian nicht (mehr) existiert.

Der Pfad lautet /sys/devices/soc/20200000.gpio/gpio/*
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: klausw am 09 Februar 2015, 10:19:38
Zitat von: Ralli am 06 Februar 2015, 09:30:07
Hallo Klaus,

nachdem ich heute einen B+ mit rpi-update und software-seitig auf aktuellen Stand gebracht habe, ist mir aufgefallen, dass der in der commandref aufgeführte Pfad bei chown -R fhem:root /sys/devices/virtual/gpio/* zumindest unter Raspbian nicht (mehr) existiert.

Der Pfad lautet /sys/devices/soc/20200000.gpio/gpio/*
Ich frage mich sowieso gerade, was ich da geschrieben habe....

Gibt es denn: /sys/class/gpio/export?
und damit auch die /sys/class/gpio/gpio[zahl]?

nach eingabe von:
Zitatsudo adduser fhem gpio
sudo reboot
und reboot sollte beim raspbian sowieso alles direkt ohne weitere Änderungen laufen.
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: Ralli am 09 Februar 2015, 12:55:09
Zitat von: klausw am 09 Februar 2015, 10:19:38
Ich frage mich sowieso gerade, was ich da geschrieben habe....

8)

Zitat
Gibt es denn: /sys/class/gpio/export?
und damit auch die /sys/class/gpio/gpio[zahl]?

Ja - beides. Ersteres als ausführbare Datei, letztes jeweils als Verzeichnis.

Und nein, nach dem

Zitat
sudo adduser fhem gpio
sudo reboot

war nach der Update-Prozedur nicht alles gut.
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: klausw am 09 Februar 2015, 13:04:57
Zitat von: Ralli am 09 Februar 2015, 12:55:09
Ja - beides. Ersteres als ausführbare Datei, letztes jeweils als Verzeichnis.

dann sollte doch auch
chown -R fhem:root /sys/class/gpio/*
funktionieren. Oder?

Zitat von: Ralli am 09 Februar 2015, 12:55:09
Und nein, nach dem

war nach der Update-Prozedur nicht alles gut.
was ist denn nicht gut?
geht es nur eingeschränkt oder gar nicht?

wie sind den die Rechte ohne die Anpassung in der rc.local?
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: Ralli am 09 Februar 2015, 13:19:36
Zitat von: klausw am 09 Februar 2015, 13:04:57
dann sollte doch auch
chown -R fhem:root /sys/class/gpio/*
funktionieren. Oder?

Nein, das alleine funktioniert nicht. Da werden die Berechtigungen nicht richtig durchgereicht (virtuelle Dateien).

Zitat
was ist denn nicht gut?
geht es nur eingeschränkt oder gar nicht?

wie sind den die Rechte ohne die Anpassung in der rc.local?

Das gleiche Problem wie bei der Banane. Ohne Bearbeitung in der rc.local nur rudimentäre Funktionen. Genaueres kann ich Dir leider jetzt nicht mehr schreiben, da ich gestern auf die Banane migriert habe und der PI nun platt ist.
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: klausw am 09 Februar 2015, 14:03:26
Zitat von: Ralli am 09 Februar 2015, 13:19:36
Nein, das alleine funktioniert nicht. Da werden die Berechtigungen nicht richtig durchgereicht (virtuelle Dateien).
Wieder was gelernt :)
Dann sollte ich die Pfade der verschiedenen Distros sammeln und in die commandref einbauen.

Zitat von: Ralli am 09 Februar 2015, 13:19:36
Das gleiche Problem wie bei der Banane. Ohne Bearbeitung in der rc.local nur rudimentäre Funktionen. Genaueres kann ich Dir leider jetzt nicht mehr schreiben, da ich gestern auf die Banane migriert habe und der PI nun platt ist.
Mach  nix, wenn jemand Probleme hat wird er sich sicher melden.
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: TeeVau am 13 Februar 2015, 15:28:27
Hallo, kann mir jemand auf die Sprünge helfen, welche Debian Pakete ich alles benötigt, um WiringPi zu compilen?
Make und gcc habe ich installiert, funktioniert aber leider nicht.

root@pibz:/tmp/wiringPi-72b2af2# ./build
wiringPi Build script
=====================


WiringPi Library
[UnInstall]
[Compile] wiringSerial.c
[Compile] piHiPri.c
[Compile] wiringShift.c
[Compile] wiringPi.c
[Compile] piThread.c
piThread.c:26:21: fatal error: pthread.h: No such file or directory
wiringPi.c:55:19: fatal error: stdio.h: No such file or directory
compilation terminated.
compilation terminated.
wiringSerial.c:23:19: fatal error: stdio.h: No such file or directory
compilation terminated.
piHiPri.c:27:19: fatal error: sched.h: No such file or directory
compilation terminated.
In file included from wiringShift.c:25:0:
/usr/lib/gcc/arm-linux-gnueabihf/4.6/include/stdint.h:3:26: fatal error: stdint.h: No such file or directory
compilation terminated.
Makefile:89: recipe for target 'wiringSerial.o' failed
make: *** [wiringSerial.o] Error 1
make: *** Waiting for unfinished jobs....
Makefile:89: recipe for target 'wiringPi.o' failed
make: *** [wiringPi.o] Error 1
Makefile:89: recipe for target 'piThread.o' failed
make: *** [piThread.o] Error 1
Makefile:89: recipe for target 'piHiPri.o' failed
make: *** [piHiPri.o] Error 1
Makefile:89: recipe for target 'wiringShift.o' failed
make: *** [wiringShift.o] Error 1

Make Failed...
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: klausw am 13 Februar 2015, 15:53:18
Zitat von: TeeVau am 13 Februar 2015, 15:28:27
Hallo, kann mir jemand auf die Sprünge helfen, welche Debian Pakete ich alles benötigt, um WiringPi zu compilen?
keine Ahnung, läuft das unterschiedlich zum Raspbian? dort geht es so:

sudo apt-get install git-core
git clone git://git.drogon.net/wiringPi
cd wiringPi ./build
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: TeeVau am 15 Februar 2015, 12:01:58
Ja, es ist ein respian. Benutze das Image Musikbox Pi. Git kopiert ja nur den sourceforge, das Build compiliert das ganze ja. Das macht bei mir Probleme. Sonst schreib ich den Entwickler die Tage mal an
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: Nemo0815 am 07 Mai 2015, 13:07:59
Hab darauf hier noch keine Anwort gefunden:

Läuft der Counter irgnedwann über? Fängt er wieder bei 0 an? (z.B. bei 65535?)
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: klausw am 07 Mai 2015, 16:39:25
Gute Frage, vermutlich ja. Aber da sollte jede Menge Luft sein. Evtl. findest du in der Perldoku was.
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: Nemo0815 am 07 Mai 2015, 17:24:56
Zitat von: klausw am 07 Mai 2015, 16:39:25
Gute Frage, vermutlich ja. Aber da sollte jede Menge Luft sein. Evtl. findest du in der Perldoku was.

Bei mir ist nicht viel Luft, es hängt ein Windmesser am GPIO und mit dem Counter wird die Windgeschwindigkeit berechnet :)
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: klausw am 07 Mai 2015, 17:44:08
Na dann lass es mal laufen und berichte :)
Das ist aber eher interesse.
Ich würde in die Routine zur Geschwindigkeitsberechnung einfach das zurücksetzen des Zählers einbauen.
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: Nemo0815 am 07 Mai 2015, 17:49:18
Zitat von: klausw am 07 Mai 2015, 17:44:08
Na dann lass es mal laufen und berichte :)
Das ist aber eher interesse.
Ich würde in die Routine zur Geschwindigkeitsberechnung einfach das zurücksetzen des Zählers einbauen.

Kann man den Counter zurücksetzen?
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: klausw am 07 Mai 2015, 19:31:38
Zitat von: Nemo0815 am 07 Mai 2015, 17:49:18
Kann man den Counter zurücksetzen?
Mit setreading, Syntax habe ich nicht im Kopf, steht aber in der commandref

Ich vermute aber, das du auch ohne zurücksetzen keinen Überlauf hinbekommst.
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: Nemo0815 am 11 Mai 2015, 13:30:13
Wie genau ist dieser Counter eigneltich? Bzw. bis zu welcher Frequenz lassen sich die GPIOs "abtasten"?

Irgendwie bekomme ich mit meinem Windmesser nur max. 20 km/h hin, was mir doch etwas wenig erscheint :)
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: klausw am 11 Mai 2015, 14:37:00
Zitat von: Nemo0815 am 11 Mai 2015, 13:30:13
Wie genau ist dieser Counter eigneltich? Bzw. bis zu welcher Frequenz lassen sich die GPIOs "abtasten"?

Irgendwie bekomme ich mit meinem Windmesser nur max. 20 km/h hin, was mir doch etwas wenig erscheint :)
Naja, das Counter ist wie das ganze Modul in Perl programmiert und greift auf den GPIO über das Dateisystem zu.
Bei jedem Interrupt werden Dateioperationen ausgeführt, die eine Weile dauern.
Triggerst du auf beide Flanken? Dann könnte es mit einer besser gehen.
Der Counter ist genau, solange die CPU genug Reserven hat. Werden beispielsweise gerade Plots berechnet dann kann es Probleme geben.
Das mit dem Counter hatte ich damals auf Wunsch eingebaut und mir nicht weiter Gedanken drüber gemacht.
Für eine Lösung die schneller zählen kann müsstest du was in C schreiben. Oder besser noch einen Mikrocontroller nehmen der die Geschw. direkt berechnet.

Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: Nemo0815 am 13 Mai 2015, 13:10:03
Zitat von: klausw am 11 Mai 2015, 14:37:00
Naja, das Counter ist wie das ganze Modul in Perl programmiert und greift auf den GPIO über das Dateisystem zu.
Bei jedem Interrupt werden Dateioperationen ausgeführt, die eine Weile dauern.
Triggerst du auf beide Flanken? Dann könnte es mit einer besser gehen.
Der Counter ist genau, solange die CPU genug Reserven hat. Werden beispielsweise gerade Plots berechnet dann kann es Probleme geben.
Das mit dem Counter hatte ich damals auf Wunsch eingebaut und mir nicht weiter Gedanken drüber gemacht.
Für eine Lösung die schneller zählen kann müsstest du was in C schreiben. Oder besser noch einen Mikrocontroller nehmen der die Geschw. direkt berechnet.

Danke für die Info.

Ich habe mittlerweile versucht mir mittels eines Python scripts über RPI.GPIO Lib zu behelfen.
(und mich da in die ISR callback zu hängen). Leider funktioniert das nur wenn FHEM nicht läuft, auch wenn ich den entsprechenden Pin nicht benutze.

Wenn FHEM läuft wird kein interrupt ausgelöst, es sei denn ich definiere den Pin zusätzlich in fhem als RPI_GPIO. Gibts da irgendeinen Rechte/Resourcen Konflikt mit der Art wir RPI_GPIO die Ports benutzt?

Hier ist der Code, wens interessiert (noch nicht perfekt):

#!/usr/bin/python3
# Windmesser
import RPi.GPIO as GPIO
import time, sys, os

# SoC als Pinreferenz waehlen
GPIO.setmode(GPIO.BCM)
GPIO.setup(27, GPIO.IN)


# Variable Counter definieren
sample_each_ms = 10000
counter = 0

t1 = time.time()

def Interrupt(channel):
   global counter
   counter = counter + 1
   print "Counter " + str(counter)

# Interrupt Event hinzufuegen. Pin 27, auf steigende Flanke reagieren und ISR "Interrupt" deklarieren
GPIO.add_event_detect(27, GPIO.RISING, callback = Interrupt, bouncetime = 10)


# Endlosschleife
while True:
   t2 = time.time()
   
   delta = t2-t1 
   if delta >= sample_each_ms/1000: 
    if counter > 0: 
      speed = ((((counter/delta) + 2) / 3) * 3.6)
      os.system('perl /opt/fhem/fhem.pl 7072 "setreading WindgeschwindigkeitExt state '+str(speed)+'"')
      sys.stdout.write('counter = {} \n'.format(counter))
      counter=0  
    else:
      os.system('perl /opt/fhem/fhem.pl 7072 "setreading WindgeschwindigkeitExt state 0"')
      sys.stdout.write('counter = 0 \n')
 
    t1=t2

Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: klausw am 16 Mai 2015, 22:51:14
Zitat von: Nemo0815 am 13 Mai 2015, 13:10:03
Danke für die Info.

Ich habe mittlerweile versucht mir mittels eines Python scripts über RPI.GPIO Lib zu behelfen.
(und mich da in die ISR callback zu hängen). Leider funktioniert das nur wenn FHEM nicht läuft, auch wenn ich den entsprechenden Pin nicht benutze.

Wenn FHEM läuft wird kein interrupt ausgelöst, es sei denn ich definiere den Pin zusätzlich in fhem als RPI_GPIO. Gibts da irgendeinen Rechte/Resourcen Konflikt mit der Art wir RPI_GPIO die Ports benutzt?

Sollte es nicht geben. Vom rpi_gpio Modul werden nur die Pins exortiert, die per define angelegt wurden. Eigentlich ist es auch so, das ein anderweitig verwendeter GPIO, für die Verwendung mit dem rpi_gpio Modul blockiert ist.
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: Nemo0815 am 18 Mai 2015, 11:50:51
Zitat von: klausw am 16 Mai 2015, 22:51:14
Sollte es nicht geben. Vom rpi_gpio Modul werden nur die Pins exortiert, die per define angelegt wurden. Eigentlich ist es auch so, das ein anderweitig verwendeter GPIO, für die Verwendung mit dem rpi_gpio Modul blockiert ist.

Danke,

Ich das Modul war auch nicht schuld, sorry für die Verwirrung. Anscheinend hat die RPI.GPIO Lib ein Problem sobald man os.system im Script benutzt (dann wird der Interrupt wieder disabled), mit subprocess.call dagegen funktioniert alles wie erwartet.

Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: MichaS am 16 Juni 2015, 13:10:40
Hallo zusammen,

nachdem ich nun einige Stunden damit verbracht habe, die Dateiberechtigungen zum GPIO Zugriff auf einem Raspi hinzubekommen, möchte ich euch gerne meine Erfahrungen hier mitteilen  :)

Installiert ist auf dem RPi das relativ aktuelle Raspbian 3.18.11+ von Ende April 2015 und die WiringPi Bibliothek. Nach dem Anlegen eines Outputs über define Relais RPI_GPIO 17 konnte ich das angeschlossene Relais auch schalten. Allerdings benötigt meine Relaisplatine eine invertierte Logik, schaltet also bei LOW ein. Mit dem Attribut active_low = yes sollte diese Invertierung greifen, hat es bei mir aber ersteinmal nicht getan. Ein Blick ins Log zeigt dann: Can't open file: Relais, active_low, also ein Berechtigungsproblem  :(

Nach Lesen der commandref ist der erste Ansatz, per sudo adduser fhem gpio den User fhem der Gruppe gpio zuzuorden - Leider gibt es scheinbar im aktuellen Raspbian keine solche Gruppe mehr.

Zweiter Ansatz aus der commandref: in der Datei rc.local die Berechtigungen setzen, bevor Fhem startet. Die Einträge von dort übernommen und angepasst - leider immer noch kein Zugriff auf die Dateien, diese werden nach Reboot immer wieder mit root:root neu angelegt und sind von fhem aus nicht beschreibbar.

Nach Recherche im Web habe ich dann herausgefunden, das es in neueren Raspian Versionen eine Veränderung im Device Tree gegeben hat und das beschriebene Verzeichnis /sys/devices/virtual nicht mehr existiert. Nun findet man die Datein hier /sys/devices/soc/....

Folgender Eintrag in der rc.local funktioniert nun endlich auch mit dem aktuellen Raspian:
echo 17 > /sys/class/gpio/export
chown -R fhem:root /sys/devices/soc/*.gpio/*
chown -R fhem:root /sys/class/gpio/*


Gruß Micha

Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: klausw am 16 Juni 2015, 13:46:36
Zitat von: MichaS am 16 Juni 2015, 13:10:40
Folgender Eintrag in der rc.local funktioniert nun endlich auch mit dem aktuellen Raspian:
echo 17 > /sys/class/gpio/export
chown -R fhem:root /sys/devices/soc/*.gpio/*
chown -R fhem:root /sys/class/gpio/*


Danke für den Hinweis. So langsam wir es unübersichtlich in der commandref ;)
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: klausw am 23 Juni 2015, 21:36:53
Zitat von: MichaS am 16 Juni 2015, 13:10:40
Hallo zusammen,

nachdem ich nun einige Stunden damit verbracht habe, die Dateiberechtigungen zum GPIO Zugriff auf einem Raspi hinzubekommen, möchte ich euch gerne meine Erfahrungen hier mitteilen  :)

Installiert ist auf dem RPi das relativ aktuelle Raspbian 3.18.11+ von Ende April 2015 und die WiringPi Bibliothek. Nach dem Anlegen eines Outputs über define Relais RPI_GPIO 17 konnte ich das angeschlossene Relais auch schalten. Allerdings benötigt meine Relaisplatine eine invertierte Logik, schaltet also bei LOW ein. Mit dem Attribut active_low = yes sollte diese Invertierung greifen, hat es bei mir aber ersteinmal nicht getan. Ein Blick ins Log zeigt dann: Can't open file: Relais, active_low, also ein Berechtigungsproblem  :(

Nach Lesen der commandref ist der erste Ansatz, per sudo adduser fhem gpio den User fhem der Gruppe gpio zuzuorden - Leider gibt es scheinbar im aktuellen Raspbian keine solche Gruppe mehr.

Zweiter Ansatz aus der commandref: in der Datei rc.local die Berechtigungen setzen, bevor Fhem startet. Die Einträge von dort übernommen und angepasst - leider immer noch kein Zugriff auf die Dateien, diese werden nach Reboot immer wieder mit root:root neu angelegt und sind von fhem aus nicht beschreibbar.

Nach Recherche im Web habe ich dann herausgefunden, das es in neueren Raspian Versionen eine Veränderung im Device Tree gegeben hat und das beschriebene Verzeichnis /sys/devices/virtual nicht mehr existiert. Nun findet man die Datein hier /sys/devices/soc/....

Folgender Eintrag in der rc.local funktioniert nun endlich auch mit dem aktuellen Raspian:
echo 17 > /sys/class/gpio/export
chown -R fhem:root /sys/devices/soc/*.gpio/*
chown -R fhem:root /sys/class/gpio/*


Ich habe gerade auf meinem Raspberry Pi B 512 die Version 2015-05-05-raspbian-wheezy installiert.
Die Gruppe gpio ist vorhanden.
Alles geht auf Anhieb OHNE wiringpi (ausser pud_resistor natürlich):

pi@raspberrypi512 /sys/class/gpio $ ls -l
insgesamt 0
-rwxrwx--- 1 root gpio 4096 Jan  1  1970 export
lrwxrwxrwx 1 root gpio    0 Jan  1  1970 gpiochip0 -> ../../devices/soc/20200000.gpio/gpio/gpiochip0
-rwxrwx--- 1 root gpio 4096 Jan  1  1970 unexport


pi@raspberrypi512 /sys/class/gpio $ echo 27 > export
pi@raspberrypi512 /sys/class/gpio $ ls -l gpio27/
insgesamt 0
-rwxrwx--- 1 root gpio 4096 Jun 23 21:31 active_low
lrwxrwxrwx 1 root gpio    0 Jun 23 21:31 device -> ../../../20200000.gpio
-rwxrwx--- 1 root gpio 4096 Jun 23 21:31 direction
-rwxrwx--- 1 root gpio 4096 Jun 23 21:31 edge
lrwxrwxrwx 1 root gpio    0 Jun 23 21:31 subsystem -> ../../../../../class/gpio
-rwxrwx--- 1 root gpio 4096 Jun 23 21:31 uevent
-rwxrwx--- 1 root gpio 4096 Jun 23 21:31 value


Bist du sicher das du die aktuelle Version installiert hast?
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: klausw am 23 Juni 2015, 22:19:03
Ich habe gerade auf meinem Raspberry Pi2 B die Version 2015-05-05-raspbian-wheezy installiert.
Die Gruppe gpio ist vorhanden.
Alles geht auf Anhieb OHNE wiringpi (ausser pud_resistor natürlich):

pi@raspberrypib2 /sys/class/gpio $ ls -l
insgesamt 0
-rwxrwx--- 1 root gpio 4096 Jan  1  1970 export
lrwxrwxrwx 1 root gpio    0 Jan  1  1970 gpiochip0 -> ../../devices/soc/20200000.gpio/gpio/gpiochip0
-rwxrwx--- 1 root gpio 4096 Jan  1  1970 unexport


pi@raspberrypib2 /sys/class/gpio $ echo 27 > export
pi@raspberrypib2 /sys/class/gpio $ ls -l gpio27/
insgesamt 0
-rwxrwx--- 1 root gpio 4096 Jun 23 21:31 active_low
lrwxrwxrwx 1 root gpio    0 Jun 23 21:31 device -> ../../../20200000.gpio
-rwxrwx--- 1 root gpio 4096 Jun 23 21:31 direction
-rwxrwx--- 1 root gpio 4096 Jun 23 21:31 edge
lrwxrwxrwx 1 root gpio    0 Jun 23 21:31 subsystem -> ../../../../../class/gpio
-rwxrwx--- 1 root gpio 4096 Jun 23 21:31 uevent
-rwxrwx--- 1 root gpio 4096 Jun 23 21:31 value


[/quote]
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: cocktailyogi am 27 Juni 2015, 10:52:02
Hallo,

nur zur Info. Mit aktuellen Raspbian von letzter Woche habe ich exakt das gleiche Problem, wie MichaS.
Die Rechte nach einem Naustart sind root:root.

Gruß,
Yogi
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: cocktailyogi am 27 Juni 2015, 11:05:18
Hallo nochmal,

ich habe das jetzt nochmal nachgestellt.

Folgendes Problem:
attribut active_low für GPIO wird wegen Berechtigungsproblem nicht geschrieben

Folgende Ausgangslage:
- aktuelles Rasbian, frisch installiert auf Raspi2
- Fhem 5.6 mit allen updates
- wiringPi installiert (ohne das geht gar nichts!)
- der User fhem ist Mitglied in Gruppe gpio

Folgende Berechtigungen werden angezeigt:
root@server01:~# ls -l /sys/class/gpio/gpio13/
insgesamt 0
-rw-r--r-- 1 root root    4096 Jun 27 10:54 active_low
lrwxrwxrwx 1 root root       0 Jun 27 10:54 device -> ../../../3f200000.gpio
-rw-r--r-- 1 root root    4096 Jun 27 10:53 direction
-rw-r--r-- 1 fhem dialout 4096 Jun 27 10:53 edge
lrwxrwxrwx 1 root root       0 Jun 27 10:54 subsystem -> ../../../../../../class/gpio
-rw-r--r-- 1 root root    4096 Jun 27 10:54 uevent
-rw-r--r-- 1 fhem dialout 4096 Jun 27 10:53 value


Einträge in der rc.local jeglicher Art bringen gar keine Änderung.
Wenn ich die Rechte für die Datei active_low manuell anpasse funktioniert alles, jedoch nach einem Neustart ist alles wieder weg. Das RPI_GPIO-Modul benutzt bei manchen Attributen (z.B. Direction) scheinbar das WiringPi-Tool, um sich die Rechte zu besorgen. Bei dem Attribute "Active_low" jedoch nicht. Könnte man das anpassen?

gruß,
Yogi
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: klausw am 29 Juni 2015, 12:46:58
Zitat von: cocktailyogi am 27 Juni 2015, 10:52:02
nur zur Info. Mit aktuellen Raspbian von letzter Wiche habe ich exakt dad gleiche Problem, wie MichaS.
Die Rechte nach einem Naustart sind root:root.
das verstehe ich nicht, habe es ja getestet und es funktionierte bei mir.
Der vermutlich einzige unterschied ist, das ich die frisch geflashte SD Karte vorher in einem B getestet habe.
Was zeigt bei dir cat /proc/version an?

Zitat von: cocktailyogi am 27 Juni 2015, 11:05:18
Folgendes Problem:
attribut active_low für GPIO wird wegen Berechtigungsproblem nicht geschrieben

Folgende Ausgangslage:
- aktuelles Rasbian, frisch installiert auf Raspi2
- Fhem 5.6 mit allen updates
- wiringPi installiert (ohne das geht gar nichts!)
- der User fhem ist Mitglied in Gruppe gpio

Folgende Berechtigungen werden angezeigt:
root@server01:~# ls -l /sys/class/gpio/gpio13/
insgesamt 0
-rw-r--r-- 1 root root    4096 Jun 27 10:54 active_low
lrwxrwxrwx 1 root root       0 Jun 27 10:54 device -> ../../../3f200000.gpio
-rw-r--r-- 1 root root    4096 Jun 27 10:53 direction
-rw-r--r-- 1 fhem dialout 4096 Jun 27 10:53 edge
lrwxrwxrwx 1 root root       0 Jun 27 10:54 subsystem -> ../../../../../../class/gpio
-rw-r--r-- 1 root root    4096 Jun 27 10:54 uevent
-rw-r--r-- 1 fhem dialout 4096 Jun 27 10:53 value


Einträge in der rc.local jeglicher Art bringen gar keine Änderung.
Wenn ich die Reche für dei Datei active_low manuell anpasse funktioniert alles, jedoch nach einem Neustart ist alles wieder weg. Das RPI_GPIO-Modul benutzt bei manchen Attributen (z.B. Direction) scheinbar das WiringPi-Tool, um sich die Rechte zu besorgen. Bei dem Attribute "Active_low" jedoch nicht. Könnte man das anpassen?
Wenn du WiringPi installiert hast dann werden die GPIOs durch das gpio Utility von WiringPi exportiert. Dieses setzt die Rechte wie du es hier angibst. Darauf habe ich aber keinen Einfluss. Die WiringPi Implementierung ist eher eine Altlast.
Kurz gesagt: Wenn WiringPi genutzt wird dann sind nur edge und value beschreibbar.

Aber zurück zum eigentlichen Problem.
sudo adduser fhem gpio hat ohne Fehlermeldung funktioniert?
Das würde heissen, es gint die Gruppe GPIO auch und damit sollten auch die GPIO Rechte passen.
Was zeigt denn:
ls -l /sys/class/gpio/ an?
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: cocktailyogi am 01 Juli 2015, 17:06:50
Hi, sorry für die späte Meldung..... Ich habe keine Benachrichtigung erhalten....

Also zum Thema:

Ohne WiringPi geht bei mir gar nichts.

root@server01:~# cat /proc/version
Linux version 4.0.7-v7+ (dc4@dc4-XPS13-9333) (gcc version 4.8.3 20140303 (prerelease) (crosstool-NG linaro-1.13.1+bzr2650 - Linaro GCC 2014.03) ) #801 SMP PREEMPT Tue Jun 30 18:38:23 BST 2015

root@server01:~# sudo adduser fhem gpio
Der Benutzer ▒fhem▒ ist bereits ein Mitglied der Gruppe ▒gpio▒.

root@server01:~# ls -l /sys/class/gpio/
insgesamt 0
-rwxrwx--- 1 root gpio 4096 Jul  1 16:51 export
lrwxrwxrwx 1 root gpio    0 Jul  1 16:51 gpio13 -> ../../devices/platform/soc/3f200000.gpio/gpio/gpio13
lrwxrwxrwx 1 root gpio    0 Jul  1 16:51 gpio17 -> ../../devices/platform/soc/3f200000.gpio/gpio/gpio17
lrwxrwxrwx 1 root gpio    0 Jan  1  1970 gpiochip0 -> ../../devices/platform/soc/3f200000.gpio/gpio/gpiochip0
-rwxrwx--- 1 root gpio 4096 Jul  1 16:51 unexport

Soweit so gut, aber nun schau dir die Rechte in den Unterordnern an....
root@server01:~# ls -l /sys/class/gpio/gpio13/*
-rw-r--r-- 1 root root    4096 Jul  1 16:51 /sys/class/gpio/gpio13/active_low
lrwxrwxrwx 1 root root       0 Jul  1 17:00 /sys/class/gpio/gpio13/device -> ../../../3f200000.gpio
-rw-r--r-- 1 root root    4096 Jul  1 16:51 /sys/class/gpio/gpio13/direction
-rw-r--r-- 1 fhem dialout 4096 Jul  1 16:51 /sys/class/gpio/gpio13/edge
lrwxrwxrwx 1 root root       0 Jul  1 16:51 /sys/class/gpio/gpio13/subsystem -> ../../../../../../class/gpio
-rw-r--r-- 1 root root    4096 Jul  1 16:51 /sys/class/gpio/gpio13/uevent
-rw-r--r-- 1 fhem dialout 4096 Jul  1 16:52 /sys/class/gpio/gpio13/value

Dort hat die Gruppe GPIO irgenwie nichts mehr zu melden.... Keine Ahnung, woher das kommt-

Gruß,
Yogi

Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: klausw am 02 Juli 2015, 18:45:38
Zitat von: cocktailyogi am 01 Juli 2015, 17:06:50

root@server01:~# cat /proc/version
Linux version 4.0.7-v7+ (dc4@dc4-XPS13-9333) (gcc version 4.8.3 20140303 (prerelease) (crosstool-NG linaro-1.13.1+bzr2650 - Linaro GCC 2014.03) ) #801 SMP PREEMPT Tue Jun 30 18:38:23 BST 2015

Du hast natürlich auch gleich nen Kernelupdate auf den 4er gemacht  8)
Nicht das es daran liegt.

Zitat von: cocktailyogi am 01 Juli 2015, 17:06:50

root@server01:~# ls -l /sys/class/gpio/
insgesamt 0
-rwxrwx--- 1 root gpio 4096 Jul  1 16:51 export
lrwxrwxrwx 1 root gpio    0 Jul  1 16:51 gpio13 -> ../../devices/platform/soc/3f200000.gpio/gpio/gpio13
lrwxrwxrwx 1 root gpio    0 Jul  1 16:51 gpio17 -> ../../devices/platform/soc/3f200000.gpio/gpio/gpio17
lrwxrwxrwx 1 root gpio    0 Jan  1  1970 gpiochip0 -> ../../devices/platform/soc/3f200000.gpio/gpio/gpiochip0
-rwxrwx--- 1 root gpio 4096 Jul  1 16:51 unexport

Das sieht normal aus. Mitglieder der Gruppe gpio dürfen auf export und unexport voll zugreifen.
Hast du die Rechte manipuliert? Also über die rc.local oder so?

Versuche einmal als Nutzer "pi" (der sollte natürlich auch in der Gruppe GPIO sein):
echo 10 > /sys/class/gpio/export
und schaue dir wenn es funktioniert hat mit
ls -l /sys/class/gpio/gpio10/
die Rechte an.

Zitat von: cocktailyogi am 01 Juli 2015, 17:06:50
Soweit so gut, aber nun schau dir die Rechte in den Unterordnern an....
root@server01:~# ls -l /sys/class/gpio/gpio13/*
-rw-r--r-- 1 root root    4096 Jul  1 16:51 /sys/class/gpio/gpio13/active_low
lrwxrwxrwx 1 root root       0 Jul  1 17:00 /sys/class/gpio/gpio13/device -> ../../../3f200000.gpio
-rw-r--r-- 1 root root    4096 Jul  1 16:51 /sys/class/gpio/gpio13/direction
-rw-r--r-- 1 fhem dialout 4096 Jul  1 16:51 /sys/class/gpio/gpio13/edge
lrwxrwxrwx 1 root root       0 Jul  1 16:51 /sys/class/gpio/gpio13/subsystem -> ../../../../../../class/gpio
-rw-r--r-- 1 root root    4096 Jul  1 16:51 /sys/class/gpio/gpio13/uevent
-rw-r--r-- 1 fhem dialout 4096 Jul  1 16:52 /sys/class/gpio/gpio13/value

Dort hat die Gruppe GPIO irgenwie nichts mehr zu melden.... Keine Ahnung, woher das kommt-
Naja, das ist normal, wenn die Pins über wiringpi angelegt werden.
Der lässt einen nur auf edge und value.


Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: JimKnopf182 am 04 Juli 2015, 18:03:36
Hallo zusammen,

ich würde mich gerne auch mal hier anschließen.
Und zwar habe ich folgendes Problem, dass ich per WiringPi ein Relais schalte, welches ich über FHEM triggere per Schreibtischlampe {system("sudo /wiringPi/relais1.sh")}.
Also fhem installiert, dummy und notify einprogrammiert und das ganze funktioniert. Jedoch NUR bis zum ersten reboot der Raspberry, danach tut sich nichts mehr.

sudo chmod 777 /sys/class/gpio/export habe ich auch schon ausprobiert, löst aber leider mein Problem nicht.

chown -R fhem:root /sys/devices/soc/*.gpio/*
chown -R fhem:root /sys/class/gpio/*
habe ich auch schon probiert, aber bringt auch nichts.

Mit root und pi, kann ich die gpios mit wiringpi wunderbar schalten.

Aber bekomme es einfach nicht ans laufen, hat jemand ne Idee?

Grüße
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: klausw am 05 Juli 2015, 11:38:02
Zitat von: JimKnopf182 am 04 Juli 2015, 18:03:36
Und zwar habe ich folgendes Problem, dass ich per WiringPi ein Relais schalte, welches ich über FHEM triggere per Schreibtischlampe {system("sudo /wiringPi/relais1.sh")}.
Also fhem installiert, dummy und notify einprogrammiert und das ganze funktioniert. Jedoch NUR bis zum ersten reboot der Raspberry, danach tut sich nichts mehr
....
Mit root und pi, kann ich die gpios mit wiringpi wunderbar schalten.
Läuft dein Shellscript nur als superuser?
Dann kann es daran liegen, das der fhem User nicht in der sudoers Gruppe ist.
Wieso nutzt du eigentlich nicht das rpi_gpio Modul von Fhem?
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: MichaS am 08 Juli 2015, 21:31:18
Nachdem bei mir ja die Gruppe GPIO fehlte, hatte ich einige Posts vorher mit der Kernelversion 3.18 und dem dort geänderten Devicetree mit folgenden Einträgen in der rc.local Erfolg (Beispiel GPIO17)
echo 17 > /sys/class/gpio/export
chown -R fhem:root /sys/devices/soc/*.gpio/*
chown -R fhem:root /sys/class/gpio/*


Nun nach einem Update auf die neueste Kernelversion 4.0 (über Hexxeh rpi-update Script) gibt es schon wieder eine Änderung des Devicetree - es kommt ein Unterverzeichnis "platform" hinzu  >:(  Nun funkionieren folgende Einträge für GPIO17:
echo 17 > /sys/class/gpio/export
chown -R fhem:root /sys/devices/platform/soc/*.gpio/*
chown -R fhem:root /sys/class/gpio/*


Also vorher immer mit ls -l /sys/class/gpio/ prüfen wie die Verzeichnisse bei euch wirklich liegen - dann sollte es funktionieren, wenn der von klausw beschriebene Ansatz mit frischer Installation und GPIO Gruppe nicht funktionieren will  8)

Grüße
Micha
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: klausw am 08 Juli 2015, 22:04:39
Zitat von: MichaS am 08 Juli 2015, 21:31:18
Nun nach einem Update auf die neueste Kernelversion 4.0 (über Hexxeh rpi-update Script) gibt es schon wieder eine Änderung des Devicetree - es kommt ein Unterverzeichnis "platform" hinzu  >:(  Nun funkionieren folgende Einträge für GPIO17:
Es lebe die Kontinuität  ;)

Vielleicht liegt es an wiringpi ... also das Problem mit der gpio Gruppe
Ich habe immer ohne getestet.
Das Werde ich bei Gelegenheit nachholen
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: Markus9 am 29 Juli 2015, 18:35:42
Entweder ich hab's in einem vorhergegangenen Post überlesen oder es hilft vielleicht noch jemandem (oder ich bin der einzige Trottel der drauf reinfällt.)

Ich habe schon einiges vorher mit WiringPi gemacht, daher bin ich von der GPIO-Nummerierung von WiringPi ausgegangen. Die verwendet die Spalte 'Name' während man in FHEM und rc.local die Spalte 'BCM' für die Definitionen verwenden muss. Kernel-Update, FHEM-Update, 5 Knoten im Hirn, aber kaum macht man's richtig funktioniert's  ;)
 
pi@raspfhemsat1 ~ $ gpio readall
+-----+-----+---------+------+---+-Model B2-+---+------+---------+-----+-----+
| BCM | wPi |   Name  | Mode | V | Physical | V | Mode | Name    | wPi | BCM |
+-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+
|     |     |    3.3v |      |   |  1 || 2  |   |      | 5v      |     |     |
|   2 |   8 |   SDA.1 |   IN | 1 |  3 || 4  |   |      | 5V      |     |     |
|   3 |   9 |   SCL.1 |   IN | 1 |  5 || 6  |   |      | 0v      |     |     |
|   4 |   7 | GPIO. 7 |  OUT | 0 |  7 || 8  | 1 | ALT0 | TxD     | 15  | 14  |
|     |     |      0v |      |   |  9 || 10 | 1 | ALT0 | RxD     | 16  | 15  |
|  17 |   0 | GPIO. 0 |   IN | 0 | 11 || 12 | 1 | IN   | GPIO. 1 | 1   | 18  |
|  27 |   2 | GPIO. 2 |   IN | 1 | 13 || 14 |   |      | 0v      |     |     |
|  22 |   3 | GPIO. 3 |   IN | 1 | 15 || 16 | 0 | IN   | GPIO. 4 | 4   | 23  |
|     |     |    3.3v |      |   | 17 || 18 | 0 | IN   | GPIO. 5 | 5   | 24  |
|  10 |  12 |    MOSI |   IN | 0 | 19 || 20 |   |      | 0v      |     |     |
|   9 |  13 |    MISO |   IN | 0 | 21 || 22 | 0 | IN   | GPIO. 6 | 6   | 25  |
|  11 |  14 |    SCLK |   IN | 0 | 23 || 24 | 1 | IN   | CE0     | 10  | 8   |
|     |     |      0v |      |   | 25 || 26 | 1 | IN   | CE1     | 11  | 7   |
+-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+
|  28 |  17 | GPIO.17 |   IN | 0 | 51 || 52 | 0 | IN   | GPIO.18 | 18  | 29  |
|  30 |  19 | GPIO.19 |   IN | 0 | 53 || 54 | 0 | IN   | GPIO.20 | 20  | 31  |
+-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+
| BCM | wPi |   Name  | Mode | V | Physical | V | Mode | Name    | wPi | BCM |
+-----+-----+---------+------+---+-Model B2-+---+------+---------+-----+-----+

Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: klausw am 29 Juli 2015, 19:16:34
Zitat von: Markus9 am 29 Juli 2015, 18:35:42
Entweder ich hab's in einem vorhergegangenen Post überlesen oder es hilft vielleicht noch jemandem (oder ich bin der einzige Trottel der drauf reinfällt.)

Ich habe schon einiges vorher mit WiringPi gemacht, daher bin ich von der GPIO-Nummerierung von WiringPi ausgegangen. Die verwendet die Spalte 'Name' während man in FHEM und rc.local die Spalte 'BCM' für die Definitionen verwenden muss. Kernel-Update, FHEM-Update, 5 Knoten im Hirn, aber kaum macht man's richtig funktioniert's  ;)
 
pi@raspfhemsat1 ~ $ gpio readall
+-----+-----+---------+------+---+-Model B2-+---+------+---------+-----+-----+
| BCM | wPi |   Name  | Mode | V | Physical | V | Mode | Name    | wPi | BCM |
+-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+
|     |     |    3.3v |      |   |  1 || 2  |   |      | 5v      |     |     |
|   2 |   8 |   SDA.1 |   IN | 1 |  3 || 4  |   |      | 5V      |     |     |
|   3 |   9 |   SCL.1 |   IN | 1 |  5 || 6  |   |      | 0v      |     |     |
|   4 |   7 | GPIO. 7 |  OUT | 0 |  7 || 8  | 1 | ALT0 | TxD     | 15  | 14  |
|     |     |      0v |      |   |  9 || 10 | 1 | ALT0 | RxD     | 16  | 15  |
|  17 |   0 | GPIO. 0 |   IN | 0 | 11 || 12 | 1 | IN   | GPIO. 1 | 1   | 18  |
|  27 |   2 | GPIO. 2 |   IN | 1 | 13 || 14 |   |      | 0v      |     |     |
|  22 |   3 | GPIO. 3 |   IN | 1 | 15 || 16 | 0 | IN   | GPIO. 4 | 4   | 23  |
|     |     |    3.3v |      |   | 17 || 18 | 0 | IN   | GPIO. 5 | 5   | 24  |
|  10 |  12 |    MOSI |   IN | 0 | 19 || 20 |   |      | 0v      |     |     |
|   9 |  13 |    MISO |   IN | 0 | 21 || 22 | 0 | IN   | GPIO. 6 | 6   | 25  |
|  11 |  14 |    SCLK |   IN | 0 | 23 || 24 | 1 | IN   | CE0     | 10  | 8   |
|     |     |      0v |      |   | 25 || 26 | 1 | IN   | CE1     | 11  | 7   |
+-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+
|  28 |  17 | GPIO.17 |   IN | 0 | 51 || 52 | 0 | IN   | GPIO.18 | 18  | 29  |
|  30 |  19 | GPIO.19 |   IN | 0 | 53 || 54 | 0 | IN   | GPIO.20 | 20  | 31  |
+-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+
| BCM | wPi |   Name  | Mode | V | Physical | V | Mode | Name    | wPi | BCM |
+-----+-----+---------+------+---+-Model B2-+---+------+---------+-----+-----+

In der Commandref gibt's eine Tabelle dafür. Da wiringpi nicht notwendig ist macht auch dessen Nummerierung keinen Sinn 8)
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: Zenz am 27 August 2015, 19:03:32
@klausw

Zuerst einmal recht herzlichen Dank für die Bereitstellung deines tollen Moduls, welches
in den vergangenen Monaten nach einem zusätzlichem "sudo adduser fhem gpio"
hervorragend funktioniert hat.

@all
Nun habe ich in meinem Übereifer leider ein Update auf meinem "Raspberry Pi 2" durchgeführt  =>  nun Linux 4.1.6-v7+ auf armv7l
Das Ergebnis ist, dass Fhem keine Rechte mehr besitzt z.B "active_low" zu schalten.
Im Fhem-Log erhalte ich den Eintrag "Can't open file: Relaise_1, active_low"

Nun habe ich mit einem "sudo chmod –R 777 /sys/devices/platform/soc/3f200000.gpio/gpio/*" leider nur eine unbefriedigende Lösung gefunden,
denn das funktioniert nur bis zum nächsten Neustart des Raspberry's.
Dann hat wieder nur mehr die Gruppe: root mit dem Eigentümer: root zugriff auf den "gpio-Ordner" (0755).

Hat da vielleicht jemand das gleiche Problem bzw. eine Lösung dafür?

Vielen Dank
Zenz
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: Wernieman am 28 August 2015, 11:45:04
Eine passende UDEV-Regel, welche die Gruppierung passend setzt.

Kann nur momentan nicht zu hause nachsehen, wie die Regel lauten müsste,
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: Zenz am 28 August 2015, 13:43:07
Hallo Wernieman!

Wäre toll, wenn du mir mit eine passenden UDEV-Regel helfen könntest,
habe leider keine Ahnung davon, ist komplettes "Neuland".

Habe zwar versucht mich mit Google schnell ein wenig einzulesen, aber ist leider ziemlich verwirrend.

Vielen Dank
Zenz
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: Wernieman am 28 August 2015, 14:16:29
Mit "Glück" morgen .. habe vorhin aus der Ferne das System abgeschossen (Fehler saß vor dem Bildschirm  :-[ )
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: Zenz am 30 August 2015, 12:14:14
Hallo Wernieman,

wie geht's deinem System?

Wenn gut, darf ich dich nochmals bitten, ob du mir deine passenden UDEV-Regel
zur Verfügung stellen könntest.
Ich komme mit diesen "verzwickten" Berechtigungen einfach nicht zurecht.

mfG
Zenz
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: danieljo am 30 August 2015, 14:32:46
Ich muss hier leider auch nochmal fragen wegen dem GPIO am RPi2 mit Rasbpian 4.1.6-v7 und aktuellem FHEM frisch installiert.

Soweit funktioniert alles aber das attribut active-low kann nicht gesetzt werden. Erst wenn ich die Berechtigungen vom Ordner /sys/devices/platform/soc/3f200000.gpio/gpio/ auf 0777 ändere schreibt FHEM das attr active low auch in die Datei. Jedoch nach jedem reboot sind die Berechtigungen wieder weg. Und im Log steht das FHEM keine Schreibrechte auf die Datei "active_low" hat.

Benutzer FHEM ist in Gruppe Root. Könnte mir da bitte jemand unter die arme greifen. Habe den Thread hier schon durchgelesen und einiges ausprobiert aber die Berechtigungen setzen sich immer wieder zurück. Ansonsten funktioniert alles super.
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: Wernieman am 31 August 2015, 09:25:45
1. Wenn der User FHEM in der gruppe root ist, dann ist er root!

Implementiere am besten ein sichere Rechtevergabe, So machst Du Dein System sehr offen ....

2. Setze Dir eine Udev-Regel:
z.B. für usb:
SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", MODE="0664", GROUP="usb"
Dieses must Du "nur noch" für gpio adaptieren ...

z.B. siehe: https://www.raspberrypi.org/forums/viewtopic.php?f=29&t=9667 (https://www.raspberrypi.org/forums/viewtopic.php?f=29&t=9667)
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: Zenz am 31 August 2015, 18:52:53
@Wernieman
Danke für den Tipp mit den Udev-Regel.

Nach langer Recherche habe ich folgende Lösung gefunden (weiss nicht ob ich den Link hier posten darf oder nicht),
die mir nach jedem Neustart des Raspberry bzw. Fhem erlaubt, diverse GPIO Befehle ohne Berechtigungsprobleme
auszuführen.
Auf meinem Raspberry läuft Linux 4.1.6-v7+ auf armv7l


sudo usermod -a -G gpio fhem

eine Datei erzeugen
sudo nano /etc/udev/rules.d/80-gpio-noroot.rules


folgenden Inhalt einfügen
# /etc/udev/rules.d/80-gpio-noroot.rules
# Zugriff auf GPIO ohne root-Rechte ermoeglichen
#
# Gruppe aendern
SUBSYSTEM=="gpio", RUN+="/bin/chown -R root.gpio /sys/devices/platform/soc/3f200000.gpio/gpio"
# Sticky-Bit setzen
SUBSYSTEM=="gpio", RUN+="/bin/chmod g+s /sys/devices/platform/soc/3f200000.gpio/gpio"
# Zugriffsrechte setzen
SUBSYSTEM=="gpio", RUN+="/bin/chmod -R ug+rw /sys/devices/platform/soc/3f200000.gpio/gpio/"



sudo service udev restart

sudo udevadm trigger --subsystem-match=gpio


Fragen bezüglich dieser Lösung kann ich leider nicht beantworten, da ich keine Ahnung von Linux habe
und diese Lösung nicht von mir stammt, sondern dieser Code nur auf die neue Stucktur von mir geändert worden ist.

Ich hoffe diese Lösung funktioniert auch bei anderen und bedanke mich für die Hilfe, die ich in diesem Forum
erfahren konnte.

mfG
Zenz
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: Wernieman am 31 August 2015, 21:13:36
Was Du pobieren könntest, kan selber malngels RasPi nicht testen:

Anstatt Deiner Zeile in die UDEV-Datei:
SUBSYSTEM=="gpio", MODE="0664", GROUP="gpio"

Allerdings gibt Du damit das komplette GPIO an die Gruppe gpio frei (teoretisch, praktisch s.o.)

Was Du bei Deiner Lösung machst, ist das Setzen der Zugriffsregel hart per externen Programm. besser ist eigentlich, das interne zu verwenden.

Andererseits ... "newer change a running system"  ;D

Wenn Du experimentierfreudig bist ... könntest Du eventuell testen?
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: lullebammel am 02 September 2015, 17:45:56
Hi ich hab mir auch zwei Abende um die Ohren geschlagen.

Macht einfach ein Downgrade auf  3.12.35 vom 19.12.2014 und gut ist.

sudo rpi-update ba43047bec24d5f0a4150f09a37884240f8926d2
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: SmartFan am 04 September 2015, 17:31:45
Hallo Allerseits,

bei mir geht nun nach der Sommerpause auch nix mehr und ich haben den ganzen Thread durchgearbeitet und die Vorschläge alle gemacht.

Bin nun auch wie Du schreibst auf alte Version zurück gegangen. Leider geht immer noch nix.

Gruß Michael
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: Ellert am 07 September 2015, 19:44:25
Leider habe auch ich das hier beschriebene Problem der nicht funktionierenden GPIOs nach dem Upgrade des RasPi B+ auf den Kernel 4.16. Ich bin jetzt zurück auf mein vorher gezogenes Backup nach dem folgendes nicht funktioniert hat:

Zitat von: Wernieman am 31 August 2015, 21:13:36
Was Du pobieren könntest, kan selber malngels RasPi nicht testen:

Anstatt Deiner Zeile in die UDEV-Datei:
SUBSYSTEM=="gpio", MODE="0664", GROUP="gpio"

Allerdings gibt Du damit das komplette GPIO an die Gruppe gpio frei (teoretisch, praktisch s.o.)

Was Du bei Deiner Lösung machst, ist das Setzen der Zugriffsregel hart per externen Programm. besser ist eigentlich, das interne zu verwenden.

Andererseits ... "newer change a running system"  ;D

Wenn Du experimentierfreudig bist ... könntest Du eventuell testen?

Folgendes habe ich beobachtet:
Die Gruppe gpio ist vorhanden, pi und fhem sind Mitglieder der Gruppe gpio.
Die in FHEM definierten GPIOs (bei mir 24 und 25) werden in /sys/class/gpio auch richtig angelegt, nach dem Start von FHEM.
Nur das Device in FHEM-wird nicht angelegt. Und im Log steht, dass auf das Verzeichnis /sys/class... und das Verzeichnis /usr/local/gpio... nicht zugegriffen werden kann, bzw., dass es nicht existiert. Das Verzeichniss  /usr/local/gpio... existiert bei mir nicht.

Eine Lösung kenne ich nicht.

Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: klausw am 07 September 2015, 19:49:45
Seltsam, wenn FHEM die gpios anlegt muss es doch zugriff haben.
Was bringt:
ls -l /sys/class/gpio
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: SmartFan am 08 September 2015, 07:17:34
so siehts aus.

pi@raspberrypi ~ $ ls -l /sys/class/gpio
total 0
-rwxrwx--- 1 root gpio 4096 Sep  6 19:58 export
lrwxrwxrwx 1 root gpio    0 Sep  6 19:58 gpio21 -> ../../devices/platform/soc/3f200000.gpio/gpio/gpio21
lrwxrwxrwx 1 root gpio    0 Jan  1  1970 gpiochip0 -> ../../devices/platform/soc/3f200000.gpio/gpio/gpiochip0
-rwxrwx--- 1 root gpio 4096 Jan  1  1970 unexport
pi@raspberrypi ~ $


Gruss Michael

Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: Ellert am 08 September 2015, 08:00:32
Ich habe gerade auf meinem Testsystem einen GPIO definiert mit: define gpio24 RPI_GPIO 24

Es erscheint die Fehlermeldung: gpio24: failed to export pin gpio24

Im Log steht:
2015.09.08 07:49:49 1: gpio24: can't export gpio24, no write access to /sys/class/gpio/export and file /usr/local/bin/gpio doesnt exist
2015.09.08 07:49:49 1: gpio24: failed to export pin gpio24
2015.09.08 07:49:49 1: define gpio24 RPI_GPIO 24: gpio24: failed to export pin gpio24

Die Datei /usr/local/bin/gpio existiert nicht. Weder auf dem funktionierenden Sytem, noch auf dem nicht funktionierenden.
Der GPIO wird allerdings angelegt, wie SmartFan schon geschrieben hat:
pi@raspberrypi ~ $ ls -l /sys/class/gpio
total 0
-rwxrwx--- 1 root gpio 4096 Sep  8 07:49 export
lrwxrwxrwx 1 root gpio    0 Sep  8 07:49 gpio24 -> ../../devices/platform/soc/20200000.gpio/gpio/gpio24
lrwxrwxrwx 1 root gpio    0 Jan  1  1970 gpiochip0 -> ../../devices/platform/soc/20200000.gpio/gpio/gpiochip0
-rwxrwx--- 1 root gpio 4096 Jan  1  1970 unexport
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: Wernieman am 08 September 2015, 08:17:55
Und was ist mit dem 2. teil der Fehlermeldung?

Existiert "/usr/local/bin/gpio"?
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: klausw am 08 September 2015, 09:34:27
Zitat von: SmartFan am 08 September 2015, 07:17:34
so siehts aus.

pi@raspberrypi ~ $ ls -l /sys/class/gpio
total 0
-rwxrwx--- 1 root gpio 4096 Sep  6 19:58 export
lrwxrwxrwx 1 root gpio    0 Sep  6 19:58 gpio21 -> ../../devices/platform/soc/3f200000.gpio/gpio/gpio21
lrwxrwxrwx 1 root gpio    0 Jan  1  1970 gpiochip0 -> ../../devices/platform/soc/3f200000.gpio/gpio/gpiochip0
-rwxrwx--- 1 root gpio 4096 Jan  1  1970 unexport
pi@raspberrypi ~ $

die Rechte passen.
Hast du:
sudo adduser fhem gpio
sudo reboot

ausgeführt?

Edit:
den gpio21 hast du per FHEM angelegt?
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: Ellert am 08 September 2015, 09:50:19
@ Werniemann: Die Datei /usr/local/bin/gpio existiert nicht. Weder auf dem funktionierenden Sytem, noch auf dem nicht funktionierenden.

@klausw: Ja, das Testsystem ist eine Kopie des Wirksystems mit einer auf den Test reduzierten fhem.cfg. Insofern lief der GPIO vor dem Upgrade mit fhem in gpio..

pi@raspberrypi /usr/local/bin $ sudo adduser fhem gpio
The user `fhem' is already a member of `gpio'.


Ich habe gerade ins Modul geschaut, /usr/local/bin/gpio ist für WiringPi. WiringPi habe ich nicht installiert, da ich die "pud_resistor" nicht nutze.
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: klausw am 08 September 2015, 10:24:23
Zitat von: Ellert am 08 September 2015, 09:50:19
@klausw: Ja, das Testsystem ist eine Kopie des Wirksystems mit einer auf den Test reduzierten fhem.cfg. Insofern lief der GPIO vor dem Upgrade mit fhem in gpio..

pi@raspberrypi /usr/local/bin $ sudo adduser fhem gpio
The user `fhem' is already a member of `gpio'.


Ich habe gerade ins Modul geschaut, /usr/local/bin/gpio ist für WiringPi. WiringPi habe ich nicht installiert, da ich die "pud_resistor" nicht nutze.
Ah, jetzt bist du mir zuvorgekommen, das wollte ich gerade schreiben. Außerdem ist es eher eine Altlast aus der Zeit, wo es dir Gruppe gpio noch nicht gab.

1. Kannst du bitte das Ergebnis von:
ls -l /sys/class/gpio/gpio24
posten.

2. Was passiert wenn du
define gpio24 RPI_GPIO 24
erneut ausführst?
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: Ellert am 08 September 2015, 10:44:52
pi@raspberrypi /usr/local/bin $ ls -l /sys/class/gpio/gpio24
lrwxrwxrwx 1 root gpio 0 Sep  8 07:49 /sys/class/gpio/gpio24 -> ../../devices/platform/soc/20200000.gpio/gpio/gpio24


define gpio24 RPI_GPIO 24 liefert wieder: gpio24: failed to export pin gpio24
Das Device wird nicht angelegt.

und im Log steht mit verbose 5:

2015.09.08 10:36:54 5: Cmd: >define gpio24 RPI_GPIO 24<
2015.09.08 10:36:54 4: gpio24: write access to file /sys/class/gpio/export, use it to export GPIO
2015.09.08 10:36:59 1: gpio24: can't export gpio24, no write access to /sys/class/gpio/export and file /usr/local/bin/gpio doesnt exist
2015.09.08 10:36:59 1: gpio24: failed to export pin gpio24
2015.09.08 10:36:59 1: define gpio24 RPI_GPIO 24: gpio24: failed to export pin gpio24


Im Frontend ergeben die Abfragen:

{(-e "/sys/class/gpio/gpio24")} liefert 1

{(-w "/sys/class/gpio/gpio24/value")} liefert "nichts"

{(-w "/sys/class/gpio/gpio24/direction")} liefert "nichts"

{(-w "/sys/class/gpio/export")} liefert 1


Und wenn ich mir die Rechte anzeigen lasse ist gpio nicht dabei:
pi@raspberrypi /usr/local/bin $ ls -l /sys/class/gpio/gpio24/*
-rw-r--r-- 1 root root 4096 Sep  8 11:21 /sys/class/gpio/gpio24/active_low
lrwxrwxrwx 1 root root    0 Sep  8 11:21 /sys/class/gpio/gpio24/device -> ../../../20200000.gpio
-rw-r--r-- 1 root root 4096 Sep  8 11:05 /sys/class/gpio/gpio24/direction
-rw-r--r-- 1 root root 4096 Sep  8 11:21 /sys/class/gpio/gpio24/edge
lrwxrwxrwx 1 root root    0 Sep  8 07:49 /sys/class/gpio/gpio24/subsystem -> ../../../../../../class/gpio
-rw-r--r-- 1 root root 4096 Sep  8 07:49 /sys/class/gpio/gpio24/uevent
-rw-r--r-- 1 root root 4096 Sep  8 07:49 /sys/class/gpio/gpio24/value


Im funktionierenden System sieht es so aus:
pi@raspberrypi ~ $ ls -l /sys/class/gpio/gpio24/*
-rwxrwx--- 1 root gpio 4096 Sep  7 20:36 /sys/class/gpio/gpio24/active_low
lrwxrwxrwx 1 root gpio    0 Sep  7 20:36 /sys/class/gpio/gpio24/device -> ../../../20200000.gpio
-rwxrwx--- 1 root gpio 4096 Sep  7 20:36 /sys/class/gpio/gpio24/direction
-rwxrwx--- 1 root gpio 4096 Sep  7 20:36 /sys/class/gpio/gpio24/edge
lrwxrwxrwx 1 root gpio    0 Sep  7 20:36 /sys/class/gpio/gpio24/subsystem -> ../../../../../class/gpio
-rwxrwx--- 1 root gpio 4096 Sep  7 20:36 /sys/class/gpio/gpio24/uevent
-rwxrwx--- 1 root gpio 4096 Sep  7 20:36 /sys/class/gpio/gpio24/value

Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: klausw am 08 September 2015, 12:17:57
Zitat von: Ellert am 08 September 2015, 10:44:52
pi@raspberrypi /usr/local/bin $ ls -l /sys/class/gpio/gpio24
lrwxrwxrwx 1 root gpio 0 Sep  8 07:49 /sys/class/gpio/gpio24 -> ../../devices/platform/soc/20200000.gpio/gpio/gpio24


define gpio24 RPI_GPIO 24 liefert wieder: gpio24: failed to export pin gpio24
Das Device wird nicht angelegt.
Oha, das ist bisschen wenig.

Das sollte etwas mehr bringen:
ls -l /sys/class/gpio/gpio24/

Zitat von: Ellert am 08 September 2015, 10:44:52
und im Log steht mit verbose 5:

2015.09.08 10:36:54 5: Cmd: >define gpio24 RPI_GPIO 24<
2015.09.08 10:36:54 4: gpio24: write access to file /sys/class/gpio/export, use it to export GPIO
2015.09.08 10:36:59 1: gpio24: can't export gpio24, no write access to /sys/class/gpio/export and file /usr/local/bin/gpio doesnt exist
2015.09.08 10:36:59 1: gpio24: failed to export pin gpio24
2015.09.08 10:36:59 1: define gpio24 RPI_GPIO 24: gpio24: failed to export pin gpio24

Die zweite Zeile ist falsch, da muss ich die Fehlermeldungen mal anpassen. Schreibzugriff ist schließlich vorhanden :/
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: Ellert am 08 September 2015, 12:41:34
Irgend wie hängt die Rechtevergabe mit dem DeviceTree zusammen, denn wenn ich in der config.txt den DeviceTree abschalte, kann ich mit define gpio24 RPI_GPIO 24 den Port definieren. Siehe https://www.raspberrypi.org/documentation/configuration/device-tree.md#part4.3 (https://www.raspberrypi.org/documentation/configuration/device-tree.md#part4.3)

Das wird aber keine Lösung auf Dauer sein.

Ich hatte letzten meinen Beitrag schon ergänzt, das ist ein bisschen unübersichtlich, tut mir Leid. Hier nochmal die Rechte:

pi@raspberrypi ~ $ ls -l /sys/class/gpio/gpio24/
total 0
-rw-r--r-- 1 root root 4096 Sep  8 12:34 active_low
lrwxrwxrwx 1 root root    0 Sep  8 12:34 device -> ../../../20200000.gpio
-rw-r--r-- 1 root root 4096 Sep  8 12:34 direction
-rw-r--r-- 1 root root 4096 Sep  8 12:34 edge
lrwxrwxrwx 1 root root    0 Sep  8 12:34 subsystem -> ../../../../../../class/gpio
-rw-r--r-- 1 root root 4096 Sep  8 12:34 uevent
-rw-r--r-- 1 root root 4096 Sep  8 12:34 value
p



Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: klausw am 08 September 2015, 13:54:00
Zitat von: Ellert am 08 September 2015, 12:41:34
Irgend wie hängt die Rechtevergabe mit dem DeviceTree zusammen, denn wenn ich in der config.txt den DeviceTree abschalte, kann ich mit define gpio24 RPI_GPIO 24 den Port definieren. Siehe https://www.raspberrypi.org/documentation/configuration/device-tree.md#part4.3 (https://www.raspberrypi.org/documentation/configuration/device-tree.md#part4.3)

Das wird aber keine Lösung auf Dauer sein.

Ich hatte letzten meinen Beitrag schon ergänzt, das ist ein bisschen unübersichtlich, tut mir Leid. Hier nochmal die Rechte:
Alles gut, ich fands durchaus Übersichtlich ;)
Wo es nicht geht ist die Gruppe root anstelle von gpio. Mich wundert es nur, das es bei manchen funktioniert und bei anderen nicht.
Seltsamerweise läuft bei mir alles normal mit aktuellem Image und Kernel. Ich habe I2C in der config.txt aktiviert:
dtparam=i2c_arm=on aber daran sollte es eigentlich nicht liegen.


Immerhin ist es erstmal eine Lösung.
Du hastdevice_tree= in die config.txt eingefügt?

Ich habe es vermulich überlesen...welches Pi hast du?
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: Ellert am 08 September 2015, 16:30:19
Als Wirksystem habe ich einen Pi B+, der meldet sich mit: Linux raspberrypi 3.18.11+ #781 PREEMPT Tue Apr 21 18:02:18 BST 2015 armv6l. Damit funktionieren die GPIOs, wie in der Comandref zu RPI_GPIO beschrieben einwandfrei.

Mein Testsystem läuf auch auf einem Pi B+ und basiert auf dem Wirksystem. Darauf habe ich ein Upgrade durchgeführt, mit:
sudo apt-get update && sudo apt-get upgrade -y && sudo apt-get autoremove -y
sudo reboot

Dann meldet sich das System mit: Linux raspberrypi 4.1.6+ #810 PREEMPT Tue Aug 18 15:19:58 BST 2015 armv6l.
Hier gibt es die Rechteprobleme mit den GPIOs. Die Probleme verschwinden, wenn ich versuchsweise "device_tree=" am Ende der config.txt eintrage und neu starte. Das wird wahrscheinlich Geräte beeinflussen, die jetzt über DeviceTree angesprochen werden. Ich habe das nicht getestet, da an dem Testsystem nichts weiter angeschlossen ist. Ich denke jedoch, der Versuch deutet darauf hin, dass das Rechteproblem mit dem DeviceTree zusammen hängt. Ich denke am Modul liegt es nicht, denn wenn ich einen GPIO manuell exportiere, besteht das gleiche Problem:
pi@raspberrypi ~ $ echo "24" > /sys/class/gpio/export
pi@raspberrypi ~ $ ls -l /sys/class/gpio/gpio24/
total 0
-rw-r--r-- 1 root root 4096 Sep  8 16:13 active_low
lrwxrwxrwx 1 root root    0 Sep  8 16:13 device -> ../../../20200000.gpio
-rw-r--r-- 1 root root 4096 Sep  8 16:13 direction
-rw-r--r-- 1 root root 4096 Sep  8 16:13 edge
lrwxrwxrwx 1 root root    0 Sep  8 16:13 subsystem -> ../../../../../../class/gpio
-rw-r--r-- 1 root root 4096 Sep  8 16:13 uevent
-rw-r--r-- 1 root root 4096 Sep  8 16:13 value


Es besteht für mich keine Notwendigkeit zum Upgrade, daher bleibt mein Wirksystem unverändert.
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: cremofix am 29 Oktober 2015, 17:05:00
Hatte auch massiv das Problem mit den GPio Berechtigungen. fhem hat die immer mit root:root angelegt und ich musste die Rechte manuell ändern, was nur bis zum nächsten Reboot funktionierte.

Hilfe hat nur ein komplett neu aufgesetzter raspi mit raspbian jessie gebracht.

- Sytem neu aufgespielt
- fhem installiert
- wiringPi installiert

jetzt gehts und die GPIOS werden sauber mit root:gpio angelegt
Gruß
Mario
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: klausw am 02 Dezember 2015, 00:42:25
Zitat von: cremofix am 29 Oktober 2015, 17:05:00
Hilfe hat nur ein komplett neu aufgesetzter raspi mit raspbian jessie gebracht.

Kann ich bestätigen. Nach dem Upgrade von Wheezy ist die Rechtevergabe für die GPIOs im A...
Nach Neuinstallation funktioniert es wieder mit der gruppe GPIO wie in der commandref beschrieben.
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: cocktailyogi am 02 Dezember 2015, 07:58:27
Zitat von: klausw am 02 Dezember 2015, 00:42:25
Kann ich bestätigen. Nach dem Upgrade von Wheezy ist die Rechtevergabe für die GPIOs im A...
Nach Neuinstallation funktioniert es wieder mit der gruppe GPIO wie in der commandref beschrieben.
Bei mir ist es immernoch so.... Vor einigen Wochen kam es mir so vor, als sei ich der Einzige mit dem Problem, aber so langsam zeichnet sich das Schema ab. ;D Nur dass ich keine Neuinstalltion machen kann, da mein RPI2 noch viel mehr Aufgaben erledigt. Wie kann ich helfen, die Ursache einzugrenzen? Könnten wir irgendwie eine Neuinstalltion mit mit meiner "Upgradeversion" vergleichen?

Gruß,
Yogi

Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: frober am 06 Dezember 2015, 16:11:39
Hallo,

leider habe ich auch ein Problem:

Ich habe 5 Pins in Fhem definiert, 3 funktionieren, bei 2 bekomme ich einen Logeintrag "/usr/local/bin/gpio: Unable to open GPIO direction interface for pin 27: No such file or directory" das gleiche für Pin 17.

Unter /sys/class/gpio sind die zwei auch nicht angelegt.
Mit "echo 17 > ...../export" kommt die Meldung "Gerät oder Ressource ist beleg.
Dann wollte ich mit  "echo 17 > ...../unexport" den Pin freigeben geben,  kommt die Meldung "Schreibfehler, Argument ist ungültig"

Nachtrag:
Die Meldungen kommen so unter pi, sudo und su root.

Fhem und pi ist in der Gruppe gpio eingetragen.

Hat jemand eine Idee?
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: klausw am 06 Dezember 2015, 22:34:40
Zitat von: frober am 06 Dezember 2015, 16:11:39
Ich habe 5 Pins in Fhem definiert, 3 funktionieren, bei 2 bekomme ich einen Logeintrag "/usr/local/bin/gpio: Unable to open GPIO direction interface for pin 27: No such file or directory" das gleiche für Pin 17.

Unter /sys/class/gpio sind die zwei auch nicht angelegt.
Mit "echo 17 > ...../export" kommt die Meldung "Gerät oder Ressource ist beleg.
Dann wollte ich mit  "echo 17 > ...../unexport" den Pin freigeben geben,  kommt die Meldung "Schreibfehler, Argument ist ungültig"

Nachtrag:
Die Meldungen kommen so unter pi, sudo und su root.

Fhem und pi ist in der Gruppe gpio eingetragen.

wenn ein GPIO geht dann gehen grundsätzlich alle

Gerät oder Ressource ist beleg sagt eigentlich alles ;)

17 und 27 haben auch alternative Funktionen vermutlich hat du die SPI in der config.txt (z.B. über raspi-config) oder anderswo aktiviert

Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: frober am 07 Dezember 2015, 12:41:50
Zitat von: klausw am 06 Dezember 2015, 22:34:40
17 und 27 haben auch alternative Funktionen vermutlich hat du die SPI in der config.txt (z.B. über raspi-config) oder anderswo aktiviert

Erstmal danke für den Tip.
Hatte noch keine Zeit zum testen, aber wo sind die alternativen Funktionen von GPIO 17 + 27 dokumentiert?
Ich bin nach der Tabelle aus der Commandref gegangen und habe nur Pin's gewählt die keine andere Funktion haben.

Kann ich irgend wo sehen, was meine Pin's belegt?   
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: klausw am 07 Dezember 2015, 15:52:51
Zitat von: frober am 07 Dezember 2015, 12:41:50
Erstmal danke für den Tip.
Hatte noch keine Zeit zum testen, aber wo sind die alternativen Funktionen von GPIO 17 + 27 dokumentiert?
Ich bin nach der Tabelle aus der Commandref gegangen und habe nur Pin's gewählt die keine andere Funktion haben.

Kann ich irgend wo sehen, was meine Pin's belegt?
mit dem gpio utility von wiringPi kannst du das anschauen
Bei einem halben Dutzend verschiedener Raspberrys ist die Tabelle in der Commandref nicht vollständig.
Google hilft da 8) Zugegebenermaßen ist es nicht einfach eine vollständige Pinbelegung zu finden. Diese (http://pinout.xyz/) ist ganz gut.
Aber wenn das GPIO Verzeichnis nicht existiert und bei Exportversucht die Meldung kommt das die Ressource belegt ist kann es eigentlich nix anderes sein.

Aber von allein aktivieren sich die alternativen Funktionen nicht (ausgenommen die serielle Schnittstelle GPIO14,15).
Wo hast du dein SD-Image her?
Hast du über raspi-config z.B. die SPI aktiviert? (das könntest du auch in der /boot/config.txt als Paramter "dtparam=spi=on" finden)
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: frober am 08 Dezember 2015, 15:32:42
Erstmal danke für die Hilfe.

SPI ist nicht aktiv, die Pins lassen sich trotzdem nicht schalten.

Was meinst du genau mit dem gpio utility?
Mit gpio readall kann ich die Belegung (Reservierung) nicht erkennen.

Meinen Raspi habe ich anfangs mit einen 4"-Display betrieben, daher habe ich, als Anfänger, ein Image mit den integrierten Treibern installiert.
Ich glaube, ich habe das über den Verkäufer des Displays bezogen.

Bei Gelegenheit werde ich den Raspi neu aufsetzen und testen, habe einen zweiten zum testen bestellt, damit wird alles einfacher.

Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: klausw am 08 Dezember 2015, 16:15:41
Zitat von: frober am 08 Dezember 2015, 15:32:42
SPI ist nicht aktiv, die Pins lassen sich trotzdem nicht schalten.
Wie hast du das Überprüft?

Zitat von: frober am 08 Dezember 2015, 15:32:42
Was meinst du genau mit dem gpio utility?
Mit gpio readall kann ich die Belegung (Reservierung) nicht erkennen.
gpio readall gibt eine Liste aus
In der Spalte Mode steht die Konfiguration.
ALTx bedeutet, das der Pin alternativ belegt ist
Im Link in meinem letzten Post stehen die alternativen Belegungen drin

Zitat von: frober am 08 Dezember 2015, 15:32:42
Meinen Raspi habe ich anfangs mit einen 4"-Display betrieben, daher habe ich, als Anfänger, ein Image mit den integrierten Treibern installiert.
Ich glaube, ich habe das über den Verkäufer des Displays bezogen.
Die Aufsteckdisplays werden meines Wissens über die SPI angeschlossen.
Je nachdem wie alt das Modul ist können die SPI Kernelmodule beispielsweise auch auch in die /etc/modules eingetragen worden sein

Zitat von: frober am 08 Dezember 2015, 15:32:42
Bei Gelegenheit werde ich den Raspi neu aufsetzen und testen, habe einen zweiten zum testen bestellt, damit wird alles einfacher.
Das ist hilfreich  8)
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: frober am 08 Dezember 2015, 17:43:01
SPI habe ich mit raspi-config und config.txt überprüft, wie du es beschrieben hast.

In Modules steht was vom Display: "...fbtft...gpios=DC:22, Reset:27........gpio_pendown=17...."
Laut gpio readall ist PIN 22 und 27 als Ausgang und high definiert, PIN 17 als Eingang.

Ich denke das wars, danke.

Wie kann ich die PINs freigeben, bzw. die Displaytreiber entfernen?
Oder ist eine Neuinstallation und -Konfiguration einfacher?
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: klausw am 09 Dezember 2015, 09:41:56
Zitat von: frober am 08 Dezember 2015, 17:43:01
SPI habe ich mit raspi-config und config.txt überprüft, wie du es beschrieben hast.

In Modules steht was vom Display: "...fbtft...gpios=DC:22, Reset:27........gpio_pendown=17...."
Laut gpio readall ist PIN 22 und 27 als Ausgang und high definiert, PIN 17 als Eingang.

Ich denke das wars, danke.

Wie kann ich die PINs freigeben, bzw. die Displaytreiber entfernen?
Oder ist eine Neuinstallation und -Konfiguration einfacher?

versuche mal die entsprechenden Zeilen rauszulöschen, dann sollten die Module nicht geladen werden und die Pins entsprechend verfügbar sein
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: Depechem am 15 Dezember 2015, 22:50:57
Hallöchen, ich habe ein paar Fragen zum Thema GPIO des RaspberryPi2.

Ich besitze einen RaspberryPi2 mit FHEM und eineigen HM Geräten.
Nun möchte ich meine alte Alarmanalge ablösen und ins FHEM einbinden.
Ich habe 6 normale Reedkontake an den Türen die ich ins FHEM einbinden möchte.
Nun habe ich gelesen das ich diese evtl. direkt an den RaspberryPi2 an eine GPIO Schnittstelle hängen kann!?
Die normalen Litzekabel vom jeweiligen Reedkontakt zum RaspberryPi2 sind ca. 10-30m lang. Würde der Schaltkontakt direkt an den RaspberryPi2 damit funktionieren? Falls ja, ist dies für eine Alarmanlage Störungssicher genug zwecks Zuverlässigkeit!?
Falls ja, könnte mir jemand erklären wie ich dies verwirklichen kann?
Also welche Pins am Rasp. belegen, welche Dateien(und wie) auf dem Rasp. installieren und welche Befehle ich in die fhem.config eintragen muss!?
Ich bin dabei noch eher ein Neuling.

Würde mich echt freuen wenn mir jemand Licht ins dunkle bringen könnte
Vielen Dank
Gruß Thomas
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: Ellert am 15 Dezember 2015, 23:51:45
Ich hab mal für Dich gegoogelt.
ZitatWürde der Schaltkontakt direkt an den RaspberryPi2 damit funktionieren?
http://www.forum-raspberrypi.de/Thread-gpio-taster-max-kabellaenge (http://www.forum-raspberrypi.de/Thread-gpio-taster-max-kabellaenge)
ZitatStörungssicher genug zwecks Zuverlässigkeit!?
Was heisst genug? Für die Versicherung, für Dich?
http://www.kriminalberatung.de/alarmanlagen/ (http://www.kriminalberatung.de/alarmanlagen/)
http://anti-scam.de/cgi-bin/yabb2/YaBB.pl?num=1384862385/9#9 (http://anti-scam.de/cgi-bin/yabb2/YaBB.pl?num=1384862385/9#9)
ZitatFalls ja, könnte mir jemand erklären wie ich dies verwirklichen kann?
https://klenzel.de/1839 (https://klenzel.de/1839)
ZitatAlso welche Pins am Rasp. belegen
http://forum.fhem.de/index.php/topic,16519.msg370939.html#msg370939 (http://forum.fhem.de/index.php/topic,16519.msg370939.html#msg370939)
Zitatwelche Dateien(und wie) auf dem Rasp. installieren
http://fhem.de/commandref_DE.html#RPI_GPIO (http://fhem.de/commandref_DE.html#RPI_GPIO)
Zitatwelche Befehle ich in die fhem.config eintragen muss!?
http://www.fhemwiki.de/wiki/Konfiguration#Bearbeitung_der_Konfiguration (http://www.fhemwiki.de/wiki/Konfiguration#Bearbeitung_der_Konfiguration)

Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: klausw am 16 Dezember 2015, 00:17:41
Zitat von: Depechem am 15 Dezember 2015, 22:50:57
Ich habe 6 normale Reedkontake an den Türen die ich ins FHEM einbinden möchte.
Nun habe ich gelesen das ich diese evtl. direkt an den RaspberryPi2 an eine GPIO Schnittstelle hängen kann!?
Die normalen Litzekabel vom jeweiligen Reedkontakt zum RaspberryPi2 sind ca. 10-30m lang. Würde der Schaltkontakt direkt an den RaspberryPi2 damit funktionieren? Falls ja, ist dies für eine Alarmanlage Störungssicher genug zwecks Zuverlässigkeit!?
Falls ja, könnte mir jemand erklären wie ich dies verwirklichen kann?
Sollte eigentlich funktionieren.
Pullup (10k) an den GPIO. Über den Reedkontakt dann die Masse auf den GPIO anschließen.
Also wenn Reedkontakt offen -> GPIO high
Reedkontakt geschlossen -> GPIO low

Zitat von: Depechem am 15 Dezember 2015, 22:50:57
Also welche Pins am Rasp. belegen, welche Dateien(und wie) auf dem Rasp. installieren und welche Befehle ich in die fhem.config eintragen muss!?
Wenn du ein relativ frisch aufgesetztes System hast sollte es problemlos gehen.
Hier (http://fhem.de/commandref_DE.html#RPI_GPIO) wird dir geholfen.
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: klausw am 17 März 2016, 00:00:26
Anbei mal eine neue Version, die auch den Pfad vom neuerdings beim Jessie mitgelieferten WiringPi berücksichtigt.
Außerdem wird /sys/class/aml_gpio als Basispfad für das ODROID-C1 erkannt.
Für den Fall das Basispfad oder gpio Utility von WiringPi irgendwo anders sind, lassen sich jetzt beide Werte beim define mit übergeben.
Werde es nächste Woche einchecken wenn keine Probleme auftauchen.
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: Lion am 19 März 2016, 22:10:53
Danke klausw

Nun klappt es mit dem Inputs  ;D
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: pejonp am 20 März 2016, 18:34:01
Zitat von: klausw am 17 März 2016, 00:00:26
Anbei mal eine neue Version, die auch den Pfad vom neuerdings beim Jessie mitgelieferten WiringPi berücksichtigt.
Außerdem wird /sys/class/aml_gpio als Basispfad für das ODROID-C1 erkannt.
....
Hallo Klaus,

bin jetzt erst zum testen gekommen. In Zeile 26 habe ich die Reihenfolge getauscht, da der ODROID-C1 auch ein "/sys/class/gpio" hat.
Jetzt werden Impulse erkannt. Auf meinem RasPi habe ich es noch nicht getest. Mache ich aber noch.

my @gpiodirs = ("/sys/class/aml_gpio", "/sys/class/gpio" );

Jörg

PS: Hab es auf meine RasPi getestet und es funktioniert. Vielen Dank.
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: klausw am 21 März 2016, 12:50:54
Zitat von: pejonp am 20 März 2016, 18:34:01
bin jetzt erst zum testen gekommen. In Zeile 26 habe ich die Reihenfolge getauscht, da der ODROID-C1 auch ein "/sys/class/gpio" hat.
Jetzt werden Impulse erkannt.
PS: Hab es auf meine RasPi getestet und es funktioniert. Vielen Dank.
Ok, dann tausche ich das noch, notfalls lässt es sich ja auch im define angeben.
Sehr witzig was ist beim ODROID-C1 denn im /sys/class/gpio vorhanden?
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: klausw am 21 März 2016, 12:54:25
zur Vollständigkeit noch etwas aus einem anderen Thread (https://forum.fhem.de/index.php/topic,23164.msg423513.html#msg423513). Das Problem bezog sich das auf den Interrupt.
Dieser funktionierte nach shutdown/restart nicht mehr.
Bugfix folgt im nächsten update.
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: pejonp am 21 März 2016, 18:40:28
Zitat von: klausw am 21 März 2016, 12:50:54
Ok, dann tausche ich das noch, notfalls lässt es sich ja auch im define angeben.
Sehr witzig was ist beim ODROID-C1 denn im /sys/class/gpio vorhanden?
Hallo Klaus,

soweit ich das verstanden habe, kann diese Verzeichnis genommen werden, wenn nur Ausgänge benötigt werden. Das andere Verzeichnis( /sys/class/aml_gpio) ist für Eingänge(Interupt/Flanken) und auch Ausgänge. So hat es jedenfalls bei mir funktioniert.

Jörg
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: nicor2k am 13 April 2016, 01:17:44
Hallo Klaus!

Ich hoffe, Du kannst mir helfen - ich komme gerade nicht weiter!
Ich habe zunächst die 51_RPI_GPIO.pm aus dem ersten Beitrag hier kopiert - die ist aber schon recht alt (angeblich vom 15.11.13). Ein Update von FHEM funktioniert aber nicht, weil immer die Fehlermeldung kommt:

Events (global only):
2016-04-13 01:04:18 Global global http://fhem.de/fhemupdate/controls_fhem.txt: Can't connect(1) to http://fhem.de:80: IO::Socket::INET: Bad hostname 'fhem.de:80'

Ich habe drei GPIO Pins angelegt, einen als Input (da ist ein Bewegungssensor angeschlossen), die anderen beiden als Output (mit LEDs zum Testen). Per Python-Skript kann ich (wenn auch als sudo) alles steuern oder abfragen.

Hier meine FHEM Defs:


define RPIPin37 RPI_GPIO 26
attr RPIPin37 direction output

define RPIPin11 RPI_GPIO 17
attr RPIPin11 direction output

define RPIPin8 RPI_GPIO 14
attr RPIPin8 direction input
attr RPIPin8 interrupt both


Der Bewegungssensor reagiert gar nicht (ändert den state nicht von ??? auf etwas anderes). Im log habe ich auch einige Fehlermeldungen, z.B.:


2016.04.13 01:03:26 1: Can't open file: RPIPin37, value
2016.04.13 01:03:32 1: Can't open file: RPIPin11, value
2016.04.13 01:03:46 1: Can't open file: RPIPin11, value
2016.04.13 01:03:47 1: Can't open file: RPIPin8, value
2016.04.13 01:14:31 1: RPIPin37: failed to export pin gpio26
2016.04.13 01:14:36 1: RPIPin11: failed to export pin gpio17
2016.04.13 01:14:41 1: RPIPin8: failed to export pin gpio14
2016.04.13 01:14:41 1: Can't open file: RPIPin8, edge


Trotzdem liess sich vorhin die LED anschalten ("set RPIPin11 on") - dann aber nicht mehr aus: Sie wird zwar aus angezeigt in FHEM, leuchtet aber weiter. Jetzt reagiert sie gerade gar nicht mehr...

Ich habe den User fhem der Gruppe gpio zugefügt mit:

sudo adduser fhem gpio


Vielen Dank!
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: Wernieman am 13 April 2016, 08:21:50
Ich würde mir eher Gedanken machen, warum Du nicht updaten kannst:

Bad hostname 'fhem.de:80'

Funktioniert bei Deinem Rechner die Namensauflösung?

host fhem.de
ping fhem.dehost

Bitte gib uns den Output.
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: nicor2k am 13 April 2016, 09:07:45
Heute morgen sieht der Update-Fehler etwas anders aus:


2016-04-13 09:03:57 Global global MKDIR restoreDir/2016-04-13
2016-04-13 09:04:00 Global global UPD ./CHANGED
2016-04-13 09:04:05 Global global http://fhem.de/fhemupdate/./CHANGED: Select timeout/error:



Der Output von "host fhem.de" ist:


pi@raspberrypi ~ $ host fhem.de
fhem.de has address 82.165.184.33
fhem.de mail is handled by 10 mx01.kundenserver.de.
fhem.de mail is handled by 10 mx00.kundenserver.de.



Und "ping fhem.de" geht auch:


pi@raspberrypi ~ $ ping fhem.de
PING fhem.de (82.165.184.33) 56(84) bytes of data.
64 bytes from kundenserver.de (82.165.184.33): icmp_req=1 ttl=56 time=28.6 ms
64 bytes from kundenserver.de (82.165.184.33): icmp_req=2 ttl=56 time=328 ms
64 bytes from kundenserver.de (82.165.184.33): icmp_req=3 ttl=56 time=390 ms
[code]

(alles per SSH von dem Rechner, der das Update nicht machen will...)
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: nicor2k am 13 April 2016, 09:09:36
Zitat von: nicor2k am 13 April 2016, 09:07:45
Heute morgen sieht der Update-Fehler etwas anders aus:

Ich nehm's zurück, beim 3. Versuch jetzt geht's plötzlich mit dem Update - aber nur bis hier:


2016-04-13 09:09:04 Global global http://fhem.de/fhemupdate/FHEM/10_EnOcean.pm: Select timeout/error:



Irgendwann nach dem gefühlten 10. Mal ging das Update dann komplett - jetzt lassen sich die LEDs auch an- und ausschalten! :)
Nur das Auslesen des Bewegungssensors geht noch nicht, zumindest wird er nicht live (ohne Neuladen der Seite) angezeigt: ich dachte mit "attr RPIPin8 interrupt both" würde man das umgehen?

Vielen Dank schon mal für die Hilfe! :)
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: Wernieman am 13 April 2016, 09:27:36
Könntest Du bitte dafür ein "Neues Ticket" eröffnen? Ich glaube, wir sollten diesen Thread nicht "Misbruchen" ;o)
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: klausw am 13 April 2016, 10:18:00
Zitat von: nicor2k am 13 April 2016, 09:09:36
Nur das Auslesen des Bewegungssensors geht noch nicht, zumindest wird er nicht live (ohne Neuladen der Seite) angezeigt: ich dachte mit "attr RPIPin8 interrupt both" würde man das umgehen?

Ja, Attribut interrupt auf both sollte die Readings bei jedem Pinwechsel aktualisieren.
Steht was im Log?
Wobei ich eher den Verdacht habe, das evtl. doch nicht das komplette FHEM aktualisiert wurde.

Zur Sicherheit habe ich das Modul aus dem ersten Post gelöscht :)
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: knxhm am 14 April 2016, 23:11:54
Hallo Klaus,
ich habe, wie es mir scheint, das merkwürdige Problem mit nichtreagierenden interrupt Eingängen das laut letzten commit aber gefixt sein soll. Ich habe vor dem testen ein update gemacht, habe also die letzte Vers. von 11120 2016-03-23 23:49:16Z.

Ich habe u.a. 2 Eingänge mit interrupt definiert.
Wenn ich meinen Raspi reboote und dann drücke ich die Tasten dann reagiert der FHEM entsprechend.

2016-04-14 22:58:40 RPI_GPIO pin16 Dblclick: off
2016-04-14 22:58:40 RPI_GPIO pin16 Pinlevel: low
2016-04-14 22:58:40 RPI_GPIO pin16 off
2016-04-14 22:58:40 RPI_GPIO pin16 Longpress: off
2016-04-14 22:58:40 RPI_GPIO pin16 Dblclick: off
2016-04-14 22:58:40 RPI_GPIO pin16 Pinlevel: low
2016-04-14 22:58:40 RPI_GPIO pin16 off
2016-04-14 22:58:40 RPI_GPIO pin16 Longpress: off
2016-04-14 22:58:40 RPI_GPIO pin16 Pinlevel: high
2016-04-14 22:58:40 RPI_GPIO pin16 on
2016-04-14 22:58:41 RPI_GPIO pin16 Longpress: on

Nach einem shutdown restart gehen die 2 Eingänge nicht mehr, Ausgänge sind ok. Im Event Monitor als auch im log gibts bei Tastendrücken auch nichts zu sehen.

Nach restart sehe ich folgendes im log während der fhem hochfährt:

Can't exec "export": No such file or directory at ./FHEM/51_RPI_GPIO.pm line 640, <$fh> line 130.
Can't exec "export": No such file or directory at ./FHEM/51_RPI_GPIO.pm line 640, <$fh> line 131.
2016.04.14 22:45:24 1: Can't open file: pin16, edge
Can't exec "export": No such file or directory at ./FHEM/51_RPI_GPIO.pm line 640, <$fh> line 136.
Can't exec "export": No such file or directory at ./FHEM/51_RPI_GPIO.pm line 640, <$fh> line 137.
2016.04.14 22:45:29 1: Can't open file: pin18, edge

Meine config sieht so aus:

#LED
define pin19 RPI_GPIO 10
attr pin19 direction output
attr pin19 verbose 5

#LED
define pin21 RPI_GPIO 9
attr pin21 direction output
attr pin21 verbose 5

#LED
define pin23 RPI_GPIO 11
attr pin23 direction output
attr pin23 verbose 5


#Relais
define pin11 RPI_GPIO 17
attr pin11 direction output
attr pin11 verbose 5

#Relais
define pin13 RPI_GPIO 27
attr pin13 direction output
attr pin13 verbose 5

#Relais
define pin15 RPI_GPIO 22
attr pin15 direction output
attr pin15 verbose 5

#Relais
define pin12 RPI_GPIO 18
attr pin12 direction output
attr pin12 verbose 5

#Taste
define pin16 RPI_GPIO 23
attr pin16 direction input
attr pin16 interrupt both
attr pin16 verbose 5

#Taste
define pin18 RPI_GPIO 24
attr pin18 direction input
attr pin18 interrupt both

Das ist mein init script:

root@raspia:/opt/fhem# cat /root/gpioinit.sh
#!/bin/bash

chmod 222 /sys/class/gpio/export /sys/class/gpio/unexport

echo "9" > /sys/class/gpio/export
chmod 777 -R /sys/class/gpio/gpio9
echo "10" > /sys/class/gpio/export
chmod 777 -R /sys/class/gpio/gpio10
echo "11" > /sys/class/gpio/export
chmod 777 -R /sys/class/gpio/gpio11

echo "17" > /sys/class/gpio/export
chmod 777 -R /sys/class/gpio/gpio17
echo "18" > /sys/class/gpio/export
chmod 777 -R /sys/class/gpio/gpio18
echo "22" > /sys/class/gpio/export
chmod 777 -R /sys/class/gpio/gpio22
echo "27" > /sys/class/gpio/export
chmod 777 -R /sys/class/gpio/gpio27

#echo "out" > /sys/class/gpio/gpio10/direction

echo "23" > /sys/class/gpio/export
chmod 777 -R /sys/class/gpio/gpio23
echo "24" > /sys/class/gpio/export
chmod 777 -R /sys/class/gpio/gpio24


Mit der udev rule die ganz am Anfang dieses Threads steht habe ich experimentiert (raus/rein), die scheint mir hier aber keinen Unterschied zu machen. Ist das ein Überbleibsel von den Anfängen und mittlerweile überflüssig oder braucht man die doch für irgendwas ?

Manuelle Abfrage der Eingänge von console mit cat /sys/..../value funktioniert immer.

Hm.

Könntest du dir das bitte mal ansehen?

lg
knxhm
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: klausw am 15 April 2016, 12:08:30
Hi knxhm,

setze das Attribut unexportpin mal auf no. Dann sollten wenigstens die Pins beim shutdown nicht gelöscht werden.

Das nur die Interrupts gehen finde ich sehr seltsam.
Can't exec "export": No such file or directory at ./FHEM/51_RPI_GPIO.pm line 640, <$fh> line 131.
Deutet auf das fehlen des Internals WiringPi_gpio hin.


Ein shutdown restart mit globalem verbose 5 gibt sicher mehr Auskunft (das verbose für die einzelnen Pins greift leider zu spät)
Und wenn du dabei bist bitte auch:
ls -l /sys/class/gpio/
ls -l /sys/class/gpio/gpio23/
jeweils vor und nach shutdown/restart
und ein "list pin16"

Nutzt du ein Raspberry? Da würde ich das aktuelle Raspbian empfehlen. Da kannst du auf das gpioinit.sh verzichten ;).
Es muss halt neu installiert werden, ein upgrade von wheezy auf jessie beschädigt die Rechteverwaltung der GPIOs.

Das udev sollte alternativ zu deinem gpioinit.sh verwendet werden können.
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: knxhm am 15 April 2016, 18:20:32
Hallo Klaus,

hier ist alles was du dir gewünscht hast.  ;)


direkt nach reboot raspi

root@raspia:/home/pi# ls -l /sys/class/gpio/
total 0
-rwxrwx--- 1 root gpio 4096 Apr 15 18:11 export
lrwxrwxrwx 1 root gpio    0 Apr 15 18:11 gpio10 -> ../../devices/platform/soc/20200000.gpio/gpio/gpio10
lrwxrwxrwx 1 root gpio    0 Apr 15 18:11 gpio11 -> ../../devices/platform/soc/20200000.gpio/gpio/gpio11
lrwxrwxrwx 1 root gpio    0 Apr 15 18:11 gpio17 -> ../../devices/platform/soc/20200000.gpio/gpio/gpio17
lrwxrwxrwx 1 root gpio    0 Apr 15 18:11 gpio18 -> ../../devices/platform/soc/20200000.gpio/gpio/gpio18
lrwxrwxrwx 1 root gpio    0 Apr 15 18:11 gpio22 -> ../../devices/platform/soc/20200000.gpio/gpio/gpio22
lrwxrwxrwx 1 root gpio    0 Apr 15 18:11 gpio23 -> ../../devices/platform/soc/20200000.gpio/gpio/gpio23
lrwxrwxrwx 1 root gpio    0 Apr 15 18:11 gpio24 -> ../../devices/platform/soc/20200000.gpio/gpio/gpio24
lrwxrwxrwx 1 root gpio    0 Apr 15 18:11 gpio27 -> ../../devices/platform/soc/20200000.gpio/gpio/gpio27
lrwxrwxrwx 1 root gpio    0 Apr 15 18:11 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 4096 Jan  1  1970 unexport

root@raspia:/home/pi# ls -l /sys/class/gpio/gpio23/
total 0
-rwxrwxrwx 1 root root 4096 Apr 15 18:11 active_low
lrwxrwxrwx 1 root root    0 Apr 15 18:11 device -> ../../../20200000.gpio
-rwxrwxrwx 1 root root 4096 Apr 15 18:11 direction
-rwxrwxrwx 1 root root 4096 Apr 15 18:11 edge
lrwxrwxrwx 1 root root    0 Apr 15 18:11 subsystem -> ../../../../../../class/gpio
-rwxrwxrwx 1 root root 4096 Apr 15 18:11 uevent
-rwxrwxrwx 1 root root 4096 Apr 15 18:11 value


Internals:
   DEF        23
   EXCEPT_FD  18
   GPIO_Basedir /sys/class/gpio
   NAME       pin16
   NR         67
   RPI_pin    23
   STATE      on
   TYPE       RPI_GPIO
   WiringPi_gpio
   lasttrg    1460736110.98839
   Readings:
     2016-01-03 01:51:06   Counter         25
     2016-04-15 18:01:50   Dblclick        on
     2016-04-15 18:01:51   Longpress       on
     2016-04-15 18:01:51   Pinlevel        high
     2016-04-15 18:01:51   state           on
   Fhem:
     interfaces switch
Attributes:
   direction  input
   interrupt  both
   verbose    5


Tastendruck

root@raspia:/opt/fhem# tail -f log/fhem-2016-04.log
2016.04.15 18:02:16 4: Connection accepted from WEB_172.22.22.21_40461
2016.04.15 18:02:16 4: WEB_172.22.22.21_40461 POST /fhem&fw_id=83&room=all&cmd=list+pin16; BUFLEN:0
2016.04.15 18:02:16 5: Cmd: >list pin16<
2016.04.15 18:02:16 4: name: /fhem&fw_id=83&room=all&cmd=list+pin16 / RL:1349 / text/html; charset=UTF-8 / Content-Encoding: gzip
/
2016.04.15 18:02:16 4: WEB_172.22.22.21_40461 GET /fhem?XHR=1&inform=type=status;filter=;since=1460736135;fmt=JSON&fw_id=83&timestamp=1460736136422; BUFLEN:0
2016.04.15 18:02:29 5: Triggering Temp2 (1 changes)
2016.04.15 18:02:29 5: Starting notify loop for Temp2, first event tmpint: 17
2016.04.15 18:02:29 5: Notify from Device: Temp2 recieved
2016.04.15 18:02:29 5: DbLog: logging of Device: Temp2 , Type: GPIO4 , Event: tmpint: 17 , Reading: tmpint , Value: 17 , Unit:
2016.04.15 18:03:29 5: pin16, in fileaccess: edge
2016.04.15 18:03:29 5: Triggering pin16 (1 changes)
2016.04.15 18:03:29 5: Starting notify loop for pin16, first event Dblclick: off
2016.04.15 18:03:29 5: Notify from Device: pin16 recieved
2016.04.15 18:03:29 5: Triggering pin16 (3 changes)
2016.04.15 18:03:29 5: Starting notify loop for pin16, first event Pinlevel: low
2016.04.15 18:03:29 5: Notify from Device: pin16 recieved
2016.04.15 18:03:30 5: Triggering Temp2 (1 changes)
2016.04.15 18:03:30 5: Starting notify loop for Temp2, first event tmpint: 17
2016.04.15 18:03:30 5: Notify from Device: Temp2 recieved
2016.04.15 18:03:30 5: DbLog: logging of Device: Temp2 , Type: GPIO4 , Event: tmpint: 17 , Reading: tmpint , Value: 17 , Unit:
2016.04.15 18:03:30 5: pin16, in fileaccess: edge
2016.04.15 18:03:30 5: Triggering pin16 (2 changes)
2016.04.15 18:03:30 5: Starting notify loop for pin16, first event Pinlevel: high
2016.04.15 18:03:30 5: Notify from Device: pin16 recieved
2016.04.15 18:03:32 5: pin18, in fileaccess: edge
2016.04.15 18:03:32 5: Triggering pin18 (2 changes)
2016.04.15 18:03:32 5: Starting notify loop for pin18, first event Pinlevel: high
2016.04.15 18:03:32 5: Notify from Device: pin18 recieved
2016.04.15 18:03:32 5: pin16, in fileaccess: value
2016.04.15 18:03:32 5: Triggering pin16 (1 changes)
2016.04.15 18:03:32 5: Starting notify loop for pin16, first event Longpress: on
2016.04.15 18:03:32 5: Notify from Device: pin16 recieved
2016.04.15 18:03:33 5: pin18, in fileaccess: value
2016.04.15 18:03:33 5: Triggering pin18 (1 changes)
2016.04.15 18:03:33 5: Starting notify loop for pin18, first event Longpress: on
2016.04.15 18:03:33 5: Notify from Device: pin18 recieve

shutdown restart

root@raspia:/opt/fhem# ls -l /sys/class/gpio/
total 0
-rwxrwx--- 1 root gpio 4096 Apr 15 18:05 export
lrwxrwxrwx 1 root gpio    0 Apr 14 23:12 gpio10 -> ../../devices/platform/soc/20200000.gpio/gpio/gpio10
lrwxrwxrwx 1 root gpio    0 Apr 14 23:12 gpio11 -> ../../devices/platform/soc/20200000.gpio/gpio/gpio11
lrwxrwxrwx 1 root gpio    0 Apr 14 23:12 gpio17 -> ../../devices/platform/soc/20200000.gpio/gpio/gpio17
lrwxrwxrwx 1 root gpio    0 Apr 14 23:12 gpio18 -> ../../devices/platform/soc/20200000.gpio/gpio/gpio18
lrwxrwxrwx 1 root gpio    0 Apr 14 23:12 gpio22 -> ../../devices/platform/soc/20200000.gpio/gpio/gpio22
lrwxrwxrwx 1 root gpio    0 Apr 15 18:05 gpio23 -> ../../devices/platform/soc/20200000.gpio/gpio/gpio23
lrwxrwxrwx 1 root gpio    0 Apr 15 18:05 gpio24 -> ../../devices/platform/soc/20200000.gpio/gpio/gpio24
lrwxrwxrwx 1 root gpio    0 Apr 14 23:12 gpio27 -> ../../devices/platform/soc/20200000.gpio/gpio/gpio27
lrwxrwxrwx 1 root gpio    0 Apr 14 23:12 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 4096 Apr 15 18:05 unexport

root@raspia:/opt/fhem# ls -l /sys/class/gpio/gpio23/
total 0
-rw-r--r-- 1 root root 4096 Apr 15 18:09 active_low
lrwxrwxrwx 1 root root    0 Apr 15 18:09 device -> ../../../20200000.gpio
-rw-r--r-- 1 root root 4096 Apr 15 18:05 direction
-rw-r--r-- 1 root root 4096 Apr 15 18:05 edge
lrwxrwxrwx 1 root root    0 Apr 15 18:05 subsystem -> ../../../../../../class/gpio
-rw-r--r-- 1 root root 4096 Apr 15 18:05 uevent
-rw-r--r-- 1 root root 4096 Apr 15 18:05 value

Internals:
   DEF        23
   EXCEPT_FD  17
   GPIO_Basedir /sys/class/gpio
   NAME       pin16
   NR         67
   RPI_pin    23
   STATE      on
   TYPE       RPI_GPIO
   WiringPi_gpio
   Readings:
     2016-01-03 01:51:06   Counter         25
     2016-04-15 18:03:29   Dblclick        off
     2016-04-15 18:03:32   Longpress       on
     2016-04-15 18:03:30   Pinlevel        high
     2016-04-15 18:03:30   state           on
   Fhem:
     interfaces switch
Attributes:
   direction  input
   interrupt  both
   verbose    5


und hier noch das komplette log eines shutdown restart

root@raspia:/opt/fhem# tail -f log/fhem-2016-04.log
2016.04.15 18:03:32 5: Starting notify loop for pin16, first event Longpress: on
2016.04.15 18:03:32 5: Notify from Device: pin16 recieved
2016.04.15 18:03:33 5: pin18, in fileaccess: value
2016.04.15 18:03:33 5: Triggering pin18 (1 changes)
2016.04.15 18:03:33 5: Starting notify loop for pin18, first event Longpress: on
2016.04.15 18:03:33 5: Notify from Device: pin18 recieved
2016.04.15 18:04:31 5: Triggering Temp2 (1 changes)
2016.04.15 18:04:31 5: Starting notify loop for Temp2, first event tmpint: 17
2016.04.15 18:04:31 5: Notify from Device: Temp2 recieved
2016.04.15 18:04:31 5: DbLog: logging of Device: Temp2 , Type: GPIO4 , Event: tmpint: 17 , Reading: tmpint , Value: 17 , Unit:
2016.04.15 18:05:27 4: Connection accepted from WEB_172.22.22.21_40462
2016.04.15 18:05:27 4: WEB_172.22.22.21_40462 POST /fhem?XHR=1&cmd=shutdown%20restart&fw_id=83; BUFLEN:0
2016.04.15 18:05:27 5: Cmd: >shutdown restart<
2016.04.15 18:05:27 5: Triggering global (1 changes)
2016.04.15 18:05:27 5: Starting notify loop for global, first event SHUTDOWN
2016.04.15 18:05:27 5: Notify from Device: global recieved
2016.04.15 18:05:27 0: Server shutdown
2016.04.15 18:05:27 5: pin16: interrupt detached
2016.04.15 18:05:27 5: pin16: gpio23 removed
2016.04.15 18:05:27 5: pin18: interrupt detached
2016.04.15 18:05:27 5: pin18: gpio24 removed
2016.04.15 18:05:31 5: Initializing Type Library:
2016.04.15 18:05:31 1: Including fhem.cfg
2016.04.15 18:05:31 5: Cmd: >attr global userattr DbLogExclude DbLogInclude cmdIcon devStateIcon devStateStyle icon sortby webCmd widgetOverride<
2016.04.15 18:05:31 5: Cmd: >attr global autoload_undefined_devices 1<
2016.04.15 18:05:31 5: Cmd: >attr global logfile ./log/fhem-%Y-%m.log<
2016.04.15 18:05:32 5: Cmd: >attr global modpath .<
2016.04.15 18:05:32 5: Cmd: >attr global motd SecurityCheck:

WEB,WEBphone,WEBtablet has no associated allowed device with basicAuth.
telnetPort has no associated allowed device with password/globalpassword.

Restart FHEM for a new check if the problem is fixed,
or set the global attribute motd to none to supress this message.
<
2016.04.15 18:05:32 5: Cmd: >attr global statefile ./log/fhem.save<
2016.04.15 18:05:32 5: Cmd: >attr global updateInBackground 1<
2016.04.15 18:05:32 5: Cmd: >attr global verbose 5<
2016.04.15 18:05:32 5: Cmd: >define telnetPort telnet 7072 global<
2016.04.15 18:05:32 5: Loading ./FHEM/98_telnet.pm
2016.04.15 18:05:32 3: telnetPort: port 7072 opened
2016.04.15 18:05:32 5: Cmd: >define WEB FHEMWEB 8083 global<
2016.04.15 18:05:32 5: Loading ./FHEM/01_FHEMWEB.pm
2016.04.15 18:05:33 3: WEB: port 8083 opened
2016.04.15 18:05:33 5: Cmd: >define WEBphone FHEMWEB 8084 global<
2016.04.15 18:05:33 3: WEBphone: port 8084 opened
2016.04.15 18:05:33 5: Cmd: >attr WEBphone stylesheetPrefix smallscreen<
2016.04.15 18:05:33 5: Cmd: >define WEBtablet FHEMWEB 8085 global<
2016.04.15 18:05:33 3: WEBtablet: port 8085 opened
2016.04.15 18:05:33 5: Cmd: >attr WEBtablet stylesheetPrefix touchpad<
2016.04.15 18:05:33 5: Cmd: >define Logfile FileLog ./log/fhem-%Y-%m.log fakelog<
2016.04.15 18:05:33 5: Loading ./FHEM/92_FileLog.pm
2016.04.15 18:05:33 5: Cmd: >define autocreate autocreate<
2016.04.15 18:05:33 5: Loading ./FHEM/98_autocreate.pm
2016.04.15 18:05:33 5: Cmd: >attr autocreate filelog ./log/%NAME-%Y.log<
2016.04.15 18:05:33 5: Cmd: >define eventTypes eventTypes ./log/eventTypes.txt<
2016.04.15 18:05:33 5: Loading ./FHEM/91_eventTypes.pm
2016.04.15 18:05:33 2: eventTypes: loaded 68 events from ./log/eventTypes.txt
2016.04.15 18:05:33 5: Cmd: >define initialUsbCheck notify global:INITIALIZED usb create<
2016.04.15 18:05:33 5: Loading ./FHEM/91_notify.pm
2016.04.15 18:05:33 5: Cmd: >define Temp2 GPIO4 28-00000656f9a8<
2016.04.15 18:05:33 5: Loading ./FHEM/58_GPIO4.pm
2016.04.15 18:05:33 4: GPIO4: GPIO4_Define(Temp2)
2016.04.15 18:05:34 5: Cmd: >attr Temp2 DbLogExclude failures,T,85<
2016.04.15 18:05:34 5: Cmd: >attr Temp2 event-min-interval tmpint:30<
2016.04.15 18:05:34 5: Cmd: >attr Temp2 event-on-change-reading tmpint<
2016.04.15 18:05:34 5: Cmd: >attr Temp2 model DS18B20<
2016.04.15 18:05:34 5: Cmd: >attr Temp2 room GPIO4<
2016.04.15 18:05:34 5: Cmd: >attr Temp2 userReadings tmpint {int ReadingsVal("Temp2","temperature",0)}<
2016.04.15 18:05:34 5: Cmd: >define FileLog_Temp2 FileLog ./log/Temp2-%Y.log Temp2<
2016.04.15 18:05:34 5: Cmd: >attr FileLog_Temp2 logtype text<
2016.04.15 18:05:34 5: Cmd: >attr FileLog_Temp2 room GPIO4<
2016.04.15 18:05:34 5: Cmd: >define Temp3 GPIO4 28-000006573235<
2016.04.15 18:05:34 4: GPIO4: GPIO4_Define(Temp3)
2016.04.15 18:05:36 5: Cmd: >attr Temp3 DbLogExclude failures,T,85<
2016.04.15 18:05:36 5: Cmd: >attr Temp3 event-min-interval tmpint:900<
2016.04.15 18:05:36 5: Cmd: >attr Temp3 event-on-change-reading tmpint<
2016.04.15 18:05:36 5: Cmd: >attr Temp3 model DS18B20<
2016.04.15 18:05:36 5: Cmd: >attr Temp3 room GPIO4<
2016.04.15 18:05:36 5: Cmd: >attr Temp3 userReadings tmpint {int ReadingsVal("Temp3","temperature",0)}<
2016.04.15 18:05:36 5: Cmd: >define FileLog_Temp3 FileLog ./log/Temp3-%Y.log Temp3<
2016.04.15 18:05:36 5: Cmd: >attr FileLog_Temp3 logtype text<
2016.04.15 18:05:36 5: Cmd: >attr FileLog_Temp3 room GPIO4<
2016.04.15 18:05:36 5: Cmd: >define Temp4 GPIO4 28-0000065cefd7<
2016.04.15 18:05:36 4: GPIO4: GPIO4_Define(Temp4)
2016.04.15 18:05:37 5: Cmd: >attr Temp4 DbLogExclude failures,T,85<
2016.04.15 18:05:37 5: Cmd: >attr Temp4 event-min-interval tmpint:900<
2016.04.15 18:05:37 5: Cmd: >attr Temp4 event-on-change-reading tmpint<
2016.04.15 18:05:37 5: Cmd: >attr Temp4 model DS18B20<
2016.04.15 18:05:37 5: Cmd: >attr Temp4 room GPIO4<
2016.04.15 18:05:37 5: Cmd: >attr Temp4 userReadings tmpint {int ReadingsVal("Temp4","temperature",0)}<
2016.04.15 18:05:37 5: Cmd: >define FileLog_Temp4 FileLog ./log/Temp4-%Y.log Temp4<
2016.04.15 18:05:37 5: Cmd: >attr FileLog_Temp4 logtype text<
2016.04.15 18:05:37 5: Cmd: >attr FileLog_Temp4 room GPIO4<
2016.04.15 18:05:37 5: Cmd: >define Temp1 GPIO4 28-00000655aa4f<
2016.04.15 18:05:37 4: GPIO4: GPIO4_Define(Temp1)
2016.04.15 18:05:38 5: Cmd: >attr Temp1 DbLogExclude failures,T,85<
2016.04.15 18:05:38 5: Cmd: >attr Temp1 event-min-interval tmpint:900<
2016.04.15 18:05:38 5: Cmd: >attr Temp1 event-on-change-reading tmpint<
2016.04.15 18:05:38 5: Cmd: >attr Temp1 model DS18B20<
2016.04.15 18:05:38 5: Cmd: >attr Temp1 room GPIO4<
2016.04.15 18:05:38 5: Cmd: >attr Temp1 userReadings tmpint {int ReadingsVal("Temp1","temperature",0)}<
2016.04.15 18:05:38 5: Cmd: >define FileLog_Temp1 FileLog ./log/Temp1-%Y.log Temp1<
2016.04.15 18:05:38 5: Cmd: >attr FileLog_Temp1 logtype text<
2016.04.15 18:05:38 5: Cmd: >attr FileLog_Temp1 room GPIO4<
2016.04.15 18:05:38 5: Cmd: >define logdb DbLog ./db.conf .*:tmpint.*<
2016.04.15 18:05:38 5: Loading ./FHEM/93_DbLog.pm
2016.04.15 18:05:39 3: Connecting to database SQLite:dbname=/opt/fhem/fhem.db with user
2016.04.15 18:05:39 3: Connection to db SQLite:dbname=/opt/fhem/fhem.db established for pid 2472
2016.04.15 18:05:39 3: Connection to db SQLite:dbname=/opt/fhem/fhem.db established
2016.04.15 18:05:39 5: Cmd: >define RPi GPIO4 BUSMASTER<
2016.04.15 18:05:39 4: GPIO4: GPIO4_Define(RPi)
2016.04.15 18:05:39 5: Cmd: >define pin19 RPI_GPIO 10<
2016.04.15 18:05:39 5: Loading ./FHEM/51_RPI_GPIO.pm
2016.04.15 18:05:39 4: RPI_GPIO: gpio directory exists: /sys/class/gpio
2016.04.15 18:05:39 4: pin19: gpio10 already exists
2016.04.15 18:05:39 5: Cmd: >attr pin19 direction output<
2016.04.15 18:05:39 5: pin19: set attr direction: output vorerst NICHT
2016.04.15 18:05:39 5: Cmd: >attr pin19 verbose 5<
2016.04.15 18:05:39 5: Cmd: >define pin21 RPI_GPIO 9<
2016.04.15 18:05:39 4: pin21: gpio9 already exists
2016.04.15 18:05:39 5: Cmd: >attr pin21 direction output<
2016.04.15 18:05:39 5: pin21: set attr direction: output vorerst NICHT
2016.04.15 18:05:39 5: Cmd: >attr pin21 verbose 5<
2016.04.15 18:05:39 5: Cmd: >define pin23 RPI_GPIO 11<
2016.04.15 18:05:39 4: pin23: gpio11 already exists
2016.04.15 18:05:39 5: Cmd: >attr pin23 direction output<
2016.04.15 18:05:39 5: pin23: set attr direction: output vorerst NICHT
2016.04.15 18:05:39 5: Cmd: >attr pin23 verbose 5<
2016.04.15 18:05:39 5: Cmd: >define pin11 RPI_GPIO 17<
2016.04.15 18:05:39 4: pin11: gpio17 already exists
2016.04.15 18:05:39 5: Cmd: >attr pin11 direction output<
2016.04.15 18:05:39 5: pin11: set attr direction: output vorerst NICHT
2016.04.15 18:05:39 5: Cmd: >attr pin11 verbose 5<
2016.04.15 18:05:39 5: Cmd: >define pin13 RPI_GPIO 27<
2016.04.15 18:05:39 4: pin13: gpio27 already exists
2016.04.15 18:05:39 5: Cmd: >attr pin13 direction output<
2016.04.15 18:05:39 5: pin13: set attr direction: output vorerst NICHT
2016.04.15 18:05:39 5: Cmd: >attr pin13 verbose 5<
2016.04.15 18:05:39 5: Cmd: >define pin15 RPI_GPIO 22<
2016.04.15 18:05:39 4: pin15: gpio22 already exists
2016.04.15 18:05:39 5: Cmd: >attr pin15 direction output<
2016.04.15 18:05:39 5: pin15: set attr direction: output vorerst NICHT
2016.04.15 18:05:39 5: Cmd: >attr pin15 verbose 5<
2016.04.15 18:05:39 5: Cmd: >define pin12 RPI_GPIO 18<
2016.04.15 18:05:39 4: pin12: gpio18 already exists
2016.04.15 18:05:39 5: Cmd: >attr pin12 direction output<
2016.04.15 18:05:39 5: pin12: set attr direction: output vorerst NICHT
2016.04.15 18:05:39 5: Cmd: >attr pin12 verbose 5<
2016.04.15 18:05:39 5: Cmd: >define pin16 RPI_GPIO 23<
2016.04.15 18:05:39 4: pin16: write access to file /sys/class/gpio/export, use it to export GPIO
2016.04.15 18:05:44 4: pin16: using gpio utility to export pin (first export via /sys/class/gpio/export failed)
Can't exec "export": No such file or directory at ./FHEM/51_RPI_GPIO.pm line 640, <$fh> line 130.
2016.04.15 18:05:44 5: Cmd: >attr pin16 direction input<
2016.04.15 18:05:44 5: pin16, in fileaccess: direction in
2016.04.15 18:05:44 4: pin16: direction ueber gpio utility einstellen
Can't exec "export": No such file or directory at ./FHEM/51_RPI_GPIO.pm line 640, <$fh> line 131.
2016.04.15 18:05:44 5: pin16: set attr direction: input
2016.04.15 18:05:44 5: Cmd: >attr pin16 interrupt both<
2016.04.15 18:05:44 5: pin16, in fileaccess: edge both
2016.04.15 18:05:44 1: Can't open file: pin16, edge
2016.04.15 18:05:44 5: Datei: /sys/class/gpio/gpio23/value, FH: IO::File=GLOB(0xa11f50), EXCEPT_FD: 17, akt. Wert: 1

2016.04.15 18:05:44 5: pin16: set attr interrupt: both
2016.04.15 18:05:44 5: Cmd: >attr pin16 verbose 5<
2016.04.15 18:05:44 5: Cmd: >define pin18 RPI_GPIO 24<
2016.04.15 18:05:44 4: pin18: write access to file /sys/class/gpio/export, use it to export GPIO
2016.04.15 18:05:49 4: pin18: using gpio utility to export pin (first export via /sys/class/gpio/export failed)
Can't exec "export": No such file or directory at ./FHEM/51_RPI_GPIO.pm line 640, <$fh> line 136.
2016.04.15 18:05:49 5: Cmd: >attr pin18 direction input<
2016.04.15 18:05:49 5: pin18, in fileaccess: direction in
2016.04.15 18:05:49 4: pin18: direction ueber gpio utility einstellen
Can't exec "export": No such file or directory at ./FHEM/51_RPI_GPIO.pm line 640, <$fh> line 137.
2016.04.15 18:05:49 5: pin18: set attr direction: input
2016.04.15 18:05:49 5: Cmd: >attr pin18 interrupt both<
2016.04.15 18:05:49 5: pin18, in fileaccess: edge both
2016.04.15 18:05:49 1: Can't open file: pin18, edge
2016.04.15 18:05:49 5: Datei: /sys/class/gpio/gpio24/value, FH: IO::File=GLOB(0xa98968), EXCEPT_FD: 18, akt. Wert: 1

2016.04.15 18:05:49 5: pin18: set attr interrupt: both
2016.04.15 18:05:49 1: Including ./log/fhem.save
2016.04.15 18:05:49 5: Cmd: >setstate FileLog_Temp1 active<
2016.04.15 18:05:49 5: Cmd: >setstate FileLog_Temp2 active<
2016.04.15 18:05:49 5: Cmd: >setstate FileLog_Temp3 active<
2016.04.15 18:05:49 5: Cmd: >setstate FileLog_Temp4 active<
2016.04.15 18:05:49 5: Cmd: >setstate Logfile active<
2016.04.15 18:05:49 5: Cmd: >setstate RPi 2016-04-14 21:14:11 failures 7<
2016.04.15 18:05:49 5: Cmd: >setstate Temp1 T: 17.687<
2016.04.15 18:05:49 5: Cmd: >setstate Temp1 2016-04-14 23:12:53 failures 0<
2016.04.15 18:05:49 5: Cmd: >setstate Temp1 2016-04-15 18:04:33 state T: 17.687<
2016.04.15 18:05:49 5: Cmd: >setstate Temp1 2016-04-15 18:04:33 temperature 17.687<
2016.04.15 18:05:49 5: Cmd: >setstate Temp1 2016-04-15 18:04:33 tmpint 17<
2016.04.15 18:05:49 5: Cmd: >setstate Temp2 T: 17.562<
2016.04.15 18:05:49 5: Cmd: >setstate Temp2 2016-04-14 23:12:50 failures 0<
2016.04.15 18:05:49 5: Cmd: >setstate Temp2 2016-04-15 18:04:31 state T: 17.562<
2016.04.15 18:05:49 5: Cmd: >setstate Temp2 2016-04-15 18:04:31 temperature 17.562<
2016.04.15 18:05:49 5: Cmd: >setstate Temp2 2016-04-15 18:04:31 tmpint 17<
2016.04.15 18:05:49 5: Cmd: >setstate Temp3 T: 17.562<
2016.04.15 18:05:49 5: Cmd: >setstate Temp3 2016-04-14 23:12:51 failures 0<
2016.04.15 18:05:49 5: Cmd: >setstate Temp3 2016-04-15 18:04:32 state T: 17.562<
2016.04.15 18:05:49 5: Cmd: >setstate Temp3 2016-04-15 18:04:32 temperature 17.562<
2016.04.15 18:05:50 5: Cmd: >setstate Temp3 2016-04-15 18:04:32 tmpint 17<
2016.04.15 18:05:50 5: Cmd: >setstate Temp4 T: 17.812<
2016.04.15 18:05:50 5: Cmd: >setstate Temp4 2016-04-14 23:12:52 failures 0<
2016.04.15 18:05:50 5: Cmd: >setstate Temp4 2016-04-15 18:04:32 state T: 17.812<
2016.04.15 18:05:50 5: Cmd: >setstate Temp4 2016-04-15 18:04:32 temperature 17.812<
2016.04.15 18:05:50 5: Cmd: >setstate Temp4 2016-04-15 18:04:32 tmpint 17<
2016.04.15 18:05:50 5: Cmd: >setstate autocreate active<
2016.04.15 18:05:50 5: Cmd: >setstate eventTypes active<
2016.04.15 18:05:50 5: Cmd: >setstate global <no definition><
2016.04.15 18:05:50 5: Cmd: >setstate initialUsbCheck 2016-04-15 17:58:17<
2016.04.15 18:05:50 5: Cmd: >setstate initialUsbCheck 2016-04-14 23:12:50 state active<
2016.04.15 18:05:50 5: Cmd: >setstate logdb connected<
2016.04.15 18:05:50 5: Cmd: >setstate logdb 2016-04-15 17:58:16 state connected<
2016.04.15 18:05:50 5: Cmd: >setstate pin11 off<
2016.04.15 18:05:50 4: pin11: STATE kann auf off wiederhergestellt werden 2016-04-15 18:05:50
2016.04.15 18:05:50 5: Cmd: >setstate pin11 2016-04-15 17:58:17 state off<
2016.04.15 18:05:50 4: pin11: state kann auf off wiederhergestellt werden 2016-04-15 17:58:17
2016.04.15 18:05:50 4: OUTPUT pin11: state wiederhergestellt auf off
2016.04.15 18:05:50 5: pin11, in fileaccess: value 0
2016.04.15 18:05:50 5: pin11, in fileaccess: direction low
2016.04.15 18:05:50 4: pin11: direction gesetzt auf low
2016.04.15 18:05:50 4: OUTPUT pin11: STATE wiederhergestellt auf off (restoreOnStartup=last)
2016.04.15 18:05:50 5: Cmd: >setstate pin12 off<
2016.04.15 18:05:50 4: pin12: STATE kann auf off wiederhergestellt werden 2016-04-15 18:05:50
2016.04.15 18:05:50 5: Cmd: >setstate pin12 2016-04-15 17:58:17 state off<
2016.04.15 18:05:50 4: pin12: state kann auf off wiederhergestellt werden 2016-04-15 17:58:17
2016.04.15 18:05:50 4: OUTPUT pin12: state wiederhergestellt auf off
2016.04.15 18:05:50 5: pin12, in fileaccess: value 0
2016.04.15 18:05:50 5: pin12, in fileaccess: direction low
2016.04.15 18:05:50 4: pin12: direction gesetzt auf low
2016.04.15 18:05:50 4: OUTPUT pin12: STATE wiederhergestellt auf off (restoreOnStartup=last)
2016.04.15 18:05:50 5: Cmd: >setstate pin13 off<
2016.04.15 18:05:50 4: pin13: STATE kann auf off wiederhergestellt werden 2016-04-15 18:05:50
2016.04.15 18:05:50 5: Cmd: >setstate pin13 2016-04-15 17:58:17 state off<
2016.04.15 18:05:50 4: pin13: state kann auf off wiederhergestellt werden 2016-04-15 17:58:17
2016.04.15 18:05:50 4: OUTPUT pin13: state wiederhergestellt auf off
2016.04.15 18:05:50 5: pin13, in fileaccess: value 0
2016.04.15 18:05:50 5: pin13, in fileaccess: direction low
2016.04.15 18:05:50 4: pin13: direction gesetzt auf low
2016.04.15 18:05:50 4: OUTPUT pin13: STATE wiederhergestellt auf off (restoreOnStartup=last)
2016.04.15 18:05:50 5: Cmd: >setstate pin15 off<
2016.04.15 18:05:50 4: pin15: STATE kann auf off wiederhergestellt werden 2016-04-15 18:05:50
2016.04.15 18:05:50 5: Cmd: >setstate pin15 2016-04-15 17:58:17 state off<
2016.04.15 18:05:50 4: pin15: state kann auf off wiederhergestellt werden 2016-04-15 17:58:17
2016.04.15 18:05:50 4: OUTPUT pin15: state wiederhergestellt auf off
2016.04.15 18:05:50 5: pin15, in fileaccess: value 0
2016.04.15 18:05:50 5: pin15, in fileaccess: direction low
2016.04.15 18:05:50 4: pin15: direction gesetzt auf low
2016.04.15 18:05:50 4: OUTPUT pin15: STATE wiederhergestellt auf off (restoreOnStartup=last)
2016.04.15 18:05:50 5: Cmd: >setstate pin16 on<
2016.04.15 18:05:50 4: pin16: STATE kann auf on wiederhergestellt werden 2016-04-15 18:05:50
2016.04.15 18:05:50 5: Cmd: >setstate pin16 2016-01-03 01:51:06 Counter 25<
2016.04.15 18:05:50 4: pin16: Counter kann auf 25 wiederhergestellt werden 2016-01-03 01:51:06
2016.04.15 18:05:50 4: INPUT pin16: Counter wiederhergestellt auf 25
2016.04.15 18:05:50 5: Cmd: >setstate pin16 2016-04-15 18:03:29 Dblclick off<
2016.04.15 18:05:50 4: pin16: Dblclick kann auf off wiederhergestellt werden 2016-04-15 18:03:29
2016.04.15 18:05:50 5: Cmd: >setstate pin16 2016-04-15 18:03:32 Longpress on<
2016.04.15 18:05:50 4: pin16: Longpress kann auf on wiederhergestellt werden 2016-04-15 18:03:32
2016.04.15 18:05:50 5: Cmd: >setstate pin16 2016-04-15 18:03:30 Pinlevel high<
2016.04.15 18:05:50 4: pin16: Pinlevel kann auf high wiederhergestellt werden 2016-04-15 18:03:30
2016.04.15 18:05:50 5: Cmd: >setstate pin16 2016-04-15 18:03:30 state on<
2016.04.15 18:05:50 4: pin16: state kann auf on wiederhergestellt werden 2016-04-15 18:03:30
2016.04.15 18:05:50 4: INPUT pin16: alter Pinwert war: on
2016.04.15 18:05:50 5: pin16, in fileaccess: value
2016.04.15 18:05:50 4: INPUT pin16: aktueller Pinwert ist: on
2016.04.15 18:05:50 5: Cmd: >setstate pin18 on<
2016.04.15 18:05:50 4: pin18: STATE kann auf on wiederhergestellt werden 2016-04-15 18:05:50
2016.04.15 18:05:50 5: Cmd: >setstate pin18 2016-01-03 02:04:28 Counter 13<
2016.04.15 18:05:50 4: pin18: Counter kann auf 13 wiederhergestellt werden 2016-01-03 02:04:28
2016.04.15 18:05:50 4: INPUT pin18: Counter wiederhergestellt auf 13
2016.04.15 18:05:50 5: Cmd: >setstate pin18 2016-04-15 18:01:51 Dblclick off<
2016.04.15 18:05:50 4: pin18: Dblclick kann auf off wiederhergestellt werden 2016-04-15 18:01:51
2016.04.15 18:05:50 5: Cmd: >setstate pin18 2016-04-15 18:03:33 Longpress on<
2016.04.15 18:05:50 4: pin18: Longpress kann auf on wiederhergestellt werden 2016-04-15 18:03:33
2016.04.15 18:05:50 5: Cmd: >setstate pin18 2016-04-15 18:03:32 Pinlevel high<
2016.04.15 18:05:50 4: pin18: Pinlevel kann auf high wiederhergestellt werden 2016-04-15 18:03:32
2016.04.15 18:05:50 5: Cmd: >setstate pin18 2016-04-15 18:03:32 state on<
2016.04.15 18:05:50 4: pin18: state kann auf on wiederhergestellt werden 2016-04-15 18:03:32
2016.04.15 18:05:50 4: INPUT pin18: alter Pinwert war: on
2016.04.15 18:05:50 5: pin18, in fileaccess: value
2016.04.15 18:05:50 4: INPUT pin18: aktueller Pinwert ist: on
2016.04.15 18:05:50 5: Cmd: >setstate pin19 off<
2016.04.15 18:05:50 4: pin19: STATE kann auf off wiederhergestellt werden 2016-04-15 18:05:50
2016.04.15 18:05:50 5: Cmd: >setstate pin19 2016-04-14 20:23:28 Pinlevel low<
2016.04.15 18:05:50 4: pin19: Pinlevel kann auf low wiederhergestellt werden 2016-04-14 20:23:28
2016.04.15 18:05:50 4: OUTPUT pin19: Pinlevel wiederhergestellt auf low
2016.04.15 18:05:50 5: Cmd: >setstate pin19 2016-04-15 17:58:17 state off<
2016.04.15 18:05:50 4: pin19: state kann auf off wiederhergestellt werden 2016-04-15 17:58:17
2016.04.15 18:05:50 4: OUTPUT pin19: state wiederhergestellt auf off
2016.04.15 18:05:50 5: pin19, in fileaccess: value 0
2016.04.15 18:05:50 5: pin19, in fileaccess: direction low
2016.04.15 18:05:50 4: pin19: direction gesetzt auf low
2016.04.15 18:05:50 4: OUTPUT pin19: STATE wiederhergestellt auf off (restoreOnStartup=last)
2016.04.15 18:05:50 5: Cmd: >setstate pin21 off<
2016.04.15 18:05:50 4: pin21: STATE kann auf off wiederhergestellt werden 2016-04-15 18:05:50
2016.04.15 18:05:50 5: Cmd: >setstate pin21 2016-04-15 17:58:17 state off<
2016.04.15 18:05:50 4: pin21: state kann auf off wiederhergestellt werden 2016-04-15 17:58:17
2016.04.15 18:05:50 4: OUTPUT pin21: state wiederhergestellt auf off
2016.04.15 18:05:50 5: pin21, in fileaccess: value 0
2016.04.15 18:05:50 5: pin21, in fileaccess: direction low
2016.04.15 18:05:50 4: pin21: direction gesetzt auf low
2016.04.15 18:05:50 4: OUTPUT pin21: STATE wiederhergestellt auf off (restoreOnStartup=last)
2016.04.15 18:05:50 5: Cmd: >setstate pin23 off<
2016.04.15 18:05:50 4: pin23: STATE kann auf off wiederhergestellt werden 2016-04-15 18:05:50
2016.04.15 18:05:50 5: Cmd: >setstate pin23 2016-04-15 17:58:17 state off<
2016.04.15 18:05:50 4: pin23: state kann auf off wiederhergestellt werden 2016-04-15 17:58:17
2016.04.15 18:05:50 4: OUTPUT pin23: state wiederhergestellt auf off
2016.04.15 18:05:50 5: pin23, in fileaccess: value 0
2016.04.15 18:05:50 5: pin23, in fileaccess: direction low
2016.04.15 18:05:50 4: pin23: direction gesetzt auf low
2016.04.15 18:05:50 4: OUTPUT pin23: STATE wiederhergestellt auf off (restoreOnStartup=last)
2016.04.15 18:05:50 5: Triggering global (1 changes)
2016.04.15 18:05:50 5: Starting notify loop for global, first event INITIALIZED
2016.04.15 18:05:50 4: GPIO4: GPIO4_GetSlaves()
2016.04.15 18:05:50 4: GPIO4: GPIO4_GetSlave(28-00000656f9a8)
2016.04.15 18:05:50 4: GPIO4: GPIO4_GetSlave(28-000006573235)
2016.04.15 18:05:50 4: GPIO4: GPIO4_GetSlave(28-0000065cefd7)
2016.04.15 18:05:50 4: GPIO4: GPIO4_GetSlave(28-00000655aa4f)
2016.04.15 18:05:50 5: Triggering initialUsbCheck
2016.04.15 18:05:50 4: initialUsbCheck exec usb create
2016.04.15 18:05:50 5: Cmd: >usb create<
2016.04.15 18:05:50 1: usb create starting
2016.04.15 18:05:52 4: ### ttyAMA0: checking if it is a CUL
2016.04.15 18:05:52 3: Probing CUL device /dev/ttyAMA0
2016.04.15 18:05:52 5: SW: 0a
2016.04.15 18:05:52 5: SW: 560a
2016.04.15 18:05:52 4: got wrong answer for a CUL
2016.04.15 18:05:52 4: ### ttyAMA0: checking if it is a TCM_ESP3
2016.04.15 18:05:52 3: Probing TCM_ESP3 device /dev/ttyAMA0
2016.04.15 18:05:52 5: SW: 5500010005700838
2016.04.15 18:05:52 4: got wrong answer for a TCM_ESP3
2016.04.15 18:05:52 4: ### ttyAMA0: checking if it is a FRM
2016.04.15 18:05:52 3: Probing FRM device /dev/ttyAMA0
2016.04.15 18:05:52 5: SW: f9
2016.04.15 18:05:58 5: SW: f079f7
2016.04.15 18:05:58 4: got wrong answer for a FRM
2016.04.15 18:05:58 1: usb create end
2016.04.15 18:05:58 5: Notify from Device: global recieved
2016.04.15 18:05:58 2: SecurityCheck:  WEB,WEBphone,WEBtablet has no associated allowed device with basicAuth. telnetPort has no associated allowed device with password/globalpassword.  Restart FHEM for a new check if the problem is fixed, or set the global attribute motd to none to supress this message.
2016.04.15 18:05:58 0: Featurelevel: 5.7
2016.04.15 18:05:58 0: Server started with 28 defined entities (fhem.pl:11237/2016-04-13 perl:5.014002 os:linux user:fhem pid:2472)
2016.04.15 18:05:58 4: Connection accepted from WEB_172.22.22.21_40465
2016.04.15 18:05:58 4: Connection accepted from telnetPort_172.22.22.9_45467
2016.04.15 18:05:58 5: Cmd: >admin<
2016.04.15 18:05:58 5: Cmd: >inform on .*<
2016.04.15 18:05:58 4: Setting inform to on .*
2016.04.15 18:05:59 4: WEB_172.22.22.21_40465 GET /fhem?XHR=1&inform=type=status;filter=;since=1460736135.1460001;fmt=JSON&fw_id=83&timestamp=1460736337755; BUFLEN:0

tasten druck
nichts



edit:
Das attribut unexport habe ich nachher auch gesetzt und nochmal probiert. Damit tritt das Problem nicht mehr auf.
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: klausw am 18 April 2016, 13:17:10
Danke, jetzt erinnere ich mich auch wieder...

beim Shutdown/Restart werden die Output GPIOs generell nicht mehr per unexport gelöscht.
Bei den Inputs aber schon, da Probleme mit dem Interrupt gemeldet wurden, wenn die Pins bestehen bleiben.
...wie auch immer, wenns jetzt läuft ist gut  8)
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: r_knipp am 22 April 2016, 22:57:25
Hallo zusammen,

ich habe auch Probleme mit den Rechten der GPIOs.

Und zwar habe ich mir ein neues System mit einem Minibian Jessie aufgesetzt und wiringpi installiert.
FHEM habe ich übers Debian Repository installiert.
User fhem ist angelegt und gehört zur Gruppe gpio.
Ich kann GPIOs exportieren und die Rechte ändern. Dies hält aber nur bis zu einem Reboot.
Außerdem bekomme ich beim Anlegen eines GPIO in FHEM immer folgende Fehlermeldung:
second attempt to export gpio17 failed: file /usr/local/bin/gpio doesnt exist
Habe schon ziemlich viel gelesen, aber noch keine Plan woran es liegt.


root@minibian:/sys/class/gpio# ls -l
total 0
--w------- 1 root root 4096 Apr 22 21:08 export
lrwxrwxrwx 1 root root    0 Apr 22 21:09 gpio17 -> ../../devices/platform/soc/20200000.gpio/gpio/gpio17
lrwxrwxrwx 1 root root    0 Apr 22 21:00 gpiochip0 -> ../../devices/platform/soc/20200000.gpio/gpio/gpiochip0
--w------- 1 root root 4096 Apr 22 21:00 unexport


Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: knxhm am 23 April 2016, 22:30:05
Du hast nicht gesagt ob die GPIO grundsätzlich gehen oder nicht ?
Hast du nach der Installation von FHEM ein "update" gemacht?
Habe selber kein Jessie, aber warum macht du nicht ein init script das die Rechte nach jedem Reboot so setzt wie du es willst ? Das habe ich bei mir so mit Wheezy (siehe oben),  wiringpi habe/brauche ich auch nicht.
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: r_knipp am 24 April 2016, 10:44:41
Ob die GPIOs unter Jessie grundsätzlich funktionieren, habe ich ehrlich gesagt nicht ausprobiert.
Unter Wheezy haben sie aber funktioniert. Da hatte ich Schalter und DS18B20 dran.
Ich könnte auch einfach mein Backup zurückspielen aber mich interessiert auch was da mit den Berechtigungen passiert.
So ein Startskript kann doch nicht die optimale Lösung sein. Unter Wheezy ging es ja auch ohne.

Ja, ein Update habe ich vor der Installation von FHEM gemacht.

WirinPi brauchst du nicht? Ich dachte immer das seit nötig um mit FHEM auf die GPIOs zugreifen zu können.
Habe ich da wohl etwas falsch verstanden?
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: knxhm am 24 April 2016, 16:54:08
Hm, ich hatte gefragt ob du ein "update" NACH der Installation von FHEM gemacht hast, ich meine ein FHEM update. Die letzte Vers. von RPI_GPIO ist vom 2016-03-23 und ohne update hast du möglicherweise ein veraltetes Modul, vielleicht gibts deswegen die Fehlermeldung wenn du einen GPIO anlegst?
Nein, WiringPi hab ich nicht installiert und alles geht wie ich will, Eingänge und Ausgänge und Temperaturmessung. Sowohl von Kommandozeile als auch mit FHEM. Ich habe allerdings ein init script installiert das die GPIO konfiguriert und die Rechte setzt.
Es gibt wohl mehrere Möglichkeiten wie man das alles zum laufen  bringen kann, ich habe halt diese gewählt.
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: r_knipp am 24 April 2016, 21:30:03
Zitat von: knxhm am 24 April 2016, 16:54:08
Hm, ich hatte gefragt ob du ein "update" NACH der Installation von FHEM gemacht hast,....

Sorry, das hatte ich falsch verstanden. Bin auch davon ausgegangen, dass FHEM aktuell wäre, wenn ich es über das Repository installiere.
Besten Dank jedenfalls für den Hinweis.

Habe nun ein Update gemacht, wiringpi deinstalliert und die Rechte des GPIOs auf 777 gesetzt und siehe da, es funktioniert.
Was mich allerdings berennend interessiert, warum die GPIOs beim reboot immer unexported werden.
Das muss man doch abstellen können.
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: klausw am 25 April 2016, 18:29:51
Zitat von: r_knipp am 24 April 2016, 21:30:03
Sorry, das hatte ich falsch verstanden. Bin auch davon ausgegangen, dass FHEM aktuell wäre, wenn ich es über das Repository installiere.
Besten Dank jedenfalls für den Hinweis.
Nein, bei der Installation wird immer der letzte Milestone (im mom 5.7) installiert. Ein update von FHEM ist daher nach der Neuinstallation eine gute Idee.

Zitat von: r_knipp am 24 April 2016, 21:30:03
Habe nun ein Update gemacht, wiringpi deinstalliert und die Rechte des GPIOs auf 777 gesetzt und siehe da, es funktioniert.
Was mich allerdings berennend interessiert, warum die GPIOs beim reboot immer unexported werden.
Das muss man doch abstellen können.
Wiringpi ist seit Jessie von Haus aus bei raspbian mit dabei. Allerdings wird es nicht grundsätzlich benötigt. Es ist vielmehr eine Alternative beim anlegen der GPIOs.

meinst du mit reboot den raspberry Neustart?
unter /sys/ gibt es nur virtuelle Dateien. Die sind nicht auf der SD Karte abgelegt und werden folglich bei jedem Neustart neu erzeugt. Daher lassen sich die Rechte auch nicht permanent speichern.
Wenn du Jessie als Neuinstallation hast sollte aber das hinzufügen von fhem zur Gruppe gpio vollkommen ausreichen.
Das minibian scheint die gpios ander zu behandeln
Zitat von: r_knipp am 22 April 2016, 22:57:25
root@minibian:/sys/class/gpio# ls -l
total 0
--w------- 1 root root 4096 Apr 22 21:08 export
lrwxrwxrwx 1 root root    0 Apr 22 21:09 gpio17 -> ../../devices/platform/soc/20200000.gpio/gpio/gpio17
lrwxrwxrwx 1 root root    0 Apr 22 21:00 gpiochip0 -> ../../devices/platform/soc/20200000.gpio/gpio/gpiochip0
--w------- 1 root root 4096 Apr 22 21:00 unexport
[/code]


Export sollte nämlich so aussehen:

-rwxrwx--- 1 root gpio 4096 Apr 22 22:56 export
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: Wernieman am 25 April 2016, 21:07:27
Btw:

Unix (Linux) hat ein Rechtekonzept, warum werden dann immer für Produktivsysteme erstmal alle rechte auf alles gesetzt?

chmod 777
bedeutet, das ALLE dort ALLES dürfen, im positiven wie im negativen Falle.

Besser ist es immer, es über eine Gruppe zu lösen, wie die hier schon erwähnte Gruppe gpio. Alternativ kann man sich mit Bordmitteln (z.B. udev) auch eine Gruppe "basteln", welch man fhem hinzufügt.
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: knxhm am 26 April 2016, 07:35:53
@wernieman, über die 777 hier kann man natûrlich trefflich streiten, ich sehe das jedenfalls im context. Wenn das Ding zuhause in einer privaten Umgebung werkelt und es auch nur einen User gibt dann ist das wohl egal. In einer Multiuserumgebung gebe ich dir natürlich recht.
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: r_knipp am 26 April 2016, 08:28:41
Zitat von: knxhm am 26 April 2016, 07:35:53
@wernieman, über die 777 hier kann man natûrlich trefflich steiten,ich sehe das jedenfalls im context. Wenn das Ding zuhause in einer privaten Umgebung werkelt und es auch nur einen User gibt dann ist das wohl egal. In einer Multiuserumgebung gebe ich dir natürlich recht.

Genauso sehe ich das auch. Das über Gruppen, bzw. User zu lösen ist sicher besser. Die Lösung über die 777 ist aber etwas einfacher.
Bei mir soll das Teil das Aquarium überwachen und Signale an mein Haupt-FHEM senden. Ist also nur von mir selber per LAN zu erreichen. Also alles gut denke ich ;-)

Zitat von: klausw am 25 April 2016, 18:29:51
meinst du mit reboot den raspberry Neustart?
unter /sys/ gibt es nur virtuelle Dateien. Die sind nicht auf der SD Karte abgelegt und werden folglich bei jedem Neustart neu erzeugt. Daher lassen sich die Rechte auch nicht permanent speichern.
Wenn du Jessie als Neuinstallation hast sollte aber das hinzufügen von fhem zur Gruppe gpio vollkommen ausreichen.
Das minibian scheint die gpios ander zu behandeln
Export sollte nämlich so aussehen:

-rwxrwx--- 1 root gpio 4096 Apr 22 22:56 export


Ja, mit reboot meinte ich den Neustart des Raspis.
OK, wenn die GPIO Dateien nicht auf der SD-Karte abgelegt werden ist es klar dass sie bei Neustart weg sind. Dann ist das Skript wohl erstmal die beste Lösung.
Den Sinn dahinter muss man aber nicht verstehen, oder?

Das Minibian behandelt die GPIO glaube ich auch nicht anders. Aber die Gruppe GPIO gibt's nicht (User fhem sowieso nicht). Die musste ich selber anlegen.
Das Minibian ist halt maximal abgespeckt. Dafür ist es aber keine 500MB groß und braucht gerade mal knapp über 30MB RAM und bootet sauschnell.
Gefühlte 80%-90% des Raspbian braucht man für FHEM doch nicht. Außer FHEM und nano habe ich mir bisher nur Raspi-Config nachinstalliert weil damit das Resizen des Dateisystems etwas einfacher von der Hand geht.
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: Wernieman am 26 April 2016, 09:23:56
ZitatWenn das Ding zuhause in einer privaten Umgebung werkelt
Da der Rechner über Deinen Router im INet hängt, sehe ich es leider anders. Mann sollte auch bei solchen "Kleingeräten" sich Gedanken über die Sicherheit machen. Deine Momentane Sicherheit ist, das es wenig fhem-Installationen gibt. Aber dieses kann  sich durchaus Ändern ;o)

Also 1-2 Gedanken über die Sicherheit, dazugehört hier das 777, ist eventuell nicht verkehrt.
Wie man es anders löst, findet man pr google auch schnell ;o)

Wollte es nur mal erwähnt haben ;o)
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: klausw am 26 April 2016, 15:26:34
Zitat von: r_knipp am 26 April 2016, 08:28:41
Ja, mit reboot meinte ich den Neustart des Raspis.
OK, wenn die GPIO Dateien nicht auf der SD-Karte abgelegt werden ist es klar dass sie bei Neustart weg sind. Dann ist das Skript wohl erstmal die beste Lösung.
Den Sinn dahinter muss man aber nicht verstehen, oder?
Der Sinn ist einfach der, daß du eine GPIO über das Dateisystem ansprechen kannst.
Es ist eine Virtuelle Datei, die auf den GPIO gemappt ist.
Eine Datei auf der SD Karte macht da doch keinen Sinn.

Zitat von: r_knipp am 26 April 2016, 08:28:41
Das Minibian behandelt die GPIO glaube ich auch nicht anders. Aber die Gruppe GPIO gibt's nicht (User fhem sowieso nicht). Die musste ich selber anlegen.
Das Minibian ist halt maximal abgespeckt. Dafür ist es aber keine 500MB groß und braucht gerade mal knapp über 30MB RAM und bootet sauschnell.
Gefühlte 80%-90% des Raspbian braucht man für FHEM doch nicht. Außer FHEM und nano habe ich mir bisher nur Raspi-Config nachinstalliert weil damit das Resizen des Dateisystems etwas einfacher von der Hand geht.
Bisschen schon wie mir scheint, die Gruppe gpio ist beim Raspbian vorhanden und die GPIOs sind per default von dieser Gruppe aus verwendbar.
Aber schnell booten ist auch ein Vorteil, da musst du halt abwägen.
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: r_knipp am 26 April 2016, 17:33:04
Zitat von: klausw am 26 April 2016, 15:26:34
Der Sinn ist einfach der, daß du eine GPIO über das Dateisystem ansprechen kannst.
Es ist eine Virtuelle Datei, die auf den GPIO gemappt ist.
Das ist ist mir klar.

Zitat von: klausw am 26 April 2016, 15:26:34
Eine Datei auf der SD Karte macht da doch keinen Sinn.
Sorry, aber das verstehe ich nicht. Das sollte doch genauso auch funktionieren wenn die Dateien auf der SD-Karte liegen würden.
Oder etwa nicht?

Zitat von: klausw am 26 April 2016, 15:26:34
Aber schnell booten ist auch ein Vorteil, da musst du halt abwägen.
Naja, die Bootzeit finde ich primär nicht so wichtig. Wenns einmal läuft braucht mans ja nicht oft rebooten.
Eine kurze Bootzeit bedeutet doch aber auch, dass viel weniger Programme und Services beim Start geladen werden, die man eigentlich gar nicht braucht und die nur die Performance negativ beeinflussen würden.
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: Wernieman am 26 April 2016, 18:43:57
Unix hat die Philosophie: Alles liegt im Dateisystem.

Es gibt mehr als ein "Pseudo-Dateisystem" unter Linux. Das ist z.B. /sys oder /proc. Wenn Du in diese absteigst (z.B. cd /proc) landest Du nicht auf Deiner Platte, sondern in einem eigenen "Treiber", der dieses Dateisystem abbildet.

Im Gegensatz zu Windows ist ein Device nicht ein Laufwerk, sondern liegt "nur" unter einem Ordner im Dateisystem. Dies kann irgendwo im Dateisystem liegen .... ist eigentlich relativ simple.

Ich glaube, ich sollte den Leipzig-Stammtisch mal voranbringen und dort einen Linux-Kurs "halten" ....
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: klausw am 26 April 2016, 21:41:18
Zitat von: Wernieman am 26 April 2016, 18:43:57
Ich glaube, ich sollte den Leipzig-Stammtisch mal voranbringen und dort einen Linux-Kurs "halten" ....

...wenn der in der MB stattfindet könnte ich schwach werden  8)

Zitat von: r_knipp am 26 April 2016, 17:33:04
Naja, die Bootzeit finde ich primär nicht so wichtig. Wenns einmal läuft braucht mans ja nicht oft rebooten.
Eine kurze Bootzeit bedeutet doch aber auch, dass viel weniger Programme und Services beim Start geladen werden, die man eigentlich gar nicht braucht und die nur die Performance negativ beeinflussen würden.
Die kannst du auch im Raspbian deaktivieren und da gibt es inzwischen auch eine abgespeckte Version.
Wie erwähnt dort musst du kein script für die GPIOs schreiben...die funktionieren einfach.
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: r_knipp am 26 April 2016, 23:09:15
Zitat von: Wernieman am 26 April 2016, 18:43:57
Unix hat die Philosophie: Alles liegt im Dateisystem.
Ich weiß, das hat uns unser Prof in den Vorlesungen für Netzwerke und Betriebssysteme schon immer eingetrichtert.

Trotzdem verstehe ich immer noch nicht warum die Dateien für die GPIOs nicht permanent auf der SD-Karte erzeugt werden können.
Sorry, vielleicht bin ich da ja etwas begriffsstutzig.
Aber ich nehme das erstmal so hin. Will den Thread ja nicht für eine Linux Schulung missbrauchen. Komme ja erstmal klar.

Zitat von: Wernieman am 26 April 2016, 18:43:57
Ich glaube, ich sollte den Leipzig-Stammtisch mal voranbringen und dort einen Linux-Kurs "halten" ....
Wär ich auch sofort dabei, wenn die Anfahrt nur nicht so weit wäre...
Webinar?

Zitat von: klausw am 26 April 2016, 21:41:18
Die kannst du auch im Raspbian deaktivieren und da gibt es inzwischen auch eine abgespeckte Version.
Wie erwähnt dort musst du kein script für die GPIOs schreiben...die funktionieren einfach.
Dazu fehlt mir leider das Know How  :(
Webinar?  ;)
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: Wernieman am 27 April 2016, 08:12:53
OT:
@klausw
Was meinst Du mit MB

@r_knipp
Die Dateien können nicht angelegt werden, da es eben kein Dateisystem ist!
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: klausw am 27 April 2016, 13:20:31
Zitat von: Wernieman am 27 April 2016, 08:12:53
OT:
@klausw
Was meinst Du mit MB

Moritz Bastei
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: Wernieman am 27 April 2016, 15:30:34
Kein Problem .... sollten wir nur im passenden Thread diskutieren

Habe mal einen neuen aufgemacht: https://forum.fhem.de/index.php/topic,52727.0.html (https://forum.fhem.de/index.php/topic,52727.0.html)

@Klaus:
Habe Dir dort eine Frage gestellt ;o)
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: PeMue am 26 Mai 2016, 20:57:09
Zitat von: Puschel74 am 22 April 2014, 10:49:43
Heute wurde bei uns (endlich) ein Wasserzähler mit Impulsausgang montiert.
Diesen Impulsausgang (1 Imp. = 1 Liter) möchte ich nun gerne an meinen RasPi klemmen und (logischerweise) abfragen.

Geht mein Vorhaben oder kommt sich I2C(GPIO1/2) und z.B. GPIO 17 in die Quere?
Nicht das sich das Modul resp. die WiringPi erstmal alle GPIO krallt und der I2C dann nichtmehr zur Verfügung steht.
Die Frage ist zwar schon eine Weile her, aber ich habe auch vor kurzem einen Wasserzähler mit Impulsausgang bekommen. Vorlage für die Realisierung war http://voizchat.de/gaszaehler-verbrauch-erfassen-mit-fhem-und-raspberry-gpio/

Ich habe den Impulsausgang auf den Stecker P5 (http://elinux.org/RPi_Low-level_peripherals) geklemmt, P5-06 und P5-08. Der Pullup kommt vom RaspberryPi GPIO.

Die Definition für RPIO_GPIO lautet wie folgt:
# water counter over RaspberryPi GPIO 31 (P5-6) and GND (P5-8)
define WZpin RPI_GPIO 31
attr WZpin active_low yes
attr WZpin devStateIcon on:ios-on-blue.png off:ios-off
attr WZpin direction input
attr WZpin interrupt both
attr WZpin pud_resistor up
attr WZpin room 3.1_Wasser
attr WZpin toggletostate yes


Für das zählen selber nutze ich HourCounter:
define Wasser HourCounter WZpin:on WZpin:off

Hier habe ich mir zwei zusätzliche Readings gebaut, die mir am Tagesende den Tagesgesamtverbrauch schreibt:
# prepare reading total water volume in every night)
define WasserDay_at at *23:59:30 {my $new=ReadingsVal("Wasser","countsPerDay","0");;fhem "setreading Wasser countsPerDay_tot $new";;}
attr WasserDay_at room 3.1_Wasser

bzw. alle 15 min. die Differenz berechnet:
# prepare reading for every 15 minutes difference to before
define Wasser15min_at at +*00:15:00 {\
my $last=ReadingsVal("Wasser", "counts15min_last", "0");;;; \
my $act=ReadingsVal("Wasser","countsOverall","0");;;; \
my $val15min=$act-$last;;;; \
fhem "setreading Wasser counts15min $val15min";;;; \
fhem "setreading Wasser counts15min_last $act";;;; \
}
attr Wasser15min_at room 3.1_Wasser

(ok, ich gebe zu, dass ich die fhem.cfg bearbeite, aber mit den Semikola weiß ich nicht, was ich tue  >:().

Da ich nicht alles loggen will, hier der Rest vom Code (10 min. countsOverall, nur bei Änderung countsPerDay bzw. jedes Reading counts15min):
attr Wasser event-min-interval countsOverall:600
attr Wasser event-on-change-reading countsPerDay
attr Wasser event-on-update-reading counts15min,countsPerDay_tot
attr Wasser room 3.1_Wasser
# log values
define Wasser_log FileLog ./log/wasser-%Y-%m.log Wasser:countsOverall:.*|Wasser:countsPerDay:.*|Wasser:counts15min:.*
define 1_Wasser_svg SVG Wasser_log:PM_wasser:CURRENT
attr 1_Wasser_svg label "Wasserverbrauch: Min $data{min1}, Max $data{max1}, Last $data{currval1}"
attr 1_Wasser_svg room 3.1_Wasser
define Wasser_day_log FileLog ./log/wasser_d-%Y-%m.log Wasser:countsPerDay_tot:.*
define 2_Wasser_day_svg SVG Wasser_day_log:PM_wasser_d:CURRENT
attr 2_Wasser_day_svg label "Wasserverbrauch pro Tag: Min $data{min1}, Max $data{max1}, Last $data{currval1}"
attr 2_Wasser_day_svg fixedrange month
attr 2_Wasser_day_svg room 3.1_Wasser


Zum Schluß habe ich mir noch eine Übersicht gebaut:
# summary of readings
define 0_Wasser readingsGroup <Wasser>,<Gesamt>,<gestern>,<aktuell>,<15 min.> <hr> Wasser:countsOverall,countsPerDay_tot,countsPerDay,counts15min
attr 0_Wasser valueFormat {countsOverall => "%.0f l", countsPerDay_tot => "%.0f l", countsPerDay => "%.0f l", counts15min => "%.0f l"}
attr 0_Wasser room 3.1_Wasser


Man sieht sehr schön, wann ich mit event-on-xxx gekämpft habe  ;)

Die gplots hänge ich auch mal ran, vielleicht kann es jemand brauchen.

Gruß PeMue

Edit: Eine Variable nachgetragen, damit auch der tägliche Verbrauch geloggt wird  ;)
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: huhu am 03 August 2016, 10:37:38
Hallo,

weiß jemand warum ich den user fhem nicht in die Gruppe gpio hinzufügen kann? Die Gruppe existiert bei mir nicht.. aber warum?
sudo adduser fhem gpio ->

adduser: The Group "gpio" does not exist.

Verwende das letzte raspian ::)
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: klausw am 03 August 2016, 14:14:20
Zitat von: huhu am 03 August 2016, 10:37:38
Verwende das letzte raspian ::)

Hast du eine Neuinstallation gemacht, oder aktualisiert?
Die Gruppe sollte eigentlich vorhanden sein.
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: Tueftler1983 am 10 Oktober 2016, 15:03:41
Hallo ich nutze SED heute dein Modul.
Erstmal muss ich sagen klasse das auslesen zweier GPIO funktionierte auf anhieb.

Aber beim schalten meiner 4 Relais habe ich das Problem das diese Invertiert sind. In FHEM steht On und die relais sind OFF.
Auch das attr aktive_low bringt keine Abhilfe egal ob es auf yes oder no steht.

Meine Relais brauchen GND zum schalten.

Kann es an WiringPI liegen das ich für Pilight und meine 433mhz Sender und Empfänger installiert habe?

Gibt es sonst noch ne Möglichkeit das Signal zu invertieren?
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: klausw am 10 Oktober 2016, 15:33:42
Hallo Tueftler1983,

gleiche Fragen an die selbe Person in unterschiedlichen Threads zu stellen beschleunigt die Antwort nicht.  8)
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: Tueftler1983 am 10 Oktober 2016, 15:44:38
Ach sorry hatte garnicht auf den Namen geachtet dachte nur frag mal beim Ersteller des Moduls nach... lol und sorry
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: Fistandantilus am 16 Oktober 2016, 16:08:42
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.
Titel: Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: RaspiLED am 16 Oktober 2016, 17:09:13
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
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: Tueftler1983 am 16 Oktober 2016, 17:27:11
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.
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: Wernieman am 16 Oktober 2016, 18:16:57
ll ist ein alias, den sich viele anlegen.

mach einfach ein:
ls -lha /sys/class/gpio/
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: Tueftler1983 am 16 Oktober 2016, 18:32:43
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:~#


Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag 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
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag 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
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: klausw am 18 Oktober 2016, 15:31:36
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
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: klausw am 18 Oktober 2016, 15:34:46
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.
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: Tueftler1983 am 18 Oktober 2016, 18:23:48
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?
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: Tueftler1983 am 25 Oktober 2016, 22:50:02
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?
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: klausw am 26 Oktober 2016, 17:25:39
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.
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: manne44 am 28 Oktober 2016, 10:33:53
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
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: klausw am 28 Oktober 2016, 12:39:16
versuche es in dieser Weise:

my $val = ReadingsVal(<name>,<reading>,<default value>)
my $val = ReadingsVal("pin13","Pinlevel","low")
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: manne44 am 28 Oktober 2016, 13:40:38
Vielen Dank, aber da lese ich doch nur das was in der Variablen pin13 steht, was aber offenbar nicht immer richtig ist. Ich wollte mal den Pin direkt abfragen und das geht offenbar nicht. Hängt das etwa vom Attribut "attr interrupt both" ab, d.h. das get wartet auf den nächsten Interrupt?
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: klausw am 28 Oktober 2016, 15:29:52
Bei get liest das Modul den aktuellen Pinstatus aus da sollte nix hängen.
Ws sei denn der Pin wird anderweitig blockiert.
Mit attr interrupt both sorgst du nur dafür, das die Readings im Falle eines Pegelwechsels sofort aktualisiert werden und du damit immer aktuelle Readings hast (das wäre natürlich Voraussetzung für ReadingsVal).
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: manne44 am 29 Oktober 2016, 02:36:16
Ich habe bei get einen Fehler gemacht und anstatt
my $pin13 = fhem("get pin13");
das ohne Anführungszeichen geschrieben. Aber warum da keine Fehlermeldung kommt, sondern die Verarbeitung abbricht, das ist mir unklar. Ich sehe es nämlich an den folgenden Log-Einträgen, die ausbleiben wenn der Befehl ohne Anführungszeichen geschrieben wird.
Ausgabe ist nicht nur der Wert, sondern ein String:
pin13:Current Value for pin13: low
Was mir nicht klar ist, ist das nun der direkte Zugriff auf den Pin oder nur das Reading, das man auch mit ReadingsVal(..) bekommen könnte?
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: Tueftler1983 am 29 Oktober 2016, 15:24:14
Hallo
Ich bin mittlerweile auf dem RPI3 was auch soweit gut klappt aber ich bekomme auf meinem Klingel Eingang Störungen drauf. sprich wenn ich meinen Türschnapper schalte (12V DC) bekomme ich die meldung TuerKlingel
Das heißt ich habe Störungen die ich mir einfange.
Habe das attr pud resistor auf down da ich die 3,3v auf den gpio schalte.
Kann es sein das der Pull_Down doch nicht gesetzt ist? GIBT es ne Möglichkeit das zu überprüfen?
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: klausw am 29 Oktober 2016, 21:16:21
Zitat von: manne44 am 29 Oktober 2016, 02:36:16
Was mir nicht klar ist, ist das nun der direkte Zugriff auf den Pin oder nur das Reading, das man auch mit ReadingsVal(..) bekommen könnte?

Mit get wird der aktuelle Pinwert gelesen.

Zitat von: Tueftler1983 am 29 Oktober 2016, 15:24:14

Ich bin mittlerweile auf dem RPI3 was auch soweit gut klappt aber ich bekomme auf meinem Klingel Eingang Störungen drauf. sprich wenn ich meinen Türschnapper schalte (12V DC) bekomme ich die meldung TuerKlingel
Das heißt ich habe Störungen die ich mir einfange.
Habe das attr pud resistor auf down da ich die 3,3v auf den gpio schalte.
Kann es sein das der Pull_Down doch nicht gesetzt ist? GIBT es ne Möglichkeit das zu überprüfen?

Ich empfehle dir, einen externen Pullup zu verwenden. Der interne ist recht schwach.
Wenn du Störungen hast dann würde ich nen Tiefpass an den Pin ran bauen.


Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: Tueftler1983 am 29 Oktober 2016, 23:44:59
Was ich komisch finde ist mit dem RPI2+ hatte ich die selbe Verkabelung (nur von den einem RPI auf den anderen umgestecht. Auch die fhem config war gleich aber da hatte ich die Probleme nicht.

Dann habe ich mal den pud resistor auf up gestellt, eigentlich hätte der Pin Status sich ja auf high ändern sollen dem war aber nicht so
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: manne44 am 30 Oktober 2016, 16:28:51
Vielen Dank für die Antworten und auch für das ganze Modul, was das digitale IO über die Pins sehr einfach macht.
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: klausw am 30 Oktober 2016, 22:48:52
Zitat von: Tueftler1983 am 29 Oktober 2016, 23:44:59
Was ich komisch finde ist mit dem RPI2+ hatte ich die selbe Verkabelung (nur von den einem RPI auf den anderen umgestecht. Auch die fhem config war gleich aber da hatte ich die Probleme nicht.

Dann habe ich mal den pud resistor auf up gestellt, eigentlich hätte der Pin Status sich ja auf high ändern sollen dem war aber nicht so
Naja, den Pullup stellt WiringPi ein. Es kann sein, das der Prozessor im Pi3 von WiringPi nicht unterstützt wird. Oder dieser Pin hat beim Pi3 keinen PullUp.
Diesbezüglich bin ich überfragt.
Aber wenn es mit dem internen Pullup beim Pi2 funktionierte geht es sicher mit einem Externen und dem Pi3
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: Tueftler1983 am 30 Oktober 2016, 23:00:52
Hmm okay sieht dann zwar nicht mehr so hübsch aus aber egal wenn nicht anders geht
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: klausw am 30 Oktober 2016, 23:15:55
Zitat von: Tueftler1983 am 30 Oktober 2016, 23:00:52
Hmm okay sieht dann zwar nicht mehr so hübsch aus aber egal wenn nicht anders geht

Hübsch? Na wenns im Wohnzimmer an der Wand hängt kann ich dir nicht helfen  ;D
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: Tueftler1983 am 31 Oktober 2016, 10:47:19
Nein das nicht hängt in einer abkastung im Flur wo auch der Sicherungskasten ist.
Habe den fehler mit den Pull-Down gefunden.... WiringPI war nicht installiert.
Problem besteht weiterhin. Werde jetzt noch versuchen auf Pull-UP zu stellen und GND zu schalten.
Wenn das auch nicht hilft kommen Externe Widerstände dran.
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: Tueftler1983 am 31 Oktober 2016, 17:52:45
Also jetzt funktioniert es!
Pud_resistor auf Pull-UP gestellt und mit GND schalten. Jetzt habe ich keine Störungen mehr!

Danke für die hilfe
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: klausw am 01 November 2016, 00:44:13
Zitat von: Tueftler1983 am 31 Oktober 2016, 17:52:45
Also jetzt funktioniert es!
Pud_resistor auf Pull-UP gestellt und mit GND schalten. Jetzt habe ich keine Störungen mehr!
Ok, also up geht, aber down nicht?
Hmm, dann kann vermutlich der Portpin nix anderes
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: cotecmania am 12 November 2016, 11:39:56
Hi,

bei mir funktioniert der Interrupt-Modus nicht, d.h. ich kann einen Input per ReadValue erfolgreich einlesen mit wechselndem state.
Aber bei Zustandswechsel wird der State nicht automatisch geändert durch Interrupt.


Raspy B, neuestes Wheezy, WiringPi installiert

   DEF        18
   EXCEPT_FD  12
   GPIO_Basedir /sys/class/gpio
   NAME       TuerKlingel
   NR         974
   RPI_pin    18
   STATE      off
   TYPE       RPI_GPIO
   WiringPi_gpio
   Readings:
     2016-11-12 11:27:19   Pinlevel        low
     2016-11-12 11:27:19   state           off
   Fhem:
     interfaces switch
Attributes:
   direction  input
   interrupt  rising
   pud_resistor down
   restoreOnStartup off
   room       Interfaces


ls -l /sys/class/gpio/
total 0
-rwxrwx--- 1 root gpio 4096 Nov 11 21:40 export
lrwxrwxrwx 1 root gpio    0 Nov 11 21:40 gpio18 -> ../../devices/platform/soc/20200000.gpio/gpio/gpio18
lrwxrwxrwx 1 root gpio    0 Jan  1  1970 gpiochip0 -> ../../devices/platform/soc/20200000.gpio/gpio/gpiochip0
-rwxrwx--- 1 root gpio 4096 Jan  1  1970 unexport


Was mache ich falsch ?

Gruss
Joe
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: Tueftler1983 am 12 November 2016, 11:47:36
Also wenn es sich um das zuferlässige melden der Türklingel geht bin ich bei Counter hängen geblieben das funktioniert bei mir zu 100%. Mit einem DOIF frage ich die Änderung des Counter ab
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: cotecmania am 12 November 2016, 15:33:42
Nein es geht darum, dass sich mein State bzw. Pinlevel in FHEM nicht automatisch aendert, wenn ich an den PIN GND oder 3.3 V anlege.
Nur wenn ich manuell ReadValue ausführe, dann wird der Zustand erkannt ...
Einen Counter hab ich auch nicht ...
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: klausw am 13 November 2016, 00:34:16
Zitat von: cotecmania am 12 November 2016, 15:33:42
Nein es geht darum, dass sich mein State bzw. Pinlevel in FHEM nicht automatisch aendert, wenn ich an den PIN GND oder 3.3 V anlege.
Nur wenn ich manuell ReadValue ausführe, dann wird der Zustand erkannt ...
Einen Counter hab ich auch nicht ...
attribut interrupt auf both stellen um Pegeländerungen zu sehen

Wenn das Attribut auf rising steht wird natürlich auch nur ein Interrupt und damit eine Aktualisierung bei steigender Flanke ausgelöst.
Es wird dabei auch ein Ereignis ausgelöst (erkennbar daran, das sich die Readingzeit ändert wenn jemand klingelt), welches du für ein notify oder DOIF verwenden könntest.

Du solltest überlegen, was du überhaupt benötigst und dann entscheiden, welche Art von Interrupt dafür die beste ist.
Wenn du die Klingeldauer haben möchtest dann ist "both" notwendig
Wenn nur das Ereignis, das jemand gedrückt hat wichtig ist dann rising oder falling.
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: cotecmania am 13 November 2016, 11:03:00
Zitat von: klausw am 13 November 2016, 00:34:16

Wenn das Attribut auf rising steht wird natürlich auch nur ein Interrupt und damit eine Aktualisierung bei steigender Flanke ausgelöst.
Es wird dabei auch ein Ereignis ausgelöst (erkennbar daran, das sich die Readingzeit ändert wenn jemand klingelt), welches du für ein notify oder DOIF verwenden könntest.


Das ist mir klar, aber es wird eben gar kein Zustandswechsel automatisch erkannt, auch nicht wenn ich "both" einstelle.
Das ist mein Problem ...
Muss man die Interrupt-Funktionalität erst irgendwie aktivieren ?

Nur wenn ich dann in FHEM auf ReadValue klicke, werden die Readings incl. Zeitangabe aktualisiert ...

Gruss
Joe
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: Tueftler1983 am 13 November 2016, 12:24:40
Ist fhem den Mitglied in der Gruppe gpio?

Also wenn der impuls am Eingang nicht zu kurz ist sollte fhem es mitbekommen.
Bei mir klappt es am besten wenn ich die interne pullups aktiviere und den gpio beim schalten auf gnd ziehe
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: klausw am 13 November 2016, 17:44:10
Zitat von: cotecmania am 13 November 2016, 11:03:00
Das ist mir klar, aber es wird eben gar kein Zustandswechsel automatisch erkannt, auch nicht wenn ich "both" einstelle.
Das ist mein Problem ...
Muss man die Interrupt-Funktionalität erst irgendwie aktivieren ?

Nur wenn ich dann in FHEM auf ReadValue klicke, werden die Readings incl. Zeitangabe aktualisiert ...
Das ist ein seltsames Verhalten.
Der Interrupt muss nicht aktiviert werden.
Es könnte ein Rechteproblem sein, aber dann sollte gar nix gehen. Steht was im Log?

was bringt:
ls -l /sys/class/gpio/gpio18/
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: cotecmania am 13 November 2016, 17:52:28
Die Zustände "high/low" bzw. "on/off" werden grundsätzlich erkannt, wenn ich auf ReadValue klicke ...
Nur die automatische Interrupt-Funktion bzw. das automatische setzen der Readings gehen nicht ...
Im Log habe ich nichts gefunden. Muss ich verbose hochsetzen ?

pi@raspberrypi ~ $ ls -l /sys/class/gpio/gpio18/
total 0
-rw-r--r-- 1 root root    4096 Nov 13 17:47 active_low
lrwxrwxrwx 1 root root       0 Nov 13 17:47 device -> ../../../20200000.gpio
-rw-r--r-- 1 root root    4096 Nov 13 13:24 direction
-rw-r--r-- 1 fhem dialout 4096 Nov 13 13:24 edge
lrwxrwxrwx 1 root root       0 Nov 13 13:24 subsystem -> ../../../../../../class/gpio
-rw-r--r-- 1 root root    4096 Nov 13 13:24 uevent
-rw-r--r-- 1 fhem dialout 4096 Nov 13 13:24 value



Gruss
Joe
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: Tueftler1983 am 13 November 2016, 18:28:41
Erste Problem was ich sehe das die rechte zerschossen sind. Eigentlich sollte da immer root     gpio  stehen nicht root      root
Hast du mal ein Upgrade weelzy auf jessie gemacht?

Dadurch kannst du die Funktionen active_low und pud_resistor nicht so einfach nutzen
Also wie gesagt wenn es nur darum geht auf das Klingeln zu reagieren geht es bei mir am besten über den counter.

Die Screenshots zeigen wie ich das Klingeln auswerte und reagiere
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: klausw am 13 November 2016, 18:32:27
Fehlerhafte Dateizugriffe sollten eigentlich im Log auftauchen.
Aber wer weiß, vielleicht habe ich was übersehen. Verbose 5 kann nicht schaden.

Kann es sein, das du ein Update von wheezy auf jessie gemacht hast?
Die Dateien in /sys/class/gpio/ (export und unexport) haben die korrekten Rechte (-rwxrwx--- 1 root gpio)
Diese Rechte müssten auch die Dateien des GPIO nach Anlegen haben.
Nach einem Upgrade von wheezy auf jessie funktioniert das nicht mehr

Ist WiringPi installiert? Die Rechte von Edge und Value deuten darauf hin, aber die Pfadangabe ist leer, was wiederum auf das fehlen hindeutet.
Ist fhem in der Gruppe dialout?

mit
cat /sys/class/gpio/gpio18/edge
kannst du überprüfen ob die Datei korrekt geschrieben wurde
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: cotecmania am 13 November 2016, 19:09:36
Hi,

WiringPi habe ich installiert.
Arbeite immer noch mit Wheezy, kein Jessy.

pi@raspberrypi /sys/class/gpio $ cat /sys/class/gpio/gpio18/edge
both


Ist fhem in der Gruppe dialout? - Wie finde ich das raus ?
Ich komme aus der Windows-Welt und bin in Linux nicht sehr firm.

Kann man nicht dem ganzen Pfad auf einmal die notwendigen Berechtigungen geben ?

Eine Anleitung der Linux-Befehle in der richtigen Reihenfolge, damit alles läuft, wäre sehr hilfreich.

Gruss Joe
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: klausw am 13 November 2016, 21:19:53
Zitat von: cotecmania am 13 November 2016, 19:09:36
WiringPi habe ich installiert.
Arbeite immer noch mit Wheezy, kein Jessy.

pi@raspberrypi /sys/class/gpio $ cat /sys/class/gpio/gpio18/edge
both


Hm, das passt doch an den Rechten kann es also nicht liegen.
An sich müsste es funktionieren. Jetzt wird es langsam schwierig.

Ist das Modul aktuell? Mache mal ein "update force"
Und dann mal mit verbose 5 starten (global und im Modul)


Zitat von: cotecmania am 13 November 2016, 19:09:36
Ist fhem in der Gruppe dialout? - Wie finde ich das raus ?
Ich komme aus der Windows-Welt und bin in Linux nicht sehr firm.

Kurzer Abriss (https://wiki.ubuntuusers.de/Benutzer_und_Gruppen/) über Linux User und Gruppen

Zitat von: cotecmania am 13 November 2016, 19:09:36
Kann man nicht dem ganzen Pfad auf einmal die notwendigen Berechtigungen geben ?

Jein, du kannst nach anlegen des GPIO die Rechte setzen. Das musst du aber nach jedem Reboot machen, da es nur virtuelle Dateien sind, die jedesmal beim booten neu erzeugt werden.

Zitat von: cotecmania am 13 November 2016, 19:09:36
Eine Anleitung der Linux-Befehle in der richtigen Reihenfolge, damit alles läuft, wäre sehr hilfreich.

Stehen in der commandref. So wie dort beschrieben funktioniert es üblicherweise.

Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: cotecmania am 15 November 2016, 14:44:43
Hi,

gestern bin ich "gezwungenermassen" von wheezy auf Jessie umgestiegen (knapp 7h update ;-)) , da ich sonst meinen Bluetooth-Thermostat von EQ-3 nicht zum laufen bekam.
Nun habe ich mal unter Jessie den GPIO18 wieder auf 3.3V gelegt und siehe da, der Interrupt wurde ausgelöst.

Gruss
Joe
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: Tueftler1983 am 15 November 2016, 16:31:22
Ja unter Jessie bin ich auch zufriedener mit der Ansteuerung und dem auslesen der GPIO'S
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: KNUT345 am 02 Januar 2018, 14:46:46
Hallo Zusammen,
habe seit kurzem meinen RPi3 mit Stretch Lite am Laufen.
FHEM läuft problemlos, wollte nun GPIO einbinden und bekomme permanent.
Zitat
2018.01.02 14:11:26 1: Can't open file: RasPi_Pin38, value
2018.01.02 14:13:29 1: Can't open file: RasPi_Pin38, value
2018.01.02 14:15:48 1: Can't open file: RasPi_Pin38, value
2018.01.02 14:17:16 5: wird an setextensions gesendet: RasPi_Pin38 ?
2018.01.02 14:17:16 5: wird an setextensions gesendet: RasPi_Pin38 ?
2018.01.02 14:17:16 5: wird an setextensions gesendet: RasPi_Pin38 ?
2018.01.02 14:17:16 5: RasPi_Pin38, in fileaccess: value
2018.01.02 14:17:16 1: Can't open file: RasPi_Pin38, value
2018.01.02 14:17:16 1: RasPi_Pin38 GetFn: readout of Pinvalue fail
2018.01.02 14:17:21 5: RasPi_Pin38, in fileaccess: value 0
2018.01.02 14:17:21 1: Can't open file: RasPi_Pin38, value
2018.01.02 14:17:21 5: wird an setextensions gesendet: RasPi_Pin38 ?

Hatte zuvor FHEM auf RasPi2 mit Wheezy am Laufen.
Wesentlicher Unterschied Stretch zu Wheezy ist, dass ich jetzt den Benutzer fhem mit definierten Rechten, kein root, angelegt habe.
Zitat
fhem@RasPi3:~ $ id
uid=1001(fhem) gid=1001(fhem) groups=1001(fhem),20(dialout),997(gpio)
fhem@RasPi3:~ $ groups
fhem dialout gpio
fhem@RasPi3:~ $

Zitat
fhem@RasPi3:~ $ ls -l /sys/class/gpio/gpio20/
total 0
-rwxrwx--- 1 root gpio 4096 Jan  2 14:10 active_low
lrwxrwxrwx 1 root gpio    0 Jan  2 14:10 device -> ../../../gpiochip0
-rwxrwx--- 1 root gpio 4096 Jan  2 14:15 direction
-rwxrwx--- 1 fhem fhem 4096 Jan  2 14:10 edge
drwxrwx--- 2 root gpio    0 Jan  2 14:10 power
lrwxrwxrwx 1 root gpio    0 Jan  2 14:10 subsystem -> ../../../../../../../class/gpio
-rwxrwx--- 1 root gpio 4096 Jan  2 14:10 uevent
-rwxrwx--- 1 fhem fhem 4096 Jan  2 14:20 value
fhem@RasPi3:~ $

Wenn ich Value manuell ändere, dann bekomme ich LED an GPIO auch zum Leuchten.
Ich vermute ein Rechteproblem, obwohl value Gruppe und Benutzer fhem volle Rechte haben.

Hat jemand einen Tipp?

Danke im Voraus
Knut
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: klausw am 02 Januar 2018, 15:29:29
Komisch, die Rechte passen.
Hast du nach setzen der Rechte neu gestartet? Der Befehl reboot scheint da nicht immer zu funktionieren.
Bringt "{`id`}" in Fhem eingegeben die gleiche Zeile wie in deinem vorangegangenen Post?
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: KNUT345 am 02 Januar 2018, 15:36:28
Hallo Klaus,
"{`id`}" in Fhem eingegeben bringt
uid=1001(fhem) gid=1001(fhem) groups=1001(fhem),20(dialout)
irgendwie nicht ganz das gleiche zu
Zitatuid=1001(fhem) gid=1001(fhem) groups=1001(fhem),20(dialout),997(gpio)
da fehlt gpio!

Muss man da in fhem was anpassen?

Grüße
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: klausw am 02 Januar 2018, 17:07:29
ich hatte eher erwartet, das die uid nicht fhem ist
gleiche uid heisst für mich, gleiche gruppen
Das Ergebnis verstehe ich nicht.
hast du zwischenzeitlich neu gestartet? evtl. übernimmt ein Prozess die Rechte/Gruppen, etc. beim laden.
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: KNUT345 am 02 Januar 2018, 18:10:17
Das war der richtige Hinweis!
Ich hatte fhem schon mehrfach neu gestartet,
aber nie den Pi gebootet.
Nach Reboot funktioniert es.  :)

Danke
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: Mave am 24 Januar 2018, 10:10:39
Hallo klausw,

ich habe einen kleinen Abstellraum, in dem sich mein FHEM RPI3 befindet und der 2 Türen hat. Ich würde gerne per FHEM das Licht (HUE Lampe) im Raum einschalten, sobald eine der beiden Türen geöffnet wird. Sind beide Türen geschlossen, soll das Licht im Raum ausgehen.

Natürlich könnte ich das über Türkontakte lösen, würde aber ungern 2 Mal 30,- Euro für die HomeMatic Türkontakte ausgeben und bin deshalb auf die Idee gekommen, das Problem mit den GPIOs des RPI3 zu lösen.

Leider fehlt mir das technische Know-How, um entscheiden zu können, was für Sensoren ich an den Türen anbringen muss, um sie direkt mit dem RPI3 abfragen zu können.

Für Hilfe wäre ich sehr dankbar.

Vielen Dank.

Grüße Mave
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: Tueftler1983 am 24 Januar 2018, 10:53:39
Einfache kabelgebundene Reed Kontakte
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: firstfacility am 18 Dezember 2018, 16:12:19
Hallo Forum,
ich hole dieses Thema nochmal hoch da ich grade vor den Problem stehe meine Gpio´s nicht ansteuern zu können. Als Hintergrund möchte ich gern ein Relaismodul ansteuern um damit Rollos zu steuern. Hierzu habe ich das GPIO Modul wie folgt eingebunden:

define Kopfup RPI_GPIO 12
attr Kopfup direction output
define Kopfdown RPI_GPIO 13
attr Kopfdown direction output
define Fussup RPI_GPIO 4
attr Fussup direction output
attr Fussup verbose 5
define Fussdown RPI_GPIO 5
attr Fussdown direction output
attr Fussdown verbose 5
define Schereup RPI_GPIO 2
attr Schereup direction output
define Scheredown RPI_GPIO 3
attr Scheredown direction Output


Wenn ich nun neu starte bekomme ich unter /sys/class/gpio/ das angezeigt:


drwxrwx---  2 fhem dialout    0 Dez 18 15:29 .
drwxr-xr-x 50 root root       0 Dez 18 15:43 ..
-rwxrwx---  1 root gpio    4096 Dez 18 15:29 export
lrwxrwxrwx  1 root gpio       0 Dez 18 15:29 gpio12 -> ../../devices/platform/soc/20200000.gpio/gpiochip0/gpio/gpio12
lrwxrwxrwx  1 root gpio       0 Dez 18 15:29 gpio13 -> ../../devices/platform/soc/20200000.gpio/gpiochip0/gpio/gpio13
lrwxrwxrwx  1 root gpio       0 Dez 18 15:29 gpio2 -> ../../devices/platform/soc/20200000.gpio/gpiochip0/gpio/gpio2
lrwxrwxrwx  1 root gpio       0 Dez 18 15:29 gpio3 -> ../../devices/platform/soc/20200000.gpio/gpiochip0/gpio/gpio3
lrwxrwxrwx  1 root gpio       0 Dez 18 15:29 gpio4 -> ../../devices/platform/soc/20200000.gpio/gpiochip0/gpio/gpio4
lrwxrwxrwx  1 root gpio       0 Dez 18 15:29 gpio5 -> ../../devices/platform/soc/20200000.gpio/gpiochip0/gpio/gpio5
lrwxrwxrwx  1 root gpio       0 Dez 18 15:26 gpiochip0 -> ../../devices/platform/soc/20200000.gpio/gpio/gpiochip0
-rwxrwx---  1 root gpio    4096 Dez 18 15:26 unexport


Ich habe wiringpi installiert und die Pinbezeichung habe ich wiringpi genutzt also nicht GPIO, ist das richtig so? Also ein zB gpio write 13 1 geht. Nur wenn ich in Fhem schalte bekomme ich in Log:


2018.12.18 16:11:06 5: Fussdown, in fileaccess: value 0
2018.12.18 16:11:06 5: wird an setextensions gesendet: Fussdown ?
2018.12.18 16:11:06 5: wird an setextensions gesendet: Fussdown ?
2018.12.18 16:11:08 5: Fussup, in fileaccess: value 0
2018.12.18 16:11:08 5: wird an setextensions gesendet: Fussup ?
2018.12.18 16:11:08 5: wird an setextensions gesendet: Fussup ?


Wenn ich in Fhem schalte bekomme ich mit zB cat /sys/class/gpio/gpio5/value eine 0 oder 1 aber der Gpio schaltet nicht.

Was mache ich falsch ?

Gruß

Frank

Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: klausw am 19 Dezember 2018, 00:01:17
in
define <name> RPI_GPIO <GPIO number> ist die <GPIO number> halt GPIO number 8)

Die wiringpi Bezeichnung wird nicht verwendet.
Ist die commandref in diesem Punkt unverständlich?
In diesem Fall hätte ich gern einen Tip wie ich es besser verständlich schreiben kann.
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: firstfacility am 19 Dezember 2018, 16:20:44
Sorry habe ich total überlesen. Bin nach Anfänger im Bereich Fhem von daher danke für den Hinweis. Nun kann ich die Gpio´s ansteuern. Ich hätte aber noch eine Frage.
Meine Gpio´s steuern Relais, die dann wieder Rollos ansteuern. Nun schließen die Relais beim Booten heißt je nach dem wie ich die Relais anschließe, öffnen bzw schließen meine Rollos beim booten des Pi´s. Wie könnte ich das lösen ?
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: RaspiLED am 19 Dezember 2018, 19:04:59
https://raspberrypi.stackexchange.com/questions/51479/gpio-pin-states-on-powerup

Gruß Arnd


Raspi2 mit FHEM, CUL, Signalduino, MySensors, HomeBridge, Presence, Bravia, ...
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: firstfacility am 19 Dezember 2018, 19:35:21
Danke für den Hinweis, wäre es nicht einfacher nach setzten des Gpio auf Output ein zb echo 0 > /sys/class/gpio/gpio4/value zu senden ? 
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: klausw am 19 Dezember 2018, 21:41:14
Wenn du das Attribut restoreOnStartup auf last setzt dann sollte der Output direkt nach dem Reboot korrekt gesetzt werden.
Es lässt sich aber nicht vermeiden, das beim Booten der rezessivzustand der Relais gesetzt wird.
Das sollte aber kein Problem sein, die Rolladenmotoren sollten ja nur beim fahren bestromt sein.
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: Beetle2003 am 04 März 2019, 23:38:57
Hallo,

ich versuche gerade die Türklingel über einen GPIO Port auszuwerten.
Wird Taster gedrückt ( Kontakt geschlossen ) soll der PI das erkennen und weitere Funktionen werden per Script gestartet.

Ich kann über GPIO Relais ein und ausschalten. Das klappt.

Habe GPIO25 ist als Input definiert. Der zeigt keine Veränderung ob ich ihn auf GND oder 3.3V setzte.

Hat jemand eine Idee. Stehe derzeit im Wald und sehe die Bäume nicht.

Danke
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: Frank_Huber am 05 März 2019, 07:00:10
Zitat von: Beetle2003 am 04 März 2019, 23:38:57
Hallo,

ich versuche gerade die Türklingel über einen GPIO Port auszuwerten.
Wird Taster gedrückt ( Kontakt geschlossen ) soll der PI das erkennen und weitere Funktionen werden per Script gestartet.

Ich kann über GPIO Relais ein und ausschalten. Das klappt.

Habe GPIO25 ist als Input definiert. Der zeigt keine Veränderung ob ich ihn auf GND oder 3.3V setzte.

Hat jemand eine Idee. Stehe derzeit im Wald und sehe die Bäume nicht.

Danke
Zeig mal bitte ei List von GPIO.

Gesendet von meinem Doogee S60 mit Tapatalk

Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: Steffen@Home am 21 März 2019, 06:49:24
Klinke mich hier mal ein....

Ich habe gestern auch einen GPIO als INPUT definiert.
Nachdem ich den Pegel am Eingang verändere muss ich erst den Button set GPIOxx readValue betätigen damit das Device den state sowie Pinlevel aktualisiert.
- Sollte dies nicht automatisch gehen oder muss ich sowas wie event-on-change-reading .* setzen ?

Danke.
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: Frank_Huber am 21 März 2019, 07:06:57
Zitat von: Steffen@Home am 21 März 2019, 06:49:24
Klinke mich hier mal ein....

Ich habe gestern auch einen GPIO als INPUT definiert.
Nachdem ich den Pegel am Eingang verändere muss ich erst den Button set GPIOxx readValue betätigen damit das Device den state sowie Pinlevel aktualisiert.
- Sollte dies nicht automatisch gehen oder muss ich sowas wie event-on-change-reading .* setzen ?

Danke.
Da wir hier nicht hellsehen können für dich das gleiche:
Zeig mal ein list vom GPIO.

Gesendet von meinem Doogee S60 mit Tapatalk

Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: Steffen@Home am 21 März 2019, 07:28:32
Zitat von: Frank_Huber am 21 März 2019, 07:06:57
Da wir hier nicht hellsehen können für dich das gleiche:
Zeig mal ein list vom GPIO.

Gesendet von meinem Doogee S60 mit Tapatalk

Internals:
DEF 27
FUUID 5c92addb-f33f-1cf4-8787-815384e2da5b6ad0
GPIO_Basedir /sys/class/gpio
GPIO_Nr 27
NAME GPIO27
NR 36
STATE off
TYPE RPI_GPIO
WiringPi_gpio /usr/bin/gpio
READINGS:
2019-03-21 07:11:42 Pinlevel low
2019-03-20 19:17:15 state off
fhem:
interfaces switch
Attributes:
alias Gartentor- ist AUF!
comment Draht:gelb
devStateIcon off:fts_garage_door_100@grey on:fts_garage_door_20@F76205
direction input
group Tor_Garten_Zustand
room GPIOs
sortby 10

Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: RaspiLED am 21 März 2019, 07:48:51
Hi,
Ist es das Problem?
Known issues mit WiringPi
active_low wird nicht korrekt exportiert, und damit sieht es so aus als wurde das setting ignoriert. Das ist ein Fehler im WiringPi.

https://github.com/blecher-at/WiringPi

Gruß Arnd


Gesendet von iPhone mit Tapatalk
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: Frank_Huber am 21 März 2019, 08:59:02
Zitat von: Steffen@Home am 21 März 2019, 07:28:32
Internals:
DEF 27
FUUID 5c92addb-f33f-1cf4-8787-815384e2da5b6ad0
GPIO_Basedir /sys/class/gpio
GPIO_Nr 27
NAME GPIO27
NR 36
STATE off
TYPE RPI_GPIO
WiringPi_gpio /usr/bin/gpio
READINGS:
2019-03-21 07:11:42 Pinlevel low
2019-03-20 19:17:15 state off
fhem:
interfaces switch
Attributes:
alias Gartentor- ist AUF!
comment Draht:gelb
devStateIcon off:fts_garage_door_100@grey on:fts_garage_door_20@F76205
direction input
group Tor_Garten_Zustand
room GPIOs
sortby 10



Danke!

In erster Linie fehlt dir das interrupt Attribut. das erklärt das Verhalten deines GPIO.
Dann, Du schaltest 3,3V drauf zum aktivieren? oder schaltest Du mit 0V aktiv?

3,3V,
attr GPIO27 interrupt both
attr GPIO27 pud_resistor down

0V,
attr GPIO27 active_low yes
attr GPIO27 interrupt both
attr GPIO27 pud_resistor up

Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: Steffen@Home am 21 März 2019, 09:40:13
Zitat von: Frank_Huber am 21 März 2019, 08:59:02
Danke!

In erster Linie fehlt dir das interrupt Attribut. das erklärt das Verhalten deines GPIO.
Dann, Du schaltest 3,3V drauf zum aktivieren? oder schaltest Du mit 0V aktiv?

3,3V,
attr GPIO27 interrupt both
attr GPIO27 pud_resistor down

0V,
attr GPIO27 active_low yes
attr GPIO27 interrupt both
attr GPIO27 pud_resistor up


Hallo Frank,

ich setze 0V zum schalten. Der GPIO wird extern mit 4k7 Ohm auf high gezogen.
also setze ich:

attr GPIO27 active_low yes
attr GPIO27 interrupt both


da attr pud_resistor kann ich weglassen weil pullup extern gesetzt?
Danke.
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: Frank_Huber am 21 März 2019, 09:48:34
Ja, dann kannst ihn weglassen.
Aber denke daran, nur auf 3v3 hochziehen, nie auf 5V.
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: klausw am 21 März 2019, 12:44:47
Zitat von: Steffen@Home am 21 März 2019, 06:49:24
Klinke mich hier mal ein....

Ich habe gestern auch einen GPIO als INPUT definiert.
Nachdem ich den Pegel am Eingang verändere muss ich erst den Button set GPIOxx readValue betätigen damit das Device den state sowie Pinlevel aktualisiert.
- Sollte dies nicht automatisch gehen oder muss ich sowas wie event-on-change-reading .* setzen ?

Danke.
Ist das Attribut interrupt gesetzt?
Nur dann wird ein Gpio automatisch aktualisiert.
Wenn ja, steht was im Log? Notfalls das Loglevel (verbose) hochsetzen.
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: Frank_Huber am 21 März 2019, 12:45:51
Zitat von: klausw am 21 März 2019, 12:44:47
Ist das Attribut interrupt gesetzt?
Nur dann wird ein Gpio automatisch aktualisiert.
Wenn ja, steht was im Log? Notfalls das Loglevel (verbose) hochsetzen.

Hi Klaus,
er hat mit seinem List schon bestätigt dass kein interrupt gesetzt war.
Das war auch meine erste Vermutung gewesen. :-)
Grüße
Frank
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: Steffen@Home am 21 März 2019, 13:09:04
Ich werde das vermutlich heute Abend testen können! Danke.
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: klausw am 21 März 2019, 14:49:20
Zitat von: Frank_Huber am 21 März 2019, 12:45:51
Hi Klaus,
er hat mit seinem List schon bestätigt dass kein interrupt gesetzt war.
Das war auch meine erste Vermutung gewesen. :-)
Grüße
Frank
Witzig, der Post auf den ich antwortete war zum Zeitpunkt meiner Antwort der letzte im Thread. Tapatalk ist scheinbar etwas lahm mit dem update [emoji3]
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: Steffen@Home am 22 März 2019, 06:34:41
Mit Interrupt und active_low funktioniert alles wunderbar!
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: uwirt am 28 Juni 2020, 10:53:21
Kann mir jemand erklären wie ich mit diesem Modul auf eine RPI im Netzwerk zugreifen kann?
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: klausw am 15 Juli 2020, 15:21:05
Zitat von: uwirt am 28 Juni 2020, 10:53:21
Kann mir jemand erklären wie ich mit diesem Modul auf eine RPI im Netzwerk zugreifen kann?

das ist nicht vorgesehen
Dieses Modul kann GPIOs nur auf dem Pi ansteuern auf dem auch die FHEM Instanz läuft.
Du könntest allerdings zwei FHEM Instanzen mit dem mqtt Bridge Modul verbinden.
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: Panik am 02 Januar 2023, 09:11:37
Hallo,

das Modul basiert auf WiringPi, welches nicht mehr unterstützt wird und auch mit den in demWiki beschriebenen Aktionen nicht mehr installiert werden kann.
Kann das Modul RPI_GPIO ggf. auf eine andere Art des Zugriffs umgestellt werden ?
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: frober am 02 Januar 2023, 09:47:51
Es gibt einen Fork
https://github.com/WiringPi/WiringPi (https://github.com/WiringPi/WiringPi)
Das sollte helfen...
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: Panik am 02 Januar 2023, 12:00:33
DANKE!
Titel: Antw:Modul für RPi GPIO Zugriff mit Interrupt Funktion für Input
Beitrag von: klausw am 30 Januar 2023, 22:25:22
WiringPi wird nicht unbedingt benötigt und macht nur bei Sonderfunktionen Sinn.
Das Modul greift direkt auf die GPIOs zu.