Forked from NdR91/frigate_telegram_notification.yaml
Last active
July 9, 2025 09:31
-
-
Save jakesOneFourSeven/cc8fab1e8712a34dbd596ebd355d76ea to your computer and use it in GitHub Desktop.
Frigate - Telegram Notification
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
blueprint: | |
name: Frigate - Telegram Notification with Generative AI comments | |
description: Create automations to receive Snapshots and Clips from Frigate | |
domain: automation | |
input: | |
camera: | |
name: Frigate Camera | |
description: "Select the camera entity that will trigger notifications. \nIf | |
you do not see cameras listed in the drop down, check you have the frigate | |
integration installed.\nNote: The automation relies on this matching your | |
frigate config (by default it does).\n" | |
selector: | |
entity: | |
integration: frigate | |
domain: | |
- camera | |
device_class: | |
- camera | |
multiple: false | |
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, leave "false" to receive | |
notification. ' | |
selector: | |
select: | |
options: | |
- 'true' | |
- 'false' | |
multiple: false | |
sort: false | |
custom_value: false | |
default: 'false' | |
prompt: | |
name: Gemini Prompt | |
description: Customise your AI prompt for https://www.home-assistant.io/integrations/google_generative_ai_conversation/ | |
default: Very briefly describe what you see in this image from my cctv camera. | |
Your message needs to be short to fit in a phone notification. Don't | |
describe stationary objects or buildings. Only describe animals, vehicles or persons. | |
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: | |
multiple: false | |
source_url: https://gist.github.com/jakesOneFourSeven/cc8fab1e8712a34dbd596ebd355d76ea | |
mode: single | |
max_exceeded: silent | |
trigger_variables: | |
input_camera: !input camera | |
camera: '{{ input_camera | replace(''camera.'', '''') }}' | |
trigger: | |
- platform: mqtt | |
topic: frigate/events | |
payload: '{{ camera }}/new' | |
value_template: '{{ value_json[''after''][''camera''] | lower | replace(''-'',''_'') | |
}}/{{ value_json[''type'']}}' | |
id: frigate-event | |
variables: | |
id: '{{ trigger.payload_json[''after''][''id''] }}' | |
input_camera: !input camera | |
camera: '{{ input_camera | replace(''camera.'', '''') }}' | |
camera_name: '{{ camera | replace(''_'', '' '') | title }}' | |
target_chat: !input target_chat | |
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 | |
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: downloader.download_file | |
data: | |
overwrite: true | |
url: '{{base_url}}/api/frigate/notifications/{{id}}/snapshot.jpg' | |
filename: snapshot1.jpg | |
- alias: Extra delay before getting snapshot file | |
delay: 1 | |
- service: downloader.download_file | |
data: | |
overwrite: true | |
url: '{{base_url}}/api/frigate/notifications/{{id}}/snapshot.jpg' | |
filename: snapshot2.jpg | |
- alias: Extra delay before getting snapshot file | |
delay: 1 | |
- service: downloader.download_file | |
data: | |
overwrite: true | |
url: '{{base_url}}/api/frigate/notifications/{{id}}/snapshot.jpg' | |
filename: snapshot3.jpg | |
- alias: Extra delay before getting snapshot file | |
delay: 1 | |
- service: google_generative_ai_conversation.generate_content | |
data: | |
filenames: | |
- www/downloads/snapshot1.jpg | |
- www/downloads/snapshot2.jpg | |
- www/downloads/snapshot3.jpg | |
prompt: !input prompt | |
response_variable: generated_content | |
- service: telegram_bot.send_photo | |
data: | |
target: '{{ target_chat }}' | |
disable_notification: '{{ notification }}' | |
caption: ' {{ generated_content.text }} ' | |
url: '{{base_url}}/api/frigate/notifications/{{id}}/snapshot.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'' }}' | |
- service: telegram_bot.send_video | |
data: | |
target: '{{ target_chat }}' | |
disable_notification: '{{ notification }}' | |
caption: ' {{ generated_content.text }} ' | |
url: '{{base_url}}/api/frigate/notifications/{{id}}/{{camera}}/clip.mp4' | |
until: '{{ wait.trigger.payload_json[''type''] == ''end'' }}' |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Im having an issue with the blueprint. It doesn't seem to be saving the snapshot to the right place, and when I try to search for it to send it via Telegram, it generates a 404 error.
This is shown in the HA log. Can you help me?
05-25-09 12:36:56.306 WARNING (MainThread) [homeassistant.components.telegram_bot] Status code 404 (retry #1) loading http://192.168.11.206:8123/api/frigate/notifications/1746787003.621033-jq87ul/snapshot.jpg
05-25-09 12:36:57.354 WARNING (MainThread) [homeassistant.components.telegram_bot] Status code 404 (retry #2) loading http://192.168.11.206:8123/api/frigate/notifications/1746787003.621033-jq87ul/snapshot.jpg
2025-05-09 12:36:58.409 WARNING (MainThread) [homeassistant.components.telegram_bot] Status code 404 (retry #3) loading http://192.168.11.206:8123/api/frigate/notifications/1746787003.621033-jq87ul/snapshot.jpg
2025-05-09 12:36:59.456 WARNING (MainThread) [homeassistant.components.telegram_bot] Status code 404 (retry #4) loading http://192.168.11.206:8123/api/frigate/notifications/1746787003.621033-jq87ul/snapshot.jpg
2025-05-09 12:37:00.471 WARNING (MainThread) [homeassistant.components.telegram_bot] Status code 404 (retry #5) loading http://192.168.11.206:8123/api/frigate/notifications/1746787003.621033-jq87ul/snapshot.jpg
2025-05-09 12:37:00.471 WARNING (MainThread) [homeassistant.components.telegram_bot] Can't load data in http://192.168.11.206:8123/api/frigate/notifications/1746787003.621033-jq87ul/snapshot.jpg after 5 retries