NEWS
[gelöst] split is not a function
-
Hallo,
ich bin gerade dabei ein Script zu erstellen das mir den 3stündigen Trend für die Barometerdaten errechnet. Dazu habe lege ich alle 5 Minuten den Wert für den Unterschied zum vorherigen Wert in einem Datenpunkt als Liste ab-0.05,0.02,0.04,0.04,0,0.08,0.06,0,0.03,0.03,-0.02,-0.05,0.05,-0.05,0.06,0.02,-0.12,0.06,0.02,-0.04,0.07,0.04,-0.02,0.02,0.04,0.04,0.01,-0.02,0.06,0.04,-0.07,-0.11,0.11,-0.11,0,0.02,-0.02,0.05,0.02,0,0.03,0.01,0.04,-0.09,0.02,-0.04,0.03,0.06,0.1,-0.08,-0.04,0.05,0.03,0.01,0.02,0.01,0.05,0.03,0.1,0,0.01,-0.02,0.02,-0.01,-0.04,0.04,0.08,0.03,-0.05,-0.12,0.09,0.07Diese Liste lese ich mit ein und will sie mit split zum errechnen des Trends zerlegen
function barotrend() { var tmpelements = getState(DP_BAROTREND_DATA).val.split(','); for (let i = 2; i <= ELEMENTS - 1; i++) { b_tmp = parseFloat(tmpelements[i]); A_BAROTRENDTEMPDATA.push(b_tmp); b_akt_diff = b_akt_diff + b_tmp; } A_BAROTRENDTEMPDATA.push(b_diff); b_akt_diff = b_akt_diff + b_diff; b_akt_diff = Math.round((b_akt_diff / ELEMENTS) * 100 ) / 100; setState(DP_BAROTREND_DATA, A_BAROTRENDTEMPDATA); setState(DP_BAROTREND_ALT, b); setState(DP_BAROTREND_TREND, b_akt_diff); } schedule('*/'+CRON+' * * * *', function () { barotrend(); });Allerdings kommt spätestens nach dem zweiten Aufruf der Funktion barotrend() der Fehler
javascript.1 2019-11-05 19:49:00.018 error (2070) at Timer.processTimers (timers.js:223:10) javascript.1 2019-11-05 19:49:00.017 error (2070) at listOnTimeout (timers.js:263:5) javascript.1 2019-11-05 19:49:00.017 error (2070) at tryOnTimeout (timers.js:300:5) javascript.1 2019-11-05 19:49:00.017 error (2070) at ontimeout (timers.js:436:11) javascript.1 2019-11-05 19:49:00.017 error (2070) at Timeout._onTimeout (/opt/iobroker/node_modules/iobroker.javascript/node_modules/node-schedule/lib/schedule.js:501:7) javascript.1 2019-11-05 19:49:00.016 error (2070) at /opt/iobroker/node_modules/iobroker.javascript/node_modules/node-schedule/lib/schedule.js:543:11 javascript.1 2019-11-05 19:49:00.016 error (2070) at Job.invoke (/opt/iobroker/node_modules/iobroker.javascript/node_modules/node-schedule/lib/schedule.js:173:10) javascript.1 2019-11-05 19:49:00.016 error (2070) at Job.nodeSchedule.scheduleJob [as job] (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:1279:34) javascript.1 2019-11-05 19:49:00.015 error (2070) at Object.<anonymous> (script.js.Test.Weathercalc:417:3) javascript.1 2019-11-05 19:49:00.015 error (2070) at barotrend (script.js.Test.Weathercalc:390:53) javascript.1 2019-11-05 19:49:00.014 error (2070) Error in callback: TypeError: getState(...).val.split is not a functionNode.js v10.17.0
NPM 6.11.3
js-controller: 2.0.39Kann mir einer sagen wo da der Fehler ist?
-
Hallo,
ich bin gerade dabei ein Script zu erstellen das mir den 3stündigen Trend für die Barometerdaten errechnet. Dazu habe lege ich alle 5 Minuten den Wert für den Unterschied zum vorherigen Wert in einem Datenpunkt als Liste ab-0.05,0.02,0.04,0.04,0,0.08,0.06,0,0.03,0.03,-0.02,-0.05,0.05,-0.05,0.06,0.02,-0.12,0.06,0.02,-0.04,0.07,0.04,-0.02,0.02,0.04,0.04,0.01,-0.02,0.06,0.04,-0.07,-0.11,0.11,-0.11,0,0.02,-0.02,0.05,0.02,0,0.03,0.01,0.04,-0.09,0.02,-0.04,0.03,0.06,0.1,-0.08,-0.04,0.05,0.03,0.01,0.02,0.01,0.05,0.03,0.1,0,0.01,-0.02,0.02,-0.01,-0.04,0.04,0.08,0.03,-0.05,-0.12,0.09,0.07Diese Liste lese ich mit ein und will sie mit split zum errechnen des Trends zerlegen
function barotrend() { var tmpelements = getState(DP_BAROTREND_DATA).val.split(','); for (let i = 2; i <= ELEMENTS - 1; i++) { b_tmp = parseFloat(tmpelements[i]); A_BAROTRENDTEMPDATA.push(b_tmp); b_akt_diff = b_akt_diff + b_tmp; } A_BAROTRENDTEMPDATA.push(b_diff); b_akt_diff = b_akt_diff + b_diff; b_akt_diff = Math.round((b_akt_diff / ELEMENTS) * 100 ) / 100; setState(DP_BAROTREND_DATA, A_BAROTRENDTEMPDATA); setState(DP_BAROTREND_ALT, b); setState(DP_BAROTREND_TREND, b_akt_diff); } schedule('*/'+CRON+' * * * *', function () { barotrend(); });Allerdings kommt spätestens nach dem zweiten Aufruf der Funktion barotrend() der Fehler
javascript.1 2019-11-05 19:49:00.018 error (2070) at Timer.processTimers (timers.js:223:10) javascript.1 2019-11-05 19:49:00.017 error (2070) at listOnTimeout (timers.js:263:5) javascript.1 2019-11-05 19:49:00.017 error (2070) at tryOnTimeout (timers.js:300:5) javascript.1 2019-11-05 19:49:00.017 error (2070) at ontimeout (timers.js:436:11) javascript.1 2019-11-05 19:49:00.017 error (2070) at Timeout._onTimeout (/opt/iobroker/node_modules/iobroker.javascript/node_modules/node-schedule/lib/schedule.js:501:7) javascript.1 2019-11-05 19:49:00.016 error (2070) at /opt/iobroker/node_modules/iobroker.javascript/node_modules/node-schedule/lib/schedule.js:543:11 javascript.1 2019-11-05 19:49:00.016 error (2070) at Job.invoke (/opt/iobroker/node_modules/iobroker.javascript/node_modules/node-schedule/lib/schedule.js:173:10) javascript.1 2019-11-05 19:49:00.016 error (2070) at Job.nodeSchedule.scheduleJob [as job] (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:1279:34) javascript.1 2019-11-05 19:49:00.015 error (2070) at Object.<anonymous> (script.js.Test.Weathercalc:417:3) javascript.1 2019-11-05 19:49:00.015 error (2070) at barotrend (script.js.Test.Weathercalc:390:53) javascript.1 2019-11-05 19:49:00.014 error (2070) Error in callback: TypeError: getState(...).val.split is not a functionNode.js v10.17.0
NPM 6.11.3
js-controller: 2.0.39Kann mir einer sagen wo da der Fehler ist?
@CKMartens sagte:
wo da der Fehler ist?
Enthält der Datenpunkt schon ein Array ? Dann funktioniert .split(',') nicht und ist auch nicht erforderlich.
-
@CKMartens sagte:
wo da der Fehler ist?
Enthält der Datenpunkt schon ein Array ? Dann funktioniert .split(',') nicht und ist auch nicht erforderlich.
@paul53 sagte in split is not a function:
@CKMartens sagte:
wo da der Fehler ist?
Enthält der Datenpunkt schon ein Array ? Dann funktioniert .split(',') nicht und ist auch nicht erforderlich.
Wie muss ich dann vorgehen @paul53 ?
-
@paul53 sagte in split is not a function:
@CKMartens sagte:
wo da der Fehler ist?
Enthält der Datenpunkt schon ein Array ? Dann funktioniert .split(',') nicht und ist auch nicht erforderlich.
Wie muss ich dann vorgehen @paul53 ?
@CKMartens sagte:
Wie muss ich dann vorgehen
Ohne split() einlesen.
var tmpelements = getState(DP_BAROTREND_DATA).val; -
@CKMartens sagte:
Wie muss ich dann vorgehen
Ohne split() einlesen.
var tmpelements = getState(DP_BAROTREND_DATA).val; -
@CKMartens sagte:
Wie muss ich dann vorgehen
Ohne split() einlesen.
var tmpelements = getState(DP_BAROTREND_DATA).val;@paul53 sagte in split is not a function:
@CKMartens sagte:
Wie muss ich dann vorgehen
Ohne split() einlesen.
var tmpelements = getState(DP_BAROTREND_DATA).val;Hallo @paul53
leider habe ich jetzt das Problem das jetzt die Variable tmpelements als Elemente jedes Zeichen enthält. Also aus dem Wert -0.3 werden die Elemente "-", "0", "." und "3" gemacht. Der Typ des Datenpunktes ist ein Array. -
@paul53 sagte in split is not a function:
@CKMartens sagte:
Wie muss ich dann vorgehen
Ohne split() einlesen.
var tmpelements = getState(DP_BAROTREND_DATA).val;Hallo @paul53
leider habe ich jetzt das Problem das jetzt die Variable tmpelements als Elemente jedes Zeichen enthält. Also aus dem Wert -0.3 werden die Elemente "-", "0", "." und "3" gemacht. Der Typ des Datenpunktes ist ein Array.@CKMartens sagte:
Also aus dem Wert -0.3 werden die Elemente "-", "0", "." und "3" gemacht. Der Typ des Datenpunktes ist ein Array.
Dann wurde das Array an anderer Stelle als String im Datenpunkt gespeichert. Das muss korrigiert werden.
-
@CKMartens sagte:
Also aus dem Wert -0.3 werden die Elemente "-", "0", "." und "3" gemacht. Der Typ des Datenpunktes ist ein Array.
Dann wurde das Array an anderer Stelle als String im Datenpunkt gespeichert. Das muss korrigiert werden.
@paul53 sagte in split is not a function:
@CKMartens sagte:
Also aus dem Wert -0.3 werden die Elemente "-", "0", "." und "3" gemacht. Der Typ des Datenpunktes ist ein Array.
Dann wurde das Array an anderer Stelle als String im Datenpunkt gespeichert. Das muss korrigiert werden.
Hmmm, eigentlich greift nur noch ein andres Script lesend auf den DP zu. Danke für den Tip, ich mach mich da mal geziehlt auf die Suche
-
@paul53 sagte in split is not a function:
@CKMartens sagte:
Also aus dem Wert -0.3 werden die Elemente "-", "0", "." und "3" gemacht. Der Typ des Datenpunktes ist ein Array.
Dann wurde das Array an anderer Stelle als String im Datenpunkt gespeichert. Das muss korrigiert werden.
Hmmm, eigentlich greift nur noch ein andres Script lesend auf den DP zu. Danke für den Tip, ich mach mich da mal geziehlt auf die Suche
@CKMartens sagte:
ich mach mich da mal geziehlt auf die Suche
Der Typ des Datenpunktes ist ein Array.Wenn in einem Skript ein String in einen Datenpunkt vom Typ "array" geschrieben wird, erfolgt eine Warnung "wrong type ...". Im Reiter "Log" findet man dazu den Skriptnamen und die Zeilennummer.
-
@CKMartens sagte:
ich mach mich da mal geziehlt auf die Suche
Der Typ des Datenpunktes ist ein Array.Wenn in einem Skript ein String in einen Datenpunkt vom Typ "array" geschrieben wird, erfolgt eine Warnung "wrong type ...". Im Reiter "Log" findet man dazu den Skriptnamen und die Zeilennummer.