Homematic: TTS mit Alexa

Dank einer Anleitung von Heupel’s Blog konnte ich heute auch erfolgreich eine TTS Ausgabe von Homematic auf meinen Alexa’s realisieren.

Da das Script etwas bescheidend eingefügt ist (Code-Formatierung), möchte ich das Script mal im RAW-Format veröffentlichen (Alle Rechte liegen bei Heupel).
Wenn man das Script so per Copy+Past Methode in nano reinkopiert, wird daraus ein Python-Technischer Alptraum.
Benötigt wird Pyhton 2.7

Weitere Voraussetzungen:
1) Alexa Remote Control – Script: Link
Hier die Plain Version herunterladen
2) Python Modul bottle: pip install bottle
3) speechconnector.py: Link
Bei dieser Datei muss noch das .txt entfernt werden

Ordnerstruktur:
Ich habe mir auf meinem Pi unter /root/ einen Ordner “alexa” angelegt,
/root/alexa
In dem alle Daten hierzu gespeichert sind, sprich:

alexa_daemon.sh
alexa_remote_control_plain.sh
speechconnector.py

Der alexa_daemon.sh ist recht unauffällig, da startet der Webserver speechconnector.py in einer screen session, das ganze in dann unter /etc/rc.local eingetragen, damit diese automatisch startet:
screen -dmS AlexaDaemon python /root/alexa/speechconnector.py

In der alexa_remote_control_plain.sh muss noch die eigene Amazon E-Mail Adresse und das Kennwort eingetragen werden, zusätzlich sollte man es einmal ausführen, damit die Device Liste und der Cookie angelegt wird.

Im Anschluss kann man die Datei mal aufrufen via:
python ./speechconnector.py
Die Terminalausgabe sollte dann wie folgt aussehen:

Kommen wir nun zum Homematic Script.
Es werden hier 2 Variablen benötigt:
1) Alexa.Function als Werteliste – ich habe hier “Speak” und “Silence” als Werte definiert
2) Alexa.Speak als Zeichenkette, hier wird später der Text eingegeben.

Bild in Groß

Zusätzlich muss noch ein Programm erstellt werden, welches getriggert wird, wenn die Systemvariable Alexa.Function auf Speak gesetzt wird.
Wir nennen dieses Programm mal – Alexa.Speak
Mit diesem Script wird die Variable Alexa.Speak ausgelesen und als Variable an den Aufruf von dem bottle Server gesendet.
Das sieht wie folgt aus:

Bild in Groß

Das dazugehörige Script findet ihr hier: Link

Soweit geschafft, nun hat man alle vorraussetzungen erfüllt, man kann nun in einem Programm (z.B.: Waschmaschine ist fertig) das ganze ausführen:
In meinem Fall sieht das so aus:

Bild in Groß

Wenn die Waschmaschine aus ist (via TP-Link HS110, Wert: Leistung < 5 Watt für 5 Minuten), dann soll das ganze via Alexa kommuniziert werden.

Wenn man verschiedene Alexa ansteuern möchte, kann man einfach die Datei speechconnector.py kopieren, neuen Daemon starten mit anderem Port (z.B.: 8081, 8082, usw…) und in der kopierten Datei das Device ändern, und das Programm in Homematic kopieren und dort dann auch den Port entsprechend abändern, geht villeicht auch schöner wenn man das Zielgerät als Variable an Python übergeben kann, aber dafür reichen meine Kenntnisse aktuell noch nicht aus 😉