Script HM_Kalender - Feiertage, Schulferien, Abfuhrkalender, ...

HMIP lokale Installation

Moderator: Co-Administratoren

Antworten
Benutzeravatar
Henke
Beiträge: 1533
Registriert: 27.06.2022, 20:51
System: CCU
Hat sich bedankt: 141 Mal
Danksagung erhalten: 309 Mal

Script HM_Kalender - Feiertage, Schulferien, Abfuhrkalender, ...

Beitrag von Henke » 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:
Screenshot 2023-11-19 201745.jpg
Anzeige RasberryMatic bei Tag 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
An dem Tag würde bei mir:
  • 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.
HM_Kalender.js
Kopieren in /usr/local der CCU
(12.82 KiB) 81-mal heruntergeladen

Das folgende CCU Programm erstellen:
Screenshot 2023-11-19 203300.jpg
CCU Programm
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);}
In dem Script müssen folgende Werte angepasst werden:
Bundesland und AbfuhrkalenderUrl, es sei denn ihr wohnt in meiner Straße. 8)
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.

laura85
Beiträge: 1
Registriert: 25.11.2023, 21:06
System: keine Zentrale (nur Pairing, FHEM etc.)

Re: Script HM_Kalender - Feiertage, Schulferien, Abfuhrkalender, ...

Beitrag von laura85 » 25.11.2023, 21:09

Sehr gutes Skript. Für die iCal Datei je Bundesland kann ich folgende Seite empfehlen. https://www.schulferien-online.de/ical Die Daten für 2024 sind auch schon vorhanden.

woPro
Beiträge: 1
Registriert: 15.12.2023, 11:52
System: CCU

Re: Script HM_Kalender - Feiertage, Schulferien, Abfuhrkalender, ...

Beitrag von woPro » 15.12.2023, 12:10

hallo :-)
gute Idee! wollt immer schon mal Kalender-Einträge als SysVar in der CCU haben um sie via Mediola anzuzeigen.

Leider schreibt dein js bzw. CCU-script keine SysVari's in die CCU3.
Hab' zu Testzwecken deine Angaben 1:1 übernommen und das js local wie beschrieben abgelegt,
das HM-Script ausgeführt.

?Muß ich ev. die SysVar vorher anlegen und wenn welche
?Welche Werte müssen im Script ev. noch angepasst werden

Danke im Voraus!
Liebe Grüsse

Benutzeravatar
Henke
Beiträge: 1533
Registriert: 27.06.2022, 20:51
System: CCU
Hat sich bedankt: 141 Mal
Danksagung erhalten: 309 Mal

Re: Script HM_Kalender - Feiertage, Schulferien, Abfuhrkalender, ...

Beitrag von Henke » 15.12.2023, 16:37

Die Systemvariablen werden automatisch angelegt, daran liegt es nicht.
Kontrolliere bitte, ab das Script im richtigen Verzeichnis ist.
Bei 41 Downloads und kaum Rückmeldungen bisher, dürfte das Script laufen.

Antworten

Zurück zu „HomeMatic IP mit CCU“