alexa-remote-control | Alexa per Shell fernsteuern - Alexa Sprachausgabe Text-to-Speech über Homebridge in HomeKit

  • Eigentlich würd mich die Sprachausgabe echt interessieren, es läuft grad nur so gerade alles fast perfekt und ich will mich gerade irgendwie nicht an den RasPi trauen.


    Könnte jemand nochmals ne Schritt-für-Schritt Anleitung für „dummys“ fixieren? Ich traue mir gerade selber nicht, was genau zu tun ist.



    Sent from my iPhone using Community

    • Hilfreich

    Es ist ganz

    Könnte jemand nochmals ne Schritt-für-Schritt Anleitung für „dummys“ fixieren? Ich traue mir gerade selber nicht, was genau zu tun ist.

    1. Installiere jq: sudo apt-get install jq
    2. Dann: sudo nano /usr/local/bin/alexa_remote_control.sh. Ein leeres Editorfenster erscheint.
    3. Kopiere alles von dieser Seite: https://loetzimmer.de/patches/alexa_remote_control.sh in das leere Editorfenster.
    4. Suche die beiden Zeilen, die mit EMAIL='[email protected]' und PASSWORD='Very_Secret_Amazon_Account_Password' beginnen und setze zwischen die Hochkommas deine Amzon-Logindaten ein.
    5. Speichere die Datei /usr/local/bin/alexa_remote_control.sh ab, indem Du ctrl-x, dann y und dann die Returntaste drückst.
    6. Mache alexa_remote_control.sh ausführbar:sudo chmod +x /usr/local/bin/alexa_remote_control.sh
    7. Rufe alexa_remote_control.sh auf:alexa_remote_control.sh. Die Ersteinrichtung läuft.

    Danach verfahre wie hier beschrieben: https://blog.loetzimmer.de/201…t-auf-die-shell-echo.html


    Oder versuch mal das:

    alexa_remote_control.sh -d ALL -e speak:'Guten Tag'

    alexa_remote_control.sh -d Wohnzimmer-Dot -e weather


    wobei du Wohnzimmer-Dot durch den Namen deines Alexa-Gerätes ersetzt.


    Stefan

  • sschuste


    Vielen Dank ?


    Ich hatte den inhalt der datei nirgends entdeckt ??? nun alles verstanden ?


    Wenn ich nun nen Schalter in HomeKit erstellen will für eine Sprachausgabe, muss hier zwingen das script2-plugin verwendet werden? Ich blick da nicht so durch oder tuts da auch ein übersichtlicheres plugin?


    Zum Beispiel möchte ich diesen Befehl absetzen:


    alexa_remote_control.sh -d Wohnzimmer -e speak:'Es ist Zeit zum schlafen gehen'



    Sent from my iPhone using Community

  • Kann mit diesem plugin der Befehl auch abgesetzt werden?


    https://github.com/hallos/home…ger/blob/master/README.md



    Sent from my iPhone using Community

  • Wenn ich nun nen Schalter in HomeKit erstellen will für eine Sprachausgabe, muss hier zwingen das script2-plugin verwendet werden? Ich blick da nicht so durch oder tuts da auch ein übersichtlicheres plugin?

    Es müsste jedes Plugin funktionieren, dass Shell-Aufrufe machen kann. Die sind nur inzwischen alle viel zu aufgeblasen. Ich selbst nutze homebridge-cmd. Das kann nix und macht daher die Konfiguration einfach. Dort würde ich dann folgende Konfiguration erstellen:


    Code
    "accessories": [
           {
               "accessory": "CMD",
               "name": "Schlafen gehen",
               "on_cmd": "/usr/local/bin/alexa_remote_control.sh -d Wohnzimmer -e speak:'Es ist Zeit zum Schlafen gehen'",
               "off_cmd": "/bin/true"
           }
       ]

    Beim Einschalten würde alexa_remote_control.sh aufgerufen. Ich benutze dazu immer den ganzen Pfad zum Script (hier: /usr/local/bin/). An dieser Stelle können wir auch gleich zum Problem kommen: wenn man etwas einschaltet, dann isses an, nicht wahr? Das heißt, du musst das Script erst wieder ausschalten, bevor du es erneut aufrufen kannst. Dazu ist das off_cmd da, aber da es nix vernünftiges zum Ausschalten gibt, steht in meinem Beispiel einfach nur /bin/true. Dieses Kommando tut nichts außer unsichtbar zu verkünden, dass alles super funktioniert hat.


    Wenn du also in Home-App deinen Switch einschaltest, dann quatscht Alexa los. Wenn du ihn wieder ausschaltest (denn von allein geht der nicht aus), dann passiert nix weiter. Klar, du könntest anstatt /bin/true auch eine andere Sprachausgabe verwenden wie zum Beispiel /usr/local/bin/alexa_remote_control.sh -d Wohnzimmer -e speak:'Es ist Zeit zum Aufstehen'.


    Stefan

  • Wäre es dann mit diesem nicht einfacher, da es einen delay modus hat? Dann kann eingestellt werden, nach wieviel sekunden der schalter wieder ausgehen soll.


    https://github.com/hallos/home…ger/blob/master/README.md


    Was bedeutet hier „stateful“ : „true“?



    Sent from my iPhone using Community

  • Was bedeutet hier „stateful“ : „true“?

    Ich habe keinen blassen Schimmer, aber das Plugin sieht aus, als sei es für mich gedacht. Danke für den Schwung, den du meiner Nase verliehen hast, um mich darauf zu stoßen.


    Möglicherweise bleibt der Schalter dann eingeschaltet, nachdem du ihn betätigt hast. Der Normalwert ist ja, dass er wieder ausgeht.


    Stefan

  • sschuste


    Ich habe soeben das alexa-skript erfolgreich installiert und es läuft hervorragend ?


    Genau das, was mir noch gefehlt hat ???


    Ich verwende bereits das cmdtrigger-plugin mit delay auf 1000.


    So wird der Schalter automatisch nach 1 Sekunde wieder geschlossen. Perfekt ?



    Sent from my iPhone using Community

  • Ich verwende bereits das cmdtrigger-plugin mit delay auf 1000.

    Gut gemacht. Ich habe diesen cmdtrigger nicht installiert bekommen geschweige denn zum Laufen gebracht :-/

  • Gut gemacht. Ich habe diesen cmdtrigger nicht installiert bekommen geschweige denn zum Laufen gebracht :-/

    Hast es mit diesem Befehl versucht?


    sudo chown -R $USER /usr/local && npm install -g https://github.com/hallos/homebridge-cmdtrigger



    Sent from my iPhone using Community

  • Hast es mit diesem Befehl versucht?

    sudo chown -R $USER /usr/local && npm install -g https://github.com/hallos/homebridge-cmdtrigger

    Unter anderem auch mit diesem :D


    Stefan

  • Das Skript ist übrigens auch bei github gelistet:


    https://github.com/thorsten-ge…rol/blob/master/README.md


    Ich bin drauf gestoßen, da ich nirgendwo den Befehl gefunden habe, wie ich die Lautstärke steuern kann. Es gibt auch <pause|play|next|prev|fwd|rwd|shuffle|vol:<0-100>


    Man har quasi die Möglichkeit, Alexa wie ein Player zu verwenden, falls man in der aktuellen Playlist navigieren will.



    Hierzu noch eine Frage: Ich habe mir über die Amazon Music App eine eigene Playlist „Manuel“ angelegt zum Testen.


    Ich finde nur die von Amazon bereit gestellten Playlists, aber nicht meine erstellte Playlist „Manuel“.


    Hat hier schon jemand Erfahrung?

  • Ich hab hier einen dirty hack, mit dem man Alexa einen zufälligen Satz aus einer Liste von Sätzen schicken kann.


    sudo nano /usr/local/bin/random_message.sh

    Dann dort einfügen:


    Bash
    #!/bin/bash
    
    messages=("eins" "zwei" "drei drei" "vier vier vier" "fünf" "ja sowas!")
    
    randomMax=$(echo ${#messages[@]})
    randomVal=$((RANDOM % randomMax))
    # echo "${messages[$randomVal]}" | tr '[:blank:]' _
    echo "${messages[$randomVal]}"

    Abspeichern mit ctrl-x, y und der Returntaste.


    Dann leichthändig und lässig pfeifend ein sudo chmod +x /usr/local/bin/random_message.sh drüberschicken.


    Aufrufen mit:

    alexa_remote_control.sh -d Wohnzimmer -e speak:$(/usr/local/bin/random_message.sh)


    Die Anzahl der Sätze in $messages ist höher als fünf, aber bestimmt irgendwann und irgendwo begrenzt. Keine Ahnung. Und die RANDOM-Funktion der bash scheint mir auch nicht gerade die Superwucht zu sein. Egal, zum Herumspielen.


    Ich hab das noch nicht in config.json eingebaut, aber ich schätze, da könnte es noch Probleme mit den Anführungszeichen geben. Hab jetzt leider keine Zeit mehr, das Problem zu lösen.


    In config.json wird das so eingefügt (hier am Beispiel mit homebridge-cmdtrigger) :


    {
    "accessory": "CmdTrigger",
    "name": "Nicht vergessen",
    "command": "/usr/local/bin/alexa_remote_control.sh -d ALL -e speak:\"$(/usr/local/bin/random_message.sh)\"",
    "delay": "1000"
    },


    Bitte beachten:

    Im Beispiel wird alexa_remote_control.sh im Pfad /usr/local/bin aufgerufen. Sollte das bei dir woanders liegen, musst du das natürlich anpassen. Das gleiche gilt für random_message.sh. Achtet bitte auf den Backslash (\) vor den Anführungszeichen und dass er an der richtigen Stelle sitzt.


    Wenn ihr mehrere Echos einsetzt und wollt, dass die Ausgabe nur von dem beantwortet wird, den ihr angesprochen habt, dann müsst ihr -d ALL ersetzten durch

    -d $(/usr/local/bin/alexa_remote_control.sh -lastalexa)

    Stefan

    4 Mal editiert, zuletzt von sschuste () aus folgendem Grund: 2018-08-30: Fehlende Klammer hinzugefügt. 2020-03-18: Alexa kann jetzt Leerzeichen. Daher habe ich im Script den Hack mit den Unterstrichen entfernt. Weiterhin habe ich die Syntax für config.json hinzugefügt.

  • Das klingt ja genau nachdem, was ich gesucht habe. Werd ich evtl. vor der Urlaubsreise noch testen (müssen).


    Mal schauen, ob man dann auch verschiedene random_message123 usw. anlegen kann und somit für jedes Szenario unterschiedlliche Antworten von Alexa erhält ?


    Thx for this dirty hack!


    Wie kommt ihr immer nur an diese Infos??



    Sent from my iPhone using Community

  • Aufrufen mit:

    alexa_remote_control.sh -d Wohnzimmer -e speak:"$(/usr/local/bin/random_message.sh)"

    Bei mir hakelt es da noch ein bisschen.


    Code
    pi@raspberrypi-3BPlus:~ $ /home/pi/.homebridge/alexa_remote_control.sh -d Flur -e speak:"$(/home/pi/.homebridge/random_message_greeting.sh)"
    /home/pi/.homebridge/random_message_greeting.sh: Zeile 5: Dateiende beim Suchen nach `}' erreicht.
    /home/pi/.homebridge/random_message_greeting.sh: Zeile 7: Syntax Fehler: Unerwartetes Dateiende.


    Code: random_message_greeting.sh
    messages=("Hallo." "Hey." "Tagchen." "Halli, Hallo, Hallöchen." "Servus." "Guten Tag Dir.")
    
    randomMax=$(echo ${#messages[@]})
    randomVal=$((RANDOM % randomMax))
    echo ${messages[$randomVal]}

    Da fehlte am Ende noch eine} bei echo ${messages[$randomVal]}


    ;)


    Und funktioniert nun allerbestens! Danke sschuste :thumbup:

  • Cool, schön zu hören, dass es bei dir schon läuft DJay


    Hast du evtl. auch schon eine zweite Datei erstellt? Dürfte ja eigentlich dann auch ohne Weiteres funktionieren, oder?

  • "fileState": "/var/homebridge/alexa_remote_control_tuer.flag"


    ...und die Datei bei fileStat da wird dann der aktuelle Schaltzustand eingetragen.

    Was meinst Du damit? Muss ich die Datei manuell erstellen wie die off.sh und wenn ja, was muss da rein? :/


    Hast du evtl. auch schon eine zweite Datei erstellt? Dürfte ja eigentlich dann auch ohne Weiteres funktionieren, oder?

    Zweite Datei? Mit anderem "random" Text meinst Du? Nein, noch nicht. Aber das sollte dann ja nach dem selben Muster ablaufen. Für jedes Random File einen neuen Eintrag in der config.json.

  • Wie kommt ihr immer nur an diese Infos??

    Hab ich mir selber ausgedacht und in ein paar Minuten heruntergepölt. Zu irgendwas müssen ja 33 Jahre Computern gut sein. Ich darf gar nicht drüber nachdenken.


    Stefan

  • Da fehlte am Ende noch eine} bei echo ${messages[$randomVal]}

    Copy & Paste mit der Maus. Diese modernen Konzepte krieg ich immer noch nicht richtig hin :D


    Stefan

  • sschuste


    So ein Gedanke für spätere Nachahmer: Magst die Klammer im Nachhinein noch einfügen? ?



    Sent from my iPhone using Community