First commit, yay
This commit is contained in:
commit
7b37258f22
231
motion-activated-light.yaml
Normal file
231
motion-activated-light.yaml
Normal file
@ -0,0 +1,231 @@
|
||||
|
||||
|
||||
blueprint:
|
||||
|
||||
name: "Mike's Motion Activated Light"
|
||||
description: "Turn lights on or off based on motion, plus an increasing delay when motion is continuously detected."
|
||||
domain: automation
|
||||
input:
|
||||
|
||||
motion_sensor:
|
||||
name: Motion Sensor
|
||||
description: Entity ID of the motion sensor
|
||||
selector:
|
||||
entity:
|
||||
domain: binary_sensor
|
||||
|
||||
delay_seconds_helper:
|
||||
name: Delay seconds (helper)
|
||||
description: The delay before the motion-off sequence will be initiated. Must be a helper so it can persist across activations.
|
||||
selector:
|
||||
entity:
|
||||
domain: input_number
|
||||
|
||||
delay_seconds_default:
|
||||
name: Default delay seconds
|
||||
description: The default delay before the motion-off sequence begins. Will be used to reset the running delay.
|
||||
default: 30
|
||||
selector:
|
||||
number:
|
||||
min: 1
|
||||
max: 86400
|
||||
step: 1
|
||||
mode: box
|
||||
|
||||
notice_seconds:
|
||||
name: Notice seconds
|
||||
description: "The number of seconds to wait in the Prep1 (Notice) scene."
|
||||
default: 15
|
||||
selector:
|
||||
number:
|
||||
min: 1
|
||||
max: 86400
|
||||
step: 1
|
||||
mode: box
|
||||
|
||||
warning_seconds:
|
||||
name: Warning seconds
|
||||
description: "The number of seconds to wait in the Prep2 (Warning) scene."
|
||||
default: 15
|
||||
selector:
|
||||
number:
|
||||
min: 1
|
||||
max: 86400
|
||||
step: 1
|
||||
mode: box
|
||||
|
||||
scene_on:
|
||||
name: On Scene
|
||||
description: The scene to activate when motion is detected
|
||||
selector:
|
||||
entity:
|
||||
domain: scene
|
||||
|
||||
scene_off_prep_1:
|
||||
name: Off Prep Scene 1 (Notice)
|
||||
description: The first scene to activate when motion is no longer detected (notice phase).
|
||||
selector:
|
||||
entity:
|
||||
domain: scene
|
||||
|
||||
scene_off_prep_2:
|
||||
name: Off Prep Scene 2 (Warning)
|
||||
description: The second scene to activate when motion is no longer detected (warning phase).
|
||||
selector:
|
||||
entity:
|
||||
domain: scene
|
||||
|
||||
scene_off:
|
||||
name: Off Scene
|
||||
description: "The scene to activate when the user has failed to produce motion, and the light should be considered \"off\"."
|
||||
selector:
|
||||
entity:
|
||||
domain: scene
|
||||
|
||||
variables:
|
||||
|
||||
motion_sensor: !input motion_sensor
|
||||
delay_seconds: !input delay_seconds_helper
|
||||
delay_seconds_default: !input delay_seconds_default
|
||||
notice_seconds: !input notice_seconds
|
||||
warning_seconds: !input warning_seconds
|
||||
|
||||
trigger:
|
||||
|
||||
- platform: state
|
||||
entity_id:
|
||||
- !input motion_sensor
|
||||
to:
|
||||
- "on"
|
||||
- "off"
|
||||
|
||||
action:
|
||||
|
||||
- service: logbook.log
|
||||
data:
|
||||
name: First log
|
||||
message: "Test Poop Blueprint has started. Motion delay counter is: {{ states[delay_seconds].state }}"
|
||||
|
||||
- if:
|
||||
- condition: state
|
||||
entity_id: !input motion_sensor
|
||||
state: "on"
|
||||
|
||||
# Take actions based on Motion being detected!
|
||||
then:
|
||||
|
||||
- alias: Trying to log the motion state
|
||||
service: logbook.log
|
||||
data:
|
||||
name: Motion On
|
||||
message: Motion Detected
|
||||
|
||||
- alias: "Activate the ON scene"
|
||||
service: scene.turn_on
|
||||
target:
|
||||
entity_id: !input scene_on
|
||||
|
||||
# Take actions based on Motion being undetected
|
||||
else:
|
||||
|
||||
- alias: Announce motion-off sequence
|
||||
service: logbook.log
|
||||
data:
|
||||
name: Motion Off
|
||||
message: Initiating motion-off sequence.
|
||||
|
||||
|
||||
- alias: Delay appropriately before doing anything
|
||||
wait_template: "{{ states[motion_sensor].state == 'on' }}"
|
||||
timeout: "{{ states[delay_seconds].state }}"
|
||||
- if:
|
||||
- condition: state
|
||||
entity_id: !input motion_sensor
|
||||
state: "on"
|
||||
then:
|
||||
- stop: "Motion detected during initial delay."
|
||||
- service: logbook.log
|
||||
data:
|
||||
name: Motion Off
|
||||
message: Finished initial no-motion delay
|
||||
|
||||
|
||||
|
||||
- alias: "Activate Scene: Off Prep 1 (Notice)"
|
||||
service: scene.turn_on
|
||||
target:
|
||||
entity_id: !input scene_off_prep_1
|
||||
- alias: "Delay during the notice period"
|
||||
wait_template: "{{ states[motion_sensor].state == 'on' }}"
|
||||
timeout: "{{ notice_seconds }}"
|
||||
- if:
|
||||
- condition: state
|
||||
entity_id: !input motion_sensor
|
||||
state: "on"
|
||||
then:
|
||||
- alias: "Activate Scene: On"
|
||||
service: scene.turn_on
|
||||
target:
|
||||
entity_id: !input scene_on
|
||||
- alias: "Double countdown timer when user interrupts the notice period."
|
||||
service: input_number.set_value
|
||||
data:
|
||||
entity_id: !input delay_seconds_helper
|
||||
value: "{{ states[delay_seconds].state | int * 2 }}"
|
||||
- stop: "Motion detected during notice period."
|
||||
- service: logbook.log
|
||||
data:
|
||||
name: Motion Off
|
||||
message: Finished notice delay
|
||||
|
||||
- alias: "Activate Scene: Off Prep 2 (Warning)"
|
||||
service: scene.turn_on
|
||||
target:
|
||||
entity_id: !input scene_off_prep_2
|
||||
- alias: "Delay during the warning period"
|
||||
wait_template: "{{ states[motion_sensor].state == 'on' }}"
|
||||
timeout: "{{ warning_seconds }}"
|
||||
- if:
|
||||
- condition: state
|
||||
entity_id: !input motion_sensor
|
||||
state: "on"
|
||||
then:
|
||||
- alias: "Activate Scene: On"
|
||||
service: scene.turn_on
|
||||
target:
|
||||
entity_id: !input scene_on
|
||||
- alias: "Double countdown timer when user interrupts the warning period."
|
||||
service: input_number.set_value
|
||||
data:
|
||||
entity_id: !input delay_seconds_helper
|
||||
value: "{{ states[delay_seconds].state | int * 2 }}"
|
||||
- stop: "Motion detected during the warning period."
|
||||
- service: logbook.log
|
||||
data:
|
||||
name: Motion Off
|
||||
message: Finished warning delay
|
||||
|
||||
- alias: "Activate Scene: Off (Done)"
|
||||
service: scene.turn_on
|
||||
target:
|
||||
entity_id: !input scene_off
|
||||
|
||||
- alias: "Reset countdown timer after turning on lights."
|
||||
service: input_number.set_value
|
||||
data:
|
||||
entity_id: !input delay_seconds_helper
|
||||
value: "{{ delay_seconds_default }}"
|
||||
|
||||
- service: logbook.log
|
||||
data:
|
||||
name: Motion Off
|
||||
message: Activated off-scene and reset delay.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user