HM Schaltaktor - Notify bei langem Tastendruck

Begonnen von galdo, 11 Juni 2015, 21:54:15

Vorheriges Thema - Nächstes Thema

galdo

Hallo,

ich benötige mal wieder eure Hilfe. Ich habe folgenden Anwendungsfall für meine Homematic Installation (Läuft via CUL auf dem Raspberry Pi).
Ich habe drei Schalfaktoren für Markenschalter (Typ: HM-LC-Sw1PBU-FM). An diesen Schalfaktoren habe ich meine Außenbeleuchtung hängen - im FHEM nennen sich diese:
ZitatHM.Aktor.Aussenlicht.Eingang
HM.Aktor.Aussenlicht.Kueche
HM.Aktor.Aussenlicht.Terrasse

Diese habe ich zu einer Gruppe
ZitatHM.Gruppe.Aussenlicht
zusammengefasst.

Zeitgesteuert werden diese Aktoren per FHEM geschaltet, per Tastendruck auf dem Autor geht jede Lampe einzeln an. Jetzt möchte ich aber zwischen einem kurzen und einem langen Tastendruck unterscheiden.

Bei einem langen Tastendruck (oben ein, unten aus) möchte ich die ganze Gruppe jeweils ein- bzw. ausschalten.

Im Wiki habe ich gelesen, dass man ohne die alternative Firmware eine Möglichkeit hat, die Tastedrücke der Aktoren zu entkoppeln - allerdings wird die Notify nicht gesetzt. Realisiert habe ich mal für einen der Schalter folgendes:
Zitatattr HM.Aktor.Aussenlicht.Eingang event-on-change-reading state

set HM.Aktor.Aussenlicht.Eingang regSet intKeyVisib visib
set HM.Aktor.Aussenlicht.Eingang getConfig
set HM.Aktor.Aussenlicht.Eingang regSet prep lgSwJtOff off self01
set HM.Aktor.Aussenlicht.Eingang regSet prep lgSwJtOn on self01
set HM.Aktor.Aussenlicht.Eingang regSet prep lgSwJtOff off self02
set HM.Aktor.Aussenlicht:Eingang regSet exec lgSwJtOn on self02

define HM.Aktor.Aussenlicht.Eingang.TasterLongNotify notify HM.Aktor.Aussenlicht.Eingang set HM.Gruppe.Aussenlicht.Toggle

Leider passiert garnichts.
Habt ihr eine Idee, wo der Fehler liegen könnte?

Vielen Dank für eure Hilfe
Andreas

Wuppi68

das geht so nicht

self01 und self02 lösen keine Events aus

aus schmutzigen Workaround kannst Du folgendes machen

mit dem langen Tastdruck im Schalter einen "On-For-Timer" bzw "Off-For-Timer" setzen

jetzt kannst Du z.B mit einem DOIF das Reading timedOn abfragen :-) In Verbindung mit dem Schaltzustand weisst Du dann es wurde lang gedrückt und kannst die anderen Schalter entsprechend nachziehen
FHEM unter Proxmox als VM

galdo

Zitat von: Wuppi68 am 11 Juni 2015, 22:38:46
self01 und self02 lösen keine Events aus

aus schmutzigen Workaround kannst Du folgendes machen

mit dem langen Tastdruck im Schalter einen "On-For-Timer" bzw "Off-For-Timer" setzen

jetzt kannst Du z.B mit einem DOIF das Reading timedOn abfragen :-) In Verbindung mit dem Schaltzustand weisst Du dann es wurde lang gedrückt und kannst die anderen Schalter entsprechend nachziehen

Soweit die Theorie - kannst du mir einen Einstiegstipp geben, wie ich das umsetzen kann? Bin derzeit leider noch ziemlich neu in FHEM...

Danke

Wuppi68

im Aktor für self01 und self02 die Register lgOnTime und lgOffTime z.b. auf 10 Sekunden setzen

jetzt kannst Du z.B. mit DOIF das reaidng timedOn abfragen

DOIF ([schalter:timedOn] eq "on" ) (Ausführungsteil für Taster lange gedrückt; On oder Off erkennst Du im State vom Schalter und setzt dann ALLE 3 Schalter gleich)
FHEM unter Proxmox als VM

galdo

Danke für den Ansatz - muss ich später mal ausprobieren!

galdo

#5
So - ich habe das ganze jetzt mal getestet - auch in mehreren Varianten. Leider ohne Erfolg.

Wenn ich lange auf den Aktor drücke, so geht das Licht nur für die Lampe an, allerdings auch nach drei Sekunden wieder aus (habe lgOnTime und lgOffTime auf 3s gesetzt).

Derzeit sieht das ganze (nach Kürzung aufs wesentliche) wie folgt aus:
Zitat([HM.Aktor.Aussenlicht.Eingang:timedOn] eq "on")
(set HM.Gruppe.Aussenlicht HM.Aktor.Aussenlicht.Eingang:state)

Habt ihr ne Idee, warum das ganze toggelt?

Danke
Andreas

Wuppi68

zeig doch mal dein DOIF ....

wenn di eSchalter timed sind, dann haben die ein Reading ... timedOn für den Zeitraum
dieses ist der Zeitraum für FHEM zu reagieren und den finalen Zustand dann für alle 3 Devices einzustellen
FHEM unter Proxmox als VM

galdo

Hallo,

ich habe den ganzen Taster nochmal aus FHEM gelöscht und neu angelegt - jetzt gibt es keine Reaktion mehr auf den lange Tastendruck, außer dass der Schalter ausgeht:

Anbei die Konfiguration (per Screenshot) und das DOIF


([HM.Aktor.Aussenlicht.Eingang:timedOn] eq "on")
(set HM.Gruppe.Aussenlicht HM.Aktor.Aussenlicht.Eingang:state)


Kurze Erklärung zum Code - ich gehe davon aus, dass das timedOn sowohl für self01 (ein) als auch für self02 (aus) gesetzt wird, daher setze ich - am Beispiel "Eingang" - die ganze Gruppe auf den Status der Eingangsbeleuchtung. Für die anderen Taster wäre das analog zu wiederholen.

Ich vermute einen Fehler in den Attributen bzw. Registern des Tasters. Vielleicht seht ihr den Fehler.

Vielen Dank für die Unterstützung
Andreas

wowogiengen

Hallo,
lange drücken heisst bei den Schaltaktoren doch, dass diese in den Pairing-Mode gehen?

Kann man das irgendwie unterdrücken, oder hab ich das hier nur übersehen?

Viele Grüße
Wolfgang

Wuppi68

Zitat von: wowogiengen am 14 Juni 2015, 09:31:49
Hallo,
lange drücken heisst bei den Schaltaktoren doch, dass diese in den Pairing-Mode gehen?

Kann man das irgendwie unterdrücken, oder hab ich das hier nur übersehen?

Viele Grüße
Wolfgang

bei den "Markenschaltern" gibt es extra eine Config Taste
die gehen nicht bei Long in den Anlernmodus
FHEM unter Proxmox als VM

Wuppi68

Zitat von: galdo am 13 Juni 2015, 22:41:06
Hallo,

ich habe den ganzen Taster nochmal aus FHEM gelöscht und neu angelegt - jetzt gibt es keine Reaktion mehr auf den lange Tastendruck, außer dass der Schalter ausgeht:

Anbei die Konfiguration (per Screenshot) und das DOIF


([HM.Aktor.Aussenlicht.Eingang:timedOn] eq "on")
(set HM.Gruppe.Aussenlicht HM.Aktor.Aussenlicht.Eingang:state)


Kurze Erklärung zum Code - ich gehe davon aus, dass das timedOn sowohl für self01 (ein) als auch für self02 (aus) gesetzt wird, daher setze ich - am Beispiel "Eingang" - die ganze Gruppe auf den Status der Eingangsbeleuchtung. Für die anderen Taster wäre das analog zu wiederholen.

Ich vermute einen Fehler in den Attributen bzw. Registern des Tasters. Vielleicht seht ihr den Fehler.

Vielen Dank für die Unterstützung
Andreas

ich habe nur einen Schalter wo ich diese Grundfunktionalität benutze ...

dort habe ich nur

shOnTime gesetzt und werte dieses aus

bei Dir sollte eigentlich so gehen:

set HM.Aktor.Aussenlicht.Eingang regSet lgOnTime 10 self01
set HM.Aktor.Aussenlicht.Eingang regSet lgOffTime 10 self02


von den Werkseinstellungen !!!!

und dann

([HM.Aktor.Aussenlicht.Eingang:timedOn] eq "on")
(set HM.Gruppe.Aussenlicht {[HM.Aktor.Aussenlicht.Eingang:state]})


wenn ich das DOIF verstanden habe, sagt die geschweifte Klamme --> rechnen und die eckige Klammer, nehme das Reading
FHEM unter Proxmox als VM

galdo

Was machen die 10sec? Ist das die Dauer, die ich gedrückt halten muss?

Heißt dein Kommentar zum DOIF, dass die geschweiften Klammern zu viel sind?

Danke
Andreas

Wuppi68

Zitat von: galdo am 15 Juni 2015, 22:39:59
Was machen die 10sec? Ist das die Dauer, die ich gedrückt halten muss?

die 10 Sekunden sind zum reagieren von FHEm da, unter 2 Sekunden kann es schon einmal eng werden, die Dauer des lang Drückens kannst Du auch in den Registern einstellen :-)

Zitat von: galdo am 15 Juni 2015, 22:39:59Heißt dein Kommentar zum DOIF, dass die geschweiften Klammern zu viel sind?

mein letzter Codeschnippsel sollte eigentlich direkt so funktionieren
FHEM unter Proxmox als VM

galdo

Ich verzweifle gerade - leider funktioniert es immer noch nicht.

Ich habe jetzt lgOnTime bzw. lgOffTime auf 10sec geändert - allerdings wird das TimedOn nicht gesetzt und ich kann mir nicht erklären warum. Muss vielleicht noch der lgActionType gesetzt werden, damit die Funktion auf lange Tastendrücke reagiert? Was bedeutet überhaupt im Aktor kurz oder lang - wie ist das definiert.

Fragen über Fragen :(

Vielen Dank für eure Unterstützung.
Andreas

Pfriemler

#14
Werten denn die "Markenschalter" überhaupt lokale Long-Tastendrücke aus? Bei den Batterieaktoren im Vergleich werden kurze und lange Tastendrücke identisch behandelt. Die Long-Register sind zwar für die lokalen Tasten (self...) vorhanden und programmierbar, aber wirkungslos...

geht nich Gips nich ...
"Änd're nie in fhem.cfg, denn das tut hier allen weh!" *** Wheezy@Raspi(3), HMWLAN+HMUART, CUL868(SlowRF) für FHT+KS+FS20, miniCUL433, Rademacher DuoFern *** "... kaum macht man es richtig, funktioniert es ..."