Howto - Feiertage, Urlaub, Ferien, etc. über ioBroker in der HomeMatic nutzen

Problemlösungen und Hinweise von allgemeinem Interesse zur Haussteuerung mit HomeMatic

Moderator: Co-Administratoren

Antworten
dtp
Beiträge: 10658
Registriert: 21.09.2012, 08:09
System: CCU
Wohnort: Stuttgart
Hat sich bedankt: 320 Mal
Danksagung erhalten: 501 Mal

Howto - Feiertage, Urlaub, Ferien, etc. über ioBroker in der HomeMatic nutzen

Beitrag von dtp » 25.12.2021, 12:44

Hallo,

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.
2021-12-25 11-58-54.png
Die Kalendereinträge sehen dann auf meinem iPhone z.B. so aus.
2021-12-25 11-50-49.png
Und auch in der Visualisierung des ioBrokers können sie entsprechend dargestellt werden.
2021-12-25_11h46_55.png
2021-12-25_11h46_55.png (14.11 KiB) 1225 mal betrachtet
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.
2021-12-25_12h06_35.png
So sieht das dann im Objekt-Baum des ioBroker aus.
2021-12-25_11h48_28.png
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.
2021-12-25_11h45_48.png
2021-12-25_11h45_48.png (14.86 KiB) 1225 mal betrachtet
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":
2021-12-25_11h49_24.png

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);
  }
});
Es fragt den Inhalt der obigen iCal.n.-Datenpunkte "html" bzw. "text" auf Änderungen ab und wenn dort was zu den Stichwörtern "iCal-Feiertage\">Heute", "iCal-Feiertage\">Morgen", "Urlaub" oder "Home School" auftaucht, setzt es die Systemvariablen in der CCU entsprechend. Dazu müssen diese natürlich über den hm-rega-Adapter des ioBroker eingebunden sein. Aber wer den ioBroker in Verbindung mit der HomeMatic nutzt, der hat das eh schon konfiguriert. In der zugehörigen hm-rega.0-Instanz könnt ich dann auch direkt die zu den Systemvariablen gehörenden ISE-IDs sehen und im Skritp setzen. Zudem aktiviert bzw. deaktiviert das Skript auch noch meinen Alexa-Wecker je nachdem, ob ich Urlaub habe bzw. ein Feiertag ist oder nicht.
2021-12-25_12h41_16.png
2021-12-25_12h41_16.png (12.08 KiB) 1225 mal betrachtet
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.
Zuletzt geändert von dtp am 06.01.2022, 17:33, insgesamt 1-mal geändert.
CCU3 mit stets aktueller FW und den Addons "CUxD" und "Programmedrucken", ioBroker auf Synology DiskStation DS718+ im Docker-Container;
einige Projekte: zentrales Push-Nachrichten-Programm zPNP, DoorPi-Videotürsprechanlage, An- und Abwesenheitsdetektion per Haustürschloss, zentrales Programm zur Steuerung von Beschattungsgeräten zBSP.

Benutzeravatar
Black
Beiträge: 5472
Registriert: 12.09.2015, 22:31
System: Alternative CCU (auf Basis OCCU)
Wohnort: Wegberg
Hat sich bedankt: 419 Mal
Danksagung erhalten: 1071 Mal
Kontaktdaten:

Re: Howto - Feiertage, Urlaub, Ferien, etc. über ioBroker in der HomeMatic nutzen

Beitrag von Black » 25.12.2021, 12:59

schöne Umsetzung !

ich benutze auch IOBroker für meinen Müllkalender und die Ferien / Feiertagsbestimmung (berufsbedingt für meine Frau) und gebe die Ergebnisse als Sysvar in die CCU. Die CCU muss für Entscheidungen nicht wissen, ob grade Ostern, Weihnachten oder Armageddon ist, Feiertag oder Normalertag reicht dafür vollkommen.

Sollte ich mal explizit Bestimmungen auf der CCU brauchen, so benutze ich solche Berechnungen so "3 Zeilen "Mega"-Ansätze" wie die Totensonntagberechnung letztens (die sich auch in 2 Zeilen Substituieren lässt)

Black
Wenn das Fernsehprogramm immer mehr durch nervende Werbung unterbrochen wird und der Radiomoderator nur noch Müll erzählt, ist es besser, die Zeit für sinnvolle Dinge zu nutzen -
mal aufs Klo zu gehen, ein Bier zu holen oder einfach mal den roten AUS-Knopf zu drücken. Klick - und weg

Script Time Scheduler V1.3
AstroSteuerung über Zeitmodul flexibel mit Offset / spätestens, frühestens
SDV 5.03.01 Das umfassende Entwicklungs und Diagnosetool für Homematik
Selektive Backups - Nützliche Dinge, die die WebUI nicht kann

Intel NUC6 Celeron 16GB mit 512GB SSD unter Proxxmox mit insgesamt 5 VM: 2 x bloatwarebefreiter Raspberrymatik, 2 x IOBroker als Middleware und einer MariaDB zur Archivierung. Verbrauch: 6W

technical contribution against annoying advertising

Antworten

Zurück zu „HomeMatic Tipps & Tricks - keine Fragen!“