For those who have problems with updating the items, here is my solution with a rule!
(without the Enigma Binding)
Needed Binding / Transformation Service
– http-binding
– RegEx Transformation
Used Items
– enigma_power_switch <-- Switch
– enigma_power_state <-- String
– enigma_channel_state <-- String
– enigma_event_state <-- String
– enigma_eventdescription_state <-- String
var String enigma_ip = "10.10.80.110"
rule "Enigma2 State"
when
Time cron "0/30 * * ? * * *"
then
var String powerStateEnigmaLong = executeCommandLine("curl -s http://" + enigma_ip + "/web/powerstate", 5000)
var String powerStateEnigma = transform("REGEX", ".*?<e2instandby>\n(.*?)\t</e2instandby>.*", powerStateEnigmaLong)
var String ChannelStateEnigmaLong
var String ChannelStateEnigma
var String EventStateEnigma
var String EventDescriptionStateEnigma
if (powerStateEnigma == "false") {
enigma_power_state.postUpdate("Power ON")
if (enigma_power_switch.state != ON) enigma_power_switch.postUpdate(ON)
Thread::sleep(1000)
ChannelStateEnigmaLong = executeCommandLine("curl -s http://" + enigma_ip + "/web/getcurrent", 5000)
ChannelStateEnigma = transform("REGEX", ".*?<e2servicename>(.*?)</e2servicename>.*", ChannelStateEnigmaLong)
EventStateEnigma = transform("REGEX", ".*?<e2eventname>(.*?)</e2eventname>.*", ChannelStateEnigmaLong)
EventDescriptionStateEnigma = transform("REGEX", ".*?<e2eventdescriptionextended>(.*?)</e2eventdescriptionextended>.*", ChannelStateEnigmaLong)
enigma_channel_state.postUpdate(ChannelStateEnigma)
enigma_event_state.postUpdate(EventStateEnigma)
enigma_eventdescription_state.postUpdate(EventDescriptionStateEnigma)
} else if (powerStateEnigma == "true") {
enigma_power_state.postUpdate("Standby")
if (enigma_power_switch.state != OFF) enigma_power_switch.postUpdate(OFF)
Thread::sleep(1000)
ChannelStateEnigmaLong = executeCommandLine("curl -s http://" + enigma_ip + "/web/getcurrent", 5000)
ChannelStateEnigma = transform("REGEX", ".*?<e2servicename>(.*?)</e2servicename>.*", ChannelStateEnigmaLong)
EventStateEnigma = transform("REGEX", ".*?<e2eventname>(.*?)</e2eventname>.*", ChannelStateEnigmaLong)
EventDescriptionStateEnigma = transform("REGEX", ".*?<e2eventdescriptionextended>(.*?)</e2eventdescriptionextended>.*", ChannelStateEnigmaLong)
enigma_channel_state.postUpdate(ChannelStateEnigma)
enigma_event_state.postUpdate(EventStateEnigma)
enigma_eventdescription_state.postUpdate(EventDescriptionStateEnigma)
} else {
enigma_power_state.postUpdate("Power OFF")
if (enigma_power_switch.state != OFF) enigma_power_switch.postUpdate(OFF)
enigma_channel_state.postUpdate("N/A")
enigma_event_state.postUpdate("N/A")
enigma_eventdescription_state.postUpdate("N/A")
}
end
rule "Enigma2 Power Switch"
when
Item enigma_power_switch received command
then
var String ChannelStateEnigmaLong
var String ChannelStateEnigma
var String EventStateEnigma
var String EventDescriptionStateEnigma
if(receivedCommand == ON) {
executeCommandLine("curl -s http://" + enigma_ip + "/web/powerstate?newstate=4")
enigma_power_state.postUpdate("Power ON")
Thread::sleep(1000)
ChannelStateEnigmaLong = executeCommandLine("curl -s http://" + enigma_ip + "/web/getcurrent", 5000)
ChannelStateEnigma = transform("REGEX", ".*?<e2servicename>(.*?)</e2servicename>.*", ChannelStateEnigmaLong)
EventStateEnigma = transform("REGEX", ".*?<e2eventname>(.*?)</e2eventname>.*", ChannelStateEnigmaLong)
EventDescriptionStateEnigma = transform("REGEX", ".*?<e2eventdescriptionextended>(.*?)</e2eventdescriptionextended>.*", ChannelStateEnigmaLong)
enigma_channel_state.postUpdate(ChannelStateEnigma)
enigma_event_state.postUpdate(EventStateEnigma)
enigma_eventdescription_state.postUpdate(EventDescriptionStateEnigma)
} else if(receivedCommand == OFF) {
executeCommandLine("curl -s http://" + enigma_ip + "/web/powerstate?newstate=5")
enigma_power_state.postUpdate("Standby")
Thread::sleep(1000)
ChannelStateEnigmaLong = executeCommandLine("curl -s http://" + enigma_ip + "/web/getcurrent", 5000)
ChannelStateEnigma = transform("REGEX", ".*?<e2servicename>(.*?)</e2servicename>.*", ChannelStateEnigmaLong)
EventStateEnigma = transform("REGEX", ".*?<e2eventname>(.*?)</e2eventname>.*", ChannelStateEnigmaLong)
EventDescriptionStateEnigma = transform("REGEX", ".*?<e2eventdescriptionextended>(.*?)</e2eventdescriptionextended>.*", ChannelStateEnigmaLong)
enigma_channel_state.postUpdate(ChannelStateEnigma)
enigma_event_state.postUpdate(EventStateEnigma)
enigma_eventdescription_state.postUpdate(EventDescriptionStateEnigma)
}
end
Play with the Time cron to find the best Solution for your SetUp … the Time cron in this Example corresponds to a refresh interval of 30 seconds
Every 15 seconds
Time cron "0/15 * * ? * * *"
Every 30 seconds
Time cron "0/30 * * ? * * *"
Every 45 seconds
Time cron "0/45 * * ? * * *"
Every 60 seconds
Time cron "0 * * ? * * *"