NEWS
Mein erstes javascript .. ist das so ok ?
-
Hi,
ich habe Probleme mit einem cronjob der den netatmo crawler Adapter alle 15 Minuten startet:
Normalerweise sieht das so aus:

und die Daten kommen an, funktioniert in 99% der Aufrufe.
Manchmal verhaspelt sich da aber etwas am Ende des shedules, der Adapter (bzw. die Instance) wird nicht richtig terminiert/beendet.Dann bekomme ich das hier in einer Endlosschleife alle 15 Minuten:

oder eine Error Message mit ähnlichem Inhalt.
ich habe etwas rumgesucht zu dem netatmo crawler und cron-job Problemen, nichts sinnvolles gefunden und beschlossen bei Bedarf den Adapter automatisch zu terminieren, das ganze mittels meines ersten eigenen javascripts:// Filtern nach Warn-Message function checkErrors_warn(logs) { if(logs.message.indexOf('instance system.adapter.netatmo-crawler.0 already running with pid') != -1) { // Aktion(en) setState('0_userdata.0.Netatmo_Alarm', 1, true); // Adapter stoppen setState("system.adapter.netatmo-crawler.0.alive", false); // Warten bevor der Adapter neu startet setTimeout(function() { // Adapter starten setState("system.adapter.netatmo-crawler.0.alive", true); }, 15000); } } // Filtern nach Error-Message function checkErrors_error(logs) { if(logs.message.indexOf('instance system.adapter.netatmo-crawler.0 terminated with code') != -1) { // Aktion(en) setState('0_userdata.0.Netatmo_Alarm', 2, true); // Adapter stoppen setState("system.adapter.netatmo-crawler.0.alive", false); // Warten bevor der Adapter neu startet setTimeout(function() { // Adapter starten setState("system.adapter.netatmo-crawler.0.alive", true); }, 15000); } } // Trigger onLog('warn', checkErrors_warn); onLog('error', checkErrors_error);Ist als temporärer workaround gedacht bis ich rausgefunden habe, warum der netatmo crawler manchmal nicht korrekt stoppt nach dem cron.
Frage:
Ist das so in Ordnung oder mache ich da (ausser das ich das Problem probiere von hinten zu erschiessen und nicht wirklich löse) irgend einen Kardinalfehler ?P.S.: das ich 15 Sekunden mit dem Neustart warte hat nichts mit dem 15 Minuten cron-shedule zu tun, eventuell werde ich noch eine Variable einbauen, die einen Mehrfachaufruf der Start/Stopp Funktion unterbindet.
-
Habs einfach mal getestet (cron auf 12 Minuten runtergesetzt und den Fehler provoziert) :

Das scheint zu funktionieren, ich komme aus dem Endlos-Warn_loop raus.
Dann reduziert sich die Frage auf:
Was kann ich daran noch verbessern bzw. worauf sollte ich achten ? -
Hi,
ich habe Probleme mit einem cronjob der den netatmo crawler Adapter alle 15 Minuten startet:
Normalerweise sieht das so aus:

und die Daten kommen an, funktioniert in 99% der Aufrufe.
Manchmal verhaspelt sich da aber etwas am Ende des shedules, der Adapter (bzw. die Instance) wird nicht richtig terminiert/beendet.Dann bekomme ich das hier in einer Endlosschleife alle 15 Minuten:

oder eine Error Message mit ähnlichem Inhalt.
ich habe etwas rumgesucht zu dem netatmo crawler und cron-job Problemen, nichts sinnvolles gefunden und beschlossen bei Bedarf den Adapter automatisch zu terminieren, das ganze mittels meines ersten eigenen javascripts:// Filtern nach Warn-Message function checkErrors_warn(logs) { if(logs.message.indexOf('instance system.adapter.netatmo-crawler.0 already running with pid') != -1) { // Aktion(en) setState('0_userdata.0.Netatmo_Alarm', 1, true); // Adapter stoppen setState("system.adapter.netatmo-crawler.0.alive", false); // Warten bevor der Adapter neu startet setTimeout(function() { // Adapter starten setState("system.adapter.netatmo-crawler.0.alive", true); }, 15000); } } // Filtern nach Error-Message function checkErrors_error(logs) { if(logs.message.indexOf('instance system.adapter.netatmo-crawler.0 terminated with code') != -1) { // Aktion(en) setState('0_userdata.0.Netatmo_Alarm', 2, true); // Adapter stoppen setState("system.adapter.netatmo-crawler.0.alive", false); // Warten bevor der Adapter neu startet setTimeout(function() { // Adapter starten setState("system.adapter.netatmo-crawler.0.alive", true); }, 15000); } } // Trigger onLog('warn', checkErrors_warn); onLog('error', checkErrors_error);Ist als temporärer workaround gedacht bis ich rausgefunden habe, warum der netatmo crawler manchmal nicht korrekt stoppt nach dem cron.
Frage:
Ist das so in Ordnung oder mache ich da (ausser das ich das Problem probiere von hinten zu erschiessen und nicht wirklich löse) irgend einen Kardinalfehler ?P.S.: das ich 15 Sekunden mit dem Neustart warte hat nichts mit dem 15 Minuten cron-shedule zu tun, eventuell werde ich noch eine Variable einbauen, die einen Mehrfachaufruf der Start/Stopp Funktion unterbindet.
Das ist das typische ioBroker-User-Problem. Es werden immer nur "Rauchniedrighalter" implementiert. Das Problem werden sicher auch andere haben...
Ist als temporärer workaround gedacht bis ich rausgefunden habe, warum der netatmo crawler manchmal nicht korrekt stoppt nach dem cron.
Frage doch mal den Entwickler mit einem Issue und deiner Problembeschreibung
https://github.com/iobroker-community-adapters/ioBroker.netatmo-crawler/issues
Zum Code:
Das wird zumindest den Motor wieder anwerfen...
-
Das ist das typische ioBroker-User-Problem. Es werden immer nur "Rauchniedrighalter" implementiert. Das Problem werden sicher auch andere haben...
Ist als temporärer workaround gedacht bis ich rausgefunden habe, warum der netatmo crawler manchmal nicht korrekt stoppt nach dem cron.
Frage doch mal den Entwickler mit einem Issue und deiner Problembeschreibung
https://github.com/iobroker-community-adapters/ioBroker.netatmo-crawler/issues
Zum Code:
Das wird zumindest den Motor wieder anwerfen...
-
Em - mal dumm gefragt:
Wieso machst du im Skript nicht einen 15 Minuten schedule, dafür keinen im adapter und setzt alive als erstes auf false, wartest ein paar Sekunden und dann auf true.
-
Em - mal dumm gefragt:
Wieso machst du im Skript nicht einen 15 Minuten schedule, dafür keinen im adapter und setzt alive als erstes auf false, wartest ein paar Sekunden und dann auf true.