// Überwacht alle 3 Statuswerte der laufenden Adapter var G_TelegramChatId = 37342026; function alarmMeldung(txt) { //txt = txt; //sendeStatusPerTelegram(txt); sendTo('telegram.0', 'Instanzmonitoring: ' + txt); sendTo("telegram.0", "send", { text: ('Instanzmonitoring: ' + txt), chatId: G_TelegramChatId }); log('Sende via Telegram: ' + txt); } var cnt = 0, timeoutZeit = 1 * 30000; //Prüfen auf: Connected to host //['system','adapter','plex','0','connected'] on(/^system\.adapter\..+\.connected$/, function (dp) { log("CONNECTED-EVENT " + ( JSON.stringify(dp))); var id = dp.id.split('.'); //log(dp.id); //log(id); if (id[2] != 'admin') { if (dp.state.val) { cnt--; if (cnt <= 0) { log('"Connected to host" Adapter laufen fehlerfrei'); cnt = 0; // falls verzählt und cnt < 0 } } else { log('### "Connected to host"-Fehler entdeckt. Warte auf Selbstheilung: ' + id[2]); var newid = ('system.adapter.' + id[2] + '.' + id[3]); recheckWithIntervall(dp.common.name, newid, id[2], "Connected to host"); cnt++; } } }); //Prüfen auf: Connected to device or service //plex.0.info.connection on(/^.*info\.connection.*$/, function (dp) { log("INFO-EVENT " + ( JSON.stringify(dp))); var id = dp.id.split('.'); //log(dp.id); //log(id); if (id[0] != 'admin') { if (dp.state.val) { cnt--; if (cnt <= 0) { log('"Connected to device or service" Adapter laufen fehlerfrei'); cnt = 0; // falls verzählt und cnt < 0 } } else { log('### "Connected to device or service"-Fehler entdeckt. Warte auf Selbstheilung: ' + id[2]); var newid = ('system.adapter.' + id[2] + '.' + id[3]); recheckWithIntervall(dp.common.name, newid, id[2], "Connected to device or service"); cnt++; } } }); //Prüfen auf: Heartbeat on(/^system\.adapter\..+\.alive$/, function (dp) { //if (dp.state.val) // log('trigger für Adapterüberwachung aktiv'); var id = dp.id.split('.'); //log(dp.id); //log(id); // Ausnahmen definieren. id[2] != 'admin' && id[2] != 'yahka' if (id[2] != 'admin' && id[2] != 'openweathermap') { if (dp.state.val) { cnt--; if (cnt <= 0) { log('"Heartbeat"-Adapter laufen fehlerfrei'); cnt = 0; // falls verzählt und cnt < 0 } } else { log('### "Heartbeat"-Fehler entdeckt. Warte auf Selbstheilung: ' + id[2]); var dpname = ('system.adapter.' + id[2] + '.' + id[3] + '.' + id[4]); var newid = ('system.adapter.' + id[2] + '.' + id[3]); recheckWithIntervall(dp.common.name, newid, id[2], "Heartbeat"); cnt++; } } }); function recheckWithIntervall(dpname, newid, adapter, eventtyp) { var timeout = setTimeout(function () { var instance = getObject(newid); log('### "' + eventtyp + '"-Wartezeit vorrüber. Prüfe noch mal: ' + newid); // nur einen Fehler melden, wenn der Adapter vorher auch mal aktiv war. Bzw. deaktivierte Adapter ignorieren if (!getState(dpname).val) { if (instance.common.enabled && instance.common.mode == 'daemon') { alarmMeldung('"' + eventtyp + '"-Fehler bei Instanz: ' + dpname); cnt = 0; // falls verzählt und cnt < 0 } } else { log('### Der "' + eventtyp + '"-Fehler hat selbst geheilt: '+ newid); } }, timeoutZeit); }