NEWS
Javascript Wecker (1 Std vor Beginn eines Kalendereintrags)
-
Hallo zusammen,
mit hilfe des ical adapters habe ich es geschafft ein javascript zu basteln, welches zu beginn eines Events im Google Calendar meine Hue Lampen einschaltet.
on({id: "ical.0.events.F-Schicht", change: 'true'}, function (obj) { setState('hue.0.Philips_hue.Schlafzimmer.on', true); } );
Das ist so schön und gut aber für meine persönlichen Bedürfnisse nicht ganz zu gebrauchen.
Ich habe meinen Schichtplan im Googlecalendar hinterlegt und möchte nun aber in einer bestimmten Zeit vor Schichtgebinn die Lampen im Schlafzimmer aktivieren.
Doch leider fehlen mir Javascriptkenntnisse um mein Vorhaben in Code umzusetzen.
Ein Kollege hat mir folgenden Ansatz gegeben um schonmal die Event startzeit auszulesen und in einer Variablen zu speichern:
var kalender = getState("ical.0.data.html").val; var suche_heute = kalender.indexOf('Heute'); var wecker = kalender.slice((suche_heute + 6), (suche_heute + 11));
Damit hätte ich dann z.B. "06:00" als string in der Variablen.
Wie bekomme ich es nun hin dass um beispielsweise 05:10 Uhr das Script ausgeführt wird?
Vorab: Vielen Dank für eure Hilfe!
-
Habe es hinbekommen (über Cronjob x Minuten vor dem Event). Falls noch jemand ähnliches vor hat, hier der Code.
! schedule("15 5 * * *", function () { // Weckzeit hier einstellen (Bsp: 05:15) - Dann wird der Cronjob gestartet
! var kalender = getState("ical.0.data.html").val;
! var suche_heute = kalender.indexOf('Heute');
! var wecker = kalender.slice((suche_heute + 6), (suche_heute + 11));
! if (wecker == "06:00")
! {
! setState('hue.0.Philips_hue.Schlafzimmer.on', true);
! }
! log(kalender);
! log(suche_heute);
! log(wecker);
! });Im Codebeispiel wird davon ausgegangen dass das Event (Frühschicht) als einziges Event für den heutigen Tag im Kalender mit Startzeit 06:00 Uhr eingetragen ist und "Zeit als Wort anzeigen" in den Adaptereinstellungen aktiviert ist.
Der Wecker soll um 05:15 Uhr das Licht im Schlafzimmer anschalten.
Dazu wird um 05:15 Uhr der Cronjob gestartet und geprüft ob ein Event mit Beginn 6 Uhr existiert, wenn ja dann geht das Licht an. Wenn nicht, dann passiert nichts.
Für weitere Wecker einfach ein weiteres Script mit anderen Zeiten erstellen.