NEWS
[Gelöst] Max-Werte speichern
-
Hallo Paul!
Ich habe das Script in leicht abgeänderter Funktion ( Stromverbrauch) heute versucht.
Aber in Zeile 27 bekomm ich einen Fehler.
19:14:50.049 warn javascript.0 (594) at Object.<anonymous> (script.js.Steckdosen.Strom_Max:27:7)Kannst du mal drüberschaun?
const idWind = 'sourceanalytix.0.javascript__0__Volkszaehler__AKTUELLER_VERBRAUCH.consumption.01_current_day'; // Datenpunkt-ID Windgeschwindigkeit https://forum.iobroker.net/viewtopic.php?t=13149 const idMax = 'Strom.Max'; const days = ['So','Mo','Di','Mi','Do','Fr','Sa']; const maxDay = 'Strom.Tagesmaximum_'; var max = getState(idWind).val; if(getObject('javascript.' + instance + '.' + idMax)) max = getState(idMax).val; createState(idMax, max, { type: 'number', unit: 'Watt', min: 0 }); for(var i = 0; i < 7; i++) { var idMaxDay = maxDay + days[i]; createState(idMaxDay, max, { type: 'number', unit: 'Watt', min: 0 }); } on(idWind, function(dp) { if(dp.state.val > max) { max = dp.state.val; setState(idMax, max, true); } }); schedule('59 23 * * *', function() { // täglich 1 Minute vor Mitternacht var wd = new Date().getDay(); var idMaxDay = maxDay + days[wd]; setState(idMaxDay, max, true); max = getState(idWind).val; setState(idMax, max, true); }); -
Hallo Paul!
Ich habe das Script in leicht abgeänderter Funktion ( Stromverbrauch) heute versucht.
Aber in Zeile 27 bekomm ich einen Fehler.
19:14:50.049 warn javascript.0 (594) at Object.<anonymous> (script.js.Steckdosen.Strom_Max:27:7)Kannst du mal drüberschaun?
const idWind = 'sourceanalytix.0.javascript__0__Volkszaehler__AKTUELLER_VERBRAUCH.consumption.01_current_day'; // Datenpunkt-ID Windgeschwindigkeit https://forum.iobroker.net/viewtopic.php?t=13149 const idMax = 'Strom.Max'; const days = ['So','Mo','Di','Mi','Do','Fr','Sa']; const maxDay = 'Strom.Tagesmaximum_'; var max = getState(idWind).val; if(getObject('javascript.' + instance + '.' + idMax)) max = getState(idMax).val; createState(idMax, max, { type: 'number', unit: 'Watt', min: 0 }); for(var i = 0; i < 7; i++) { var idMaxDay = maxDay + days[i]; createState(idMaxDay, max, { type: 'number', unit: 'Watt', min: 0 }); } on(idWind, function(dp) { if(dp.state.val > max) { max = dp.state.val; setState(idMax, max, true); } }); schedule('59 23 * * *', function() { // täglich 1 Minute vor Mitternacht var wd = new Date().getDay(); var idMaxDay = maxDay + days[wd]; setState(idMaxDay, max, true); max = getState(idWind).val; setState(idMax, max, true); }); -
@Negalein sagte:
at Object.<anonymous>
Wurde der Datenpunkt "javascript.0.Strom.Max" nicht erstellt ?
-
@paul53 sagte in [Gelöst] Max-Werte speichern:
Wurde der Datenpunkt "javascript.0.Strom.Max" nicht erstellt ?
Doch, die wurden alle automatisch angelegt.

-
@paul53 sagte in [Gelöst] Max-Werte speichern:
Dann dürfte die Warnung nicht erscheinen.
hab nochmal alle DP gelöscht, Script neu erstellt, gestartet.
Keine Warn zu sehen.
In die Objekte gewechselt um zu kontrollieren.
DP wurden erstellt und auch aktualisiert.Wieder zurück zum Script.
Warn erscheint wieder im Sekundentakt.
-
@paul53 sagte in [Gelöst] Max-Werte speichern:
Dann dürfte die Warnung nicht erscheinen.
hab nochmal alle DP gelöscht, Script neu erstellt, gestartet.
Keine Warn zu sehen.
In die Objekte gewechselt um zu kontrollieren.
DP wurden erstellt und auch aktualisiert.Wieder zurück zum Script.
Warn erscheint wieder im Sekundentakt.
-
@Negalein sagte:
Warn erscheint wieder im Sekundentakt.
Welche Version des JS-Adapters ?
Ich kann es bei mir (JS 4.6.22) nicht nachvollziehen:
Es wird jede Sekunde der Wert im Datenpunkt ohne Warnung hochgezählt.
@paul53 sagte in [Gelöst] Max-Werte speichern:
Welche Version des JS-Adapters ?
JS-Adapter: 4.6.22
JS-Controller: 3.1.6
Node.js: 10.17.0Es wird jede Sekunde der Wert im Datenpunkt ohne Warnung hochgezählt.
hochzählen funktioniert komischerweise. Nur eben mit der laufenden Warnung.
Edit: hab das Script gerade ohne irgendwelche Änderung wieder gestartet. Schaut derzeit gut aus. Werde es beobachten.
-
hab heute wieder nachgeschaut.
Es ist komisch.
sourceanalytix.0.javascript__0__Volkszaehler__AKTUELLER_VERBRAUCH.consumption.01_current_daywird laufend aktualisiert, aberjavascript.0.Strom.Maxsteht seit heute 8:56 Uhr.
Der Wert ist komisch. Ist genau bei 9999 stehen geblieben.Hab jetzt wieder das Script pausiert, die DP
javascript.0.Stromgelöscht, Script gestartet.DP wurden wieder automatisch angelegt.
Dann wieder das Problem.
11:34:12.078 warn javascript.0 (597) at Object.<anonymous> (script.js.Steckdosen.Strom:27:7) 11:34:14.046 warn javascript.0 (597) at Object.<anonymous> (script.js.Steckdosen.Strom:27:7) 11:34:16.579 warn javascript.0 (597) at Object.<anonymous> (script.js.Steckdosen.Strom:27:7) 11:34:18.112 warn javascript.0 (597) at Object.<anonymous> (script.js.Steckdosen.Strom:27:7)Der DP
javascript.0.Strom.Maxwird 1-2x vom Script vonsourceanalytix.0.javascript__0__Volkszaehler__AKTUELLER_VERBRAUCH.consumption.01_current_dayaktualisiert und steht dann.Script wieder gestoppt, neu gestartet.
DP wird wieder aktualisiert.
Warnungen bleiben. -
hab heute wieder nachgeschaut.
Es ist komisch.
sourceanalytix.0.javascript__0__Volkszaehler__AKTUELLER_VERBRAUCH.consumption.01_current_daywird laufend aktualisiert, aberjavascript.0.Strom.Maxsteht seit heute 8:56 Uhr.
Der Wert ist komisch. Ist genau bei 9999 stehen geblieben.Hab jetzt wieder das Script pausiert, die DP
javascript.0.Stromgelöscht, Script gestartet.DP wurden wieder automatisch angelegt.
Dann wieder das Problem.
11:34:12.078 warn javascript.0 (597) at Object.<anonymous> (script.js.Steckdosen.Strom:27:7) 11:34:14.046 warn javascript.0 (597) at Object.<anonymous> (script.js.Steckdosen.Strom:27:7) 11:34:16.579 warn javascript.0 (597) at Object.<anonymous> (script.js.Steckdosen.Strom:27:7) 11:34:18.112 warn javascript.0 (597) at Object.<anonymous> (script.js.Steckdosen.Strom:27:7)Der DP
javascript.0.Strom.Maxwird 1-2x vom Script vonsourceanalytix.0.javascript__0__Volkszaehler__AKTUELLER_VERBRAUCH.consumption.01_current_dayaktualisiert und steht dann.Script wieder gestoppt, neu gestartet.
DP wird wieder aktualisiert.
Warnungen bleiben. -
@Negalein sagte:
DP wird wieder aktualisiert.
Warnungen bleiben.Das liegt sicher nicht am Script. Da ist etwas anderes faul ?
@paul53 sagte in [Gelöst] Max-Werte speichern:
Das liegt sicher nicht am Script. Da ist etwas anderes faul ?
hab gerade noch das im Log entdeckt.
javascript.0 2020-08-17 12:05:02.073 warn (597) at process.topLevelDomainCallback (domain.js:126:23) javascript.0 2020-08-17 12:05:02.072 warn (597) at processImmediate (timers.js:658:5) javascript.0 2020-08-17 12:05:02.072 warn (597) at tryOnImmediate (timers.js:676:5) javascript.0 2020-08-17 12:05:02.072 warn (597) at runCallback (timers.js:705:18) javascript.0 2020-08-17 12:05:02.072 warn (597) at Immediate.setImmediate (/opt/iobroker/node_modules/iobroker.js-controller/lib/adapter.js:5384:37) javascript.0 2020-08-17 12:05:02.072 warn (597) at Object.stateChange (/opt/iobroker/node_modules/iobroker.javascript/main.js:457:25) javascript.0 2020-08-17 12:05:02.072 warn (597) at Object.callback (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:1042:38) javascript.0 2020-08-17 12:05:02.072 warn (597) at Object.<anonymous> (script.js.Steckdosen.Strom:27:7) javascript.0 2020-08-17 12:05:02.071 warn (597) at setState (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:1345:20) javascript.0 2020-08-17 12:05:02.070 warn (597) You are assigning a string to the state "javascript.0.Strom.Max" which expects a number. Please fix your code to use a number or change the state type to string. This warning might become an err javascript.0 2020-08-17 12:05:00.717 warn (597) at process.topLevelDomainCallback (domain.js:126:23) javascript.0 2020-08-17 12:05:00.713 warn (597) at processImmediate (timers.js:658:5) javascript.0 2020-08-17 12:05:00.713 warn (597) at tryOnImmediate (timers.js:676:5) javascript.0 2020-08-17 12:05:00.713 warn (597) at runCallback (timers.js:705:18) javascript.0 2020-08-17 12:05:00.712 warn (597) at Immediate.setImmediate (/opt/iobroker/node_modules/iobroker.js-controller/lib/adapter.js:5384:37) javascript.0 2020-08-17 12:05:00.712 warn (597) at Object.stateChange (/opt/iobroker/node_modules/iobroker.javascript/main.js:457:25) javascript.0 2020-08-17 12:05:00.712 warn (597) at Object.callback (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:1042:38) javascript.0 2020-08-17 12:05:00.712 warn (597) at Object.<anonymous> (script.js.Steckdosen.Strom:27:7) javascript.0 2020-08-17 12:05:00.712 warn (597) at setState (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:1345:20) javascript.0 2020-08-17 12:05:00.707 warn (597) You are assigning a string to the state "javascript.0.Strom.Max" which expects a number. Please fix your code to use a number or change the state type to string. This warning might become an errVielleicht hilft das?
Soll ich
javascript.0.Strom.Maxauf String ändern? -
@paul53 sagte in [Gelöst] Max-Werte speichern:
Das liegt sicher nicht am Script. Da ist etwas anderes faul ?
hab gerade noch das im Log entdeckt.
javascript.0 2020-08-17 12:05:02.073 warn (597) at process.topLevelDomainCallback (domain.js:126:23) javascript.0 2020-08-17 12:05:02.072 warn (597) at processImmediate (timers.js:658:5) javascript.0 2020-08-17 12:05:02.072 warn (597) at tryOnImmediate (timers.js:676:5) javascript.0 2020-08-17 12:05:02.072 warn (597) at runCallback (timers.js:705:18) javascript.0 2020-08-17 12:05:02.072 warn (597) at Immediate.setImmediate (/opt/iobroker/node_modules/iobroker.js-controller/lib/adapter.js:5384:37) javascript.0 2020-08-17 12:05:02.072 warn (597) at Object.stateChange (/opt/iobroker/node_modules/iobroker.javascript/main.js:457:25) javascript.0 2020-08-17 12:05:02.072 warn (597) at Object.callback (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:1042:38) javascript.0 2020-08-17 12:05:02.072 warn (597) at Object.<anonymous> (script.js.Steckdosen.Strom:27:7) javascript.0 2020-08-17 12:05:02.071 warn (597) at setState (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:1345:20) javascript.0 2020-08-17 12:05:02.070 warn (597) You are assigning a string to the state "javascript.0.Strom.Max" which expects a number. Please fix your code to use a number or change the state type to string. This warning might become an err javascript.0 2020-08-17 12:05:00.717 warn (597) at process.topLevelDomainCallback (domain.js:126:23) javascript.0 2020-08-17 12:05:00.713 warn (597) at processImmediate (timers.js:658:5) javascript.0 2020-08-17 12:05:00.713 warn (597) at tryOnImmediate (timers.js:676:5) javascript.0 2020-08-17 12:05:00.713 warn (597) at runCallback (timers.js:705:18) javascript.0 2020-08-17 12:05:00.712 warn (597) at Immediate.setImmediate (/opt/iobroker/node_modules/iobroker.js-controller/lib/adapter.js:5384:37) javascript.0 2020-08-17 12:05:00.712 warn (597) at Object.stateChange (/opt/iobroker/node_modules/iobroker.javascript/main.js:457:25) javascript.0 2020-08-17 12:05:00.712 warn (597) at Object.callback (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:1042:38) javascript.0 2020-08-17 12:05:00.712 warn (597) at Object.<anonymous> (script.js.Steckdosen.Strom:27:7) javascript.0 2020-08-17 12:05:00.712 warn (597) at setState (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:1345:20) javascript.0 2020-08-17 12:05:00.707 warn (597) You are assigning a string to the state "javascript.0.Strom.Max" which expects a number. Please fix your code to use a number or change the state type to string. This warning might become an errVielleicht hilft das?
Soll ich
javascript.0.Strom.Maxauf String ändern?@Negalein sagte:
Soll ich javascript.0.Strom.Maxauf String ändern?
Nein, dann funktioniert die Max-Ermittlung nicht. Liefert der Datenpunkt 'sourceanalytix.0.javascript__0__Volkszaehler__AKTUELLER_VERBRAUCH.consumption.01_current_day' keine Zahl ? Dann muss der Wert aus dem Datenpunkt jedesmal mit parseFloat() in eine Zahl gewandelt werden.
var max = parseFloat(getState(idWind).val); if(existsState('javascript.' + instance + '.' + idMax)) max = getState(idMax).val; else createState(idMax, max, {und
on(idWind, function(dp) { if(parseFloat(dp.state.val) > max) { max = parseFloat(dp.state.val); setState(idMax, max, true); } }); -
@Negalein sagte:
Soll ich javascript.0.Strom.Maxauf String ändern?
Nein, dann funktioniert die Max-Ermittlung nicht. Liefert der Datenpunkt 'sourceanalytix.0.javascript__0__Volkszaehler__AKTUELLER_VERBRAUCH.consumption.01_current_day' keine Zahl ? Dann muss der Wert aus dem Datenpunkt jedesmal mit parseFloat() in eine Zahl gewandelt werden.
var max = parseFloat(getState(idWind).val); if(existsState('javascript.' + instance + '.' + idMax)) max = getState(idMax).val; else createState(idMax, max, {und
on(idWind, function(dp) { if(parseFloat(dp.state.val) > max) { max = parseFloat(dp.state.val); setState(idMax, max, true); } });@paul53 sagte in [Gelöst] Max-Werte speichern:
Liefert der Datenpunkt 'sourceanalytix.0.javascript__0__Volkszaehler__AKTUELLER_VERBRAUCH.consumption.01_current_day' keine Zahl ?
Ist als Zahl
{ "from": "system.adapter.sourceanalytix.0", "user": "system.user.admin", "ts": 1597148627809, "common": { "name": "current Day ", "type": "number", "role": "value.week", "unit": "kWh", "def": 0, "read": true }, "native": {}, "acl": { "object": 1636, "owner": "system.user.admin", "ownerGroup": "system.group.administrator", "state": 1636 }, "_id": "sourceanalytix.0.javascript__0__Volkszaehler__AKTUELLER_VERBRAUCH.consumption.01_current_day", "type": "state" } -
@paul53 sagte in [Gelöst] Max-Werte speichern:
Liefert der Datenpunkt 'sourceanalytix.0.javascript__0__Volkszaehler__AKTUELLER_VERBRAUCH.consumption.01_current_day' keine Zahl ?
Ist als Zahl
{ "from": "system.adapter.sourceanalytix.0", "user": "system.user.admin", "ts": 1597148627809, "common": { "name": "current Day ", "type": "number", "role": "value.week", "unit": "kWh", "def": 0, "read": true }, "native": {}, "acl": { "object": 1636, "owner": "system.user.admin", "ownerGroup": "system.group.administrator", "state": 1636 }, "_id": "sourceanalytix.0.javascript__0__Volkszaehler__AKTUELLER_VERBRAUCH.consumption.01_current_day", "type": "state" } -
@Negalein sagte:
Ist als Zahl
Wenn common.type = "number" steht, bedeutet es leider nicht, dass auch wirklich eine Zahl enthalten ist.
-
@paul53 sagte in [Gelöst] Max-Werte speichern:
Wenn common.type = "number" steht, bedeutet es leider nicht, dass auch wirklich eine Zahl enthalten ist.
Ok, wie kann ich prüfen, ob es tatsächlich eine Zahl ist?
-
@Negalein sagte:
wie kann ich prüfen, ob es tatsächlich eine Zahl ist?
Was ergibt zusätzlich als Zeile 7 ?
log(typeof max);@paul53 sagte in [Gelöst] Max-Werte speichern:
Was ergibt zusätzlich als Zeile 7 ?
javascript.0 2020-08-17 12:24:08.050 warn (597) at process.topLevelDomainCallback (domain.js:126:23) javascript.0 2020-08-17 12:24:08.050 warn (597) at processImmediate (timers.js:658:5) javascript.0 2020-08-17 12:24:08.050 warn (597) at tryOnImmediate (timers.js:676:5) javascript.0 2020-08-17 12:24:08.050 warn (597) at runCallback (timers.js:705:18) javascript.0 2020-08-17 12:24:08.050 warn (597) at Immediate.setImmediate (/opt/iobroker/node_modules/iobroker.js-controller/lib/adapter.js:5384:37) javascript.0 2020-08-17 12:24:08.049 warn (597) at Object.stateChange (/opt/iobroker/node_modules/iobroker.javascript/main.js:457:25) javascript.0 2020-08-17 12:24:08.049 warn (597) at Object.callback (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:1042:38) javascript.0 2020-08-17 12:24:08.049 warn (597) at Object.<anonymous> (script.js.Steckdosen.Strom:28:7) javascript.0 2020-08-17 12:24:08.049 warn (597) at setState (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:1345:20) javascript.0 2020-08-17 12:24:08.048 warn (597) You are assigning a string to the state "javascript.0.Strom.Max" which expects a number. Please fix your code to use a number or change the state type to string. This warning might become an err -
@paul53 sagte in [Gelöst] Max-Werte speichern:
Was ergibt zusätzlich als Zeile 7 ?
javascript.0 2020-08-17 12:24:08.050 warn (597) at process.topLevelDomainCallback (domain.js:126:23) javascript.0 2020-08-17 12:24:08.050 warn (597) at processImmediate (timers.js:658:5) javascript.0 2020-08-17 12:24:08.050 warn (597) at tryOnImmediate (timers.js:676:5) javascript.0 2020-08-17 12:24:08.050 warn (597) at runCallback (timers.js:705:18) javascript.0 2020-08-17 12:24:08.050 warn (597) at Immediate.setImmediate (/opt/iobroker/node_modules/iobroker.js-controller/lib/adapter.js:5384:37) javascript.0 2020-08-17 12:24:08.049 warn (597) at Object.stateChange (/opt/iobroker/node_modules/iobroker.javascript/main.js:457:25) javascript.0 2020-08-17 12:24:08.049 warn (597) at Object.callback (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:1042:38) javascript.0 2020-08-17 12:24:08.049 warn (597) at Object.<anonymous> (script.js.Steckdosen.Strom:28:7) javascript.0 2020-08-17 12:24:08.049 warn (597) at setState (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:1345:20) javascript.0 2020-08-17 12:24:08.048 warn (597) You are assigning a string to the state "javascript.0.Strom.Max" which expects a number. Please fix your code to use a number or change the state type to string. This warning might become an err -
@Negalein
Der Info-Log von Zeile 7 ist nicht dabei. Er muss gleich als erstes nach Skriptstart erscheinen.@paul53 sagte in [Gelöst] Max-Werte speichern:
Der Info-Log von Zeile 7 ist nicht dabei. Er muss gleich als erstes nach Skriptstart erscheinen.
javascript.0 2020-08-17 12:31:28.240 warn (597) at process.topLevelDomainCallback (domain.js:126:23) javascript.0 2020-08-17 12:31:28.240 warn (597) at processImmediate (timers.js:658:5) javascript.0 2020-08-17 12:31:28.240 warn (597) at tryOnImmediate (timers.js:676:5) javascript.0 2020-08-17 12:31:28.240 warn (597) at runCallback (timers.js:705:18) javascript.0 2020-08-17 12:31:28.240 warn (597) at Immediate.setImmediate (/opt/iobroker/node_modules/iobroker.js-controller/lib/adapter.js:5384:37) javascript.0 2020-08-17 12:31:28.240 warn (597) at Object.stateChange (/opt/iobroker/node_modules/iobroker.javascript/main.js:457:25) javascript.0 2020-08-17 12:31:28.240 warn (597) at Object.callback (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:1042:38) javascript.0 2020-08-17 12:31:28.239 warn (597) at Object.<anonymous> (script.js.Steckdosen.Strom:28:7) javascript.0 2020-08-17 12:31:28.239 warn (597) at setState (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:1345:20) javascript.0 2020-08-17 12:31:28.237 warn (597) You are assigning a string to the state "javascript.0.Strom.Max" which expects a number. Please fix your code to use a number or change the state type to string. This warning might become an err javascript.0 2020-08-17 12:31:22.851 info (597) script.js.Steckdosen.Strom: registered 1 subscription and 1 schedule javascript.0 2020-08-17 12:31:22.839 info (597) script.js.Steckdosen.Strom: string javascript.0 2020-08-17 12:31:22.830 info (597) Start javascript script.js.Steckdosen.StromLt. Log ist es ein String
-
@Negalein sagte:
Soll ich javascript.0.Strom.Maxauf String ändern?
Nein, dann funktioniert die Max-Ermittlung nicht. Liefert der Datenpunkt 'sourceanalytix.0.javascript__0__Volkszaehler__AKTUELLER_VERBRAUCH.consumption.01_current_day' keine Zahl ? Dann muss der Wert aus dem Datenpunkt jedesmal mit parseFloat() in eine Zahl gewandelt werden.
var max = parseFloat(getState(idWind).val); if(existsState('javascript.' + instance + '.' + idMax)) max = getState(idMax).val; else createState(idMax, max, {und
on(idWind, function(dp) { if(parseFloat(dp.state.val) > max) { max = parseFloat(dp.state.val); setState(idMax, max, true); } });@paul53 sagte in [Gelöst] Max-Werte speichern:
Dann muss der Wert aus dem Datenpunkt jedesmal mit parseFloat() in eine Zahl gewandelt werden.
Ich glaub, das hab ich falsch eingetragen.
const idWind = 'sourceanalytix.0.javascript__0__Volkszaehler__AKTUELLER_VERBRAUCH.consumption.01_current_day'; // Datenpunkt-ID Windgeschwindigkeit https://forum.iobroker.net/viewtopic.php?t=13149 const idMax = 'Strom.Max'; const days = ['So','Mo','Di','Mi','Do','Fr','Sa']; const maxDay = 'Strom.Tagesmaximum_'; var max = parseFloat(getState(idWind).val); if(existsState('javascript.' + instance + '.' + idMax)) max = getState(idMax).val; else createState(idMax, max, { createState(idMax, max, { type: 'number', unit: 'Watt', min: 0 }); for(var i = 0; i < 7; i++) { var idMaxDay = maxDay + days[i]; createState(idMaxDay, max, { type: 'number', unit: 'Watt', min: 0 }); } on(idWind, function(dp) { if(parseFloat(dp.state.val) > max) { max = parseFloat(dp.state.val); setState(idMax, max, true); } }); schedule('59 23 * * *', function() { // täglich 1 Minute vor Mitternacht var wd = new Date().getDay(); var idMaxDay = maxDay + days[wd]; setState(idMaxDay, max, true); max = getState(idWind).val; setState(idMax, max, true); });javascript.0 2020-08-17 12:45:32.344 error (597) at process._tickCallback (internal/process/next_tick.js:68:7) javascript.0 2020-08-17 12:45:32.344 error (597) at promise.then (/opt/iobroker/node_modules/standard-as-callback/built/index.js:19:49) javascript.0 2020-08-17 12:45:32.344 error (597) at tryCatcher (/opt/iobroker/node_modules/standard-as-callback/built/utils.js:11:23) javascript.0 2020-08-17 12:45:32.344 error (597) at client.get (/opt/iobroker/node_modules/iobroker.js-controller/lib/states/statesInRedis.js:616:17) javascript.0 2020-08-17 12:45:32.343 error (597) at adapter.getForeignState (/opt/iobroker/node_modules/iobroker.javascript/main.js:1124:17) javascript.0 2020-08-17 12:45:32.343 error (597) at createProblemObject (/opt/iobroker/node_modules/iobroker.javascript/main.js:1533:17) javascript.0 2020-08-17 12:45:32.343 error (597) at prepareScript (/opt/iobroker/node_modules/iobroker.javascript/main.js:1480:37) javascript.0 2020-08-17 12:45:32.343 error (597) at compile (/opt/iobroker/node_modules/iobroker.javascript/main.js:1257:28) javascript.0 2020-08-17 12:45:32.343 error (597) at Object.createScript (vm.js:277:10) javascript.0 2020-08-17 12:45:32.342 error (597) at new Script (vm.js:83:7) javascript.0 2020-08-17 12:45:32.342 error (597) SyntaxError: Unexpected string javascript.0 2020-08-17 12:45:32.342 error (597) ^^^^^^^^ javascript.0 2020-08-17 12:45:32.341 error (597) type: 'number', javascript.0 2020-08-17 12:45:32.340 error at script.js.Steckdosen.Strom:11 javascript.0 2020-08-17 12:45:32.340 error (597) script.js.Steckdosen.Strom compile failed: javascript.0 2020-08-17 12:45:32.333 info (597) Start javascript script.js.Steckdosen.Strom -
@paul53 sagte in [Gelöst] Max-Werte speichern:
Dann muss der Wert aus dem Datenpunkt jedesmal mit parseFloat() in eine Zahl gewandelt werden.
Ich glaub, das hab ich falsch eingetragen.
const idWind = 'sourceanalytix.0.javascript__0__Volkszaehler__AKTUELLER_VERBRAUCH.consumption.01_current_day'; // Datenpunkt-ID Windgeschwindigkeit https://forum.iobroker.net/viewtopic.php?t=13149 const idMax = 'Strom.Max'; const days = ['So','Mo','Di','Mi','Do','Fr','Sa']; const maxDay = 'Strom.Tagesmaximum_'; var max = parseFloat(getState(idWind).val); if(existsState('javascript.' + instance + '.' + idMax)) max = getState(idMax).val; else createState(idMax, max, { createState(idMax, max, { type: 'number', unit: 'Watt', min: 0 }); for(var i = 0; i < 7; i++) { var idMaxDay = maxDay + days[i]; createState(idMaxDay, max, { type: 'number', unit: 'Watt', min: 0 }); } on(idWind, function(dp) { if(parseFloat(dp.state.val) > max) { max = parseFloat(dp.state.val); setState(idMax, max, true); } }); schedule('59 23 * * *', function() { // täglich 1 Minute vor Mitternacht var wd = new Date().getDay(); var idMaxDay = maxDay + days[wd]; setState(idMaxDay, max, true); max = getState(idWind).val; setState(idMax, max, true); });javascript.0 2020-08-17 12:45:32.344 error (597) at process._tickCallback (internal/process/next_tick.js:68:7) javascript.0 2020-08-17 12:45:32.344 error (597) at promise.then (/opt/iobroker/node_modules/standard-as-callback/built/index.js:19:49) javascript.0 2020-08-17 12:45:32.344 error (597) at tryCatcher (/opt/iobroker/node_modules/standard-as-callback/built/utils.js:11:23) javascript.0 2020-08-17 12:45:32.344 error (597) at client.get (/opt/iobroker/node_modules/iobroker.js-controller/lib/states/statesInRedis.js:616:17) javascript.0 2020-08-17 12:45:32.343 error (597) at adapter.getForeignState (/opt/iobroker/node_modules/iobroker.javascript/main.js:1124:17) javascript.0 2020-08-17 12:45:32.343 error (597) at createProblemObject (/opt/iobroker/node_modules/iobroker.javascript/main.js:1533:17) javascript.0 2020-08-17 12:45:32.343 error (597) at prepareScript (/opt/iobroker/node_modules/iobroker.javascript/main.js:1480:37) javascript.0 2020-08-17 12:45:32.343 error (597) at compile (/opt/iobroker/node_modules/iobroker.javascript/main.js:1257:28) javascript.0 2020-08-17 12:45:32.343 error (597) at Object.createScript (vm.js:277:10) javascript.0 2020-08-17 12:45:32.342 error (597) at new Script (vm.js:83:7) javascript.0 2020-08-17 12:45:32.342 error (597) SyntaxError: Unexpected string javascript.0 2020-08-17 12:45:32.342 error (597) ^^^^^^^^ javascript.0 2020-08-17 12:45:32.341 error (597) type: 'number', javascript.0 2020-08-17 12:45:32.340 error at script.js.Steckdosen.Strom:11 javascript.0 2020-08-17 12:45:32.340 error (597) script.js.Steckdosen.Strom compile failed: javascript.0 2020-08-17 12:45:32.333 info (597) Start javascript script.js.Steckdosen.Strom@Negalein sagte:
das hab ich falsch eingetragen.
Ja.
const idWind = 'sourceanalytix.0.javascript__0__Volkszaehler__AKTUELLER_VERBRAUCH.consumption.01_current_day'; // Datenpunkt-ID Windgeschwindigkeit https://forum.iobroker.net/viewtopic.php?t=13149 const idMax = 'Strom.Max'; const days = ['So','Mo','Di','Mi','Do','Fr','Sa']; const maxDay = 'Strom.Tagesmaximum_'; var max = parseFloat(getState(idWind).val); if(existsState('javascript.' + instance + '.' + idMax)) max = getState(idMax).val; else createState(idMax, max, { type: 'number', unit: 'Watt', min: 0 }); for(var i = 0; i < 7; i++) { var idMaxDay = maxDay + days[i]; createState(idMaxDay, max, { type: 'number', unit: 'Watt', min: 0 }); } on(idWind, function(dp) { if(parseFloat(dp.state.val) > max) { max = parseFloat(dp.state.val); setState(idMax, max, true); } }); schedule('59 23 * * *', function() { // täglich 1 Minute vor Mitternacht var wd = new Date().getDay(); var idMaxDay = maxDay + days[wd]; setState(idMaxDay, max, true); max = getState(idWind).val; setState(idMax, max, true); });
Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.
Hast du es satt, bei jedem Besuch durch die gleichen Beiträge zu scrollen? Wenn du dich für ein Konto anmeldest, kommst du immer genau dorthin zurück, wo du zuvor warst, und kannst dich über neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und Beiträge positiv bewerten, um anderen Community-Mitgliedern deine Wertschätzung zu zeigen.
Mit deinem Input könnte dieser Beitrag noch besser werden 💗
Registrieren Anmelden