FHEM - Hausautomations-Systeme > Homematic

Langen Tastendruck bei HM-PBI-4-FM (Tasterschnittstelle 4fach) auswerten

(1/10) > >>

Zorin:
Hallo allerseits,

ich habe inzwischen einige HM-PBI-4-FM im Einsatz. Ich würde nun gerne den langen Tastendruck auswerten.
Das Log sieht dann z.B. folgendermaßen aus:
2013-01-13_13:46:01 BZ.Schalter1 BZ.Schalter1.CH2 Long 2-8440- (to broadcast)
2013-01-13_13:46:02 BZ.Schalter1 battery: ok
2013-01-13_13:46:02 BZ.Schalter1 BZ.Schalter1.CH2 Long 3-8440- (to broadcast)
2013-01-13_13:46:02 BZ.Schalter1 battery: ok
2013-01-13_13:46:02 BZ.Schalter1 BZ.Schalter1.CH2 Long 4-8440- (to broadcast)
2013-01-13_13:46:02 BZ.Schalter1 battery: ok
2013-01-13_13:46:02 BZ.Schalter1 BZ.Schalter1.CH2 Long 5-8440- (to broadcast)
2013-01-13_13:46:02 BZ.Schalter1 battery: ok
2013-01-13_13:46:02 BZ.Schalter1 BZ.Schalter1.CH2 Long 6-8440- (to broadcast)
2013-01-13_13:46:03 BZ.Schalter1 battery: ok
2013-01-13_13:46:03 BZ.Schalter1 BZ.Schalter1.CH2 Long 7-8440- (to broadcast)

Wie kann ich den Long Tastendruck z.B. mit einem Notify auswerten ?

Vielen Dank für die Hilfe...

Grüße,

Zorin

PowerDiz:
Hallo,
der Log sieht bei mir für kurze und lange Tastenbedienung so aus:

2013-01-12_16:45:53 Alarm_RC_3 Alarm_RC_3_Btn_01 Short (to HMLAN1)
2013-01-12_16:48:10 Alarm_RC_3 battery: ok
2013-01-12_16:48:10 Alarm_RC_3 Alarm_RC_3_Btn_01 Long 2-8440- (to HMLAN1)
2013-01-12_16:48:10 Alarm_RC_3 battery: ok
2013-01-12_16:48:10 Alarm_RC_3 Alarm_RC_3_Btn_01 Long 3-8440- (to HMLAN1)
2013-01-12_16:48:10 Alarm_RC_3 battery: ok
2013-01-12_16:48:10 Alarm_RC_3 Alarm_RC_3_Btn_01 Long 4-8440- (to HMLAN1)
2013-01-12_16:48:11 Alarm_RC_3 battery: ok
2013-01-12_16:48:11 Alarm_RC_3 Alarm_RC_3_Btn_01 Long 5-8440- (to HMLAN1)
2013-01-12_16:48:11 Alarm_RC_3 battery: ok
2013-01-12_16:48:11 Alarm_RC_3 Alarm_RC_3_Btn_01 LongRelease 6-A040- (to HMLAN1)

Ich werte so aus:
define Alarm_RC_3Btn_1_short notify Alarm_RC_3:Alarm_RC_3_Btn_01.* {if ("%"  =~ "Short") {AlarmanlageOn("RC3")}}
define Alarm_RC_3Btn_1_long notify Alarm_RC_3:Alarm_RC_3_Btn_01.* {if ("%"  =~ "LongRelease") {AlarmanlageOff("RC3")}}


Dabei verwende ich nur das release nach einem langen Tastenruck, weil ich keine anderen zwischen Ereignisse benötige.
Man könnte auch in deinem Fall auf die "8440" im String suchen, wenn Du mehrere Ereignisse benötigst.

Ich hoffe das hilft was weiter.

Gruß,
Dieter

Zorin:
Hallo Dieter, alle,

vielen Dank, das hat mir die richtige Richtung gezeigt.
Da ich lieber "in FHEM" blieben wollte, sieht meine Lösung jetzt so aus:

define BZ.Schalter1.CH2-AllOff notify BZ.Schalter1:BZ.Schalter1.CH2.Long.* set LAMPE_1 off

Ich bekomme übrigens gar nicht den LongRelease im Log.
Ich vermute aber, das liegt daran, dass ich den Schalter nicht mit meinem HMLAN gepairt habe.

Grüße,

Zorin

snoop:
Hallo zusammen,

zum Thema langen und kurzen Tastendruck würde ich mich gerne einklinken.
Ich habe auch ein Taster und eine Fernbedienung und würde gerne folgendes realisieren:

Bei einen kurzen Tastendruck, wobei nach diversen Tests meine Definition für "ein kurzer Tastendruck" wie folgt aussieht:
Ein Status zwischen: "Btn_01 Short und Btn_01 Long 3-8440"
Ein langer Tastendruck: Alles was über Btn_01 Long 3-8440 liegt.

Kann mich jemand bei der Umsetzung unterstützen. Meine erste Idee ist den Status zu splitten (falls erforderlich den wert in INT Wert konvertieren) und dann in etwa folgende Abfrage generieren:

Wenn short und Long kleiner/gleich 3 dann schalte Lampe1 on
Wenn nicht short und Long größer 3 dann schalte Lampe1,Lampe2,Lampe3;Lampe4 on

Bei mir scheitert es momentan daran, dass ich in Perl noch nicht so fit bin.

Vielen Dank für eure Rückmeldungen im Voraus.

Grüße
Arthur

snoop:
Hallo zusammen,

also ich habe ein wenig experimentiert und das ist das Ergebnis:

Die Lösung für die o.g. Lösung könnte so aussehen:

.*Taster_4_1:Taster_4_1_Btn_01.* {my @@a = split(" ", $value{Taster_4_1});;if ($a[0] eq "Taster_4_1_Btn_01" && $a[1] eq "Long" && int($a[2])==3){fhem"set GA_Tor_Sw_1_01 on-for-timer 3"}}

Meine Frage ist, ist das vom Grundsatz ok?
Zweitens: bei dem o.g. code gibt es noch ein Problem.(Ich bin neu in FHEM unterwegs, seit bitte nicht streng mit mir.)
Nun zur Erklärung:
Wenn ich den Taster drücke, sendet er permanent ein Signal an die Zentrale, sobald "Long" und "Count=3" erreicht ist geht die Lampe an.
Wenn ich nun die Taste länger als 3 counts gedrückt halte geht die Lampe dennoch an -> was nicht gewollt ist.

Gibt es eine Möglichkeit dies script technisch abzufangen?
Danke.

Viele Grüße
Arthur

Navigation

[0] Themen-Index

[#] Nächste Seite

Zur normalen Ansicht wechseln