Zeitlich rotierende LightScenes

Begonnen von ReneR1986, 11 März 2022, 20:47:35

Vorheriges Thema - Nächstes Thema

ReneR1986

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?

MadMax-FHEM

#1
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
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

justme1968

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.
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

ReneR1986

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.