FHEM Forum

FHEM => Automatisierung => Thema gestartet von: ReneR1986 am 11 März 2022, 20:47:35

Titel: Zeitlich rotierende LightScenes
Beitrag von: ReneR1986 am 11 März 2022, 20:47:35
Hallo zusammen,

ich würde gerne verschiedene LightScenes rotierend z.B. alle 30 Minuten wechseln.
Ich bin nicht ganz sicher, ob das hier ein Lösungsansatz sein könnte.
Ich denke sleep würde hier wahrscheinlich das ganze System blockieren.
Des Weiteren fehlt mir noch eine Bedingung, um das ganze dann auch wieder zu beenden...

at *19:00:00 {
fhem("set Lichtszene_Wohnzimmer scene Lichtszene1 ");
while (1) {
fhem("set Lichtszene_Wohnzimmer scene Lichtszene2");
sleep 1800;
fhem("set Lichtszene_Wohnzimmer scene Lichtszene3");
sleep 1800;
fhem("set Lichtszene_Wohnzimmer scene Lichtszene4");
sleep 1800;
}
}


Gibt es noch eleganterer Lösungen?
Titel: Antw:Zeitlich rotierende LightScenes
Beitrag von: MadMax-FHEM am 11 März 2022, 21:01:49
Wenn du das sleep IN den fhem Befehl steckst und somit ein fhem sleep nutzt blockiert nichts...


fhem("set Lichtszene_Wohnzimmer scene Lichtszene2;sleep 1800;set Lichtszene_Wohnzimmer scene Lichtszene3;sleep 1800;set Lichtszene_Wohnzimmer scene Lichtszene4");


Ein sleep mit Name/ID kannst du canceln...

Du kannst auch eine sub bauen, die sich "global" den Laufstand merkt und z.B. per at zyklisch aufrufen...

Bzgl. Abbruch kannst du ja etwas abfragen, z.B. Zustand o.ä.

Gruß, Joachim
Titel: Antw:Zeitlich rotierende LightScenes
Beitrag von: justme1968 am 11 März 2022, 21:13:21
was spricht gegen nextScene ?

ein einfaches at das alle 30 sekunden weiter schaltet und mit disable/disableForIntervalls deaktiviert wird. wenn es zu einer bestimmten zeit mit einer bestimmten szene anfangen soll ein zusätzliches at für den anfang.

ps: nicht nur das sleep auf perl ebene ist verboten, das while ist noch viel schlimmer weil du damit nicht wieder auf die fhem ebene zurück kommst.
Titel: Antw:Zeitlich rotierende LightScenes
Beitrag von: ReneR1986 am 11 März 2022, 23:12:36
at in Verbindung mit nextScene klappt super.

Mit traversalOrder konnte ich sogar die Reihenfolge der Scenen festlegen und so Scenen auch ausschließen z.B. für das ausschalten der Lampen.
In der ausschalten Scene habe ich dann noch das at auf inactive gesetzt. So kann ich die Lichter auch manuell ausschalten ohne das das at weiterläuft und wieder alles anschaltet.