HM-PB-2-WM55 - Wie kann ich die einzelnen Taster belegen

Begonnen von ThomasMagnum, 21 März 2016, 15:16:03

Vorheriges Thema - Nächstes Thema

ThomasMagnum

Hallo,

ich habe den o.g. Taster in FHEM integriert und habe mich dazu an die Anleitung im WIKI gehalten. Soweit so gut. Nun möchte ich aber die einzelnen Tasten mit jeweils zwei unterschiedlichen Aktionen verknüpfen (short, long). Nach lesen der Anfängerdoku und einigen Artikeln hier im Forum bin ich aber mehr verwirrt als mir lieb ist.

Im Moment funktioniert der Taster auf beiden Tastern gleich (on, off). Das bedeutet ich schalte die Anlage mit einem Druck auf die Taste 1 an und mit einem weiteren Druck auf die taste 1 wieder aus. Ich möchte jetzt aber die Taste 1 (short) nutzen um die Anlage an zu schalten und die Taste 2 (short) um sie wieder aus zu schalten. Auf 1 (long) und 2 (long) möchte ich weitere Aktionen legen.

Kann mir evtl. jemand helfen die Logik dahinter zu verstehen um meine Anforderungen dann umzusetzen.

Hier mein Eintrag in der fhem.cfg
define Alarmtaster CUL_HM 3B6EC0
attr Alarmtaster IODev HMLAN01
attr Alarmtaster autoReadReg 4_reqStatus
attr Alarmtaster expert 2_raw
attr Alarmtaster firmware 1.4
attr Alarmtaster model HM-PB-2-WM55
attr Alarmtaster room Alarmanlage
attr Alarmtaster serialNr MEQ0398331
attr Alarmtaster subType pushButton
attr Alarmtaster webCmd getConfig:clear msgEvents
define FileLog_Alarmtaster FileLog ./log/Alarmtaster-%Y.log Alarmtaster
attr FileLog_Alarmtaster logtype text
attr FileLog_Alarmtaster room Logs
define Alarmtaster1 CUL_HM 3B6EC001
attr Alarmtaster1 model HM-PB-2-WM55
attr Alarmtaster1 peerIDs
define Alarmtaster2 CUL_HM 3B6EC002
attr Alarmtaster2 model HM-PB-2-WM55

define virtueller_Aktor CUL_HM 123456
attr virtueller_Aktor IODev HMLAN01
attr virtueller_Aktor expert 2_raw
attr virtueller_Aktor model virtual_2
attr virtueller_Aktor subType virtual
attr virtueller_Aktor webCmd virtual

define virtueller_Aktor_Btn1 CUL_HM 12345601
attr virtueller_Aktor_Btn1 model virtual_2
attr virtueller_Aktor_Btn1 peerIDs 3B6EC001,3B6EC002,
attr virtueller_Aktor_Btn1 room Alarmanlage
attr virtueller_Aktor_Btn1 webCmd press short:press long

define virtueller_Aktor_Btn2 CUL_HM 12345602
attr virtueller_Aktor_Btn2 model virtual_2
attr virtueller_Aktor_Btn2 peerIDs 3B6EC001,3B6EC002,
attr virtueller_Aktor_Btn2 room Alarmanlage
attr virtueller_Aktor_Btn2 webCmd press short:press long


Hier wie ich als Beispiel meine Alarmanlage anschalte:
### Alarmanlage zeitverzögert anschalten
define doifAlarmanlageAn DOIF ([virtueller_Aktor_Btn1] eq "ON") (set FHEM msg name@domain Alarmanlage wurde aktiviert!) (IF ([Anwesenheit] eq "in") (set Anwesenheit out))
attr doifAlarmanlageAn do always
attr doifAlarmanlageAn room Alarmanlage
attr doifAlarmanlageAn wait 90


Es wäre nett wenn mir jemand helfen könnte die Herangehensweise zu verstehen, da mir, gerade in Verbindung mit dem virtuellen Aktor, die Logik fehlt (PeerIDs,...)

Gruß, Thomas

jmike

#1
Hallo Thomas.

Warum machst du das nicht mit Notifys ?
Jedes Drücken auf den Taster erstellt ein Event (siehe Event Monitor). Darauf kannst du dann reagieren und im Notify neue Aktionen ausführen.

http://www.fhemwiki.de/wiki/Notify

Hier ein privates Beispiel:
define 6fach1_3_music notify 6fach1.6fach1_3.(Short|LongRelease) {\
if($EVENT =~ m/Short/){ \
toggleSpeaker();;\
}else{ \
toggleMusic();;\
}}


Dieses Notify (Name: 6fach1_3_music) wird bei Short und LongRelease von Taste "6fach1.6fach1_3" ausgeführt und schaltet bei Short meine Lautsprecher an/aus und bei Long den Musikplayer play/pause.


Das peeren mit einem virtuellen Aktor ist nicht zwingend notwendig. Die Events beim Taste drücken werden auch ohne erzeugt.
Der Taster bekommt nur leider kein ACK von FHEM direkt, weiß nicht ob sein Command angekommen ist und blinkt daher nicht "grün".
Das würde der virtuelle Aktor dann machen.

lg
mike

ThomasMagnum

Hallo Mike,

vielen Dank für deine Antwort. Ich werde das bei Gelegenheit einmal versuchen.
Den virtuellen Aktor habe ich genau aus dem Grund genommen, um die grüne Bestätigungsleuchte zu bekommen.

Es muss aber doch auch mit den genutzten DOIFs gehen. Da suche ich halt wie gesagt nach der Möglichkeit wie ich die einzelnem Tastendrücke unterscheiden kann. Evtl. hängt das ja auch mit den peerIDs zusammen die, wenn ich das richtig verstehe, auf beiden Tasten liegen. Das ist aber genau mein Problem, mir ist die Logik dahinter noch nicht ganz klar.

Zum Beispiel
attr virtueller_Aktor_Btn1 peerIDs 3B6EC001,3B6EC002,

Gruß, Thomas

CoolTux

Hallo Thomas,

Ich glaube Du verwechselst da etwas, oder hast es falsch verstanden. Das virtuelle Device wird nur erstellt damit Du eine Quittierung bekommst ob Dein Drücken der Taste erkannt wurde. Mehr nicht. Das leuchten der grünen LED zeigt nicht ob das Notify korrekt umgesetzt wurde.

Also änder Dein DOIF und trigger das Tasterdevice. Schaue im Eventmonitor welche Events generiert werden wenn Du die Tasten des Tasters kurz und lang drückst und dann lese Dich in DOIF ein wie man Teilausdrücke abfragt. Und schon wird es klappen



Grüße
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net