Hi,
I’m trying to develop a rule with an jsr233 script. (It’s a test)
When a contact is opened, I would like to start a timer.
After the timer is finished, I would like to log a message.
And here’s my script:
from org.slf4j import LoggerFactory
from threading import Timer
scriptExtension.importPreset("RuleSimple")
scriptExtension.importPreset("RuleSupport")
class ContactRule(SimpleRule):
def __init__(self, contact):
self.timer = None
self.itemName = contact
self.logger = LoggerFactory.getLogger("org.eclipse.smarthome.automation.ContactRule")
self.triggers = [Trigger("MyTrigger", "core.ItemStateUpdateTrigger", Configuration({ "itemName": contact}))]
def timerEval(self):
self.logger.info(self.itemName + ' ist immer noch offen.')
def execute(self, module, inputs):
triggerItemState = inputs['event'].getItemState()
if triggerItemState == OpenClosedType.OPEN:
self.logger.info(self.itemName + ': Timer gestartet.')
self.timer = Timer(DateTime.now().plusMinutes(10), self.timerEval).start()
else:
if self.timer:
self.logger.info(self.itemName + ': Timer gestoppt.')
self.timer.cancel()
self.timer = None
automationManager.addRule(ContactRule("th_co_wz_couch_State"))
The command “self.logger.info(self.itemName + ‘: Timer gestartet.’)” is executed, but after that an error occured. In openhab.log I found the following messages:
2018-05-02 23:25:06.982 [INFO ] [pse.smarthome.automation.ContactRule] - th_co_wz_couch_State: Timer gestartet.
2018-05-02 23:25:06.983 [ERROR] [.automation.core.internal.RuleEngine] - Failed to execute rule ‘9c944bcb-d17c-4104-83e6-d62e04a31cb1’: Failed to execute action ‘1’: null
Where’s my error?
Kind regards
Thomas