Schlagwort-Archive: Amazon Echo

Amazon Echo mit nahezu jedem Wifi Gerät koppeln – Pi, HABridge & fhem

Mit einem Amazon Echo oder Echo Dot wird es eigentlich erst interessant, wenn man Lichter, Steckdosen & Rolladen steuern kann. Von Haus aus unterstützt der Echo einige WLAN-fähige Produkte direkt. So kann man Echo kompatible WiFi Steckdosen kaufen oder auch mit einer Hue Bridge das Philips Hue System einbinden. Die Komponenten sind allerdings meistens etwas teurer und teilweise man noch eine spezielle Bridge kaufen.
Mit einem Rasperry Pi kann man mit ein wenig Konfigurationsarbeit so ziemlich jedes WLAN-fähige Gerät mit dem Echo zusammenbringen. Alternativ kann man auch Alexa Skills programmieren. Das ist aber nicht ganz trivial und so habe ich mich entschieden erst einmal eine Basiskompatibilität mit Hilfe von HABridge herzustellen.

Im Folgenden gehe ich davon aus, dass ein Pi erfolgreich am Netz läuft. Auf dem Pi kann man einen Service namens HABridge installieren. HABridge ist ein Emulator für diverse Smarthome Protokolle, wie z.B. Philips Hue. Somit kann HABridge eine Philips Hue Brigde emulieren („nachmachen“). In HABridge eingetragene Geräte werden vom Echo erkannt („Alexa, erkenne Geräte“). So gut das klingt, muss ein Wort der Warnung hier hin: HABridge hat aktuell eine massive Sicherheitslücke und exponiert root Rechte auf dem Webinterface an jeden Nutzer im Netz.

Java prüfen & installieren:
HABridge erfodert java. Das ist auf den meisten Pi Installationen nicht drauf. Ein Test ist einfach:

pi@raspberrypi ~ $ java -version
java version "1.8.0"
Java(TM) SE Runtime Environment (build 1.8.0-b132)
Java HotSpot(TM) Client VM (build 25.0-b70, mixed mode)

Wenn statt dessen eine Fehlermeldung kommt, muss zunächst java installiert werden:

pi@raspberrypi ~ $ sudo apt-get update && sudo apt-get install oracle-java8-jdk

Das dauert eine Weile.

HABridge installieren:
Wenn java installiert ist, kann man die HABridge installieren. Es gibt mehrere Varianten auf github. Ich habe diese hier genommen: https://github.com/bwssytems/ha-bridge/

pi@raspberrypi:~ $ cd
pi@raspberrypi:~ $ mkdir habridge
pi@raspberrypi:~ $ cd habridge
pi@raspberrypi:~/habridge $ wget https://github.com/bwssytems/ha-bridge/releases/download/v3.5.1/ha-bridge-3.5.1.jar

HABridge automatisch starten:
Wie auf der github Seite von HABridge beschrieben wird, geht ein automatischer Start per rc.local schief, weil zum Startzeitpunkt das Netzwerk des Pi noch nicht funktioniert. Dort ist auch beschrieben, wie man einen automatischen Start per systemctl einrichtet. Diese Methode klappt aber mit vielen Distributionen nicht. Die Alternative ist die Einrichtung als Daemon über init.d. Hier ist ein passendes Starterscript: habridge
Dazu die beiliegende Datei nach /etc/init.d kopieren, den Besitzer auf root ändern und die Nutzerrechte anpassen. Zu schnell? – Ok:
Die Date habridge auf Eurem Windows Rechner in einem Texteditor öffnen und alles kopieren. Dann per putty auf dem pi einloggen und:

pi@raspberrypi ~ $ sudo nano /etc/init.d/habridge

Es ist nun ein Editor aufgegangen. Dort kann man per rechter Maustaste die kopierten Inhalte einfügen. Danach mit Strg+X und bejahen der Frage (je nach Sprache Y und J) abspeichern. Nun noch die Rechte anpassen:

pi@raspberrypi ~ $ sudo chmod 755 /etc/init.d/habridge

HABridge wird jetzt bei einem Neustart automatisch hochgefahren. Es geht auch manuell:

pi@raspberrypi ~ $ /etc/init.d/habridge start

HAbridge ist jetzt auf Port 81 konfiguriert. Damit bleibt Port 80 für Webserver Anwendungen frei.

HABridge konfigurieren & Gerätenamen wählen:
Mit einem Browser auf dem PC sollte jetzt ein Zugriff auf habridge klappen. Falls Euer Pi den Netzwerknamen raspberrypi trägt, geht das so: http://raspberrypi:81

Es erscheint die HABridge Hauptseite; hier ein Screenshot. Bei der ersten Einrichtung sind natürlich noch keine Geräte eingetragen.

Nun muss ein Bridge Gerät hinzugefügt und eingerichtet werden. Folgende Einträge steuern eine Lampe an, die per fhem gesteuert wird. fhem ist dabei auf dem selben pi installiert.

Wenn das Gerät erfolgreich hinzugefügt wurde, erscheint es auf der HABridge Hauptseite und kann mit Test ON und Test OFF gesteuert werden.
Alles was sich mit eine URL steuern lässt, kann man so in HABridge eintragen. Die entsprechende URL im HABridge Konfigurationsdialog als On URL bzw Off URL eintragen. Bei FHEM kann man sich die Kommandos von der eigenen FHEM Webseite per „Link kopieren“ besorgen. Programme, die auf dem Pi selbst laufen, bekommen die IP 127.0.0.1 (=localhost) zugewiesen. Mit den weitern Feldern im Konfigurationsdialog kann man auch komplexere Paramterübergaben realisieren. Für die meisten WLAN Steckdosen kann entsprechende URLs im Netz finden. Damit man die Geräte zielsicher erreichen kann, muss man dafür sorgen, dass sie eine konstante IP Adresse vom Router zugewiesen bekommen. Wie das geht, hängt vom Routermodell ab; also bitte im Menü des Routers nachsehen.

HABridge und Scripte auf dem Pi:
Man kann mit HABridge alternativ auch ein Script auf dem Pi starten. Dazu stellt man den Device Type auf Execute Script/Program stellen. Das folgende Beispiel zeigt die Konfiguration, um das script tf.sh im home Verzeichnis des Nutzers pi auszuführen.

Warnung – HABridge hat ein massives Sicherheitsloch
An dieser Stelle muss ich eine deutliche Warnung anbringen. Die Scripte werden von HABridge mit root Rechten ausgeführt. Somit stellt HABridge ein frei zugängliches Webinterface zur Verfügung, welches Scripte auf dem Pi mit root Rechten ausführbar macht. Keinesfalls sollte ein Pi mit HABridge vom Internet her zugreifbar sein. Im Heimnetz ist HABridge nur akzeptabel, wenn alle Nutzer 100% vertrauenswürdig sind. Auf Dauer sollte hier unbedingt ein Passwortschutz her, allerdings reagieren die Macher von HABridge bisher nicht.

Alexa anlernen:
Einfach: „Alexa, Geräte erkennen“
Nach ein paar Sekunden meldet Alexa die erkannten Geräte. Erster Test: „Alexa, Licht anschalten“.
Alexa kommt nicht mit jedem Gerätenamen klar. Aktuell sind Umlaute problematisch. Ebenso mag Alexa keine Gerätenamen, die man nicht im Wörterbuch findet.
Ein paar Beispiel, die bei mir gut funktionieren: Licht, Stehlampe, Jalousie, Weihnachtsbaum. Nicht gut gehen: Rolladen, Deckenfluter, Schrank
Vermutlich wird sich die Amazon Spracherkennung noch verbessern. Aktuell muss man ein wenig probieren. Wenn man die Namen in HABridge per edit ändert, einfach danach Alexa nochmal nach den Geräten suchen lassen.
Tipp: Von HABridge aus „My Echo“ gehen. Dann auf Einstellungen –> Verlauf. Dort kann man sehen, was Alexa verstanden hat.