Sonntag, 10. Mai 2020

Openhab mit IFTTT (aber ohne myopenhab)

Viele von euch werden IFTTT kennen. Es ist eine Online-Plattform, mit der man einfache Regeln erstellen, und so seine Smart Home Geräte steuern kann.

Ich habe mich mal rangesetzt und einfache Sprachbefehle für Google Assistant/Google Home erstellt, um Openhab Regeln anzustoßen.

Ich habe mich gegen die Nutzung von myopenhab entschieden. Ich hatte irgendwie im Kopf, dass der Dienst Geld kosten würde. Beim heutigen Nachschauen habe ich davon aber nichts gesehen.

Wichtig:
Ich habe mein Openhab öffentlich erreichbar gemacht. Wenn ihr dies auch machen wollt, befolgt unbedingt die empfohlenen Sicherheitsvorkehrungen der Openhab Webseite.

Lokale Vorbereitungen

Nachdem ihr euer Openhab safe gemacht habt, könnt ihr für Openhab eine Portweiterleitung Einrichten.
Bei einer Fritzbox geht das über "Internet - Freigaben - Portfreigaben - Gerät für Freigabe hinzufügen"
Unter Gerät wählt ihr euer Openhab aus.
Klickt nun unten auf "Neue Freigabe".

Unter Anwendung wählt Ihr "Andere Anwendung" aus und schreibt bei Bezeichnung "Openhab" rein.
Als Protokoll wählt ihr TCP.
Bei Port an Gerät schreibt ihr in beiden Felder 80 rein. Dies unter der Voraussetzung, dass ihr bei Reverse Proxy den Standardport 80 beibehalten habt.
Unter "Port extern gewünscht" sucht ihr euch einen beliebigen high Range Port aus. Zum Beispiel 53961.
Den Rest können wir so lassen und klicken 2 Mal auf OK und anschließend auf Übernehmen.

Nun könnt ihr über eure Public IP auf Openhab zugreifen. Da diese sich jedoch immer wieder ändert, lohnt es sich, einen DynDNS Dienst zu verwenden. Das Thema DynDNS wird vielleicht in einem anderen Blogeintrag mal beschrieben. Hierzu gibt es aber sehr viele Anleitungen im Internet.

Openhab API

Openhab liefert eine REST API mit. Hierüber können Aktionen über die Browser Adresszeile durchgeführt werden.
Um eine ausführliche API Anleitung zu erhalten, klickt ihr im Paper UI auf Add-ons - User Interfaces - REST Documentation - INSTALL

Anschließend könnt ihr euch die API genauer anschauen, indem ihr auf http://openhab:8080/doc/index.html geht.

In diesem Beispiel wollen wir eine Regel per API ausführen.
Hierfür benötigen wir die UID der Regel.
Klickt man in Paper UI auf Rules und klickt die gewünschte Regel an, wird die UID am oberen Rand angezeigt und kann von da kopiert werden.
Die UID der Regel um meine Heizung einzuschalten sieht in etwa so aus:

75e71a43-7540-4888-b21b-1186bc0ba777

In der API Dokumentation geht hervor, dass folgendes Format verwendet werden muss

POST /rules/{ruleUID}/runnow

Die vollständige Adresse wäre also:

http://openhab:8080/rules/75e71a43-7540-4888-b21b-1186bc0ba777/runnow


Diese Adresse ist jedoch nur innerhalb eures Netzwerks erreichbar. Die externe Adresse würde dann wie folgt aussehen:

http://<Benutzername>:<Password>@<Public IP oder DynDNS>/rules/75e71a43-7540-4888-b21b-1186bc0ba777/runnow

Eigene IFTTT Regel 

Um IFTTT nutzen zu können, müsst ihr euch erst Anmelden.
Klickt nun oben rechts auf "Explore" und dann auf "Make your own from scratch CREATE".
Klickt nun auf das große + Zeichen zwischen "If" und "This", gebt in der Suche "Google" ein und klickt auf "Google Assistant". Ggf. müsst ihr euch nun mit eurem Google Account einloggen.
Klickt nun auf "Say a simple Phrase"

Nun könnt ihr bis zu 3 Sätze eintragen, auf die euer Google Assistant reagieren soll.
1. Heizung einschalten
2. Heizung an
Das dritte Feld lassen wir leer.
Wenn ihr möchtet, könnt ihr unter "What do you want the assistant to say in response" eintragen, was Google euch anschließend antworten soll.
Als Sprache stellen wir deutsch ein und klicken auf "Create Trigger"

Als Nächstes stellen wir ein, was ausgeführt werden soll, wenn wir diese Befehle sagen.
Hierfür klicken wir auf das + Zeichen zwischen "Then und "That".
In der Suche tragen wir "Web" ein, klicken auf "Webhooks" und anschließend auf "Make a web request".

Als URL geben wir unsere externe Adresse von oben ein.
Bei Method wählen wir "POST" aus und klicken auf "Create action"

Glückwunsch! Nun hört euer Google Home und euer Google Assistant auf den neu erstellten Befehl. Ich habe jedoch die Erfahrung gemacht, dass es einige Sekunden dauern kann, bis die Regel aktiv ist.

Fazit

IFTTT ist eine tolle Art und Weise eigene Google Assistant Befehle zu generieren. Stöbert ruhig ein wenig in den bereits vordefinierten Aktionen herum. IFTTT kann noch viel mehr.
Man könnte auch neue Notizen in Evernote anlegen oder andere Geräte im Netzwerk, die über eine API verfügen, per Sprache steuern. Auch, wenn dies von Haus aus nicht funktionieren würde.