«
Rule languages has ensure_states feature
| type | name | function | 
|---|---|---|
| Dimmer | Dimmers | AVG | 
| type | name | label | group | state | 
|---|---|---|---|---|
| Dimmer | DimmerOne | Dimmer One | Dimmers | 50 | 
| Dimmer | DimmerTwo | Dimmer Two | Dimmers | 50 | 
| Number:Temperature | Temp | Temp [%d °F] | 80 | 
| item | state | 
|---|---|
| DimmerOne | <initial_state> | 
  rule "command received" do
    <trigger_type> DimmerOne
    run do |event|
      logger.info("DimmerOne <trigger_type>")
    end
  end
  DimmerOne.ensure.<command>| initial_state | command | final_state | trigger_type | |
|---|---|---|---|---|
| 0 | on | 100 | received_command | |
| 0 | << ON | 100 | received_command | |
| 0 | update(ON) | 100 | updated | |
| 0 | << 50 | 50 | received_command | |
| 0 | update(50) | 50 | updated | |
| 50 | off | 0 | received_command | |
| 50 | << OFF | 0 | received_command | |
| 50 | update(OFF) | 0 | updated | |
| 50 | << 100 | 100 | received_command | |
| 50 | update(100) | 100 | updated | |
| 100 | off | 0 | received_command | |
| 100 | << OFF | 0 | received_command | |
| 100 | << 0 | 0 | received_command | |
| 100 | update(0) | 0 | updated | |
| 100 | update(OFF) | 0 | updated | 
| item | state | 
|---|---|
| DimmerOne | <initial_state> | 
  rule "command received" do
    <trigger_type> DimmerOne
    run do |event|
      logger.info("DimmerOne <trigger_type>")
    end
  end
  DimmerOne.ensure.<command>
  logger.info("Command sent")| initial_state | command | final_state | trigger_type | |
|---|---|---|---|---|
| 0 | off | 0 | received_command | |
| 0 | << OFF | 0 | received_command | |
| 0 | << 0 | 0 | received_command | |
| 0 | update(OFF) | 0 | updated | |
| 0 | update(0) | 0 | updated | |
| 50 | on | 50 | received_command | |
| 50 | << ON | 50 | received_command | |
| 50 | << 50 | 50 | received_command | |
| 50 | update(50) | 50 | updated | |
| 100 | on | 100 | received_command | |
| 100 | << ON | 100 | received_command | |
| 100 | << 100 | 100 | received_command | |
| 100 | update(100) | 100 | updated | 
| item | state | 
|---|---|
| DimmerOne | <initial_state1> | 
| DimmerTwo | <initial_state2> | 
  rule "command received" do
    received_command DimmerOne
    run do |event|
      logger.info("DimmerOne received command")
    end
  end
  Dimmers.ensure.<command>| initial_state1 | initial_state2 | command | final_state1 | final_state2 | |
|---|---|---|---|---|---|
| 0 | 0 | on | 100 | 100 | |
| 0 | 0 | << ON | 100 | 100 | |
| 0 | 0 | << 50 | 50 | 50 | |
| 50 | 0 | off | 0 | 0 | |
| 50 | 0 | << OFF | 0 | 0 | |
| 50 | 0 | << 100 | 100 | 100 | 
| item | state | 
|---|---|
| DimmerOne | <initial_state1> | 
| DimmerTwo | <initial_state2> | 
  rule "command received" do
    received_command DimmerOne
    run do |event|
      logger.info("DimmerOne received command")
    end
  end
  Dimmers.ensure.<command>
  logger.info("Command sent")| initial_state1 | initial_state2 | command | final_state1 | final_state2 | |
|---|---|---|---|---|---|
| 0 | 0 | off | 0 | 0 | |
| 0 | 0 | << OFF | 0 | 0 | |
| 100 | 0 | << 50 | 100 | 0 | 
| item | state | 
|---|---|
| DimmerOne | <initial_state1> | 
| DimmerTwo | <initial_state2> | 
  rule "command received" do
    received_command DimmerOne
    run do |event|
      logger.info("DimmerOne received command")
    end
  end
  Dimmers.members.ensure.<command>| initial_state1 | initial_state2 | command | final_state1 | final_state2 | |
|---|---|---|---|---|---|
| 0 | 100 | on | 100 | 100 | |
| 0 | 100 | << ON | 100 | 100 | |
| 0 | 100 | << 50 | 50 | 50 | 
| item | state | 
|---|---|
| DimmerOne | 0 | 
  rule "command received" do
    <trigger_type> DimmerOne
    run do |event|
      logger.info("DimmerOne <trigger_type>")
    end
  end
  ensure_states do
    DimmerOne.<command>
  end
  logger.info("Command sent")| command | trigger_type | |
|---|---|---|
| off | received_command | |
| update(OFF) | updated | 
| type | name | state | 
|---|---|---|
| Switch | Switch1 | <initial_state> | 
  rule "command received" do
    <trigger_type> Switch1
    run do |event|
      logger.info("Switch1 <trigger_type>")
    end
  end
  Switch1.ensure.<command>
  logger.info("Command sent")| initial_state | command | trigger_type | |
|---|---|---|---|
| OFF | command false | received_command | |
| ON | command true | received_command | |
| OFF | update false | updated | |
| ON | update true | updated | 
| type | name | state | 
|---|---|---|
| Switch | Switch1 | OFF | 
  rule "command received" do
    received_command Switch1
    run do |event|
      logger.info("Switch1 received command")
    end
  end
  Switch1.ensure.update ON
  logger.info("Item updated")rule "command received" do
  received_command DimmerOne, DimmerTwo
  run do |event|
    logger.info("Dimmers received command")
  end
end
sleep 1
[DimmerOne, DimmerTwo].ensure.command <command>| command | should | |
|---|---|---|
| 50 | should not | |
| 10 | should | 
Temp.ensure << 75
sleep 1
logger.info("Temp is #{Temp.state}")