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:
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.