-
-
Save reinder83/8c5838c16af8f6ec3d7cb5258444b8b8 to your computer and use it in GitHub Desktop.
blueprint: | |
name: Motion-activated Light with Elevation | |
domain: automation | |
source_url: https://gist.github.com/reinder83/8c5838c16af8f6ec3d7cb5258444b8b8 | |
input: | |
motion_entity: | |
name: Motion Sensor | |
selector: | |
entity: | |
domain: binary_sensor | |
device_class: motion | |
light_target: | |
name: Light | |
selector: | |
target: | |
entity: | |
domain: light | |
no_motion_wait: | |
name: Wait time | |
description: Time to wait until the light should be turned off. | |
default: 120 | |
selector: | |
number: | |
min: 0.0 | |
max: 3600.0 | |
unit_of_measurement: seconds | |
step: 1.0 | |
mode: slider | |
below_elevation: | |
name: Below sun elevation | |
description: Solar elevation. This is the angle between the sun and the horizon. | |
Negative values mean the sun is below the horizon. | |
default: 3 | |
selector: | |
number: | |
min: -90.0 | |
max: 90.0 | |
unit_of_measurement: degrees | |
step: 1.0 | |
mode: slider | |
mode: restart | |
max_exceeded: silent | |
trigger: | |
platform: state | |
entity_id: !input 'motion_entity' | |
from: 'off' | |
to: 'on' | |
variables: | |
below_elevation: !input 'below_elevation' | |
condition: | |
- '{{ state_attr(''sun.sun'',''elevation'') <= (below_elevation | float)}}' | |
action: | |
- service: light.turn_on | |
target: !input 'light_target' | |
- wait_for_trigger: | |
platform: state | |
entity_id: !input 'motion_entity' | |
from: 'on' | |
to: 'off' | |
- delay: !input 'no_motion_wait' | |
- service: light.turn_off | |
target: !input 'light_target' |
you could adjust the blueprint a bit after importing it, change the domain to script here:
light_target:
name: Light
selector:
target:
entity:
domain: light
to
script_target:
name: Script
selector:
target:
entity:
domain: script
and
- service: light.turn_on
target: !input 'light_target'
to
- service: !input 'script_target'
Thanks for your reply. I created another blueprint one to initiate scripts and your original for lights but with the changes I keep getting the following error in my logs and it doesn't work :-(
Blueprint Motion-activated script with Elevation generated invalid automation with inputs OrderedDict([('motion_entity', 'binary_sensor.kitchen'), ('below_elevation', 70), ('script_target', OrderedDict([('entity_id', 'script.kitchen_light')]))]): value should be a string for dictionary value @ data['action'][0]['service']. Got None
Blueprint Motion-activated script with Elevation generated invalid automation with inputs OrderedDict([('motion_entity', 'binary_sensor.kitchen'), ('below_elevation', 70), ('script_target', OrderedDict([('entity_id', ['script.kitchen_light', 'script.kitchen_light'])]))]): value should be a string for dictionary value @ data['action'][0]['service']. Got None
Blueprint Motion-activated script with Elevation generated invalid automation with inputs OrderedDict([('motion_entity', 'binary_sensor.kitchen'), ('script_target', OrderedDict([('entity_id', 'script.kitchen_light')]))]): value should be a string for dictionary value @ data['action'][0]['service']. Got None
Blueprint Motion-activated script with Elevation generated invalid automation with inputs OrderedDict([('script_target', OrderedDict([('entity_id', 'script.kitchen_light')])), ('motion_entity', 'binary_sensor.kitchen')]): value should be a string for dictionary value @ data['action'][0]['service']. Got None
Blueprint Motion-activated script with Elevation generated invalid automation with inputs OrderedDict([('motion_entity', 'binary_sensor.kitchen'), ('script_target', OrderedDict([('entity_id', 'script.kitchen_light')])), ('below_elevation', 84)]): value should be a string for dictionary value @ data['action'][0]['service']. Got None
Thanks for your reply. I created another blueprint one to initiate scripts and your original for lights but with the changes I keep getting the following error in my logs and it doesn't work :-(
Blueprint Motion-activated script with Elevation generated invalid automation with inputs OrderedDict([('motion_entity', 'binary_sensor.kitchen'), ('below_elevation', 70), ('script_target', OrderedDict([('entity_id', 'script.kitchen_light')]))]): value should be a string for dictionary value @ data['action'][0]['service']. Got None
Blueprint Motion-activated script with Elevation generated invalid automation with inputs OrderedDict([('motion_entity', 'binary_sensor.kitchen'), ('below_elevation', 70), ('script_target', OrderedDict([('entity_id', ['script.kitchen_light', 'script.kitchen_light'])]))]): value should be a string for dictionary value @ data['action'][0]['service']. Got None
Blueprint Motion-activated script with Elevation generated invalid automation with inputs OrderedDict([('motion_entity', 'binary_sensor.kitchen'), ('script_target', OrderedDict([('entity_id', 'script.kitchen_light')]))]): value should be a string for dictionary value @ data['action'][0]['service']. Got None
Blueprint Motion-activated script with Elevation generated invalid automation with inputs OrderedDict([('script_target', OrderedDict([('entity_id', 'script.kitchen_light')])), ('motion_entity', 'binary_sensor.kitchen')]): value should be a string for dictionary value @ data['action'][0]['service']. Got None
Blueprint Motion-activated script with Elevation generated invalid automation with inputs OrderedDict([('motion_entity', 'binary_sensor.kitchen'), ('script_target', OrderedDict([('entity_id', 'script.kitchen_light')])), ('below_elevation', 84)]): value should be a string for dictionary value @ data['action'][0]['service']. Got None
I tried it myself and it's working fine, I created another gist with it: https://gist.github.com/reinder83/2afd18c0f9736b045d8db755d6a11bc0
That is great thanks for your time and effort. I think I have messed something up in home assistant as I can see a new automation generated from this blueprint in the automation config file but it is not showing in the UI and it is also not functioning. Trying to find an error in the logs somewhere.
Not an expert but trying to initiate an existing script rather than a light to activate on a motion. Is it just the target: !input that is limiting me being able to select a script? Thanks