
Ziel: Es soll möglich sein über eine Systemvariable bsp. immer vormittags ein Gerät zu schalten.
- Als erstes lege ich in der Homematic WebUI eine neue Systemvariable an. In meinem Fall heisst die Variable "Tageszeit" und hat eine Werteliste.
- Die Werte kann man von hier kopieren:
- Nacht; Morgen; Vormittag; Mittag; Nachmittag; Abend;

- Nun erstelle ich ein neues Programm und nenne es "System - Tageszeit". Diese Programm prüft alle 5 Minuten die Zeit und schaltet dann die Systemvariable. Als Wenn: Bedingung füge ich das Zeitmodul ein.

- Im Zeitmodul muss dann die Zeitspanne auf Ganztägig und das Zeitintervall auf alle 5 Minuten stellen. Das Ende muss nicht definiert werden.

- Als Aktivität wählt man dann Script aus und kopiert die u.g. Zeilen hinein. Fertig!
real c_zeit = (0.01 * system.Date("%M").ToInteger()) + system.Date("%H").ToInteger();real c_beginn = (0.01 * system.SunriseTime("%M").ToInteger()) + system.SunriseTime("%H").ToInteger();real c_ende = (0.01 * system.SunsetTime("%M").ToInteger()) + system.SunsetTime("%H").ToInteger();real c_mittag = 0.5 * (c_beginn + c_ende);integer v_tageszeit = 0; ! Nachtif ((c_zeit < c_ende + 2) || (c_zeit < 22.00)) { v_tageszeit = 7; ! Abend}if (c_zeit < c_ende) { v_tageszeit = 5; ! Nachmittag}if (c_zeit < c_mittag + 1) { v_tageszeit = 4; ! Mittag}if (c_zeit < c_mittag - 1) { v_tageszeit = 3; ! Vormittag}if (c_zeit < c_beginn) { v_tageszeit = 2; ! Morgen}if ((c_zeit < c_beginn - 2) && (c_zeit < 04.00)) { v_tageszeit = 0; ! Nacht}object s_tageszeit = dom.GetObject("Tageszeit");if (s_tageszeit.Value() != v_tageszeit) { s_tageszeit.State(v_tageszeit);}
Dann: Schalte die Variable Tageszeit mit Astrofunktion