NEWS
"entprellen" eines States
-
const idPing = "ping.0.ioBroker-RasPi.192_168_178_49"/*HomePilot*/; var timer = null; on({id: idPing, val: true}, function() { if(!timer) sendTo('telegram', 'Homepilot 192.168.178.49 wieder erreichbar'); else clearTimeout(timer); timer = setTimeout(function() { sendTo('telegram', 'Fehler: Homepilot 192.168.178.49 nicht erreichbar'); timer = null; }, 3*60*1000); });
-
Danke für das Update. Leider springt er jetztj wild zwischen "nicht erreichbar" und "wieder erreichbar" hin und her. Der ping Status ist aber konstat auf true... Hier der verwendete code:
const idPing = "ping.0.IoBroker-VM-Debian.192_168_178_50"/*Rainyman*/; var timer = null; on({id: idPing, val: true}, function() { if(!timer) //sendTo('pushover.0', 'Rainyman 192.168.178.50 wieder erreichbar'); console.log('Rainyman 192.168.178.50 wieder erreichbar'); else clearTimeout(timer); timer = setTimeout(function() { //sendTo('pushover.0', 'Fehler: Rainyman 192.168.178.50 nicht erreichbar'); console.log('Fehler: Rainyman 192.168.178.50 nicht erreichbar'); timer = null; }, 1*5*1000); });
-
@passuff sagte:
Hier der verwendete code:
Ja, bei nur 5 s Verzögerung muss das so sein. Die Verzögerung muss auf jeden Fall größer sein, als das Intervall, in dem der Ping-Status aktualisiert wird.
-
Sorry, mein Fehler. Funktioniert tadellos.
Danke dafür!
-
Ich bekomme im Schnitt alle 2-3 Tage eine "wieder erreichbar" Meldung. Laut Aufzeichnung kannn ich aber nicht erkennen, dass sich am PingStatus etwas geändert hat.
Jemand eine Idee?Code:
-
@passuff sagte in "entprellen" eines States:
if(!timer) {sendTo('pushover.0', 'Rainyman 192.168.178.50 wieder erreichbar') + setState("CalcVal.0.Szenen.Dachfensterautomatik"/Dachfensterautomatik/, true)
- console.log('Rainyman 192.168.178.50 wieder erreichbar');
else clearTimeout(timer);
Was soll das für Code sein ? Javascript ist es nicht.
if(!timer) { sendTo('pushover.0', 'Rainyman 192.168.178.50 wieder erreichbar'); setState("CalcVal.0.Szenen.Dachfensterautomatik"/Dachfensterautomatik/, true); console.log('Rainyman 192.168.178.50 wieder erreichbar'); } else clearTimeout(timer);
-
@paul53 sagte in "entprellen" eines States:
Was soll das für Code sein ? Javascript ist es nicht.
ja, da kannst du recht haben. Ich hatte es auch so wie du proiert, doch dann bekam ich einen Fehler beim compile:
javascript.0 script.js.common.Sonstige.Überwachung_Rainyman_Kopieren compile failed: at script.js.common.Sonstige.Überwachung_Rainyman_Kopieren:8
-
@passuff sagte in "entprellen" eines States:
} else clearTimeout(timer); else clearTimeout(timer);
Das zweite else ... muss raus.
Bitte Jacascript-Code in Code tags posten ! -
Sorry, da komme ich nicht weiter:
const idPing = "ping.0.IoBroker-VM-Debian.192_168_178_50"/*Rainyman*/; var timer = null; on({id: idPing, val: true}, function() { if(!timer) { sendTo('pushover.0', 'Rainyman 192.168.178.50 wieder erreichbar'); setState("CalcVal.0.Szenen.Dachfensterautomatik"/Dachfensterautomatik/, true); console.log('Rainyman 192.168.178.50 wieder erreichbar'); } else clearTimeout(timer); timer = setTimeout(function() { sendTo('pushover.0', 'Fehler: Rainyman 192.168.178.50 nicht erreichbar'); setState("CalcVal.0.Szenen.Dachfensterautomatik"/*Dachfensterautomatik*/, false); setState("hm-rpc.0.OEQ1301523.1.LEVEL"/*HM-LC-Bl1PBU-FM OEQ1301523:1.LEVEL*/, 0); //console.log('Fehler: Rainyman 192.168.178.50 nicht erreichbar'); timer = null; }, 5*60*1000); });
-
@passuff
Funktioniert es so nicht ? Sollte eigentlich. Damit die Struktur zu erkennen ist:const idPing = "ping.0.IoBroker-VM-Debian.192_168_178_50"/*Rainyman*/; var timer = null; on({id: idPing, val: true}, function() { if(!timer) { sendTo('pushover.0', 'Rainyman 192.168.178.50 wieder erreichbar'); setState("CalcVal.0.Szenen.Dachfensterautomatik"/*Dachfensterautomatik*/, true); console.log('Rainyman 192.168.178.50 wieder erreichbar'); } else clearTimeout(timer); timer = setTimeout(function() { sendTo('pushover.0', 'Fehler: Rainyman 192.168.178.50 nicht erreichbar'); setState("CalcVal.0.Szenen.Dachfensterautomatik"/*Dachfensterautomatik*/, false); setState("hm-rpc.0.OEQ1301523.1.LEVEL"/*HM-LC-Bl1PBU-FM OEQ1301523:1.LEVEL*/, 0); //console.log('Fehler: Rainyman 192.168.178.50 nicht erreichbar'); timer = null; }, 5*60*1000); });
-
Nein, funktioniert leider nicht:
00:00:23.053 error javascript.0 script.js.common.Sonstige.Überwachung_Rainyman_Kopieren compile failed: at script.js.common.Sonstige.Überwachung_Rainyman_Kopieren:8
-
@passuff
In Zeile 8 ist der Kommentar(Name) falsch eingebaut. Ich habe es oben korrigiert. -
Super, vielen Dank!
-
@paul53 Bei neustart des Skripts wird einmalig die Bedingung " if(!timer)" wahr un somit eine pushover abgesetzt. Hast du eine Lösung dafür?
const idPing = "ping.0.IoBroker-VM-Debian.192_168_178_50"/*Rainyman*/; var timer = null; on({id: idPing, val: true}, function() { if(!timer) { sendTo('pushover.0', 'Rainyman 192.168.178.50 wieder erreichbar'); console.log('Rainyman 192.168.178.50 wieder erreichbar'); } else clearTimeout(timer); timer = setTimeout(function() { sendTo('pushover.0', 'Fehler: Rainyman 192.168.178.50 nicht erreichbar'); setState("hm-rpc.0.OEQ1301523.1.LEVEL"/*HM-LC-Bl1PBU-FM OEQ1301523:1.LEVEL*/, 0); //console.log('Fehler: Rainyman 192.168.178.50 nicht erreichbar'); timer = null; }, 5*60*1000); });
-
@passuff
In Zeile 3 den Timer setzenvar timer = setTimeout(function() {}, 0);
-
Das ging schnell. Danke!
-
@passuff
Was macht dassetState("hm-rpc.0.OEQ1301523.1.LEVEL"/*HM-LC-Bl1PBU-FM OEQ1301523:1.LEVEL*/, 0);
in dem Skript ?
-
@paul53 schloss das Dachfenster.
Gibt es jetzt aber nicht mehr. Es wird lediglich ein Logik DP geswitched welcher nun in einem externen Dachfensterlüftungsskript ausgewertet wird.