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 limit von getHistory vergrößert werden.
Im Standard liest getHistory 2000 Timestamps für den Datenpunkt ein.
Die Erweiterung des Limits ist nicht im Skript darüber enthalten, sondern wurde im Objekt von getHistory eingetragen.
Das Skript funktioniert nun einwandfrei!
Ich möchte mich bei allen Herzlich bedanken für den Support!









