mirror of
https://github.com/CeeWeasel/fresh-home.git
synced 2026-08-09 18:40:14 -04:00
Cleanup and prepping for bed presence
This commit is contained in:
File diff suppressed because it is too large
Load Diff
@@ -1,225 +0,0 @@
|
||||
blueprint:
|
||||
name: Frigate Notification
|
||||
description: "## Frigate Mobile App Notification\n\nThis blueprint will send a notification\
|
||||
\ to your device when a Frigate event for the selected camera is fired. The notification\
|
||||
\ will initially include the thumbnail of the detection, but will update to include\
|
||||
\ actionable notifications allowing you to view the saved clip/snapshot when available,\
|
||||
\ or silence the notification for a configurable amount of time.\n\nWith this\
|
||||
\ blueprint, you may send the notification to multiple devices by leaving \"Device\"\
|
||||
\ blank and instead use a [notification group][1].\n\n### Required entities:\n\
|
||||
\ - Frigate Camera Name\n - Mobile App Device **or** the name of a Notification\
|
||||
\ Group\n\n### Optional features:\n - You can limit notifications to objects\
|
||||
\ entering **any** pre-defined [zones][2] in Frigate.\n - You can specify which\
|
||||
\ [zones][2] to be notified about. This must be a list (e.g.):\n ```yaml\n\
|
||||
\ - backyard\n ```\n - You can specify what type of [objects][3] to be\
|
||||
\ notified about. This must be a list (e.g.):\n ```yaml\n - person\n \
|
||||
\ - car\n ```\n - You can disable notifications if a presence entity or group\
|
||||
\ is \"home\".\n - You can configure a cooldown for the camera to reduce the\
|
||||
\ number of notifications when back-to-back events occur.\n - You can silence\
|
||||
\ future notifications for a defined amount of time through actionable notifications.\
|
||||
\ This is helpful in situations where you know you will be triggering detections\
|
||||
\ for an extended period of time, like when the kids are playing outside.\n\n\
|
||||
[1]: https://companion.home-assistant.io/docs/notifications/notifications-basic#sending-notifications-to-multiple-devices\n\
|
||||
[2]: https://blakeblackshear.github.io/frigate/configuration/cameras#zones\n[3]:\
|
||||
\ https://blakeblackshear.github.io/frigate/configuration/objects\n"
|
||||
domain: automation
|
||||
source_url: https://gist.github.com/hunterjm/23c1588a9f2b8b9c2a62ffc364e17f8c
|
||||
input:
|
||||
camera:
|
||||
name: Frigate Camera
|
||||
description: The name of the camera as defined in your frigate configuration.
|
||||
notify_device:
|
||||
name: Device
|
||||
description: The device must run the official Home Assistant app to receive
|
||||
notifications.
|
||||
default: false
|
||||
selector:
|
||||
device:
|
||||
integration: mobile_app
|
||||
notify_group:
|
||||
name: Notification Group
|
||||
description: The name of the notification group to call.
|
||||
default: ''
|
||||
base_url:
|
||||
name: (Optional) Base URL
|
||||
description: 'The external url for your Home Assistant instance. This will default
|
||||
to a relative URL and will open the clips in the app instead of the browser,
|
||||
which may cause issues on some devices.
|
||||
|
||||
'
|
||||
default: ''
|
||||
zone_filter:
|
||||
name: (Optional) Zone Filter
|
||||
description: Only notify if object has entered a defined zone.
|
||||
default: false
|
||||
selector:
|
||||
boolean: {}
|
||||
zones:
|
||||
name: (Optional) Trigger Zones
|
||||
description: A list (-) of zones you wish to recieve notifications for.
|
||||
default: []
|
||||
selector:
|
||||
object: {}
|
||||
labels:
|
||||
name: (Optional) Trigger Objects
|
||||
description: A list (-) of objects you wish to recieve notifications for.
|
||||
default: []
|
||||
selector:
|
||||
object: {}
|
||||
presence_filter:
|
||||
name: (Optional) Presence Filter
|
||||
description: Only notify if selected presence entity is not "home".
|
||||
default: ''
|
||||
selector:
|
||||
entity: {}
|
||||
cooldown:
|
||||
name: (Optional) Cooldown
|
||||
description: Delay before sending another notification for this camera after
|
||||
the last event.
|
||||
default: 30
|
||||
selector:
|
||||
number:
|
||||
max: 300.0
|
||||
min: 0.0
|
||||
unit_of_measurement: seconds
|
||||
step: 1.0
|
||||
mode: slider
|
||||
silence_timer:
|
||||
name: (Optional) Silence Notifications
|
||||
description: 'How long to silence notifications for this camera when requested
|
||||
as part of the actionable notification.
|
||||
|
||||
'
|
||||
default: 30
|
||||
selector:
|
||||
number:
|
||||
max: 300.0
|
||||
min: 0.0
|
||||
unit_of_measurement: minutes
|
||||
step: 1.0
|
||||
mode: slider
|
||||
mode: single
|
||||
max_exceeded: silent
|
||||
trigger:
|
||||
platform: mqtt
|
||||
topic: frigate/events
|
||||
payload: !input 'camera'
|
||||
value_template: '{{ value_json[''after''][''camera''] }}'
|
||||
variables:
|
||||
id: '{{ trigger.payload_json[''after''][''id''] }}'
|
||||
camera: '{{ trigger.payload_json[''after''][''camera''] }}'
|
||||
camera_name: '{{ camera | replace(''_'', '' '') | title }}'
|
||||
object: '{{ trigger.payload_json[''after''][''label''] }}'
|
||||
label: '{{ object | title }}'
|
||||
entered_zones: '{{ trigger.payload_json[''after''][''entered_zones''] }}'
|
||||
type: '{{ trigger.payload_json[''type''] }}'
|
||||
base_url: !input 'base_url'
|
||||
group_target: !input 'notify_group'
|
||||
zone_only: !input 'zone_filter'
|
||||
input_zones: !input 'zones'
|
||||
zones: '{{ input_zones | list }}'
|
||||
input_labels: !input 'labels'
|
||||
labels: '{{ input_labels | list }}'
|
||||
presence_entity: !input 'presence_filter'
|
||||
condition:
|
||||
- '{{ type != ''end'' }}'
|
||||
- '{{ not zone_only or entered_zones|length > 0 }}'
|
||||
- '{{ not zones|length or zones|select(''in'', entered_zones)|list|length > 0 }}'
|
||||
- '{{ not labels|length or object in labels }}'
|
||||
- '{{ not presence_entity or not is_state(presence_entity, ''home'') }}'
|
||||
action:
|
||||
- choose:
|
||||
- conditions: '{{ not group_target }}'
|
||||
sequence:
|
||||
- device_id: !input 'notify_device'
|
||||
domain: mobile_app
|
||||
type: notify
|
||||
message: A {{ label }} was detected on the {{ camera_name }} camera.
|
||||
data:
|
||||
tag: '{{ id }}'
|
||||
group: frigate-notification-{{ camera }}
|
||||
image: /api/frigate/notifications/{{id}}/thumbnail.jpg?format=android
|
||||
attachment:
|
||||
url: /api/frigate/notifications/{{id}}/thumbnail.jpg
|
||||
default:
|
||||
- service: notify.{{ group_target }}
|
||||
data:
|
||||
message: A {{ label }} was detected on the {{ camera_name }} camera.
|
||||
data:
|
||||
tag: '{{ id }}'
|
||||
group: frigate-notification-{{ camera }}
|
||||
image: /api/frigate/notifications/{{id}}/thumbnail.jpg?format=android
|
||||
attachment:
|
||||
url: /api/frigate/notifications/{{id}}/thumbnail.jpg
|
||||
- repeat:
|
||||
sequence:
|
||||
- wait_for_trigger:
|
||||
- platform: mqtt
|
||||
topic: frigate/events
|
||||
payload: '{{ id }}'
|
||||
value_template: '{{ value_json[''after''][''id''] }}'
|
||||
timeout:
|
||||
minutes: 2
|
||||
continue_on_timeout: false
|
||||
- condition: template
|
||||
value_template: '{{ wait.trigger.payload_json[''type''] == ''end'' }}'
|
||||
- choose:
|
||||
- conditions: '{{ not group_target }}'
|
||||
sequence:
|
||||
- device_id: !input 'notify_device'
|
||||
domain: mobile_app
|
||||
type: notify
|
||||
message: A {{ label }} was detected on the {{ camera_name }} camera.
|
||||
data:
|
||||
tag: '{{ id }}'
|
||||
group: frigate-notification-{{ camera }}
|
||||
url: '{{base_url}}/api/frigate/notifications/{{id}}/{{camera}}/clip.mp4'
|
||||
clickAction: '{{base_url}}/api/frigate/notifications/{{id}}/{{camera}}/clip.mp4'
|
||||
image: /api/frigate/notifications/{{id}}/thumbnail.jpg?format=android
|
||||
sound: none
|
||||
attachment:
|
||||
url: /api/frigate/notifications/{{id}}/thumbnail.jpg
|
||||
actions:
|
||||
- action: URI
|
||||
title: View Clip
|
||||
uri: '{{base_url}}/api/frigate/notifications/{{id}}/{{camera}}/clip.mp4'
|
||||
- action: URI
|
||||
title: View Snapshot
|
||||
uri: '{{base_url}}/api/frigate/notifications/{{id}}/snapshot.jpg'
|
||||
- action: silence-{{ camera }}
|
||||
title: Silence Notifications
|
||||
destructive: true
|
||||
default:
|
||||
- service: notify.{{ group_target }}
|
||||
data:
|
||||
message: A {{ label }} was detected on the {{ camera_name }} camera.
|
||||
data:
|
||||
tag: '{{ id }}'
|
||||
group: frigate-notification-{{ camera }}
|
||||
url: '{{base_url}}/api/frigate/notifications/{{id}}/{{camera}}/clip.mp4'
|
||||
clickAction: '{{base_url}}/api/frigate/notifications/{{id}}/{{camera}}/clip.mp4'
|
||||
image: /api/frigate/notifications/{{id}}/thumbnail.jpg?format=android
|
||||
sound: none
|
||||
attachment:
|
||||
url: /api/frigate/notifications/{{id}}/thumbnail.jpg
|
||||
actions:
|
||||
- action: URI
|
||||
title: View Clip
|
||||
uri: '{{base_url}}/api/frigate/notifications/{{id}}/{{camera}}/clip.mp4'
|
||||
- action: URI
|
||||
title: View Snapshot
|
||||
uri: '{{base_url}}/api/frigate/notifications/{{id}}/snapshot.jpg'
|
||||
- action: silence-{{ camera }}
|
||||
title: Silence Notifications
|
||||
destructive: true
|
||||
until: '{{ wait.trigger.payload_json[''type''] == ''end'' }}'
|
||||
- wait_for_trigger:
|
||||
- platform: event
|
||||
event_type: mobile_app_notification_action
|
||||
event_data:
|
||||
action: silence-{{ camera }}
|
||||
timeout:
|
||||
seconds: !input 'cooldown'
|
||||
continue_on_timeout: false
|
||||
- delay:
|
||||
minutes: !input 'silence_timer'
|
||||
Reference in New Issue
Block a user