Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save jakesOneFourSeven/cc8fab1e8712a34dbd596ebd355d76ea to your computer and use it in GitHub Desktop.
Save jakesOneFourSeven/cc8fab1e8712a34dbd596ebd355d76ea to your computer and use it in GitHub Desktop.
Frigate - Telegram Notification
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'' }}'
@mrfixitpa
Copy link

Thanks for this. Apparently that is also not the fix. I did what your reply suggested and I received and immediate error. It seems now the downloader is now within the integrations. I have made the changes and no errors. Hope this works :)

@guikof97
Copy link

I had the same problem as you, I just didn't remember how I solved it, if I'm not mistaken, just download the service in settings/Devices and services - "Downloader" and in the configuration you enter the path. I checked my .yaml and I don't have anything from the first comment. Remember configure the Google Gemini for HA.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment