OpenHAB mit Hilfe Smartphone-Kalender steuern
Um Dinge ein/auszuschalten kann man unterschiedliche Wege nutzen. Entweder direkt ein-/ausschalten oder zeitgesteuert triggern. Hierbei wäre es mir lieb dies nicht per Cron-Job tätigen zu müssen für jede einzelne Tätigkeit bzw. jede Änderung einzeln zu programmieren. Dementsprechend bietet sich eigentlich ein Kalender an, den man bequem per Smartphone anzeigen/anpasen kann und die Steuerung übernimmt. Insbesondere kann man hier relativ einfach wiederkehrende Dinge triggern oder auch einmal aussetzen.
Schritt 1: Google Kalender API aktivieren
Um mit dem Kalender direkt kommunizieren zu können nutzen wir zuerst einmal den Google API Manager unter console.developers.google.com.
Also Anmelden und ein neues Projekt dort anlegen. Nennen wir es erstmal Openhab
Im Seitenmenü unter Zugangsdaten die OAuth auswählen und vervollständigen.
Nun die Anmeldedaten per OAuth-Client-ID Aktiveren und sonstiges als Typ auswählen.
Nun erhalten wir die Client-ID und den Clientschlüssel. Diese bitte speichern!
Und nicht vergessen die Google Calendar API dem Projekt hinzuzufügen.
Schritt 2: Verbinden OpenHAB - Google Calender
Nun aktivieren wir im HABmin unter Konfiguration-> Erweiterungen -> Misc den Google Calendar Scheduler und tragen die ID Daten in der Konfigurationsdatei unter services/gcal.cfg ein.
Dementsprechend die Client ID und Client_Secret wie oben erzeugt eintragen.
calendar_name=OpenHAB
#hier habe ich einen separaten Kalender geplant
refresh=900000
# dies entspricht einer Aktualisierung alle 15 min
Nun sollten im OpenHAB-Log (bei mir unter http://openhabianpi:9001/) ein paar Zeilen wie folgt auflaufen:
==> /var/log/openhab2/openhab.log <==
2018-02-12 19:52:21.032 [INFO ] [openhab.io.gcal.auth.GCalGoogleOAuth] - ################################################################################################
2018-02-12 19:52:21.035 [INFO ] [openhab.io.gcal.auth.GCalGoogleOAuth] - # Google-Integration: U S E R I N T E R A C T I O N R E Q U I R E D !!
2018-02-12 19:52:21.038 [INFO ] [openhab.io.gcal.auth.GCalGoogleOAuth] - # 1. Open URL 'https://www.google.com/device'
2018-02-12 19:52:21.041 [INFO ] [openhab.io.gcal.auth.GCalGoogleOAuth] - # 2. Type provided code JTKS-SXST
2018-02-12 19:52:21.044 [INFO ] [openhab.io.gcal.auth.GCalGoogleOAuth] - # 3. Grant openHAB access to your Google calendar
2018-02-12 19:52:21.047 [INFO ] [openhab.io.gcal.auth.GCalGoogleOAuth] - # 4. openHAB will automatically detect the permiossions and complete the authentication process
2018-02-12 19:52:21.050 [INFO ] [openhab.io.gcal.auth.GCalGoogleOAuth] - # NOTE: You will only have 1800 mins before openHAB gives up waiting for the access!!!
2018-02-12 19:52:21.053 [INFO ] [openhab.io.gcal.auth.GCalGoogleOAuth] - ################################################################################################
Dementsprechend handeln wir auch. Bei Aufruf der Url und entsprechende Codeeingabe kommt eine Abfrage ob wir OpenHab den Zugriff auf unseren Kalender gestatten. Ich denke man sollte hier ja sagen.
Schritt 3: OpenHAB steuern mittels Kalendereinträgen
Schon geschafft. Nun kann man mittels einfacher Kalendereinträge im Kalender "OpenHAB" Events triggern.
Hierbei ist der Titel irrelevant in der Beschreibung ist folgendes Format zu verwenden:
start {
send|update <item> <state>
}
end {
send|update <item> <state>
}
start definiert hierbei den Startzeitpunkt des Kalendereintrages und End entsprechend den Endzeitpunkt.
oder verkürzt einfach:
send|update <item> <state>
Dementsprechend habe ich mir einen Eintrag erstellt um jeden Morgen den Staubsauger seine Runde drehen zu lassen mittels:
send iWZStaubsauger ON
Nun kann hieraus einfach ein Serientermin erstellt werden der Wochentags ausgeführt wird.
Zusätzlich kann man auch noch mittels des Calendars eine Anwesenheitssimulation durchführen um den Eindruck einer leeren Wohnung zu vermeiden. Allerdings werde ich dies später erst implementieren.
Referenzen:https://docs.openhab.org/addons/ios/gcal/readme.html