Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. JavaScript
  5. In iCal einen Termin mit dem Text "Ferien" oder "Frei" suchen und Variable schalten

NEWS

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    10
    1
    160

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    24
    1
    1.4k

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    9.4k

In iCal einen Termin mit dem Text "Ferien" oder "Frei" suchen und Variable schalten

Geplant Angeheftet Gesperrt Verschoben JavaScript
8 Beiträge 4 Kommentatoren 900 Aufrufe 4 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • hananH Offline
    hananH Offline
    hanan
    schrieb am zuletzt editiert von
    #1

    Hallo zusammen
    Ich habe mein Kalender mit dem ical-Adapter erfolgreich eingebaut.
    Nun möchte ich in diesem Kalender die heutigen Termine mit Ferien und Frei auslesen und eine Systemvariable schalten (Heute ein Termin mit Ferien = true, heute ein Termin mit Frei = true, heute kein Termin mit Ferien = false, heute kein Termin mit Frei = false).Die Servicevariable hat die Nummer 25018.

    Konnte mir hier bitte jemand unter die Arme greifen?

    Habe das folgende Script gefunden welches so alle 30 Minuten ablaufen sollte...

    ! ```
    `/* Kalenderevent in der Zukunft suchen
    sucht im iCal Adapter nach events, die noch kommen
    http://forum.iobroker.net/viewtopic.php?f=21&t=3761&sid=4319378b32a0ce096bbbbfc0ebd859ce#p34975
    ! 20.09.2016 erstellt von pix
    02.02.2017 geändert von bahnuhr
    */
    ! // Variablen
    var suchstring = 'Ferien'; // Suchbegriff
    var stichtag = 0; // 0=heute; 1=morgen; 2=übermorgen; 3=in 3 Tagen
    var idTabelle = 'ical.0.data.table'; // Instanz eintragen
    var logging = false; // debug Log ein/ausschalten
    var tage = ['Heute','Morgen','Übermorgen','In 3 Tagen']; // dafür relative Datumsangabe in iCal-Adapter einschalten und ggf. übersetzen
    ! function datum(x) {
    var jetzt = new Date();
    if (logging) log('Jetztzeit: ' + jetzt);
    var zeit = new Date (jetzt.getFullYear(), jetzt.getMonth(), jetzt.getDate() + x); // z.B. in drei Tagen um Mitternacht
    if (logging) log('Zielzeit: ' + zeit);
    var jahr = zeit.getFullYear();
    var monat = (zeit.getMonth()+1 < 10) ? '0' + (zeit.getMonth()+1) : zeit.getMonth()+1;
    var tag = (zeit.getDate() < 10) ? '0' + zeit.getDate() : zeit.getDate();
    return (tag + '.' + monat + '.' + jahr);
    }
    ! function pruefeKalender() {
    var Auto_M = getState('javascript.0.Status.System.Auto_Müllabfuhr').val;
    var kalender = getState(idTabelle).val;
    var tag = datum(parseInt(stichtag,10));
    var termin = [];
    if (logging) log(tag);
    try{
    var ereignisse = JSON.stringify(kalender, null, 2); // Ausgabe als String
    if (logging) log(ereignisse);
    for(var i = 0; i <kalender.length; i++)/{/alle/events/durchgehen/if/(/(kalender[i].date.indexof(tag)/!="-1)" ||/(kalender[i].date.indexof(tage[stichtag])/)/string/datum/oder/relatives/(nicht/nicht)/gefunden,/also/gefunden/var/term="kalender[i].event;" (term.indexof(suchstring)/termin.push(kalender[i].event);/log/('treffer:/'/+/termin);/}/termin.sort();/(termin.length="==" 0)/setstate('javascript.0.status.sonstige.müll_morgen',/'kein/eintrag');="">= 1 && (Auto_M === true || Auto_M === 1)) {
    setState('javascript.0.Status.Sonstige.Müll_morgen', termin.join(', '));
    }
    } catch (fehler_try) {
    log('Fehler beim Kalenderevents einlesen ' + fehler_try, 'error');
    }
    }
    ! // bei Aktualisierung
    on ({id: idTabelle, change: 'any'}, function(data) {
    pruefeKalender();
    });
    ! on({id: "javascript.0.Status.System.Auto_Müllabfuhr", change: "ne"}, function() { // Automatik geändert auf aus -> Folge: Anzeige verschwindet
    var Auto_M = getState('javascript.0.Status.System.Auto_Müllabfuhr').val;
    if (Auto_M === false || Auto_M === 0) {
    setState('javascript.0.Status.Sonstige.Müll_morgen', 'kein Eintrag');
    }
    });
    ! // um 16:00 Uhr
    schedule("0 16 * * *", pruefeKalender);
    ! schedule("0 20 * * *", function () {
    var Auto_M = getState('javascript.0.Status.System.Auto_Müllabfuhr').val;
    var Muell = getState('javascript.0.Status.Sonstige.Müll_morgen').val;
    

    Liebe Grüsse aus der Schweiz
    Andy

    ioBroker auf NUC unter Proxmox, Raspberrymatic-CCU auf NUC unter Proxmox mit RPI-RF-MOD Funkmodul und Omnidiraktional Antenne

    T 1 Antwort Letzte Antwort
    0
    • liv-in-skyL Offline
      liv-in-skyL Offline
      liv-in-sky
      schrieb am zuletzt editiert von
      #2

      ich hab hier ein müllscript - dazu gibt es auch irgndwo einen thread

      das läuft bei mir sehr stabil - am anfang des scripts kann man definieren, was man haben will - ist vom user pix

      müllscript.script

      nach einem gelösten Thread wäre es sinnvoll dies in der Überschrift des ersten Posts einzutragen [gelöst]-... Bitte benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat. Forum-Tools: PicPick https://picpick.app/en/download/ und ScreenToGif https://www.screentogif.com/downloads.html

      1 Antwort Letzte Antwort
      0
      • hananH Offline
        hananH Offline
        hanan
        schrieb am zuletzt editiert von
        #3

        OK, Danke.
        Versuche ich mal...

        Liebe Grüsse aus der Schweiz
        Andy

        ioBroker auf NUC unter Proxmox, Raspberrymatic-CCU auf NUC unter Proxmox mit RPI-RF-MOD Funkmodul und Omnidiraktional Antenne

        1 Antwort Letzte Antwort
        0
        • liv-in-skyL Offline
          liv-in-skyL Offline
          liv-in-sky
          schrieb am zuletzt editiert von
          #4

          scheint eh ein clon von deinem script zu sein - bei meinem ist das schedule momentan auf : alle 8 stunden überprüfen eingestellt - zum test kannst du ja mal alle paar minuten einstellen (*/2 * * * *)

          nach einem gelösten Thread wäre es sinnvoll dies in der Überschrift des ersten Posts einzutragen [gelöst]-... Bitte benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat. Forum-Tools: PicPick https://picpick.app/en/download/ und ScreenToGif https://www.screentogif.com/downloads.html

          1 Antwort Letzte Antwort
          0
          • hananH hanan

            Hallo zusammen
            Ich habe mein Kalender mit dem ical-Adapter erfolgreich eingebaut.
            Nun möchte ich in diesem Kalender die heutigen Termine mit Ferien und Frei auslesen und eine Systemvariable schalten (Heute ein Termin mit Ferien = true, heute ein Termin mit Frei = true, heute kein Termin mit Ferien = false, heute kein Termin mit Frei = false).Die Servicevariable hat die Nummer 25018.

            Konnte mir hier bitte jemand unter die Arme greifen?

            Habe das folgende Script gefunden welches so alle 30 Minuten ablaufen sollte...

            ! ```
            `/* Kalenderevent in der Zukunft suchen
            sucht im iCal Adapter nach events, die noch kommen
            http://forum.iobroker.net/viewtopic.php?f=21&t=3761&sid=4319378b32a0ce096bbbbfc0ebd859ce#p34975
            ! 20.09.2016 erstellt von pix
            02.02.2017 geändert von bahnuhr
            */
            ! // Variablen
            var suchstring = 'Ferien'; // Suchbegriff
            var stichtag = 0; // 0=heute; 1=morgen; 2=übermorgen; 3=in 3 Tagen
            var idTabelle = 'ical.0.data.table'; // Instanz eintragen
            var logging = false; // debug Log ein/ausschalten
            var tage = ['Heute','Morgen','Übermorgen','In 3 Tagen']; // dafür relative Datumsangabe in iCal-Adapter einschalten und ggf. übersetzen
            ! function datum(x) {
            var jetzt = new Date();
            if (logging) log('Jetztzeit: ' + jetzt);
            var zeit = new Date (jetzt.getFullYear(), jetzt.getMonth(), jetzt.getDate() + x); // z.B. in drei Tagen um Mitternacht
            if (logging) log('Zielzeit: ' + zeit);
            var jahr = zeit.getFullYear();
            var monat = (zeit.getMonth()+1 < 10) ? '0' + (zeit.getMonth()+1) : zeit.getMonth()+1;
            var tag = (zeit.getDate() < 10) ? '0' + zeit.getDate() : zeit.getDate();
            return (tag + '.' + monat + '.' + jahr);
            }
            ! function pruefeKalender() {
            var Auto_M = getState('javascript.0.Status.System.Auto_Müllabfuhr').val;
            var kalender = getState(idTabelle).val;
            var tag = datum(parseInt(stichtag,10));
            var termin = [];
            if (logging) log(tag);
            try{
            var ereignisse = JSON.stringify(kalender, null, 2); // Ausgabe als String
            if (logging) log(ereignisse);
            for(var i = 0; i <kalender.length; i++)/{/alle/events/durchgehen/if/(/(kalender[i].date.indexof(tag)/!="-1)" ||/(kalender[i].date.indexof(tage[stichtag])/)/string/datum/oder/relatives/(nicht/nicht)/gefunden,/also/gefunden/var/term="kalender[i].event;" (term.indexof(suchstring)/termin.push(kalender[i].event);/log/('treffer:/'/+/termin);/}/termin.sort();/(termin.length="==" 0)/setstate('javascript.0.status.sonstige.müll_morgen',/'kein/eintrag');="">= 1 && (Auto_M === true || Auto_M === 1)) {
            setState('javascript.0.Status.Sonstige.Müll_morgen', termin.join(', '));
            }
            } catch (fehler_try) {
            log('Fehler beim Kalenderevents einlesen ' + fehler_try, 'error');
            }
            }
            ! // bei Aktualisierung
            on ({id: idTabelle, change: 'any'}, function(data) {
            pruefeKalender();
            });
            ! on({id: "javascript.0.Status.System.Auto_Müllabfuhr", change: "ne"}, function() { // Automatik geändert auf aus -> Folge: Anzeige verschwindet
            var Auto_M = getState('javascript.0.Status.System.Auto_Müllabfuhr').val;
            if (Auto_M === false || Auto_M === 0) {
            setState('javascript.0.Status.Sonstige.Müll_morgen', 'kein Eintrag');
            }
            });
            ! // um 16:00 Uhr
            schedule("0 16 * * *", pruefeKalender);
            ! schedule("0 20 * * *", function () {
            var Auto_M = getState('javascript.0.Status.System.Auto_Müllabfuhr').val;
            var Muell = getState('javascript.0.Status.Sonstige.Müll_morgen').val;
            
            T Offline
            T Offline
            tempestas
            schrieb am zuletzt editiert von
            #5

            @hanan

            Das kannst du auch direkt als Event im ical nutzen. Mache ich auch.

            <size="85">ioBroker | 21 Adapter | Ubuntu Server | intel NUC | Homematic CCU2 | Hue | Osram Lightify| Sonos | 2x Instar Cam | Samsung Tab A 2016 im Holzrahmen| 3x Echo dot | 1x Echo | Neato Botvac D5</size>

            liv-in-skyL 1 Antwort Letzte Antwort
            0
            • T tempestas

              @hanan

              Das kannst du auch direkt als Event im ical nutzen. Mache ich auch.

              liv-in-skyL Offline
              liv-in-skyL Offline
              liv-in-sky
              schrieb am zuletzt editiert von
              #6

              @tempestas
              hab das script und den adapter vor über einem jahr eingebunden und seit dem nichts mehr geändert - super tipp - danke - wusste gar nicht, dass es diese events gibt

              nach einem gelösten Thread wäre es sinnvoll dies in der Überschrift des ersten Posts einzutragen [gelöst]-... Bitte benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat. Forum-Tools: PicPick https://picpick.app/en/download/ und ScreenToGif https://www.screentogif.com/downloads.html

              1 Antwort Letzte Antwort
              0
              • hananH Offline
                hananH Offline
                hanan
                schrieb am zuletzt editiert von hanan
                #7

                Hallo
                Habe das mit den Events versucht. Da ich zwei Kalender (Kalender und Abfallkalender) eingebunden habe und auf diesen auch Events suche, geht es irgend wie nicht.

                Suche auf Outlook "Frei" und "Ferien", wird dieses ab und zu gefunden und auf true gestellt.
                Suche ich auf Abfall "Hauskehricht / Kleinsperrgut brennbar", wird dieses ab und zu auf true gestellt aber dafür das erste wieder auf false.

                Es werden auch nicht alle Events im Vis angezeigt, einmal die aus dem Outlook-Kalender und einmal die aus Abfall-Kalender.

                ical-Kalender
                18739120-5063-4a13-87be-f93f6fbcac8c-image.png

                Ereignisse
                a8b0fc6a-f56e-4a1f-83a9-88e0dc47f91f-image.png

                Hier der Debug-Log:
                ical-Log.txt

                Hat mir jemand bitte einen Tipp.

                Liebe Grüsse aus der Schweiz
                Andy

                ioBroker auf NUC unter Proxmox, Raspberrymatic-CCU auf NUC unter Proxmox mit RPI-RF-MOD Funkmodul und Omnidiraktional Antenne

                1 Antwort Letzte Antwort
                0
                • B Offline
                  B Offline
                  Brati
                  schrieb am zuletzt editiert von Brati
                  #8

                  Ich mache das auch ganz simpel über die Events:

                  on({id: "ical.0.events.0.now.ferien", val: true}, function() {
                        setState("hm-rega.0.7475", false);
                        sendTo("pushover.0", {
                                  message:  'beginnen und Schule ist aus', // mandatory - your text message
                                  title:    'Ferien', // optional  - your message's title, otherwise your app's name is used
                                  
                                  priority: -1,
                          }); 
                  });
                  
                  on({id: "ical.0.events.0.now.ferien", val: false}, function() {
                        setState("hm-rega.0.7475", true);
                        sendTo("pushover.0", {
                                  message:  'enden und Schule geht weiter', // mandatory - your text message
                                  title:    'Ferien', // optional  - your message's title, otherwise your app's name is used
                                  
                                  priority: -1,
                          }); 
                  });
                  

                  Funktioniert absolut zuverlässig. "hm-rega.0.7475" ist dabei die Variable "Schulzeit".

                  Grüße

                  Brati

                  CCU2 - 46 Geräte, ioBroker auf Intel NUC (DN2820FYKH) mit Tab als Frontend, Projekt Gartenhaus mit HM

                  1 Antwort Letzte Antwort
                  0
                  Antworten
                  • In einem neuen Thema antworten
                  Anmelden zum Antworten
                  • Älteste zuerst
                  • Neuste zuerst
                  • Meiste Stimmen


                  Support us

                  ioBroker
                  Community Adapters
                  Donate

                  371

                  Online

                  32.5k

                  Benutzer

                  81.7k

                  Themen

                  1.3m

                  Beiträge
                  Community
                  Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                  ioBroker Community 2014-2025
                  logo
                  • Anmelden

                  • Du hast noch kein Konto? Registrieren

                  • Anmelden oder registrieren, um zu suchen
                  • Erster Beitrag
                    Letzter Beitrag
                  0
                  • Home
                  • Aktuell
                  • Tags
                  • Ungelesen 0
                  • Kategorien
                  • Unreplied
                  • Beliebt
                  • GitHub
                  • Docu
                  • Hilfe