Plugin-Daten | |
---|---|
Autor | Peter Bazala, Christian Fenzl, Michael Schlenstedt |
Logo | ![]() |
Status | UNSTABLE |
Version | 4.4.0 |
Min. LB Version | 1.4.3 |
Release Download | https://github.com/christianTF/LoxBerry-Plugin-Alexa2Lox/archive/4.2.0.zip |
Pre-Release Download | https://github.com/christianTF/LoxBerry-Plugin-Alexa2Lox/archive/4.4.0.zip |
Beschreibung | Steuerung und Sprachausgabe von Amazon Echo Geräten |
Sprachen | DE |
Diskussion | https://www.loxforum.com/forum/projektforen/loxberry/plugins/233526-plugin-alexa2lox-v4-x |
Hinweis: Die im Video gezeigte Authentifizierungsmethode über 2-Faktor-Verifizierung funktioniert nicht mehr und wurde durch die Refresh-Token-Methode ersetzt.
In Absprache mit Peter, aktualisiert und überarbeitet für LoxBerry 2.0 von Christian Fenzl
Informationen/Syntax zur Vorgängerversion (<4.0) im bisherigen Wiki-Artikel: Alexa2Lox 3.0 (EOL)
Repository: https://github.com/christianTF/LoxBerry-Plugin-Alexa2Lox
Master-Download: https://github.com/christianTF/LoxBerry-Plugin-Alexa2Lox/archive/master.zip
Dieses Plugin ermöglicht NICHT, den Loxone Miniserver per Spracheingabe zu steuern. Dieses Plugin ermöglicht: Steuerung von Alexa per Miniserver (Musiksteuerung, Playlisten, Routinen aufrufen), Sprachausgabe via Alexa, Listen von Alexa am Miniserver anzeigen usw.
Refresh Token Methode
Mittels der Refresh Token Methode wird ein Token erzeugt, der Alexa2Lox ermöglcht, sich bei Amazon mit deinem Amazon-Account anzumelden.
Eine Anleitung, wie Du diesen Token erzeugen musst, findest Du hier: Amazon Refresh-Token erzeugen
Listen-Trennzeichen: Das Plugin erstellt für verschiedene Listen (To-Do-Liste, Einkaufsliste usw.) aus den einzelnen Einträgen einen zusammengefassten Text, um ihn in der Loxone-Visualisierung in einem Block darzustellen. Als Trennzeichen wird das hier konfigurierte Zeichen verwendet. Du kannst alles verwenden, hier ein paar Beispiele (kannst du mit Copy/Paste übernehmen): | • - – ? ? ? ? ? ◊ ? ? ? ?? Du musst selbst probieren, wie das dann in Loxone aussieht. Das Trennzeichen kann auch eine Trenn-Zeichenkette sein! (z.B. ??)
Speichern nicht vergessen!
Nach dem Speichern der Einstellungen werden von deinem Amazon-Konto die verfügbaren Alexa Geräte geladen. Diese werden im Bereich "Gefundene Geräte" angezeigt. Dies sollte in etwa so aussehen:
Sollten keine Geräte angezeigt werden, bitte wie folgt vorgehen:
Alexa Remote Control aktualisieren: Das Plugin basiert zum Großteil auf Erkenntnisse und Funktionen des "Lötzimmer Alexa"-Scripts, das von Alexander Noack gepflegt wird. Das Plugin zeigt an, welche Version gerade auf deinem LoxBerry installiert ist, außerdem kannst du auf den letzten Stand aktualisieren. Beachte: Bei Entwicklungen/Korrekturen in Beta-Version (z.B. 0.15b) ändert sich nicht zwangsläufig die Versionsnummer, obwohl ein neuer Stand installiert wurde.
Dieser Bereich ist bereits unter Konfiguration beschrieben.
Hier werden alle Geräte und deren Online-Status angezeigt. Beachte, dass die Geräteliste zwischengespeichert wird, deswegen könnte insbesondere der Online-Status nicht aktuell sein.
Alexa2Lox überträgt alle Daten per MQTT. Dafür muss das MQTT Gateway Plugin installiert sein. Es ist in Alexa2Lox keine weitere Konfiguration notwendig - alles weitere macht das Plugin. Im MQTT Gateway musst du die Übertragungsweise konfigurieren. Bitte schau in die Anleitung des MQTT Gateway Plugins.
Das Basis-Topic von Alexa2Lox ist alexa2lox/#
. Diese Subscription sowie notwendige Conversions werden vom Alexa2Lox Plugin direkt im MQTT Gateway gesetzt.
Sämtliche Funktionen müssen von Loxone aus getriggert werden. Als Vorbereitung für alle weiteren Anleitungen wird ein Virtueller Ausgang benötigt.
Die Antwort des Abrufs wird immer per MQTT übertragen. Öffne zum Prüfen der Daten die Incoming Overview im MQTT Gateway Plugin. Bitte folge der Anleitung des MQTT Gateway Plugins, wie du diese Daten in den Loxone Miniserver bekommst.
Adresse: http://<user>:<pass>@loxberry
<user>
und <pass>
sind die Anmeldedaten bei LoxBerry. Solltest du den LoxBerry umbenannt haben, oder lieber die IP-Adresse verwenden, musst du den Hostnamen loxberry
entsprechend anpassen.
Allgemeiner Aufruf: /admin/plugins/alexa2lox/alexa.php?parameter1¶meter2=value¶meter3
usw.
Parameter können als Übergabe eines Wertes dienen (parameter2=value
), oder als Schalter ohne zusätzlichem Wert (parameter1
). Die Reihenfolge der Parameter ist beliebig, außer bei original
(siehe unten).
Die Parameter werden in einer Kette abgearbeitet. Das heißt, wird als Parameter übergeben todolist&shoppinglist
, werden beide Funktionen ausgeführt.
Parameter | Kurze Version | Wert | Beschreibung |
---|---|---|---|
device | d | <Alexaname> | Der Name des Geräts. Der Name ist nicht case-sensitive, und es können Leerzeichen verwendet werden. |
playerstate | ps | Abfrage des Status des Devices (<device> erforderlich) |
|
notifications | nl | NICHT FERTIG Abfrage anstehender Benachrichtigungen, auch Command wird sich vermutlich noch ändern | |
shoppinglist | sl | Abfrage der Einkaufsliste | |
todolist | tl | Abfrage der To-Do Liste | |
execute | e | <command> | |
print | Druckt irgendwas (weiß ich noch nicht, muss Peter dokumentieren ) | ||
original | o | Dieser Parameter übergibt alle nachfolgenden Parameter direkt an das Lötzimmer Originalscript alexa_remote_control.sh |
Befehl bei EIN: /admin/plugins/alexa2lox/alexa.php?device=Büro&playerstate
Kurzversion: /admin/plugins/alexa2lox/alexa.php?d=Büro&ps
Befehl bei EIN: /admin/plugins/alexa2lox/alexa.php?notifications
Befehl bei EIN: /admin/plugins/alexa2lox/alexa.php?shoppinglist
Befehl bei EIN: /admin/plugins/alexa2lox/alexa.php?todolist
Mit dem Parameter execute
(bzw. Kurzversion e
) können Befehle an Alexa übergeben werden. Die möglichen Befehle sind äquivalent zu jenen vom Lötzimmer-Script (konkret wird in der Routine das Original-Script alexa_remote_control.sh aufgerufen). Werden also im Originalscript neue Befehle aufgenommen, funktionieren diese auch automatisch mit dem execute
-Kommando.
Die execute
-Routine von Alexa2Lox ruft nach dem Aufruf zusätzlich den aktuellen playerstate
ab.
pause | play | next | prev | fwd | rwd | shuffle | repeat | vol:<0-100>
weather | traffic | flashbriefing | goodmorning | singasong | tellstory | speak:'<text/ssml>' | automation:'<routine name>' | sound:<soundeffect_name> | textcommand:'<anything you would otherwise say to Alexa>' | playmusic:<channel> e.g. TUNEIN, AMAZON_MUSIC>:'<music name>'
Hier findet ihr den aktuellsten Stand: https://github.com/thorsten-gehrig/alexa-remote-control
Player starten, pausieren, Lautstärke
Befehl bei EIN: /admin/plugins/alexa2lox/alexa.php?device=Wohnzimmer&execute=play
Befehl bei EIN: /admin/plugins/alexa2lox/alexa.php?device=Wohnzimmer&execute=pause
Befehl bei EIN: /admin/plugins/alexa2lox/alexa.php?device=Wohnzimmer&execute=vol:50
Befehl bei EIN: /admin/plugins/alexa2lox/tts.php?device=<Gerätename>&text=<Mein Text>&vol=<1...100>
Kurze Variante: /admin/plugins/alexa2lox/tts.php?d=<Gerätename>&t=<Mein Text>&vol=<1...100>
Die Reihenfolge der Parameter ist beliebig.
Parameter | Kurze Version | Beschreibung |
---|---|---|
device=<Gerätename1>,<Gerätename2>,… device=ALL | d=<Gerätename>,… d=ALL | Der Name des Echo. Groß/Kleinschreibung egal, Leerzeichen im Namen sind erlaubt. Der Parameter device erlaubt auch die Angabe mehrerer Geräte mit Komma getrennt: device=wohnzimmer,büro ALL ist das Schlüsselwort, um die Sprachausgabe bei allen Geräten auszuführen. |
text=<Mein Text> | t=<Mein Text> | Der Text, der gesprochen werden soll. Leerzeichen, Sonderzeichen usw. können ganz gewöhnlich geschrieben werden. |
vol=<1…100> | Optional. Die Lautstärke der Sprachausgabe. |
Bei der Angabe mehrerer Geräte oder ALL wird versucht, die Sprachausgabe gleichzeitig auszuführen. Es ist deswegen aber keinesfalls syncron, sondern um ca. eine halbe Sekunde versetzt.
Text- und Zeichenersetzung
Es werden automatisch folgende Zeichenketten umgewandelt, damit sie richtig ausgesprochen werden:
Vorschläge für weitere Ersetzungen bitte mit Satzbeispiel benennen.
MQTT-Übertragung
Der Text der Sprachausgabe und die Zeit wird auch per MQTT übertragen (um sie beispielsweise in der Loxone-Visualisierung anzuzeigen):
alexa2lox/<Gerätename>/lastTTStext
… Der ausgegebene Text
alexa2lox/<Gerätename>/lastTTStime
… Die Ausgabezeit im "menschenlesbaren" Zeitformat.
alexa2lox/<Gerätename>/lastTTSloxtime
… Die Ausgabezeit im Loxone Zeitformat.
Hinweise:
Das Alexa2Lox Plugin kann deine Befehle, die du via alexa.php sendest, direkt an das Originalscript übergeben. Damit sind alle Routinen von Alexa2Lox abgeschaltet, es wird jedoch die im Plugin konfigurierte Authentifizierung verwendet. Die Ausgabe des Originalscripts erfolgt nur im Response, d.h. es wird auch nichts per MQTT übertragen.
Befehl bei EIN: /admin/plugins/alexa2lox/alexa.php?original&<Parameter an alexa_remote_control>&<Parameter an alexa_remote_control>&...
Kurzversion: /admin/plugins/alexa2lox/alexa.php?o&<Parameter an alexa_remote_control>&<Parameter an alexa_remote_control>&...
Wenn der erste Parameter original (bzw. die Kurzform o) ist, werden alle weiteren Parameter 1:1 übergeben an alexa_remote_control.sh. Es müssen dabei dann auch die Options-Striche mit übergeben werden!
alexa.php?original&-d=Wohnzimmer&-e=weather
In der Ausgabe des Aufrufs wird angezeigt, wie das Original-Script aufgerufen wird.
Bitte im oben angegebenen Thread Feedback geben, oder als Issue bei GitHub: https://github.com/christianTF/LoxBerry-Plugin-Alexa2Lox/issues
Das Plugin ist noch BETA - aktiv getestet haben Peter, Christian, Mario und Jörg - und es gibt vielleicht dort und da noch Sonderfälle, die wir nicht ausreichend getestet haben, z.B.
Wenn euch bei diesen Sachen, oder bei irgendeiner anderen Funktion etwas auffällt, dann bitte melden. Bitte so viele Infos wie möglich mitgeben (Screenshots!).