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

klausw

versuche es in dieser Weise:

my $val = ReadingsVal(<name>,<reading>,<default value>)
my $val = ReadingsVal("pin13","Pinlevel","low")
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

manne44

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?
RPI4-Buster mit SSD, RPI-Zero mit Bookworm

klausw

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

manne44

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?
RPI4-Buster mit SSD, RPI-Zero mit Bookworm

Tueftler1983

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?

klausw

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.


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

Tueftler1983

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

manne44

Vielen Dank für die Antworten und auch für das ganze Modul, was das digitale IO über die Pins sehr einfach macht.
RPI4-Buster mit SSD, RPI-Zero mit Bookworm

klausw

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

Tueftler1983

Hmm okay sieht dann zwar nicht mehr so hübsch aus aber egal wenn nicht anders geht

klausw

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

Tueftler1983

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.

Tueftler1983

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

klausw

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

cotecmania

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
FHEM auf RaspberryPI B (buster)
2xCUL868 für MAX/Slow_RF, HM-LAN, JeeLink
MAX!/HM-Thermostate, FS20/HM-Rolladenschalter, FS20-EM, LevelJet-Ölstandsmessung, PCA301, IT, KM271, IPCAM, FireTAB10 FTUI