NEWS
Raspi aus VIS herunterfahren
-
Hallo zusammen,
ich habe einen RasPi mit einem kleinen Touchdisplay im Garten. Da der aber nur bei Bedarf eingeschalten wird wäre es schön wenn ich ihn auch ordentlich herunterfahren könnte weil ja sonst beim Neustart der Browser immer erst herumschimpft dass er eben nicht ordentlich beendet wurde usw. Da ich den Browser natürlich im Vollbildmodus laufen habe und auch keine Tastatur anschließen will hätte ich gerne einen Button auf meiner View mit dem ich den RasPi sauber herunterfahren könnte. Allerdings fehlt mir da im Moment die Idee wie ich überhaupt rangehen könnte :?:
Hat von Euch jemand eine Idee oder schon mal sowas gemacht?
Gruß und Danke
Thilo
-
Hallo Thisoft,
ein kleines javascript oder Node-red Flow schreiben, der auf einen selbst angelegten State hört (Wert=1) und mit Exec das Kommando shutdown aufruft.
Im Programm erst den State wieder zurück auf 0 setzen und danach erst das Kommando aufrufen.
In VIS dann einfach einen Schalter mit dem State verbinden.
Gesendet von meinem GT-N8000 mit Tapatalk
-
der auf einen selbst angelegten State hört (Wert=1) und mit Exec das Kommando shutdown aufruft. `
Beispielscript:createState("RaspPi-down", false, { read: true, write: true, desc: "RaspPi herunterfahren", type: "boolean", def: false }); on("javscript.0.RaspPi-down", function(dp) { if(dp.state.val) { setState(dp.id, false); exec("shutdown"); } });
-
… der Raspi ist aber remote, oder?
Dann wird exec("shutdown") den Vis server runterfahren.
Einfach das shutdown Kommando auf dem Raspi mit ssh aufrufen, SSH muss man dann natürlich mit public/private key login konfigurieren, damits ohne Passwort-Eingabe klappt.
Werner
-
Nein, es wird das System runtergefahren, auf dem sich der Javascript-Adapter befindet.
Auf dem Remote-System muss hierfür natürlich eine Instanz sein.
Außerdem steht ja oben, dass auch das Touch-Display im Garten ist. Deswegen gehe ich mal davon aus, dass auf dem System auch vis drauf ist.
-
Oder ein Script zum Runterfahren auf dem Raspi anlegen und wie folgt aufrufen:
createState('javascript.0.System.Shutdown', false, {name: 'Skript bei VIS Tastendruck starten'}); setState('javascript.0.System.Shutdown', false); on ({ id: "javascript.0.System.Backup", change: 'ne', val: true }, function(){ log ("--> Shutdown gestartet!"); exec('/opt/shutdown.sh', function(err, stdout, stderr) { if (err) { log(stderr,'error'); return; } }); });
Dann einfach den Status per Tastendruck auf "true" ändern.
-
createState('javascript.0.System.Shutdown', false, {name: 'Skript bei VIS Tastendruck starten'}); ```` `
Erzeugt einen Datenpunkt vom Typ "mixed", was vermieden werden sollte. Außerdem ist die Beschreibung ("desc") leer.
@Brati:setState('javascript.0.System.Shutdown', false); ```` `
erzeugt beim ersten Scriptstart ein Fehler-Log, da dann der Datenpunkt noch nicht vorhanden ist (createState() ist noch nicht fertig); außerdem unnötig, da der Wert schon mit createState(id, false, {…}) auf false gesetzt wird. Dafür fehlt das Rücksetzen auf false in der on-Funktion.
@Brati:on ({ id: "javascript.0.System.Backup", change: 'ne', val: true }, function(){ ... }); ```` `
ist identisch mit
on("javscript.0.System.Backup", function(dp) { if(dp.state.val) { ... } });
Die ID in on(id, …) stimmt nicht mit der iD des mit createState() erzeugten Datenpunktes überein. Das Shellscript "shutdown.sh" im Ordner "/opt" existiert normalerweise nicht. "shutdown" ist ein Symlink im Suchpfad "/sbin". Besser:
on({id: "javascript.0.System.Shutdown", change: 'ne', val: true}, function(){ log ("--> Shutdown gestartet!"); setState("javascript.0.System.Shutdown", false); exec('shutdown', function(err, stdout, stderr) { if (err) log(stderr,'error'); }); });
-
Hallo und vielen Dank für Eure Antworten.
Das mit dem exec-Befehl klingt ja eigentlich gut und einfach. Allerdings - nochmal zum Verständnis: Ich lasse auf diesem RasPi lediglich VIS in einem Browser anzeigen, da ist nix ioBroker-seitiges drauf installiert. Bedeutet das, dass mein Vorhaben so gar nicht geht, oder wäre die Lösung mit einem Shutdown-Script "irgendwo" auf diesem RasPi und Aufruf des Scripts per exec möglich?
Gruß Thilo
-
Interessante Zusatzinformation, die ich oben nicht raus gelesen hatte …
Dann kannst du das System, wie dwm geschrieben hat, mittels ssh runter fahren.
Schau mal hier: https://www.raspberrypi.org/forums/view ... 31&t=13640
Hier ist beschrieben wie man ssh keys erstellt, sodass beim Aufruf des ssh Kommandos mit exec kein Passwort erforderlich ist:
https://jankarres.de/2013/12/raspberry- ... t-aendern/
Gesendet von meinem GT-N8000 mit Tapatalk