Script HM_Kalender - Feiertage, Schulferien, Abfuhrkalender, ...
Verfasst: 19.11.2023, 21:17
Dieses Javascript liest die Feiertage und Schulferien über OpenHolidays API und den iCal Abfuhrkalender aus und generiert daraus eine Tabelle zur Anzeige sowie Systemvariablen zum aktuellen Tag die zur Steuerung genutzt werden können.
Ziel:
Als Beispiel/Test den 21.12.23: Durch die Anzeige der Wochentage sieht man direkt:
Implementierung:
Die folgende Datei in das Verzeichnis "/usr/local" kopieren. WinSCP verwende ich dafür.
Das folgende CCU Programm erstellen: mit diesem Script:
In dem Script müssen folgende Werte angepasst werden:
Bundesland und AbfuhrkalenderUrl, es sei denn ihr wohnt in meiner Straße.
Der Rest dürfte bei den meisten passen.
Generell kann dieses Script jeden iCal Kalender bzw. json verarbeiten. Ob das nun die Urlaubsdaten oder Dienstpläne sind und geniert daraus Systemvariablen zur täglichen Steuerung.
Der Google Kalender wäre bestimmt ein Kandidat, den habe ich aber nicht getestet.
Die Möglichkeiten dürften vielfältig sein.
Technischer Hintergrund:
Die CCU Programme und die Scriptsprache der CCU ist für komplexere Aufgaben nicht geeignet und fehleranfällig. Daher bin ich auf NodeRed umgestiegen und erledige dort sehr viel mit JavaScript.
Das brachte mich auf die Idee, die Ein und Ausgabe so zu gestalten, das auch Werte direkt aus und in die CCU gelangen.
Das "HM_Kalender.js" ist das gleiche, das ich in einer function Node verwende. Siehe: viewtopic.php?f=77&t=80682
Das JavaScript kann auch über die Konsole gestartet werden und damit z.B. über einen cronjob automatisiert laufen.
Da nicht auf die Rückgabe der Werte gewartet wird ("&") kann die Rega auch nicht blockiert werden, selbst wenn einer der Server mal nicht erreichbar ist. Dies schafft somit die Möglichkeit weitere vorhandene JavaScripte wie DWD-Wetterwarnung, OpenWeather, Mittelwertbildung,Zeit verzögertes schalten,usw. recht einfach auf der CCU zu implementieren.
Ziel:
Als Beispiel/Test den 21.12.23: Durch die Anzeige der Wochentage sieht man direkt:
- Das die Weihachsferien nicht 16, sondern 18 Tage sind (Ende Fr)
- Das Weihnachten von Sa-Die geht, vorher viel einkaufen
- Silvester von Sa-Mo frei ist
- Die Zirkulationspumpe Warmwasser nicht um 06:00 angehen, da bei Ferien das Bad um diese Zeit nicht genutzt wird. Systemvariable: Kalender.Heute.School nicht leer
- Der Schalter im Flur unten türkis Leuchten (Systemvariable: Kalender.Heute.Abfall nicht leer) bis der Papiermüll raus gebracht wurde und die untere Taste lange gedrückt wurde um die Systemvariable zu löschen.
Implementierung:
Die folgende Datei in das Verzeichnis "/usr/local" kopieren. WinSCP verwende ich dafür.
Das folgende CCU Programm erstellen: mit diesem Script:
Code: Alles auswählen
boolean debug = false;
! oha siehe: https://www.openholidaysapi.org/de/
! Bundesland anpassen
! ical AbfuhrkalenderUrl - wenn nicht werwendet: AbfuhrkalenderUrl: "";
string para = '{
"CCU": {
"hostname": "localhost",
"auth": ""
},
"SysVar": { "Out": true, "Name": "Kalender" },
"Tage": { "List": 120, "Anzeige": 31 },
"oha": {
"Land": "DE",
"Bundesland": "DE-NW",
"Sprache": "DE"
},
"AbfuhrkalenderUrl": "http://gwa-abfuhrkalender.de/ical.html?kommune=5&bezirk=622&filter=11,6,2,1,7"
}';
string sExe = "node /usr/local/HM_Kalender.js \'" # para # "\'";
! Keine weitere Anpassung
if ( !debug ) { sExe = sExe + " &";}
string stdOut;string stdErr;
system.Exec( sExe, &stdOut, &stdErr );
if ( stdOut ) { WriteLine ( stdOut); }
if ( stdErr ) { WriteLine ( "Fehler: " # stdErr);}
Bundesland und AbfuhrkalenderUrl, es sei denn ihr wohnt in meiner Straße.
Der Rest dürfte bei den meisten passen.
Generell kann dieses Script jeden iCal Kalender bzw. json verarbeiten. Ob das nun die Urlaubsdaten oder Dienstpläne sind und geniert daraus Systemvariablen zur täglichen Steuerung.
Der Google Kalender wäre bestimmt ein Kandidat, den habe ich aber nicht getestet.
Die Möglichkeiten dürften vielfältig sein.
Technischer Hintergrund:
Die CCU Programme und die Scriptsprache der CCU ist für komplexere Aufgaben nicht geeignet und fehleranfällig. Daher bin ich auf NodeRed umgestiegen und erledige dort sehr viel mit JavaScript.
Das brachte mich auf die Idee, die Ein und Ausgabe so zu gestalten, das auch Werte direkt aus und in die CCU gelangen.
Das "HM_Kalender.js" ist das gleiche, das ich in einer function Node verwende. Siehe: viewtopic.php?f=77&t=80682
Das JavaScript kann auch über die Konsole gestartet werden und damit z.B. über einen cronjob automatisiert laufen.
Da nicht auf die Rückgabe der Werte gewartet wird ("&") kann die Rega auch nicht blockiert werden, selbst wenn einer der Server mal nicht erreichbar ist. Dies schafft somit die Möglichkeit weitere vorhandene JavaScripte wie DWD-Wetterwarnung, OpenWeather, Mittelwertbildung,Zeit verzögertes schalten,usw. recht einfach auf der CCU zu implementieren.