Hallo zusammen, wenn ich an meinem Rollladenaktor folgenden Befehl ausführe:
set CUL_HM_HM_LC_Bl1PBU_FM_1F0033 toggle
fährt die Roulade rauf bzw. runter in die Endposition.
kann mir jemand sagen wie ich es mache dass die Roulade stoppt?
ich wollte auf meiner Fernbedienung damit einen Taste belegen.
danke für eure Hilfe
Andreas
set <Jalousie> stop
MfG, MisterEltako
Hallo, danke für die erste Antwort
mit den zwei befehlen würde ich au der Fernbedienung zwei tastn belägen:
set <Jalousie> toggle
set <Jalousie> stop
ich hatte aber eigentlich eine ein Tasten Lösung gedacht
Runter --> Stop ---> Rauf--|
^
|--------------------------|
gibt es da keine Lösung ?
Grüße Andreas
Hallo Andreas,
klar gibt es eine Loesung - und natuerlich nicht nur eine.
Erst einmal die Fakten auf den Tisch:
Du redest von einer HM fernbedienung? oder einer fremden?
Wenn es eine HM ist - willst du direkt peeren oder es von der Zentrale abhaengig machen?
willst du zwischen lang und kurz gedrueckt unterscheiden?
Der Klassiker einer ein-tasten bedienung waere wohl: peere deine HM-taste mit peerChan und parameter 'single' mit deinem Rollo. Dann sollte es eigentich schon fast fertig sein. ggf. musst du noch ein bischen an der Statemachine optimieren. Langer Tastendruck faehrt so lange bis du los laesst. beim naechsten Mal wird die Richtung geaendert. Kurzer Tastendruck macht ein toggle
Wenn du es mit fhem loesen willst musst du den Zustand des motors einbeziehen.
wenn 'motor' eq 'stop' schicke ein 'toggle'
ansonsten schicke ein 'stop'
Gruss Martin
ich habe FS20 Fernbedinungen...
da ich ältere Personen im Haushalt habe die die Tasten manchmal Kurz manchmal lang betätigen wäre es am besten wenn kurz oder lang kein Unterschied machen würde
am besten wäre denke ich, Taste A=Stop; Taste A=Runter; Taste A=Stop; Taste A=Rauf .... Wiederholung
Hi Andreas,
ok - beleiben noch ein paar Moeglichkeiten:
Grundsaetzlich
a) alles über FHEM und ein notify
b) ueber einen simulierten HM schalter (virtual Button)
a) ist eigentlich elegant - hat aber das Problem des Umschaltens. FHEM weiss erst ob der Motor steht, wenn der Aktor dies gemeldet hat. Man kann also
a1) mit den Verzögerungen leben und bei schnellem Drücken evtl Probleme bekommen
a2) Das Schalten des FS20 und den letzten Zustand in notifies nachbilden und quasi mitzaehlen. Somit wäre das Drücken der lokalen Tasten nicht berücksichtigt.
a3) a1 und a2 mischen, was relativ komplex wird
b) bedarf der Programmierung des Bl1PBU. Vorteil ist, dass der Bl1 immer seinen Zustand kennt. Somit waere das die stabilste Lösung, muss man aber etwas mehr aufpassen...
Lange Vorrede, hier ein Versuch zu a1)
habe den Bl1... einmal "Bl1" genannt - musst du den korrekten Namen einsetzen, evtl CUL_HM_HM_LC_Bl1PBU_FM_1F0033
define nf notify <fs20Trigger> {\
my $mot = ReadingsVal('Bl1','motor','');;\
if($mot ne 'stop'){fhem(set Bl1 stop)}\
else{fhem(set Bl1 toggle)};;\
}
Nicht getestet, hoffe auf wenig tipfehler. Ich denke, das Prinzip kannst du erkennen?
Falls du die komplexer Lösung b) brauchst muessen wir einmal experimentieren.
Gruss Martin
habe es so gemacht:
define nf notify FS20_d78407:off {\my $mot = ReadingsVal('CUL_HM_HM_LC_Bl1PBU_FM_1F0033','motor','');;\if($mot ne 'stop'){fhem(set CUL_HM_HM_LC_Bl1PBU_FM_1F0033 stop)}\else{fhem(set CUL_HM_HM_LC_Bl1PBU_FM_1F0033 toggle)};;\}
leider tut sich nichts :-(
Log:
2013.05.22 23:47:29 1: Including ./log/fhem.save
2013.05.22 23:47:33 3: nf return value: Can't modify single ref constructor in scalar assignment at (eval 48) line 1, at EOF
syntax error at (eval 48) line 1, near "\if"
syntax error at (eval 48) line 1, near "\else"
2013.05.22 23:47:33 3: Device CUL_HM_HM_SEC_RHS_1E92F9 added to ActionDetector with 028:00 time
2013.05.22 23:47:36 3: nf return value: Can't modify single ref constructor in scalar assignment at (eval 50) line 1, at EOF
syntax error at (eval 50) line 1, near "\if"
syntax error at (eval 50) line 1, near "\else"
2013.05.22 23:47:38 3: nf return value: Can't modify single ref constructor in scalar assignment at (eval 51) line 1, at EOF
syntax error at (eval 51) line 1, near "\if"
syntax error at (eval 51) line 1, near "\else"
2013.05.22 23:47:41 3: nf return value: Can't modify single ref constructor in scalar assignment at (eval 52) line 1, at EOF
syntax error at (eval 52) line 1, near "\if"
syntax error at (eval 52) line 1, near "\else"
ich habe eventuell aber noch eine Idee:
könnte man durch drücken des Tasters FS20_d78407:off, immer zwei Befehle gleichzeitig "im Kreis" auslösen ? (STOP und STOP)-> (STOP und Rauf)-> ( STOP und Runter) usw.
Danke für deine Hilfe
Grüße Andreas
nun hab ich es so versucht:
define nf notify FS20_d78407:off {\my $mot = ReadingsVal('CUL_HM_HM_LC_Bl1PBU_FM_1F0033','motor','');;\
if($mot ne 'stop'){fhem(set CUL_HM_HM_LC_Bl1PBU_FM_1F0033 stop)}\
else{fhem(set CUL_HM_HM_LC_Bl1PBU_FM_1F0033 toggle)};;\}
folgende Fehlermeldung kommt:
LOG:
013.05.23 01:35:29 3: Device CUL_HM_HM_SEC_RHS_1E92F9 added to ActionDetector with 028:00 time
2013.05.23 01:35:43 2: IT set Steckdose_M5 off
2013.05.23 01:35:44 3: FHT8V set Stellantrieb_Wochnzimmer valve 0
2013.05.23 01:35:58 3: nf return value: Can't modify single ref constructor in scalar assignment at (eval 212) line 1, at EOF
syntax error at (eval 212) line 1, at EOF
Bareword "stop" not allowed while "strict subs" in use at (eval 212) line 1.
Bareword "toggle" not allowed while "strict subs" in use at (eval 212) line 1.
Hallo Andreas,
da fehlen die ""
den \ brauchst du nur, wenn du den code in der naechsten Zeile fortsetzen willst.
Ausserden kommt bei "motor" nicht nur 'stop' zurueck sondern noch mehr, der level. Also muss man nicht mit eq abfragen... sondern mit match
define nf notify FS20_d78407:off {\
my $mot = ReadingsVal('CUL_HM_HM_LC_Bl1PBU_FM_1F0033','motor','');;\
if($mot =~ m"stop"){fhem("set CUL_HM_HM_LC_Bl1PBU_FM_1F0033 stop")}\
else{fhem("set CUL_HM_HM_LC_Bl1PBU_FM_1F0033 toggle")};;\
}
oder unleserlich in einer Zeile
define nf notify FS20_d78407:off {my $mot = ReadingsVal('CUL_HM_HM_LC_Bl1PBU_FM_1F0033','motor','');;if($mot =~ m"stop"){fhem("set CUL_HM_HM_LC_Bl1PBU_FM_1F0033 stop")}else{fhem("set CUL_HM_HM_LC_Bl1PBU_FM_1F0033 toggle")};;}
Gruss Martin
habe das eingefügt:
define nf notify FS20_d78407:off {\
my $mot = ReadingsVal('CUL_HM_HM_LC_Bl1PBU_FM_1F0033','motor','');;\
if($mot =~ m"stop"){fhem("set CUL_HM_HM_LC_Bl1PBU_FM_1F0033 stop")}\
else{fhem("set CUL_HM_HM_LC_Bl1PBU_FM_1F0033 toggle")};;\
}
es tut sich leider nichts
LOG
2013.05.23 09:07:43 2: CUL_HM set CUL_HM_HM_LC_Bl1PBU_FM_1F0033 stop rxt:1
2013.05.23 09:07:45 2: CUL_HM set CUL_HM_HM_LC_Bl1PBU_FM_1F0033 stop rxt:1
2013.05.23 09:07:46 2: CUL_HM set CUL_HM_HM_LC_Bl1PBU_FM_1F0033 stop rxt:1
2013.05.23 09:09:26 2: CUL_HM set CUL_HM_HM_LC_Bl1PBU_FM_1F0033 stop rxt:1
2013.05.23 09:09:31 2: CUL_HM set CUL_HM_HM_LC_Bl1PBU_FM_1F0033 stop rxt:1
2013.05.23 09:09:36 2: CUL_HM set CUL_HM_HM_LC_Bl1PBU_FM_1F0033 stop rxt:1
sorry, nicht nachgedacht.
Die Bedingung lautet (falsch) dass, wenn 'stop' bei motor kommt soll stop gesendet werden.
daher sendet der code jetzt immer stop, wenn schon stop ist
Muss natuerlich umgekehrt sein, also
define nf notify FS20_d78407:off {\
my $mot = ReadingsVal('CUL_HM_HM_LC_Bl1PBU_FM_1F0033','motor','');;\
if($mot !~ m"stop"){fhem("set CUL_HM_HM_LC_Bl1PBU_FM_1F0033 stop")}\
else{fhem("set CUL_HM_HM_LC_Bl1PBU_FM_1F0033 toggle")};;\
}
ES tut sch etwas :)
habe deine Letzte Version genommen
jetzt Fährt die Rollade Runter und Stopp allerdings fährt sie nicht hoch
LOG:
2013.05.23 11:54:42 2: CUL_HM set CUL_HM_HM_LC_Bl1PBU_FM_1F0033 toggle rxt:1
2013.05.23 11:54:45 2: CUL_HM set CUL_HM_HM_LC_Bl1PBU_FM_1F0033 stop rxt:1
2013.05.23 11:54:46 2: CUL_HM set CUL_HM_HM_LC_Bl1PBU_FM_1F0033 toggle rxt:1
2013.05.23 11:54:48 2: CUL_HM set CUL_HM_HM_LC_Bl1PBU_FM_1F0033 stop rxt:1
2013.05.23 11:54:51 2: CUL_HM set CUL_HM_HM_LC_Bl1PBU_FM_1F0033 toggle rxt:1
2013.05.23 11:54:53 2: CUL_HM set CUL_HM_HM_LC_Bl1PBU_FM_1F0033 stop rxt:1
ich bin wirklich dankbar für deine Mühe
Hi,
ok, ist klar soweit. Toggle soll zwischen on/off hin und her schalten. Zum toggeln zwischen up/down ist es nicht gemacht. Es schaltet bei zwischenwerten immer erst aus, dann an. Aus ist beim Rollo (leider) unten.
Du kannst das Toggle aber so bauen:
define ld dummy # zwischenvariable die sich merkt, wohin es letztes mal ging
define nf notify FS20_d78407:off {\
my $mot = ReadingsVal('CUL_HM_HM_LC_Bl1PBU_FM_1F0033','motor','');;\
if($mot !~ m"stop"){fhem("set CUL_HM_HM_LC_Bl1PBU_FM_1F0033 stop")}\
else{\
if (Value("ld") ne "off"){\
fhem("set CUL_HM_HM_LC_Bl1PBU_FM_1F0033 off");;\
fhem("set ld off");;}\
}else{fhem("set CUL_HM_HM_LC_Bl1PBU_FM_1F0033 on");;\
fhem("set ld on");;}\
};;\
}
habe es so gemacht, soweit ich es aus der LOG Verstehe ist etwas mit den klammern oder Anführungsstrichen nicht in Ordnung, selber kann ich es aber auch überhaupt nicht :-(
2013.05.23 13:04:11 3: nf return value: syntax error at (eval 1304) line 1, near "}else"
syntax error at (eval 1304) line 1, near "} }"
Unmatched right curly bracket at (eval 1304) line 1, at end of line
2013.05.23 13:04:17 3: nf return value: syntax error at (eval 1305) line 1, near "}else"
syntax error at (eval 1305) line 1, near "} }"
Unmatched right curly bracket at (eval 1305) line 1, at end of line
2013.05.23 13:04:23 3: nf return value: syntax error at (eval 1306) line 1, near "}else"
syntax error at (eval 1306) line 1, near "} }"
Unmatched right curly bracket at (eval 1306) line 1, at end of line
ja, war eine zu viel geschlossen
define nf notify FS20_d78407:off {\
my $mot = ReadingsVal('CUL_HM_HM_LC_Bl1PBU_FM_1F0033','motor','');;\
if($mot !~ m"stop"){fhem("set CUL_HM_HM_LC_Bl1PBU_FM_1F0033 stop")}\
else{\
if (Value("ld") ne "off"){\
fhem("set CUL_HM_HM_LC_Bl1PBU_FM_1F0033 off");;fhem("set ld off");;\
}else{fhem("set CUL_HM_HM_LC_Bl1PBU_FM_1F0033 on");;fhem("set ld on");;}\
};;\
}
hallo Martin Funktioniert leider nur Runter und Stopp... zudem habe ich gerade festgestellt das ich nicht in jeder Position Stoppen kann, so als ob es nicht immer auf einen Tastendruck reagieren würde.
LOG
2013.05.23 16:09:10 3: Device CUL_HM_HM_SEC_RHS_1E92F9 added to ActionDetector with 028:00 time
2013.05.23 16:09:15 2: CUL_HM set CUL_HM_HM_LC_Bl1PBU_FM_1F0033 off rxt:1
2013.05.23 16:09:15 3: set ld off : Please define ld first
2013.05.23 16:09:15 3: nf return value: Please define ld first
2013.05.23 16:09:17 2: CUL_HM set CUL_HM_HM_LC_Bl1PBU_FM_1F0033 stop rxt:1
2013.05.23 16:09:18 2: CUL_HM set CUL_HM_HM_LC_Bl1PBU_FM_1F0033 off rxt:1
2013.05.23 16:09:18 3: set ld off : Please define ld first
2013.05.23 16:09:18 3: nf return value: Please define ld first
2013.05.23 16:09:19 2: CUL_HM set CUL_HM_HM_LC_Bl1PBU_FM_1F0033 off rxt:1
2013.05.23 16:09:19 3: set ld off : Please define ld first
2013.05.23 16:09:19 3: nf return value: Please define ld first
2013.05.23 16:09:21 2: CUL_HM set CUL_HM_HM_LC_Bl1PBU_FM_1F0033 off rxt:1
2013.05.23 16:09:21 3: set ld off : Please define ld first
2013.05.23 16:09:21 3: nf return value: Please define ld first
2013.05.23 16:09:24 2: CUL_HM set CUL_HM_HM_LC_Bl1PBU_FM_1F0033 stop rxt:1
2013.05.23 16:09:27 2: CUL_HM set CUL_HM_HM_LC_Bl1PBU_FM_1F0033 stop rxt:1
2013.05.23 16:09:29 1: HMLAN setting owner to 123ABC from 9E2351
2013.05.23 16:09:32 2: CUL_HM set CUL_HM_HM_LC_Bl1PBU_FM_1F0033 off rxt:1
2013.05.23 16:09:32 3: set ld off : Please define ld first
2013.05.23 16:09:32 3: nf return value: Please define ld first
2013.05.23 16:09:35 2: CUL_HM set CUL_HM_HM_LC_Bl1PBU_FM_1F0033 stop rxt:1
2013.05.23 16:09:39 2: CUL_HM set CUL_HM_HM_LC_Bl1PBU_FM_1F0033 off rxt:1
2013.05.23 16:09:39 3: set ld off : Please define ld first
2013.05.23 16:09:39 3: nf return value: Please define ld first
2013.05.23 16:09:43 2: CUL_HM set CUL_HM_HM_LC_Bl1PBU_FM_1F0033 stop rxt:1
2013.05.23 16:09:45 2: CUL_HM set CUL_HM_HM_LC_Bl1PBU_FM_1F0033 off rxt:1
2013.05.23 16:09:45 3: set ld off : Please define ld first
2013.05.23 16:09:45 3: nf return value: Please define ld first
2013.05.23 16:09:48 2: CUL_HM set CUL_HM_HM_LC_Bl1PBU_FM_1F0033 off rxt:1
2013.05.23 16:09:48 3: set ld off : Please define ld first
2013.05.23 16:09:48 3: nf return value: Please define ld first
Zitat von: Vladi2010 schrieb am Do, 23 Mai 2013 16:14hallo Martin Funktioniert leider nur Runter und Stopp... zudem habe ich gerade festgestellt das ich nicht in jeder Position Stoppen kann, so als ob es nicht immer auf einen Tastendruck reagieren würde.
LOG
2013.05.23 16:09:10 3: Device CUL_HM_HM_SEC_RHS_1E92F9 added to ActionDetector with 028:00 time
2013.05.23 16:09:15 2: CUL_HM set CUL_HM_HM_LC_Bl1PBU_FM_1F0033 off rxt:1
2013.05.23 16:09:15 3: set ld off : Please define ld first
2013.05.23 16:09:15 3: nf return value: Please define ld first
2013.05.23 16:09:17 2: CUL_HM set CUL_HM_HM_LC_Bl1PBU_FM_1F0033 stop rxt:1
2013.05.23 16:09:18 2: CUL_HM set CUL_HM_HM_LC_Bl1PBU_FM_1F0033 off rxt:1
2013.05.23 16:09:18 3: set ld off : Please define ld first
2013.05.23 16:09:18 3: nf return value: Please define ld first
2013.05.23 16:09:19 2: CUL_HM set CUL_HM_HM_LC_Bl1PBU_FM_1F0033 off rxt:1
2013.05.23 16:09:19 3: set ld off : Please define ld first
2013.05.23 16:09:19 3: nf return value: Please define ld first
2013.05.23 16:09:21 2: CUL_HM set CUL_HM_HM_LC_Bl1PBU_FM_1F0033 off rxt:1
2013.05.23 16:09:21 3: set ld off : Please define ld first
2013.05.23 16:09:21 3: nf return value: Please define ld first
2013.05.23 16:09:24 2: CUL_HM set CUL_HM_HM_LC_Bl1PBU_FM_1F0033 stop rxt:1
2013.05.23 16:09:27 2: CUL_HM set CUL_HM_HM_LC_Bl1PBU_FM_1F0033 stop rxt:1
2013.05.23 16:09:29 1: HMLAN setting owner to 123ABC from 9E2351
2013.05.23 16:09:32 2: CUL_HM set CUL_HM_HM_LC_Bl1PBU_FM_1F0033 off rxt:1
2013.05.23 16:09:32 3: set ld off : Please define ld first
2013.05.23 16:09:32 3: nf return value: Please define ld first
2013.05.23 16:09:35 2: CUL_HM set CUL_HM_HM_LC_Bl1PBU_FM_1F0033 stop rxt:1
2013.05.23 16:09:39 2: CUL_HM set CUL_HM_HM_LC_Bl1PBU_FM_1F0033 off rxt:1
2013.05.23 16:09:39 3: set ld off : Please define ld first
2013.05.23 16:09:39 3: nf return value: Please define ld first
2013.05.23 16:09:43 2: CUL_HM set CUL_HM_HM_LC_Bl1PBU_FM_1F0033 stop rxt:1
2013.05.23 16:09:45 2: CUL_HM set CUL_HM_HM_LC_Bl1PBU_FM_1F0033 off rxt:1
2013.05.23 16:09:45 3: set ld off : Please define ld first
2013.05.23 16:09:45 3: nf return value: Please define ld first
2013.05.23 16:09:48 2: CUL_HM set CUL_HM_HM_LC_Bl1PBU_FM_1F0033 off rxt:1
2013.05.23 16:09:48 3: set ld off : Please define ld first
2013.05.23 16:09:48 3: nf return value: Please define ld first
kann es sein dass es etwas mit der verzögerten Rückantwort vom UL_HM_HM_LC_Bl1PBU_FM_1F0033 zu tun hat ?
Zitat2013.05.23 16:09:15 3: set ld off : Please define ld first
du hast das
define ld dummy
nicht ausgeführt (aus dem vorletzten Post)
Dann kann es auch nicht funktionieren.
Dass es nicht 100% funktioniert ist moeglich. Es liegt daran, dass die Meldungen von Aktor ein bisschen dauern. Erst wenn die FHEM einen neuen Zustand hat funktioniert ein stop - und umgekehrt.
Die etwas aufwändigere Möglichkeit ist, die gesamte Logik in den Aktor zu packen.
Idee ist, den BL1 mit einen virtuellen Button zu peeren. Dann die Aktionen im BL1/virtual link zu programmieren schliesslich die FS20-VB mit einem Notify an den Virtuellen Button zu binden.
Das geht dann
# definiere einen Virtuellen Button
define va CUL_HM 112233
set va virtual 1
#Peere den Button
set va_Btn1 peerChan 0 CUL_HM_HM_LC_Bl1PBU_FM_1F0033 single
#jetzt kannst du den Rollo auch steuern mit
set va_Btn1 press
#Mit jeden press sollte sich die Richtung aendern. Ob er down-stop-up-stop-down... #macht musst du probieren. Wenn nicht musst du mir das
set CUL_HM_HM_LC_Bl1PBU_FM_1F0033 getConfig
#und nach ein7zwei minuten ein
attr CUL_HM_HM_LC_Bl1PBU_FM_1F0033 expert 2
list CUL_HM_HM_LC_Bl1PBU_FM_1F0033
#schicken
#Mit der FS20 kannst du es kombinieren mit einem Notify. Erst das alte löschen, sonst #kommen sich beiden in die Quere
delete nf
define nf notify FS20_d78407:off set va_Btn1 press
Gruss Martin
Du hast recht gehabt
"define ld dummy"
hab ich vergessen !!!!! :-(
es funktioniert jetzt :-) ich spiele noch ein paar Tage und melde dir dann ob es praktikabel ist :-)
DAnkeeeeeee für deine Arbeit :)