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
-
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); } });
Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.
Hast du es satt, bei jedem Besuch durch die gleichen Beiträge zu scrollen? Wenn du dich für ein Konto anmeldest, kommst du immer genau dorthin zurück, wo du zuvor warst, und kannst dich über neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und Beiträge positiv bewerten, um anderen Community-Mitgliedern deine Wertschätzung zu zeigen.
Mit deinem Input könnte dieser Beitrag noch besser werden 💗
Registrieren Anmelden