ich habe mir ein DOIF für das einschalten einer Beleuchtung am Morgen erstellt.
Funktioniert auch nur eben wenn Twilight sagt es ist noch "dunkel" in meinem Fall unter "9" schaltet es natürlich wieder ein.
Wie kann ich das erneute einschalten zwischen 6 und 8 Uhr verhindern..?
Evtl mit dem Attribut "repeatcmd" indem ich es auf 3600 setze..?
([du_Modus_WegBeleuchtung] eq "Weihnachten" and ([06:00-08:00|8] and [myTwilight:twilight_weather] < 9)) (set Dachlicht_03 on)
DOELSEIF ([du_Modus_WegBeleuchtung] eq "Weihnachten" and [{sunrise(0,"06:00","08:00")}]) (set Dachlicht_03 off)
im Log heute morgen:
2015.11.30 06:00:00 3: CUL_HM set Dachlicht_03 on
2015.11.30 07:26:44 3: CUL_HM Dachlicht_03 repeat, level 00 instead of C8
2015.11.30 07:26:44 3: CUL_HM set Dachlicht_03 off
2015.11.30 07:26:44 3: CUL_HM set Dachlicht_03 on
Zitat von: moonsorrox am 30 November 2015, 19:05:16
ich habe mir ein DOIF für das einschalten einer Beleuchtung am Morgen erstellt.
Funktioniert auch nur eben wenn Twilight sagt es ist noch "dunkel" in meinem Fall unter "9" schaltet es natürlich wieder ein.
Wie kann ich das erneute einschalten zwischen 6 und 8 Uhr verhindern..?
Evtl mit dem Attribut "repeatcmd" indem ich es auf 3600 setze..?
([du_Modus_WegBeleuchtung] eq "Weihnachten" and ([06:00-08:00|8] and [myTwilight:twilight_weather] < 9)) (set Dachlicht_03 on)
DOELSEIF ([du_Modus_WegBeleuchtung] eq "Weihnachten" and [{sunrise(0,"06:00","08:00")}]) (set Dachlicht_03 off)
im Log heute morgen:
2015.11.30 06:00:00 3: CUL_HM set Dachlicht_03 on
2015.11.30 07:26:44 3: CUL_HM Dachlicht_03 repeat, level 00 instead of C8
2015.11.30 07:26:44 3: CUL_HM set Dachlicht_03 off
2015.11.30 07:26:44 3: CUL_HM set Dachlicht_03 on
Welche Trigger kamen denn alle um 07:26:44 Uhr?
Zitat von: Damian am 30 November 2015, 20:51:36
Welche Trigger kamen denn alle um 07:26:44 Uhr?
das weiß ich nicht mehr, kann ich jetzt leider nicht mehr sehen da es auf initialize steht,.
Werde morgen früh nochmal schauen...!
Guten Morgen,
ich würde mir genau überlegen, welche Bedingung schalten soll und welche Bedingung nur geprüft werden soll, ob sie besteht.
Ich vermute, Du möchtest um 6:00 einschalten, und abhängig vom Sonnenstand zwischen 6 und 8 ausschalten. Allerdings nur, wenn Modus_Wegbeleuchtung = Weihnachten und Twilight < 9.
Jetzt im einzelnen betrachten:
Modus Wegbeleuchtung: soll bei einem Event geschaltet werden? eher nicht, also nur die Bedingung prüfen (das ? nach der öffnenden eckigen Klammer):
[?du_Modus_WegBeleuchtung] eq "Weihnachten"
Zeitfenster: [06:00-08:00|8] triggert 2mal, und zwar um 6 und um 8. Um 6 ist das Ergebnis wahr, um 8 falsch. Es wir also, wenn alle mit and verbundenen Bedingungen erfüllt sind, um 6 das Licht eingeschaltet. Um 8 wird das DOIF nochmals getriggert, es wird aber nur cmd1, also die erste Zeile, nicht wahr sein, weil eben 06:00-08:00 nicht wahr (=falsch) ist. Wenn Du ein DOELSE danach nimmst, wird dieses ausgeführt. Wenn das DOELSEIF wie im Beispiel nicht wahr ist wird zu diesem Zeitpunkt nichts gemacht! Du kannst also den Zeitraum einfach durch eine Zeit ersetzen, in diesem Fall [06:00|8]
[myTwilight:twilight_weather] < 9: twilight_weather liefert 0...100, ein wenig später als twilight. Allerdings triggert Twilight jedesmal Dein DOIF. Wenn also sunrise im DOELSEIF das Licht ausgemacht hat, Twilight dann aber <9 meldet, schaltet das Licht wieder ein.
Jetzt solltest Du überlegen, wer alles schalten darf und soll. Das hängt von der Aufgabe ab.
Wann ist Modus Wegbeleuchtung=Weihnachten denn aktiv? Passt da die Abfrage nach sunrise, d.h. welche Zeiten nimmt sunrise an, während Modus=Weihnachten.
Vorschlag:
([?du_Modus_WegBeleuchtung] eq "Weihnachten" ## nur Abfrage, nicht triggern, muß wahr sein
and
([06:00|8] ## um 6 einschalten...
and
[?myTwilight:twilight_weather] < 9)) ## ...nur wenn noch dunkel
(set Dachlicht_03 on) ## dann einschalten
DOELSEIF
([?du_Modus_WegBeleuchtung] eq "Weihnachten" ## s.oben
and
[{sunrise_abs(0,"06:00","08:00")}]) ## frühestens um 6, spätestens um 8,( die 0 sind Sekunden Verzögerung, nicht Horizont. Nimm besser sunrise_abs, dann wird sunrise vom aktuellen Tag genommen)
(set Dachlicht_03 off) ## Licht ausschalten
Das sollte so funktionieren. Du solltest allerdings die Zeiträume prüfen, ab die zusammen passen: also wann ist Modus=Weihnachten, ist in diesem Zeitraum sunrise zwischen 6 und 8? Du könntest auch myTwilight:twilight_weather zum ausschalten nutzen, musst dann aber einen passenden Wert suchen, wo es dann hell genug ist, damit das Licht nicht mehr gebraucht wird
Viel Erfolg!
Sany
Nachtrag zur Information:
Zitat von: Damian am 30 November 2015, 20:51:36
Welche Trigger kamen denn alle um 07:26:44 Uhr?
also es ist cmd_1 welcher getriggert hat, ist eigentlich auch klar denn ich habe ja 06:00 - 08:00 drin
d.h. wenn er um 07:26:44 ausgeschaltet hat ist es ja noch nicht 8 Uhr also schaltet er wieder ein... ;)
Ich habe da wohl falsch gedacht :-\
@Sany
vielen Dank für deine ausführlichen Informationen... ;)
hierzu möchte ich sagen
[?du_Modus_WegBeleuchtung] eq "Weihnachten"
das du_Modus_WegBeleuchtung ein dummy ist welches ich manuell umschalte, dass funktioniert in vielen meinen DOIFs und ja es steht auch auf Weihnachten, dass arbeitet ohne "?"
hierzu folgendes:
Zitat
Zeitfenster: [06:00-08:00|8] triggert 2mal
da bin ich mir nicht sicher, denn es würde dann eine Zeit von 8Uhr irgendwo erscheinen und das tut es nicht.
Es sollte in einem Bereich von 06:00 - 08:00 Uhr eingeschaltet werden, dass denke ich ist der
Fehler da er immer wieder einschaltet.
Ich denke ich werde nur die Einschaltzeit definieren, denn ausschalten tut er ja nach "sunrise" und auch wenn Twilight "noch" dunkel zeigt.
ZitatDu könntest auch myTwilight:twilight_weather zum ausschalten nutzen, musst dann aber einen passenden Wert suchen, wo es dann hell genug ist, damit das Licht nicht mehr gebraucht wird
ja das könnte ich auch nutzen, da gibt es ja viele Wege ;)
Hi moonsorrox,
Zitatdas du_Modus_WegBeleuchtung ein dummy ist welches ich manuell umschalte, dass funktioniert in vielen meinen DOIFs und ja es steht auch auf Weihnachten, dass arbeitet ohne "?"
mit dem Fragezeichen wird nur im DOIF, welches irgendwie getriggert wurde, nachgesehen ob die Bedingung zutrifft. Ohne Fragezeichen wird dein DOIF auch getriggert, wenn sich der Dummy ändert. Überleg einfach, ob der Zustand des Dummies nur abgefragt werden soll, oder ob Du etwas direkt schalten willst, wenn Du den Dummy auf Weihnachten setzt. Damit wird DOIF nicht getriggert, wenn Du es nicht erwartest.
ZitatZitat
Zeitfenster: [06:00-08:00|8] triggert 2mal
da bin ich mir nicht sicher, denn es würde dann eine Zeit von 8Uhr irgendwo erscheinen und das tut es nicht.
Es sollte in einem Bereich von 06:00 - 08:00 Uhr eingeschaltet werden, dass denke ich ist der Fehler da er immer wieder einschaltet.
Doch, das DOIF triggert 2 mal, und nur 2 mal!!, nämlich um 6 und um 8. Um 6 stellt es fest, dass [06:00-08:00] wahr ist, d.h. wenn die anderen Bedingungen auch wahr sind wird dieser cmd geschaltet. Um 8 stellt es fest, dass [06:00-08:00] nicht wahr ist, also kann es nicht den entsprechenden cmd schalten.
Es sieht zwar so aus, als würde hier etwas ein und ausgeschaltet, aber das ist nur der Fall, wenn es ein DOELSE gibt. Siehe Damians viele Beispiele in der commandref. Meiner Meinung nach gibt es nur zwei Anwendungen, wo ein Zeitfenster Sinn macht:
1.
DOIF ([06:00-08:00])
(mach irgendwas an)
DOELSE
(mach es wieder aus)
Um 6 wird cmd1 wahr und die erste Ausführungszeile wird genommen, um 8 wird das DOIF false/unwahr, dann wird DOELSE ausgeführt.
2. es soll etwas innerhalb eines bestimmten Zeitraumes gemacht werden, dann brauchst Du einen Trigger/Event, der das DOIF triggert, und dann wird noch der Zeitraum mittels [?06:00-08:00] geprüft. Ein DOIF wird dann nur innerhalb des Zeitraumes wahr und löst etwas aus, die angegebenen Zeiten lösen aber nichts aus.
Gruß
Sany
Zitat von: Sany am 01 Dezember 2015, 18:49:43
Hi moonsorrox,
mit dem Fragezeichen wird nur im DOIF, welches irgendwie getriggert wurde, nachgesehen ob die Bedingung zutrifft. Ohne Fragezeichen wird dein DOIF auch getriggert, wenn sich der Dummy ändert. Überleg einfach, ob der Zustand des Dummies nur abgefragt werden soll, oder ob Du etwas direkt schalten willst, wenn Du den Dummy auf Weihnachten setzt. Damit wird DOIF nicht getriggert, wenn Du es nicht erwartest.
Ok das leuchtet mir ein...!
gehört hier nicht her: OT
Dazu folgendes und deine Erklärung ist toll, war mir noch nicht bewusst.
Ich setze dies mit den dummys in einigen DOIFs ein und bei "fast" allen funktioniert das super, aber bei einem wunderte ich mich immer, da sind die Rollläden beim umschalten wenn sie unten waren immer hoch gefahren... Das werde ich ändern...! ;)
Den Rest schaue ich mir an und werde versuchen das in den Griff zu bekommen, wie oben schon beschrieben. :D
Rückmeldung zum Thema:
Funktioniert jetzt wie es soll...! ;)
Code aus dem DEF:
([?du_Modus_WegBeleuchtung] eq "Weihnachten" and ([06:00|8] and [?myTwilight:twilight_weather] < 9)) (set Dachlicht_03 on) DOELSEIF ([?du_Modus_WegBeleuchtung] eq "Weihnachten" and [{sunrise_abs(0,"06:00","08:00")}]) (set Dachlicht_03 off)