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

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

Vorheriges Thema - Nächstes Thema

ollir

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

klausw

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.
RasPi B v2 mit FHEM 18B20 über 1Wire, LED PWM Treiber über I2C, Luchtdruck-, Feuchtesensor und ein paar Schalter/LED\'s zum testen
Module: RPI_GPIO, RPII2C, I2C_EEPROM, I2C_MCP23008, I2C_MCP23017, I2C_MCP342x, I2C_PCA9532, I2C_PCF8574, I2C_SHT21, I2C_BME280

klausw

Zitat von: 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
RasPi B v2 mit FHEM 18B20 über 1Wire, LED PWM Treiber über I2C, Luchtdruck-, Feuchtesensor und ein paar Schalter/LED\'s zum testen
Module: RPI_GPIO, RPII2C, I2C_EEPROM, I2C_MCP23008, I2C_MCP23017, I2C_MCP342x, I2C_PCA9532, I2C_PCF8574, I2C_SHT21, I2C_BME280

ollir

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


klausw

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
RasPi B v2 mit FHEM 18B20 über 1Wire, LED PWM Treiber über I2C, Luchtdruck-, Feuchtesensor und ein paar Schalter/LED\'s zum testen
Module: RPI_GPIO, RPII2C, I2C_EEPROM, I2C_MCP23008, I2C_MCP23017, I2C_MCP342x, I2C_PCA9532, I2C_PCF8574, I2C_SHT21, I2C_BME280

ollir

#65
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

backbone10

#66
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 


klausw

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
RasPi B v2 mit FHEM 18B20 über 1Wire, LED PWM Treiber über I2C, Luchtdruck-, Feuchtesensor und ein paar Schalter/LED\'s zum testen
Module: RPI_GPIO, RPII2C, I2C_EEPROM, I2C_MCP23008, I2C_MCP23017, I2C_MCP342x, I2C_PCA9532, I2C_PCF8574, I2C_SHT21, I2C_BME280

klausw

vorerst könntest Du readingsProxy verwenden um einfach die Ports zu invertieren.
RasPi B v2 mit FHEM 18B20 über 1Wire, LED PWM Treiber über I2C, Luchtdruck-, Feuchtesensor und ein paar Schalter/LED\'s zum testen
Module: RPI_GPIO, RPII2C, I2C_EEPROM, I2C_MCP23008, I2C_MCP23017, I2C_MCP342x, I2C_PCA9532, I2C_PCF8574, I2C_SHT21, I2C_BME280

klausw

Zitat von: 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


RasPi B v2 mit FHEM 18B20 über 1Wire, LED PWM Treiber über I2C, Luchtdruck-, Feuchtesensor und ein paar Schalter/LED\'s zum testen
Module: RPI_GPIO, RPII2C, I2C_EEPROM, I2C_MCP23008, I2C_MCP23017, I2C_MCP342x, I2C_PCA9532, I2C_PCF8574, I2C_SHT21, I2C_BME280

backbone10

Hi,
danke 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

klausw

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

RasPi B v2 mit FHEM 18B20 über 1Wire, LED PWM Treiber über I2C, Luchtdruck-, Feuchtesensor und ein paar Schalter/LED\'s zum testen
Module: RPI_GPIO, RPII2C, I2C_EEPROM, I2C_MCP23008, I2C_MCP23017, I2C_MCP342x, I2C_PCA9532, I2C_PCF8574, I2C_SHT21, I2C_BME280

backbone10

Hi,
danke..

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


klausw

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?
RasPi B v2 mit FHEM 18B20 über 1Wire, LED PWM Treiber über I2C, Luchtdruck-, Feuchtesensor und ein paar Schalter/LED\'s zum testen
Module: RPI_GPIO, RPII2C, I2C_EEPROM, I2C_MCP23008, I2C_MCP23017, I2C_MCP342x, I2C_PCA9532, I2C_PCF8574, I2C_SHT21, I2C_BME280

backbone10

Hi,
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