NEWS
Finde den Fehler - den ich nicht finde
-
Ich habe folgendes JavaScript laufen:
// ################################################################## // Regen ermitteln und in Wetter Regen2 schreiben // ################################################################## function regen_ermitteln() { //Definitionen var idOpenWeater = 'openweathermap.0.forecast.current.state'/*Actual state*/; var idVariable = 'hm-rega.0.32978'/*Wetter Regen*/ //Wetterdaten auslesen wetterdaten = getState(idOpenWeater).val; //finde regen oder niesel var regen = wetterdaten.lastIndexOf('Regen')+1; var niesel = wetterdaten.lastIndexOf('Niesel')+1; var Regen = wetterdaten.lastIndexOf('regen')+1; var Niesel = wetterdaten.lastIndexOf('niesel')+1; var Gewitter = wetterdaten.lastIndexOf('Gewitter')+1; // wenn gefunden dann if (regen + niesel + Regen + Niesel + Gewitter > 0) { regen = true; } //else //{regen = false;} //log(regen); //Variable setzen setState(idVariable, regen); }; //bei Skriptstart Cron Job starten schedule('0 11 * * *', function () { if(getState('hm-rega.0.30304'/*Automower Daemon Modus*/).val == true) { regen_ermitteln(); }; }); //bei Skriptstart: Start //regen_ermitteln();
und erhalte folgende Fehlermeldung, Warnung
2019-06-05 11:00:00.010 - warn: javascript.0 Wrong type of hm-rega.0.32978: "number". Please fix, while deprecated and will not work in next versions. 2019-06-05 11:00:00.014 - warn: javascript.0 at setState (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:1258:20) 2019-06-05 11:00:00.014 - warn: javascript.0 at regen_ermitteln (script.js.common.Skripte_aktiviert.Regen_13:00:28:1) 2019-06-05 11:00:00.014 - warn: javascript.0 at Object. (script.js.common.Skripte_aktiviert.Regen_13:00:37:5) 2019-06-05 11:00:00.014 - warn: javascript.0 at Job.nodeSchedule.scheduleJob [as job] (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:1181:34) 2019-06-05 11:00:00.014 - warn: javascript.0 at Job.invoke (/opt/iobroker/node_modules/iobroker.javascript/node_modules/node-schedule/lib/schedule.js:173:10) 2019-06-05 11:00:00.014 - warn: javascript.0 at /opt/iobroker/node_modules/iobroker.javascript/node_modules/node-schedule/lib/schedule.js:543:11 2019-06-05 11:00:00.014 - warn: javascript.0 at Timeout._onTimeout (/opt/iobroker/node_modules/iobroker.javascript/node_modules/node-schedule/lib/schedule.js:501:7) 2019-06-05 11:00:00.014 - warn: javascript.0 at ontimeout (timers.js:498:11) 2019-06-05 11:00:00.014 - warn: javascript.0 at tryOnTimeout (timers.js:323:5) 2019-06-05 11:00:00.014 - warn: javascript.0 at Timer.listOnTimeout (timers.js:290:5)
Wo ist der Fehler im Script. Ich finde ihn nicht. Es muß etwas mit der Variablendefinition zu tun haben. Aber ich weiß nicht, wie ich das ändern muß. Wer kann mir helfen?
-
@skorpil
Was ist der Datenpunkt den du mit setstate beschreibst für ein Typ? -
Du schreibst einen String in den Datenpunkt der aber eine Nummer erwartet.
Ersetze einfach durch folgende Zeile.
setState(idVariable, parseInt(regen)) ;
-
@skorpil Das Auskommentieren von
else regen = false;
erzeugt den Fehler, weil die Variable regen doppelt verwendet wird. Es wird nicht false, sondern 0 an setState() übergeben.
-
@paul53 wow, seid ihr schnell. Ich liebe dieses Forum. Vielen Dank. Das ändere ich und melde mich mit dem Ergebnis.
-
@paul53 das war es. Danke!