ich habe bei mir eine Wetterstation die mir die aktuelle Außentemperatur anzeigt. Diesen Wert speichere ich über rrd4j.
Nun würde ich gerne zu meinem bereit vorhandenen Minimum-Wert und Maximum- Wert den Zeit Stempel.
rule "Enocean6: Temp min Wert Monat"
when
Item EnOcean_Wetter_Temp changed
then
val hmformat = java.time.format.DateTimeFormatter.ofPattern("HH:mm, yy/MM/dd")
var Min = EnOcean_Wetter_Temp.minimumSince(now.minusMonths(1), "rrd4j").state as Number
EnOcean_Wetter_Temp_Min_m_test.postUpdate(EnOcean_Wetter_Temp.minimumSince(now.minusMonths(1), "rrd4j").state as Number) + " °C (" + Min.timestamp.format(hmformat) + ")"
end
2021-02-07 13:24:56.340 [ERROR] [internal.handler.ScriptActionHandler] - Script execution of rule with UID 'enocean-6' failed: 'timestamp' is not a member of 'java.lang.Number'; line 75, column 146, length 13 in enocean
Kann mir jemand sagen wie die Regel richtig aussehen müsste?
Dank und einen schönen restlichen Sonntag
Sebastian
Na ja, ist doch klar. Du verwendest die Variable Min, der Du einen Zahlenwert zugewiesen hast und erwartest ernsthaft, dass diese Variable zusätzlich noch einen Zeitstempel hält?
rule "Enocean6: Temp min Wert Monat"
when
Item EnOcean_Wetter_Temp changed
then
val hmformat = java.time.format.DateTimeFormatter.ofPattern("HH:mm, yy/MM/dd")
val Min = EnOcean_Wetter_Temp.minimumSince(now.minusMonths(1), "rrd4j").state as Number
val MinTime = EnOcean_Wetter_Temp.minimumSince(now.minusMonths(1), "rrd4j").timestamp
EnOcean_Wetter_Temp_Min_m_test.postUpdate(Min.format("%.1f °C") + " (" + MinTime.format(hmformat) + ")")
end
openHAB4.3.6 stable in einem Debian-Container (bookworm) (Proxmox 8.4.1, LXC), mit openHABian eingerichtet
2021-02-08 21:05:36.034 [ERROR] [internal.handler.ScriptActionHandler] - Script execution of rule with UID 'test-1' failed: 'format' is not a member of 'java.lang.Number'; line 11, column 47, length 21 in test
rule "1_Test: Temp min Wert Monat"
when
Item EnOcean_Wetter_Temp changed
then
val hmformat = java.time.format.DateTimeFormatter.ofPattern("HH:mm, yy/MM/dd")
val Min = EnOcean_Wetter_Temp.minimumSince(now.minusMonths(1), "rrd4j")
val MinTime = EnOcean_Wetter_Temp.minimumSince(now.minusMonths(1), "rrd4j").timestamp
EnOcean_Wetter_Temp_Min_m_test.postUpdate(Min + " (" + MinTime.format(hmformat) + ")")
end
Dann ist wenigstens die Fehlermeldung eine andere vllt hilft das weiter:
Cannot convert '11.01.21, 03:30: EnOcean_Wetter_Temp -> -7.058823529411768 (03:30, 21/01/11)' to a state type which item 'EnOcean_Wetter_Temp_Min_m_test' accepts: [DecimalType, QuantityType, UnDefType].
Ich habe nichts davon geschrieben, .state wegzulassen. minimumSince liefert ein genericItem zurück, das heißt, es liefert sowohl Status als auch Zeitstempel, deshalb liefert eine Anfrage ohne .state beide Werte zurück.
openHAB4.3.6 stable in einem Debian-Container (bookworm) (Proxmox 8.4.1, LXC), mit openHABian eingerichtet
rule "1_Test: Temp min Wert Monat"
when
Item EnOcean_Wetter_Temp changed
then
val hmformat = java.time.format.DateTimeFormatter.ofPattern("HH:mm, yy/MM/dd")
val Min = EnOcean_Wetter_Temp.minimumSince(now.minusMonths(1), "rrd4j").state
val MinTime = EnOcean_Wetter_Temp.minimumSince(now.minusMonths(1), "rrd4j").timestamp
EnOcean_Wetter_Temp_Min_m_test.postUpdate(Min.format("%.1f °C") + " (" + MinTime.format(hmformat) + ")")
end