NEWS
Qnap NAS von Iobroker aus herunterfahren
-
Hier die gewünschte Beschreibung QNAP von Iobroker aus herunterfahren zu lassen indem ein DP gesetzt wird, wie besprochen in [Problem mit dem Blockly-Block "exec"]
Die Idee mit dem Qnap runterfahren kam, als ich den "Core Temperaturen zu Iobroker Beitrag hier aus dem Forum um die Möglichkeit erweitert hatte Proxmox (z.B. bei Stromausfall mit USV) von Iobroker heraus runter fahren zu lassen.
Script zum schicken der Core Temperaturen und Shutdown von Proxmox
Qnap herunterfahren von Iobroker aus:Ziel soll sein einen DP auf true zu setzen und die Qnap fährt eigenständig runter. Hoch fahren klappt ja bereits über den WOL Befehl.
Vorbereitung im Iobroker, Erstellung eines DP
0_userdata.0.System.nas.shutdown0_userdata.0.System.nas.shutdown
Per ssh auf der Qnap einloggen (Putty)
login admin passwortcd /share/homes
(DP1 und IPP anpassen)
vim shutdown.sh#!/bin/bash #ioBroker-Datenpunkt der den Shutdown auslöst DP1=0_userdata.0.System.nas.shutdown #ioBroker-IP:Port IPP=192.168.0.222:8087 # ioBroker-Datenpunkt auslesen DPSD=$(wget -qO- http://${IPP}/getPlainValue/${DP1}) # Wenn Datenpunkt für Shutdown gesetzt if [ $DPSD = 'true' ] then # kurz warten sleep 10 # Rueckmeldung an ioBroker senden und DP auf false curl http://${IPP}/set/${DP1}?value=false sleep 10 # System standby/shutdown #echo mem > /sys/power/state /sbin/poweroff fi
[ESC] :wq für speichern und schliessen
[ESC] :q! für quit ohne speichern
(nochmal reingehen und angucken!)Ausführbar machen:
chmod +x shutdown.sh
testen (DP steht auf false)
Qnap sollte nach Aufruf des Scripts anbleiben
nach setzen des DP auf true und Aufruf des Scrips sollte Qnap runterfahrenNun eine Zeile (ganz unten) hinzufügen ([EINFG]:
(ACHTUNG, der übliche Weg mit crontab -e funktioniert, aber nur bis zum nä. reboot)vim /etc/config/crontab
* * * * * /bin/sh /share/homes/shutdown.sh > /dev/null 2>&1
Mit [ESC]:wq Speichern und schließen, Crontab Dienst neu starten
crontab /etc/config/crontab && /etc/init.d/crond.sh restart
Prüfen ob eingetragen:
crontab -l 0 12 * * * /mnt/ext/opt/LicenseCenter/bin/qlicense_tool local_check 0 0 * * * /usr/local/sbin/qsh nc.archive >/dev/null 2>&1 45 15 * * * /mnt/ext/opt/QcloudSSLCertificate/bin/ssl_agent_cli * * * * * /bin/sh /share/homes/shutdown.sh > /dev/null 2>&1
Soweit so gut, es funktioniert und übersteht einen reboot/neustart! Zum Schluss noch die Logik für Alexa:
Der DP Nas1starten triggert den WOL Skript, somit funktioniert „Alexa, schalte NAS ein“ UND „Alexa, schalte NAS aus“
createState("javascript.0.NAS1Starten", 0); // Generiert beim starten den Datenpunkt, wenn nicht vorhanden var wol = require('wake_on_lan'); // Lädt von ioBroker die das nötige Paket var myNAS1 = "00:08:9B:E6:7F:C0"; // MAC definieren // Ab hier automatisch on({id: "javascript.0.NAS1Starten", change: 'any'}, function (obj) { wol.wake(myNAS1); log("Script WOL - NAS 1 gestartet", "info"); } );
-
Vielen Dank!
Benutze zwar kein Alexa, aber dafür eine Sofabaton X1s Fernbedienung und damit funktioniert es auch wunderbar -
@j_paul Ich hole das mal wieder hoch, da ich auch gerne meine Qnap über iob herunterfahren möchte. Allerdings reagiert mein qnap nicht darauf.
IPP habe ich auf die meines iob angepasst. Muss ich den Port auch auf 8087 schreiben oder so, bein direkten Zugriff auf iob, also 8081?
Wenn ich das Skript mit bash shutdown.sh ausführe, schmeißt er folgenden Fehler raus:
shutdown.sh: line 17: [: too many arguments
Das wäre diese Reihe: if [ $DPSD = 'true' ]Kannst du mir evtl weiterhelfen? Wenn weitere Infos benötigt werden, reiche ich diese gern nach.
-
@nogger82
Simple API Adapter mit laufender Instanz auf Port 8087 hast du? -
Für alles, was sich per ssh bedienen lässt, nutze ich den Linux-Control Adapter. Da hast du dann direkt Datenpunkte für deine Befehle.
-
@skvarel
Es kann gute Gründe geben die Root Rechte von einem Host (NAS, Proxmox usw.) nicht in die Weltgeschichte zu verteilen, sondern die Rechte und die Logik auf dem Host zu belassen, mal abgesehen davon, dass es wenn es von Iobroker Seite aus reicht einen einzelnen DP auf true zu setzen, anstatt einen Adapter zu installieren, wenn dies der einzige UseCase dafür sein sollte. -
@j_paul den habe ich in der tat nicht laufen, nein. das guck ich mir an.
-
Bei mir siehts wie folgt aus. Bin leider kein Experte in Sachen Linux.
Der DP1 ist im iob genau so angelegt.
#!/bin/bash #ioBroker-Datenpunkt der den Shutdown auslöst DP1=0_userdata.0.System.nas.shutdown #ioBroker-IP:Port IPP=10.10.10.2:8087 # ioBroker-Datenpunkt auslesen DPSD=$(wget -qO- http://${IPP}/getPlainValue/${DP1}) # Wenn Datenpunkt für Shutdown gesetzt if [ DPSD = 'true' ] then # kurz warten sleep 10 # Rueckmeldung an ioBroker senden und DP auf false curl http://${IPP}/set/${DP1}?value=false sleep 10 # System standby/shutdown #echo mem > /sys/power/state /sbin/poweroff fi
-
@nogger82
Zum testen, kannst du als Benutzer „admin“ nehmen und wenn das funktioniert, ändern in „Sascha“. Dann musst du evtl. die Rechte für den DP anpassen.
Klappt das denn soweit?