@codierknecht Sorry, nicht eindeutig genug ausgeführt. Der 01.01.23 war nur beispielhaft gezeigt, es gibt mehrere Daten, für die der tägliche Durchschnittsverbrauch angezeigt wird:
Gesamtes Funktionsteil sieht so aus (wird alle 60minuten aktuialisiert):
function calculateAverageConsumption(startDateString, consPast, idSetPrefix) {
const startDate = new Date(startDateString);
const year = startDate.getFullYear().toString().slice(-2); // Die letzten beiden Stellen des Jahres
const month = ('0' + (startDate.getMonth() + 1)).slice(-2); // Monat mit führender Null, um zweistellig zu sein
const day = ('0' + startDate.getDate()).slice(-2); // Tag mit führender Null, um zweistellig zu sein
const fullID = `${idSetPrefix}${year}${month}${day}`;
// console.log(fullID); // Debugging-Anweisung hinzufügen
const currentDate = new Date().valueOf();
const daysDifference = Math.round((currentDate - startDate.valueOf()) / (1000 * 60 * 60 * 24));
const consumptionDifference = getState(idGetStrombezug).val - consPast;
const averageConsumption = (Math.round((consumptionDifference / daysDifference) * 1000) / 1000).toLocaleString('de-DE', { maximumFractionDigits: 3 });
// console.log(averageConsumption);
setState(fullID, `${averageConsumption.replace(".", ",")} kWh`, true);
}
// Initialisierung der Variable, um mehrfache Aufrufe zu verhindern
if (!NRDB.averageConsumptionCalculated) {
calculateAverageConsumption("2023/01/01", 6321.6, '0_userdata.0.Zuhause.ConsPerDay');
calculateAverageConsumption("2023/07/01", 8165.5, '0_userdata.0.Zuhause.ConsPerDay');
calculateAverageConsumption("2023/09/01", 8340.0, '0_userdata.0.Zuhause.ConsPerDay');
calculateAverageConsumption("2023/11/01", 8667.0, '0_userdata.0.Zuhause.ConsPerDay');
calculateAverageConsumption("2024/01/01", 9220.3, '0_userdata.0.Zuhause.ConsPerDay');
NRDB.averageConsumptionCalculated = true;
// Setzen von NRDB.averageConsumptionCalculated auf false und Starten des Timers
setTimeout(function () {
NRDB.averageConsumptionCalculated = false;
}, 60 * 60 * 1000); // 60 Minuten in Millisekunden
}