Перейти к содержанию

Главная / Статьи

проверка пути события

Событие есть, уведомления нет: Frigate → MQTT → Home Assistant

Объект появился в Frigate, но телефон молчит. Пройдём путь сообщения и найдём первое звено без ожидаемого результата. Начнём с наблюдаемой записи в журнале Home Assistant.

Картинка, событие и уведомление — три проверки

Просмотр камеры подтверждает доступность видео. Затем нужен объект или review в Frigate, сообщение в MQTT и запуск автоматизации HA. Только после этого имеет смысл проверять доставку уведомления. Поиск начинаем с одного воспроизводимого события: кто, на какой камере, какой результат ожидался.

  1. FrigateСоздаёт событие
  2. MQTTДоставляет JSON
  3. Home AssistantПроверяет условия
  4. ДействиеДаёт наблюдаемый результат

В нашем доме Telegram-сообщения отправляет Home Assistant. Видеорегистратор непрерывно пишет восемь камер, а Frigate анализирует выбранные прямые потоки.

1. Слушать точный topic

В настройках интеграции MQTT откройте прослушивание topic и укажите frigate/reviews. Если в Frigate изменён topic_prefix, используйте свой префикс. Frigate и HA должны обращаться к одному брокеру; рабочий экран Frigate этого не подтверждает.

Воспроизведите событие и сохраните одно полученное сообщение. Нет сообщения — сначала проверяйте MQTT и настройки Frigate. Сообщение есть — сравните поле after.camera с ID камеры из конфигурации, а не её красивым названием. end находится в поле type; отдельного topic frigate/reviews/end для этого нет.

Поля и префикс: официальная справка Frigate MQTT.

2. Не спутать review и объект

frigate/events обновляет отслеживаемый объект: новый снимок или изменение зоны могут прийти с прежним ID. В frigate/reviews сообщения new, update и end описывают жизнь review. Например, new может иметь важность detection, а переход в alert придёт как update. Условие «только new и alert» пропустит такой переход.

Ниже упрощённый синтетический JSON. ID придуманы для примера. after.id — ID review; after.data.detections содержит ID объектов. Для снимка объекта нужен соответствующий object ID: подставлять вместо него ID review нельзя.

{
  "type": "end",
  "before": {
    "id": "demo-review-1",
    "severity": "alert"
  },
  "after": {
    "id": "demo-review-1",
    "camera": "camera_example",
    "severity": "alert",
    "data": {
      "objects": [
        "person"
      ],
      "detections": [
        "demo-object-1"
      ]
    }
  }
}

Frigate рекомендует reviews для уведомлений; в официальном примере уведомления ID review используется как тег мобильного уведомления, а снимок запрашивается по ID объекта. Полученное сообщение само по себе ещё не подтверждает существование готового клипа.

3. Сначала получить запись в журнале HA

Откройте редактор новой автоматизации в режиме YAML и адаптируйте пример: замените camera_example на свой ID камеры и при необходимости измените префикс topic. Он принимает завершённый review с человеком и важностью alert, затем вызывает только logbook.log. Telegram и ТВ этот пример не запускает.

alias: "Frigate — завершённый review в журнале"
triggers:
  - trigger: mqtt
    topic: frigate/reviews
    payload: "end"
    value_template: "{{ value_json.type }}"
conditions:
  - condition: template
    value_template: >-
      {% set a = trigger.payload_json.get('after', {}) %}
      {{ a.get('camera') == 'camera_example'
         and a.get('severity') == 'alert'
         and a.get('id')
         and 'person' in a.get('data', {}).get('objects', []) }}
actions:
  - action: logbook.log
    data:
      name: "Учебное событие Frigate"
      message: >-
        Завершён review {{ trigger.payload_json['after']['id'] }}
        камеры {{ trigger.payload_json['after']['camera'] }}.
mode: queued
max: 10

Скачать учебную автоматизацию · YAML

Нужны подключённая MQTT-интеграция и доступное действие журнала. Получите реальное завершённое событие и найдите «Учебное событие Frigate» в журнале активности. Если действие прошло, но запись скрыта, проверьте фильтры журнала для домена logbook. Синтетический JSON служит для чтения полей; не отправляйте его в рабочий topic с другими подписчиками.

Синтаксис: MQTT-триггер HA; действие и фильтры: запись активности, пользовательские записи журнала.

4. Найти остановку в трассировке

  1. Нет запуска: сравните topic, включённость автоматизации и type полученного сообщения.
  2. Условие не прошло: сверяйте camera, severity и список objects из этого сообщения.
  3. Действие завершилось ошибкой: откройте его данные в трассировке. До подключения уведомлений добейтесь записи в журнале.

«Run actions» обходит триггер и условия верхнего уровня. В примере используются данные trigger, поэтому ручной запуск действий не заменяет проверку через MQTT. Когда журнал работает, подключайте свой проверенный канал уведомлений и наблюдайте доставку отдельно. Почему ручной запуск отличается.

5. Задержка и повторы требуют отдельного решения

Пример ждёт end: активность review должна закончиться. Для немедленного сообщения о человеке у калитки нужна другая логика начала alert, включая переход detection → alert.

queued упорядочивает запуски, но не удаляет одинаковые сообщения. Cooldown ограничивает частоту и может скрыть другое полезное событие; идемпотентность проверяет уже обработанный ID. Выбирайте правило под задачу и проверяйте повторную доставку. Гарантии «ровно один раз» этот пример не даёт. Режимы выполнения описаны в справке HA.

Наш клип открытия ворот и ролики человека/автомобиля примерно на 60/30 секунд создаёт отдельный архиватор. Их длительность не задаётся этим MQTT-примером или обычным retention Frigate.

Дальше — запись и место на диске

Как связаны потоки, review и хранение · Как оценить размер архива · Событийный режим калькулятора · Весь маршрут Frigate