Execute any service (turn on switch/light/scene/scripts etc., even run another automation) based on any entity's state change (motion sensor, illuminance, sun rise/set)

After updating to this version I now have different issue. For some reason the light never turns on (I checked motion sensor is working fine)

    - id: <some identifier>
      alias: <human readable alias>
      description: ''
      use_blueprint:
        path: kevinxw/state_based_entity_control.yaml
        input:
          trigger_entity: binary_sensor.<entity id of my motion sensor>
          target_entity: light.<entity id of my light to turn on/off>
          alt_trigger_timeout: '18:00:00-22:00:00,00:10:00;05:00:00-08:00:00,00:10:00'
          trigger_timeout: '60'
          blocker_entity: switch.control_mode
          blocker_entity_state: 'off'
          timeout_blocker_entity: switch.control_mode
          timeout_blocker_entity_state: 'off'
          sun_elevation_below: 7

Are you using the latest home assistant? If yes, you can go to the corresponding automation and click “show trace”. At the trigger layer click “show changed variables”, from there I can tell what conditions are not met.

When motion detected it triggers twice:
First:

trigger:
  platform: state
  entity_id: binary_sensor.0x00158d000462dce1_occupancy
  from_state:
    entity_id: binary_sensor.0x00158d000462dce1_occupancy
    state: 'off'
    attributes:
      battery: 100
      linkquality: 63
      occupancy: false
      voltage: 3035
      friendly_name: Кухня движение
      device_class: motion
    last_changed: '2021-05-05T12:17:02.154532+00:00'
    last_updated: '2021-05-05T12:17:02.154532+00:00'
    context:
      id: 3e6061e9c4ff1cb4b344b90f2779a001
      parent_id: null
      user_id: null
  to_state:
    entity_id: binary_sensor.0x00158d000462dce1_occupancy
    state: 'off'
    attributes:
      battery: 100
      linkquality: 60
      occupancy: true
      voltage: 3035
      friendly_name: Кухня движение
      device_class: motion
    last_changed: '2021-05-05T12:17:02.154532+00:00'
    last_updated: '2021-05-05T12:17:37.664541+00:00'
    context:
      id: bb10af1eed3e511a0c34cfa20f57b354
      parent_id: null
      user_id: null
  for: null
  attribute: null
  description: state of binary_sensor.0x00158d000462dce1_occupancy
  id: '2'
_target_entity: light.switch_kitchen_0x00158d00054408ee
target_entity: light.switch_kitchen_0x00158d00054408ee
_target_entity_off: null
target_entity_off: light.switch_kitchen_0x00158d00054408ee
_target_entity_state: 'on'
target_entity_state: 'on'
_target_entity_action_on: homeassistant.turn_on
target_entity_action_on: homeassistant.turn_on
_target_entity_action_off: homeassistant.turn_off
target_entity_action_off: homeassistant.turn_off
_trigger_entity: binary_sensor.0x00158d000462dce1_occupancy
trigger_entity: binary_sensor.0x00158d000462dce1_occupancy
_trigger_entity_state: 'on'
trigger_entity_state: 'on'
_trigger_entity_state_off: null
trigger_entity_state_off: ''
_trigger_timeout: '60'
illuminance_sensor: null
illuminance_below: null
blocker_entity: switch.control_mode
_blocker_entity_state: 'off'
blocker_entity_state: 'off'
timeout_blocker_entity: switch.control_mode
_timeout_blocker_entity_state: 'off'
timeout_blocker_entity_state: 'off'
_alt_trigger_timeouts: null
_alt_trigger_timeout: ''
trigger_timeout: 60
_execution_time_ranges: null
execution_time_ranges: ''
execution_time_range_matched: ''
trigger_entities_available: 'binary_sensor.0x00158d000462dce1_occupancy:on;'
trigger_entities_matched: 'binary_sensor.0x00158d000462dce1_occupancy:on;'
trigger_entities_off_matched: ''
target_entities_matched: 'light.switch_kitchen_0x00158d00054408ee:on;'
triggered_entity: binary_sensor.0x00158d000462dce1_occupancy
sun_elevation_below: 7

second:

trigger:
  platform: state
  entity_id: binary_sensor.0x00158d000462dce1_occupancy
  from_state:
    entity_id: binary_sensor.0x00158d000462dce1_occupancy
    state: 'off'
    attributes:
      battery: 100
      linkquality: 60
      occupancy: true
      voltage: 3035
      friendly_name: Кухня движение
      device_class: motion
    last_changed: '2021-05-05T12:17:02.154532+00:00'
    last_updated: '2021-05-05T12:17:37.664541+00:00'
    context:
      id: bb10af1eed3e511a0c34cfa20f57b354
      parent_id: null
      user_id: null
  to_state:
    entity_id: binary_sensor.0x00158d000462dce1_occupancy
    state: 'on'
    attributes:
      battery: 100
      linkquality: 60
      occupancy: true
      voltage: 3035
      friendly_name: Кухня движение
      device_class: motion
    last_changed: '2021-05-05T12:17:37.667543+00:00'
    last_updated: '2021-05-05T12:17:37.667543+00:00'
    context:
      id: 7f61e27a5e04bd9c07de4ad18618a6db
      parent_id: null
      user_id: null
  for: null
  attribute: null
  description: state of binary_sensor.0x00158d000462dce1_occupancy
  id: '2'
_target_entity: light.switch_kitchen_0x00158d00054408ee
target_entity: light.switch_kitchen_0x00158d00054408ee
_target_entity_off: null
target_entity_off: light.switch_kitchen_0x00158d00054408ee
_target_entity_state: 'on'
target_entity_state: 'on'
_target_entity_action_on: homeassistant.turn_on
target_entity_action_on: homeassistant.turn_on
_target_entity_action_off: homeassistant.turn_off
target_entity_action_off: homeassistant.turn_off
_trigger_entity: binary_sensor.0x00158d000462dce1_occupancy
trigger_entity: binary_sensor.0x00158d000462dce1_occupancy
_trigger_entity_state: 'on'
trigger_entity_state: 'on'
_trigger_entity_state_off: null
trigger_entity_state_off: ''
_trigger_timeout: '60'
illuminance_sensor: null
illuminance_below: null
blocker_entity: switch.control_mode
_blocker_entity_state: 'off'
blocker_entity_state: 'off'
timeout_blocker_entity: switch.control_mode
_timeout_blocker_entity_state: 'off'
timeout_blocker_entity_state: 'off'
_alt_trigger_timeouts: null
_alt_trigger_timeout: ''
trigger_timeout: 60
_execution_time_ranges: null
execution_time_ranges: ''
execution_time_range_matched: ''
trigger_entities_available: 'binary_sensor.0x00158d000462dce1_occupancy:on;'
trigger_entities_matched: 'binary_sensor.0x00158d000462dce1_occupancy:on;'
trigger_entities_off_matched: ''
target_entities_matched: 'light.switch_kitchen_0x00158d00054408ee:on;'
triggered_entity: binary_sensor.0x00158d000462dce1_occupancy
sun_elevation_below: 7

The light did not turned on

It’s weird. Could you check the light’s state in Developer Tool in Home Assistant when it happens?
The trace info you posted showed the light.switch_kitchen_0x00158d00054408ee is already on

Thanks. You were right. The problem was not in automation or blueprint, it was in switch hardware. I reset the switch and it started working.

PROBLEM / BUG: Optional condition is not re-evaluated

Situation:
I have a trigger entity (presence sensor) and an illuminance sensor.

Problem:
automation is triggered on every trigger entity state change (good), BUT the illuminance sensor value is not re-evaluated anymore:

In detail:

  • It’s dark. I enter the room, light (target entity) is being turned on. Good.
  • Now after some time while still in the room and constantly triggering the automation (presence sensor/trigger entity) it’s getting bright so we jump over the illuminance sensor threshold.
  • BUT the light is still and stays on!
  • I need to either manually turn it off once or leave the room until the light gets turned off automatically (timeout).
  • After that, on next automation trigger the illuminance sensor value is correctly re-evaluated and light stays off.

So it looks like only the trigger entity is monitored OR the illuminance sensor is only used ONCE (on first automation trigger).

We could have a deeper look at this by diving into the automation trace logs but hopefully you can confirm and fix this without more data.

@kevinxw: Let me know if you need more information, consider this as a bug you can confirm or maybe something with my automation configuration is totally wrong.

This behavior is exactly what I expected. It make no sense to me that if a people enter a room when it’s dark, then the light got turned on so it’s no longer dark enough, and the light got turned off… you will find yourself in a loop of the “light on → light off → light on” situation.

This blueprint is great! Only thing I’d love to add, is being able to send data to the turn_on service. Specifically, I’d love to be able to set the brightness of the lights to a number which is derived from a calculation based off of my light sensor. So that when it’s very dark (middle of the night), it sets brightness to 10%, but when it’s just slightly dark, set it to 30%.

Something like (sensor.light_sensor.state / 10) * 3

OK. When I enter the room and it’s dark, light turns on. But NOW I
a) open the blinds or
b) switch on another light manually or
c) …
and it’s not dark anymore, but light is still on.

It also depends where you locate the illuminance sensor.

While I understand the basic deadlock situation, on the other hand there are use cases where it is annoying. Therefore I propose to add a „take optional brightness sensor into account“ option, turned off by default. If activated, entity is used together with trigger entity to decide if target entity will be changed.

Is it possible to implement this please @kevinxw ?

Better use integrations like „Adaptive Lighting“ for this.

Cool, thanks - I’ll look into it.

This sounds like a great feature as I have dimmable lights. I will add it when I have time.

It makes sense in your case. I will implement a toggle later.

1 Like

Great to hear! Thank you very much. I´m pleased to help by testing a new version.

This is a bit more complicated than I expected. It will not be a simple flag to tell the automation to always respect the illuminance sensor. If I do this, then the moment the light is turned on, illuminance sensor will return a value above the threshold, then the light will be off immediately. You will see the light flashing in this case. I need to think about some sort of timeout in this case, which means more conditions to consider.

Hello,

I’m quite new to HA and really appreciate the blueprints, what a great idea to be able to share automations! I’m hoping you might be able to help me as I try to figure out where I’m going wrong with the automation.

What I’d like to do is turn on a light switch when a contact sensor is open and then turn the switch off when the sensor is closed. If I’m understanding the automation correctly this should be able to be done inside of the single automation and I shouldn’t need to create a second “off” automation.

Share my yaml file that was created from the automation

alias: Late Night Snack Lights
description: ''
use_blueprint:
  path: kevinxw/state_based_entity_control.yaml
  input:
    trigger_entity: binary_sensor.lumi_lumi_sensor_magnet_aq2_on_off
    trigger_entity_state: 'On'
    target_entity: light.living_room_lamp
    trigger_timeout: '00:05:00'
    target_entity_state: none
    target_entity_action_on: homeassistant.turn_on
    target_entity_action_off: homeassistant.turn_off
    trigger_entity_state_off: 'Off'
    target_entity_off: light.living_room_lamp

Appreciate any help/guidance you might be able to offer, thank you!

Hi James,

I believe you only need the following


alias: Late Night Snack Lights
description: ''
use_blueprint:
  path: kevinxw/state_based_entity_control.yaml
  input:
    trigger_entity: binary_sensor.lumi_lumi_sensor_magnet_aq2_on_off
    target_entity: light.living_room_lamp
    trigger_timeout: '00:05:00'

This will turn off your light 5 minutes after your door is closed. Let me know if it works.

1 Like

Thanks for the advise, Kevin. I think what I was looking for was a way to turn off the light when the sensor is closed rather than a timeout, would that still be possible with this blueprint?

Yes. Just put 0 to the timeout.

Hi - I’m facing issues using entities in the automation but direct values work.

I’m trying to use ‘Illuminance Below’ with input_number however the automation fails conditions. If I replace the entity with a value it works.

I’m getting a similar error using an input_number for trigger timeout. The automation complains it’s not in the correct format, e.g. ‘HH:MM’ but it is. If I use ‘10’ in the automation it works, but ‘00:10’ in the input_number complains:

Error: offset input_text.motion_attic_timer should be format 'HH:MM', 'HH:MM:SS' or 'HH:MM:SS.F'

Are input_number’s supported in the automation or do I need to use values? Was hoping to create a dashboard to easily change the values.

Thanks for any help - awesome blueprint by the way