Homebridge Steuerung von Alexa Skills/Befehlen

  • Ich habe das Script auf einem virtuellen Ubuntu System liegen, da ich im docker wo meine homebridge läuft es nicht nutzen kann.


    Also muss ich per ssh Schalter zum laufen bringe, gibt es dafür


    Wie müsste den da die conf aussehen ?


    Ich gehe davon aus, das dies das richtige plugin ist


    https://www.npmjs.com/package/homebridge-ssh

  • Ich verwende für meine Befehle cmdtrigger......


    Allerdings läuft bei mir das Skript und homebridge auf dem selben RasPi.....


    Daher kann ich dir leider nicht mehr weiter helfen, wie du den ssh korrekt absetzen solltest....

  • Ich habe mir mal was zurecht gebastelt,

    Einige werden jetzt die Augen verdrehen,

    Aber es funktioniert 8o

    Natürlich ohne Statusanzeige, da dies ja nicht nötig ist


    Die Alarmanlage wird automatisch eingeschaltet, wenn der letzte die Wohnung verlässt.


    Vielen Dank für eure Hilfe :thumbup:

    Jetzt kann die Frau bedenkenlos die Wohnung verlassen


    P.S.:

    Falls jemand eine andere Idee hat über ssh,

    Nur her damit.

  • Einige werden jetzt die Augen verdrehen,

    Nö, werden sie nicht. Sie werden hoffentlich ein Like vergeben. Sieht doch richtig gut aus :thumbup:.


    Natürlich finde ich immer auch noch das kleinste Haar in der Suppe. Ich hätte den absoluten Pfad zu alexa_remote_control.sh angegeben, so etwas wie


    "on": "/home/tuxnet/alexa_remote_control.sh -d Wohnzimmer -e automation:'Alarm'",


    aber deine Lösung funktioniert, du hast sie selbst entwickelt und warum solltest du sie wieder kaputtfummeln? Also erfreu dich dran.


    Weil's hier passt und man mit diesem Wissen auf der nächsten Party posen kann: man kann Befehle für einen entfernten Rechner auch auf der Shell angeben. Wenn man sich also beispielsweise einfach config.json anzeigen lassen will, dann kann man sich ganz normal auf seinem Raspi einloggen und dort den Befehl cat /var/homebridge/config.json eingeben.


    Also:


    Alternativ kann man das Einloggen auch weglassen und direkt von einem anderen Rechner als dem Raspi selbst eingeben:

    Code
    BigMac:~ sschuste$ ssh [email protected] cat /var/homebridge/config.json

    Und einen solchen Befehl kann man dann in Plugins wie homebridge-cmdtrigger verwenden. Einen Unterschied zu deiner Lösung gibt es nicht, aber man spart sich das Laden eines Plugins, wenn man homebridge-cmdtrigger schon nutzt.


    Stefan

  • Ist es irgendwie möglich einen Schalter unterschiedlich zu belegen ?

    bsp.


    an

    "command": "alexa_remote_control.sh -d Wohnzimmer -e automation:'Alarm'an"


    aus

    "command": "alexa_remote_control.sh -d Wohnzimmer -e automation:'Alarm'aus"

  • Ist es irgendwie möglich einen Schalter unterschiedlich zu belegen ?

    Ja, beispielsweise mit einem Plugin wie https://github.com/senyoltw/homebridge-cmd


    Stefan

  • Wie werden hier die Befehle im cmd-plugin in der config eingegeben?


    Einfach lustig drauf los und es wird in die Kommandozeile geschrieben?

  • Einfach lustig drauf los und es wird in die Kommandozeile geschrieben?

    Genau so :P

  • Damit nicht. Dazu verwende ich homebridge-cmdtrigger. Leider lässt sich das nur über die Shell installieren und leider ist die Anleitung vom Entwickler die pure Katastrophe. Aber das Plugin ist geil :P


    Der schreibt nämlich sudo chown -R $USER /usr/local, was ich nicht mal unter direktem Zwang machen würde. Wahrscheinlich geht aber das hier:


    sudo npm install -g --unsafe-perm https://github.com/hallos/homebridge-cmdtrigger


    Stefan

  • sudo npm install -g --unsafe-perm https://github.com/hallos/homebridge-cmdtrigger

    Dieses Plugin hätte ich bei mir auch ganz gern instaliert. Mit dem Command läuft es allerdings nicht:


    npm ERR! code 128

    npm ERR! Command failed: git clone --mirror -q https://github.com/hallos/homebridge-cmdtrigger.git /root/.npm/_cacache/tmp/git-clone-db63084e/.git

    npm ERR! fatal: could not create leading directories of '/root/.npm/_cacache/tmp/git-clone-db63084e/.git'

    npm ERR!


    npm ERR! A complete log of this run can be found in:

    npm ERR! /root/.npm/_logs/2019-06-07T18_02_10_680Z-debug.log


    Irgendeine Idee wie es laufen könnte? Mit chown würd ich es auch ungern tun...

  • Ich habs mir damals notiert, wie ich es dann zum Laufen bekommen habe, und die Notizen sagen:


    sudo -i

    export NPM_CONFIG_PREFIX=/usr/local/

    npm install -g --unsafe-perm https://github.com/hallos/homebridge-cmdtrigger


    Damit hat es dann geklappt.


    Stefan

  • Hmmm, aber wie kann ich auf den Schalter von CMD-Trigger zwei Funktionen setzten ?


    an

    "command": "alexa_remote_control.sh -d Wohnzimmer -e automation:'Alarm'an"



    aus

    "command": "alexa_remote_control.sh -d Wohnzimmer -e automation:'Alarm'aus"


  • Auch als user root mag er immer noch nicht....


    pi@raspberrypi:~ $ sudo -i

    root@raspberrypi:~# export NPM_CONFIG_PREFIX=/usr/local/

    root@raspberrypi:~# npm install -g --unsafe-perm https://github.com/hallos/homebridge-cmdtrigger

    npm ERR! Error while executing:

    npm ERR! /usr/bin/git ls-remote -h -t https://github.com/hallos/homebridge-cmdtrigger.git

    npm ERR!

    npm ERR! fatal: failed to stat '.': Permission denied

    npm ERR!

    npm ERR! exited with error code: 128


    npm ERR! A complete log of this run can be found in:

    npm ERR! /root/.npm/_logs/2019-06-08T07_47_53_967Z-debug.log

  • Ha! Bei mir auch. Aber aane hammer noch:


    Genau wie oben, aber anstatt sudo -i gibst du ein:

    sudo su -


    Das ging bei mir.


    Stefan

  • JawohlJa! Das hat geklappt. Kannst Du mir noch kurz erläutern was der "sudo su - " nun anders gemacht hat?


    Vielen Dank erstmal. Jetzt werd ich mal schaun ob ich hinkriege was ich mit dem Ding vorhabe, nämlich Telnet-Befehle zur Steuerung meines Linn DS Streamers ausführen :)

  • JawohlJa! Das hat geklappt. Kannst Du mir noch kurz erläutern was der "sudo su - " nun anders gemacht hat?

    Ich hab mir gedacht: "...und wenn er mich dann fragt, was denn jetzt der Unterschied ist, dann sage ich ihm, er solle aufhören, mir Fragen zu stellen, die ich nicht beantworten kann und setze einen Smiley dahinter". Also: Hör auf mir Fragen zu stellen, die ich nicht beantworten kann ;).


    Ich hab's gegoogelt und meiner Meinung nach müssten beide Varianten gehen. In beiden Fällen wird /bin/bash als root aufgerufen, und in beiden Fällen werden alle environmental Files wie .profile oder .bashrc gelesen. Aus all der Leserei kann ich nur schließen, dass ich es nicht raffe. Tja.


    Bei einem sudo -i spielt anscheinend immer noch der User pi irgendwie mit. Denn stelle ich dem npm install ein sudo vor, obwohl ich schon eine root-Shell habe, dann funktioniert das. Das habe ich gerade noch mal ausprobiert. Für mich kommt jetzt dabei raus, dass sudo su - einen zu root macht und sudo -i einen fast zu root macht. Kapiere das, wer will.


    Vielen Dank erstmal. Jetzt werd ich mal schaun ob ich hinkriege was ich mit dem Ding vorhabe, nämlich Telnet-Befehle zur Steuerung meines Linn DS Streamers ausführen

    Telnet-Befehle - wie darf ich mir die vorstellen? Und was macht ein Linn DS Streamer, der ja offensichtlich nichts für jedes Portemonnaie ist? Meine Bank jedenfalls hat mir mit geteilt, "dass wir ein solches Gerät nicht brauchen".


    Stefan

  • Also: Hör auf mir Fragen zu stellen, die ich nicht beantworten kann ;) .

    Es beruhigt mich zutiefst wenn auch die Gurus nicht alles erklären können 8) So behält die Raspi / Homebridge Bastelei doch noch etwas Mystisches :saint:



    Und was macht ein Linn DS Streamer, der ja offensichtlich nichts für jedes Portemonnaie ist?


    Ist quasi ein Sonos für etwas empfindsamere Ohren :D. Ist ein Musik-Streamer der Musik, sehr gern hoch auflösende, abspielt. Natürlich auch mp3, aber das wäre dann so als würdest Du im 3-Sterne-Restaurant einen Hamburger bestellen...


    Das Ding lässt sich über App steuern, greift auf einen Musikserver zu und spielt die angefragten Dateien ab. Das ganze erfreulicherweise Opensource mit dem Openhome-Protokoll, das auf UPnP aufbaut. Daneben gibt es einen in dem Teil einen Telnet Stack, der für Home-Automatisierungen einfacher zu handeln ist, Crestron etc arbeitet bspw auch damit.


    Gebe ich bspw. im Terminal ein:

    "nc -v {IP-des-Linn} 23"

    wird der Telnet Dialog auf Port 23 geöffnet. Ich bekomme eine freundliche Begrüßung mit "ALIVE" und kann nun anfangen, dem Streamer zu sagen was er tun soll, bsp. zum nächsten Titel springen mit:

    "Action Ds/Playlist 1 Next"

    Wird auch prompt ausgeführt. Der Streamer springt zum nächsten Track.


    Das Ganze möchte ich halt gern in Homebridge haben, so dass ich Siri sagen kann "Nächster Titel" (oder so). Habe schon mit dem https://github.com/moriczgergo/homebridge-telnet plugin gespielt. Das läßt sich zwar installieren, wirft dann aber im Log folgende Fehler aus:


    [6/8/2019, 1:44:52 PM] Error: The requested accessory 'telnet' was not registered by any plugin.

    at API.accessory (/usr/local/lib/node_modules/homebridge/lib/api.js:64:13)

    at Server._loadAccessories (/usr/local/lib/node_modules/homebridge/lib/server.js:297:42)

    at Server.run (/usr/local/lib/node_modules/homebridge/lib/server.js:91:38)

    at module.exports (/usr/local/lib/node_modules/homebridge/lib/cli.js:59:10)

    at Object.<anonymous> (/usr/local/lib/node_modules/homebridge/bin/homebridge:17:22)

    at Module._compile (internal/modules/cjs/loader.js:816:30)

    at Object.Module._extensions..js (internal/modules/cjs/loader.js:827:10)

    at Module.load (internal/modules/cjs/loader.js:685:32)

    at Function.Module._load (internal/modules/cjs/loader.js:620:12)

    at Function.Module.runMain (internal/modules/cjs/loader.js:877:12)


    Und da das Plugin bei NPM als "archived" angezeigt wird, nehme ich mal an dass das recht tot ist. Nun wollte ich es mit cmdtrigger mal probieren. Da kriege ich zwar schön die Kommandos im Log angezeigt, aber auf Seiten des Streamers tut sich - nüscht.


    Der Fehler "was not registered by any plugin" ist jednefalls bullshit da das Plugin definitiv instlaliert ist. Taucht sogar auf dem UI-X Interface auf. Ne Idee was diese Meldung soll?


    Dank und Gruss


    NB: Ja die Linn Dinger sind nicht billig, aber da sie ständig auf dem aktuellen Stand gehalten werden über Software und wenn nötig auch hardware upgrades, ist das eine Investition in die Ewigkeit.