Raspberry Pi über VIS per Datenpunkt rebooten- Habe in meinen Objekten dazu folgenden Datenpunkt unter 0_userdata.0 als Logikwert angelegt: Datenpunkte.0.System.pi.reboot
- In einer beliebigen View in VIS ein Widget anlegen, z.B. hqWidgets on/off und das Symbol evtl. anpassen (z.B.: /icons-fatcow-hosting/control_repeat.png)
- Als Object ID den "0_userdata.0.Datenpunkte.0.System.pi.reboot" eintragen und Wert min=false, max=true, CheckBox "Taster" setzen
Dann ein neues JavaScript anlegen (pi.reboot) und folgenden Code einfügen:
function rebootPi() {
log('Reboot Linux system by button', 'info');
setState("0_userdata.0.Datenpunkte.0.System.pi.reboot", false, true);
exec('sudo reboot');
}
on({id: '0_userdata.0.Datenpunkte.0.System.pi.reboot', val: true, change: 'ne'}, function (obj) {
rebootPi();
});
Im Skript ist eine Subscription auf den pi.reboot 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 Linux Kommando für den Neustart ausführt.
Nach dem Speichern das Skript aktivieren. Für einen ersten Test würde ich noch den Neustart auskommentieren und prüfen ob der Eintrag in das Log geschrieben wird. Um das Skript nutzen zu können, habe ich im JavaScript-Adapter diese Funktionen aktiviert:
- Erlaube das Kommando "setObject"
- Erlaube das Kommando "exec"
Da alles nun unter dem User iobroker rennt, müsst ihr den User in /etc/sudoers einbinden (hinter "# User privilege specification"), sonst ist kein sudo möglich:
sudo nano /etc/sudoers
iobroker ALL=(ALL;ALL) ALL
iobroker ALL=NOPASSWD:/sbin/reboot
iobroker ALL=NOPASSWD:/sbin/shutdown
Quelle: smarthome-tricks.de/software-iobroker/vis-reboot-linux-ueber-die-visualisierung (https://www.smarthome-tricks.de/software-iobroker/vis-reboot-linux-ueber-die-visualisierung/)