Feiertagsberechnung - Skript

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

Moderator: Co-Administratoren

Cosi
Beiträge: 39
Registriert: 04.11.2019, 16:38
Hat sich bedankt: 1 Mal
Danksagung erhalten: 3 Mal

Re: Feiertagsberechnung - Skript

Beitrag von Cosi » 06.01.2020, 15:38

Hallo Siksamus,
der Fehler trat auf, weil ich in der Zeile 50 wo die Feiertage aus der Feiertagsliste einkopiert werden, einige Leerzeichen (nicht Leerzeilen) mit hineinkopiert hatte. Das sah etwa so aus "01.01.=Neujahr;......................;06.01.=Erscheinungsfest "; Diese Leerzeichen am Ende der Zeile müssen raus, sonst werden die SV nicht richtig erstellt. Richtig sieht die Zeile 50 so aus: "01.01.=Neujahr;...................;06.01.=Erscheinungsfest";
Ich hoffe alle, die diesen Fehler hatten können nun aufatmen.
Gruß
Cosi

Benutzeravatar
siksamus
Beiträge: 23
Registriert: 10.03.2015, 08:38

Re: Feiertagsberechnung - Skript

Beitrag von siksamus » 06.01.2020, 17:30

Hallo Cosi,

Danke für die Antwort. Mein Fehler trat auf da ich eben dieses Apostroph benutzt habe. Das mag die CCU wohl nicht in der Werteliste.

MfG Simon

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

Re: Feiertagsberechnung - Skript

Beitrag von dtp » 07.01.2020, 08:39

Ich habe über die Feiertage (weil's so schön passt ;) ) mal eine etwas andere Lösung für mich realisiert.

Kurzum, ich lese meine Kalender (u.a. abonnierte Feiertags- und Ferienkalender) mittels des iCal-Adapters des ioBrokers aus. Sobald eine Änderung des entsprechendes Datenpunktes erfolgt, werden dann mit einem simplen Javaskript entsprechende Systemvariablen für Feiertage, Urlaub und Ferien meiner CCU3 gesetzt. Wenn ich nun in Outlook oder über die App meines iPhones einen entsprechenden Kalendereintrag mache bzw. ändere, dann wird das binnen kurzer Zeit an meine CCU übergeben, ohne dass ich mich um etwas kümmern muss.

Zusätzlich werden auch automatisch die Echo-Wecker von mir und unseren Kindern in Abhängigkeit der Feier-, Ferien- und Urlaubstage deaktiviert. Da hoffe ich aber noch auf eine Änderung des alexa2-Adapters im ioBroker, um die wiederkehrenden Wecker von den einmaligen unterscheiden zu können.

Wenn die Wecker läuten, dann wird übrigens zusätzlich automatisch das Licht im entsprechenden Zimmer für eine definierte Zeit eingeschaltet, sofern es draußen dunkel ist.
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.

MartinBr
Beiträge: 393
Registriert: 25.01.2017, 10:51
Wohnort: Bei Berlin
Hat sich bedankt: 3 Mal
Danksagung erhalten: 8 Mal

Re: Feiertagsberechnung - Skript

Beitrag von MartinBr » 07.01.2020, 09:26

Hallo Thorsten,
kannst du deine ioBroker bitte mal beschreiben? Nutzt den Feiertagsadapter und/oder hälst du deine Termine in einem eigenen Kalender? Ich setze für die Müllabholung und die Geburtstage jeweils einen eigenen Kalender ein. Bisher aber nur für die Visualisierung.
Wir können das Thema dann auch gerne im ioBroker Forum fortführen.

Gruß
Martin
RaspberryMatic-3.59.6 auf Tinkerboard S, CUxD 2.6, XML-1.20, ioBroker (HM,HMIP, Zigbee, Zwave und Shelly) und Alexa in einer VM unter Proxmox, VitoComfort 200

Xel66
Beiträge: 14169
Registriert: 08.05.2013, 23:33
System: Alternative CCU (auf Basis OCCU)
Wohnort: Nordwürttemberg
Hat sich bedankt: 587 Mal
Danksagung erhalten: 1501 Mal

Re: Feiertagsberechnung - Skript

Beitrag von Xel66 » 07.01.2020, 09:40

MartinBr hat geschrieben:
07.01.2020, 09:26
Nutzt den Feiertagsadapter und/oder hälst du deine Termine in einem eigenen Kalender?
Er hat doch geschrieben, dass er über eine andere Lösung einen iCal-Adapter einsetzt. Dieser fragt externe, echte, online gehostete Kalender ab. Da kann das Feiertagsscript nichts für Dich tun. Es berechnet die Feiertage (und in der erweiterten Version kann man noch eigene Termine eingeben). Das ist eine Sololösung direkt auf der CCU. Für die andere Lösung benötigst Du einen weiteren (virtuellen) Rechner und eine weiter Umgebung. Für Abfragen externer Kalender gibt es auch andere Lösungen. Die eine ist an einen Provider gebunden (Goo...-Kalender) und die andere benötigt ein externes Android-Gerät (Tasker) und ist mit allen integrierbaren Kalenderanbietern kompatibel. Beide benötigen (einmalig) aber etwas Einarbeitungsaufwand. Aber das ist bei dem iCal-Adapter auf der Middleware auch nicht anders.

Gruß Xel66
Zuletzt geändert von Xel66 am 07.01.2020, 09:43, insgesamt 1-mal geändert.
-------------------------------------------------------------------------------------------
524 Kanäle in 146 Geräten und 267 CUxD-Kanäle in 34 CUxD-Geräten:
343 Programme, 334 Systemvariablen und 183 Direktverknüpfungen,
RaspberryMatic Version: 3.65.11.20221005 + Testsystem: CCU2 2.61.7
-------------------------------------------------------------------------------------------
Einsteigerthread, Programmlogik-Thread, WebUI-Handbuch

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

Re: Feiertagsberechnung - Skript

Beitrag von dtp » 07.01.2020, 09:41

MartinBr hat geschrieben:
07.01.2020, 09:26
kannst du deine ioBroker bitte mal beschreiben?
Hallo Martin,

kann ich an anderer Stelle gerne mal machen. Hier ist dafür - denke ich - der falsche Ort. Wollte nur kurz darauf hinweisen, dass es auch andere Möglichkeiten gibt, die die CCU weitestgehend in Ruhe lassen. 8)

Ich nutze die App FerienCal und habe darüber entsprechende Kalender für die Feiertage und die Ferien abonniert. Die abonnierten Kalender habe ich dann zusätzlich noch in den iCal-Adapter des ioBroker eingebunden. Entsprechend habe ich auch einen Abfallkalender unseres Entsorgers abonniert. Den Urlaub trage ich ganz normal in meinen eigenen iCloud-Kalender ein. Das geht entweder direkt über mein iPhone bzw. iPad oder über Outlook und iCloud für Windows am PC. Der iCloud-Kalender wird dann ebenfalls mit dem iCal-Adapter ausgelesen. Ich beschreibe das dann mal - wie gesagt - an anderer Stelle.

Bis dann,

Thorsten
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.

MartinBr
Beiträge: 393
Registriert: 25.01.2017, 10:51
Wohnort: Bei Berlin
Hat sich bedankt: 3 Mal
Danksagung erhalten: 8 Mal

Re: Feiertagsberechnung - Skript

Beitrag von MartinBr » 07.01.2020, 13:37

Xel66 hat geschrieben:
07.01.2020, 09:40
MartinBr hat geschrieben:
07.01.2020, 09:26
Nutzt den Feiertagsadapter und/oder hälst du deine Termine in einem eigenen Kalender?
Er hat doch geschrieben, dass er über eine andere Lösung einen iCal-Adapter einsetzt. Dieser fragt externe, echte, online gehostete Kalender ab. Da kann das Feiertagsscript nichts für Dich tun. Es berechnet die Feiertage (und in der erweiterten Version kann man noch eigene Termine eingeben). Das ist eine Sololösung direkt auf der CCU. Für die andere Lösung benötigst Du einen weiteren (virtuellen) Rechner und eine weiter Umgebung. Für Abfragen externer Kalender gibt es auch andere Lösungen. Die eine ist an einen Provider gebunden (Goo...-Kalender) und die andere benötigt ein externes Android-Gerät (Tasker) und ist mit allen integrierbaren Kalenderanbietern kompatibel. Beide benötigen (einmalig) aber etwas Einarbeitungsaufwand. Aber das ist bei dem iCal-Adapter auf der Middleware auch nicht anders.

Gruß Xel66
Hallo Xel66,
ich habe den ioBroker seit langen im Einsatz und nutze ihn u.a. für meine Virtualisierung über VIS. Das ganze läuft unter Proxmox. Ich betreibe da den ioBroker als Prod. und Testsystem, einen SQL-Server, einen Influx-Server, den CCU-Histoarian, einen Plex-Server und PiHole.
Das Thema ist mir nicht neu und ich hatte Thorsten schon genau verstanden.

Gruß
Martin
Zuletzt geändert von MartinBr am 07.01.2020, 13:41, insgesamt 1-mal geändert.
RaspberryMatic-3.59.6 auf Tinkerboard S, CUxD 2.6, XML-1.20, ioBroker (HM,HMIP, Zigbee, Zwave und Shelly) und Alexa in einer VM unter Proxmox, VitoComfort 200

MartinBr
Beiträge: 393
Registriert: 25.01.2017, 10:51
Wohnort: Bei Berlin
Hat sich bedankt: 3 Mal
Danksagung erhalten: 8 Mal

Re: Feiertagsberechnung - Skript

Beitrag von MartinBr » 07.01.2020, 13:41

dtp hat geschrieben:
07.01.2020, 09:41
MartinBr hat geschrieben:
07.01.2020, 09:26
kannst du deine ioBroker bitte mal beschreiben?
Hallo Martin,
kann ich an anderer Stelle gerne mal machen. Hier ist dafür - denke ich - der falsche Ort. Wollte nur kurz darauf hinweisen, dass es auch andere Möglichkeiten gibt, die die CCU weitestgehend in Ruhe lassen. 8)

Thorsten
Hallo Thorsten,
das würde mich freuen. Ich halte das auch für die bessre Lösung, da Änderungen wie Urlaub etc. einfacher eingepflegt werden können. Natürlich unter der Voraussetzung, dass es eine Kalender bei Google oder iCloud gibt.

Gruß
Martin
RaspberryMatic-3.59.6 auf Tinkerboard S, CUxD 2.6, XML-1.20, ioBroker (HM,HMIP, Zigbee, Zwave und Shelly) und Alexa in einer VM unter Proxmox, VitoComfort 200

harvey
Beiträge: 136
Registriert: 01.12.2013, 13:19
Danksagung erhalten: 3 Mal

Re: Feiertagsberechnung - Skript

Beitrag von harvey » 07.01.2020, 21:12

Hallo Petrus,

ist es möglich, dass die Änderungen bei den "Sonstigen Feiertagen":

Code: Alles auswählen

! *** Sonstige Festtage?
boolean Rosenmontag = 1; ! Ist der Rosenmontag ein Brauchtumstag?   1=Ja, 0=Nein
boolean Silvester   = 1; ! Ist Silvester stets ein freier Tag?      1=Ja, 0=Nein
boolean Heiligabend = 1; ! Ist Heiligabend (24.12.) ein freier Tag? 1=Ja, 0=Nein
nicht augewertet wird? Das Setzen auf Ja=1/Nein=0 bewirkt bei mir nichts.

Vermutlich fehlt ein Teil wie dieser am Ende des Concatinierung von "s_Feiertage":

Code: Alles auswählen

if(Rosenmontag){s_Feiertage=s_Feiertage#";OS-48=Rosenmontag";}
if(Heiligabend){s_Feiertage=s_Feiertage#";24.12.=Heiligabend";}
if(Silvester){s_Feiertage=s_Feiertage#";31.12.=Silvester";}
Dann könnte man auch gleich die Adventsonntage als Feiertage und nicht nur Sonntage eintragen:

Code: Alles auswählen

boolean Advent = 1; ! Sind die vier Adventsonntage Feiertage?   1=Ja, 0=Nein
...
if(Advent){s_Feiertage=s_Feiertage#";AD=1.Advent;AD+7=2.Advent;AD+14=3.Advent;AD+21=4.Advent";}
Oder habe ich was übersehen?
cu
Harvey
Homematic raspberrymatic, iobroker, Asksinpp und Arduinos - rund 50 Geräte

Petrus
Beiträge: 134
Registriert: 13.01.2010, 20:53
Hat sich bedankt: 1 Mal
Danksagung erhalten: 25 Mal

Re: Feiertagsberechnung - Skript

Beitrag von Petrus » 08.01.2020, 15:19

Hallo Harvey,

das mit der fehlenden Auswertung von Rosenmontag, Silvester und Heiligabend ist vollkommen korrekt. Diese Zeilen wollte ich ursprünglich aus dem Skript entfernen - hatte ich wohl vergessen -, da mit dem Skript nur eine Liste mit Feiertagen generiert werden sollte. Rosenmontag etc. sind ja keine Feiertage im Sinne der Definition und gehören eigentlich in die SV "Feiertage-Eigene". In Summe ist es aber letztendlich egal, ob diese zusätzlichen freien Tage gleich mit gelistet werden oder nicht, da durch das Feiertagsskript sowieso alle Daten in der SV "Feiertag-Daten" landen.

Da ich eh noch eine kleine Korrektur vornehmen musste, habe ich also die sonstigen Feiertage wieder mit in die Auswertung aufgenommen - ebenso die von dir erwähnten Adventssonntage. Ob diese berücksichtigt werden sollen, kann dann jeder für sich entscheiden. Das bereits geänderte Skript wie immer im 1. Post.

Danke für deinen Hinweis!

Gruß
Petrus

Antworten

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