NEWS
[Scriptbeispiel] Feiertage NRW
-
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);
-
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
-
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