man kann ja bekanntlich mehr oder weniger aufwändige Kalenderskripte auf der CCU laufen lassen, um darüber z.B. Feiertage einzubinden. Ein bisschen schwieriger wird es dann ggf. für Urlaub, Ferien und andere unregelmäßige Termine. Außerdem möchte man ja ggf. nicht mehrere Kalender dafür manuell synchron halten müssen. Mein Ansatz ist daher, diese Aufgabe durch den ioBroker in Verbindung mit meinen iCloud-Kalendern erledigen zu lassen. So habe ich beispielsweise neben einem Familenkalender und einen privaten Kalender noch ein paar Kalender für die Ferien und die gesetzlichen Feiertage abonniert.
Die Kalendereinträge sehen dann auf meinem iPhone z.B. so aus.
Und auch in der Visualisierung des ioBrokers können sie entsprechend dargestellt werden.
Das funktioniert dort z.B. sehr einfach mit dem dortigen iCal-Adapter. Hier mal ein Beispiel für die obigen, abonnierten Kalender, die in einer iCal-Instanz 0 eingebunden wurden.
So sieht das dann im Objekt-Baum des ioBroker aus.
Als nächstes legen wir die nachfolgenden Systemvariablen in der CCU an. Wie ihr sie benennt und welchen Inhalt sie letztlich aufweisen sollen, bleibt euch überlassen. Daher ist das nur als Beispiel zu verstehen. Ich habe mich dafür entschieden, Informationen über einen heutigen und einen morgigen Feiertag, einen heutigen Urlaub und die heutige Schulsituation der Kinder zu nutzen.
Nun muss man diese Systemvariablen noch mit den in den iCal-Instanzen vorhandenen Daten füttern. Und das geht beispielsweise über das nachfolgende kleine Javaskript "Feiertage_iCal_HM":
Code: Alles auswählen
schedule('*/15 * * * *', function(){
var content = getState('ical.0.data.html').val;
log(content.search("iCal-Feiertage\">Heute"));
log(content.search("iCal-Feiertage\">Morgen"));
log(content.search("iCal-Ferien"));
if(content.search("iCal-Feiertage\">Heute") > 0){
setState("hm-rega.0.2200", true);
setState("alexa2.0.Echo-Devices.xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.enabled", false);
}
else{
setState("hm-rega.0.2200", false);
setState("alexa2.0.Echo-Devices.xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.enabled", true);
}
if(content.search("iCal-Feiertage\">Morgen") > 0) setState("hm-rega.0.2201", true);
else(setState("hm-rega.0.2201", false))
setState("hm-rega.0.2203", 0);
if(content.search("iCal-Ferien") > 0) setState("hm-rega.0.2203", 2);
var content = getState('ical.2.data.text').val;
log(content.search("Home Schooling"));
if(content.search("Home Schooling") > 0) setState("hm-rega.0.2203", 1);
var content = getState('ical.1.data.text').val;
log(content.search("urlaub"));
log(content.search("Urlaub"));
if((content.search("urlaub") > 0) || (content.search("Urlaub") > 0)){
setState("hm-rega.0.2202", true);
setState("alexa2.0.Echo-Devices.xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.enabled", false);
}
else{
setState("hm-rega.0.2202", false);
setState("alexa2.0.Echo-Devices.xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.enabled", true);
}
});
Wenn ihr jetzt also entsprechende Einträge in euren Kalendern vornimmt, können diese direkt von der CCU z.B. für die Heizungssteuerung oder eine Anwesenheitssimulaion genutzt werden.
Bis dann,
Thorsten
PS.: Das Beispiel basiert zwar auf iCloud-Kalendern, kann aber natürlich auch für alle möglichen anderen Kalender genutzt werden, die sich über den iCal-Adapter aufrufen lassen. Und das sind ziemich viele.