Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
Set gist URL
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'
@LankyGit1
Copy link

LankyGit1 commented Aug 12, 2021

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

@reinder83
Copy link
Author

reinder83 commented Aug 15, 2021

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'

@LankyGit1
Copy link

LankyGit1 commented Aug 15, 2021

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

@reinder83
Copy link
Author

reinder83 commented Aug 15, 2021

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

@LankyGit1
Copy link

LankyGit1 commented Aug 16, 2021

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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment