blueprint: name: Presence-activated-Light description: Turn on a light when presence is detected domain: automation author: Tiziano Trabattoni input: presence_entity1: name: presence-sensor1 description: First Sensor presence entity selector: entity: filter: device_class: occupancy domain: binary_sensor light_target: name: Light description: Entity of the Lamp to be controlled selector: target: entity: domain: light use_sun: name: Sun_driven description: Controlled by sunrise and sunset flag default: on selector: boolean: dont_disturb: name: dont_disturb_light_control description: Controls if lamp brightness has to be reduced to not disturb default: on selector: boolean: no_presence_wait: name: Wait time description: Time to leave the light on after last presence is detected. default: 20 selector: number: min: 0 max: 300 unit_of_measurement: seconds # Every motion state change is captured and managed by the script therefore we need to restart by queueing triggers # in this automation the poweroff of light is started only if all managed motion sensor are in clear state (= "off") mode: queued max_exceeded: silent triggers: - trigger: state entity_id: !input presence_entity1 from: "off" to: "on" id: presence_entity1_on - trigger: state entity_id: !input presence_entity1 from: "on" to: "off" id: presence_entity1_off variables: use_sun_flag: !input use_sun dont_disturb_flag: !input dont_disturb light_target_var: !input light_target presence_entity1_var: !input presence_entity1 actions: - choose: # Conditions for triggering on light - conditions: - condition: trigger id: - presence_entity1_on # - presence_entity2_on # - presence_entity3_on sequence: - if: - condition: template value_template: "{{ use_sun_flag }}" then: # Sun and luminescence controlled - if: - or: # external light is LOW (below Helper daylight_luminescence set value) - condition: template value_template: "{{ ( states('sensor.esterno_luminosita_illuminance_lux') | int ) < ( states('input_number.daylight_luminescence') | int ) }}" # after sunrise and before sunset - condition: sun after: sunset after_offset: "-01:00:00" before: sunrise before_offset: "+01:00:00" then: - if: - and: - condition: template value_template: "{{ dont_disturb_flag }}" - condition: template value_template: "{{ is_state('binary_sensor.dont_disturb_nighttime', 'on') }}" then: - action: light.turn_on target: !input light_target data: brightness_pct: "{{ states('input_number.dont_disturb_light_brightness') | float }}" color_temp_kelvin: 2500 else: - action: light.turn_on target: !input light_target data: brightness_pct: 100 color_temp_kelvin: 2500 else: # Always active - if: - and: - condition: template value_template: "{{ dont_disturb_flag }}" - condition: template value_template: "{{ is_state('binary_sensor.dont_disturb_nighttime', 'on') }}" then: - action: light.turn_on target: !input light_target data: brightness_pct: "{{ states('input_number.dont_disturb_light_brightness') | float }}" color_temp_kelvin: 2500 else: - action: light.turn_on target: !input light_target data: brightness_pct: 100 color_temp_kelvin: 2500 # conditions for triggering off lights - conditions: - condition: trigger id: - presence_entity1_off # - presence_entity2_off # - presence_entity3_off sequence: - if: - alias: "None of motion sensor are detected" condition: not conditions: - condition: template value_template: "{{ is_state(presence_entity1_var, 'on') }}" # - condition: template # value_template: "{{ is_state(presence_entity2_var, 'on') }}" # - condition: template # value_template: "{{ is_state(presence_entity3_var, 'on') }}" then: - alias: "Wait for delay set before turn off" delay: !input no_presence_wait - alias: "Turn off the light" action: light.turn_off target: !input light_target