Hi,
hatte so ein Skript vor einiger Zeit schon gepostet. Telegram meldung müsste ja einfach sein:
// setState("telegram.0.communicate.response", "Info: Gerät nicht erreicht");
mal auskomentieren.
Vielleicht Hilfts - Gruß Martin
@charakterkopf said in [Aufruf] Welche guten JavaScripts setzt ihr ein?:
Die Idee ist super. Es fehlt wirklich eine Script Bibliothek.
Hier ein Script um Datenpunkte von z.B. Funksensoren auf Lebendigkeit zu testen. Meine Zigbee Sensoren schmierten früher immer gerne ab und ich habe es nie erkannt.
//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 = ['fritzdect.0.Comet_119610277592.temp;Heizung;400', 'mqtt.0.zigbee2mqtt.Kuehlschrank;Temp_Kuehlschrank;7000', 'mqtt.0.zigbee2mqtt.gefrierfach;Temp_Gefrierschrank;7000', 'mqtt.0.zigbee2mqtt.TemperaturBad;Bad_Feuchtigkeit;7000', 'mqtt.0.zigbee2mqtt.Fenster_1;Fenster_1;7000', 'mqtt.0.zigbee2mqtt.Fenster_2;Fenster_2;7000', 'mqtt.0.zigbee2mqtt.Fenster_3;Fenster_3;7000', 'mqtt.0.zigbee2mqtt.Fenster_4;Fenster_4;7000', 'mqtt.0.zigbee2mqtt.Fenster_5;Fenster_5;7000', 'mqtt.0.zigbee2mqtt.Fenster_6;Fenster_6;7000', 'mqtt.0.zigbee2mqtt.Fenster_7;Fenster_7;7000', 'mqtt.0.zigbee2mqtt.Fenster_8;Fenster_8;7000']; var default_zeit = 240; var pfad_javascript ='javascript.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_javascript + 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_javascript + daten[1], false); //console.log(daten[1] + " ist älter als " + differenz + " Sekunden"); //Telegramm // setState("telegram.0.communicate.response", "Info: Gerät nicht erreicht"); // setState("telegram.0.communicate.response", daten[1]); } else { setState(pfad_javascript + daten[1], true); //console.log(daten[1] + " ist jünger als " + differenz + " Sekunden"); } }); });