NEWS
Script geht zeitweise auf Pause
-
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 -
@ticaki sagte in Script geht zeitweise auf Pause:
hab editiert bitte beachten
Also
var gasStation = JSON.parse(obj.state.val); gasStation = gasStation.filter(g => g.prices.length > 0); if (gasStation.length === 0) return;
gegen
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;
tauschen
-
@Negalein
Jup, habs nochmal verbessert. Mache zwar viel mit Arrays, mußte aber bis dato noch nicht prüfen, ob es auch eines istvar gasStation = JSON.parse(obj.state.val); if (!Array.isArray(gasStation) || gasStation.length === 0) return; gasStation = gasStation.filter(g => g.prices.length > 0); if (gasStation.length === 0) return;
-