Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Select an option

  • Save Stephan-4711/0bd3af042ac2ed2805403749b652dfe8 to your computer and use it in GitHub Desktop.

Select an option

Save Stephan-4711/0bd3af042ac2ed2805403749b652dfe8 to your computer and use it in GitHub Desktop.
Homeassistant blueprint for motion-activated light scene including illuminance sensors
blueprint:
name: Yet Another Motion Automation (Custom)
description: "# YAMA V11\n\nTurn on lights or scenes when motion is detected optional with lumiance sensor. \nFour
different scenes can be defined depending on time of day.\n\nFor Details see this
forum post:\nhttps://community.home-assistant.io/t/yama-yet-another-motion-automation-scenes-ambient-light-and-some-conditions/257062?u=networkingcat\n\nCapabilitys:\n\n
- Trigger on motion (in fact can be triggered by anything that switches between
“on” and off\")\n - Wait time for turning off\n - Only run if entity is in desired
state (optional)\n - Sun elevation check (optional)\n - 4 Scenes for different
times of day (optional)\n - Ambient support with time frame (optional)\n - Default
scene when motion stops (optional)\n - “no motion blocker” with user choosable
state (optional)\n - As option one or more illumiance sensors can be used\n"
domain: automation
source_url: https://gist.github.com/Stephan-4711/0bd3af042ac2ed2805403749b652dfe8
input:
motion_entity:
name: Motion Sensor
description: Motion Sensor or a group with Motion Sensors (But can be anything
switching between "on" and "off")
selector:
entity:
multiple: true
light_target:
name: Light
selector:
target:
entity:
- domain:
- light
luminance_sensor:
name: Illuminance sensor
description: This sensor will be used to determine the illumination.
default:
selector:
entity:
domain:
- sensor
device_class:
- illuminance
multiple: true
luminance_required:
name: Required Lux Level
description: Lux level below which the automation will run.
default: 100
selector:
number:
min: 0.0
max: 10000.0
unit_of_measurement: lx
step: 1.0
mode: slider
no_motion_wait:
name: Wait time
description: Time to leave the light on after last motion is detected.
default: 120
selector:
number:
min: 0.0
max: 3600.0
unit_of_measurement: seconds
step: 1.0
mode: slider
automation_blocker:
name: Automation Blocker (Optional)
description: Only run if this boolean is in desired state (see next input)
default:
selector:
entity: {}
automation_blocker_boolean:
name: Automation Blocker Chooser (Optional)
description: Desired state of automation blocker, choose on for on and off for
off
default: false
selector:
boolean: {}
no_motion_blocker:
name: No Motion Blocker (Optional)
description: No motion sequence is not run if this boolean is in desired state
(see next input)
default:
selector:
entity: {}
no_motion_blocker_boolean:
name: No Motion Chooser (Optional)
description: Desired state of no motion blocker, choose on for on and off for
off
default: false
selector:
boolean: {}
elevation_check:
name: Sun elevation check (Optional)
description: This is the angle between the sun and the horizon. Negative values
mean the sun is BELOW the horizon.
default: none
selector:
number:
min: -90.0
max: 90.0
unit_of_measurement: degrees
step: 1.0
mode: slider
scene_ambient:
name: Ambient Scene (Optional)
description: Scene for ambient state. Will be activated when no motion is detected.
default: scene.none
selector:
entity:
domain:
- scene
multiple: false
time_scene_ambient_start:
name: Ambient time frame start (Optional)
description: Time from which on ambient scene will be activated
default: 00:00:00
selector:
time: {}
time_scene_ambient_end:
name: Ambient time frame end (Optional)
description: Time from which on ambient scene will be not activated
default: 00:00:00
selector:
time: {}
scene_morning:
name: Scene for the morning (Optional)
default: scene.none
selector:
entity:
domain:
- scene
multiple: false
time_scene_morning:
name: Time for the morning scene (Optional)
description: A time input which defines the time from which on the scene will
be activated if motion is detected.
default: 00:00:00
selector:
time: {}
scene_day:
name: Scene for the bright day (Optional)
default: scene.none
selector:
entity:
domain:
- scene
multiple: false
time_scene_day:
name: Time for the day scene (Optional)
description: A time input which defines the time from which on the scene will
be activated if motion is detected.
default: 00:00:00
selector:
time: {}
scene_evening:
name: Scene for the evening (Optional)
default: scene.none
selector:
entity:
domain:
- scene
multiple: false
time_scene_evening:
name: Time for the evening scene (Optional)
description: A time input which defines the time from which on the scene will
be activated if motion is detected.
default: 00:00:00
selector:
time: {}
scene_night:
name: Scene for the dark night (Optional)
default: scene.none
selector:
entity:
domain:
- scene
multiple: false
time_scene_night:
name: Time for the night scene (Optional)
description: A time input which defines the time from which on the scene will
be activated if motion is detectedd.
default: 00:00:00
selector:
time: {}
scene_no_motion:
name: Default scene for no motion (Optional)
description: Set this Scene if you want to activate a scene if motion stops
default: scene.none
selector:
entity:
domain:
- scene
multiple: false
mode: restart
max_exceeded: silent
variables:
scene_ambient: !input scene_ambient
scene_morning: !input scene_morning
scene_day: !input scene_day
scene_evening: !input scene_evening
scene_night: !input scene_night
automation_blocker: !input automation_blocker
automation_blocker_boolean: !input automation_blocker_boolean
no_motion_blocker: !input no_motion_blocker
no_motion_blocker_boolean: !input no_motion_blocker_boolean
elevation_check: !input elevation_check
scene_no_motion: !input scene_no_motion
motion_entity: !input motion_entity
luminance_sensor: !input luminance_sensor
luminance_required: !input luminance_required
trigger:
- platform: state
entity_id: !input motion_entity
from: 'off'
to: 'on'
- platform: state
entity_id: !input motion_entity
from: 'on'
to: 'off'
for: !input no_motion_wait
condition:
- condition: or
conditions:
- '{{ automation_blocker == none }}'
- '{{ automation_blocker_boolean and states[automation_blocker].state == ''off''
}}'
- '{{ not automation_blocker_boolean and states[automation_blocker].state == ''on''
}}'
- '{{ trigger.to_state.state == ''off'' }}'
- condition: template
value_template: '{{ (trigger.to_state.state == ''off'') or (elevation_check is none)
or (state_attr(''sun.sun'', ''elevation'') <= elevation_check | float(90)) }}'
action:
- choose:
- conditions:
- condition: template
value_template: '{{ trigger.to_state.state == ''on'' }}'
- condition: numeric_state
entity_id: !input luminance_sensor
below: !input luminance_required
sequence:
- choose:
- conditions:
- '{{ scene_morning != ''scene.none''}}'
- condition: time
after: !input time_scene_morning
before: !input time_scene_day
sequence:
- scene: !input scene_morning
- conditions:
- '{{ scene_day != ''scene.none''}}'
- condition: time
after: !input time_scene_day
before: !input time_scene_evening
sequence:
- scene: !input scene_day
- conditions:
- '{{ scene_evening != ''scene.none''}}'
- condition: time
after: !input time_scene_evening
before: !input time_scene_night
sequence:
- scene: !input scene_evening
- conditions:
- '{{ scene_night != ''scene.none''}}'
- condition: time
after: !input time_scene_night
before: !input time_scene_morning
sequence:
- scene: !input scene_night
default:
- service: light.turn_on
target: !input light_target
- conditions:
- condition: template
value_template: '{{ trigger.to_state.state == ''off'' }}'
- condition: or
conditions:
- '{{ no_motion_blocker is none }}'
- '{{ no_motion_blocker_boolean and states[no_motion_blocker].state == ''off''
}}'
- '{{ not no_motion_blocker_boolean and states[no_motion_blocker].state == ''on''
}}'
sequence:
- choose:
- conditions:
- '{{ scene_ambient != ''scene.none'' }}'
- condition: time
after: !input time_scene_ambient_start
before: !input time_scene_ambient_end
sequence:
- scene: !input scene_ambient
- conditions:
- '{{ scene_no_motion != ''scene.none'' }}'
sequence:
- scene: !input scene_no_motion
default:
- service: light.turn_off
target: !input light_target
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment