NEWS
Netzausfall und Akku bei einer S.USV überwachen
-
Habe mir gerade einen RPi 2 und eine http://www.s-usv.de/susv_pibasic.html zugelegt. Über ein Script stelle ich den Ausfall der Netzspannung fest und logge ihn in einer Datei, damit der Zeitpunkt auch noch nach einem Schutdown / Reboot verfügbar ist. Der Datenpunkt "USV.Netz" dient zum Sperren des Sendens an netzspannungsbetriebene Aktoren während des Netzausfalls. In 2 weiteren Datenpunkten wird die Akku-Spannung und der Akku-Ladezustand erfasst.
// USV Netzausfall und Akkukapazität var voltid = getIdByName("USV.Akkuspannung"); var capid = getIdByName("USV.Akkukapazitaet"); var netid = getIdByName("USV.Netz"); // Netzspannung vorhanden function netz() { var net = getState(netid).val; exec('/opt/susvd/susv -pwrbat 0', function(err, stdout, stderr) { if (err) { log(err); return; } if(net && parseFloat(stdout) > 200) { setState(netid, false); flog("Netzspannung ausgefallen"); } else if (!net && parseFloat(stdout) < 100) { setState(netid, true); flog("Netzspannung vorhanden"); } }); } setInterval(netz, 10000); // Akkuspannung und -kapazität auslesen function akku() { exec('/opt/susvd/susv -capbat 0', function(err, stdout, stderr) { if (err) { log(err); return; } stdout = stdout.split("\n"); setState(voltid, stdout[1]); setState(capid, stdout[0]); }); } schedule("*/5 * * * *", akku);
Für das Loggen in eine Datei verwende ich ein globales Script:
!
// Logging in Datei /opt/iobroker/iobroker-data/scripts.log ! var fs = require('fs'); // enable write fuer externes log var fn = "/opt/iobroker/iobroker-data/scripts.log"; ! function flog(txt) { var ts = new Date(); var ms = ts.getMilliseconds(); if (ms < 10) { ms = "00" + ms; } else if (ms > 9 && ms < 100) { ms = "0" + ms; } ts = formatDate(ts, "YYYY-MM-DD hh:mm:ss.") + ms + " \t"; fs.appendFileSync(fn, ts + txt + "\n"); } !