NEWS
[gelöst] Result "undefined" in JS
-
@Nobody28
Das Maximum muss in der Schleife ermittelt werden.}, function (result) { let max = result.result[0].val let ts = result.result[0].ts; for (var i = 1; i < result.result.length; i++) { if(result.result[i].val > max) { max = result.result[i].val; ts = result.result[i].ts; } } console.log('Temperatur: ' + max + ' °C ' + new Date(ts).toISOString()); });
-
Dann ist dass das derzeitige Script:
var end = Date.now(); sendTo('history.0', 'getHistory', { id: 'ds18b20.0.sensors.28-013a900000af'/*28-013a900000af*/, options: { start: end - 600000, end: end, aggregate: 'max' } }, function (result) { let max = result.result[0].val let ts = Date.now(); for (var i = 0; i < result.result.length; i++) { if(result.result[i].val > max) { max = result.result[i].val; ts = result.result[i].ts; } } console.log('Temperatur: ' + max + ' °C ' + new Date(ts).toISOString()); });
Das ist das Ergebnis:
16:37:18.214 info javascript.0 (1297) Start javascript script.js.common.ALCAR.Test.Temp_Max 16:37:18.237 info javascript.0 (1297) script.js.common.ALCAR.Test.Temp_Max: registered 0 subscriptions and 0 schedules 16:37:19.055 info javascript.0 (1297) script.js.common.ALCAR.Test.Temp_Max: Temperatur: 24.305 °C 2020-11-13T15:37:19.055Z
Was ich aber irgendwie nicht glauben kann, weil das die Werte der letzten Minuten sind:
22.63 true 2020-11-13 16:36:29.764 22.69 true 2020-11-13 16:36:19.766 22.63 true 2020-11-13 16:36:09.766 22.63 true 2020-11-13 16:30:59.765 22.69 true 2020-11-13 16:30:49.771 22.63 true 2020-11-13 16:30:39.766 22.63 true 2020-11-13 16:23:19.691 22.69 true 2020-11-13 16:23:09.685 22.69 true 2020-11-13 16:22:59.686 22.63 true 2020-11-13 16:22:49.686 22.69 true 2020-11-13 16:22:39.686 22.63 true 2020-11-13 16:22:29.692 22.69 true 2020-11-13 16:22:19.685 22.63 true 2020-11-13 16:22:09.691 22.63 true 2020-11-13 16:20:39.692 22.69 true 2020-11-13 16:20:29.685 22.63 true 2020-11-13 16:20:19.685
Wo habe ich hier den Denkfehler?
-
@Nobody28 sagte:
weil das die Werte der letzten Minuten sind:
Keine Ahnung, wo der höhere Wert herkommt. Ändere mal die Initialisierung von max
max = result.result[result.result.length - 1].val;
oder besser
aggregate: 'none'
-
-
-
Ich kann Euch gerade nicht folgen... Sorry
Ich habe alle Codesnipsel direkt nach einander hier gepostet.
Was meint Ihr bitte mit Zulu Time.
Danke
-
@Nobody28 sagte:
Was meint Ihr bitte mit Zulu Time.
Das bezog sich auf die Darstellung der Zeit im Log: Bitte ignorieren.
Ändere mal:aggregate: 'none'
-
@paul53 said in [gelöst] Result "undefined" in JS:
@Nobody28 sagte:
Was meint Ihr bitte mit Zulu Time.
Das bezog sich auf die Darstellung der Zeit im Log: Bitte ignorieren.
Ändere mal:aggregate: 'none'
Top, das war es.... die Schleife berechnet ja MAX selbstständig ==>
16:58:55.065 info javascript.0 (1297) Start javascript script.js.common.ALCAR.Test.Temp_Max 16:58:55.116 info javascript.0 (1297) script.js.common.ALCAR.Test.Temp_Max: registered 0 subscriptions and 0 schedules 16:58:55.164 info javascript.0 (1297) script.js.common.ALCAR.Test.Temp_Max: Temperatur: 22.63 °C 2020-11-13T15:58:55.164Z
die 22.63 sollten wohl stimmen.
Nun den Kram noch das ganze auf Tastendruck in einen neuen Datenpunkt speichern, damit ich das danach als CSV speichern kann. Das muss ich als nächsten Schritt suchen.
Vielen Dank bisher erstmal...
Super Forum hier
-
@Nobody28
Wenn Du anstelle der Zulu-Zeit die Ortszeit dargestellt haben möchtest, dann änderenew Date(ts).toISOString())
in
formatDate(ts, 'DD.MM.YYYY hh:mm:ss')
-
@paul53 said in [gelöst] Result "undefined" in JS:
@Nobody28
Wenn Du anstelle der Zulu-Zeit die Ortszeit dargestellt haben möchtest, dann änderenew Date(ts).toISOString())
in
formatDate(ts, 'DD.MM.YYYY hh:mm:ss')
Vielen Dank.... Funktioniert
nur der Vollständigkeithalber ==>
formatDate(ts, 'DD.MM.YYYY hh:mm:ss'))
Weil Du in deiner Codesnipsel mit dem ISOString auch die 2. Klammer drin hast.
Nur falls auch jemand nach der Änderung sich wundert, dass es nicht funktioniert