Найти в Дзене
Удобный дом!

Охрана дома = Frigate+HA+Alarmo+Telegram. Ч.2 Конфигурация

Оглавление

Настройка конфигурации и как работает сам интерфейс. Сам Frigate мы установили в другой статье:

Сам по себе фригейт - бездонная бочка в плане настроек, саму документацию можно читать вечно. Я решил сфокусироваться на базовых настройках которые позволят мне использовать фригейт на обнаружение объектов, отсылать сообщения в Home Assistant и телеграм. То есть, все что бы организовать простую и надежную систему охраны.

Эта конфигурация далась совсем непросто, так что можно Поддержать автора

Про настройки, на сайте фригейта есть ИИ который натаскан именно на документацию самого фригейта, ей можно и нужно пользоваться. https://docs.frigate.video/ сам сайт, а в правом нижнем углу Ask AI.

По традиции, ИИ все пытается нарисовать близняшек из Atomic heart)))
По традиции, ИИ все пытается нарисовать близняшек из Atomic heart)))

Настройки будут как для Orange Pi 5 plus, так и для версии с coral. Разницу в настройках я обозначу.

Вход для мини пк с коралом - в Дополнениях - Frigate - Веб интерфейс.

Вход для OrangePi по отдельному адресу http://192.168.2.18:5000/config или через Frigate Proxy.

Камеры и потоки.

Главное - понять какой поток у нас с камеры. У всех камер свой поток, нужно искать в интернете как правильно оформить. Некоторые производители требуют сначала добавить в свое приложение, подключить к роутеру и потом покажут ip адрес. Сам адрес можно найти в роутере, посмотреть подключённые устройства - тут уже все индивидуально.

У меня камеры PS Link и Ezviz

Для PS link такой поток rtsp://192.168.2.4:554/user=admin&password=ВАШ_ПАРОЛЬ&channel=1&stream=0?.sdp

Для EZVIZ поток такой rtsp://admin:ВАШ_ПАРОЛЬ@192.168.2.24:554

Для проверки потоков скачайте простой

https://www.videolan.org/vlc/index.ru.html

В медиа можно проверить поток.

Некоторые камеры могут вращаться, такая у меня одна и работают через ONVIF протокол. Нужно понять какой порт используется, у меня для pslink порт 8899, для ezviz камер порт 80 - с него можно и начать подбор. Можно скачать сканер https://www.polyvision.ru/po/dlya-windows/onvif-device-manager . Можно попробовать вот такую конфигурацию (есть на гите с отступами onvif Конфигурация камеры) :

-3

Собираем список потоков камер куда-нибудь в блокнот и можно сразу написать названия на латинском, а также кодек.

go2rtc настройка

Для аддона Frigate он есть в Дополнениях

Если в отдельном контейнере, тогда адрес такой http://192.168.2.18:1984/ http://ВашАдрес:1984

-4

Можно добавлять камеры через Add, либо сразу прописать конфигом. (комментарии # можно удалить). Для удобного копирования есть гит:

gist:7285192a75549a8e4564b32baf352ea5

Сохраняем и перезапускаем go2rtc.

Если будет такая ошибка при запуске frigate

Can't start addon_ccab4aaf_frigate-fa: 500 Server Error for http+docker://localhost/v1.48/containers/0c4c4c1c0aa04955085ac6610e3ae45f287ec719aaf4f26813880ea7401fcfbd/start: Internal Server Error ("driver failed programming external connectivity on endpoint addon_ccab4aaf_frigate-fa (90cdeb056d6bab624486a4985ee2c4de18f261e91530b4450d779b92d70604b2): failed to bind host port for 0.0.0.0:8555:172.30.33.4:8555/tcp: address already in use")

Останавливаем frigate и go2rtc, потом запускаем frigate и затем уже go2rtc

Добавление камер во фригейт.

У нас есть наша болванка конфигурация которую мы загрузили при установке. Теперь мы добавим камеры и проверим что все работает. Опять же, если go2rtc не установлен, тогда в path будем указывать поток, а в глобальных настройках не будем указывать блок с go2rtc.

В конфиге фригейта есть глобальные настройки которые применяются для всех камер, а есть локальные которые указываются для каждой конкретной камеры. Если есть глобальные, тогда локально уже нельзя указывать. Зачем нужны локальные настройки - например для звука, если у всех камер есть звук и вы вдруг добавили камеру без поддержки звука - тогда настройки на уровне глобальном будут выдавать ошибку - так у меня случилось с esp32 cam.

Глобальные настройки - все что идет до cameras:

-5

Добавляем камеры в блок go2rct и после глобального параметра cameras. Я буду показывать на примере своих камер. (код на гите с отступами ).

-6

Добавляем в нашу болванку все камеры которые есть в нашем блокноте. Сохраняем и перезапускаем.

Настроим обнаружение и прием Аудио.

Нужно убедиться что камеры могут транслировать аудио - можно посмотреть через тот же VLC. Тут видно Type: Audio

-7

Да и при проверке потока вы услышите звук - сделайте погромче на всякий случай.

Если У ВСЕХ камер будет звук то конфигурацию размещаем на глобальном уровне, в противном случае прописываем для каждой отдельно (писал выше)

(код на гите с отступами ).

-8

А вот на уровне камеры настройка - нужно добавить output_args: record: preset-record-generic-audio-aac :

(код на гите с отступами ).

-9

Как я писал ранее, локальная настройка нужна если мы используем камеру без звука, например esp32 cam.

То ради чего мы используем Frigate - настраиваем обнаружение.

Для обнаружения можно конечно использовать и процессор компьютера, но будет неэффективно и может влиять на работу Home Assistant. Поэтому в долгую я даже не пробовал такой метод.

Разгрузить процессор можно через ускоритель coral edge tpu или NPU ядра Orange pi 5 plus.

Ускорение на Orange PI 5 Plus:

Frigate рекомендует модели которые автоматически скачиваются в config/model_cache/rknn_cache. Вы можете выбрать модель в зависимости от ваших потребностей:

  • deci-fp16-yolonas_s: 24 МБ --- 25 мс
  • deci-fp16-yolonas_m: 62 МБ --- 35 мс.
  • deci-fp16-yolonas_l: 81 МБ --- 45 мс.

Рекомендуется начать с deci-fp16-yolonas_s для скорости, а затем протестировать другие для точности. Я тестировал разные модели и кроме сильной

Мы можем обнаруживать разные объекты, мне важно обнаруживать именно человека, дополнительно кошей и собак - так как у меня нет забора и надо понимать кто заходит. В дальнейшем на человека будет реакция тревога - а для кошек и собак пока только уведомление.

Глобально нам нужно указать Frigate использовать ускоритель от orangepi:

(код на гите с отступами ).

-10

Когда мы подключили ускорение для всех камер нам нужно для каждой указать какой кодек использовать. Пригодится тот список с потоками которым мы собирали.

В моем примере, у меня часть камер используют кодек h264, а часть кодек h265, поэтому нужно ускоритель для каждой камеры свой.

(код на гите с отступами ).

-11

Конфигурация теперь выглядит так - посмотреть на гите Конфигурация после настройки камер

Не обязательно, но в терминале Orange PI можно проверить нагрузки NPU

  • Для проверки нагрузки NPU используйте команду: watch -n 1 cat /sys/kernel/debug/rknpu/load
  • Это покажет, что вычисления выполняются на NPU, а не на CPU

Ускорение для Coral Edge TPU для мини пк

Ускоритель указывается так на глобальном уровне (посмотреть на гите с отступами.)

-12

Теперь добавим объекты для обнаружения. Их моного, вот список :

Available Objects | Frigate

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

Выбираем из списка нужные для обнаружения объекты и размещаем в коде.

Блок detect - Настройки обнаружения объектов

Разрешение напрямую влияет на точность обнаружения объектов:
Высокое разрешение (например, 1920x1080) : Позволяет лучше распознавать мелкие детали (например, лицо человека или номер автомобиля). Однако это требует больше вычислительных ресурсов. Низкое разрешение (например, 640x480) : Уменьшает нагрузку на процессор, но может привести к ошибкам распознавания (например, система может не заметить маленький объект, такой как кошка).
Обычно рекомендуется разрешение 1280x720 которое является хорошим компромиссом. Оно обеспечивает достаточно четкое изображение для обнаружения людей, животных и других объектов, не перегружая систему.

fps: 5

Этот параметр определяет частоту кадров (frames per second), которые будут анализироваться системой. Частота кадров напрямую влияет на точность и скорость обнаружения объектов:
Высокая частота (например, 10 или 30 FPS) : Обеспечивает более быстрое реагирование на движущиеся объекты, но значительно увеличивает нагрузку на процессор. Это может быть важно для зон высокой активности, таких как входная группа. У меня при выставлении более 7 fps писал предупреждение что нагрузка сильно увеличена.
Низкая частота (например, 1-2 FPS) : Снижает нагрузку на процессор, но может привести к задержкам в обнаружении объектов. Например, человек может успеть пройти мимо камеры до того, как система его заметит.
Рекомендация :
Для большинства сценариев в доме (например, контроль входной группы или участка) частота 5 FPS является оптимальной.

roles:

detect - основной поток для обнаружения объектов

audio - поток для обнаружения на основе звука

Мы можем обойтись этими двумя детектами - этого хватит для сигнализации.

Если вы определяете только один поток в inputs и не назначаете ему роль detect, Frigate автоматически назначит ему роль detect.

Фильтры обнаружения объектов - повышаем точность!!!

Когда система распознает объект, она присваивает ему идентификатор (номер) и вычисляет вероятность совпадения с определенным классом объекта (например, человек, автомобиль), выражая её в процентах.

Бывает что система неправильно распознает объект и если мы привязали срабатывание сигнализации - тогда будет не очень хорошо.

Я не зря писал что фригейт выпил много моей крови, ещё и терроризировал по ночам пока я не настроил фильтры. Примеры ошибок:

Вот подъем в 7 утра из-за кучи мусора. Тут видно что уверенно кучу батареек превратил в человека и запустил ревун.

Поэтому важно настроить фильтры, хотя бы на человека, так как информацию о появлении персоны мы будем использовать в автоматизациях.

Точность настраивается не только через уровень уверенности, но и размера обнаруживаемого объекта. Размер кадра: min_area: фильтрует объекты, которые слишком малы. Например, когда мелкие предметы (листья, птицы) ошибочно определяются как люди. Рекомендуемое начальное значение: 5000 пикселей. max_area: фильтрует слишком большие объекты. Например, когда тени или деревья определяются как люди. Рекомендуемое начальное значение: 100000 пикселей.

Уверенность определения: min_score: первичный фильтр. Если объект определен с уверенностью ниже этого значения (например, 0.5), он игнорируется как ложное срабатывание. threshold: окончательное решение. Принимает решение после нескольких кадров.

Пропорции объекта: Если соотношение = 1.0, объект имеет форму квадрата. min_ratio: значение 0.5 подходит для вертикальных объектов (например, стоящий человек - высокий и узкий). max_ratio: значение 2.0 подходит для горизонтальных объектов (например, лежащий человек - широкий и низкий).

Я пробовал **min_ratio и max_ratio** и frigate стал плохо определять человека (есть на гите с отступами):

-15

Настройка распознавания звука.

Настройка звука похожа на настройку обнаружения объектов. Все объекты можно найти тут https://github.com/blakeblackshear/frigate/blob/dev/audio-labelmap.txt

  1. max_not_heard: 30 - Определяет количество секунд без обнаруженного звука, после которых событие завершается.
  2. min_volume: 500 - Устанавливает минимальный уровень громкости для запуска обнаружения звука. Рекомендации по настройке:
  • 200 - высокая чувствительность
  • 500 - средняя чувствительность
  • 1000 - низкая чувствительность
  1. listen: - Определяет типы звуков для обнаружения. По умолчанию включены:
  • bark (лай)
  • fire_alarm (пожарная тревога)
  • scream (крик)
  • speech (речь)
  • yell (крик)
  1. filters: - Позволяет настроить параметры обнаружения для каждого типа звукаspeech: threshold: 0.88 - Устанавливает минимальный порог срабатывания для обнаружения речи. По умолчанию порог составляет 0.8

Аудио события работают путем обнаружения определенного типа звука и создания события. Событие завершается, когда звук не обнаруживается в течение настроенного времени. Аудио события сохраняют снимок в начале события, а также записи на протяжении всего события. Пример блока (есть на гите):

-16

Для разных типов можно взять разные пороги.

bark (порог 0.7): Средний порог для баланса между обнаружением и ложными срабатываниями. Лай собак может варьироваться по громкости и характеру.

fire_alarm (порог 0.85): Высокий порог, так как пожарная сигнализация имеет четкий и характерный звук. Важно избежать ложных срабатываний для этого критического события.

scream и yell (порог 0.5): Низкий порог для максимального обнаружения. Критически важные события, которые нельзя пропустить. Лучше получить ложное срабатывание, чем пропустить реальное происшествие.

speech (порог 0.8): Стандартный порог как рекомендовано в документации. Обеспечивает хороший баланс между обнаружением речи и ложными срабатываниями.

Финальная настройка камеры. Audio находится по отступам на уровне с Objects (есть на гите):

Настройка зон и ограничений детекции.

Бывает так, что часть камер выходят на дорогу с оживленным трафиком и нам не нужно сообщать о людях/машинах которые там передвигаются. Нужно сообщать только когда будет вторжение на мой участок.

В настройках выделяем зону и указываем название. Название нужно с маленькой буквы и без пробелов. Внизу есть All objects отмечаем Person для того что бы Alert приходил только когда человек зайдет на территорию. Остальное будет в разделе Detections просто обнаружение без тревоги.

Проставляем для всех камер зоны.

Дополнительно проставляем Маски - это нужно для снижения нагрузки на процессор. Выделяем области вроде временной метки камеры или фонари. Как это работает - frigate обнаруживает движение и начинает анализировать что за объект. Фонари которые постоянно двигаются создают лишнюю нагрузку на систему обнаружения.

-18

Выделив зоны и маски сохраняем и перезагружаем frigate. То что сохранено в настройках будет отображено в конфигурации.

Далее нужно отметить что получать сообщения будем только от зоны.

-19

Настройка параметров записи и скриншотов.

Блок record:

  • Отвечает за видеозапись с камер.
    Это основной блок, который гарантирует, что видеопоток записывается без перерывов.
  • enabled: true — без этого параметра видео не будет писаться вообще.
    В моей конфигурации видео записывается постоянно.
  • retain — настройка хранения основного потока записи:days: 14 — записи сохраняются 14 дней, что позволяет иметь архив за последние две недели для общего анализа. Видео после 14 дней начинает перезаписываться - старые уходят, новые появляются.
    mode: all — фиксируются все записи. Если места для хранения ограничены, можно выбрать mode: motion, чтобы сохранять только моменты с движением.
    Многие пользователи выбирают режим all, если у них достаточно пространства, чтобы иметь полную картину событий.
  • alerts.retain — хранение видео событий тревоги (например, push-уведомлений):days: 30 — хранение важных клипов увеличено до 30 дней.
    mode: motion — фиксируются только моменты с движением, что экономит пространство и обеспечивает фокусировку на значимых событиях.
    Такой подход позволяет дольше анализировать критичные случаи без перегрузки хранилища.
  • detections.retain — хранение видео по детекции объектов (например, людей, машин и т.д.):days: 30 — записи с детекцией сохраняются 30 дней.
    mode: motion — используется режим, фиксирующий только движения и таким образом экономящий ресурсы.
    Этот параметр часто настраивают так, чтобы в архиве оставались только значимые события для последующего анализа.

Блок snapshots:

  • Управляет созданием и хранением снимков с камер.
    Снимки дополняют видеозаписи, обеспечивая быстрый визуальный обзор инцидентов.
  • enabled: true — активирует создание снимков.
    Без этого параметра снимки вообще не генерируются.
  • retain — базовая настройка хранения снимков:default: 20 — система сохраняет по умолчанию 20 снимков.
    Можно увеличить их количество для более детального анализа или уменьшить для экономии памяти.
  • bounding_box: true — отображает рамки вокруг обнаруженных объектов.
    Это упрощает идентификацию важных деталей на снимках. При необходимости, для повышения производительности, этот параметр можно отключить.

Я выбрал непрерывную запись за 14 дней с режимом all, чтобы иметь полную картину событий, и отдельный архив тревожных и детекционных клипов – 30 дней, при этом для аларма использую режим motion для оптимизации хранения. Подобный баланс позволяет получать подробные данные для анализа инцидентов, не перегружая систему лишней информацией. Вот моя конфигурация для 1 ТБ памяти.

Конфигурация на глобальном уровне (есть на гите с отступами):

record:
enabled: true
retain:
days: 14
mode: all
alerts:
retain:
days: 30
mode: motion
detections:
retain:
days: 30
mode: motion

snapshots:
enabled: true
retain:
default: 20
bounding_box: true

Frigate интеграция для Home Assistant.

Это мостик между frigate сервером и Home Assistant через MQTT.

Позволяет получать данные от Frigate в Home assistant и использовать в автоматизациях.

Для связи нужно настроить MQTT, должен быть установлен брокер, например mosquitto, вот первоначальные настройки https://dzen.ru/a/Z1GHKaC_YR--V31m

Логин и пароль берем из Mosquitto брокера

Со стороны Frigate нужно направить на наш сервер. Для этого настроим часть в начале конфигурации:

(есть на гите с отступами):

-20

В HACS есть нужная нам интеграция, для этого нужна интеграция Frigate, вот репозиторий https://github.com/blakeblackshear/frigate-hass-integration Нет HACS - значит сюда:

В настройках Устройства и службы добавляем frigate. Адрес ваш локальный + порт 5000, вот например мой http://192.168.2.18:5000/ . Для аддона можно просто подтвердить что предложили http://ccab4aaf-frigate:5000

Эта интеграция нам нужна что бы получать по mqtt данные от frigate и дальше уже высылать сообщения. Мы также можем включать обнаружение звука и видео, запись и снапшоты через автоматизации.

-21

Конфигурация настроена, можно ещё эксперементировать с разными настройками и объектами для распознавания.

Следующая часть - Интерфейс и автоматизации тут

Вернуться к установке тут

Способ 1 Поддержать автора
Способ 2 https://donate.stream/yoomoney410013774736621

или через криптокошелёк (Только USDT) TCHekdJZFndXpDrHZGuTmqFNcqhWBTTzPr

Связаться со мной. (Консультации, проектирование и обучение)

Новый подход к электрике и дизайну помещений. Некоторые провода уже не нужно тянуть, какие-то решения можно принять после ремонта. Перенести выключатель, запустить кондиционер с телефона - возможно автоматизировать любую рутину.

Мой телеграм канал, там все быстрее обновляется телеграм.

Сайт smart4home.ru и альтернативный Умный дом на любом этапе.

Соц сети: RuTube канал Удобный дом / You Tube канал Удобный дом Яндекс Дзен: Удобный дом / InGram

Платформы специалистов: Авито / Профи.ру / Яндекс Услуги https://uslugi.yandex.ru/profile/EgorSmirnov-2294380?from=telek