Alle Alexa Befehle per Speech-to-Text an Homey via Home-Assistant (bisher via Iobroker Alexa2 Adapter)

Hallo zusammen,

Ich würde gerne einen Satz an ein Alexa Gerät in Homey auswerten. Hintergrund ist, dass ich Befehle wie “Rolladen schliessen” bei Alexa nicht pro Raum anlegen kann. Nur über bldöde Umwege “Alexa sag NamederApp, Rolladen 100%”. Das ist dämlich. Nur “Lichta aus” geht pro Raum

Bisher habe ich das über Iobroker und MQTT gemacht. Da konnte ich mehrere Alexa Konten (die Kids haben eigene) einfach an Homey übergeben und filtern was ich gebraucht habe. Raum, Befehl, Konto usw. Super.

Dank der Inspiration von @Undertaker und @DirkG probiere ich nun Home Assist aus, verbinde über @RonnyW s (geniale) Community App, aber die Gretchenfrage: Wie empfange ich für ein Alexa Gerät das, was man ihm sagt. Kann Home Assist dieses Datum angreifen? (In Iobroker gabs einfach einen Datenpunkt, an dem das ankam).

Freue mich, wenn da jemand ne geile Idee hat.

Danke!

Stefan

Wenn du in Alexa den Homey-Skill aktivierst, dann werden alle Favoriten (Geräte und Flows) an Alexa übertragen. Es genügt, das Gerät als Favorit zu definieren, an Alexa syncen und wieder aus den Favoriten entfernen.
Aber das hadt du sicher schon…
Räume werden von Homey wohl nicht übertragen (nicht wie bei Hue). Evtl fehlt das einfach im Skill.

Ich habe mir mit Gruppen geholfen, z.B. “Heizung Wohnzimmer”, die ich dann über Alexa steuern kann.
Alexa erkenbt das meist auch korrekt, wenn man “…im Wohnzimmer” sagt.

Danke Ronny, ja das hab ich schon probiert.

Auszuwerten, was jemand einer bestimmten Alexa sagt ist halt derzeit ein sehr geiles Feature. Das müsste ja mit Home Assist gehen…?.

Mit HA hatte ich das noch nicht getestet.
Du meinst, einen eigenen HA-Skill erstellen und die HA-Geräte an Alexa zu schicken?
Wenn es um die von Homey an Alexa gesendeten Geräte geht, dann wird das keinen Unterschied machen.

Danke Ronny, im Kern geht es mir darum, dass irgendwo der genaue Text als Text ankommt, den man einer Alexa sagt, ich habe nun fertigrecherchiert, das geht mit Home Assist nicht (mehr). Mit Iobroker geht es noch, schade…

Die Frage wäre dann, was du mit dem Text machen willst? Texterkennung in Fkows mit Logik-Karten? Ziemlich aufwändig.
Ich bin daher immer noch bei der simplen Lösung:

  • Gruppen-Geräte zur Steuerung mehrere Geräte über Alexa (Thermostate)
  • Flows zum Aufruf in Alexa als Szene. Damit kann man auch jede erdenkliche Aktion aufrufen. Man muss den Flow nur passend für einen Alexa-Befehl benennen (oder die daraus resultierende Alexa-Szene umbenennen).

Das ist eine absolut berechtigte Frage. Ich bin gespannt, ob Du ne andere Idee hast:

4 Hauptprobleme bei Alexa:

Verschiedene Accounts
Verschiedene Zimmer
Antworten in Abhängigkeit von Homey-Zuständen
Alles in Kombination

Ich habe keine Ahnung, wie das nur im Ansatz gelöst werden kann - ausser so:

Konkreter:

Ein gutes Beispiel: Die Kinder haben unterschiedliche Accounts, damit sie unabhängig voneinander Spotify hören können (das geht anders meines Wissens nicht). Ich kann aber nur einen mit Homey verbinden, und selbst wenn es mehrere wären: Ich müsste alle Geräte und Routinen extra in allen Alexa-Accounts einrichten, also: in einem sehr schlecht performanten schrecklichen Mist-System.

Noch ein Beispiel: 3 Rolläden in einem Zimmer, die ich auf 70% stellen möchte, oder jeden einzeln (erfordern konventionell virtuelle Devices, weil Athom die Fibaro-Rolladen-Aktoren bis heute nicht als Rolläden bei Alexa taggt).

Ja, manches geht mit Flows, die ich in Alexa starte, aber das meiste nicht, und vor allem nicht runtergebrochen auf ein Zimmer “Alexa, Rollos hoch” oder “Alexa Rollos 70%”. Denn Alexa kann das nicht für ein einzelnes Zimmer abstrahieren.

So sieht es in Iobroker kann ich jeden einzelnen Datenpunkt überwachen und per Webhook an Homey geben (läuft zuverlässiger als MQTT, weil es die Kombination von mehreren Punkten zur exakt gleichen Zeit zulässt (Zimmer & Befehl), die sich nicht alle zur gleichen Milisekunde ändern und dann Flow-start-Probleme entstehen):

Beispiel Rolläden für 1 Zimmer (ich hab mir keine Mühe gegeben mit Variablen, das kann man schöner machen), das Script lässt sich aber beliebig für alle Befehle kopieren und einfügen. Fertig:

image

Das Auswerten des Strings wäre überhaupt nicht komplex. Wenn man mehr mit Variablen machen möchte (das würde auch den MQTT Rahmen sprengen) mach ich das Wörter parsen mit Homeyscript, hier ZB NUR das erste Wort aus einer Variable, die aus einem kompletten Satz besteht. So kann man auch Signalwörter einfach parsen):

// Erstes Wort parsen
// Erhalte das Argument vom Benutzer
let argument = args[0];

// Trenne das Argument in einzelne Wörter auf
let words = argument.split(" ");

// Gib das erste Wort (bei einer 0, das zweite bei einer 1 usw) zurück, wenn man das zweite will muss man den wert erhöhen, scripte einzeln in advance flows aufrufen!
return words[0];

Finde es nicht so komplex. ABER: Einmal eingerichtet kann es im ganzen Homey für einfach alles eingesetzt werden, ohne dauernd in Alexa-Konten alles neu zu organisieren.

Das macht Alexa ausserdem zu einem viel mächtigeren Tool, weil beispielsweise auch Antworten bei Alexa ausgegeben werden können in Abhängigkeit von Zuständen in Homey. Das geht in Alexa überhaupt nicht.