Festplatte am Raspi mit Homebridge unmounten, bevor Osram Smart Plug diese vom Strom nimmt

  • Dieser Thread-Titel...



    Ich hab an meinem Samba Share (Raspberry Pi 3, auf dem auch Homebridge, etc läuft) eine externe Festplatte zu hängen, welche extra an der Steckdose nochmals betrieben werden muss. Dazu noch einen Osram Smart Plug in der Schublade. Nun dachte ich mir, dass die Festplatte ja nicht 24/7 laufen muss wenn man nur einmal die Woche darauf zugreift, also kann man ja den Smart Plug benutzen um die Festplatte ein- und auszuschalten.


    Hier will ich aber potenzielen Datenverlust vorbeugen: Ich will nicht im laufenden Betrieb einfach die Platte vom Strom nehmen, ohne dasss diese vorher unmountet wurde. Meine Idee also: Einen virtuellen Schalter in Homebridge, auf Knopfdruck wird ein Befehl an den Raspi gesendet, welcher einen umount auf die Platte absetzt und dann (sofern erfolgreich) einen Befehl an den SMart Plug schickt um diesen auszuschalten. Jemand eine Idee wie man das umsetzen kann? Dachte schon daran mit dem Http-Plugin auf einem Miniserver bei Druck des virtuellen Schalters ein Flag zu setzen, welcher vom Raspi abgerufen werden kann um dann die Platte zu unmounten. Aber spätestens beim Befehl absetzen um den Osram auszuschalten bin ich raus.

  • Moin!


    Schau Dir einmal meine Anleitung zum piCorePlayer von vorletzter Woche an. Dort manche ich im Prinzip so etwas. Bei mir wird halt der gesamte Pi heruntergefahren. Du bräuchtest als Befehl eben umount. Aber ansonsten dürfte viel gleich sein.

  • Ich hab jetzt eine Weile über die Aufgabe nachgedacht. Ich finde sie kniffelig. Ich würde versuchen, sie mit Node Red zu lösen .


    Das eine Problem liegt darin, den Osram Plug zu schalten. Das zweite Problem liegt darin, in Home den Schalter zu aktualisieren. Zu letzterem Punkt: nehmen wir an, du schaltest deinen virtuellen Schalter aus und damit wird die Platte ungemountet (wasn geiles Wort). Wenn du sie wieder mountest, sollte der virtuelle Schalter wieder eingeschaltet werden. Dazu brauchst du einen Prozess, der kontinuierlich den Mount-Zustand deiner Platte überwacht.


    Ein kleines bash-Skript kann den Job erledigen. Wenn deine gemountete Platte /dev/sda1 heißt, dann würde das so aussehen:

    Bash
    #!/bin/bash
    exit $(mount | grep -q "/dev/sda1"; echo $?)

    Das speichern wir mal als check_mount_status.sh ab. Dieses Skript gibt einen Returncode zurück, der entweder 0 ist (da ist eine Platte gemountet) oder 1 (da ist nix dergleichen). Dieser Returncode soll dann den Schalter in Home aktualisieren.


    Mit Node Red kann man sich den Ablauf dann "zusammenmalen". Kernstück des Ganzen ist ein exec-Node, der das Skript check_mount_status.sh alle fünf Sekunden aufruft.


    Zusätzlich wird für Node Red die HomeKit-Palette installiert. Die liefert nun einen Schalter, den man in Home sehen kann. Ich habs mit einem USB-Stick getestet: wird er gemountet, geht der Schalter an. Wird er ungemountet, geht der Schalter aus. Darauf kann man nun eine HomeKit-Automation aufbauen, die den Osram Plug ausschaltet.


    Ich habe auf diese Art und Weise mit Node Red ein Programm "geschrieben" ohne auch nur eine einzige Zeile Code zu tippen. Ich füge mal das Bild des Flows hier an, auch wenn ich ständig zu blöde bin, hier ein Bild einzufügen. Irgendwas wird schon zu sehen sein, und es soll verdeutlichen, dass es letztendlich einfach ist mit Node Red was zu basteln. Ok, ich habe jetzt auch mal 45 Minuten dareingesteckt, und ich habe schon ungefähr gewusst, was ich tue, aber wenn du dich damit beschäftigen willst, stelle ich dir gern den kleinen Flow zur Verfügung, damit du ihn selber verwenden kannst.


    Stefan

    Einmal editiert, zuletzt von sschuste ()

  • sschuste findest du es angenehmer/stabiler solche „Status“ Skripte ueber NodeRED nach HomeKit zu transportieren, oder ueber homebridge plugins welche als Switches nach dem Statusabgleich geschaltet werden?


    Oder ist das eher ne Sache von: Wenn man NodeRED gewohnt ist, gehts da flink, wer mit den homebridge Plugins umzugehen weiß, geht da genauso flink?

  • Für die oben gestellte Aufgabe ist mir nichts anderes eingefallen. Ansonsten mach ich alles über die Homebridge, allein schon deshalb, um mich nicht zu verzetteln.


    Ich setze Node Red dann ein, wenn es für meine spezielle Anforderung kein Plugin gibt und auch keins geben wird, beispielsweise: schalte die Lampe auf Rot, wenn die S4 Verspätung hat. Dazu muss man dann aber auch schon (geringe) Javascript- und JSON-Kenntnisse haben, um beispielsweise die Antwort eines Servers auswerten zu können.


    Homebridge ist ja eigentlich schon HomeKit für Fortgeschrittene und man kann damit ja auch wirklich fast alles machen. Für alles weitere braucht man Programmierkenntnisse, die ich nicht wirklich habe, und da hilft mir dann Node Red.


    Stefan

  • Ich schau mir mal beide Lösungen (piCorePlayer und Node Red). Mit Node Red habe ich mich noch nie beschäftigt, aber wenn du sagst, dass eine gute Alternative sein soll, falls es keine passenden Plugins gibt...

    Worst case: ich kaufe mir eine externe 2,5" Platte nach, welche direkt über USB versorgt wird und ggf einen Sleep Mode besitzt.

  • Leg dir eine 2.5" Festplatte zu, meine WD-Passport läuft ohne zusätzliche Stromversorgung und geht auch zuverlässig in den StandBy.


    Läuft deine Festplatte denn durch, auch wenn sie nicht benutzt wird?

  • Leg dir eine 2.5" Festplatte zu, meine WD-Passport läuft ohne zusätzliche Stromversorgung und geht auch zuverlässig in den StandBy.


    Läuft deine Festplatte denn durch, auch wenn sie nicht benutzt wird?

    Ja, deswegen auch die Idee mit dem Smart plug



    Sent from my iPhone using Community

  • Ich hätte dazu noch einen anderen Ansatz, dafür bräuchten wir folgende Plugins:


    "homebridge-cmdswitch2" & "homebridge-dummy"


    Zuerst könnte man einen festen Mountpoint und das automatische Mounten für den Datenträger festlegen:

    Über das cmdswitch2 Plugin hinterlegen wir dann folgende Befehle in unserer config:

    Code
    platforms": [{
       "platform": "cmdSwitch2",
       "name": "CMD Switch",
       "switches": [{
           "name" : "Festplatte",
           "on_cmd": "sudo mount -a",
           "off_cmd": "sudo umount /media/usbstick"
       }

    ("/media/usbstick" muss hier natürlich angepasst werden)



    Als Nächstes legen wir uns über das "homebridge-dummy" Plugin einen Dummy-Schalter an:

    Code
    "accessories": [
            {
              "accessory": "DummySwitch",
              "name": "Dummy",
              "stateful": true
            }   
        ]


    Wir haben nun zwei neue Schalter in HomeKit, einen für das Mounten der Festplatte und einen Dummy Schalter, der erstmal gar nichts bewirkt. Der Osram Smart Plug befindet sich, wie ich einmal annehme, bereits längst in HomeKit, sollte dies noch nicht geschehen sein, kann dies nun über das homebridge-hue Plugin nachgeholt werden.


    Zuletzt legen wir noch folgende Automationen in Home an:


    1. Festplatte wird deaktiviert -> Dummy für 1 Minute aktivieren

    2. Dummy wird deaktiviert -> Osram Smart Plug deaktivieren


    3. Osram Smart Plug wird aktiviert -> Festplatte aktivieren


    So haben wir bewirkt, dass wir zum Unmounten der Festplatte lediglich den Button "Festplatte" deaktivieren müssen. Die Festplatte wird korrekt ausgeworfen und die Stromversorgung wird 1 Minute später automatisch abgeschaltet (so hat der Raspi mehr als genug Zeit, die Festplatte korrekt "unzumounten").

    Wenn wir dann die Festplatte wieder einbinden möchten, brauchen wir lediglich den Button "Osram Smart Plug" zu aktivieren (durch fstab wird die Platte automatisch wieder eingebunden, die dritte Automation ist somit eigentlich überflüssig und dient nur der korrekten Statusanzeige des Schalters in HomeKit) und schon ist die Platte wieder verfügbar.

  • Ich hätte dazu noch einen anderen Ansatz

    Wenn Du Dir meinen Ansatz ansiehst, wirst Du feststellen, daß der recht ähnlich ist. :)

  • Läuft deine Festplatte denn durch, auch wenn sie nicht benutzt wird

    Nein, die geht sehr schnell nach Benutzung in den Ruhezustand und verbraucht dann praktisch keinen Strom mehr. Ich verwende eine WD My Passport Ultra 2015 mit 3TB.