Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. JavaScript
    5. In iCal einen Termin mit dem Text "Ferien" oder "Frei" suchen und Variable schalten

    NEWS

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

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

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

      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 1 Reply Last reply Reply Quote 0
      • liv-in-sky
        liv-in-sky last edited by

        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

        1 Reply Last reply Reply Quote 0
        • hanan
          hanan last edited by

          OK, Danke.
          Versuche ich mal...

          1 Reply Last reply Reply Quote 0
          • liv-in-sky
            liv-in-sky last edited by

            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 * * * *)

            1 Reply Last reply Reply Quote 0
            • T
              tempestas @hanan last edited by

              @hanan

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

              liv-in-sky 1 Reply Last reply Reply Quote 0
              • liv-in-sky
                liv-in-sky @tempestas last edited by

                @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

                1 Reply Last reply Reply Quote 0
                • hanan
                  hanan last edited by hanan

                  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.

                  1 Reply Last reply Reply Quote 0
                  • B
                    Brati last edited by Brati

                    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

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

                    Support us

                    ioBroker
                    Community Adapters
                    Donate

                    590
                    Online

                    31.7k
                    Users

                    79.7k
                    Topics

                    1.3m
                    Posts

                    4
                    8
                    777
                    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