Frage zu einer Automatisierungsmöglichkeit

  • Moin!


    Ich habe hier Homebridge laufen und darin auch schaltbare Steckdosen verfügbar. Außerdem habe ich einen Logitech Harmony Hub mit Companion Fernbedienung, der z.B. auch meine Stereoanlage wunderbar über Homekit steuern kann.

    In den letzten Wochen habe ich mir einen piCorePlayer (mit Logitech Media Server) mit einem Raspberry Pi 3B+, einem Hifiberry DAC+ Pro, einem Raspberry 7" Display, einem Smartipi Gehäuse und einer M.2 SSD zusammengebaut.


    Momentan habe ich gerade einen Knoten im Kopf, aber vielleicht hat hier ja einer eine Idee.

    Ich möchte eine Aktion im Harmony Hub anlegen, die die Stereoanlage anschaltet, darüber die geschaltete Steckdose für den piCorePlayer, das bekomme ich auch hin.

    Die Stelle, an der ich nicht weiterkomme ist das Ausschalten. Wenn man also auf Off auf der Companion Fernbedienung drückt, soll die Anlage ausgehen, was ja auch klappt, aber dann soll der piCorePlayer vernünftig heruntergefahren werden und dann erst der Strom abgestellt werden.

    Normalerweise muß man einen piCorePlayer ja nicht herunterfahren, da ja alles im RAM abläuft und er normalerweise nichts auf die SD-KArte schreibt. Da ich aber dort auch den Logitech Media Server laufen habe, schriebt der leider ab und zu einmal etwas, daher muß ich den Pi vernünftig herunterfahren.


    Hat hier jemand einen Idee, wie so etwas zu realisieren ist?

    Eine Idee war z.B. das das ssh-plugin in homebridge zu nutzen, daß ich zum an- und abschalten von pi-hole laufen habe. Nur dann stellt sich die Frage wie man zuverlässig erkennt, daß der Pi heruntergefahren ist.


    Vielen Dank!

  • Ich nutze dafuer das wol Plugin.


    https://github.com/AlexGustafsson/homebridge-wol


    Also bei mir schaltet dieses Plugin meinen MacPro aus bzw. Faehrt ihn runter! Vielleicht ist das auch ein Ansatz fuer dich.


    Dort kannst du Intervalle einstellen, wann geprueft werden soll, ob das Geraet aus ist, dann geht auch der Schalter in Home auf aus. Das kannst du dann ja Bedingung hernehmen um die Steckdose auszuschalten.

  • Ich löse es ebenfalls wie @vgnsxe. Über das homebridge-wol Plugin sende ich

    Code
    sshpass -p 'PASSWORT' ssh -oStrictHostKeyChecking=no [email protected] sudo shutdown -h now

    Setze ich dies allerdings als Bedingung für die Steckdose, schaltet diese augenblicklich aus (Der Schalter wird ja schließlich unabhängig vom Ping kurz deaktiviert) und der Pi hat gar keine Zeit zum Herunterfahren.


    Um dies zu umgehen, habe ich einen zusätzlichen Dummy-Schalter integriert und in Automationen eingebunden.


    Schalter geht aus -> Dummy für 1 Minute an


    Dummy aus -> Steckdose aus


    So hat der Raspberry immer eine Minute Zeit, um Prozesse zu beenden und herunterzufahren, bevor ihm der Strom gekappt wird.


    Edit: Ich habe zwei Raspberrys und schalte mit dem einen den anderen aus, daher der „sshpass“ Befehl..?

  • Vielen Dank Euch beiden für die Ideen (oder die Idee?)!


    Gut mit einer Verzögerung kann man das auch machen. Bisher ist der piCorePlayer bei einem shutdown immer echt schnell unten. Da sollte eine Minute wirklich reichen.


    Sebbo187 kannst Du näher ausführen was Du mit Dummy Schalter meinst? So etwas mit Timer habe ich bisher nicht benutzt.

    Den sshpass Befehl brauche ich ja dann auch. Danke!


    Mit einem Wake-On-Lan Plugin etwas herunterzufahren finde ich immer noch seltsam. :)


    Eine Sache fällt mir gerade noch ein. Den Pi muß ich ja nicht über dieses Plugin aufwecken, da er bei Stromzufuhr ja automatisch hochfährt. Kann ich ihn dann trotzdem herunterfahren?

  • Hat hier jemand einen Idee, wie so etwas zu realisieren ist?

    Eine Idee war z.B. das das ssh-plugin in homebridge zu nutzen, daß ich zum an- und abschalten von pi-hole laufen habe. Nur dann stellt sich die Frage wie man zuverlässig erkennt, daß der Pi heruntergefahren ist.

    Ich hab genau das getan: einer meiner Homebridge-Pis wird heruntergefahren und dann ausgeschaltet. Allerdings nutze ich nicht das ssh-Plugin, aber ich bin sicher, dass man es dann auch benutzen kann.


    Ich habe das mit homebridge-people gelöst. Dieses Plugin pingt die IP-Adresse des Raspi an und wird aktiv, sobald der Raspi auf das Ping nicht mehr antwortet. Danach wartet es 30 Sekunden ("threshold": 0.5) und schaltet dann die Steckdose aus. Die 30 Sekunden sind dafür da, damit ich mal den Raspi rebooten kann, ohne dass gleich der Strom abgestellt wird.


    Meine config.json sieht so aus:



    Stefan

  • Dieses Plugin pingt die IP-Adresse des Raspi an und wird aktiv, sobald der Raspi auf das Ping nicht mehr antwortet.

    Oh, ich glaube das müßte mit fritz-platform auch funktionieren, denn das beobachtet ja auch einzelne IP-Adressen. Das habe ich schon laufen.

  • Mit shutdown funktioniert es leider nicht. Das ist beim TinyCore Linux wohl nicht mit dabei. Ich suche noch.

  • Ah, es ist etwas einfacher. Man nehme einfach "pcp bs" Das macht ein Backup (falls man online gerade etwas an der Konfiguration geändert haben sollte) und dann den Shutdown.


    Das funktioniert auch:

    Code
    [TuyaAccessory] Sending piCorePlayer {"1":true}
    [4/29/2019, 9:03:57 PM] [Musikbox] NetworkDevice "Musikbox" (192.168.178.107) went from status "Offline" to "Online"
    [4/29/2019, 9:04:10 PM] [Musikbox] NetworkDevice shutdown cycle started for "Musikbox" (192.168.178.107)
    [4/29/2019, 9:04:10 PM] [Musikbox] Attempting to shut down "Musikbox" (192.168.178.107) using "sshpass -p 'xxxxx' ssh -oStrictHostKeyChecking=no [email protected] pcp bs"
    [4/29/2019, 9:04:10 PM] [Musikbox] NetworkDevice "Musikbox" (192.168.178.107) went from status "Online" to "Shutting Down"
    [TuyaAccessory] Sending piCorePlayer {"1":false}
    [4/29/2019, 9:04:56 PM] [Musikbox] NetworkDevice "Musikbox" (192.168.178.107) went from status "Shutting Down" to "Offline"

    Dieser Status, den das wol-plugin ausgibt wird leider nicht an Homekit weitergereicht, denn der könnte das ja erledigen. Der Schalter ist schon auf Aus, wenn der Status "Shutting Down" ist.

    3 Mal editiert, zuletzt von carsten_h ()