NEWS
Fehler im script nach Update Adapter
-
Hi,
mir ist heute aufgefallen das ich seit irgendeinem Javascript Adapter diesen Log Eintrag von einem Script bekomme:
error (24015) script.js.common.Ansagen.Ansage_Telegramm_DWD_5_Warnungen: Invalid callback for setTimeout! - undefined
Da ich kein Javascript experte bin fehlt mir die Ahnung was im Script geändert werden muss/sollte. Kann mir wer helfen?
Hier das Script:
-
@wendy2702 sagte in Fehler im script nach Update Adapter:
setTimeout((sendTo ("telegram.0", 'Alle Warnmeldungen des DWD wurden aufgehoben')), 3 * 1000);
ändere:
setTimeout((sendTo
in
setTimeout(()=>(sendTo
überall.
-
Danke!
Habe es geändert und werde beobachten.
-
Ich bekomme seit heute in unregelmäßigen Abständen folgende Fehlermeldung:
2020-02-21 20:16:46.642 - [31merror[39m: javascript.0 (1730) script.js.common.Skript_UWZ: TypeError: Cannot read property 'request' of undefined 2020-02-21 20:16:46.642 - [31merror[39m: javascript.0 (1730) at Request._callback (script.js.common.Skript_UWZ:223:57) 2020-02-21 20:16:46.643 - [31merror[39m: javascript.0 (1730) at self.callback (/opt/iobroker/node_modules/request/request.js:185:22) 2020-02-21 20:16:46.643 - [31merror[39m: javascript.0 (1730) at Request.emit (events.js:198:13) 2020-02-21 20:16:46.643 - [31merror[39m: javascript.0 (1730) at Timeout._onTimeout (/opt/iobroker/node_modules/request/request.js:852:16) 2020-02-21 20:16:46.643 - [31merror[39m: javascript.0 (1730) at ontimeout (timers.js:436:11) 2020-02-21 20:16:46.643 - [31merror[39m: javascript.0 (1730) at tryOnTimeout (timers.js:300:5) 2020-02-21 20:16:46.643 - [31merror[39m: javascript.0 (1730) at listOnTimeout (timers.js:263:5) 2020-02-21 20:16:46.643 - [31merror[39m: javascript.0 (1730) at Timer.processTimers (timers.js:223:10)
Der relevante Teil des Scripts dürfte folgender sein:
var request = require('request'); schedule ("* * * * *", function(){ for (var i=0; i<warncellid.length; i++) { request({ uri: url.replace("XXXAREAXXX",warncellid[i]), method: "GET", timeout: 10000, followRedirect: true, maxRedirects: 10 }, function(error, response, body) { // dwmlog("UWZ Error" + error,2); // dwmlog("UWZ Response: " + JSON.stringify(response),4); dwmlog("AREA: "+getAreaFromURI(response.request.uri.href),4); dwmlog("UWZ Body: " + body,4); if (response.statusCode == 200) { processData(getAreaFromURI(response.request.uri.href),body); } }); } });
Hat jemand eine Idee woran das liegen kann, da das Script schon seit längerer Zeit problemlos lief und ich wissentlich nichts geändert habe.
-
In der Fehlermeldung steht das
response
undefiniert ist. Mit einer Abfrage auf undefined kannst du die Funktion verlassen.
11 if ( response == undefined ) return;
-
@ticaki sagte in Fehler im script nach Update Adapter:
Mit einer Abfrage auf undefined kannst du die Funktion verlassen.
Das schaut bislang sehr gut aus, vielen Dank
-
@ticaki sagte in Fehler im script nach Update Adapter:
@wendy2702 sagte in Fehler im script nach Update Adapter:
setTimeout((sendTo ("telegram.0", 'Alle Warnmeldungen des DWD wurden aufgehoben')), 3 * 1000);
ändere:
setTimeout((sendTo
in
setTimeout(()=>(sendTo
überall.
Hi,
Ich habe zwar keine Fehler mehr im Log aber die Telegramm Nachricht wenn Meldungen aufgehoben wurden sieht jetzt immer so aus:
„Die Wetterwarnung ´undefined gültig bis undefined´des DWD wurde aufgehoben.“
-
@wendy2702
Der DWD Adapter gibt in der Stable keine gültigen Werte für begin/end. Ich hab gerade lust und schreibe das Script um -
Habs etwas getested, aber leider kein Sayit oder pushover zur Verfügung.
zusätzlich hab ich noch einen Filter für Höhe und Level eingebaut.
-
Mal ne generelle Frage zu dem script, wie bekommt ihr die Wetter warnung per sayit?
Eigentlich ist doch die Warnungs-Meldung zu lang, folglich kommt im log ne Meldung.....is to short
-
Cool, kannst du auch email einbauen?
-
@sigi234
Jo, aber nicht heute Hab gerade keine eigenen Ideen, aber lust aufs coden -
@sigi234
ok doch noch heute, ist aber nicht weiter getestet. -
@crunchip Hat mit dem Script bei mir immer Problemlos funktioniert.
-
@ticaki sagte in Fehler im script nach Update Adapter:
@wendy2702
Der DWD Adapter gibt in der Stable keine gültigen Werte für begin/end. Ich hab gerade lust und schreibe das Script umHm,
komisch. Bis zu der Änderung die du mir vorgeschlagen hattest liefen die Telegramm Nachrichten eigentlich immer mit richtigen Zeitangaben.
Aber egal. Ich teste mal dein neues Script.
Danke für deine Bemühungen!!!
-
@wendy2702
Merkwürdig. Naja jetzt sollte es wieder gehen. -
Hi,
habe dein neues Script implementiert. Leider klappt es aber nicht so richtig (kosmetisch)
So sahen Meldungen aus als ich den kleinen error im Log hatte:
Amtliche WARNUNG vor GLÄTTE gültig vom 21.02.2020 00:08 Uhr bis 21.02.2020 08:00 Uhr Es muss oberhalb 400 m mit Glätte durch verbreitet überfrierende Nässe sowie geringfügigen Schneefall gerechnet werden.
So wenn die Meldung aufgehoben wurde:
Die Wetterwarnung 'Amtliche WARNUNG vor STURMBÖEN gültig bis 21.02.2020 00:00' des DWD wurde aufgehoben
Nach ändern deiner ersten Anweisung dann so:
Die Wetterwarnung 'undefined gültig bis undefined' des DWD wurde aufgehoben
Jetzt mit dem neuen Script und der aktuellen DWD Adapter version in der auch etwas mit Zeit geändert wurde kommt jetzt das als Nachricht und auch als Ansage:
Amtliche WARNUNG vor WINDBÖEN gültig vom Tue Feb 25 2020 10:00:00 GMT+0100 (GMT+01:00) Uhr bis Tue Feb 25 2020 19:00:00 GMT+0100 (GMT+01:00) Uhr Es treten Windböen mit Geschwindigkeiten zwischen 50 km/h (14m/s, 28kn, Bft 7) und 60 km/h (17m/s, 33kn, Bft 7) aus südwestlicher Richtung auf.
Hierbei ist das "GMT...." gelaber sehr unschön.
Kann man das irgendwie weg bekommen?
-
@wendy2702
Jo, heute abend ändere ich das. -
Danke!
-
@wendy2702 nachdem ich im sayit die Sprache auf AWS Polly gestellt habe, kam nun auch eine Ansage