NEWS
Adapter Monitor mit Restart wenn Rot
-
Moin moin,
das folgende Script hatte ich irgendwo hier im Forum mal gefunden. Nach einigen Anpassungen funktioniert es soweit auch ganz gut.
Was tut es?
Wenn ein Adapter ROT wird, bekomme ich eine Telegram Meldung und der Adapter wird neu gestartet.Jedoch habe ich noch folgendes Problem.
Das Script reagiert einfach zu schnell.
Viele Adapter gehen erst auf GELB bevor sie wieder Rot werden. Dies führt dazu, dass ich immer zwei Nachrichten bekomme . Eine "ist wieder OK" und eine "Kapoottt".
Dazu kommt, dass der Restart dann auch zu schnell und mehrfach ausgeführt wird.Habt ihr Ideen, wie ich das verbessern kann?
Leider bin ich nicht sonderlich fit bei javaScript.
console.log("Waiting..."); await sleep(180000); console.log("waiting end. Start Script"); function alarmMail(txt) { sendTo('telegram.0', '' + txt); setState('0_userdata.0.GlobalVars.AdapterStateText', txt); } var cnt = 0; on(/^system\.adapter\..+\.connected$/, async function(dp) { var id = dp.id.split('.'); var common = getObject('system.adapter.' + id[2] + '.' + id[3]).common; if(common.mode == 'daemon' && common.enabled) { // Instanzen mit cronjob und gesperrte Instanzen ausblenden if(dp.state.val && dp.oldState.val === false) { cnt--; if(cnt <= 0) { alarmMail('✅ Adapter ' + id[2] + '.' + id[3] + ' läuft Fehlerfrei'); console.log(id[2] + '.' + id[3] + ' läuft Fehlerfrei'); setState('0_userdata.0.GlobalVars.AdapterState', false ); cnt = 0; // falls verzählt und cnt < 0 } } else if(dp.state.val === false && dp.oldState.val) { alarmMail('❌ Adapter ' + id[2] + '.' + id[3] + ' meldet Probleme'); setState('0_userdata.0.GlobalVars.AdapterState', true); console.log(id[2] + '.' + id[3] + ' meldet Probleme'); console.log('starte Adapter neu'); setTimeout(() => { extendObject('system.adapter.' + id[2] + '.' + id[3], {common: {enabled: true}});}, 30000); cnt++; } } });