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

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

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