Turn scene on twice to account for laggy networks

Also quoted some things and improved logging a bit.
This commit is contained in:
mike 2023-10-10 06:46:35 -07:00
parent 7b37258f22
commit 045e87fe73

View File

@ -1,5 +1,9 @@
########################
### Blueprint definition
########################
blueprint: blueprint:
name: "Mike's Motion Activated Light" name: "Mike's Motion Activated Light"
@ -8,22 +12,22 @@ blueprint:
input: input:
motion_sensor: motion_sensor:
name: Motion Sensor name: "Motion Sensor"
description: Entity ID of the motion sensor description: "Entity ID of the motion sensor"
selector: selector:
entity: entity:
domain: binary_sensor domain: binary_sensor
delay_seconds_helper: delay_seconds_helper:
name: 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. description: "The delay before the motion-off sequence will be initiated. Must be a helper so it can persist across activations."
selector: selector:
entity: entity:
domain: input_number domain: input_number
delay_seconds_default: delay_seconds_default:
name: Default delay seconds name: "Default delay seconds"
description: The default delay before the motion-off sequence begins. Will be used to reset the running delay. description: "The default delay before the motion-off sequence begins. Will be used to reset the running delay."
default: 30 default: 30
selector: selector:
number: number:
@ -33,7 +37,7 @@ blueprint:
mode: box mode: box
notice_seconds: notice_seconds:
name: Notice seconds name: "Notice seconds"
description: "The number of seconds to wait in the Prep1 (Notice) scene." description: "The number of seconds to wait in the Prep1 (Notice) scene."
default: 15 default: 15
selector: selector:
@ -44,7 +48,7 @@ blueprint:
mode: box mode: box
warning_seconds: warning_seconds:
name: Warning seconds name: "Warning seconds"
description: "The number of seconds to wait in the Prep2 (Warning) scene." description: "The number of seconds to wait in the Prep2 (Warning) scene."
default: 15 default: 15
selector: selector:
@ -55,33 +59,38 @@ blueprint:
mode: box mode: box
scene_on: scene_on:
name: On Scene name: "On Scene"
description: The scene to activate when motion is detected description: "The scene to activate when motion is detected"
selector: selector:
entity: entity:
domain: scene domain: scene
scene_off_prep_1: scene_off_prep_1:
name: Off Prep Scene 1 (Notice) name: "Off Prep Scene 1 (Notice)"
description: The first scene to activate when motion is no longer detected (notice phase). description: "The first scene to activate when motion is no longer detected (notice phase)."
selector: selector:
entity: entity:
domain: scene domain: scene
scene_off_prep_2: scene_off_prep_2:
name: Off Prep Scene 2 (Warning) name: "Off Prep Scene 2 (Warning)"
description: The second scene to activate when motion is no longer detected (warning phase). description: "The second scene to activate when motion is no longer detected (warning phase)."
selector: selector:
entity: entity:
domain: scene domain: scene
scene_off: scene_off:
name: Off Scene name: "Off Scene"
description: "The scene to activate when the user has failed to produce motion, and the light should be considered \"off\"." description: "The scene to activate when the user has failed to produce motion, and the light should be considered \"off\"."
selector: selector:
entity: entity:
domain: scene domain: scene
#############
### Variables
#############
variables: variables:
motion_sensor: !input motion_sensor motion_sensor: !input motion_sensor
@ -90,6 +99,10 @@ variables:
notice_seconds: !input notice_seconds notice_seconds: !input notice_seconds
warning_seconds: !input warning_seconds warning_seconds: !input warning_seconds
############
### Triggers
############
trigger: trigger:
- platform: state - platform: state
@ -99,12 +112,16 @@ trigger:
- "on" - "on"
- "off" - "off"
###########
### Actions
###########
action: action:
- service: logbook.log - service: logbook.log
data: data:
name: First log name: "First log"
message: "Test Poop Blueprint has started. Motion delay counter is: {{ states[delay_seconds].state }}" message: "Motion automation has started. Delay counter is: {{ states[delay_seconds].state }}"
- if: - if:
- condition: state - condition: state
@ -114,50 +131,63 @@ action:
# Take actions based on Motion being detected! # Take actions based on Motion being detected!
then: then:
- alias: Trying to log the motion state - alias: "Log that motion was detected."
service: logbook.log service: logbook.log
data: data:
name: Motion On name: "Motion On"
message: Motion Detected message: "Motion was detected."
- alias: "Activate the ON scene" - alias: "Activate the ON scene"
service: scene.turn_on service: scene.turn_on
target: target:
entity_id: !input scene_on entity_id: !input scene_on
- delay:
seconds: 1
- alias: "Activate the ON scene again, after a delay (to help laggy setups)"
service: scene.turn_on
target:
entity_id: !input scene_on
# Take actions based on Motion being undetected # Take actions based on Motion being undetected
else: else:
- alias: Announce motion-off sequence - alias: "Log that the motion-off sequence will run, due to motion no longer detected."
service: logbook.log service: logbook.log
data: data:
name: Motion Off name: "Motion Off"
message: Initiating motion-off sequence. message: "Initiating motion-off sequence, because motion no longer detected."
- alias: Delay appropriately before doing anything - alias: "Delay appropriately before doing anything"
wait_template: "{{ states[motion_sensor].state == 'on' }}" wait_template: "{{ states[motion_sensor].state == 'on' }}"
timeout: "{{ states[delay_seconds].state }}" timeout: "{{ states[delay_seconds].state }}"
- if: - if:
- condition: state - condition: state
entity_id: !input motion_sensor entity_id: !input motion_sensor
state: "on" state: "on"
then: then:
- stop: "Motion detected during initial delay." - stop: "Motion detected again during initial delay."
- service: logbook.log - alias: "Log that the initial delay has finished."
service: logbook.log
data: data:
name: Motion Off name: "Motion Off"
message: Finished initial no-motion delay message: "Finished initial no-motion delay"
- alias: "Log that the notice period has begun."
service: logbook.log
data:
name: "Begin notice period"
message: "Begin notice period; Waiting while motion is still off."
- alias: "Activate Scene: Off Prep 1 (Notice)" - alias: "Activate Scene: Off Prep 1 (Notice)"
service: scene.turn_on service: scene.turn_on
target: target:
entity_id: !input scene_off_prep_1 entity_id: !input scene_off_prep_1
- alias: "Delay during the notice period" - alias: "Delay during the notice period"
wait_template: "{{ states[motion_sensor].state == 'on' }}" wait_template: "{{ states[motion_sensor].state == 'on' }}"
timeout: "{{ notice_seconds }}" timeout: "{{ notice_seconds }}"
- if: - if:
- condition: state - condition: state
entity_id: !input motion_sensor entity_id: !input motion_sensor
@ -175,16 +205,21 @@ action:
- stop: "Motion detected during notice period." - stop: "Motion detected during notice period."
- service: logbook.log - service: logbook.log
data: data:
name: Motion Off name: "Notice period finished."
message: Finished notice delay message: "Notice period has finished (motion is still off)."
- alias: "Log that the warning period has begun."
service: logbook.log
data:
name: "Begin warning period"
message: "Begin warning period; Waiting while motion is still off."
- alias: "Activate Scene: Off Prep 2 (Warning)" - alias: "Activate Scene: Off Prep 2 (Warning)"
service: scene.turn_on service: scene.turn_on
target: target:
entity_id: !input scene_off_prep_2 entity_id: !input scene_off_prep_2
- alias: "Delay during the warning period" - alias: "Delay during the warning period"
wait_template: "{{ states[motion_sensor].state == 'on' }}" wait_template: "{{ states[motion_sensor].state == 'on' }}"
timeout: "{{ warning_seconds }}" timeout: "{{ warning_seconds }}"
- if: - if:
- condition: state - condition: state
entity_id: !input motion_sensor entity_id: !input motion_sensor
@ -202,15 +237,16 @@ action:
- stop: "Motion detected during the warning period." - stop: "Motion detected during the warning period."
- service: logbook.log - service: logbook.log
data: data:
name: Motion Off name: "Warning period finished."
message: Finished warning delay message: "Warning period has finished and motion is still off."
- alias: "Activate Scene: Off (Done)" - alias: "Activate Scene: Off (Done)"
service: scene.turn_on service: scene.turn_on
target: target:
entity_id: !input scene_off entity_id: !input scene_off
- alias: "Reset countdown timer after turning on lights." - alias: "Reset countdown timer after turning off lights."
service: input_number.set_value service: input_number.set_value
data: data:
entity_id: !input delay_seconds_helper entity_id: !input delay_seconds_helper
@ -218,8 +254,8 @@ action:
- service: logbook.log - service: logbook.log
data: data:
name: Motion Off name: "Turning off light, due to motion off."
message: Activated off-scene and reset delay. message: "Activated off-scene and reset delay."