Feiertage und Termine aus dem Google Kalender

In diesem Artikel zeige ich Dir, wie Du Deinen Google Kalender anbindest um globale Variablen zu pflegen. Mit diesen Variablen kannst Du Abläufe in Smart Home beeinflussen. Klassisches Beispiel ist die Steuerung der Heizpläne an gesetzlichen Feiertagen oder während des Heimaturlaubes.

Google Kalender
Google Kalender

Google Kalender

Über den Google Kalender brauche ich nicht viele Worte verlieren. Ein kostenloses Tool mit vielen Funktionen und nahtloser Integration in (nahezu) jedes Android Smartphone. In der Szene bediene ich mich der Infrastruktur sowie der bereitgestellten API aus dem Hause Google um das Eintragen von Ereignissen so komfortabel wie möglich zu gestalten.

Warum Feiertage und Termine?

Diese Szene ist eine Weiterentwicklung des vor gut 2 Jahren veröffentlichten Artikels zu Feiertagsvariablen im Home Center 2. In den Kommentaren zu diesem Artikel kam immer wieder der Wunsch nach der Berücksichtigung individueller Termine zur Steuerung der Variablen auf. Dies ist mit der hier vorgestellten Szene und dem Google Kalender nun möglich.

Die Integration solcher Daten in Dein Smart Home erweitert die intelligenten Steuerungsmöglichkeiten Deiner Szenen. So kannst Du beispielsweise während des Heimaturlaubes auch an einem Wochentag automatisiert Deine Heizpläne überschreiben.

Einrichtung der Szene

Um die hier zur Verfügung gestellte Szene benutzen zu können benötigst Du einen Google Kalender, eine Quelle für die gesetzlichen Feiertage Deines Bundeslandes, die Freigabe Deines Google Kalenders sowie eine eingerichtete Google API um auf den Kalender zugreifen zu können.

Weiterhin ist es wichtig, dass Du Dir für die Einrichtung Zeit nimmst und aufmerksam liest was Du eigentlich tust.

Feiertage herunterladen

Die von Google zur Verfügung gestellten Feiertage kannst Du leider nicht nutzen, da hier keine Unterscheidung nach Bundesländern erfolgt. Gesetzliche Feiertage, die nicht bundesweit gelten, mit dem Zusatz „(teilweise)“ eingetragen. Aber keine Sorge, Du musst die Feiertage nicht manuell eintragen. Es gibt diverse Quellen im Internet von denen Du diese herunterladen kann. Dies geschieht im iCal Format welches sich wunderbar in den Google Kalender importieren lässt. Ich habe hierfür den Service von schulferien.org genutzt. Wenn gewünscht, findest Du dort auch die Ferientermine für Dein Bundesland.

  • Besuche die Website von schulferien.org
  • Scrolle herunter zu „Feiertage“ und wähle Dein Bundesland und das Jahr. Es bietet sich an, alle zukünftigen Jahre auszuwählen
  • Im kleinen PopUp musst Du das Capture ausfüllen und dann die .ics Datei herunterladen
  • Lege die Datei(en) dort ab, wo Du sie später wiederfindest

Einrichtung Google Kalender

Um Konflikte mit anderen Kalendereinträgen zu vermeiden legst Du innerhalb Deines Google Kontos einen eigenen Kalender zur Nutzung mit der Szene an.

Google Kalender anlegen (Animation)
Google Kalender anlegen (Animation)
  • Diesen (und nur diesen) Kalender freigeben
Google Kalender freigeben (Animation)
Google Kalender freigeben (Animation)

Anmerkung zur Kalenderfreigabe

Bitte beachte, dass Du mit der Freigabe jedem Google Benutzer und auch der Google Suche Zugriffsrechte für diesen Kalender einräumst.

Feiertage in den Kalender importieren

Nun importierst Du die unter Feiertage herunterladen auf Deinem Computer gespeicherten iCal Dateien um die gesetzlichen Feiertage in den Kalender einzutragen.

Feiertage importieren

Google Kalender API konfigurieren

Um über einfache Webrequests auf den Kalender zugreifen zu können benötigst Du noch einen API Key. Diesen generierst Du folgendermaßen:

Google Console Projekt erstellen (Animation)
Google Console Projekt erstellen (Animation)
  • Nach erfolgreicher Erstellung des Projektes musst Du diesem noch die Google Kalender API hinzufügen
Google Console Calendar API
Google Console Calendar API (Animation)
  • Und zum Abschluss noch einen API Key (Anmeldedaten) generieren
Google Calendar API Key
Google Calendar API Key (Animation)

Szene einrichten

Puh, bis hierher hast Du es schon mal geschafft. Kommen wir nun endlich zur Szene in Deinem Home Center 2.

  • Erstelle eine neue Lua Szene
  • Kopiere den Quellcode aus dem Download in das Formular
  • ACHTUNG: Vor dem ersten Speichern müssen ggf. Einstellungen vorgenommen werden
---------------------------------------------------
------------- Config ------------------------------

gVarStateToday		= "holidayToday"
gVarStateTomorrow	= "holidayTomorrow"
advDebug		= true
version 		= 'v1.0'
  • Die hier konfigurierten globalen Variablen werden beim ersten Start (Autostart) der Szene automatisch angelegt. Wenn Du diese umbenennen willst, dann musst Du dies vor dem ersten Speichern der Szene tun.
  • Nun kannst Du die Szene speichern. Die Ausgabe sollte wie folgt aussehen. Die Fehlermeldung deutet lediglich darauf hin, dass die globalen Variablen nicht gefunden wurden.
Erster Start der Szene
Erster Start der Szene
  • Nun benötigst Du noch die Google Kalender ID sowie den API Key
---------------------------------------------------
------------- Google Calendar ---------------------
gCalID				= ''
gCalAPIkey			= ''
Google Kalender ID
Google Kalender ID (Animation)
Google API Key
Google API Key (Animation)
  • Beide Parameter musst Du an folgender Stelle in der Szene eintragen
---------------------------------------------------
------------- Google Calendar ---------------------
gCalID				= '6fu3rbss91at49kordsd0bkhb7bp7bo@group.calendar.google.com'
gCalAPIkey			= 'AISDSAzaSyAdsdss3fnEQz2kUtSCgSLh0zQkGtXxP7jrU'
  • Hast Du alles eingetragen, kannst Du erneut speichern
Timer Start nach dem Speichern
Timer Start nach dem Speichern

Ablauf der Szene

Timer Funktion

Die Szene ist so konzipiert, dass sie jeden Tag um 00:05 Uhr (Parameter startTime) die Daten aus dem Google Kalender abfragt und das Startdatum aller zukünftigen Kalendereinträge mit dem Datum des aktuellen und dem nachfolgenden Tag übereinstimmt. Ist für einen der beiden Tage ein Eintrag vorhanden wird die entsprechende globale Variable von 0 auf 1 gesetzt.

Manueller Start

Weiterhin ist es möglich, den Abruf der Daten über den Start-Button zu erzwingen.

Manueller Start der Szene
Manueller Start der Szene

Eigene Kalendereinträge

Neben den importierten Feiertagen kannst Du natürlich auch eigene Einträge in Deinem Google Kalender erstellen, um die Variablen zu beeinflussen. So sind beispielsweise Heiligabend und Silvester keine gesetzlichen Feiertage, aber die meisten von uns sind an diesen Tagen Zuhause und möchten beim Frühstück nicht unbedingt frieren.

Bei der Anlage eigener Einträge ist zu beachten, dass es sich bei diesen immer um ganztägige Termine handelt muss. Weiterhin muss für jeden Tag ein einzelner Termin angelegt werden. Termine die sich über mehrere Tage erstrecken funktionieren nicht, bzw. würde hier nur der erste Tag berücksichtigt werden.

ChangeLog

  • 1.0: Initiale Version

Download

Download “Feiertage Google Calender” FeiertageGoogleCalendar1.0.zip – 10-mal heruntergeladen – 2 KB

8 Comments
  1. Hallo Bastian, habe ich erfolgreich installiert. Musste bei Google etwas länger suchen, bis ich alles beisammen hatte, läuft aber jetzt einwandfrei. Mal wieder super!!!!

    Werde mich jetzt mal dran setzen, einen weiteren Kalender für Urlaub zu installieren, um „Urlaubsvariablen“ zu kreieren, damit ich dann auch noch mal unabhängig vom „Feiertagskalender“ Urlaubsszenarien steuern kann.

    Auch diesmal herzlichen Dank! Gruß, Norbert

    1. Hallo Norbert,

      danke für Dein Feedback.
      Die Anleitung ist schon recht komplex geworden. Kannst Du mir noch sagen, an welcher Stelle Du Probleme hattest, dann kann ich ggf. noch etwas nachschärfen.

      Grüße
      Bastian

  2. Hallo Bastian, es hat bei mir eine Weile gebraucht, bis ich herausgefunden habe, dass ich für den Erhalt eines Api Keys „create credentials“ anklicken musste und dann ein relativ unscheinbarer Button vorhanden war, durch den der Google Calendar API Key erzeugt werden konnte.
    Gruß, Norbert

    1. Hallo Norbert,

      danke fürs Feedback, ich werde das bei Gelegenheit ein wenig deutlicher gestalten.

      Grüße
      Bastian

  3. Hallo Bastian,

    vielen Dank für das tolle Skript! Ich nutze es jetzt schon mehrere Monate in Verbindung mit einem Rolladen-Skript ohne Probleme.
    Heute am Samstag wurde der Kalender-Eintrag allerdings nicht erkannt, sprich die gV wurde nicht richtig gesetzt und die Rollläden öffneten wie an Arbeitstagen.
    Ich habe alles überprüft und konnte keinen Fehler feststellen. Auch im Debug-Fenster wurde kein Fehler, sondern nur „Kein Google Calendar Event gefunden.“ für heute und morgen angezeigt, obwohl ganztägige Events eingetragen sind.
    Erst nachdem ich die Kalendereinträge gelöscht und neu angelegt habe, wurden diese durch das Skript wieder erkannt.
    Diese Woche hatte ich allerdings auch das Problem, dass mein Nuki von jetzt auf gleich nicht mehr erreichbar war und das VD Probleme mit der API anzeigte. Nach Neustart der Nuki-Bridge war das Problem aber auch schon wieder behoben.

    Ich denke, dass es kein Zufall ist, das zwei API-Schnittstellen den Geist aufgegeben haben und vermute das Problem bei Fibaro.
    Ist Dir so etwas bekannt und hast Du eine Erklärung sowie einen Lösungsvorschlag dafür?

    Vielen Dank im Voraus!

    Viele Grüße
    Dirk

    1. Moin Dirk,

      freut mich zu hören, dass Du die Szene im Einsatz hast.
      Ich habe in den letzten Monaten deutlich seltener Probleme mit dem Home Center. Während es vorher alle paar Wochen mal einen Reboot brauchte, läuft es heute problemlos durch.
      Es ist natürlich schwer herauszufinden, woran es am Ende gelegen hat.

      Beste Grüße
      Bastian

  4. Hallo Bastian,
    Ich habe Probleme beim Einrichten des OAuth-Zustimmungsbildschirms, um die Szene fertigzustellen. Könnten Sie bitte beschreiben, wie die OAuth-Überprüfung eingerichtet wird? Oder helfen Sie bei der Einrichtung. Ich habe Google Kalender eingerichtet (gCal, gCalID, gCalAPIkey). Was mache ich falsch?
    Vielen Dank für Ihre Hilfe.
    Gasty

    [DEBUG] 21:34:25: ——————–START——————————–
    [DEBUG] 21:34:25: ——— Feiertagsvariable by mkshb.de ————-
    [DEBUG] 21:34:25: ———————————————————–
    [DEBUG] 21:34:25: ——— Prüfe globale Variablen
    [DEBUG] 21:34:25: ——— Benötigte Variablen sind vorhanden
    [DEBUG] 21:34:25: Datenabfrage manuell gestartet
    [DEBUG] 21:34:25: error Invalid argument
    [DEBUG] 21:34:25: error Invalid argument

    1. Hallo Gasty,

      so eine Ferndiagnose ist schwierig. Bist Du genau nach der Anleitung vorgegangen?

      Beste Grüße
      Bastian

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

Ich akzeptiere

Feiertage und Termine aus dem Google Kalender

von Bastian Lesezeit: 4 min
8