[Howto] iCalendar -> Ephemeris

  • Ephemeris bietet die Möglichkeit eigene "Feiertage" in XML-Dateien anzulegen. In der Dokumentation (https://www.openhab.org/docs/configura…m-bank-holidays) ist ein Beispiel mit Geburtstagen. Da ich die Geburtstage aktuell schon im Google-Kalender pflege, habe ich mir gedacht ein kleines Script zu erstellen, dass diese aus dem Kalender in eine Ephemeris-XML-Datei überführt. Das Script ist ziemlich "quick and dirty" also steinigt mich bitte nicht. :D Für mich erfüllt es seinen Zweck und vielleicht ist es für andere auch interessant. Es ist egal welcher Kalender verwendet wird, solange es einen iCalender-Export gibt (habe es auch mit dem Müllabfuhr-Kalender der Stadt getestet).

    Ich nutze das Script direkt auf meinem Raspberry Pi mit openHABian. Dort war, node und npm vorinstalliert, was die Voraussetzungen sind. Warum ich jetzt Node genutzt habe, war zufällig. Habe erstmal geschaut, was auf dem Pi schon installiert ist und auf Python hatte ich keine Lust. :whistling: Man kann das Script natürlich auch lokal ausführen und dann auf openHAB kopieren.

    Hier das Script:

    Im Script muss bei ICS_FILE_URL die URL zur iCalendar-Datei angegeben werden. Im Google-Kalender findet man das in den Kalender-Einstellungen ganz unten unter "Privatadresse im iCal-Format". Außerdem kann man bei OUTPUT_FILE_PATH noch den Pfad und Dateinamen anpassen, falls man denn möchte. Danach legt man das Script in einem extra Ordner ab (bei mir /home/openhabian/iCal-Ephemeris). Übers Terminal führt man dann in diesem Ordner npm init und npm install node-ical (Abhängigkeit) einmalig aus. Danach kann man mit node wichtige-tage.js das Script ausführen. Wenn man weitere XML-Dateien und Kalender nutzen möchte, kann man natürlich die Datei einfach kopieren und die Konstanten anpassen. Ich nutze es aktuell noch für den Müllabfuhrkalender (obwohl es bzgl. Feiertage) nicht ganz sinngemäß ist. Für diesen Mühllabfuhr-Kalender musste ich das Script aber leicht anpassen, da der Aufbau etwas abweicht. Man könnte das Script auch über einen Cronjob laufen lassen, falls sich der Kalender regelmäßig ändert. Dabei ist jedoch zu beachten, dass openHAB die XML-Dateien im Cache hält, sodass ein Neustart (sudo systemctl restart openhab2.service) bei Änderungen nötig ist. Zur Vervollständigung hänge ich hier noch Items, Sitemap und Rule an. Wer mag, kann ja hier aufhören zu lesen… Anmerkungen, Ideen, Verbessungen, usw. sind erwünscht! :thumbup:

    JavaScript: default.items
    // Wichtige Tage
    Group WichtigeTage (Allgemein)
    String WichtigeTage_NaechstesEvent         "Nächstes Event [%s]"          <error> (WichtigeTage)
    Number WichtigeTage_TagesBisNaechstesEvent "Nächstes Event in [%s Tagen]" <error> (WichtigeTage)
    JavaScript: default.sitemap
    Frame label="Wichtige Tage" {
      Text  item=WichtigeTage_NaechstesEvent
      Text  item=WichtigeTage_TagesBisNaechstesEvent valuecolor=[<3="red", <8="orange"]
    }

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!