FHEM Tutorial-Reihe - Part 23: Mit Amazon Echo / Alexa FHEM steuern

Mit ** gekennzeichne Links auf dieser Seite sind Affiliatelinks.

Ich habe schon öfter die Anfrage per Mail und auch per Kommentar bekommen, mich mal mit Amazon Echo bzw. Alexa in Kombination mit FHEM zu beschäftigen. Da meine Einladung für Amazon Echo etwas auf sich warten lies, konnte ich diesem Wunsch leider erst jetzt nachkommen. Aber: Besser spät als nie, oder? Hier findest Du nun also Teil 1, in welchem wir mit dem Alexa Smart Home Skill einige Geräte steuern.

Was wird benötigt?

  • Amazon Echo oder Amazon Echo Dot
  • Eine DynDNS Domain, welche auf Euren IP zeigt. Egal welche. Ich nutze einfach die bereits vorhandene aus Tutorial Part 21 und 22
  • Eine IPv4-Adresse. DSLite oder IPv6 wird in diesem Tutorial nicht unterstützt.
  • Zugriff auf den Router, um Port-Forwarding für weitere Geräte zu konfigurieren.
  • Ein Amazon-Konto
  • nodejs muss installiert sein. Dies wird bereits in Tutorial 16 (Homebridge) erklärt. Bitte erst diesen Teil durchführen, falls nodejs noch nicht vorhanden ist
  • Eine Kreditkarte (wird nicht belastet, aber benötigt)
  • Keine Angst, dass die Befehle in der Amazon-Cloud ausgeführt werden

Dieses Tutorial basiert auf alexa-fhem in Version 0.1.9 von dem FHEM-Forums-Nutzer justme1986. Es könnte sein, dass eine neuere Version existiert wenn Du das Tutorial nachmachst. Ich würde immer empfehlen, die neuste Version einzusetzen, welche im FHEM-Forum zu finden ist.

Falls Du Probleme mit dem einrichten von alexa-fhem hast, schaue doch bitte im entsprechenden Wiki ob Du alles richtig gemacht hast. Leider entwickelt sich alles relativ schnell weiter und stand heute sahen die Oberflächen teilweise schon anders aus, als im Wiki gezeigt.

Bitte schreibe mir keine Emails bei Problemen, sondern kommentiere unter diesem Video. So wird auch anderen Lesern mit dem gleichen Problem geholfen. Mails mit Fragen kann ich aus zeitlichen Gründen leider nicht beantworten. Dafür ist dieses Thema einfach zu komplex. Bei Problemen bitte alles noch einmal genau anschauen und auch mit dem Wiki vergleichen - erst dann fragen, wenn Du Dir sicher bist, alles 1:1 umgesetzt zu haben!

Video

FHEM-Kurs

Tut mir leid, dass das Video teilweise so schnell ist - das nächste wird wieder in normalem Tempo aufgenommen, sodass man alles besser nachvollziehen kann. Ich weiß, dass es streckenweise schwer ist zu folgen. Aber das Video wäre wahrscheinlich über eine Stunde lang, wenn ich alles genau erklären würde. Feedback gerne in die Kommentare.

Nachdem alles umgesetzt wurde, sind folgende Sprach-Befehle möglich:

“alexa, schalte <gerät/raum> ein”
“alexa, schalte <gerät/raum> aus”
“alexa, stelle <gerät/raum> auf <wert> prozent”
“alexa, stelle <gerät/raum> auf <anzahl> grad”
“alexa, erhöhe <gerät/raum> um <anzahl> prozent”
“alexa, reduziere <gerät/raum> um <anzahl> prozent”
“alexa, erhöhe <gerät/raum> um <anzahl> grad”
“alexa, reduziere <gerät/raum> um <anzahl> grad”

Befehle + Scripts

cd
wget http://files.haus-automatisierung.com/alexa-fhem-0.3.4.tgz
tar -xzf alexa-fhem-0.3.4.tgz
mv package alexa-fhem
cd alexa-fhem
npm install
./createKey.sh

Dann das Passwort mit mindestens 4 Zeichen vergeben (z.B. alexa - am besten aber ein sichereres). Dann alle anderen Infos möglichst wahrheitsgemäß ausfüllen - ist aber nicht unbedingt wichtig. Nach dem Prozess müssten in dem Verzeichnis ein cert.pem und ein key.pem liegen. Dies kann mit folgendem Befehl getestet werden.

ls -la | grep pem

Weiter geht es auf den Seiten von Amazon (https://developer.amazon.com/) wie im Video beschrieben. Bitte genau darauf achten, welcher noch so kleine Haken wo gesetzt wird und alles 1:1 nachmachen. Ich versuche, so genau wie möglich auf die einzelnen Punkte einzugehen, aber bin selbst auch nur nach dem Wiki-Beitrag vorgegangen.

Folgende URLs braucht ihr während der Konfiguration:

  • Policy-URLs: https://www.amazon.com/gp/help/customer/display.html?nodeId=468496
  • Authorization-Url: https://www.amazon.com/ap/oa
  • Scope: profile:user_id
  • Access Token Uri: https://api.amazon.com/auth/o2/token

Weiter geht es auf http://aws.amazon.com

Hier noch die 3 Allowed-Return-URLs für das Security Profile:

  • https://layla.amazon.co.uk/api/skill/link/xxx
  • https://pitangui.amazon.com/api/skill/link/xxx
  • https://layla.amazon.com/api/skill/link/xxx

xxx wird dabei jeweils ersetzt wie im Video erklärt.

mkdir ~/.alexa
cd alexa-fhem/
cp config-sample.json ~/.alexa/config.json
vi ~/.alexa/config.json
cd ~/alexa-fhem/
./bin/alexa

Dann alles weitere auf dem Amazon Echo konfigurieren.

Wenn alles läuft, solltet ihr die einzelnen Geräte in Amazon über Gruppen schalten. Auch, wenn nur ein Gerät geschaltet werden soll, können so bessere Namen vergeben werden. Generell ist es empfehlenswert, nur Namen zu vergeben die auch im Duden vorkommen. Also ohne irgendwelche Unterstriche, Punkte oder andere Sonderzeichen. Ansonsten fällt es der guten Alexa etwas schwer, diese Geräte richtig zu identifizieren.

Daemon einrichten

Jetzt haben wir noch das “Problem”, dass wir immer Alexa-FHEM manuell starten müssten damit alles geht. Um dies zu umgehen, richten wir einen Daemon ein (wie schon bei der Homebridge). Dieser Teil wird nicht im Video gezeigt.

Strg + C

sudo mv alexa-fhem /opt/
sudo vi /etc/init.d/alexa

Das folgende Script stammt ursprünglich ebenfalls aus dem Forum. Ich habe lediglich die Teile entfernt, welche das Starten und Stoppen von alexa-fhem aus der FHEM-Oberfläche heraus ermöglichten, da ich dies für überflüssig halte und dem fhem-Benutzer dafür viel zu viele Rechte geben müsste.

Natürlich wäre es auch denkbar, den fhem-Benutzer diesen Prozess ausführen zu lassen. Da die Kommunikation aber eh nur über http läuft, fand ich es als pi-Benutzer völlig okay, wenn auch nicht ganz sauber getrennt. Aber das ist Geschmackssache. Achtet nur darauf, die alexa-Konfiguration in Home korrekt zu verschieben wenn ihr plant, alles mit dem fhem-Benutzer durchzuführen.

#!/bin/sh
### BEGIN INIT INFO
# Provides: alexa
# Required-Start: $network $remote_fs $syslog
# Required-Stop: $remote_fs $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Start daemon at boot time for alexa
# Description: Enable service provided by daemon.
### END INIT INFO
export PATH=$PATH:/usr/local/bin
export NODE_PATH=$NODE_PATH:/usr/local/lib/node_modules
PID=`pidof alexa`
export ALEXAPATH="/opt/alexa-fhem" 
export LOGPATH="/opt/alexa-fhem/log"

case "$1" in
start)
if ps -p $PID > /dev/null 2>&1; then
    echo "Alexa is already running"
else
    su - "pi" -c "cd $ALEXAPATH;./bin/alexa > $LOGPATH/alexa-`date +%Y-%m`.log 2>&1 &"
    echo "Alexa starting"
    sleep 2
    $0 status
fi
;;
stop)
if ! ps -p $PID > /dev/null 2>&1; then
    echo "Alexa is not running"
else
    kill $PID
    echo "Alexa closed"
fi
;;
restart)
if ! ps -p $PID > /dev/null 2>&1; then
    $0 start
else
    $0 stop
    $0 start
fi
;;
status)
if ps -p $PID > /dev/null 2>&1; then
    echo "Alexa is running PID $PID"
else
    echo "Alexa is not running"
fi
;;
*)
echo "Usage: $0 {start|stop|status|restart}"
exit 1
;;
esac
echo "script done"
exit 0
sudo chmod 755 /etc/init.d/alexa
sudo update-rc.d alexa defaults
mkdir /opt/alexa-fhem/log
sudo /etc/init.d/alexa start

Update auf Version 0.4.4 / Payload-Version v3

FHEM-Kurs

Die neue Version gibt es hier zum Download

Einfach herunterladen und überschreiben. Am besten direkt im ersten Schritt damit installieren. Danach den alexa-fhem Service einmal neustarten und fertig ist alles.


Newsletter

Trage Dich jetzt in den Newsletter ein und genieße dadurch viele Vorteile:

  • 5€-Gutschein als Dankeschön
  • Zugang zu exklusiven Inhalten
  • Rabattaktionen für Kurse
  • Angebote für Produkte

* Durch Angabe meiner E-Mail-Adresse erkläre ich mich damit einverstanden, dass mir regelmäßig Informationen und Produktempfehlungen aus dem Fachgebiet Smart Home zugesendet werden. Mit dem Eintrag akzeptieren Sie unsere Datenschutzbestimmungen. Meine Einwilligung kann ich jederzeit widerrufen.

Matthias Kleine

Matthias Kleine

Großer Fan und Anhänger von OpenSource-Projekten und erweiterbaren Haus-Automatisierungskomponenten. Je offener und flexibler das System, desto besser. Ich lege mich ungern auf einzelne Protokolle oder Standards fest, sondern probiere aus allen Welten das Beste zu verheiraten. Unterwegs als Softwareentwickler, Trainer und Blogger im Bereich Smart Home.

Auf YouTube und hier im Blog gibt es bereits unzählige kostenlose Videos, Informationen und Tutorials. Wenn Dir das noch nicht reicht, ist ein Training genau das richtige für Dich! Die folgenden Trainings haben den Vorteil, dass immer von Anfang an gestartet wird und Du ohne Vorwissen teilnehmen kannst.