NEWS
Aus History Adapter Mittelwert erhalten
-
Hallo!
Ich glaube ich verstehe die API vom History Adapter nicht... Ich lasse ihn die Außentemperatur loggen. Ich dachte, dass ich über die API in Javascript so den Minimalwert für einen bestimmten Zeitraum erhalte. Also hier die Minimaltemperatur.
Ich habe also etwas loggen lassen und es dann mit dem Beispiel aus der Adapter-Beschreibung (Werte der letzten Stunde) versucht. Aggregate habe ich auf min gesetzt.
var end = Date.now(); sendTo('history.0', 'getHistory', { id: 'Temp_Luftfeuchte_Sensor_Aussen.1.ACTUAL_TEMPERATURE', options: { start: end - 3600000, end: end, aggregate: 'min' } }, function (result) { for (var i = 0; i < result.result.length; i++) { console.log(result.result[i].val + ' ' + new Date(result.result[i].ts).toISOString()); } });Da kommen ein Haufen Werte zurück, aber nichts was auf einen Minimalwert schließen lässt. Kann es sein, dass ich den Adapter was das angeht falsch verstehe? Ich habe bisher überraschend wenig zum Thema History-Adapter und Minimal-/Maximal-/Durchschnittswert gefunden. Ich hätte gedacht, das wird häufiger benötigt ;-)
Wäre total nett, wenn mir jemand auf die Sprünge helfen könnte.
-
Hallo!
Ich glaube ich verstehe die API vom History Adapter nicht... Ich lasse ihn die Außentemperatur loggen. Ich dachte, dass ich über die API in Javascript so den Minimalwert für einen bestimmten Zeitraum erhalte. Also hier die Minimaltemperatur.
Ich habe also etwas loggen lassen und es dann mit dem Beispiel aus der Adapter-Beschreibung (Werte der letzten Stunde) versucht. Aggregate habe ich auf min gesetzt.
var end = Date.now(); sendTo('history.0', 'getHistory', { id: 'Temp_Luftfeuchte_Sensor_Aussen.1.ACTUAL_TEMPERATURE', options: { start: end - 3600000, end: end, aggregate: 'min' } }, function (result) { for (var i = 0; i < result.result.length; i++) { console.log(result.result[i].val + ' ' + new Date(result.result[i].ts).toISOString()); } });Da kommen ein Haufen Werte zurück, aber nichts was auf einen Minimalwert schließen lässt. Kann es sein, dass ich den Adapter was das angeht falsch verstehe? Ich habe bisher überraschend wenig zum Thema History-Adapter und Minimal-/Maximal-/Durchschnittswert gefunden. Ich hätte gedacht, das wird häufiger benötigt ;-)
Wäre total nett, wenn mir jemand auf die Sprünge helfen könnte.
@andre-wippich
Versuche es mal mitaggregate: 'min', count: 1Auf jeden Fall funktioniert es mit
aggregate: 'none'und Ermittlung des Minimums in der Schleife.
Kannst ja mal beide Versionen vergleichen. -
Hallo!
Ich glaube ich verstehe die API vom History Adapter nicht... Ich lasse ihn die Außentemperatur loggen. Ich dachte, dass ich über die API in Javascript so den Minimalwert für einen bestimmten Zeitraum erhalte. Also hier die Minimaltemperatur.
Ich habe also etwas loggen lassen und es dann mit dem Beispiel aus der Adapter-Beschreibung (Werte der letzten Stunde) versucht. Aggregate habe ich auf min gesetzt.
var end = Date.now(); sendTo('history.0', 'getHistory', { id: 'Temp_Luftfeuchte_Sensor_Aussen.1.ACTUAL_TEMPERATURE', options: { start: end - 3600000, end: end, aggregate: 'min' } }, function (result) { for (var i = 0; i < result.result.length; i++) { console.log(result.result[i].val + ' ' + new Date(result.result[i].ts).toISOString()); } });Da kommen ein Haufen Werte zurück, aber nichts was auf einen Minimalwert schließen lässt. Kann es sein, dass ich den Adapter was das angeht falsch verstehe? Ich habe bisher überraschend wenig zum Thema History-Adapter und Minimal-/Maximal-/Durchschnittswert gefunden. Ich hätte gedacht, das wird häufiger benötigt ;-)
Wäre total nett, wenn mir jemand auf die Sprünge helfen könnte.
ich stand vor einen ähnlichen Problem und habe das so gelöst:
let start = new Date(2022, 7, 15, 21, 45, 15, 352); let end = Date.now(); let idPegel = 'pegelalarm.0.stations.wendelstein.height'; let datumNiedrig; let pegelNiedrig = 1000; sendTo('history.0', 'getHistory', { id: 'pegelalarm.0.stations.wendelstein.height', options: { start: start, end: end, aggregate: 'min', count: 0 } }, function (result) { for (var i = 0; i < result.result.length; i++) { let pegel = parseFloat(result.result[i].val); if (pegel < pegelNiedrig) { datumNiedrig = formatDate(result.result[i].ts,'TT.MM.JJJJ - hh:mm') + ' Uhr'; pegelNiedrig = pegel; } } mySetState(`${idDatenpunktPrefix}.${idDatenPunktStrukturPrefix}.DatumNiedrig`, datumNiedrig, 'string', `Datum niedrigster Pegelstand`); mySetState(`${idDatenpunktPrefix}.${idDatenPunktStrukturPrefix}.PegelNiedrig`, pegelNiedrig, 'number', `Niedrigster Pegelstand`); }); -
ich stand vor einen ähnlichen Problem und habe das so gelöst:
let start = new Date(2022, 7, 15, 21, 45, 15, 352); let end = Date.now(); let idPegel = 'pegelalarm.0.stations.wendelstein.height'; let datumNiedrig; let pegelNiedrig = 1000; sendTo('history.0', 'getHistory', { id: 'pegelalarm.0.stations.wendelstein.height', options: { start: start, end: end, aggregate: 'min', count: 0 } }, function (result) { for (var i = 0; i < result.result.length; i++) { let pegel = parseFloat(result.result[i].val); if (pegel < pegelNiedrig) { datumNiedrig = formatDate(result.result[i].ts,'TT.MM.JJJJ - hh:mm') + ' Uhr'; pegelNiedrig = pegel; } } mySetState(`${idDatenpunktPrefix}.${idDatenPunktStrukturPrefix}.DatumNiedrig`, datumNiedrig, 'string', `Datum niedrigster Pegelstand`); mySetState(`${idDatenpunktPrefix}.${idDatenPunktStrukturPrefix}.PegelNiedrig`, pegelNiedrig, 'number', `Niedrigster Pegelstand`); });Danke Euch!
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