NEWS
[gelöst] History Daten auslesen über Tageswechsel
-
Hallo,
ich kämpfe jetzt schon länger mit einem Problem und komm auf keine - funktionierende - Lösung, daher die Frage an die Menge, vielleicht hatte wer von euch schon mal ein ähnliches Problem:
Ich möchte gerne eine Trendlinie für den Luftdruck berechnen und ziehe dazu die letzten 40 Datensätze aus dem History Adapter heran. Das ganze mache ich, dass ich die JSON Dateien des Adapters einlese. Hier ein Auszug davon:var fs = require('fs'); var heute = formatDate(new Date(),"YYYY") + formatDate(new Date(),"MM") + formatDate(new Date(),"DD"); var id = "zigbee.0.XXXXXXXX.pressure"; var fn = "/opt/iobroker/iobroker-data/history/" + heute + "/history." + id + ".json"; var buffer = JSON.parse(fs.readFileSync(fn)); // array of objects var len = buffer.length;
Dies funktioniert hervorragend und ich kann auch alles berechnen.
Nur wenn der Tageswechsel ist (also 0 Uhr) nimmt er das neue File des neuen Tages und ich bekomme nicht mehr die letzten 40 Datensätze sondern nur z.B. die letzten 2, da im neuen File einfach noch nicht so viele Datensätze sind.
Als Lösung könnte ich natürlich die Berechnung von 0 Uhr bis ca. 3 Uhr aussetzen und erst dann wieder zu rechnen beginnen, aber das wäre nicht ideal.
Hat wer von euch schon mal so was gehabt oder hat einen Tipp für mich?
Was habe ich probiert: Ich hätte versucht das HistoryFile von heute mit dem HistoryFile von gestern zu "verknüpfen", bin aber daran kläglich gescheitert.
Danke
Klaus -
@klaus88 Hole besser die Daten mit sendTo('history.0', 'getHistory', {...}, callback)
sendTo('history.0', 'getHistory', { id: 'zigbee.0.XXXXXXXX.pressure', options: { end: Date.now(), count: 40, aggregate: 'none' } }, function (data) { for (var i = 0; i < data.result.length; i++) { // Daten auswerten } });
-
@paul53 :
Hallo Paul53
DANKE - hab schnell meinen ganzen Code umgebaut und jetzt geht es ! Danke vor allem für den Link! Den hab ich leider vorher nicht gelesen!lg und schönen Sonntag noch !
Klaus