MCP23017 longpressinterval (Taster kurz/lang gedrückt Erkennung)

Begonnen von condor, 09 Oktober 2016, 09:01:44

Vorheriges Thema - Nächstes Thema

condor

Hallo

Ich habe hier im Forum gelesen, das einen GPIO der Status short / long zugewiesen werden kann. Also das somit festgestellt werden kann, ob ein Taster kurz oder lange gedrückt wurde.
Ich möchte gerne das meinen Taster am Bett bei kurz drücken das Licht an/aus macht und bei langen drücken, soll die Szene Schlafen aktiviert werden.

Die Raspberry GPIOs können das anscheinend, siehe Anleitung
Zitatlongpressinterval
Funktioniert nur bei auf both gesetztem Attribut interrupt
Zeit in Sekunden, die ein GPIO auf high verweilen muss, bevor das Reading longpress auf on gesetzt wird
Standard: 1, gültige Werte: 0.1 - 10

Wie sieht es aber mit einem MCP23017 aus? Ich habe folgenden link gefunden:
https://forum.fhem.de/index.php?topic=34458.0
Zitatdefine SchalterA0 readingsProxy myMcp20:PortA0
attr SchalterA0 valueFn { Longpress("SchalterA0",$VALUE);;}

Vielleicht kann jemand hierzu was sagen, wie man das gut realisieren kann.

klausw

Zitat von: condor am 09 Oktober 2016, 09:01:44
Ich habe hier im Forum gelesen, das einen GPIO der Status short / long zugewiesen werden kann. Also das somit festgestellt werden kann, ob ein Taster kurz oder lange gedrückt wurde.
Ich möchte gerne das meinen Taster am Bett bei kurz drücken das Licht an/aus macht und bei langen drücken, soll die Szene Schlafen aktiviert werden.

Die Raspberry GPIOs können das anscheinend, siehe Anleitung
Wie sieht es aber mit einem MCP23017 aus? Ich habe folgenden link gefunden:
https://forum.fhem.de/index.php?topic=34458.0

longpress ist ein Reading, das vom RPI_GPIO Modul bereitgestellt wird.
Das Modul für den MCP23017 stellt kein solches Reading bereit.
Dies ist einfach der Architektur geschuldet. Der MCP allein kann nur durch pollen abgefragt werden.
Für den Interrupt wird ein Interruptfähiger GPIO benötigt.

Mit { Longpress("SchalterA0",$VALUE);;} wird eine eigene Funktion aufgerufen.
Ich würde im Thread auf den du verwiesen hast einmal nachfragen, oder direkt beim Schreiber des Posts.
Er wird sie dir sicher zur Verfügung stellen.
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

condor

Hallo Klausw,

Zitatlongpress ist ein Reading, das vom RPI_GPIO Modul bereitgestellt wird.
Das Modul für den MCP23017 stellt kein solches Reading bereit.
ah, ok.

ZitatFür den Interrupt wird ein Interruptfähiger GPIO benötigt.
Die GPIO des MCP23017 sind zwar nicht einzeln Interupt fähig, jedoch ist ein separater pin vorhanden, der ein Zustandsänderung der Eingänge des MCP23017 sendet. Somit kommt kann bei dieses Event das Reading angestoßen werden.

Ich bin gerade im Urlaub, ich Poste die Einstellung wenn ich wieder Zuhause bin.

Gruß Condor

klausw

Zitat von: condor am 10 Oktober 2016, 14:27:45
Die GPIO des MCP23017 sind zwar nicht einzeln Interupt fähig, jedoch ist ein separater pin vorhanden, der ein Zustandsänderung der Eingänge des MCP23017 sendet. Somit kommt kann bei dieses Event das Reading angestoßen werden.
Exakt, und dort muss dann eine eigene Funktion eingreifen.

Zitat von: condor am 10 Oktober 2016, 14:27:45
Ich bin gerade im Urlaub, ich Poste die Einstellung wenn ich wieder Zuhause bin.

Schönen Urlaub!
Das ist eine gute Idee, es gibt sicher noch mehr Nutzer hier, die so eine Longpress Funktion nutzen würden.

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