Beiträge von sschuste

    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

    Ich würde diese Logik einfach in ein Shell-Script auslagern. Dass heißt, der cmdtrigger ruft ein Shell-Script auf, das aus einer Liste von Sätzen einen zufällig raussucht, und dieses Shell-Script ruft dann alexa_remote_control.sh auf und übergibt den Satz. Wollte ich mir eh bauen. Wenn ich es fertig habe, dann stell ich es hier irgendwo mal rein.


    Stefan

    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

    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

    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

    Da gibt's kein Unterschied. Du musst bei deinem Telefon xxxx keinen Threshold angeben, weil er ja bereits oben standardmäßig auf 15 Minuten gesetzt ist. Oben wird einfach der Normalfall gesetzt (neudeutsch: default-Wert). Nehmen wir an, du willst deine WG, die aus 204 Mitbewohnern besteht, mit dem People-plugin beglücken, und du willst, dass bei all denen der Threshold auf 15 Minuten eingestellt ist und bei dir auf 20 Minuten, dann setzt du den oberen Wert auf 15 und lässt ihn unten bei den 204 Mitbewohnern weg. Nur du bekommst 20, und das trägst du dann bei deinem xxxx-Telefon ein.


    Stefan

    Natürlich könnte man den Raspi auch zwingen, manches von dem Zeugs, das er so erzeugt, selber aufzuräumen. Ich verweise da mal auf logrotate, das die hübschen .gz-Dateien erzeugt, die in /var/log so herumgammeln.


    Man kann logrotate so konfigurieren, dass es alte Logs erst komprimiert und dann nach einer Weile löscht. Ich hab's jetzt nicht probiert oder getestet, würde aber so verfahren:


    Datei anlegen in /etc/logrotate.d


    sudo nano /etc/logrotate.d/homebridge


    Und dann im Editor eintippseln:


    Code
    /var/log/homebridge.log {
      weekly
      rotate 4
      compress
    }

    Das würde jede Woche die aktuelle Logdatei umbenennen in homebridge.log.1, dann komprimieren (weekly, compress: erzeugt homebridge.log.1.gz) und das insgesamt vier Mal (rotate 4), also vier Wochen lang. Ältere, schon komprimierte Logs werden automatisch gelöscht.


    Man kann die Logs auch täglich oder monatlich rotieren, oder wenn sie eine bestimmte Größe erreicht haben, oder nach einer bestimmten Anzahl von Tagen, und man diese Anweisungen auch mischen. Es gibt da eine Menge Möglichkeiten. Ganz hilfreich finde ich dazu diese Seite: http://www.jamescoyle.net/chea…676-logrotate-cheat-sheet


    Stefan

    Onkyo Receiver [...] Hast du da noch einen Tipp für mich?

    Leider nicht. Mein letzter Receiver war von Technics und der segnete 1989 das Zeitliche. Danke, dass du mich da drauf gehoben hast, mir fehlte nämlich noch ein Motto für die Sommerparty 2019. Aber jetzt nehm ich doch glatt "Dreißig Jahre kein Receiver", hihi.


    Natürlich habe ich auch mal mit einem Onkyo Receiver geliebäugelt, aber meine Bank hat immer gesagt "wir brauchen keine so teuren Geräte", und so kann ich nur ein bisschen Linux, wahrscheinlich deshalb, weil's nix kostet:D


    Stefan

    Ok, du hast zwar die Zugriffsrechte für /usr/local geändert (sudo chown -R $USER /usr/local), aber darfst nicht nach /usr/lib/node_modules schreiben. Klar, ist ja auch der falsche Pfad, den du geändert hast. Wenn schon, sollte es sudo chown -R $USER /usr/lib/node_modules heißen.


    Trotzdem würde ich nicht zu einem Ändern der Zugriffsrechte raten. Das ist eigentlich nur selten notwendig. Linux-Systeme sind deswegen oft sicherer als Windows-Systeme (oder waren es mal), weil man die Finger davon lässt. Bitte beachten: das soll kein Vorwurf an dich sein.


    Aber ich würde empfehlen, es mal so zu versuchen:


    sudo su -

    npm install -g --unsafe-perm homebridge-onkyo


    Klappt das besser?


    Stefan

    Man muss sich in seinen eigenen vier Wänden eine Privatsphäre bzw. im Umkehrschluss einen Sperrbezirk schaffen?! Das Ding wäre bei mir rausgeflogen, wenn ich sowas festgestellt hätte.

    So läuft's eben. Bei dir fliegt das Ding dann raus. Bei mir nicht. Ich hab mir den Alexa-Puck beschafft, obwohl ich ziemlich präzise weiß, was das Ding alles anstellen könnte. Meine Frage lautete vor dem Kauf: kann ich damit leben, dass ständig einer zuhört und möglicherweise meine Gespräche aufzeichnet und speichert?


    Darüber hab ich eine Weile nachgedacht und bin dann drauf gekommen: ja, damit kann ich leben. Ist mir - erstaunlicherweise - sogar ausgesprochen wurst.


    Es ist mir völlig bewusst, dass eine solche Antwort nicht für andere gelten kann. Das muss jeder selbst entscheiden. Und wenn sich jemand dagegen entscheidet, dann ist er noch lange kein Aluhutträger. Nur werde ich Alexa nicht abschalten, falls Besuch eintrifft, dem die Wohnzimmerwanze nicht passt. Hat noch keiner gewollt, aber ich schätze, dass derartige Konflikte noch auf mich zukommen.


    Stefan

    Würde es reichen, in der homebridge.service vorm Starten des Dienstes das einzutragen:


    Code
    ExecStartPre=/bin/sleep 120

    Ja, aber das würde dann bei jedem manuellen Start der Homebridge ebenfalls passieren und du musst dann immer 2 Minuten warten. Ich habs gerade mal probiert mit


    Code
    ExecStartPre=/bin/ping -c 3 8.8.8.8


    Damit pingst du eine Adresse an, die außerhalb deines Netzwerkes liegt und die garantiert immer funktioniert, weil: Googles DNS. Ist 8.8.8.8 erreichbar und dreimal anpingbar, dann startet homebridge. Wenn nicht, dann schlägt der Start von homebridge fehl, und zwar solange, bis 8.8.8.8 erreichbar ist.


    Stefan