Enigma2 Binding

For those who have problems with updating the items, here is my solution with a rule! :slightly_smiling_face:
(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 * * ? * * *"