domain: automation
  input:
    camera:
      name: Frigate Camera
      description: The name of the camera as defined in your frigate configuration.
    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
          min: 0
          unit_of_measurement: seconds
    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
          min: 0
          unit_of_measurement: minutes

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
  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:
        - delay:
            minutes: 1
        - service: telegram_bot.send_message
          data:
            message: 'A {{ label }} was detected on the {{ camera_name }} camera.'
        - service: telegram_bot.send_video
          data:
            url: http://192.168.50.13:5000/api/events/{{id}}/clip.mp4?download=true
    default:
      - delay:
          minutes: 1
      - service: telegram_bot.send_message
        data:
          message: 'A {{ label }} was detected on the {{ camera_name }} camera.'
      - service: telegram_bot.send_video
        data:
          url: http://192.168.50.13:5000/api/events/{{id}}/clip.mp4?download=true
  - delay:
      minutes: !input silence_timer