NEWS
Adapter history.0 auswerten für 16 Datenpunkte und 12 Monate
-
Das Objekt
jetztmacht in meinem Fall keinen Sinn mehr.
Ich passe das noch an DankeEDIT:

Das einzige was ich jetzt noch fehlt und das konnte ich noch nicht ganz ergründen.
Mutmaßlich in Abschnitten wo es keine Werte gab, ich sag mal iobroker Neustart oder Stromausfall.
Da gibt mir das Skript NaN als Ergebnis aus.
Ich denke ich müsste die Werte inresultnoch auf Plausibilität prüfen...@legendary83 sagte: Da gibt mir das Skript NaN als Ergebnis aus.
NaN kann nur dann das Ergebnis sein, wenn ts keine Zahl enthält oder nicht vorhanden ist. Gibt es solche Objekte in
result?Versuche es mal so:

-
@legendary83 sagte: Da gibt mir das Skript NaN als Ergebnis aus.
NaN kann nur dann das Ergebnis sein, wenn ts keine Zahl enthält oder nicht vorhanden ist. Gibt es solche Objekte in
result?Versuche es mal so:

Ich habe einen eingegrenzt und gefunden:

Ein Timestamp des DP war weder True noch False :astonished:
In 12 betrachteten Monaten ist das 2 mal vorgekommen.
Finale Version:

var ed, obj, result, lastValue, onTime, i, value, ts; getHistory({ id: 'ID auswählen', start: getDateObject('2025-09-01 00:00').getTime(), end: getDateObject('2024-03-01 00:00').getTime(), aggregate: 'none', removeBorderValues: true, }, async (err, result) => { if (err) { console.error(err); } else { ed = 0; if (result.length > 0) { ((obj) => { if (typeof obj === 'object') { obj['val'] = false; } })((result.slice(-1)[0])); obj = result[0]; lastValue = getAttr(obj, 'val'); if (lastValue) { onTime = getAttr(obj, 'ts'); } var i_end = result.length; var i_inc = 1; if (2 > i_end) { i_inc = -i_inc; } for (i = 2; i_inc >= 0 ? i <= i_end : i >= i_end; i += i_inc) { obj = result[(i - 1)]; value = getAttr(obj, 'val'); ts = getAttr(obj, 'ts'); if ((typeof value == 'boolean') && (typeof ts == 'number') && (value != lastValue)) { lastValue = value; if (value) { onTime = ts; } else { ed = (typeof ed === 'number' ? ed : 0) + (ts - onTime); } } } } console.info((Math.round(ed / 360000) / 10)); } });Für größere Zeiträume muss der Parameter
limitvongetHistoryvergrößert werden.
Im Standard liestgetHistory2000 Timestamps für den Datenpunkt ein.
Die Erweiterung des Limits ist nicht im Skript darüber enthalten, sondern wurde im Objekt vongetHistoryeingetragen.Das Skript funktioniert nun einwandfrei!
Ich möchte mich bei allen Herzlich bedanken für den Support!Insbesondere bei @paul53 und @David-G :heart: