NEWS
Servicemeldungen per Mail?
-
Hallo zusammen,
hat zufällig jemand von euch ein Script mit dem ich die Servicemeldungen der CCU auslesen und z.B. per Mail verschicken kann?
Ich finde es immer recht mühsam mich extra auf der CUU einzuloggen um zu schauen ob welche da sind.
Einen Ansatz zum Auslesen nehme ich auch gern entgegen
LG Micha
-
Ich logge die Servicemeldungen in einer Datei und versende anschließend die Log-Datei als Mail-Anhang.
// Servicemeldungen in Datei loggen, Anzahl in einem Datenpunkt erfassen // und zu quittierenden Alarmzustand erzeugen var cntid = getIdByName("Service.Fehleranzahl"); var alarmid = getIdByName("Service.Sammelalarm"); var quitid = getIdByName("Service.Quittierung"); // Script start var count = getState(cntid).val; if(count) setState(alarmid, true, true); else setState(alarmid, false, true); var timer = null; on(/\.UNREACH|LOWBAT|CONFIG_PENDING|FAULT_REPORTING$/, function(dp) { var val = dp.state.val; var old = dp.oldState.val; if (val != old) { if(dp.common.name) flog(dp.common.name + ": " + val); else flog(dp.id + ": " + val); } if(val && !old) count++; else if (!val && old) count--; setState(cntid, count, true); if(count) setState(alarmid, true); if(timer) clearTimeout(timer); timer = setTimeout(logMail, 300000); // nach 5 Minuten senden }); on({id: quitid, val: true}, function() { if(!count) setState(alarmid, false, true); setState(quitid, false, true); });
Die Funktionen flog() und logMail() befinden sich in einem globalen Skript
// 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 timestamp() { var ts = new Date(); return formatDate(ts, "YYYY-MM-DD hh:mm:ss.sss") + " \t"; } function flog(txt) { var ts = timestamp(); fs.appendFileSync(fn, ts + txt + "\n"); } function logMail() { sendTo("email", { attachments: [ // use file on disk as attachment {path: fn} ] }); }
-
Hi,
ich muss das hier nochmal hoch holen.
Wann verschickst du die Mail und wie? Ich brauche die Log ja an sich nur wenn Servicemeldungen da sind.
Oder gibt es mittlerweile eine bessere Lösung?
LG Michael
-
Wann verschickst du die Mail und wie? `
Ich logge jede Veränderung der Servicemeldungen in eine Datei (wird drangehängt) und verschicke 5 Minuten später die Datei als Anhang per Mail. -
Magst du das auch noch mal posten? so in etwa hatte ich mir das gedacht.
Also wenn Änderungen -> Mail
LG Michael
-
Magst du das auch noch mal posten? `
Weshalb? An den Skripten (eins unter common, eins unter global) ändert sich nichts. -
Ich meine wegen dem Versand bei Änderung. Das muss ich doch auch irgendwie prüfen oder nicht?
LG Michael
-
Der Mailversand wird innerhalb der Callback-Funktion von
on(/\.UNREACH|LOWBAT|CONFIG_PENDING|FAULT_REPORTING$/, function(dp) {
aufgerufen. Der Trigger reagiert auf jede Änderung einer Service-Meldung.
-
Wenn Du ausschließlich eine Mail versenden willst, kann das Script stark vereinfacht werden,
function sendMail(txt) { sendTo("email", { subject: "Servicemeldung", text: formatDate(new Date(), "YYYY-MM-DD hh:mm:ss.sss ") + txt + "\n" }); } on(/\.UNREACH|LOWBAT|CONFIG_PENDING|FAULT_REPORTING$/, function(dp) { var val = dp.state.val; var old = dp.oldState.val; if (val != old) { if(dp.common.name) sendMail(dp.common.name + ": " + val); else sendMail(dp.id + ": " + val); } });