Hallo Flexer,
das gibt es schon.
Anbei mal ein Script von pix, was ich für mich ergänzt/erweitert habe.
mfg
`/* 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 = 'Tonne'; // Suchbegriff
var stichtag = 1; // 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 + '.');
//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;
if (Muell !== "kein Eintrag" && (Auto_M === true || Auto_M === 1)) {
vText = "Müllabfuhr:\nMorgen muss die **" + Muell + "** rausgestellt werden.";
sendTo('telegram', { text: vText, parse_mode: 'HTML' });
}
});
//bei Skriptstart
pruefeKalender();</kalender.length;>` [/i][/i][/i][/i]