Habe nun aber ein Problem (generell / am Bsp. Bewässerung) bei dem ich wieder auf Hilfe angewiesen bin.
Ich habe die Dummy-Item "RainToday" u. "RainYesterday" erstellt um verschiedene Werte in einer mySQL-Datenbank abzulegen.
Item:
Code: Alles auswählen
Number RainToday "Rain_today [%.2f mm]"
Number RainYesterday "Rain_lastday [%.2f mm]"
Code: Alles auswählen
RainToday : strategy = everyChange, restoreOnStartup
RainYesterday : strategy = everyChange, restoreOnStartup
Jede Stunde sollen die Regenmenge (RAIN) zur Ermittlung der Gesamtmenge (vRainToday) vom Wetterdienst abgerufen (RainToday) und für die eine spätere Anzeige gespeichert werden. -> funktioniert !!!
RainYesterday soll für weitere Berechnungen in abgerufen werden! -> funktioniert nicht !!!
Rule:
Code: Alles auswählen
var Number vRainToday
var Number vRainYesterday
// -------------------------
rule "Update RainYesterday"
when
Time cron "0 59 23 * * ?" //23:59:00
then
RainYesterday.postUpdate(vRainToday) // vRainToday als RainYesterday in DB speichern
end
rule "Update RainToday"
when
Time cron "30 0 0/1 * * ?" //alle Std + 30 sek
then
// Regen (Summe seit Tagesbeginn via persistence ermitteln)
var Number vRainToday = 0
vRainToday = Rain.sumSince(now.withTimeAtStartOfDay, "mysql")
RainToday.postUpdate(vRainToday) // vRainToday als RainToday in DB speichern
// Regen gestern (Summe seit Tagesbeginn via persistence ermitteln)
var Number vRainYesterday = 0
vRainYesterday = RainYesterday.historicState(now.withTimeAtStartOfDay, "mysql").state as DecimalType // Abruf RainYesterday aus DB in
vRainYesterday für weitere Berechnungen!
logInfo(filename, "vRainYesterday (var): " + String::format("%.2f", vRainYesterday.floatValue))
logInfo(filename, "RainYesterday (item): " + (RainYesterday.state))
logInfo(filename, "Rain: " + (Rain.state))
logInfo(filename, "vRainToday (var): " + String::format("%.2f", vRainToday.floatValue))
logInfo(filename, "RainToday (item): " + (RainToday.state))
end
2019-05-01 10:00:30.029 [INFO ] [e.smarthome.model.script.RULE Garten] - vRainYesterday (var): 3.38

2019-05-01 10:00:30.031 [INFO ] [e.smarthome.model.script.RULE Garten] - RainYesterday (item): 0.810000000000000053290705182007513940334320068359375

2019-05-01 10:00:30.033 [INFO ] [e.smarthome.model.script.RULE Garten] - Rain: 0.00
2019-05-01 10:00:30.042 [INFO ] [e.smarthome.model.script.RULE Garten] - vRainToday (var): 0.02
2019-05-01 10:00:30.045 [INFO ] [e.smarthome.model.script.RULE Garten] - RainToday (item): 0.02000000000000000041633363423443370265886187553405761718750
Fazit:
vRainYesterday ruft den letzten in die DB eingetragenen Wert ab (3.38 wurde von Hand in DB eingetragen da via rule nicht automatisch geschrieben.)
RainYesterday zeigt nicht den aktuellen Status des Items an
Fragen:
Warum werden die Werte um 23:59 nicht in die DB geschrieben ?
Warum zeigt RainYesterday nicht den selben Wert wie vRainYesterday an?
wäre schön wenn mir jnd helfen kann.