iobroker fährt anderen Raspberry (ambilight) runter

  • Hallo,


    da der Raspberry nicht einfach ausgeschaltet werden soll, sondern immer schön runter gefahren wird, habe ich mir folgendes überlegt:

    Runterfahren des ambilight):

    1. Raspberry (ambilight) kommt an sonoff (Basic oder Steckdose)

    2. Raspberry (iobroker) sendet Kommando -halt an ambilight , ambilight fährt runter

    3. Raspberry (iobroker) schaltet Steckdose oder basic zwei Minuten später aus


    Starten des ambilight:

    1. Raspberry (iobroker) schaltet Steckdose oder Basic an, ambilight startet


    Damit lässt sich das Starten oder Ausschalten sauber gestalten und in Scenen einbinden sowie per Sprache steuern.


    Wie lautet der Befehl, den der iobroker an das amibilight senden muss?

    http://IP-ambilight:cmd sudo shutdown -h 0 ?


    Viele Grüße und viele Ideen

    wünscht Mario

  • Die Idee zur Herunterfahren erscheint mir schlüssig sollte so funktionieren, was mir nicht ganz klar ist wie du per Web Request einen Terminal Befehl absenden möchtest, wenn das OS von deinem ambilight so etwas unterstützt kannst du mal ein Beispiel posten?


    Unabhängig davon wäre ein Lösungsweg per iobroker Script eine SSH Verbindung zum ambilight Raspberry aufzubauen und dann im Script den shutdown Befehl abzusetzen. Dazu müsste aber vorher eine SSH Public Key Authentifizierung eingerichtet werden.

  • Moin, ich habe es bei mir schon realisiert und gelöst dazu nutze ich Baumarktsteckdosen die auf 433mhz empfangen


    --------

    Edit:


    Sorry war noch unterwegs jetzt kann ich besser schreiben.


    Also wegen shutdown geht nur per ssh, für node gibts simple-ssh.


    Beschrieben habe ich es hier schon mal: [Tutorial] Computer mit IoBroker starten und herunterfahren mit Stromnetz trennen [WIP]


    auch wenn die Anleitung für Windows noch nicht fertig ist, für Linux ist das TuT aber schon lauffähig.

    das kannst du so auch auf dem Pi umsetzten, mit dem unterschied das Blockly-Script am ende muss etwas anders aussehen.


    Ich habe zusätzlich eine Ping abfrage eingebaut erst wenn das Gerät nicht mehr erreichbar ist wird 10 sec später Strom getrennt, damit der Pi auch wirklich komplett heruntergefahren ist.


    Gruß


    Patrick

  • Respekt vor der Anleitung sehr gut beschrieben, es geht aber etwas einfacher also ohne lokale Skripte und Simple SSH, das komplizierteste bzw. aufwendigste ist zwischen dem iobroker Linux und dem Linux des Ziel Systems die SSH Public Key Authentifizierung einzurichten, dazu kann ich bei Bedarf auch ein kleines Tutorial schreiben, danach reicht folgender Blockly Block im Script um das System auszuschalten


    schimmer-media.de/index.php?attachment/1803/

  • Ok das Tut bezieht sich auf zwei Raspberry Pi Systeme, also wird auf beiden Systemen der User „pi“ verwendet, bitte nicht den root user benutzen!


    1.) SSH Verbindung zum iobroker Raspberry aufbauen und folgende Befehle absetzen:


    Code
    1. mkdir ~/.ssh
    2. ssh-keygen

    schimmer-media.de/index.php?attachment/1806/


    Die Abfrage für die passphrase ohne Eingabe einfach mit Enter bestätigen.

    Nun geben wir den gerade generierten puplic key mit folgenden Befehl aus:

    Code
    1. cat ~/.ssh/id_rsa.pub

    schimmer-media.de/index.php?attachment/1807/


    Den Key markieren und kopieren diesen irgendwo zwischen Speichern z. B. im Editor da wir ihn später benötigen, wichtig dabei ist das der Key aus einer einzelnen Zeile besteht beim Kopieren kann es eventuell passieren das ein Zeilenumbruch automatisch eingefügt wird!


    Nun bauen wir eine SSH Verbindung vom iobroker Raspberry zum ambilight Raspberry auf:


    Code
    1. ssh HostnameAmbilightRaspberry


    Hier geben wir nun folgende Befehle ein:


    Code
    1. mkdir ~/.ssh
    2. nano ~/.ssh/authorized_keys


    schimmer-media.de/index.php?attachment/1808/


    Wir befinden uns jetzt im nano Editor hier fügen wir den vorher kopierten puplicy key ein und speichern die Datei mit der Tasten Kombination „STRG + O“ „Enter“ „STRG + X“ ab (Die + Zeichen müssen nicht gedrückt werden)


    Jetzt befinden wir uns wieder in der Shell und können die letzten befehle ausführen:

    Code
    1. chmod 700 .ssh && chmod 600 .ssh/authorized_keys
    2. sudo chown $USER .ssh/authorized_keys
    3. sudo service ssh restart && exit


    Durch den letzten Befehl „exit“ sollten wir uns nun wieder in der Shell vom iobroker Raspberry befinden, nun können wir zum Testen wieder eine SSH Verbindung zum ambilight Raspberry aufbauen, wenn alles geklappt hat erfolgt die Verbindung automatisch und es muss kein Passwort eingeben werden.


    In der iobroker Weboberfläche muss noch in der Javascript Adapter Konfiguration das „exec“ Kommando erlaubt werden, damit der von mir vorher geposte Blockly Block funktioniert!

  • sehr gut, bei meiner variante ist halt immer noch ein pw notwendig deshalb auch den lokalen script.


    vllt nehme ich deine variante noch bei mir auf.


    gruß


    Patrick


    PS: Danke für den Lob habe so gut es ging sie halt beschrieben die anleitung^^

  • Gestern Abend mal installiert. Im ersten Anlauf hat das - halt nicht funktioniert. Habe testweise eine Szene erstellt, welche das oben gezeigte blockly Script ausführt und die Scene dann Cloud als Sprachbefehl zugeordnet.....<br>
    Ich weiß jetzt nicht, ob ich schalte an gesagt habe, um den raspberry auszuschalten... fällt mir gerade ein.<br>
    aber die Anleitung für den Key austausch, ist echt top! <br>
    <br>
    Gesendet von meinem SM-N910F mit Tapatalk

  • Endlich Zeit das zu testen. Es klappt!<br>
    raspberry mit Hyperion fährt runter, jedoch bleiben die LED an und ich muss anschalten sagen, um den Raspberry runter zu fahren. Aber wenn ich das in eine Scene einbaue, ist das egal. <br>
    <br>
    Gesendet von meinem SM-N910F mit Tapatalk

  • mache ich genau so nur mit ner 433mhz steckdose dann wird per ping geschaut ob der pi noch erreichbar ist, dann nach ca 10 sec wird nochmals geschaut falls beides mal false ergibt = strom weg sonst bleibt strom an. (wegen reboot etc)

  • Meine LED leuchten erstmalig nach, hatte bisher ein anderes System drauf, da war das nicht. Ich habe kein kodi drunter laufen. <br>
    <br>
    Gesendet von meinem SM-N910F mit Tapatalk

  • Respekt vor der Anleitung sehr gut beschrieben, es geht aber etwas einfacher also ohne lokale Skripte und Simple SSH, das komplizierteste bzw. aufwendigste ist zwischen dem iobroker Linux und dem Linux des Ziel Systems die SSH Public Key Authentifizierung einzurichten, dazu kann ich bei Bedarf auch ein kleines Tutorial schreiben, danach reicht folgender Blockly Block im Script um das System auszuschalten


    schimmer-media.de/index.php?attachment/1803/

    Super Sache dass alles Habe eine Steuerbare Steckdose + Pi Puplic Key wurde vergeben also soweit so gut nur komm ich jetzt mit dem blockly script nicht weiter da ich einfach mal dein script auprobieren wollte um zu sehen wies funktionert stellte ich fest dass der link nicht mehr Funktioniert.


    PS: Sy wegen Rechtschreibung

  • Kommt darauf an wann du dein ioBroker installiert hast, wenn du die Installationsroutine (ab Dezember 2018) benutzt hast nutze Variante 2, wenn nicht gehen beide Varianten.


    IP Adresse und Benutzer müssen natürlich angepasst werden.


    fgte8ko9.png


    EDIT: Vergessen zu erwähnen bei Variante 2 wird der ioBroker User verwendet, dieser hat natürlich keine SSH Keys, diese können aber einfach kopiert werden:


    Code
    1. cp -rT /home/pi/.ssh/ /home/iobroker/.ssh
    2. chown iobroker /home/iobroker/.ssh/authorized_keys
    3. chown iobroker /home/iobroker/.ssh/id_rsa
    4. chown iobroker /home/iobroker/.ssh/known_hosts
  • ....

    EDIT: Vergessen zu erwähnen bei Variante 2 wird der ioBroker User verwendet, dieser hat natürlich keine SSH Keys, diese können aber einfach kopiert werden:


    Code
    1. cp -rT /home/pi/.ssh/ /home/iobroker/.ssh
    2. chown iobroker /home/iobroker/.ssh/authorized_keys
    3. chown iobroker /home/iobroker/.ssh/id_rsa
    4. chown iobroker /home/iobroker/.ssh/known_hosts

    Danke TeNNo2k5, ich hänge jetzt and der Stelle wo der "iobroker" Berechtigung bräuchte.

    Wo müssten dass .ssh Verzeichniss kopiert und berechtigt werden? Auf der iobroker Raspberry oder der ambilight Raspberry?


    Update: Beantworte meine eigen Frage:

    ...die .ssh müssen auf dem iobroker Raspberry kopiert und berechtigt werden. Da nicht mit dem user iobroker ngemeldet werden kann, zuerst "User wechseln" auf der Konsole: 


    Code
    1. su -u iobroker -s /bin/bash


    dort wechelt es dann so...

    pi@raspberrypi:~ $ sudo -u iobroker -s /bin/bash

    iobroker@raspberrypi:/home/pi $


    > und jetzt der Anleitung von TeNNo2k5 folgen.


    Noch (m)ein Anfängerfehler :evil:: Beim Zussammenbau des exec command darauf achten, dass ein "Leerschlag" entweder am ende der ersten Zeile - oder anfang der 2ten Zeile, ansonsten klappts dort nicht.

    Am besten das Häckchen bei "mit Ergebnissen" setzen und den Loglevel "info" setzen, dann sollte der "command" im Log sichtbar sein.


    LG Fidi