13 Commits
v2.1.1 ... dev

Author SHA1 Message Date
832a71380f Bugfixes and upgrades:
- Fix bug where initial timeout wouldn't be interruptted by enabled_helper
- Turned scene repeat delay into a variable (non-input for now)
- Fixed enabled_helper==off not repeating the ON scene
- Tried clarifying some logs, aliases, comments
2024-04-26 02:28:23 -07:00
7626c05ad2 hooks? 2024-02-18 22:58:02 -08:00
98849314e3 hooks? 2024-02-18 22:57:30 -08:00
716cf3f1b1 hooks? 2024-02-18 22:55:37 -08:00
b18f09094b hooks? 2024-02-18 22:54:41 -08:00
fa6bb40bc5 hooks? 2024-02-18 22:53:34 -08:00
d2e97b133b hooks? 2024-02-18 22:52:24 -08:00
508e3e37e9 hooks? 2024-02-18 22:51:55 -08:00
09c41900b2 hooks? 2024-02-18 22:51:41 -08:00
0702a851ff hooks? 2024-02-18 22:50:45 -08:00
2277d37989 hooks? 2024-02-18 22:47:08 -08:00
82a3508b87 hooks? 2024-02-18 22:47:04 -08:00
4615be6cee Added disclaimer so I can mirror this to the WAN 2024-02-18 22:33:32 -08:00
2 changed files with 91 additions and 60 deletions

View File

@ -25,4 +25,13 @@ The automation also obeys a toggle helper to enable/disable motion activation. T
This automation can retry a scene multiple times in a row to help overcome buggy/slow networks or lights that fail to set brightness/color correctly when first turned on.
## Disclaimer
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
By using this software you agree to the disclaimer.

View File

@ -210,6 +210,7 @@ variables:
debug_mode: !input debug_mode
scene_repeat_count: !input scene_repeat_count
scene_repeat_delay_milliseconds: 500
trigger_variables:
enabled_helper: !input enabled_helper
@ -311,6 +312,12 @@ action:
# If the enabled helper is OFF, we should start by resetting
# the countdown timer to default
- alias: "If the enabled helper is OFF, reset countdown timer to default"
if:
- condition: trigger
id:
- Enabled Helper is off
then:
- alias: "Reset countdown timer when enabled helper is switched OFF."
service: input_number.set_value
data:
@ -330,18 +337,30 @@ action:
state: "on"
then:
- alias: "Activate the ON scene"
service: scene.turn_on
repeat:
count: "{{ scene_repeat_count }}"
sequence:
- service: scene.turn_on
target:
entity_id: !input scene_on
- delay:
milliseconds: "{{ scene_repeat_delay_milliseconds }}"
else:
- alias: "Activate the OFF scene"
service: scene.turn_on
repeat:
count: "{{ scene_repeat_count }}"
sequence:
- service: scene.turn_on
target:
entity_id: !input scene_off
- stop: ""
- delay:
milliseconds: "{{ scene_repeat_delay_milliseconds }}"
- stop: "Enabled helper was on or auto mode was on; Determined scene to activate based on current motion."
# In ON mode, just activate the ON scene
- alias: "on mode: just activate the ON scene"
# At this point, the enabled helper is assumed to be OFF
# In disabled_scene::ON mode, just activate the ON scene
- alias: "disabled_scene::on mode: just activate the ON scene"
if:
- condition: template
value_template: "{{ disabled_scene == 'on' }}"
@ -353,11 +372,11 @@ action:
target:
entity_id: !input scene_on
- delay:
milliseconds: 500
- stop: ""
milliseconds: "{{ scene_repeat_delay_milliseconds }}"
- stop: "Enabled helper is off and disabled scene was ON; Set ON scene"
# In OFF mode, just activate the OFF scene
- alias: "off mode: just activate the ON scene"
# In disabled_scene::OFF mode, just activate the OFF scene
- alias: "disabled_scene::off mode: just activate the OFF scene"
if:
- condition: template
value_template: "{{ disabled_scene == 'off' }}"
@ -369,11 +388,11 @@ action:
target:
entity_id: !input scene_off
- delay:
milliseconds: 500
- stop: ""
milliseconds: "{{ scene_repeat_delay_milliseconds }}"
- stop: "Enabled helper is off and disabled scene was OFF; Set OFF scene"
# In notice mode, just activate the NOTICE scene
- alias: "notice mode: just activate the NOTICE scene"
# In disabled_scene::notice mode, just activate the NOTICE scene
- alias: "disabled_scene::notice mode: just activate the NOTICE scene"
if:
- condition: template
value_template: "{{ disabled_scene == 'notice' }}"
@ -385,11 +404,11 @@ action:
target:
entity_id: !input scene_notice
- delay:
milliseconds: 500
- stop: ""
milliseconds: "{{ scene_repeat_delay_milliseconds }}"
- stop: "Enabled helper is off and disabled scene was NOTICE; Set NOTICE scene"
# In warning mode, just activate the WARNING scene
- alias: "warning mode: just activate the WARNING scene"
# In disabled_scene::warning mode, just activate the WARNING scene
- alias: "disabed_scene::warning mode: just activate the WARNING scene"
if:
- condition: template
value_template: "{{ disabled_scene == 'warning' }}"
@ -401,8 +420,8 @@ action:
target:
entity_id: !input scene_warning
- delay:
milliseconds: 500
- stop: ""
milliseconds: "{{ scene_repeat_delay_milliseconds }}"
- stop: "Enabled helper is off and disabled scene was WATNING; Set WARNING scene"
# Don't do anything after processing the enabled_helper triggers
- stop: "Done handling enabled helper"
@ -448,7 +467,7 @@ action:
target:
entity_id: !input scene_on
- delay:
milliseconds: 500
milliseconds: "{{ scene_repeat_delay_milliseconds }}"
# Motion is not detected
@ -467,8 +486,8 @@ action:
# Initial period where nothing happens
- alias: "Delay appropriately before doing anything"
wait_template: "{{ states[motion_sensor].state == 'on' }}"
timeout: "{{ states[delay_seconds_helper].state or (enabled_helper != None and is_state(enabled_helper, 'off') ) }}"
wait_template: "{{ states[motion_sensor].state == 'on' or (enabled_helper != None and is_state(enabled_helper, 'off') ) }}"
timeout: "{{ states[delay_seconds_helper].state }}"
- alias: "Quit now if the enabled-helper went OFF"
if:
@ -477,9 +496,10 @@ action:
- condition: template
value_template: "{{ is_state( enabled_helper, 'off' ) }}"
then:
stop: "Quitting early because the enabled-helper went OFF."
stop: "Interrupted initial delay because the enabled helper turned OFF."
- if:
- alias: "Motion detected again during initial delay; Interrupt initial delay"
if:
- condition: state
entity_id: !input motion_sensor
state: "on"
@ -516,7 +536,7 @@ action:
target:
entity_id: !input scene_notice
- delay:
milliseconds: 500
milliseconds: "{{ scene_repeat_delay_milliseconds }}"
- alias: "Delay during the notice period"
wait_template: "{{ states[motion_sensor].state == 'on' or (enabled_helper != None and is_state('enabled_helper', 'off') ) }}"
@ -529,10 +549,11 @@ action:
- condition: template
value_template: "{{ is_state( enabled_helper, 'off' ) }}"
then:
stop: "Quitting early because the enabled-helper went OFF."
stop: "Interrupting NOTICE period because the enabled-helper went OFF."
- if:
- alias: "If motion interrupted the NOTICE period, activate the ON scene"
if:
- condition: state
entity_id: !input motion_sensor
state: "on"
@ -604,7 +625,7 @@ action:
target:
entity_id: !input scene_warning
- delay:
milliseconds: 500
milliseconds: "{{ scene_repeat_delay_milliseconds }}"
- alias: "Delay during the warning period"
wait_template: "{{ states[motion_sensor].state == 'on' or (enabled_helper != None and is_state('enabled_helper', 'off') ) }}"
@ -617,9 +638,10 @@ action:
- condition: template
value_template: "{{ is_state( enabled_helper, 'off' ) }}"
then:
stop: "Quitting early because the enabled-helper went OFF."
stop: "Interrupting the WARNING sequence because the enabled-helper went OFF."
- if:
- alias: "If motion interrupts the WARNING sequence, just activate the ON scene"
if:
- condition: state
entity_id: !input motion_sensor
state: "on"
@ -633,7 +655,7 @@ action:
target:
entity_id: !input scene_on
- delay:
milliseconds: 500
milliseconds: "{{ scene_repeat_delay_milliseconds }}"
- alias: "Double countdown timer when user interrupts the warning period."
service: input_number.set_value
@ -719,7 +741,7 @@ action:
target:
entity_id: !input scene_off
- delay:
milliseconds: 500
milliseconds: "{{ scene_repeat_delay_milliseconds }}"
- alias: "Reset countdown timer after turning off lights."
service: input_number.set_value