VIS – Reboot Linux über die Visualisierung
In diesem kleinen Artikel zeige ich Dir, wie Du dein Linux System (z.B. Raspberry PI) direkt über eine VIS View rebooten kannst.
Im ersten Schritt legen wir uns einen beliebigen Datenpunkt in den Objekten an, mit dem wir später den Neustart über die View starten können. Ich habe in meinen Objekten dazu folgenden Datenpunkt angelegt:
Datenpunkte.0.System.pi.reboot
In den Objekten sehen wir jetzt den erstellten Datenpunkt.
Im nächsten Schritt öffnen wir die gewünschte View in VIS und legen auf die View ein Widget vom hqWidgets on/off.
Nach dem Markieren des Widgets können wir die zu schaltende Object ID (Datenpunkte.0.System.pi.reboot) eintragen. Zudem muss im Bereich Wert die CheckBox „Taster“ aktiviert werden. Dadurch wird in das Objekt „Datenpunkte.0.System.pi.reboot“ mit dem Klick kurz „true“ und dann wieder „false“ eingetragen. Zudem habe ich das Kleinbild des Widgets angepasst, da ich hier ein Lampen-Symbol weniger passend finde 😉
Im nächsten Schritt legen wir uns nun ein neues JavaScript an, in das wir folgenden Code einfügen:
function rebootPi() { log('reboot linux system', 'info'); exec('sudo shutdown -r now'); } on({id: 'Datenpunkte.0.System.pi.reboot', val: true, change: 'ne'}, function (obj) { rebootPi(); });
Im Script wurde eine Subscription auf den angelegten Datenpunkt angelegt, welche nur auslöst, wenn der Datenpunkt auf „true“ steht. Der Body der Subscription führt dann die Funktion rebootPi() aus, welche zunächst in das ioBroker Log einen Eintrag schreibt und dann per exec() Funktion das entsprechende Linux Kommando für den Neustart ausführt.
Nach dem Speichern können wir das Script direkt aktivieren. Für einen ersten Test würde ich noch den eigentlichen Neustart auskommentieren und einmal prüfen ob der Eintrag in das Log geschrieben wird. Um das Script nutzen zu können muss zudem die Ausführung der exec() Funktion in den JavaScript-Adapter Einstellungen aktiviert werden.
Ich hoffe euch gefällt dieser Artikel. Über Kommentare unterhalb des Artikels oder per E-Mail freue ich mich wie immer ?
Hallo Matthias,
ich habe versucht deine Lösung mit den Reboot-Button unter ioBroker nachzubauen jedoch es gibt bei mir ein Problem mit dem JS-Skript und zwar erhalten ich zwei Meldungen:
Zeile 1: Cannot find name „pre“
Zeile 9: Cannot find name „rebootPi“
Was kann/ soll ich bei Zeile 1 machen bzw. Zeile 9 bezieht sich doch auf den Funktionsnamen in Zeile 2 in deinem Skript oder?
function rebootPi() {
log(‚reboot linux system‘, ‚info‘);
exec(’sudo shutdown -r now‘);
}
on({id: ’systeminfo.0.pi.reboot‘, val: true, change: ’ne‘}, function (obj) { rebootPi();
});
Ich bitte um Hilfestellung.
Danke und Gruß Katsche
Hallo,
sorry, das war ein Fehler im Script der Website. Bitte verwende jetzt den aktuellen Code, dann sollte es passen.
Grüße,
Matthias
Hallo und vielen Dank für diese und viele anderen Anleitungen.
Bei dieser fällt mir auf, dass der exec-Befehl nicht ausgeführt wird. Ich nutze einen PI3, habe im Adapter setObject und exec aktiviert und wenn ich den Befehl sudo shutdown -r now in Putty eingebe, erfolgt ein Neustart. Auch wird ein log geschrieben (script.js.Neustart: reboot linux system)
Woran kann es denn sonst noch liegen?
Danke und Gruß aus Hamburg,
Patrick
Hi, meinem Pi4 funktioniert das auch nur per terminal (sudo shutdown -r now).
ioBroker LOG: „script.js.pi.reboot: reboot linux system“
Node.js: v10.17.0
NPM: 6.11.3
„setObject“ und „exec“ Funktion ist erlaubt
Jemand eine Idee woran das liegen kann?
OK, habe die Lösung gefunden: Alles rennt nun unter dem User iobroker und einbinden in /etc/sudoers löst das Problem:
iobroker ALL=(ALL;ALL) ALL
iobroker ALL=NOPASSWD:/sbin/reboot
iobroker ALL=NOPASSWD:/sbin/shutdown
Hallo,
super, danke für die Lösung hier. Derzeit habe ich noch keinen Pi4 im Einsatz, das kommt aber demnächst 🙂
Viele Grüße,
Matthias
Hallo,
mann kann einen Reboot auch in Blockly ganz einfach machen.
Mann muss nur in der Java Instanz „excec“ erlauben.
Hier mein Blocky export:
Alexa_Geräte.0.Pi_Reboot
any
FALSE
log
sudo reboot
Viele Grüße,
Daniel
Hallo,
mann kann einen Reboot auch in Blockly ganz einfach machen.
Es gibt unter Aktionen den Befehl „exec“, dort habe ich als Text „sudo reboot“ rein geschrieben.
Mann muss nur in der Java Instanz „excec“ erlauben.
Mein Blocky export konnte ich hier leider nicht einfügen.
Wenn mir noch jemand sagt, wie mache ich das gerne.
Aber ich denke das bekommt ihr auch selbst hin.
Viele Grüße,
Daniel
Hallo! Tolle Anleitung!
Ich habe ein Master_Slave System! Wie schaffe ich es, den Slave zu rebooten?