Das geht irgendwie nur bei Google. Bei mir jedenfalls geht's nicht. Was dagegen sehr gut funktionierte, war die Deinstallation von homebridge-wol.
sudo npm uninstall -g --unsafe-perm homebridge-wol (ein Träumchen!)
Ich habe meine Homebridge nach der Forenanleitung installiert. Daher bezieht sich die folgende Vorgehensweise auf die User und Pfade, die dort verwendet werden.
Ich habe mir so beholfen: der Befehl pmset sleepnow bringt einen Mac zum Schlafen. Der Befehl caffeinate -u -t 1 weckt ihn wieder auf. Beide Befehle müssen auf dem Mac ausgeführt werden. Zumindest den ersten kannst du ausprobieren: gibst du ihn im Terminal auf dem Mac ein, wird der Bildschirm schwarz. Den zweiten kannst du nicht eingeben, weil der Bildschirm des Mac - nun ja - schwarz ist.
Nach der Wiedererweckung des Macs habe ich einen neuen User auf dem Mac angelegt, den ich homebridge genannt habe (mittels Systemeinstellungen - Benutzer & Gruppen). Dann habe ich im Terminal den Befehl sudo su - homebridge eingegeben, um unter seinem Namen zwei Shellskripte anzulegen.
Das erste: nano sleepmac.sh
#!/bin/bash
pmset sleepnow
und das zweite: nano wakemac.sh
#!/bin/bash
echo "Waking up..."
caffeinate -u -t 1
Die Skripte habe ich ausführbar gemacht: chmod +x sleepmac.sh wakemac.sh. Dann habe ich mich wieder ausgeloggt mit exit.
Da der homebridge-User von mir keine Adminrechte bekommen hat (der hat sogar die Kindersicherung eingeschaltet und darf nicht mal seinen Kalender aufrufen), darf er den Mac nicht schlafen legen. Also habe ich eine sudoers-Datei angelegt, die ihm genau das und nur das erlaubt: sudo visudo -f /etc/sudoers.d/homebrigde mit diesem Inhalt:
homebridge ALL = NOPASSWD: /Users/homebridge/sleepmac.sh
Dann habe ich das getestet, in dem ich mich auf dem Raspi eingeloggt habe und dort zum User homebridge gewechselt habe: sudo su - homebridge. Von dort aus habe ich dann die beiden Shellskripte auf dem Mac (192.168.1.20) ausgeführt:
ssh [email protected] sudo -n /Users/homebridge/sleepmac.sh && sleep 5 && ssh [email protected] /Users/homebridge/wakemac.sh
Das sind drei Befehle: der erste legt den Mac schlafen, der zweite wartet 5 Sekunden und der dritte weckt den Mac wieder auf. Danach habe ich mich um das Problem gekümmert, dass ich ja immer noch ein Passwort eingeben muss, um die Befehle auf dem Mac auszuführen (deshalb ist der Mac nämlich nicht wieder nach 5 Sekunden aufgewacht). Dazu habe ich ein ssh-Schlüsselpaar erstellt: ssh-keygen und habe alle Fragen einfach mit der Entertaste beantwortet. Einen der beiden Schlüssel habe ich auf den Mac kopiert: ssh-copy-id [email protected] und die Befehle erneut ausgeführt. Diesmal wollte niemand ein Passwort von mir wissen und der Mac wachte wieder auf.
So, dann zum Finale: mittels des Plugins homebridge-cmd kann man nun die Befehle in homebridge ausführen:
"accessories": [
{
"accessory": "CMD",
"name": "iMac sleep",
"on_cmd": "ssh [email protected] sudo -n /Users/homebridge/sleepmac.sh",
"off_cmd": "ssh [email protected] /Users/homebridge/wakemac.sh"
}
]
Die obige Konfiguration in config.json ist nur ein Beispiel. Ich selbst verwende das Plugin gar nicht, sondern homebridge-cmdtrigger. Und es gibt noch unzählige andere Command-Plugins. Es soll nur verdeutlichen, wie die Befehle in homebridge ausgeführt werden können. Welches Plugin du am Ende benutzt, bleibt dann dir überlassen.
Du siehst, das war alles ganz einfach
. Nur mal so als sachdienlicher Hinweis.
Disclaimer: ich habe diese Anleitung aus dem Kopf geschrieben und den größten Teil beim Schreiben hier nicht ausprobiert. Möglicherweise funktioniert es nicht so wie beschrieben, aber es kommt der Sache schon sehr, sehr nah.
Stefan