Ich möchte jeden Tag um Mitternacht die Maximal-, Minimal- und Durchschittstemperatur des vergangenen Tages erfassen. Dazu erfasst ein Außenfühler per Cron-Trigger über eine einfache ECMA-Rule alle 3 Minuten die aktuelle Temperatur und weist sie per postUpdate dem Item TempOutside zu.
Gleichfalls alle 3 Minuten wird dieses Item TempOutside in eine InfluxDB-Datenbank persistiert und in einem Grafana-Diagramm angezeigt. Das funktioniert soweit problemlos, nun soll weiters - wie eingangs erwähnt - das Maximum, das Minimum und der Durchschnitt dieser Zeitreihe pro Tag errechnet werden.
Dazu ist folgendes (vereinfachtes) Skript Test4 vorgesehen:
Code: Alles auswählen
//Script Test4
var logger = Java.type('org.slf4j.LoggerFactory').getLogger('org.openhab.rule.' + ctx.ruleUID);
var pE = Java.type('org.openhab.core.persistence.extensions.PersistenceExtensions');
var zDT = Java.type('java.time.ZonedDateTime');
var item1 = ir.getItem('TempOutside');
var minTemp = pE.minimumSince(item1, zDT.now().minusHours(24));
var meanTemp = pE.averageSince(item1, zDT.now().minusHours(24));
var maxTemp = pE.maximumSince(item1, zDT.now().minusHours(24));
logger.info("Test4: " + meanTemp.toString());
2023-03-30 18:28:51.551 [WARN ] [e.automation.internal.RuleEngineImpl] - Fail to execute action: script
java.lang.IllegalArgumentException: Cannot format given Object as a Date
und eine ellenlange Liste weiterer, mir nichtssagender Meldungen.
Merkwürdigerweise funktioniert das Skript auch für
pE.varianceSince(item1, zDT.now().minusHours(24)) und
pE.deviationSince(item1, zDT.now().minusHours(24)) korrekt, nicht aber eben für
pE.minimumSince(item1, zDT.now().minusHours(24)) und
pE.maximumSince(item1, zDT.now().minusHours(24))
Was ist hier los?
Bin für jede Hilfe dankbar!
Gruß kaiserdom