NEWS
Datenpunkte Monitor
-
Suche Adapter oder Script um Datenpunkte zu monitoren (z.B. auf Änderungen). Konkrete Anwendung: Healthcheck von Sensoren. Habe im Forum bzw. in den Adaptern nichts gefunden.
-
-
@ocio das hab ich mal irgendwann im Einsatz gehabt.
//Das Script überprüft regelmässig die Datenpunkte auf Aktualisierung //Angabe des Datenpunkts= Datenpunkt der Überwacht werden soll //StateBezeichnung= Unter pfad_javascript.StateBezeichung wird ein State angelegt; True = Daten sind aktuell / False = Daten veraltet //Zeit in Sekunden = Zeit die vergangen sein darf seit der letzen Aktualisierung des Datenpunkts (0 = default Zeit wird genommen). schedule("*/3 * * * *" , function () { // Angabe des Datenpunkts;StateBezeichnung;Zeit in Sekunden var ueberwachung = ['mqtt.0.Sensoren.Sensor03.Feuchtigkeit;Bodenfeuchte_Hinten;400', 'mqtt.0.Sensoren.Sensor02.Feuchtigkeit;Bodenfeuchte_Vorne;400']; //var ueberwachung = ['mqtt.0.Sensoren.Sensor03.Feuchtigkeit;Bodenfeuchte_Hinten;400']; var default_zeit = 240; var pfad_userdata ='0_userdata.0.watchdog.'; // Beispiel: 'javascript.0.watchdog.' !Punkt nicht vergessen am Ende! //------------------------------------------------------------------ //Ab hier nichts mehr Ändern //------------------------------------------------------------------ var zeit= Math.floor(Date.now() / 1000); var differenz, lchange; var daten, tchange; ueberwachung.forEach(function(item, index, array) { // Array Splitten daten = item.split(";"); //Datenpunkt erstellen wenn nicht vorhanden createState(pfad_userdata + daten[1], { read: true, write: false, name: "Watchdog " + daten[1], type: "boolean", role: " ", def: "false"}); //Differenz Zeit default oder manuell? differenz = parseInt(daten[2]); if (differenz == 0) differenz=default_zeit; //Zeitstempel abfragen in Sekunden tchange=parseInt(getState(daten[0]).ts / 1000); //Vergleichen der Zeitstempel if ((zeit-tchange)>differenz) { setState(pfad_userdata + daten[1], false); //console.log(daten[1] + " ist älter als " + differenz + " Sekunden", 'warn'); //Telegramm // setState("telegram.0.communicate.response", "Info: Gerät nicht erreicht"); // setState("telegram.0.communicate.response", daten[1]); } else { setState(pfad_userdata + daten[1], true); //console.log(daten[1] + " ist jünger als " + differenz + " Sekunden"); } }); });
Vielleicht hilft das als Einstieg. Es sollte immer noch funktionieren, ich hab es jedoch im moment nicht im Einsatz
-
@htrecksler
Danke für das script, sieht gut aus, reicht für ein Sensor Ok/Nicht Ok.