ioBrokerioBroker TutorialsioBroker Visualisierung

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 ?

Matthias Korte

Hauptberuflich Software-Entwickler und seit einigen Jahren Smart-Home Fan. Angefangen hat alles mit einem RaspberryMatic und einer schaltbaren Steckdose. Mittlerweile habe ich einige Steckdosen, Sensoren, und Thermostate sowie ioBroker zur Visualisierung im Einsatz.

9 Gedanken zu „VIS – Reboot Linux über die Visualisierung

  • Katsche

    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

    Antwort
    • Matthias Korte

      Hallo,

      sorry, das war ein Fehler im Script der Website. Bitte verwende jetzt den aktuellen Code, dann sollte es passen.

      Grüße,
      Matthias

      Antwort
  • Patrick

    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

    Antwort
  • 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?

    Antwort
  • 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

    Antwort
    • Matthias Korte

      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

      Antwort
  • Daniel

    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

    Antwort
  • 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

    Antwort
  • Hubert

    Hallo! Tolle Anleitung!
    Ich habe ein Master_Slave System! Wie schaffe ich es, den Slave zu rebooten?

    Antwort

Schreibe einen Kommentar zu Daniel Antworten abbrechen

Deine E-Mail-Adresse wird nicht veröffentlicht.