Eigene Sprachausgabe über Alexa dank ioBroker

Ich möchte euch gerne zeigen wie ihr mit ioBroker und einem oder mehreren Amazon Echos eigene Sprachausgaben realisieren könnt.

Ich bin ein wirklich großer Amazon Echo Fan. Bereits kurz vor der offiziellen Einführung in Deutschland hatte ich mit einem Echo und einen Echo Dot gestartet und inzwischen sind noch ein Echo 2. Generation und ein Echo Show 1. Generation dazu gekommen. Morgen wird die Familie dann noch um ein 2.1 System aus zwei Echo Plus und einen Echo Sub erweitert.

Warum bin ich ein so ein großer Fan?

Wer sich mit Heimautomatisierung oder Smart Home beschäftigt hat wird mir sicher zustimmen. Mit „seinem Haus sprechen“ zu können bringt die ganze Geschichte auf das nächste Level. Was bringen mir Licht und Heizung die ich mit einer App auf dem iPhone schalten kann? Einfach in den Raum rufen was man gerne hätte fühlt sich da schon deutlich fortschrittlicher an.

Warum ausgerechnet Alexa?

Amazon war der erste Anbieter der seine Smart Speaker auf den deutschen Markt gebracht hat und konnte mich direkt überzeugen. Klar wäre Apple eigentlich meine erste Wahl gewesen, aber auch jetzt besitze ich noch keinen HomePod, da ich bereits zu stark ins Echo Universum investiert habe. Ich habe aber auch eine Sache stark zu schätzen gelernt, die Apple nicht bedienen möchte: Offenheit! Ich kann selbst wählen ob ich Amazon Music, Spotify oder Deezer auf meinen Echos verwenden möchte. Auf einem HomePod wäre ich auf Apple Music beschränkt. Letzteres läuft aber wiederum nicht auf den Echo Geräten. Genau aus dem Grund habe ich sogar vor zwei Monaten mein Apple Music Abo der ersten Stunde gekündigt und bin zu Spotify gewechselt. Neben meinen Echos habe ich noch ein paar Sonos Lautsprecher im Einsatz. Klar klingen die noch besser, sind aber eben auch total dumm. Immerhin kann ich sie mit Alexa über die Echos fernsteuern was mir in den meisten Fällen schon reicht. Ich muss jedoch zugeben, dass obwohl ein Sonos Play 5 im Esszimmer steht in letzter Zeit fast nur noch der Echo Show, welcher direkt daneben steht, für die Hintergrundbeschallung zum Einsatz kommt.

Die Echos klingen (bis auf den ersten Dot) wirklich OK. Klar, die Sonos Boxen klingen alle besser, sind aber eben auch deutlich teurer. Ich bin gespannt wie sich das 2.1 System im Vergleich zum Play 5 schlägt!

Update: das 2.1 System mit zwei Echo Plus 2.Gen und einem Echo Sub klingt fantastisch! Ich würde sagen es kommt an den Play 5 heran (der klingt in den Höhen noch etwas besser), ist deutlich günstiger und man hat halt Alexa. Ich habe eine Multiroom Gruppe mit dem 2.1 Sytem im Wohnzimmer und meinem Echo Show der 1.Gen im Esszimmer eingerichtet. Klingt unfassbar gut und man kann auf dem Display vom Show weiterhin sehen was gespielt wird.

Sprachausgabe mit Alexa

Zurück zum eigentlichen Thema: Eigene Sprachausgabe mit Alexa realisieren.

Voraussetzung ist, dass ihr ioBroker installiert habt und den Adapter „Alexa 2 (Amazon Echo) dort eingerichtet habt. Um mit Alexa eure Smarthome Geräte zu steuern benötigt ihr ausserdem noch den entsprechenden Alexa Skill „ioBroker“ und den Adaper „Cloud connection“- für die Sprachausgabe wäre dieser aber optional.

Ich werde in Zukunft gerne noch auf die Installation und Konfiguration von ioBroker eingehen heute setzte ich das aber einfach mal voraus.

Liste aller Echo Geräte

Unter der Liste der Objekten findet ihr nun einen Knoten „alexa2.0“ und dort den Knoten „Echo-Devices“. Klappt ihr einen der Knoten auf findet ihr den Knoten „Commands“ und einen Eintrag „speak“. Genau den benötigen wir für die Sprachausgabe. Die anderen Kommandos sind auch interessant und solltet mal etwas damit experimentieren.

Schreibt ihr nun per Script oder – das bietet sich zum Testen erstmal an – direkt über den Objekt-Browser einen Text in den Eintrag „speak“ wird dieser von Alexa direkt auf dem entsprechenden Echo wiedergegeben. So kann zum Beispiel ein Script einen Begrüssungstext sprechen wenn jemand nach Hause kommt, sagen wenn die Alarmanlage scharf geschaltet ist, warnen wenn noch Fenster geöffnet sind wenn ihr das Haus verlassen wollt, und, und, und. Es gibt natürlich auch andere TTS Systeme. Die sind aber meist deutlich aufwendiger was Installation und Konfiguration angeht und ich mag es wenn ich immer mit der selben Stimme angesprochen werde. Falls Alexa mal ausfällt habe ich eh ein Problem, daher ist das Thema „oh nein, das läuft ja in der Cloud“ für mich egal.

Was tun wenn man zu „viele Echos“ hat?

Manchmal möchte man vielleicht die Sprachausgabe einfach auf dem letzten aktiven Echo haben – ich habe zum Beispiel eigene Interaktionen gebaut die ich über Sprache auslöse und die dann natürlich auch auf der Box beantwortet werden sollen in die ich hineingesprochen habe. Hierfür habe ich ein kleines Script gebaut dass immer auf dem Echo mit dem zuletzt interagiert wurde die Sprachausgabe startet.

  • Als erstes wird der Adapter „Script Engine“ benötigt. Diesen einfach wie schon die anderen Adapter installieren.
  • Wir legen dann einen eigenes Objekt unterhalb des Knoten javascript.0 an. Wir nennen es alexaAntwort und den Typ stellen wir auf Zeichenkette.
  • Und hier das nötige Script in Blockly. Es überwacht das gerade angelegte Objekt, bei Änderungen schaut es nach welcher Echo als letztes aktiv war und gibt den Wert aus alexaAntwort auf diesem Echo aus.

Source Code

Der Code kann einfach kopiert werden – legt ein neues Script vom Typ Javascript an, kopiert den Quelltext hinein und beim Speichern fragt er ob ihr zu Blocky konvertieren möchtet.

var alexaF_C3_BCrSprachausgabe;


on({id: "javascript.0.alexaAntwort"/*alexaAntwort*/, change: "any"}, function (obj) {
  var value = obj.state.val;
  var oldValue = obj.oldState.val;
  alexaF_C3_BCrSprachausgabe = ['alexa2.0.Echo-Devices.',getState("alexa2.0.History.serialNumber").val,'.Commands.speak'].join('');
  setStateDelayed(alexaF_C3_BCrSprachausgabe, getState("javascript.0.alexaAntwort").val, false, parseInt(0, 10), false);
});

//JTNDeG1sJTIweG1sbnMlM0QlMjJodHRwJTNBJTJGJTJGd3d3LnczLm9yZyUyRjE5OTklMkZ4aHRtbCUyMiUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMm9uJTIyJTIwaWQlM0QlMjJ+Q2p+ak8lNjA3a213JTJGJTdDKSUyQiUyNSElMkM1MyUyMiUyMHglM0QlMjItMTEyJTIyJTIweSUzRCUyMjEzJTIyJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyT0lEJTIyJTNFamF2YXNjcmlwdC4wLmFsZXhhQW50d29ydCUzQyUyRmZpZWxkJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyQ09ORElUSU9OJTIyJTNFYW55JTNDJTJGZmllbGQlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJBQ0tfQ09ORElUSU9OJTIyJTNFJTNDJTJGZmllbGQlM0UlM0NzdGF0ZW1lbnQlMjBuYW1lJTNEJTIyU1RBVEVNRU5UJTIyJTNFJTNDYmxvY2slMjB0eXBlJTNEJTIydmFyaWFibGVzX3NldCUyMiUyMGlkJTNEJTIyJTNEMyUzRkFwJTJGfjQtX2dsSmIlN0JHSSEtJTVEJTIyJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyVkFSJTIyJTNFYWxleGFGJUMzJUJDclNwcmFjaGF1c2dhYmUlM0MlMkZmaWVsZCUzRSUzQ3ZhbHVlJTIwbmFtZSUzRCUyMlZBTFVFJTIyJTNFJTNDYmxvY2slMjB0eXBlJTNEJTIydGV4dF9qb2luJTIyJTIwaWQlM0QlMjIhaShjKkdTYVhIeVFsNFFIX0lLRSUyMiUzRSUzQ211dGF0aW9uJTIwaXRlbXMlM0QlMjIzJTIyJTNFJTNDJTJGbXV0YXRpb24lM0UlM0N2YWx1ZSUyMG5hbWUlM0QlMjJBREQwJTIyJTNFJTNDYmxvY2slMjB0eXBlJTNEJTIydGV4dCUyMiUyMGlkJTNEJTIyNmhNdmNUJTVCJTJDU2QlN0IlMkNHbSUyRiUzQkxteGYlMjIlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJURVhUJTIyJTNFYWxleGEyLjAuRWNoby1EZXZpY2VzLiUzQyUyRmZpZWxkJTNFJTNDJTJGYmxvY2slM0UlM0MlMkZ2YWx1ZSUzRSUzQ3ZhbHVlJTIwbmFtZSUzRCUyMkFERDElMjIlM0UlM0NibG9jayUyMHR5cGUlM0QlMjJnZXRfdmFsdWUlMjIlMjBpZCUzRCUyMmIlMjVWdigpWTVKdjl1JTVCYk1Ub0hBJTQwJTIyJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyQVRUUiUyMiUzRXZhbCUzQyUyRmZpZWxkJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyT0lEJTIyJTNFYWxleGEyLjAuSGlzdG9yeS5zZXJpYWxOdW1iZXIlM0MlMkZmaWVsZCUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGdmFsdWUlM0UlM0N2YWx1ZSUyMG5hbWUlM0QlMjJBREQyJTIyJTNFJTNDYmxvY2slMjB0eXBlJTNEJTIydGV4dCUyMiUyMGlkJTNEJTIyLnklNjB+aVNFTjB5MyU3Q1FMbCUzRnUlN0MzNCUyMiUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMlRFWFQlMjIlM0UuQ29tbWFuZHMuc3BlYWslM0MlMkZmaWVsZCUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGdmFsdWUlM0UlM0MlMkZibG9jayUzRSUzQyUyRnZhbHVlJTNFJTNDbmV4dCUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMmNvbnRyb2xfZXglMjIlMjBpZCUzRCUyMmpuJTQwLSUyRjJFQlpXJTdCTyU2MDdoN1ZyWG8lMjIlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJUWVBFJTIyJTNFZmFsc2UlM0MlMkZmaWVsZCUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMkNMRUFSX1JVTk5JTkclMjIlM0VGQUxTRSUzQyUyRmZpZWxkJTNFJTNDdmFsdWUlMjBuYW1lJTNEJTIyT0lEJTIyJTNFJTNDc2hhZG93JTIwdHlwZSUzRCUyMmZpZWxkX29pZCUyMiUyMGlkJTNEJTIyJTNGeDgtcEIlNjBfLUI0NipjJTIzS01oSiU3RCUyMiUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMm9pZCUyMiUzRU9iamVjdCUyMElEJTNDJTJGZmllbGQlM0UlM0MlMkZzaGFkb3clM0UlM0NibG9jayUyMHR5cGUlM0QlMjJ2YXJpYWJsZXNfZ2V0JTIyJTIwaWQlM0QlMjIlN0IlNURtJTJGJTNBKXk4JTVEJTYwdWFTLSUyQ1FhJTdCRUUlMjIlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJWQVIlMjIlM0VhbGV4YUYlQzMlQkNyU3ByYWNoYXVzZ2FiZSUzQyUyRmZpZWxkJTNFJTNDJTJGYmxvY2slM0UlM0MlMkZ2YWx1ZSUzRSUzQ3ZhbHVlJTIwbmFtZSUzRCUyMlZBTFVFJTIyJTNFJTNDc2hhZG93JTIwdHlwZSUzRCUyMmxvZ2ljX2Jvb2xlYW4lMjIlMjBpZCUzRCUyMnhFKSU1RGZOJTYwZ0ltJTQwWGIxTXVYUGVEJTIyJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyQk9PTCUyMiUzRVRSVUUlM0MlMkZmaWVsZCUzRSUzQyUyRnNoYWRvdyUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMmdldF92YWx1ZSUyMiUyMGlkJTNEJTIyeCUyNTVfKkglMkJxKkIlMjNBQU5BJTI1aTQlNUJ2JTIyJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyQVRUUiUyMiUzRXZhbCUzQyUyRmZpZWxkJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyT0lEJTIyJTNFamF2YXNjcmlwdC4wLmFsZXhhQW50d29ydCUzQyUyRmZpZWxkJTNFJTNDJTJGYmxvY2slM0UlM0MlMkZ2YWx1ZSUzRSUzQ3ZhbHVlJTIwbmFtZSUzRCUyMkRFTEFZX01TJTIyJTNFJTNDc2hhZG93JTIwdHlwZSUzRCUyMm1hdGhfbnVtYmVyJTIyJTIwaWQlM0QlMjJNY2ZRR1YqLVpwbWtraChWQnNEXyUyMiUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMk5VTSUyMiUzRTAlM0MlMkZmaWVsZCUzRSUzQyUyRnNoYWRvdyUzRSUzQyUyRnZhbHVlJTNFJTNDJTJGYmxvY2slM0UlM0MlMkZuZXh0JTNFJTNDJTJGYmxvY2slM0UlM0MlMkZzdGF0ZW1lbnQlM0UlM0MlMkZibG9jayUzRSUzQyUyRnhtbCUzRQ==

 

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.