Autor Thema: DOIF RPI_GPIO Lonpress und Shortpress unterscheiden?  (Gelesen 294 mal)

Offline roman1528

  • Sr. Member
  • ****
  • Beiträge: 753
    • ueberueck.com
DOIF RPI_GPIO Lonpress und Shortpress unterscheiden?
« am: 14 August 2021, 11:11:41 »
Moin zusammen,

ich habe einen Taster an einem GPIO der mein Garagentor steuert. Kurzer Tastendruck -> Wartezeit -> Relais für 1/2 Sekunde -> Tor fährt zu.
(habe das DOIF gerade komplett verbastelt... sonst würde ich es posten)

Tor ist aber auch über Funk steuerbar (Rademacher) und ich möchte jetzt über einen langen Tastendruck des selben Tasters eine bestimmt Position (80) anfahren.

Jetzt habe ich das Problem (vielleicht auch nur den Denkfehler) dass der GPIO grundsätzlich auf "high/on" geht bevor er auch nur daran denkt einen "Longpress" zu triggern. Quasi wäre das Tor zu bevor ich per Tastendruck überhaupt sagen kann, dass die Position angefahren werden soll...

Kurz zusammengefasst:
([taster:Longpress] eq "on") (set tor position 80)
DOELSEIF ([taster:Pinlevel] eq "high") (set tor_relais on-for-timer 0.5)

Hat das vielleicht schon jemand gelöst und kann am GPIO zwischen short- und longpress unterscheiden?

Grüße^^
Intel Atom 2x2,1GHz;4GB RAM;60GB SSD;8TB HDD: FHEM 6.0,FTUI,AMAD,8" Tablet's+Fully;HUE;ESPRGBWW;HM;CUL433;CUL868;Duofern;ASC;MQTT;mySensors;netatmo;SONOS
RPi3+: FHEM 6.0;I²C;GPIO;RFID;G-Tag;XiaomiBTLESens
RPi3: FHEM 6.0;DIY Relais-Board;I²C;GPIO;RFID;Solar
FHEM&FTUI: www.ueberueck.com

Online Frank_Huber

  • Hero Member
  • *****
  • Beiträge: 4437
Antw:DOIF RPI_GPIO Lonpress und Shortpress unterscheiden?
« Antwort #1 am: 14 August 2021, 16:02:58 »
Ich Taste gegen 0V.

  defmod Licht_Kammer DOIF ([GPIO_IN_15:"^on$"] and [?OUT_1:PortB3] eq "off") (set OUT_1 PortB3 on) (set OUT_1 PortB3 off)\
DOELSEIF ([GPIO_IN_15:"^on$"] and [?OUT_1:PortB3] eq "on") (set OUT_1 PortB3 off)\
DOELSEIF ([GPIO_IN_15:"^Longpress:.on$"]) (set OUT_1 PortB3 on)
attr Licht_Kammer cmdpause 2:2:2:2
attr Licht_Kammer devStateIcon on:on:cmd_2 initialize|initialized|off:off:cmd_1
attr Licht_Kammer do always
attr Licht_Kammer stateFormat [OUT_1:PortB3]
attr Licht_Kammer wait 0,180:0:0:0

   defmod GPIO_IN_15 RPI_GPIO 15
attr GPIO_IN_15 active_low yes
attr GPIO_IN_15 debounce_in_ms 20
attr GPIO_IN_15 direction input
attr GPIO_IN_15 event-on-change-reading state,Longpress
attr GPIO_IN_15 interrupt both
attr GPIO_IN_15 longpressinterval 1

Kurz drücken 3min Licht, lang drücken Dauerlicht.

Offline roman1528

  • Sr. Member
  • ****
  • Beiträge: 753
    • ueberueck.com
Antw:DOIF RPI_GPIO Lonpress und Shortpress unterscheiden?
« Antwort #2 am: 14 August 2021, 16:13:34 »
Danke schonmal... werde ich testen sobald mein RJ45 am Bridged-AP wieder abgekühlt ist... so ein Mist... erreiche meinen Pi in der Garage gerade nicht.

Gleiche GPIO-Konfiguration bei mir.

Wenn das so funktioniert cool...

Ich denke nämlich, dass "cmd_1" immer greift, egal ob ich kurz oder lang drücke weil der GPIO "state" auf "on" geht sobald ich drücke.
Bei dir wird es so sein, dass DOIF von "cmd_1" auf "cmd_3" umswiched sobald der Lonpress greift...

Du machst "nur" ein und das selbe Gerät an. Ich möchte zwei unterschiedliche  Ausführungsteile erreichen.

Grüße^^
Intel Atom 2x2,1GHz;4GB RAM;60GB SSD;8TB HDD: FHEM 6.0,FTUI,AMAD,8" Tablet's+Fully;HUE;ESPRGBWW;HM;CUL433;CUL868;Duofern;ASC;MQTT;mySensors;netatmo;SONOS
RPi3+: FHEM 6.0;I²C;GPIO;RFID;G-Tag;XiaomiBTLESens
RPi3: FHEM 6.0;DIY Relais-Board;I²C;GPIO;RFID;Solar
FHEM&FTUI: www.ueberueck.com

Online Frank_Huber

  • Hero Member
  • *****
  • Beiträge: 4437
Antw:DOIF RPI_GPIO Lonpress und Shortpress unterscheiden?
« Antwort #3 am: 15 August 2021, 13:34:23 »
Der Hauptunterschied liegt da drin dass du auf den Zustand prüfst, ich auf das Event.
Wenn Du auf Event unstellst musst eigentlich nur den Cmd des kurzen Taster
. Ittels wait verzögert ausführen und das do Attribut auf resetwait einstellen.
Dann kannst die zwei Geräte steuern und auch so dass der Lange Druck keinen kurzen Druck auslöst.