I want to convert this rule to jsr223
var Number mooncount=0
rule "moondistances"
when
Item Dummy4 changed to ON or
Item Date_distance changed // Item defined in astro.items and changed every five minutes(300 sec.) by astro.things
then
Date_Kilometer_actual.postUpdate(Date_distance.state.format("%1$ta, %1$td.%1$tb. ") + " / " + Kilometer_distance.state.format("%,.0f km").toString)
Date_Kilometer_perigee.postUpdate(Date_perigee.state.format("%1$ta, %1$td.%1$tb. ") + " / " + Kilometer_perigee.state.format("%,.0f km").toString)
Date_Kilometer_apogee.postUpdate(Date_apogee.state.format("%1$ta, %1$td.%1$tb. ") + " / " + Kilometer_apogee.state.format("%,.0f km").toString)
mooncount = mooncount + 1
if (mooncount == 1 ) { //Log every 2 hours - just to inform that rule is still alive
logInfo("astro_test-rules" + '_99'," Moondistance updated every 5 Minutes by \"astro.things \" " + Date_distance.state + " / " + mooncount + " Log every 2 hours")
}
if (mooncount >= 24) { //refresh counter
mooncount = 0
}
end
At the end of the rule is a logging-routine which shows every 2 hours that it’s still running. Therefore I declared a variable “mooncount” and initialized it with 0.
Now I try to convert it, but don’t know how to handle the routine.
At the moment the new rule looks like
from core.rules import rule
from core.triggers import when
from core.log import logging, LOG_PREFIX
@rule("Moon distance", description="Concatination of DateTime and Distance", tags=["Date", "Distance"])
@when("Item Dummy5 changed to ON")
@when("Item Date_distance changed")
def dist_concat(event):
dist_concat.log = logging.getLogger("{}.Moon distance".format(LOG_PREFIX))
events.postUpdate("Date_Kilometer_actual1", (ir.getItem("Date_distance").state.format("%1$ta, %1$td.%1$tb. ") + " / " + ir.getItem("Kilometer_distance").state.format("%,.0f km")))
events.postUpdate("Date_Kilometer_perigee1", (ir.getItem("Date_perigee").state.format("%1$ta, %1$td.%1$tb. ") + " / " + ir.getItem("Kilometer_perigee").state.format("%,.0f km")))
events.postUpdate("Date_Kilometer_apogee1", (ir.getItem("Date_apogee").state.format("%1$ta, %1$td.%1$tb. ") + " / " + ir.getItem("Kilometer_apogee").state.format("%,.0f km")))
#events.postUpdate("Update_Time", str(DateTimeType())) # just for test to see the Triggertime
#mooncount = 0
#mooncount += 1
dist_concat.log.info(" Moondistance updated every 5 Minutes by \"astro.things \" %s %s %s", event.itemState, event.itemName, mooncount)
Any hints for me to solve my problem ?