Wie wäre es eigentlich, wenn wir die Steuerung des Smarthomes auch durch Kalendereinträge vornehmen könnten? Praktisch, wäre das. :-)

Die Idee ist also folgende: In ioBroker eingelesene Kalendereinträge steuern das Smarthome. Schalten also z.B. bei einem Urlaubseintrag automatisch Licht und Devices aus. Endet der Eintrag im Kalender, werden automatisch alle devices wieder eingeschaltet, z.B. eine Satellitenverteiler-Anlage.

Wir steuern dies aktuell über Buttons in einer VIS-Oberfläche, z.B. bei Urlaubsabwesenheit diverse Geräte nach Aktivierung auszuschalten. Zukünftig soll dies automatisch über einen Kalendereintrag „abwesend“ erfolgen. Hierzu benötigen wir den ical-Adapter und einen url-freigegebenen Kalender, z.B. über Apple oder Google.

Die Logik ist wie folgt:

  • Der ical-Adapter liest regelmäßig den freigegeben Kalender ein
  • In den Einträgen ist ein entsprechender Eintrag mit Titel „abwesend“ enthalten
  • Im ical-Adapter ist ein Event mit der Suche nach dem Wort „abwesend“ definiert. Bei jedem Einlesen des freigegeben Kalenders wird nach dem Wort „abwesend“ in den Einträgen gesucht und bei „Treffer“ das Event in den ical-Objekten auf true gesetzt.
  • Ein Script überwacht den Status des Event-Objekts und wird bei true getriggert.
  • Bei ausgelöstem Trigger setzen wir den schon vorhandenen Button für die Abwesenheit auf true.
  • Sobald der Suchbegriff nicht mehr in den Kalenderbeiträgen gefunden wird, setzt der ical-Adapter das Event-Objekt wieder auf false.

Die Installation des ical-Adapters und das Einlesen von freigegeben Kalendern haben wir in diesem Artikel beschrieben.

Schauen wir uns die notwendigen Konfigurationen an:

In den Einstellungen des Adapter legen wir die Suchbegriffe für die entsprechenden Kalendereinträge an:

Events in ioBroker ical definieren

Events in ioBroker ical definieren

Diese Einstellungen reichen im Standard aus, die genaue Beschreibung findet man im ical-Readme.

Sobald die Suchbegriffe für die Events angelegt und gespeichert wurden, startet der Adapter neu und legt die Objekte hierfür an:

ical Event Objekte in ioBroker

ical Event Objekte in ioBroker

Die Objekte sind nach folgender Logik angelegt:

Unter dem Objekt-Knoten ical.0.events. erscheinen durchnummerierte Objekte, die Anzahl richtet sich nach der Einstellung „Tagesvorschau“ im ical-Adapter. Heißt z.B. bei 10 Tagen Vorschau, dass 10 Objekte mit Bezeichnung 0-10 angelegt werden. So können wir prüfen, an welchen Tagen das Event true oder false ist. Für den heutigen Tag im Objekt 0 können wir die Gültigkeit des Events genauer mit folgenden Unterobjekten prüfen:

  • Das Event im Pfad ical.0.events.0.later wird auf true gesetzt, wenn es heute noch stattfindet aber noch nicht begonnen ist.
  • Das Event im Pfad ical.0.events.0.now wird auf true gesetzt, wenn es aktuell aktiv ist.
  • Das Event im Pfad ical.0.events.0.today wird auf true gesetzt, wenn das Event am heutigen Tag aktiv ist.

Da wir bei Steuerung der Abwesenheit gerne stundengenau schalten möchten, prüfen wir auf das Objekt im Pfad ical.0.events.0.now.

Das passende Blockly-Script:

Blockly für ical Event Steuerung

Blockly für ical Event Steuerung

Wir lassen das Script tagsüber regelmäßig über folgende Cron-Definition ausführen:

Trigger für ical Event script

Trigger für ical Event script

Mit diesen wenigen Schritten haben wir es geschafft, die Steuerung unseres ioBrokers mit Hilfe von Kalendereinträgen zu realisieren.