Настройка конфигурации и как работает сам интерфейс. Сам Frigate мы установили в другой статье:
Сам по себе фригейт - бездонная бочка в плане настроек, саму документацию можно читать вечно. Я решил сфокусироваться на базовых настройках которые позволят мне использовать фригейт на обнаружение объектов, отсылать сообщения в Home Assistant и телеграм. То есть, все что бы организовать простую и надежную систему охраны.
Эта конфигурация далась совсем непросто, так что можно Поддержать автора
Про настройки, на сайте фригейта есть ИИ который натаскан именно на документацию самого фригейта, ей можно и нужно пользоваться. https://docs.frigate.video/ сам сайт, а в правом нижнем углу Ask AI.
Настройки будут как для 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 Конфигурация камеры) :
Собираем список потоков камер куда-нибудь в блокнот и можно сразу написать названия на латинском, а также кодек.
go2rtc настройка
Для аддона Frigate он есть в Дополнениях
Если в отдельном контейнере, тогда адрес такой http://192.168.2.18:1984/ http://ВашАдрес:1984
Можно добавлять камеры через Add, либо сразу прописать конфигом. (комментарии # можно удалить). Для удобного копирования есть гит:
Сохраняем и перезапускаем 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:
Добавляем камеры в блок go2rct и после глобального параметра cameras. Я буду показывать на примере своих камер. (код на гите с отступами ).
Добавляем в нашу болванку все камеры которые есть в нашем блокноте. Сохраняем и перезапускаем.
Настроим обнаружение и прием Аудио.
Нужно убедиться что камеры могут транслировать аудио - можно посмотреть через тот же VLC. Тут видно Type: Audio
Да и при проверке потока вы услышите звук - сделайте погромче на всякий случай.
Если У ВСЕХ камер будет звук то конфигурацию размещаем на глобальном уровне, в противном случае прописываем для каждой отдельно (писал выше)
(код на гите с отступами ).
А вот на уровне камеры настройка - нужно добавить output_args: record: preset-record-generic-audio-aac :
(код на гите с отступами ).
Как я писал ранее, локальная настройка нужна если мы используем камеру без звука, например 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:
(код на гите с отступами ).
Когда мы подключили ускорение для всех камер нам нужно для каждой указать какой кодек использовать. Пригодится тот список с потоками которым мы собирали.
В моем примере, у меня часть камер используют кодек h264, а часть кодек h265, поэтому нужно ускоритель для каждой камеры свой.
(код на гите с отступами ).
Конфигурация теперь выглядит так - посмотреть на гите Конфигурация после настройки камер
Не обязательно, но в терминале Orange PI можно проверить нагрузки NPU
- Для проверки нагрузки NPU используйте команду: watch -n 1 cat /sys/kernel/debug/rknpu/load
- Это покажет, что вычисления выполняются на NPU, а не на CPU
Ускорение для Coral Edge TPU для мини пк
Ускоритель указывается так на глобальном уровне (посмотреть на гите с отступами.)
Теперь добавим объекты для обнаружения. Их моного, вот список :
Главное понимать, чем больше объектов и больше по размеру модель - тем больше нагрузка, поэтому выбираем оптимально. Нужно ещё понимать, что если выберем машину на участке то он будет ее постоянно распознавать , есть отдельные настройки как это остановить, но добавлю отдельно.
Выбираем из списка нужные для обнаружения объекты и размещаем в коде.
Блок 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 стал плохо определять человека (есть на гите с отступами):
Настройка распознавания звука.
Настройка звука похожа на настройку обнаружения объектов. Все объекты можно найти тут https://github.com/blakeblackshear/frigate/blob/dev/audio-labelmap.txt
- max_not_heard: 30 - Определяет количество секунд без обнаруженного звука, после которых событие завершается.
- min_volume: 500 - Устанавливает минимальный уровень громкости для запуска обнаружения звука. Рекомендации по настройке:
- 200 - высокая чувствительность
- 500 - средняя чувствительность
- 1000 - низкая чувствительность
- listen: - Определяет типы звуков для обнаружения. По умолчанию включены:
- bark (лай)
- fire_alarm (пожарная тревога)
- scream (крик)
- speech (речь)
- yell (крик)
- filters: - Позволяет настроить параметры обнаружения для каждого типа звукаspeech: threshold: 0.88 - Устанавливает минимальный порог срабатывания для обнаружения речи. По умолчанию порог составляет 0.8
Аудио события работают путем обнаружения определенного типа звука и создания события. Событие завершается, когда звук не обнаруживается в течение настроенного времени. Аудио события сохраняют снимок в начале события, а также записи на протяжении всего события. Пример блока (есть на гите):
Для разных типов можно взять разные пороги.
bark (порог 0.7): Средний порог для баланса между обнаружением и ложными срабатываниями. Лай собак может варьироваться по громкости и характеру.
fire_alarm (порог 0.85): Высокий порог, так как пожарная сигнализация имеет четкий и характерный звук. Важно избежать ложных срабатываний для этого критического события.
scream и yell (порог 0.5): Низкий порог для максимального обнаружения. Критически важные события, которые нельзя пропустить. Лучше получить ложное срабатывание, чем пропустить реальное происшествие.
speech (порог 0.8): Стандартный порог как рекомендовано в документации. Обеспечивает хороший баланс между обнаружением речи и ложными срабатываниями.
Финальная настройка камеры. Audio находится по отступам на уровне с Objects (есть на гите):
Настройка зон и ограничений детекции.
Бывает так, что часть камер выходят на дорогу с оживленным трафиком и нам не нужно сообщать о людях/машинах которые там передвигаются. Нужно сообщать только когда будет вторжение на мой участок.
В настройках выделяем зону и указываем название. Название нужно с маленькой буквы и без пробелов. Внизу есть All objects отмечаем Person для того что бы Alert приходил только когда человек зайдет на территорию. Остальное будет в разделе Detections просто обнаружение без тревоги.
Проставляем для всех камер зоны.
Дополнительно проставляем Маски - это нужно для снижения нагрузки на процессор. Выделяем области вроде временной метки камеры или фонари. Как это работает - frigate обнаруживает движение и начинает анализировать что за объект. Фонари которые постоянно двигаются создают лишнюю нагрузку на систему обнаружения.
Выделив зоны и маски сохраняем и перезагружаем frigate. То что сохранено в настройках будет отображено в конфигурации.
Далее нужно отметить что получать сообщения будем только от зоны.
Настройка параметров записи и скриншотов.
Блок 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 нужно направить на наш сервер. Для этого настроим часть в начале конфигурации:
(есть на гите с отступами):
В HACS есть нужная нам интеграция, для этого нужна интеграция Frigate, вот репозиторий https://github.com/blakeblackshear/frigate-hass-integration Нет HACS - значит сюда:
В настройках Устройства и службы добавляем frigate. Адрес ваш локальный + порт 5000, вот например мой http://192.168.2.18:5000/ . Для аддона можно просто подтвердить что предложили http://ccab4aaf-frigate:5000
Эта интеграция нам нужна что бы получать по mqtt данные от frigate и дальше уже высылать сообщения. Мы также можем включать обнаружение звука и видео, запись и снапшоты через автоматизации.
Конфигурация настроена, можно ещё эксперементировать с разными настройками и объектами для распознавания.
Следующая часть - Интерфейс и автоматизации тут
Вернуться к установке тут
Способ 1 Поддержать автора
Способ 2 https://donate.stream/yoomoney410013774736621
или через криптокошелёк (Только USDT) TCHekdJZFndXpDrHZGuTmqFNcqhWBTTzPr
Связаться со мной. (Консультации, проектирование и обучение)
Новый подход к электрике и дизайну помещений. Некоторые провода уже не нужно тянуть, какие-то решения можно принять после ремонта. Перенести выключатель, запустить кондиционер с телефона - возможно автоматизировать любую рутину.
Мой телеграм канал, там все быстрее обновляется телеграм.
Сайт smart4home.ru и альтернативный Умный дом на любом этапе.
Соц сети: RuTube канал Удобный дом / You Tube канал Удобный дом Яндекс Дзен: Удобный дом / InGram
Платформы специалистов: Авито / Профи.ру / Яндекс Услуги https://uslugi.yandex.ru/profile/EgorSmirnov-2294380?from=telek