Smart Home openHAB 2 Anwesenheitssimulation

Werbung
Smarthome-Training-openHAB2-Kurs-de

Smart Home – openHAB 2 Anwesenheitssimulation

In diesem Beitrag geht es um die Umsetzung einer openHAB 2 Anwesenheitssimulation mittels CalDAV Binding. Ich verwende den Google Kalender zur Schaltung der relevanten Ereignisse in meinem Smart Home. Wie die Einrichtung eines Google Kalender und des CalDAV Binding funktioniert, erfahrt ihr im Beitrag SmartHome – openHAB 2 CalDAV Binding. Die openHAB 2 Anwesenheitssimulation lässt sich bei Bedarf manuell oder auch per Regel mittels openHAB 2 Anwesenheitserkennung aktivieren.

openHAB 2 Anwesenheitssimulation – Kalender einrichten

Wie bereits schon erwähnt habe, trenne ich meine Kalender logisch nach dem Zweck. Ich denke, nun wisst ihr auch warum. Neben dem Müllkalender habe ich mir in Google einen Kalender für die openHAB 2 Anwesenheitssimulation in meinem Smart Home angelegt. Hier werden verschiedene für mich relevante Ereignisse aufgezeichnet. Wie ihr einen neuen Google Kalender anlegt könnt ihr in Kapitel „Google Kalender vorbereiten – Müll – Kalender anlegen“ im Beitrag SmartHome – openHAB 2 CalDAV Binding nachlesen. Richtet den Kalender entsprechend ein und kopiert Euch die Kalender ID aus den Einstellungen des Kalenders.

Werbung
Smarthome-Training-openHAB2-Kurs-de

openHAB 2 Anwesenheitssimulation – CalDAV Command Binding

Ich gehe davon aus, dass ihr sowohl das CalDAV Binding (personal) als auch das CalDAV Binding (command) installiert habt. Falls nicht holt dies entsprechend der Anleitung  in Kapitel „openHAB 2 CalDAV Binding – Installation CalDAV Binding“ des Beitrag SmartHome – openHAB 2 CalDAV Binding nach.

CalDAV Command Binding – caldavio Kalender definieren

Wurden beide Bindings installitert, öffnet im Smart Home Designer erst die Caldavio.cfg.openhab-2-caldav-binding-caldavio-cfg

Hier tragt die folgende Konfiguration ein.

  1. Gebt nun bei der URL für <KALENDER_ID> die Kalender ID des neuen Kalenders an.
  2. username ist Euer GMail Name (Mailadresse ohne @GMAIL.COM)
  3. Euer GMAIL Passwort

CalDAV Command Binding – caldavCommand definieren

Nun öffnet direkt die caldavcommand.cfg Datei.

smart-home-openhab-2-anwesenheitssimulation-caldavcommand

Hier tragt ihr den Kalender ein, der für die Ausführung von Kommandos gelesen werden soll. Bei mir heißt dieser PreSim. Daher sieht die Syntax wie folgt aus:

CalDAV Command Binding – caldavPersonal definieren

Abschließend definiert ihr nun die caldavPersonal. Wie ihr diese öffnet sollte mittlerweile klar sein. Tragt hier die folgende Zeile ein.

CalDAV Command Binding – Items und Sitemap definieren

Zum Schalten braucht ihr keine Items definieren, aber für einen ersten Test ist es ganz sinnvoll. So könnt ihr nämlich direkt sehen welches Ereignis aktiv ist und somit welches Item geschaltet wird. Eventuell wollt ihr Euch auch bei anderen Kalender die kommenden und aktiven Termine anzeigen lassen z.B. auf einem Tablet im Flur. Auch dies ist entsprechend möglich. Tragt in Eure Items Datei folgende zwei Zeilen ein.

Die erste Zeile zeigt das nächste kommende Ereignis. Die zweite Zeile das aktuell aktive Ereignis. Diese beiden Items könnt ihr in Eure Sitemap einbauen und so später kontrollieren, ob der Zugriff funktioniert. In die Sitemap übernehmt ihr die folgenden Einträge.

Falls ihr mit Sitemap, Items usw. nichts so recht was anfangen könnt, lest Euch den Beitrag Smart Home – openHAB 2 Konfiguration durch.

openHAB 2 Anwesenheitssimulation – Erster Test

Für einen ersten Test der Simulation könnt ihr Euren Google Kalender öffnen. Legt nun einen Kalendereintrag im richtigen Kalender an.

smart-home-openhab-2-anwesenheitssimulation-kalendereintrag

Im Grunde ist alles egal bis auf den Start und das Ende des Termins. Dies ist der Zeitpunkt, an welchem das Ereignis stattfindet. Weiterhin wichtig ist der Inhalt bei Notizen. Hier kommt folgendes rein.

  • BEGIN definiert was zur Anfangszeit des Termins passieren soll, END entsprechend das Ende
  • Hinter dem Doppelpunkt kommt einfach das Item, welches ihr schalten wollt. Bei mir dies die Wohnzimmerlampe am Sofa.
  • Darauffolgend kommt der Befehl. Bei Begin schalte ich an (ON) und bei Ende aus (OFF)

Ich empfehle Euch aber bei manueller Anlage immer einen entsprechenden Namen für den Kalendereintrag. Ansonsten findet ihr nichts wieder. Ihr wisst auch anhand des Namens nicht welches Item geschaltet wird. Die Items in meiner Sitemap sehen wie folgt aus. Sobald der Kalendereintrag zeitlich erreicht ist, springt der Name Wohnzimmer Sofa von Nxt auf Act und kurz drauf schaltet die Lampe ein.

smart-home-openhab-2-anwesenheitssimulation-sitemap

Diese Kalender könnt ihr auch für manuelle zeitgesteuerte Schaltung verwenden z.B. Gartenbewässerung etc. Ihr könnt von unterwegs einfach Termine auf Eurem Smartphone erstellen.

Aber manuell ist natürlich nicht das was wir unter Automatisierung verstehen. Ich werde in einem der Folgebeiträge auf eine mögliche Automatisierung eingehen.

Ich bin Thomas. Ich bin hauptberuflich SAP Berater und Softwareentwickler. Das Thema Smart Home hat mich nach der Sanierung unseres 60er Jahre Hauses gepackt. Es wurde alles in Eingenleistung geplant und die Buskabel verlegt. Ich betreibe seit einiger Zeit einen openHAB 2 Praxis Blog. Hier schreibe ich Schritt für Schritt Anleitungen (Tutorials) zur Umsetzung des eigenen Smart Home. Weiterhin engagiere ich mich in unserem MyFreeLife e.V. und helfe bei der Erstellung barrierefreier Smart Homes. Nun wird es Zeit mein breites Wissen im Bereich Smart Home mit Euch zu teilen.

4 Comments
  1. […] Xiaomi Smart Home Komponenten – Philips Hue – Homebridge – DuckDNS – Anwesenheitssimulation in Openhab – KNX – Geofancy – Owntracks – Devolo Z-Wave – Fibaro Z-Wave – […]

  2. Hallo Thomas,

    das sind meine Einstellungen:

    CALDAVIO.CFG
    caldavio:Openhab:url=https://apidata.googleusercontent.com/caldav/v2/xyxyx@group.calendar.google.com/events
    caldavio:Openhab:username=xyxy
    caldavio:Openhab:password=xyxy
    caldavio:Openhab:reloadInterval=1
    caldavio:Openhab:preloadTime=20000
    caldavio:Openhab:disableCertificateVerification=true

    CalDAVCommand.cfg
    caldavCommand:readCalendars=Openhab

    caldavPersonal.cfg
    caldavPersonal:usedCalendars=Openhab

    Das sind die minütlichen Einträge im LogViewer:
    2019-12-15 12:29:49.842 [WARN ] [caldav.internal.job.EventReloaderJob] – Sardine error while loading calendar entries: Unexpected response (401 – Unauthorized)

    com.github.sardine.impl.SardineException: Unexpected response

    at com.github.sardine.impl.handler.ValidatingResponseHandler.validateResponse(ValidatingResponseHandler.java:48) ~[227:org.openhab.io.caldav:1.13.0]

    at com.github.sardine.impl.handler.MultiStatusResponseHandler.handleResponse(MultiStatusResponseHandler.java:40) ~[227:org.openhab.io.caldav:1.13.0]

    at com.github.sardine.impl.handler.MultiStatusResponseHandler.handleResponse(MultiStatusResponseHandler.java:35) ~[227:org.openhab.io.caldav:1.13.0]

    at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:218) ~[227:org.openhab.io.caldav:1.13.0]

    at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:160) ~[227:org.openhab.io.caldav:1.13.0]

    at com.github.sardine.impl.SardineImpl.execute(SardineImpl.java:962) ~[227:org.openhab.io.caldav:1.13.0]

    at com.github.sardine.impl.SardineImpl.list(SardineImpl.java:417) ~[227:org.openhab.io.caldav:1.13.0]

    at com.github.sardine.impl.SardineImpl.list(SardineImpl.java:409) ~[227:org.openhab.io.caldav:1.13.0]

    at com.github.sardine.impl.SardineImpl.list(SardineImpl.java:386) ~[227:org.openhab.io.caldav:1.13.0]

    at org.openhab.io.caldav.internal.job.EventReloaderJob.loadEvents(EventReloaderJob.java:246) ~[227:org.openhab.io.caldav:1.13.0]

    at org.openhab.io.caldav.internal.job.EventReloaderJob.execute(EventReloaderJob.java:137) [227:org.openhab.io.caldav:1.13.0]

    at org.quartz.core.JobRunShell.run(JobRunShell.java:202) [107:org.eclipse.smarthome.core.scheduler:0.10.0.oh240]

    at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:573) [107:org.eclipse.smarthome.core.scheduler:0.10.0.oh240]

    Habe beide CalDAV Bindings installiert. Werde leider aus den Kommentaren in diversen Foren nicht richtig schlau…’ne Idee, was die Fehlermeldung meint.

    Gruß

  3. Hallo Sven du hast die falsche URL:
    https://www.google.com/calendar/dav/xyxyx@group.calendar.google.com/events

    Ausserdem – hast du die 2 stufige Autehtifizierung aktiviert? Dann musst du ein APP-Passwort anlegen

    LG
    Charly

  4. Ich bin skeptisch, wenn ich mein gmail Passwort sichtbar in eine cfg Datei eintrage. Gibt es keine Möglichkeit die Passwörter verschlüsselt abzulegen?

    • Hallo Andre,

      das kann ich gut verstehen. Gefällt mir auch nicht so sehr, aber das ist bei der Konfiguration aktuell nicht anders möglich. Auch die API Schlüssel z.B. Telegram stehen im Klartext.

      Allerdings muss du auch sehen, dass keiner auf den Pi und die Daten kommt ohne das Passwort für den Zugriff. Daher wähle ein sicheres Passwort, hänge die Kiste nicht ins Internet und du bist eigentlich sicher.

      Sehr aufpassen musst du z.B. falls du deine Ordner mit GIT verwaltest. Ohne gitignore stehen die Daten dann möglicherweise offen im Web.

      Beste Grüße
      Thomas

    Hinterlasse einen Kommentar