Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Javascript Wecker (1 Std vor Beginn eines Kalendereintrags)

    NEWS

    • Wir empfehlen: Node.js 22.x

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker goes Matter ... Matter Adapter in Stable

    Javascript Wecker (1 Std vor Beginn eines Kalendereintrags)

    This topic has been deleted. Only users with topic management privileges can see it.
    • E
      eXTreMe last edited by

      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!

      1 Reply Last reply Reply Quote 0
      • E
        eXTreMe last edited by

        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.

        1 Reply Last reply Reply Quote 0
        • First post
          Last post

        Support us

        ioBroker
        Community Adapters
        Donate

        806
        Online

        32.0k
        Users

        80.5k
        Topics

        1.3m
        Posts

        1
        2
        981
        Loading More Posts
        • Oldest to Newest
        • Newest to Oldest
        • Most Votes
        Reply
        • Reply as topic
        Log in to reply
        Community
        Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
        The ioBroker Community 2014-2023
        logo