Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. JavaScript
    5. [Scriptbeispiel] Feiertage NRW

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    [Scriptbeispiel] Feiertage NRW

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

      Hier ein Script welches (für NRW) die Feiertage (mit Namen) für Heute und Morgen ermittelt und in die entsprechenden Variablen schreibt.

      Für andere Bundesländer muss noch eingegriffen werden. (einfach - aber Fleissarbeit)

      // ioBroker Feiertags-Script
      // 03.04.2015 Hermann Trecksler übernommen von ccu.io
      
      var state = "NW";
      
      // Erzeugen der Datenpunkte für ioBroker
      createState('FeiertagHeute', {type: 'boolean'});
      createState('FeiertagMorgen', {type: 'boolean'});
      createState('FeiertagHeuteName', {type: 'string'});
      createState('FeiertagmorgenName', {type: 'string'});
      createState('FeiertagNächsterDatum', {type: 'string'});
      createState('FeiertagnächsterName', {type: 'string'});
      
      var allHolidays = {"NW":{"20130329":"Karfreitag",
                               "20130331":"Ostersonntag",
      						 "20130401":"Ostermontag",
      						 "20130501":"1\. Mai",
      						 "20130509":"Christi Himmelfahrt",
      						 "20130519":"Pfingstsonntag",
      						 "20130520":"Pfingstmontag",
      						 "20130530":"Fronleichnam",
      						 "20131003":"Tag der deutschen Einheit",
      						 "20131101":"Allerheiligen",
      						 "20131225":"Erster Weihnachtsfeiertag",
      						 "20131226":"Zweiter Weihnachtsfeiertag",
      						 "20140101":"Neujahr",
      						 "20140418":"Karfreitag",
      						 "20140420":"Ostersonntag",
      						 "20140421":"Ostermontag",
      						 "20140501":"1\. Mai",
      						 "20140529":"Christi Himmelfahrt",
      						 "20140608":"Pfingstsonntag",
      						 "20140609":"Pfingstmontag",
      						 "20140619":"Fronleichnam",
      						 "20141003":"Tag der deutschen Einheit",
      						 "20141101":"Allerheiligen",
      						 "20141224":"hl. Abend",
      						 "20141225":"Erster Weihnachtsfeiertag",
      						 "20141226":"Zweiter Weihnachtsfeiertag",
      						 "20141231":"Sylvester",
      						 "20150101":"Neujahr",
      						 "20150403":"Karfreitag",
      						 "20150405":"Ostersonntag",
      						 "20150406":"Ostermontag",
      						 "20150501":"1\. Mai",
      						 "20150514":"Christi Himmelfahrt",
      						 "20150524":"Pfingstsonntag",
      						 "20150525":"Pfingstmontag",
      						 "20150604":"Fronleichnam",
      						 "20151003":"Tag der deutschen Einheit",
      						 "20151101":"Allerheiligen",
      						 "20151224":"hl. Abend",
      						 "20151225":"Erster Weihnachtsfeiertag",
      						 "20151226":"Zweiter Weihnachtsfeiertag",
      						 "20151231":"Sylvester",
      						 "20160101":"Neujahr",
      						 "20160325":"Karfreitag",
      						 "20160327":"Ostersonntag",
      						 "20160328":"Ostermontag",
      						 "20160501":"1\. Mai",
      						 "20160505":"Christi Himmelfahrt",
      						 "20160515":"Pfingstsonntag",
      						 "20160516":"Pfingstmontag",
      						 "20160526":"Fronleichnam",
      						 "20161003":"Tag der deutschen Einheit",
      						 "20161101":"Allerheiligen",
      						 "20161224":"hl. Abend",
      						 "20161225":"Erster Weihnachtsfeiertag",
      						 "20161226":"Zweiter Weihnachtsfeiertag",
      						 "20161231":"Sylvester",
      						 "20170101":"Neujahr",
      						 "20170414":"Karfreitag",
      						 "20170416":"Ostersonntag",
      						 "20170417":"Ostermontag",
      						 "20170501":"1\. Mai",
      						 "20170525":"Christi Himmelfahrt",
      						 "20170604":"Pfingstsonntag",
      						 "20170605":"Pfingstmontag",
      						 "20170615":"Fronleichnam",
      						 "20171003":"Tag der deutschen Einheit",
      						 "20171101":"Allerheiligen",
      						 "20171224":"hl. Abend",
      						 "20171225":"Erster Weihnachtsfeiertag",
      						 "20171226":"Zweiter Weihnachtsfeiertag",
      						 "20171231":"Sylvester",
      						 "20180101":"Neujahr",
      						 "20180330":"Karfreitag",
      						 "20180401":"Ostersonntag",
      						 "20180402":"Ostermontag",
      						 "20180501":"1\. Mai",
      						 "20180510":"Christi Himmelfahrt",
      						 "20180520":"Pfingstsonntag",
      						 "20180521":"Pfingstmontag",
      						 "20180531":"Fronleichnam",
      						 "20181003":"Tag der deutschen Einheit",
      						 "20181101":"Allerheiligen",
      						 "20181224":"hl. Abend",
      						 "20181225":"Erster Weihnachtsfeiertag",
      						 "20181226":"Zweiter Weihnachtsfeiertag",
      						 "20181231":"Sylvester",
      						 "20190101":"Neujahr",
      						 "20190419":"Karfreitag",
      						 "20190421":"Ostersonntag",
      						 "20190422":"Ostermontag",
      						 "20190501":"1\. Mai",
      						 "20190530":"Christi Himmelfahrt",
      						 "20190609":"Pfingstsonntag",
      						 "20190610":"Pfingstmontag",
      						 "20190620":"Fronleichnam",
      						 "20191003":"Tag der deutschen Einheit",
      						 "20191101":"Allerheiligen",
      						 "20191224":"hl. Abend",
      						 "20191225":"Erster Weihnachtsfeiertag",
      						 "20191226":"Zweiter Weihnachtsfeiertag",
      						 "20191231":"Sylvester"
      						 }}
      
      function checkHolidays() {
      
          var d0 = new Date();
          var d1 = new Date(d0.getTime() + 86400000);
          var d2 = new Date(d1.getTime() + 86400000);
      
          var ts0 = d0.getFullYear() + ("0" + (d0.getMonth() + 1)).slice(-2) + ("0" + d0.getDate()).slice(-2);
          var ts1 = d1.getFullYear() + ("0" + (d1.getMonth() + 1)).slice(-2) + ("0" + d1.getDate()).slice(-2);
          var ts2 = d2.getFullYear() + ("0" + (d2.getMonth() + 1)).slice(-2) + ("0" + d2.getDate()).slice(-2);
      
          var holiday0 = false;
          var holiday1 = false;
          var holiday2 = false;
      
          var holiday0name = "";
          var holiday1name = "";
          var holiday2name = "";
      
          var holidayNextDate = "";
          var holidayNextName = "";
      
          var holidays = allHolidays[state];
      
          if (holidays[ts0]) {
              holiday0 = true;
              holiday0name = holidays[ts0];
          }
      
          if (holidays[ts1]) {
              holiday1 = true;
              holiday1name = holidays[ts1];
          }
      
          if (holidays[ts2]) {
              holiday2 = true;
              holiday2name = holidays[ts2];
          }
      
          for (var ts in holidays) {
              if (ts > ts0) {
                  holidayNextDate = ts.substr(0,4)+"-"+ts.substr(4,2)+"-"+ts.substr(6,2);
                  holidayNextName = holidays[ts];
                  break;
              }
          }
          setState("FeiertagHeute", holiday0);
          setState("FeiertagHeuteName", holiday0name);
          setState("FeiertagMorgen", holiday1);
          setState("FeiertagmorgenName", holiday1name);
          setState("FeiertagNächsterDatum", holidayNextDate);
          setState("FeiertagnächsterName", holidayNextName);
      
      }
      
      // Einmal bei Scriptstart ausführen
      checkHolidays();
      
      // Täglich um 0 Uhr ausführen
      schedule("0 0 * * *", checkHolidays);
      
      

      144_img_20170428_083339.jpg

      1 Reply Last reply Reply Quote 0
      • P
        pix last edited by

        Hier die Variante für BAYERN.

        Habe das auch aus hobbyquakers CCU.IO Skript übernommen und die alten Feiertage und andere Bundesländer gelöscht.

        Im Vergleich zu htreckslers Variante oben werden die Objekte in einen Ordner Feiertage/ gelegt und mit einem deutschen Datumsformat gespeichert.

        ! ````
        /* System Feiertage
        ! Skript meldet Feiertage bis 2019
        // 3'2014 hobbyquaker
        // angepasst von Pix 2/2015 (Umrechnung deutsches Datum)
        // Liste der Abkürzungen siehe http://hobbyquaker.blogspot.de/2014/03/deutsche-feiertage-im-json-format.html
        OptIn Variablen werden angelegt
        ! erstellt: 03.05.2015 von Pix
        30.05.2015 Feiertag Variablen Unterkategorie erstellt
        /
        ! // Variablen erstellen
        createState('Feiertag.heute'/
        , {name: 'Feiertag heute'}/);
        createState('Feiertag.heute_Name'/
        , {name: 'Feiertag heute Name'}/);
        createState('Feiertag.morgen'/
        , {name: 'Feiertag morgen'}/);
        createState('Feiertag.morgen_Name'/
        , {name: 'Feiertag morgen Name'}/);
        createState('Feiertag.uebermorgen'/
        , {name: 'Feiertag übermorgen'}/);
        createState('Feiertag.uebermorgen_Name'/
        , {name: 'Feiertag übermorgen Name'}/);
        createState('Feiertag.naechster_Datum'/
        , {name: 'Feiertag nächster Datum'}/);
        createState('Feiertag.naechster_Name'/
        , {name: 'Feiertag nächster Name'}*/);
        ! var idFeiertag_heute = "javascript.0.Feiertag.heute"/Feiertag.heute/,
        idFeiertag_heute_Name = "javascript.0.Feiertag.heute_Name"/Feiertag.heute_Name/,
        idFeiertag_morgen = "javascript.0.Feiertag.morgen"/Feiertag.morgen/,
        idFeiertag_morgen_Name = "javascript.0.Feiertag.morgen_Name"/Feiertag.morgen_Name/,
        idFeiertag_uebermorgen = "javascript.0.Feiertag.uebermorgen"/Feiertag.uebermorgen/,
        idFeiertag_uebermorgen_Name = "javascript.0.Feiertag.uebermorgen_Name"/Feiertag.uebermorgen_Name/,
        idFeiertag_naechster_Datum = "javascript.0.Feiertag.naechster_Datum"/Feiertag.naechster_Datum/,
        idFeiertag_naechster_Name = "javascript.0.Feiertag.naechster_Name"/Feiertag.naechster_Name/;
        ! var state = "BY";
        // Nur bayerische Feiertag, Rest gelöscht
        var allHolidays = {"BY":{"20150101":"Neujahr","20150106":"Heilige Drei Könige","20150403":"Karfreitag","20150405":"Ostersonntag","20150406":"Ostermontag","20150501":"1. Mai","20150514":"Christi Himmelfahrt","20150524":"Pfingstsonntag","20150525":"Pfingstmontag","20150604":"Fronleichnam","20151003":"Tag der deutschen Einheit","20151101":"Allerheiligen","20151225":"Erster Weihnachtsfeiertag","20151226":"Zweiter Weihnachtsfeiertag","20160101":"Neujahr","20160106":"Heilige Drei Könige","20160325":"Karfreitag","20160327":"Ostersonntag","20160328":"Ostermontag","20160501":"1. Mai","20160505":"Christi Himmelfahrt","20160515":"Pfingstsonntag","20160516":"Pfingstmontag","20160526":"Fronleichnam","20161003":"Tag der deutschen Einheit","20161101":"Allerheiligen","20161225":"Erster Weihnachtsfeiertag","20161226":"Zweiter Weihnachtsfeiertag","20170101":"Neujahr","20170106":"Heilige Drei Könige","20170414":"Karfreitag","20170416":"Ostersonntag","20170417":"Ostermontag","20170501":"1. Mai","20170525":"Christi Himmelfahrt","20170604":"Pfingstsonntag","20170605":"Pfingstmontag","20170615":"Fronleichnam","20171003":"Tag der deutschen Einheit","20171101":"Allerheiligen","20171225":"Erster Weihnachtsfeiertag","20171226":"Zweiter Weihnachtsfeiertag","20180101":"Neujahr","20180106":"Heilige Drei Könige","20180330":"Karfreitag","20180401":"Ostersonntag","20180402":"Ostermontag","20180501":"1. Mai","20180510":"Christi Himmelfahrt","20180520":"Pfingstsonntag","20180521":"Pfingstmontag","20180531":"Fronleichnam","20181003":"Tag der deutschen Einheit","20181101":"Allerheiligen","20181225":"Erster Weihnachtsfeiertag","20181226":"Zweiter Weihnachtsfeiertag","20190101":"Neujahr","20190106":"Heilige Drei Könige","20190419":"Karfreitag","20190421":"Ostersonntag","20190422":"Ostermontag","20190501":"1. Mai","20190530":"Christi Himmelfahrt","20190609":"Pfingstsonntag","20190610":"Pfingstmontag","20190620":"Fronleichnam","20191003":"Tag der deutschen Einheit","20191101":"Allerheiligen","20191225":"Erster Weihnachtsfeiertag","20191226":"Zweiter Weihnachtsfeiertag"}};
        ! function checkHolidays() {
        ! var d0 = new Date();
        var d1 = new Date(d0.getTime() + 86400000);
        var d2 = new Date(d1.getTime() + 86400000);
        ! var ts0 = d0.getFullYear() + ("0" + (d0.getMonth() + 1)).slice(-2) + ("0" + d0.getDate()).slice(-2);
        var ts1 = d1.getFullYear() + ("0" + (d1.getMonth() + 1)).slice(-2) + ("0" + d1.getDate()).slice(-2);
        var ts2 = d2.getFullYear() + ("0" + (d2.getMonth() + 1)).slice(-2) + ("0" + d2.getDate()).slice(-2);
        ! var holiday0 = false;
        var holiday1 = false;
        var holiday2 = false;
        ! var holiday0name = "";
        var holiday1name = "";
        var holiday2name = "";
        ! var holidayNextDate = "";
        var holidayNextName = "";
        ! var holidays = allHolidays[state];
        ! if (holidays[ts0]) {
        holiday0 = true;
        holiday0name = holidays[ts0];
        }
        ! if (holidays[ts1]) {
        holiday1 = true;
        holiday1name = holidays[ts1];
        }
        ! if (holidays[ts2]) {
        holiday2 = true;
        holiday2name = holidays[ts2];
        }
        ! for (var ts in holidays) {
        if (ts > ts0) {
        holidayNextDate = ts.substr(0,4)+"-"+ts.substr(4,2)+"-"+ts.substr(6,2);
        var y = holidayNextDate.split('-'); // Umrechnung in deutsches Format
        holidayNextDate = y[2] + '.' + y[1] + '.' + y[0];
        holidayNextName = holidays[ts];
        break;
        }
        }
        ! setState(idFeiertag_heute, holiday0);
        setState(idFeiertag_heute_Name, holiday0name);
        setState(idFeiertag_morgen, holiday1);
        setState(idFeiertag_morgen_Name, holiday1name);
        setState(idFeiertag_uebermorgen, holiday2);
        setState(idFeiertag_uebermorgen_Name, holiday2name);
        setState(idFeiertag_naechster_Datum, holidayNextDate);
        setState(idFeiertag_naechster_Name, holidayNextName);

        log('Feiertag Skript ausgeführt');
        

        }

        ! // Einmal bei Scriptstart ausführen
        checkHolidays();
        ! // Täglich um 0 Uhr ausführen
        schedule("0 0 * * *", checkHolidays);
        ! ````
        Gruß

        Pix

        1 Reply Last reply Reply Quote 0
        • Homoran
          Homoran Global Moderator Administrators last edited by

          Danke pix,

          ist schon auf der Website.

          Aber gab es da nicht ein Skript, dass die Feiertage immerwährend nach http://de.wikipedia.org/wiki/Gau%C3%9Fsche_Osterformel berechnete.

          und das alles auch für alle Bundesländer?

          EDIT: ich glaube ich hab da was gefunden: http://homematic-forum.de/forum/viewtop … =31&t=4058

          und wie es sich für Feiertage gehört heisst der Urheber Petrus :mrgreen:

          Gruß

          Rainer

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

          Support us

          ioBroker
          Community Adapters
          Donate

          458
          Online

          31.8k
          Users

          80.0k
          Topics

          1.3m
          Posts

          3
          3
          1723
          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