Homematic Taster short und long

Begonnen von andy6090, 17 Oktober 2016, 12:19:22

Vorheriges Thema - Nächstes Thema

andy6090

Ich habe einen Homematic Wandtaster ( HM-PB-2-WM55 )
und möchte bei kurzem druck das Rolladen ( Intertechno ) steuern, das funktioniert.
Bei langem Druck soll die Warmwasserzirkulation ( HM-LC-SW1-PL Steckdosenaktor ) anspringen, aber das funktioniert gar nicht. Hab hin unb her probiert und viel gelesen,
aber über long short finde ich kaum etwas.
Hat einer ne Idee ?

define notify_HM_Tast_kuecheoff notify HM_47BD06_Btn_01:Short.* set RolloKueche off
define notify_HM_Tast_kuecheon notify HM_47BD06_Btn_02:Short.* set RolloKueche on

define notify_HM_Tast_kuechelong notify HM_47BD06_Btn_01:long.* set Warmwasserzyrkulation on
define notify_HM_Tast_kuechelong2 notify HM_47BD06_Btn_02:Long.5 set Warmwasserzyrkulation on-for-timer 45

jmike

Hi

Du musst auf das Event LongRelease schauen.

Hier ein, etwas älteres Beispiel, um mit einem Notify beide Tastendrücke anzufangen.


6fach1.6fach1_3.(Short|LongRelease) {
if($EVENT =~ m/Short/){
toggleSpeaker();
}else{
toggleMusic();
}}


Heute würde ich es mit einem DOIF machen ;)

Hollo

Zitat von: andy6090 am 17 Oktober 2016, 12:19:22
Hat einer ne Idee ?
...
Sieht bei mir z.B. so aus...

define n_sz_6fach_Taster_Btn_04_short notify sz_6fach_Taster_Btn_04:Short.* {leiser}
define n_sz_6fach_Taster_Btn_04_long notify sz_6fach_Taster_Btn_04:LongRelease.* set Endstufe_02 off
FHEM 6.x auf RPi 3B Buster
Protokolle: Homematic, Z-Wave, MQTT, Modbus
Temp/Feuchte: JeeLink-Clone und LGW mit LaCrosse/IT
sonstiges: Linux-Server, Dreambox, "RSS-Tablet"

chipmunk

Warum nicht direkt peeren und in den Aktoren die short bzw long Register entsprechend setzen?

Chipmunk
RasPi3, HM, HUE, div 433MHz Baumarktdosen über Sende- und Empfangsmodule von C*, Ediplug

Pfriemler

Schreibweise beachten: Triggern auf long wird nie funktionieren, Long schon ...  :D
Das Problem mit HM_47BD06_Btn_01:Long.* set Warmwasserzyrkulation on ist, dass es für alle Long-Events (und davon shippern viele durch, inkl. LongRelease) gefeuert wird, Long.5 könnte gelegentlich "übersehen" werden. Ich hatte da auch schon viel Tebs mit und arbeite auch mit LongRelease. DOIF könnte man mit zwei Zweigen bauen: [HM_47BD06_Btn_01] =~ "Long " (mit Leerzeichen!) als auslösenden Zweig und [HM_47BD06_Btn_01] =~ "LongRelease" als Alternativzweig - ohne attr ... do always, dann löst es nur einmal aus, reagiert aber trotzdem auf alle Long-Events und "kippt" beim Loslassen der Taste auf den Alternativzweig (der keine Aktionen beinhalten muss), um für den nächsten Einsatz bereit zu sein.

In der Tat wäre es aber eine Option, Intertechno per short-Notify schalten zu lassen und den Warmwasser-Aktor zu peeren und danach die Reaktion auf short-Tastendrücke auszuschalten:
set Warmwasserzyrkulation regset shActionType off HM_47BD06_Btn_01
Setzt man statt "off" "jmpToTarget", wird das normale Verhalten wiederhergestellt.
Beim Notify wird sie nur eingeschaltet. Beim Peeren würde sie toggeln. Aber auch das kann man auf "nur ein" ändern.
Wie geht die Warmwasserpumpe dann eigentlich wieder aus?
"Ä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 ..."

andy6090

Erstmal danke für die vielen Vorschläge.
Long.* und long.5 war nur ein Versuch.
Die Warmwasserzyrkulation soll eigentlich auf on-for-timer 45 gesetzt werden.

Ich hatte im inet noch das gefunden :

define notify_name notify
(handsender_name_open:Short.*|handsender_name_open:Long.1[^0-9].*) {
   fhem("set haustuer_name open");
}

Nur verstehe ich die eingeklammerte Zahl (0-9) nicht

Peeren wollte ich es noch nicht, da ich noch was ändern wollte und dann muss ich von neu anfangen alles zu Peeren und einzustellen

Pfriemler

45 Sekunden reichen aus? Dann würde wie beschrieben peeren und dann noch lgOnTime auf 45 setzen. Dann wird der Aktor automatisch nach 45 Sekunden abschalten. Wenn Du denn mal peeren willst. Ansonsten bin ich auch eher ein Freund des DOIF.

Long.1[^0-9].* : Ich bin da auch Anfänger, aber ich interpretiere, dass nur das Ereignis "Long 1" (der Punkt symbolisiert ein beliebiges Zeichen, auch das Leerzeichen) akzeptiert wird, nicht jedoch Long 11, Long 12 usw, weil das auf "1" folgende Zeichen NICHT 0...9 sein darf, danach ist alles erlaubt (.*).
Ich empfehle Dir ein bisschen Einlernen in Regex, das ist extrem kompliziert, aber auch extrem mächtig.

Last but not least und BTW: Du steuerst eine Warmwasserzirkulation...
"Ä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 ..."

andy6090

#7
VIELEN VIELEN DANK.

Ich habe das erste Notify durch DOIF ersetz und schon läuft es einwandfrei .
So sieht es jetzt aus und 45 sekunden waren doch ein bisschen wenig:
define doif_HM_Tast_kuechelong notify HM_47BD06_Btn_01:Long.* set Warmwasserzyrkulation on-for-timer 75
define doif_HM_Tast_kuechelong2 notify HM_47BD06_Btn_02:Long.* set Warmwasserzyrkulation on-for-timer 75

VOLL COOL


;D ;D ;D ;D ;D ;D ;D ;D ;D

Pfriemler

Zitat von: andy6090 am 18 Oktober 2016, 23:06:11
define doif_HM_Tast_kuechelong notify HM_47BD06_Btn_01:Long.* set Warmwasserzyrkulation on-for-timer 75
define doif_HM_Tast_kuechelong2 notify HM_47BD06_Btn_02:Long.* set Warmwasserzyrkulation on-for-timer 75

Ich will Dich nicht bremsen in Deiner Freude, aber das sind immer noch Notifys und keine DOIFs ...
Aba issa egal, wenn's funzt, funzt's.
"Ä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 ..."

andy6090

Ja, das ist mir auch aufgefallen, aber es geht.

cocojambo

#10
Ich habe das mit dem DOIF so gelöst: Ich habe einen HM Geber der ein Tor mit Short und Long schließt und öffnet und über ein FS20 SIG ein Signal ausgegeben wird.

define Toreinfahrt_DOIF DOIF ([Geber1_Btn_01] =~ "Long") (set Toreinfahrt Zu, set Toreinfahrt_Text on) DOELSEIF ([Geber1_Btn_01] =~ "Short") (set Toreinfahrt Auf, set Toreinfahrt_Text off)
attr Toreinfahrt_DOIF do always


Man hätte vielleicht den Geber mit dem Aktor direkt peeren können, aber so gehts auf jeden Fall.
Gruß aus Köln
Norbert
FHEM6.2 FB7490 FB7430 3xraspi2+3+4 2xHM-LAN-CFG 2xESP CUL868 CUNO868 HUE-Bridge Harmony-Hub 5xHM-LC-Sw-PI-2 3xHM-WDS30-T2-SN 1xHM-LC_Sw4-DR 3xHM-ES-PMSw1-PI 7xFS20SIG2 6xFS20KSE 2xHM-ES-PMSW1-PL 5xS300TH 1xASH2200 1xEM1000

Pfriemler

@cocojambo: Das DOIF hat den kleinen Schönheitsfehler, dass es bei Long auf alle Long-Events (einschließlich des LongRelease) reagiert und entsprechend oft den Ausführungsteil abfeuert. Wenn das nicht stört ...
"Ä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 ..."

cocojambo

@Pfriemler:

DANKE
gut, dann so:
define Toreinfahrt_DOIF DOIF ([Geber1_Btn_01:"Long"]) (set Toreinfahrt Zu, set Toreinfahrt_Text on) DOELSEIF ([Geber1_Btn_01:"Short"]) (set Toreinfahrt Auf, set Toreinfahrt_Text off)
attr Toreinfahrt_DOIF do always


einverstanden?

Gruß aus Kölle
Norbert
FHEM6.2 FB7490 FB7430 3xraspi2+3+4 2xHM-LAN-CFG 2xESP CUL868 CUNO868 HUE-Bridge Harmony-Hub 5xHM-LC-Sw-PI-2 3xHM-WDS30-T2-SN 1xHM-LC_Sw4-DR 3xHM-ES-PMSw1-PI 7xFS20SIG2 6xFS20KSE 2xHM-ES-PMSW1-PL 5xS300TH 1xASH2200 1xEM1000