Frigate Версия <#MODULE_VERSION#>
[#if TAB_SETTINGS="1"#]
Этот модуль работает с Frigate через MQTT как с основным способом получения событий.
Настройки брокера он берёт из установленного модуля MQTT MajorDoMo.
Модуль Telegram используется только как источник токена бота, если в нём токен найден.
Режим обработки кнопки "Посмотреть видео": <#TELEGRAM_CALLBACK_MODE#>.
MQTT цикл: [#if CYCLE_MQTT_STATUS="1"#]работает[#else#]остановлен[#endif#] [#if CYCLE_MQTT_UPDATED!=""#]
Последний heartbeat: <#CYCLE_MQTT_UPDATED#>[#endif#]

Telegram callback цикл: [#if CYCLE_TELEGRAM_STATUS="1"#]работает[#else#]остановлен[#endif#] [#if CYCLE_TELEGRAM_UPDATED!=""#]
Последний heartbeat: <#CYCLE_TELEGRAM_UPDATED#>[#endif#] [#if TELEGRAM_MODULE_INSTALLED="1"#]
При установленном модуле Telegram этот цикл специально остановлен, а callback обрабатывается через `tlg_event`.[#endif#]
Перезапустить циклы

Если выключено, оба цикла Frigate не будут ничего обрабатывать.
Пример: `http://192.168.45.222:5000`
[#if MQTT_MODULE_FOUND="1"#] Найден.
Хост: <#MQTT_HOST#>
Порт: <#MQTT_PORT#>
[#if MQTT_AUTH="1"#]Логин: <#MQTT_USERNAME#>
[#endif#] Подписка MQTT-модуля: <#MQTT_QUERY#> [#else#] Модуль MQTT не найден или его настройки недоступны. [#endif#]
Эти данные берутся автоматически из модуля MQTT и здесь не редактируются.
[#if TELEGRAM_MODULE_FOUND="1"#] [#else#] [#endif#]
Если модуль Telegram установлен и в нём задан токен, Frigate возьмёт именно его автоматически.
Поле для ручного ввода используется только если Telegram-модуль не найден или в нём нет токена.
Текущий источник токена: <#TELEGRAM_TOKEN_SOURCE#>

Если включено, модуль попробует заменить первое сообщение на видео-превью того же события.
Если за это время на той же камере придёт та же машина, то же лицо или такой же объект, новое Telegram-уведомление отправляться не будет. `0` — отключить подавление дублей.

Полезно включать на время настройки.
[#endif#] [#if TAB_USERS="1"#]
Ниже показаны системные пользователи MajorDoMo.
`chat_id` модуль сначала пытается взять из Telegram-модуля автоматически.
Если автоматически он не найден, можно указать его вручную.
[#begin RECIPIENTS#] [#end RECIPIENTS#]
ID Источник Имя Отправлять Telegram chat_id Источник chat_id
[#RID#] [#SOURCE_LABEL#] [#DISPLAY_NAME#] [#CHAT_SOURCE#]
[#endif#] [#if TAB_FACE="1"#]
Эта вкладка относится к распознаванию лиц и номеров машин.
Сам модуль MajorDoMo уже умеет подхватывать имя лица и номер машины из событий Frigate и показывать их в Telegram вместе с фото-превью.
Для лиц модуль читает имя из полей: `sub_label`, `face_name`, `recognized_face`, `snapshot.sub_label`, а также из массивов `attributes` и `current_attributes`.
Как это работает
1. Frigate или связанная с ним система должна передавать в MQTT имя распознанного человека или номер машины.
2. Наш модуль берёт это значение и добавляет его в подпись к первому фото, к preview и к клипу по кнопке.
3. Если имя лица или номер в событие не попадает, уведомление придёт как обычное обнаружение объекта, без уточнения.
Методы объектов
Когда Frigate что-то распознал, у объекта камеры автоматически могут сработать методы:
face_detected — когда распознано лицо
plate_detected — когда распознан номер машины
Внутри face_detected по умолчанию уже есть переменные:
$face_name — имя лица
$camera — имя камеры
$event_id — идентификатор события
Внутри plate_detected по умолчанию уже есть переменные:
$plate_number — распознанный номер машины
$camera — имя камеры
$event_id — идентификатор события
Что проверить во Frigate
Для камер должны быть включены `snapshots` и `review`, чтобы мы могли отправлять фото-превью и потом заменять его на preview/clip.
Если используется Double Take, CompreFace, CodeProject.AI или другая внешняя система, важно добиться, чтобы имя человека реально попадало в MQTT-событие Frigate.
Для машин важно, чтобы номер тоже публиковался в MQTT. Обычно он приходит отдельным обновлением после основного события.
Когда это заработает, в списке событий этой страницы появятся поля `лицо: Имя` и `номер: А123БВ`.
[#endif#] [#if TAB_EVENTS="1"#]
Последние события
[#begin EVENTS#]
[#CAMERA#] / [#LABEL#] / [#EVENT_TYPE#] [#if FACE_NAME!=""#] / лицо: [#FACE_NAME#][#endif#] [#if PLATE!=""#] / номер: [#PLATE#][#endif#] [#if PHOTO_SENT="1"#] / фото отправлено[#endif#] [#if PREVIEW_SENT="1"#] / превью отправлено[#endif#] [#if OBJECT_NAME!=""#]
Объект MajorDoMo: [#OBJECT_NAME#]
[#if FACE_PROPERTY_PATH!=""#]
Свойство лица: [#FACE_PROPERTY_PATH#]
[#endif#] [#endif#]
[#UPDATED#]
[#end EVENTS#]
[#endif#] [#if TAB_HELP="1"#]
Ниже собрана простая пошаговая инструкция по настройке модуля Frigate в MajorDoMo. Она рассчитана на обычного пользователя: без лишней технической теории, только то, что нужно сделать на практике.
1. Что нужно, чтобы всё заработало
1. Должен быть установлен и работать Frigate.
2. Frigate должен быть подключён к MQTT.
3. В MajorDoMo должен быть установлен и настроен модуль MQTT.
4. Для отправки уведомлений нужен Telegram-бот. Проще всего, когда уже установлен модуль Telegram в MajorDoMo.
5. В этом модуле Frigate нужно выбрать получателей уведомлений.
2. Что настроить во Frigate
Во Frigate нужно, чтобы события публиковались в MQTT. Обычно это уже включено, если Frigate работает с брокером.
Для камер желательно включить снимки и обзор событий, чтобы модуль мог:
• сначала отправить фото
• потом заменить его на видео-превью
• по кнопке отправить клип события
Если вы хотите использовать автоматические методы по числу людей в кадре, Frigate также должен публиковать топики вида:
frigate/ИмяКамеры/person
В этом топике должно приходить число людей: `0`, `1`, `2` и так далее.
Простой пример того, что обычно должно быть во Frigate:
mqtt:
  enabled: true
  host: 192.168.45.10
  port: 1883

cameras:
  Dom:
    snapshots:
      enabled: true
    review:
      alerts:
        required_zones: []
      detections:
        required_zones: []
Это не полный конфиг Frigate, а только понятный пример направления. Если у вас уже есть рабочий `frigate.yml`, обычно достаточно проверить, что MQTT включён, а камера отдаёт snapshots/review.
3. Что настроить в MajorDoMo
1. Откройте вкладку Основные настройки.
2. Включите модуль.
3. Укажите адрес Frigate, например:
http://192.168.45.222:5000
4. В поле MQTT топика обычно достаточно указать:
frigate/events
5. Если у вас события приходят не в один основной топик, а во вложенные, можно использовать:
frigate/events/#
6. Сохраните настройки.
7. Нажмите Перезапустить циклы, если хотите сразу перезапустить обработку.
4. Как настроить Telegram-уведомления
1. Откройте вкладку Пользователи.
2. Найдите нужных людей, которым должны приходить уведомления.
3. Поставьте галочку Отправлять.
4. Если `chat_id` уже найден автоматически через модуль Telegram, ничего вручную вводить не нужно.
5. Если `chat_id` не найден, вставьте его вручную и сохраните.
5. Что будет происходить после настройки
1. Frigate замечает человека, машину или другой объект.
2. В Telegram приходит первое сообщение с картинкой.
3. Через короткое время это же сообщение может замениться на видео-превью.
4. По кнопке Посмотреть видео модуль попробует показать клип события.
5. Если Telegram не позволит заменить старое сообщение клипом, модуль всё равно отправит видео следующим сообщением.
6. Как проверить, что всё работает
Самый простой способ: пройти перед камерой или проехать машиной там, где Frigate уже умеет ловить события.
После этого проверьте:
• появилось ли сообщение в Telegram
• видна ли камера в подписи
• обновилось ли фото до превью
• работает ли кнопка просмотра видео
Также можно открыть вкладку Последние события и посмотреть, появились ли новые записи.
7. Как работают методы камер
При первом событии модуль создаёт класс frigate и отдельные объекты по именам камер.
У каждого объекта камеры есть несколько готовых методов:
start_event — запускается, когда событие только началось
end_event — запускается, когда событие закончилось
person_detected — запускается, когда в топике камеры `person` значение стало больше `0`
person_gone — запускается, когда в топике камеры `person` значение стало равно `0`
face_detected — запускается, когда Frigate распознал лицо человека
plate_detected — запускается, когда Frigate распознал номер машины
В методе face_detected по умолчанию уже доступны переменные:
$face_name — имя распознанного лица
$camera — имя камеры
$event_id — идентификатор события Frigate
В методе plate_detected по умолчанию уже доступны переменные:
$plate_number — распознанный номер машины
$camera — имя камеры
$event_id — идентификатор события Frigate
У объекта камеры также появляется свойство:
person — текущее число людей в кадре по MQTT-топику камеры
face_name — последнее распознанное имя лица
plate — последний распознанный номер машины
Простыми словами это нужно, если вы хотите делать свои действия на события камеры.
• включить свет при появлении человека
• запускать сценарий записи или звука
• сохранять свои дополнительные данные
Если вы не пишете свои сценарии, эти методы можно просто не трогать.
8. Если что-то не работает
1. Включите галочку Подробный лог на вкладке основных настроек.
2. Проверьте, работает ли MQTT-модуль MajorDoMo.
3. Убедитесь, что Frigate доступен по указанному адресу из браузера.
4. Убедитесь, что пользователю назначен правильный Telegram `chat_id`.
5. Если уведомления приходят, но без видео, чаще всего проблема либо во времени подготовки клипа во Frigate, либо в ограничениях Telegram на замену сообщения видеофайлом.
[#endif#]