NEWS
Script geht zeitweise auf Pause
-
@Negalein sagte in Script geht zeitweise auf Pause:
dass es sich in unregelmäßigen Abständen immer wieder auf Pause stellt.
Entsprechenden Code sehe ich hier nicht. Setzt du ggf. in einem anderen Skript
scriptEnabled
für dieses Skript? Sollte man übrigens nicht tun.@Negalein sagte in Script geht zeitweise auf Pause:
Diesen Cron '*/5 * * * *' hab ich mit dem Cronbutton hinzugefügt, damit das Script alle 5 Minuten neu startet.
So geht das nicht. Den String kannst du in einem
schedule(...)
verwenden, um die dazugehörige Funktion alle 5 Minuten auszuführen. Da du aber peron(...)
einen Datenpunkt überwachst, wäre es sowieso unsinnig das Skript ständig neu zu starten. -
@AlCalzone sagte in Script geht zeitweise auf Pause:
Setzt du ggf. in einem anderen Skript scriptEnabled für dieses Skript?
Nein
Da du aber per on(...) einen Datenpunkt überwachst, wäre es sowieso unsinnig das Skript ständig neu zu starten.
Ich wollte das machen, da das Script zeitweise auf Pause geht.
-
@htrecksler sagte in Script geht zeitweise auf Pause:
Ich vermute, Du möchtest erreichen, das das Script selber gestartet wird weil es auf Pause steht
Genau
Aber das das Script ja auf "Pause" steht nützt dir der "cron-Job" oder "Schedule" nichts. Das Script steht ja auf Pause, da wird nichts ausgeführt.
Ok, ist dann natürlich doof
Du brauchst also ein Ereignis/Script von außerhalb was wiederum dieses Script neu Startet.
wie könnte das aussehen? Bin ein JS-DAU
Viel interessanter wäre aber warum das Script pausiert. Ich habe das Script nur überflogen, aber irgendetwas wird da nicht so ganz richtig sein.
Ich kann dazu leider nichts sagen. Hab es nur kopiert.
-
gerade diesen Error im Log gefunden.
Ist eventuell hilfreich.2020-01-07 12:00:09.310 - [32minfo[39m: javascript.0 (593) script.js.common.Spritpreisrechner: Start Spritvergleich 2020-01-07 12:00:09.317 - [31merror[39m: javascript.0 (593) Error in callback: TypeError: Cannot read property 'amount' of undefined 2020-01-07 12:00:09.318 - [31merror[39m: javascript.0 (593) at Object.<anonymous> (script.js.common.Spritpreisrechner:52:107) 2020-01-07 12:00:09.318 - [31merror[39m: javascript.0 (593) at Object.callback (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:1101:38) 2020-01-07 12:00:09.318 - [31merror[39m: javascript.0 (593) at Object.stateChange (/opt/iobroker/node_modules/iobroker.javascript/main.js:439:25) 2020-01-07 12:00:09.318 - [31merror[39m: javascript.0 (593) at change (/opt/iobroker/node_modules/iobroker.js-controller/lib/adapter.js:4745:37) 2020-01-07 12:00:09.318 - [31merror[39m: javascript.0 (593) at Immediate.setImmediate (/opt/iobroker/node_modules/iobroker.js-controller/lib/states/statesInRedis.js:226:41) 2020-01-07 12:00:09.318 - [31merror[39m: javascript.0 (593) at runCallback (timers.js:705:18) 2020-01-07 12:00:09.318 - [31merror[39m: javascript.0 (593) at tryOnImmediate (timers.js:676:5) 2020-01-07 12:00:09.318 - [31merror[39m: javascript.0 (593) at processImmediate (timers.js:658:5)
2020-01-06 12:00:07.441 - [32minfo[39m: javascript.0 (593) script.js.common.Spritpreisrechner: Start Spritvergleich 2020-01-06 12:00:07.456 - [31merror[39m: javascript.0 (593) Error in callback: TypeError: Cannot read property 'amount' of undefined 2020-01-06 12:00:07.457 - [31merror[39m: javascript.0 (593) at Object.<anonymous> (script.js.common.Spritpreisrechner:52:107) 2020-01-06 12:00:07.458 - [31merror[39m: javascript.0 (593) at Object.callback (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:1101:38) 2020-01-06 12:00:07.459 - [31merror[39m: javascript.0 (593) at Object.stateChange (/opt/iobroker/node_modules/iobroker.javascript/main.js:439:25) 2020-01-06 12:00:07.459 - [31merror[39m: javascript.0 (593) at change (/opt/iobroker/node_modules/iobroker.js-controller/lib/adapter.js:4745:37) 2020-01-06 12:00:07.459 - [31merror[39m: javascript.0 (593) at Immediate.setImmediate (/opt/iobroker/node_modules/iobroker.js-controller/lib/states/statesInRedis.js:226:41) 2020-01-06 12:00:07.460 - [31merror[39m: javascript.0 (593) at runCallback (timers.js:705:18) 2020-01-06 12:00:07.460 - [31merror[39m: javascript.0 (593) at tryOnImmediate (timers.js:676:5) 2020-01-06 12:00:07.460 - [31merror[39m: javascript.0 (593) at processImmediate (timers.js:658:5)
2020-01-05 12:00:08.658 - [32minfo[39m: javascript.0 (7579) script.js.common.Spritpreisrechner: Start Spritvergleich 2020-01-05 12:00:08.669 - [31merror[39m: javascript.0 (7579) Error in callback: TypeError: Cannot read property 'amount' of undefined 2020-01-05 12:00:08.669 - [31merror[39m: javascript.0 (7579) at Object.<anonymous> (script.js.common.Spritpreisrechner:52:107) 2020-01-05 12:00:08.670 - [31merror[39m: javascript.0 (7579) at Object.callback (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:1101:38) 2020-01-05 12:00:08.670 - [31merror[39m: javascript.0 (7579) at Object.stateChange (/opt/iobroker/node_modules/iobroker.javascript/main.js:439:25) 2020-01-05 12:00:08.670 - [31merror[39m: javascript.0 (7579) at change (/opt/iobroker/node_modules/iobroker.js-controller/lib/adapter.js:4745:37) 2020-01-05 12:00:08.670 - [31merror[39m: javascript.0 (7579) at Immediate.setImmediate (/opt/iobroker/node_modules/iobroker.js-controller/lib/states/statesInRedis.js:226:41) 2020-01-05 12:00:08.670 - [31merror[39m: javascript.0 (7579) at runCallback (timers.js:705:18) 2020-01-05 12:00:08.670 - [31merror[39m: javascript.0 (7579) at tryOnImmediate (timers.js:676:5) 2020-01-05 12:00:08.670 - [31merror[39m: javascript.0 (7579) at processImmediate (timers.js:658:5)
Dieser Fehler tritt täglich zur Mittagszeit auf.
-
@Negalein Dann hat eine der Stationen gerade keine Preisinformation (Zeile 52/53). Die sollte das Skript dann bestenfalls ignorieren.
Dazu nach Zeile 18 folgendes einfügen:gasStation = gasStation.filter(g => g.prices.length > 0);
-
@AlCalzone sagte in Script geht zeitweise auf Pause:
Dann hat eine der Stationen gerade keine Preisinformation (Zeile 52/53)
Füge in Zeile 41 folgendes ein:Danke
Werde es beobachten.
-
@Negalein Hab nochmal bearbeitet, bitte beachten
-
@AlCalzone sagte in Script geht zeitweise auf Pause:
Hab nochmal bearbeitet, bitte beachten
Danke
Also
if (gasStation[index].prices.length < 1) continue;
wieder raus
und nach Zeile 18gasStation = gasStation.filter(g => g.prices.length > 0);
rein.
Sieht dann so aus?
var gasStation = JSON.parse(obj.state.val); gasStation = gasStation.filter(g => g.prices.length > 0); if (gasStation.length === 0) return;
-
@Negalein Jup! Allerdings bitte selbst testen, hab ich von unterwegs getippselt.
-
@AlCalzone sagte in Script geht zeitweise auf Pause:
Allerdings bitte selbst testen, hab ich von unterwegs getippselt.
werd es mal ein paar Tage beobachten und mich wieder melden.
Danke erstmal!
-
@AlCalzone sagte in Script geht zeitweise auf Pause:
Allerdings bitte selbst testen, hab ich von unterwegs getippselt.
kurze Rückmeldung!
Bis jetzt ist das Script einwandfrei durchgelaufen!
Danke nochmals
-
gestern ist das Script wieder in Pause gegangen.
Diesmal mit einem anderen Fehler (filter is not a function).
Das ganze ist von 03:26 bis 06:54 (hab nicht alles angehänt, da immer die gleiche Meldung) aufgetreten.Kann man das irgendwie beheben? Oder liegt es an der zu parsenden Seite?
Falls es nicht zu beheben/umgehen ist, gibt es eine Möglichkeit ein Script zu überwachen, damit ich zumindest eine Benachrichtigung auf Telegram/Alexa bekomme?
Danke dir
-
@Negalein sagte in Script geht zeitweise auf Pause:
gestern ist das Script wieder in Pause gegangen.
Jupp, hatte ich Heute auch.
-
-
@ticaki sagte in Script geht zeitweise auf Pause:
Hoffe das hilft.
Danke
Das wird als eigenes Script angelegt?
-
Ja. Weiß nur nicht wie das Trennzeichen für Unterordner aussieht.
EDIT: must du alle x Zeiteinheiten per Cron ausführen lassen.
var gasStation = JSON.parse(obj.state.val); if (gasStation.length === 0) return; gasStation = gasStation.filter(g => g.prices.length > 0);
sieht das in deinem Script so aus?
-
@ticaki sagte in Script geht zeitweise auf Pause:
sieht das in deinem Script so aus?
So schaut das Script aus
must du alle x Zeiteinheiten per Cron ausführen lassen.
Das wird vom Parser geregelt. Der fragt die Adresse alle 10 Sek. ab und das Script reagiert darauf.
-
@Negalein
Dein letzter Fehler sieht so aus als wenn der Parser keine Daten geliefert hat und deshalb Zeile 18 gescheitert istVersuche bitte mal folgendes: 2 Zeilen vertauschen und gasStation auf array/object prüfen.
var gasStation = JSON.parse(obj.state.val); if (typeof gasStation != 'object' || gasStation.length === 0) return; gasStation = gasStation.filter(g => g.prices.length > 0); if (gasStation.length === 0) return;
EDIT: ups
-
@ticaki sagte in Script geht zeitweise auf Pause:
Versuche bitte mal folgendes: 2 Zeilen vertauschen und gasStation auf array/object prüfen.
Danke
Habs eingefügt/vertauscht und werde es die nächsten Tage beobachten. -
@Negalein
hab editiert bitte beachten