Hallo zusammen,
von meiner Türklingel greife ich mittels Siedle-Schaltgerät über die 4-fach-Tasterschnittstelle von Homematic (HM-PBI-4-FM) das Betätigen der Klingel ab.
Mein Problem ist, dass das Notify wohl doppelt ausgeführt wird. Dies muss wohl mit der Länge der Relais-Betätigung von Siedle zusammenhängen, diese ist fest eingestellt, in der Werkseinstellung schätze ich ca. 0,5 Sekunden.
Mein Notify:
4fachTaster:4fachTaster_Btn01.Long.* {
if ( Value("KlingelEmailChkBox") eq "on" ) {
fhem("set KlingelEmailDummy on");
fhem("define KlingelEmailTemp at +00:00:05 set KlingelEmailDummy off; attr KlingelEmailTemp room Klingel");
}
}
Auszug aus dem letzten Betätigen:
state Long 3-8440- (to broadcast) 2014-09-20 10:45:29
trigger Long_61 2014-09-20 10:45:29
Auszug aus dem Log:
2014.09.20 10:45:29 3: define KlingelEmailTemp at +00:00:05 set KlingelEmailDummy off; attr KlingelEmailTemp room Klingel : KlingelEmailTemp already defined, delete it first
2014.09.20 10:45:29 3: KlingelBetaetigt return value: KlingelEmailTemp already defined, delete it first
2014.09.20 10:45:29 3: define KlingelEmailTemp at +00:00:05 set KlingelEmailDummy off; attr KlingelEmailTemp room Klingel : KlingelEmailTemp already defined, delete it first
2014.09.20 10:45:29 3: KlingelBetaetigt return value: KlingelEmailTemp already defined, delete it first
Wie muss ich das Notify anpassen, um das "etwas zu lange" Betätigen durch das Siedle-Relais als 1 Event auszuwerten?
Vielen Dank für eure Antworten,
viele Grüße,
Heiko
hast du event-on-change-reading .* gesetzt? Sollte man immer machen, zumindest bei HM.
ansonsten zeichne erst einmal auf, welche trigger kommen
Abgesehen von dem Fehler, temporäre ats nicht zu löschen ...
Long.* reagiert auf alle Longs eines Senders, der sendet aber bei Long kontinuierlich welche und zählt die hoch (Long 3, Long 4,...). Insofern ist es sogar wahrscheinlich, dass Du bei längerer Klingelbetätigung mehrere Trigger erhältst.
Da ich eine Weile auch mit Long-Notifys auf Fernbedienungen experimentiert habe, nutze ich einen Long-Trigger gezielt für eine Wichtung von Aktionen, das klappt auch wirklich prima. Aktionen wie "Ja, dieses lange Drücken meine ich wirklich ernst" (wie etwa das "Abschießen" eines Gerätes per Schaltersteckdose) löse ich mit Long 9, die meisten Aktionen mit einem dualen Trigger auf Short oder Long 3.
Probiere also mal als REGEX "4fachTaster_Btn01.Long.3.*" - das triggert dann recht früh und ausreichend, gleichzeitig würde ich auch auf "4fachTaster_Btn01.Short.*" triggern, falls die Betätigung wirklich kurz ausfällt.
Für das Ende des Drückens (Setzen Deines Dummys auf off) könntest Du auch auf 4fachTaster_Btn01.LongRelease.*" triggern, das läuft dann aber ins Leere, wenn Du auch auf Short triggerst (hier sendet die Tastenschnittstelle kein "Release").
Ich nutze für viele Dummys bei mir sekundäre Notifys, die bei Auftreten eines Dummyzustandes diesen definiert zurücksetzen, das ist insbesondere hilfreich, wenn es mehrere "Auslöser" gibt.
Verkraften Dummys eigentlich auch ein "set xy on-for-timer t" ?
dummys können kein on-for-timer. du kannst stattdessen einen redingsProxy verwenden. der kann on-for-timer wenn in der setList on und off enthalten ist.
gruss
andre
Zitat von: Pfriemler am 20 September 2014, 19:32:41
Abgesehen von dem Fehler, temporäre ats nicht zu löschen ...
Meine temps verschwinden nach den 5 Sekunden doch selber.
Problem hier war glaube ich, dass das notify doppelt ausgeführt wurde - und damit FHEM versucht hat, nochmal dasselbe temp zu erstellen, das es mit diesem Namen natürlich innerhalb der 5 Sekunden schon gibt.
ZitatLong.* reagiert auf alle Longs eines Senders, der sendet aber bei Long kontinuierlich welche und zählt die hoch (Long 3, Long 4,...). Insofern ist es sogar wahrscheinlich, dass Du bei längerer Klingelbetätigung mehrere Trigger erhältst.
Stimmt, ich kann es sogar im FHEM live beobachten.
Wird die Klingel gedrückt, zählt es so jede 1/3 Sekunde ein Long weiter.
Die Länge des Drückens ist bei der Siedle mit BUS-System übrigens egal, weil das Relais immer mit fest eingestellter Dauer schließt.
Ich muss nur abfangen, wenn jemand tatsächlich 2x kurz hintereinander außen den Knopf drückt.
ZitatProbiere also mal als REGEX "4fachTaster_Btn01.Long.3.*" - das triggert dann recht früh und ausreichend, gleichzeitig würde ich auch auf "4fachTaster_Btn01.Short.*" triggern, falls die Betätigung wirklich kurz ausfällt.
Folgender notify-Code triggert leider nun nicht mehr.
Was ist daran falsch? Muss vielleicht irgendwo ein Doppelpunkt hin statt einem normalen Punkt?
4fachTaster:4fachTaster_Btn01.Long.3.* {
if ( Value("KlingelEmailChkBox") eq "on" ) {
fhem("set KlingelEmailDummy on");
fhem("define KlingelEmailTemp at +00:00:05 set KlingelEmailDummy off; attr KlingelEmailTemp room Klingel");
}
}
Log-Auszug:
2014-09-21_13:00:05 4fachTaster 4fachTaster_Btn01 Long 1-8440- (to broadcast)
2014-09-21_13:00:05 4fachTaster battery: ok
2014-09-21_13:00:05 4fachTaster 4fachTaster_Btn01 Long 2-8440- (to broadcast)
2014-09-21_13:00:05 4fachTaster battery: ok
2014-09-21_13:00:05 4fachTaster 4fachTaster_Btn01 Long 3-8440- (to broadcast)
Viele Grüße,
Heiko
Das mit den temp-ats fiel mir dann später auch auf ...
Ich sehe den Fehler jetzt auch nicht ... notifys mit dem Format funktionieren bei mir jedenfalls, der Punkt zwischen Long und der Ziffer deckt das Leerzeichen, .* die nach der Ziffer folgenden Zeichen ... ? höchstens wenn gerade DER Long-Trigger verloren ginge ... was ja nicht zutrifft, wenn sie im Log auftauchen ... Bliebe noch das Triggern auf LongRelease, testweise.
Geht nich gips nich
Sieht sonst jeman den Fehler?
Das notify soll auf Long 3-Reagieren, damit es nur 1x ausgeführt wird...