NEWS
[Gelöst] Max-Werte speichern
-
@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); }); -
@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); }); -
-
@Negalein sagte:
Schaut gut aus!
Noch nicht ganz: In Zeile 34 fehlt noch ein parseFloat().
max = parseFloat(getState(idWind).val); -
Kann da jemand nen kleines Script schreiben? `
const idWind = '...'; // Datenpunkt-ID Windgeschwindigkeit const idMax = 'Wind.Max_Geschwindigkeit'; const idMaxWoche = 'Wind.Wochenmaximum'; var max = getState(idWind).val; if(getObject('javascript.' + instance + '.' + idMax)) max = getState(idMax).val; createState(idMax, max, { type: 'number', unit: 'km/h', min: 0 }); createState(idMaxWoche, max, { type: 'number', unit: 'km/h', min: 0 }); on(idWind, function(dp) { if(dp.state.val > max) { max = dp.state.val; setState(idMax, max, true); } }); schedule('0 0 * * 0', function() { // Sonntags um Mitternacht setState(idMaxWoche, max, true); max = getState(idWind).val; setState(idMax, max, true); });@paul53 Ich bin gerade auf deinem Script gestoßen und habe es abgeändert für meine Temperatur. Würde es so funktionieren. Bis jetzt werden mir noch keine Fehler angezeigt.
Zur besseren Verständnis der Datenpunkt
"idmax" wird immer aktualisiert wenn der vorherige Wert höher ist.
und der "idmaxWoche" auch aber dieser wird nur 1 mal pro Woche zurückgesetzt.const idTemperatur = 'ds18b20.0.sensors.28-3c01e076ac31'/*Temperatur Aquarium*/ // Datenpunkt-ID Temperatur const idMax = 'Temperatur.Max_Temperatur'; const idMaxWoche = 'Temperatur.Wochenmaximum'; var max = getState(idTemperatur).val; if(getObject('javascript.' + instance + '.' + idMax)) max = getState(idMax).val; createState(idMax, max, { type: 'number', unit: '°C', min: 0 }); createState(idMaxWoche, max, { type: 'number', unit: '°C', min: 0 }); on(idTemperatur, function(dp) { if(dp.state.val > max) { max = dp.state.val; setState(idMax, max, true); } }); schedule('0 0 * * 0', function() { // Sonntags um Mitternacht setState(idMaxWoche, max, true); max = getState(idTemperatur).val; setState(idMax, max, true); }); 0Wie müsste es jetzt aussehen wenn ich mit den Script auch den Minimalen Wert ermitteln möchte. Müsste ich dann einfach anstatt max nur min schreiben. Und bei Zeile 20 das "Zeichen drehen".
-
@Negalein sagte:
Schaut gut aus!
Noch nicht ganz: In Zeile 34 fehlt noch ein parseFloat().
max = parseFloat(getState(idWind).val);@paul53 Ich habe mich mal an den min Wert herangetraut ist es so weit richtig wie ich es gemacht habe.
const idTemperatur = 'ds18b20.0.sensors.28-3c01e076ac31'/*Temperatur Aquarium*/ // Datenpunkt-ID Temperatur const idMin = 'Temperatur.Min_Temperatur'; const idMinWoche = 'Temperatur.Wochenminimum'; var min = getState(idTemperatur).val; if(getObject('javascript.' + instance + '.' + idMin)) min = getState(idMin).val; createState(idMin, min, { //Temperatur minimal type: 'number', unit: '°C', min: 0 }); createState(idMinWoche, min, { //Temperatur Woche minimal type: 'number', unit: '°C', min: 0 }); on(idTemperatur, function(dp) { if(dp.state.val < min) { min = dp.state.val; setState(idMin, min, true); } }); schedule('0 0 * * 0', function() { // Sonntags um Mitternacht setState(idMinWoche, min, true); max = getState(idTemperatur).val; setState(idMin, min, true); }); 0PS Fehler sind bis jetzt keine gekommen und es werden schon mal Werte angezeigt. :)
-
@paul53 Ich bin gerade auf deinem Script gestoßen und habe es abgeändert für meine Temperatur. Würde es so funktionieren. Bis jetzt werden mir noch keine Fehler angezeigt.
Zur besseren Verständnis der Datenpunkt
"idmax" wird immer aktualisiert wenn der vorherige Wert höher ist.
und der "idmaxWoche" auch aber dieser wird nur 1 mal pro Woche zurückgesetzt.const idTemperatur = 'ds18b20.0.sensors.28-3c01e076ac31'/*Temperatur Aquarium*/ // Datenpunkt-ID Temperatur const idMax = 'Temperatur.Max_Temperatur'; const idMaxWoche = 'Temperatur.Wochenmaximum'; var max = getState(idTemperatur).val; if(getObject('javascript.' + instance + '.' + idMax)) max = getState(idMax).val; createState(idMax, max, { type: 'number', unit: '°C', min: 0 }); createState(idMaxWoche, max, { type: 'number', unit: '°C', min: 0 }); on(idTemperatur, function(dp) { if(dp.state.val > max) { max = dp.state.val; setState(idMax, max, true); } }); schedule('0 0 * * 0', function() { // Sonntags um Mitternacht setState(idMaxWoche, max, true); max = getState(idTemperatur).val; setState(idMax, max, true); }); 0Wie müsste es jetzt aussehen wenn ich mit den Script auch den Minimalen Wert ermitteln möchte. Müsste ich dann einfach anstatt max nur min schreiben. Und bei Zeile 20 das "Zeichen drehen".
@basti97 sagte: "idmax" wird immer aktualisiert wenn der vorherige Wert höher ist.
und der "idmaxWoche" auch aber dieser wird nur 1 mal pro Woche zurückgesetzt."idMaxWoche" wird nur einmal in der Woche geschrieben und "idMax" wird einmal in der Woche zurück gesetzt.
Man kann Maximum und Minimum in einem Skript ermitteln.
const idTemperatur = 'ds18b20.0.sensors.28-3c01e076ac31'/*Temperatur Aquarium*/ // Datenpunkt-ID Temperatur const idMin = 'Temperatur.Min_Temperatur'; const idMax = 'Temperatur.Max_Temperatur'; const idMinWoche = 'Temperatur.Wochenminimum'; const idMaxWoche = 'Temperatur.Wochenmaximum'; var temp = getState(idTemperatur).val; var min = temp; var max = temp; if(existsState(idMin)) min = getState(idMin).val; else { createState(idMin, min, { //Temperatur minimal name: 'Temperaturminimum', type: 'number', unit: '°C', min: 0 }); createState(idMinWoche, min, { //Temperatur Woche minimal name: 'Temperatur Wochenminimum', type: 'number', unit: '°C', min: 0 }); } if(existsState(idMax)) max = getState(idMax).val; else { createState(idMax, max, { //Temperatur minimal name: 'Temperaturmaximum', type: 'number', unit: '°C', min: 0 }); createState(idMaxWoche, max, { //Temperatur Woche minimal name: 'Temperatur Wochenmaximum', type: 'number', unit: '°C', min: 0 }); } on(idTemperatur, function(dp) { temp = dp.state.val; if(temp < min) { min = temp; setState(idMin, min, true); } if(temp > max) { max = temp; setState(idMax, max, true); } }); schedule('0 0 * * 0', function() { // Sonntags um Mitternacht setState(idMinWoche, min, true); setState(idMaxWoche, max, true); min = temp; max = temp; setState(idMin, min, true); setState(idMax, max, true); }); -
@basti97 sagte: "idmax" wird immer aktualisiert wenn der vorherige Wert höher ist.
und der "idmaxWoche" auch aber dieser wird nur 1 mal pro Woche zurückgesetzt."idMaxWoche" wird nur einmal in der Woche geschrieben und "idMax" wird einmal in der Woche zurück gesetzt.
Man kann Maximum und Minimum in einem Skript ermitteln.
const idTemperatur = 'ds18b20.0.sensors.28-3c01e076ac31'/*Temperatur Aquarium*/ // Datenpunkt-ID Temperatur const idMin = 'Temperatur.Min_Temperatur'; const idMax = 'Temperatur.Max_Temperatur'; const idMinWoche = 'Temperatur.Wochenminimum'; const idMaxWoche = 'Temperatur.Wochenmaximum'; var temp = getState(idTemperatur).val; var min = temp; var max = temp; if(existsState(idMin)) min = getState(idMin).val; else { createState(idMin, min, { //Temperatur minimal name: 'Temperaturminimum', type: 'number', unit: '°C', min: 0 }); createState(idMinWoche, min, { //Temperatur Woche minimal name: 'Temperatur Wochenminimum', type: 'number', unit: '°C', min: 0 }); } if(existsState(idMax)) max = getState(idMax).val; else { createState(idMax, max, { //Temperatur minimal name: 'Temperaturmaximum', type: 'number', unit: '°C', min: 0 }); createState(idMaxWoche, max, { //Temperatur Woche minimal name: 'Temperatur Wochenmaximum', type: 'number', unit: '°C', min: 0 }); } on(idTemperatur, function(dp) { temp = dp.state.val; if(temp < min) { min = temp; setState(idMin, min, true); } if(temp > max) { max = temp; setState(idMax, max, true); } }); schedule('0 0 * * 0', function() { // Sonntags um Mitternacht setState(idMinWoche, min, true); setState(idMaxWoche, max, true); min = temp; max = temp; setState(idMin, min, true); setState(idMax, max, true); });@paul53 Super vielen Dank das funktioniert. :) :)Wusste gar nicht das man es auch in einem Schript machen kann. Naja wieder was dazu gelernt.
Ich glaube ich muss auch mal mich in die Javascripte mich herein fuchsen dadurch kann man mehr programmieren als mit Blockly oderso.Ich wünsche dir eine schöne Ostern.

-
@basti97 sagte: "idmax" wird immer aktualisiert wenn der vorherige Wert höher ist.
und der "idmaxWoche" auch aber dieser wird nur 1 mal pro Woche zurückgesetzt."idMaxWoche" wird nur einmal in der Woche geschrieben und "idMax" wird einmal in der Woche zurück gesetzt.
Man kann Maximum und Minimum in einem Skript ermitteln.
const idTemperatur = 'ds18b20.0.sensors.28-3c01e076ac31'/*Temperatur Aquarium*/ // Datenpunkt-ID Temperatur const idMin = 'Temperatur.Min_Temperatur'; const idMax = 'Temperatur.Max_Temperatur'; const idMinWoche = 'Temperatur.Wochenminimum'; const idMaxWoche = 'Temperatur.Wochenmaximum'; var temp = getState(idTemperatur).val; var min = temp; var max = temp; if(existsState(idMin)) min = getState(idMin).val; else { createState(idMin, min, { //Temperatur minimal name: 'Temperaturminimum', type: 'number', unit: '°C', min: 0 }); createState(idMinWoche, min, { //Temperatur Woche minimal name: 'Temperatur Wochenminimum', type: 'number', unit: '°C', min: 0 }); } if(existsState(idMax)) max = getState(idMax).val; else { createState(idMax, max, { //Temperatur minimal name: 'Temperaturmaximum', type: 'number', unit: '°C', min: 0 }); createState(idMaxWoche, max, { //Temperatur Woche minimal name: 'Temperatur Wochenmaximum', type: 'number', unit: '°C', min: 0 }); } on(idTemperatur, function(dp) { temp = dp.state.val; if(temp < min) { min = temp; setState(idMin, min, true); } if(temp > max) { max = temp; setState(idMax, max, true); } }); schedule('0 0 * * 0', function() { // Sonntags um Mitternacht setState(idMinWoche, min, true); setState(idMaxWoche, max, true); min = temp; max = temp; setState(idMin, min, true); setState(idMax, max, true); }); -
@basti97 sagte: "idmax" wird immer aktualisiert wenn der vorherige Wert höher ist.
und der "idmaxWoche" auch aber dieser wird nur 1 mal pro Woche zurückgesetzt."idMaxWoche" wird nur einmal in der Woche geschrieben und "idMax" wird einmal in der Woche zurück gesetzt.
Man kann Maximum und Minimum in einem Skript ermitteln.
const idTemperatur = 'ds18b20.0.sensors.28-3c01e076ac31'/*Temperatur Aquarium*/ // Datenpunkt-ID Temperatur const idMin = 'Temperatur.Min_Temperatur'; const idMax = 'Temperatur.Max_Temperatur'; const idMinWoche = 'Temperatur.Wochenminimum'; const idMaxWoche = 'Temperatur.Wochenmaximum'; var temp = getState(idTemperatur).val; var min = temp; var max = temp; if(existsState(idMin)) min = getState(idMin).val; else { createState(idMin, min, { //Temperatur minimal name: 'Temperaturminimum', type: 'number', unit: '°C', min: 0 }); createState(idMinWoche, min, { //Temperatur Woche minimal name: 'Temperatur Wochenminimum', type: 'number', unit: '°C', min: 0 }); } if(existsState(idMax)) max = getState(idMax).val; else { createState(idMax, max, { //Temperatur minimal name: 'Temperaturmaximum', type: 'number', unit: '°C', min: 0 }); createState(idMaxWoche, max, { //Temperatur Woche minimal name: 'Temperatur Wochenmaximum', type: 'number', unit: '°C', min: 0 }); } on(idTemperatur, function(dp) { temp = dp.state.val; if(temp < min) { min = temp; setState(idMin, min, true); } if(temp > max) { max = temp; setState(idMax, max, true); } }); schedule('0 0 * * 0', function() { // Sonntags um Mitternacht setState(idMinWoche, min, true); setState(idMaxWoche, max, true); min = temp; max = temp; setState(idMin, min, true); setState(idMax, max, true); });Diese Zeile habe ich noch eingefügt das er 00:01 Uhr die max und min Werte gleich macht. Das funktioniert auch :) Das war meine ersten Zeilen in Java S. Ich glaube ich muss mich noch mehr einlesen. )
schedule("01 00 * * *", function () { //Uhrzeit 00:01 Uhr setState("javascript.0.Temperatur.Min_Temperatur"/*Temperatur.Min_Temperatur*/, getState("ds18b20.0.sensors.28-3c01e076ac31").val); setState("javascript.0.Temperatur.Max_Temperatur"/*Temperatur.Max_Temperatur*/, getState("ds18b20.0.sensors.28-3c01e076ac31").val); }); 0
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
