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

IPPhoner2b

1wire wäre mir nicht bekannt, also wenn das nicht von vorneherein geladen ist, würde ich jetzt mal nein sagen.

klausw

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.
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

IPPhoner2b

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

klausw

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

kroonen

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

klausw

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.
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

kroonen

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

Phill

#187
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ß
Homebrew 1-Wire / HomeMatic Mix - Cubietruck mit FHEM als Server - Raspberry PI 3 als Informationsanzeige im MagicMirror Stil - Raspberry Pi 1 als Klingelanlage - VDR

Mein Modul: Talk2Fhem - Mein Tipp: https://forum.fhem.de/index.php/topic,82442.0.html

klausw

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";;\
}\
}
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: 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
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

Phill

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.
Homebrew 1-Wire / HomeMatic Mix - Cubietruck mit FHEM als Server - Raspberry PI 3 als Informationsanzeige im MagicMirror Stil - Raspberry Pi 1 als Klingelanlage - VDR

Mein Modul: Talk2Fhem - Mein Tipp: https://forum.fhem.de/index.php/topic,82442.0.html

Ralli

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?
Gruß,
Ralli

Proxmox 8.4 Cluster mit HP ED800G2i7, Intel NUC11TNHi7+NUC7i5BNH, virtualisiertes fhem 6.4 dev, virtualisierte RaspberryMatic (3.81.5.20250527) mit HB-RF-ETH 1.3.0 / RPI-RF-MOD, HM-LAN-GW (1.4.1) und HMW-GW, FRITZBOX 7490 (07.59), FBDECT, Siri und Alexa

klausw

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.
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: 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
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

Ralli


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
Gruß,
Ralli

Proxmox 8.4 Cluster mit HP ED800G2i7, Intel NUC11TNHi7+NUC7i5BNH, virtualisiertes fhem 6.4 dev, virtualisierte RaspberryMatic (3.81.5.20250527) mit HB-RF-ETH 1.3.0 / RPI-RF-MOD, HM-LAN-GW (1.4.1) und HMW-GW, FRITZBOX 7490 (07.59), FBDECT, Siri und Alexa