Zeitsteuerung

Zeitgesteuerte Schaltungen, Zeitsteuerungen & Intervallschaltungen mit JavaScript in ioBroker

In einem vergangenen Beitrag hast Du bereits die Ereignissteuerungen kennengelernt. Hier geht es nun um die zeitgesteuerten Ereignisse in JavaScript. Zeitgesteuerte Ereignisse sind die, die nicht von einem Gerät, sondern von einem Zeitpunkt oder Zeitintervall ausgelöst werden.

Zeitgesteuerte Schaltung

Damit nun auch, wie eingangs erwähnt, der Zeitpunkt der Auslöser ist kann man natürlich eine Zeitsteuerung in HomeMatic nutzen. Was aber, wenn das Gerät nicht zu HomeMatic gehört oder vielleicht keine eigene Zeitsteuerung hat? Hier lässt sich mit wenig Aufwand eine Zeitsteuerung in JavaScript realisieren.

schedule({hour: 20, minute: 00}, TV_taeglich_an );
  
 function TV_taeglich_an() {
   setState("hm-rpc.2.00085A499BF6D2.4.STATE", true);
 }

Über den Parameter schedule wurde nun die Zeitsteuerung für hour und minute aktiviert. Hier wird zeitgesteuert das TV täglich um 20 Uhr eingeschaltet.

Zeitgesteuerte Schaltung nur an einem bestimmten Tag

Möchte man nun, dass das Skript nur an einem bestimmten Tag ausgeführt wird, so bedient man sich dem Parameter dayOfWeek. Dieser erwartet eine oder mehrere Zahlen.

schedule({hour: 20, minute: 00, dayOfWeek: 0}, TV_nur_Sonntag_an );
  
 function TV_nur_Sonntag_an() {
   setState("hm-rpc.2.00085A499BF6D2.4.STATE", true);
 }

In der Programmierung fangen die Zahlen oder Indizes mit 0 an – somit ist auch hier die erste Zahl eine 0 – aber ein Sonntag.

ZahlWochentag
0Sonntag
1Montag
2Dienstag
3Mittwoch
4Donnerstag
5Freitag
6Samstag
Belegung der Wochentage

Zeitgesteuerte Schaltung an bestimmten Tagen

Mit diesem leicht modifizierten Skript, lässt sich die Schaltung auf die Tage 1-5 (Montag bis Freitag) eingrenzen. Dazu wird jeder Tag durch Komma getrennt in eckige Klammern eingegeben.

schedule({hour: 20, minute: 00, dayOfWeek: [1,2,3,4,5]}, TV_nur_Mo_Fr_an );
  
 function TV_nur_Mo_Fr_an() {
   setState("hm-rpc.2.00085A499BF6D2.4.STATE", true);
 }

Intervallschaltungen

Minütliche Intervallschaltungen

In diesem Skript lassen wir ein Skript jede Minute ausführen. Dazu benutzen wir den Parameter second und geben ihm den Wert 00.

schedule({second: [00]}, Jede_Minute );
  
 function Jede_Minute() {
   log("Skript wird jede Minute ausgeführt!");
 }

Zeitsteuerung alle 30 Minuten

Hier bedienen wir uns des Parameters minute und geben ihm die Werte 00 und 30. Dies wäre dann jede halbe Stunde. 15:00 und 15:30.

schedule({minute: [00,30]}, Alle_30_Minuten );
  
 function Alle_30_Minuten() {
   log("Skript wird alle 30 Minuten ausgeführt!");
 }

Zeisteuerung jede Stunde

Um ein Skript jede Stunde ausführen zu lassen, kann man dies auch wieder über den minute Parameter einrichten. Man gibt ihm den Wert 00.

schedule({minute: [00]}, Jede_Stunde );
  
 function Jede_Stunde() {
   log("Skript wird jede Stunde ausgeführt!");
 }

Schaltung mit Sonnenaufgang und -untergang

Normale Schaltung

Es lassen sich mit JavaScript auch Schaltungen zu astronomischen Ereignissen ausführen. Diese Schaltung schaltet täglich das TV zum astronomischen Sonnenaufgang ein.

schedule({astro: "sunrise"}, TV_bei_Sonnenaufgang_ein );
  
 function TV_bei_Sonnenaufgang_ein() {
   setState("hm-rpc.2.00085A499BF6D2.4.STATE", true);
 }

… und dieses schaltet das TV zum astronomischen Sonnenuntergang wieder aus.

schedule({astro: "sunset"}, TV_bei_Sonnenuntergang_aus );
  
 function TV_bei_Sonnenuntergang_aus() {
   setState("hm-rpc.2.00085A499BF6D2.4.STATE", false);
 }

Für astro stehen folgende Werte zur Verfügung:

WertBeschreibung
sunriseSonnenaufgang (Oberkante der Sonne erscheint am Horizont)
sunriseEndSonnenaufgang endet (unterer Rand der Sonne berührt den Horizont)
goldenHourEndDie goldene Morgenstunde (weiches Licht, beste Zeit für Fotografie) endet
solarNoonSonnenmittag (Sonne steht am höchsten)
goldenHourDie goldene Abendstunde beginnt
sunsetStartSonnenuntergang beginnt (unterer Sonnenrand berührt den Horizont)
sunsetSonnenuntergang (Sonne verschwindet unter dem Horizont, abendliche zivile Dämmerung beginnt)
duskAbenddämmerung (abendliche nautische Dämmerung beginnt)
nauticalDusknautische Dämmerung (abendliche astronomische Dämmerung beginnt)
nightNacht beginnt (dunkel genug für astronomische Beobachtungen)
nightEndDie Nacht endet (die astronomische Dämmerung am Morgen beginnt)
nauticalDawnnautische Morgendämmerung (morgendliche nautische Dämmerung beginnt)
dawnMorgendämmerung (die nautische Dämmerung am Morgen endet, die zivile Dämmerung am Morgen beginnt)
nadirdunkelster Moment der Nacht, Sonne steht am niedrigsten
Werte der Variable astro

Schaltung mit Verzögerung/vorzeitigem Eintritt bei Sonnenaufgang und -untergang

Wenn der genaue Zeitpunkt für Sonnenaufgang oder -untergang zu früh oder zu spät eintritt, so lässt sich mit dieser Modifikation eine Verzögerung oder ein vorzeitiger Eintritt der Ausführung einrichten.

Dieses Skript schaltet das TV 10 Minuten nach dem Sonnenaufgang ein.

schedule({astro: "sunrise", shift: 10}, TV_bei_Sonnenaufgang_ein );
  
 function TV_bei_Sonnenaufgang_ein() {
   setState("hm-rpc.2.00085A499BF6D2.4.STATE", true);
 }

… und dieses schaltet das TV 10 Minuten vor dem Sonnenuntergang aus.

schedule({astro: "sunset", shift: -10}, TV_bei_Sonnenaufgang_ein );
  
 function TV_bei_Sonnenaufgang_ein() {
   setState("hm-rpc.2.00085A499BF6D2.4.STATE", false);
 }

Schaltung mit Verzögerung an einem bestimmten Tag

Schaltungen mit der Astrofunktion lassen sich auch nur an bestimmten Wochentagen ausführen. Hier wird das Licht 10 Minuten nach Sonnenaufgang an einem Samstag eingeschaltet.

schedule({astro: "sunrise", shift: 10, dayOfWeek:6}, TV_bei_Sonnenaufgang_ein_nur_Samstag );
  
 function TV_bei_Sonnenaufgang_ein_nur_Samstag() {
   setState("hm-rpc.2.00085A499BF6D2.4.STATE", true);
 }

Schaltung mit Verzögerung an bestimmten Tagen

Schaltungen mit der Astrofunktion lassen sich auch nur an mehreren Wochentagen ausführen. Hier wird das Licht an Samstag und Sonntag 10 Minuten nach dem Sonnenaufgang eingeschaltet.

schedule({astro: "sunrise", shift: 10, dayOfWeek:[0,6]}, TV_bei_Sonnenaufgang_ein_nur_Wochenende );
  
 function TV_bei_Sonnenaufgang_ein_nur_Wochenende() {
   setState("hm-rpc.2.00085A499BF6D2.4.STATE", true);
 }

Ein Gedanke zu „Zeitgesteuerte Schaltungen, Zeitsteuerungen & Intervallschaltungen mit JavaScript in ioBroker

  1. Pingback: ioBroker Ereignisse mit JavaScript überwachen | Kreyenborg.koeln

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.