Hallo!
Habe mehrere Homematic Rolladenaktoren. Diese möchte ich jetzt nacheinander runterfahren.
So dass wenn der 1. Rolladen unten ist, der 2. runterfährt - wenn dieser unten ist, der dritte usw.
Wie mach' ich das?
Ich muss ja in Abhängigkeit des Status schalten - also z.B. erst Rolladen 2 runterfahren, wenn Rolladen 1 bereits unten ist...??
Hallo,
ich nutze einen Notify bei meiner Leinwand zum Einschalten der Geräte :
define xxxx notify Leinwand:motor..stop.off set Wohnzimmer_Beamer command PowerOn ; set DENON_X2000 on
Rolladenaktor:motor..stop.off ist das Ereigns das der Rolladenaktor auswirft wenn er unten ist, Rolladenaktor:motor..stop.on, wenn er oben ist.
Danke Dir!!! Werd ich auch mal so versuchen!
Kann man dieses Notify auch temporär in einen Schaltvorgang einfügen? So wie das at_schlafen hier:
define nf_schlafen notify TV.* {\
my $now = sprintf("%%02d:%%02d",$hour,$min);;\
my $TV = Value("TV");;\
if (($TV eq "absent") && ($now gt "22:00:00")) {\
fhem("define at_schlafen at +00:15:00 set WZ_Decke off") if(Value("WZ_Decke") ne "off");;\
}\
}
Zitat von: thunder1902 am 09 September 2015, 15:09:42
Kann man dieses Notify auch temporär in einen Schaltvorgang einfügen?
Klar, man kann alles wenn man weiß wie (oder was du willst).
Ein notify kannst du einmalig erstellen und per trigger starten lassen.
So, ich habe mich entschlossen, das ganze mit DOIF zu machen. Ich möchte sobald ein Rolladen die Eigenschaft "motor" in den Readins auf "stop" ändert, mit dem nächsten Rolladen beginnen. Leider haut das ganze nicht so ganz hin. Vermutlich habe ich einen Fehler in der Syntax.
Kann mir da noch jemand kurz drüberschauen, warum alle Rolläden gleichzeitig anlaufen?
Rolladen_EG_alle ist ein Dummy mit 3 Schaltstellungen: hoch, runter und neutral.
In dem Reading "motor" steht beim stoppen des Motors dann als Wert "stop:0", wobei die "0" (0-100) die Position der Jalousie ist, die ich aber nicht wichtig ist. Möchte nur wissen, ob der Motor gestoppt hat...
#Rolladen-Sammelschaltung EG
define Rolladen_EG_Kueche_hoch DOIF ([Rolladen_EG_alle] eq "hoch") (set Kueche.Rolladen hoch)
define Rolladen_EG_Kueche_runter DOIF ([Rolladen_EG_alle] eq "runter") (set Kueche.Rolladen runter)
define Rolladen_EG_WZ_S_hoch DOIF ([Rolladen_EG_alle] eq "hoch" and [Kueche.Rolladen:motor] =~ "stop") (set Wohnzimmer.Rolladen.Seite hoch)
define Rolladen_EG_WZ_S_runter DOIF ([Rolladen_EG_alle] eq "runter" and [Kueche.Rolladen:motor] =~ "stop") (set Wohnzimmer.Rolladen.Seite runter)
...usw....
Ich habe mit DOIF leider noch nicht gearbeitet: aber ich vermute den Fehler in:
define Rolladen_EG_WZ_S_hoch DOIF ([Rolladen_EG_alle] eq "hoch" and [Kueche.Rolladen:motor] =~ "stop") (set Wohnzimmer.Rolladen.Seite hoch)
Ich denke, dass es so lauten muss:
define Rolladen_EG_WZ_S_hoch DOIF ([Rolladen_EG_alle] eq "hoch" and [Kueche.Rolladen:?stop:offen]) (set Wohnzimmer.Rolladen.Seite hoch)
Für herunter dann ("stop:zu")
Quelle: Ereignissteuerung über Auswertung von Events -
ZitatDie Syntax lautet: [<devicename>:?<regexp>]
auf http://fhem.de/commandref_DE.html#DOIF (http://fhem.de/commandref_DE.html#DOIF)
@RomanticBoy83:
Danke, aber das ist eben das, was ich NICHT machen möchte. Da bei mir die Jalousien auch zur Hälfte geöffnet sind, steht in diesem motor-Reading z.B. auch stop:50.
Ich möchte allerdings NUR auf das "stop"-Wort reagieren....
Na dann ebend nur[Kueche.Rolladen:?stop]
Du musst eq statt =~ nehmen.
Alles ganz nett - aber wie ich das überfliege, zerrt ein fahrender Rolladen alle anderen verzögert mit - was wenn ich tagsüber manuell einen Rollanden schließe, dann geht die ganze Rufkette bis zum Ende weiter? Ist das die Intention, oder sollen einfach bei einem Schaltwunsch nicht alle gleichzeitig hoch- oder herunterfahren? Das würde ich anders lösen.
Jm2c.