2026-10-02 08:57:53 -04:00
|
|
|
# One controller owns the Blink group and its cameras' motion detection.
|
2026-06-28 14:27:20 -04:00
|
|
|
- id: '1758196295864'
|
2026-10-02 08:57:53 -04:00
|
|
|
alias: Inside Blink Cameras - Reconcile Family Presence
|
|
|
|
|
description: >-
|
|
|
|
|
Disarm when either parent is home. Enable camera motion detection and arm
|
|
|
|
|
only when both trackers have valid away states. Reconcile on startup,
|
|
|
|
|
automation reload and Blink recovery; unknown location never means away.
|
2026-06-28 14:27:20 -04:00
|
|
|
triggers:
|
2026-10-02 08:57:53 -04:00
|
|
|
- trigger: state
|
|
|
|
|
entity_id:
|
|
|
|
|
- device_tracker.joshuas_iphone_of_pain
|
|
|
|
|
- device_tracker.pollys_iphone
|
|
|
|
|
to: null
|
|
|
|
|
- trigger: homeassistant
|
|
|
|
|
event: start
|
|
|
|
|
- trigger: event
|
|
|
|
|
event_type: automation_reloaded
|
|
|
|
|
- trigger: state
|
|
|
|
|
entity_id: alarm_control_panel.blink_inside
|
|
|
|
|
to:
|
|
|
|
|
- armed_away
|
|
|
|
|
- disarmed
|
|
|
|
|
conditions: []
|
2026-06-28 14:27:20 -04:00
|
|
|
actions:
|
2026-10-02 08:57:53 -04:00
|
|
|
- choose:
|
|
|
|
|
- conditions:
|
|
|
|
|
- condition: template
|
|
|
|
|
value_template: >-
|
|
|
|
|
{{ is_state('device_tracker.joshuas_iphone_of_pain', 'home')
|
|
|
|
|
or is_state('device_tracker.pollys_iphone', 'home') }}
|
|
|
|
|
sequence:
|
|
|
|
|
- if:
|
|
|
|
|
- condition: template
|
|
|
|
|
value_template: >-
|
|
|
|
|
{{ has_value('alarm_control_panel.blink_inside')
|
|
|
|
|
and not is_state('alarm_control_panel.blink_inside', 'disarmed') }}
|
|
|
|
|
then:
|
|
|
|
|
- action: alarm_control_panel.alarm_disarm
|
|
|
|
|
continue_on_error: true
|
|
|
|
|
target:
|
|
|
|
|
entity_id: alarm_control_panel.blink_inside
|
|
|
|
|
# Recheck after the network action, before changing camera settings.
|
|
|
|
|
- condition: template
|
|
|
|
|
value_template: >-
|
|
|
|
|
{{ is_state('device_tracker.joshuas_iphone_of_pain', 'home')
|
|
|
|
|
or is_state('device_tracker.pollys_iphone', 'home') }}
|
|
|
|
|
- action: camera.disable_motion_detection
|
|
|
|
|
continue_on_error: true
|
|
|
|
|
target:
|
|
|
|
|
device_id:
|
|
|
|
|
- 3df00a0796efe006e4ea349a9752faba
|
|
|
|
|
- 0c13483d761efe3b85e534fadd323fe3
|
|
|
|
|
- 5aa158596e48441ea606dd881a34402d
|
|
|
|
|
- d045a0a68c3c4d52a7beb2a28fdf6993
|
|
|
|
|
- 044c43ea05ceff58b1209f6441c24183
|
|
|
|
|
- conditions:
|
|
|
|
|
- condition: template
|
|
|
|
|
value_template: >-
|
|
|
|
|
{{ states('device_tracker.joshuas_iphone_of_pain')
|
|
|
|
|
not in ['home', 'unknown', 'unavailable', '']
|
|
|
|
|
and states('device_tracker.pollys_iphone')
|
|
|
|
|
not in ['home', 'unknown', 'unavailable', '']
|
|
|
|
|
and has_value('alarm_control_panel.blink_inside') }}
|
|
|
|
|
sequence:
|
|
|
|
|
- action: camera.enable_motion_detection
|
|
|
|
|
# One unavailable camera must not prevent arming the rest of the group.
|
|
|
|
|
continue_on_error: true
|
|
|
|
|
target:
|
|
|
|
|
device_id:
|
|
|
|
|
- 3df00a0796efe006e4ea349a9752faba
|
|
|
|
|
- 0c13483d761efe3b85e534fadd323fe3
|
|
|
|
|
- 5aa158596e48441ea606dd881a34402d
|
|
|
|
|
- d045a0a68c3c4d52a7beb2a28fdf6993
|
|
|
|
|
- 044c43ea05ceff58b1209f6441c24183
|
|
|
|
|
- condition: template
|
|
|
|
|
value_template: >-
|
|
|
|
|
{{ states('device_tracker.joshuas_iphone_of_pain')
|
|
|
|
|
not in ['home', 'unknown', 'unavailable', '']
|
|
|
|
|
and states('device_tracker.pollys_iphone')
|
|
|
|
|
not in ['home', 'unknown', 'unavailable', ''] }}
|
|
|
|
|
- if:
|
|
|
|
|
- condition: template
|
|
|
|
|
value_template: "{{ not is_state('alarm_control_panel.blink_inside', 'armed_away') }}"
|
|
|
|
|
then:
|
|
|
|
|
- action: alarm_control_panel.alarm_arm_away
|
|
|
|
|
target:
|
|
|
|
|
entity_id: alarm_control_panel.blink_inside
|
|
|
|
|
mode: restart
|