Hallo,
ich verwende dieses Script.
// Annahme ist, dass jede Müllart mindestens einmal im Monat abgeholt wird. Nicht getestet und eventuell problematisch ist es, wenn Müll seltener abgeholt wird.
// Ursprung: tempestas
// Erweiterung: PicNic
// http://forum.iobroker.net/viewtopic.php?f=21&t=3351&p=92282#p92282
//debug in Log ausgeben
debug = true;
// Anlegen JS State für VIS
createState('javascript.0.muell.json', 0);
// Array für Suchvariablen und Farbe des Müll-Icons
var obj = { "Papiertonne": "darkblue"};
function muell(){
// Kalender auslesen (HTML Format)
// **************************************************************************************
// Termine auswerten aus html. Bereinigung der HTML Tags und Konvertierung in Plain Text
// **************************************************************************************
var inhalt = getState("ical.0.data.html"/*HTML iCal table*/); // an deinen eigenen Kalender anpassen
var inhaltString = inhalt.val.toString();
var inhaltStringReplace = inhaltString;
var inhaltStringText;
var i_search;
// remove all inside SCRIPT and STYLE tags
inhaltStringReplace=inhaltStringReplace.replace(/<script.*>[\w\W]{1,}(.*?)[\w\W]{1,}<\/script>/gi, "");
inhaltStringReplace=inhaltStringReplace.replace(/<style.*>[\w\W]{1,}(.*?)[\w\W]{1,}<\/style>/gi, "");
// remove BR tags
inhaltStringReplace=inhaltStringReplace.replace(/
/gi, "");
inhaltStringReplace=inhaltStringReplace.replace(/<br\s\>/gi, "");
inhaltStringReplace=inhaltStringReplace.replace(/<br\>/gi, "");
// remove all else
inhaltStringReplace=inhaltStringReplace.replace(/<(?:.|\s)*?>/g, "");
// get rid of html-encoded characters:
inhaltStringReplace=inhaltStringReplace.replace(/ /gi," ");
inhaltStringReplace=inhaltStringReplace.replace(/&/gi,"&");
inhaltStringReplace=inhaltStringReplace.replace(/"/gi,'"');
inhaltStringReplace=inhaltStringReplace.replace(/</gi,'<');
inhaltStringReplace=inhaltStringReplace.replace(/>/gi,'>');
if(debug) log(inhaltStringReplace);
// n-ten Treffer finden
function nthIndex(str, pat, n){
var L= str.length, i= -1;
while(n-- && i++ <l){ i="str.indexOf(pat," i);/if/(i/</0)/break;/}/i_search="i;" funktion/zum/tage/im/monat/zählen/function/daysinmonth(month,/year)/{/return/new/date(year,/month,/0).getdate();/wochentage/auf/deutsch/var/wochentag="['Sonntag','Montag','Dienstag','Mittwoch','Donnerstag','Freitag','Samstag'" ];/json/starten/muelljason="[" ;/schleife/zur/abarbeitung/des/arrays/object.keys(obj).foreach/(function/(val,/key)/","/trennung/der/daten/json./sollte/nur/eine/müllart/angegeben/sein,/dann/die/nächsten/drei/zewilen/auskommentieren/(key="">0) {
muellJason += ",";
}
// Zuweisung der Farbe für das MüllIcon
var iconColor = obj[val];
var muellIcon = " <svg class="icon dustbin "+iconColor+"" data-txt="dustbin@"+iconColor+"" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:cc="http://creativecommons.org/ns#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" version="1.0" width="35" height="35" viewBox="0 0 468 468" id="svg2996"><metadata id="metadata2998"> Created by potrace 1.8, written by Peter Selinger 2001-2007 <rdf:rdf> <cc:work rdf:about=""> <dc:format>image/svg+xml</dc:format> </cc:work> </rdf:rdf> </metadata></svg> ";
// Position bestimmen
var pos = inhaltStringReplace.indexOf( val, 1);
if(debug) log("pos ist: "+pos);
var inhaltStringText = inhaltStringReplace.substring((pos-13),pos-3);
if(debug) log("Datum ist: "+inhaltStringText);
nthIndex(inhaltStringText, ".", 1);
var t_m = inhaltStringText.slice(0, i_search);
var pos1 = i_search+1;
if(debug) log("pos1: " +pos1 );
nthIndex(inhaltStringText, ".", 2);
var m_m = inhaltStringText.slice(pos1, i_search);
var pos2 = i_search+1;
if(debug) log("pos2: " +pos2 );
var j_m = inhaltStringText.slice(pos2, inhaltStringText.len );
// Datum des Abholtages setzen um den Wochentag zu ermitteln
var muelldate = new Date(j_m,m_m-1,t_m);
// Hier kommt der Wochentag :-)
var d = muelldate.getDay();
if(debug) log("Mülldate ist: "+wochentag[d]+", "+muelldate );
if(debug) log("Mülltag ist: "+t_m +" , " +m_m +" , " +j_m);
// Datum heute ermitteln
var today = new Date();
if(debug) log(today);
//Tag ermitteln
var t = today.getDate();
// Wochentag ermitteln zum testen
var dd = today.getDay();
//Monat ermitteln
var m = today.getMonth()+1;
//Jahr ermitteln
var j = today.getFullYear();
if(debug) log("Datum heute ist: "+wochentag[dd]+", "+t+m+j);
// Berechnung Tagesdifferenzen
var diff = 0;
var tage = "";
var dim = DaysInMonth(m, j); // Tage des aktuellen Monats
if(debug) log("Tage aktueller Monat: "+dim);
if(j_m > j || m_m > m) { // Prüfung: Jahr_Müll größer als aktuelles Jahr? Relevant bei Jahreswechsel ODEr Monat Müll größer aktueller Monat?
diff = parseInt(dim) - parseInt(t) + parseInt(t_m);
}
else diff = parseInt(t_m) - parseInt(t);
if(debug) log("Tage bis zum nächsten Müll: "+diff);
if(!isNaN(diff)){
tage = diff }
else {
tage = "Heute";
}
muellJason += "{\"Müllart\":\" "+val+"\",\"Tage\":\""+tage+"\"}"; // PASS DIR AN WIE DU WILLST: \"Ereignis\":\""+muellIcon+"\", \"Tag\":\""+wochentag[d]+"\",\"Datum\":\""+inhaltStringText+"\",
}); // Ende forEach
// json schließen
muellJason += "]";
// und hier nun die Werte eintragen
setState('javascript.0.muell.json', muellJason);
log("Müllkalender aktualisiert!");
}
schedule('30 5 * * *', function(){ // morgens um 5.30h wird aktualisiert
muell();
});
// bei Start
muell();</l){></br\></br\s\></style.*></script.*>
Mein Jason sieht so aus.
Heute Wertstoffhof geöffnet
Heute Biotonne
Morgen Wertstoffhof geöffnet
Übermorgen Papiertonne
In 5 Tagen Wertstoffhof geöffnet
In einer Woche Wertstofftonne
In einer Woche Wertstoffhof geöffnet
Wie bekomme ich die Tage in das jason? Was mache ich falsch?