Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save aisbergde/5c909e54b985c9c76cffb7bc41867884 to your computer and use it in GitHub Desktop.
Save aisbergde/5c909e54b985c9c76cffb7bc41867884 to your computer and use it in GitHub Desktop.
Frigate - Telegram Notification
blueprint:
name: Frigate - Telegram Notification (aisbergde)
description: Create automations to receive Snapshots, thumbnails and Clips from Frigate
domain: automation
input:
camera:
name: Frigate Camera
description: The name of the camera as defined in your frigate configuration (/conf.yml).
target_chat:
name: Target
description: 'The chat_id to be used by the Telegram bot.
!secret chat_id is not allowed on Blueprint, you will need the chat_id code.
'
notification:
name: Notification
description: 'Select "true" to disable notification, lave "false" to receive
notification.
'
selector:
select:
options:
- 'true'
- 'false'
default: 'false'
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: {}
source_url: https://gist.github.com/aisbergde/5c909e54b985c9c76cffb7bc41867884
mode: single
# mode: parallel
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 }}'
target_chat: !input 'target_chat'
object: '{{ trigger.payload_json[''after''][''label''] }}'
top_score: '{{ trigger.payload_json[''after''][''top_score''] }}'
score: '{{ trigger.payload_json[''after''][''score''] }}'
stationary: '{{ trigger.payload_json[''after''][''stationary''] }}'
label: '{{ object | title }}'
entered_zones: '{{ trigger.payload_json[''after''][''entered_zones''] }}'
type: '{{ trigger.payload_json[''type''] }}'
base_url: !input 'base_url'
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'
notification: !input 'notification'
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:
- service: telegram_bot.send_photo
data:
target: '{{ target_chat }}'
disable_notification: '{{ notification }}'
caption: |
snapshot (start): {{ camera_name }} (ID: {{ id }}) {{ object }}
url: >-
{{base_url}}/api/frigate/notifications/{{id}}/snapshot.jpg
# - service: telegram_bot.send_photo
# data:
# target: '{{ target_chat }}'
# disable_notification: '{{ notification }}'
# caption: |
# thumbnail: {{ camera_name }} (ID: {{ id }})
# url: >-
# {{base_url}}/api/frigate/notifications/{{id}}/thumbnail.jpg
- service: telegram_bot.send_message
data:
target: '{{ target_chat }}'
disable_notification: '{{ notification }}'
title: |
{{ camera_name }} (ID: {{ id }})
message: |-
object: {{ object }}
{{base_url}}/api/frigate/notifications/{{id}}/snapshot.jpg
{{base_url}}/api/frigate/notifications/{{id}}/thumbnail.jpg
{{base_url}}/api/frigate/notifications/{{id}}/clip.mp4
# score, top_score: {{ score }} {{ top_score }}
# stationary: {{ stationary }}
- 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
# # snapshot will be changed, box and detection information is added
# # resend it
# # also final thumbnail could change
# - service: telegram_bot.send_photo
# data:
# target: '{{ target_chat }}'
# disable_notification: '{{ notification }}'
# caption: |
# snapshot (final): {{ camera_name }} (ID: {{ id }})
# url: >-
# {{base_url}}/api/frigate/notifications/{{id}}/snapshot.jpg
- condition: template
value_template: '{{ wait.trigger.payload_json[''type''] == ''end'' }}'
- service: telegram_bot.send_video
data:
target: '{{ target_chat }}'
disable_notification: '{{ notification }}'
caption: 'clip: {{ camera_name }} (ID: {{ id }}) {{ object }}'
url: >-
{{base_url}}/api/frigate/notifications/{{id}}/{{camera}}/clip.mp4
until: '{{ wait.trigger.payload_json[''type''] == ''end'' }}'
# snapshot will be changed, box and detection information is added
# resend it
# also final thumbnail could change
- service: telegram_bot.send_photo
data:
target: '{{ target_chat }}'
disable_notification: '{{ notification }}'
caption: |
snapshot (final): {{ camera_name }} (ID: {{ id }}) {{ object }}
url: >-
{{base_url}}/api/frigate/notifications/{{id}}/snapshot.jpg
# - service: telegram_bot.send_photo
# data:
# target: '{{ target_chat }}'
# disable_notification: '{{ notification }}'
# caption: |
# thumbnail (final): {{ camera_name }} (ID: {{ id }})
# url: >-
# {{base_url}}/api/frigate/notifications/{{id}}/thumbnail.jpg
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment