Подключение Frigate с использованием Coral TPU в HA
В предыдущем посте внимательный @Machaeon, заметил у меня на фотке Coral USB Accelerator и спросил, как он. К тому времени я еще не успел его настроить, поэтому пообещал написать пост как разберусь. Не то что бы я полностью разобрался, но постараюсь в этой статье рассказать
- что такое система домашнего видеонаблюдения, какие они бывают
- как установить Frigate и подключить к нему Coral TPU
- как настроить распознавание лиц
- какие ошибки я сделал в процессе настройки своей системы видеонаблюдения
Первые ошибки.
Когда мы говорим про умный дом, часто имеем в виду лампочки, розетки или голосовых ассистентов. Но на самом деле важнейший элемент - это видеонаблюдение и аналитика. Первым моим решением (ошибочным) было купить камеру Aqara Camera E1.
Минусы aqara стали мне очевидны только после покупки:
- нет возможности подключения по кабелю (видеосигнал через вайфай не самое надежное решение)
- нет нормальной интеграции с Home Assistant так как RTSP поток на ней не доступен (на самом деле после пары часов плясок с бубном и чатом гпт через go2rtc/HomeBridge мне удалось заставить HA увидеть камеру, но это был опыт который я не могу рекомендовать начинающим)
- большинство интересных функций вроде обнаружения лиц, животных, пожара, машины, посылки - убрано в подписку HomeGuardian за 9.99 евро в месяц.
Мне хотелось другого:
хранить записи локально, на NAS (зря его что ли покупал)
получать уведомления о реальном движении, а не «порхающей мухи»
интегрировать камеры в Home Assistant
определять не просто событие "человек в комнате" - но и распознавать этого человека.
Решением стал связанный тандем: Frigate + Coral TPU.
Frigate — это NVR (система записи и аналитики IP-камер) с открытым исходным кодом, созданная специально под Home Assistant.
Основные возможности:
- подключение камер по RTSP,
- детекция объектов (люди, машины, животные),
- хранение записей только по событиям,
- интеграция через MQTT и Home Assistant API,
- поддержка аппаратных ускорителей (Coral TPU, GPU).
Coral Edge TPU — это аппаратный ускоритель от Google, оптимизированный для TensorFlow Lite моделей.
Выполняет до 4 трлн операций в секунду при очень низком энергопотреблении.
Да, вместо Frigate можно использовать MotionEye, Shinobi или Blue Iris, но в первом нет АИ, второй показался сложным в настройке, а третий вариант платновый и под винду - а я же энтузиаст докера уже третий месяц.
Вместо Coral TPU я тоже мог использовать аналоги - подключить AORUS Gaming Box RTX 3080 или вообще использовать CPU. Но Видеокарта жрет существенно больше энергии и шумит, а проц не очень тянет четыре камеры - а я хочу со временем сделать еще парочку - на парковку и с балкона.
Установка.
Сам процесс установки оказался достаточно простым. Я напомню что использую виртуализатор Proxmox VE.
Создаем новую виртуалку. Я где то читал что CORAL может не работать на 13 дебиане и советы ставить на 12 - но забегая вперед скажу что это не правда, все работает хорошо. Если совсем лень, то можно воспользоваться готовым комьюнити скриптом по разворачиванию LXC пакета с Frigate, но мне показалось что проще пробрасывать физические устройства в виртуалку, а не в контейнер, поэтому я ставил фригейт сам.
Ставим собственно фригейт
sudo apt update
sudo apt install -y curl ca-certificates gnupg udev
# Docker
curl -fsSL https://get.docker.com | sh
sudo usermod -aG docker $USER
newgrp docker
Начинаем с докера. Потом в Проксмоксе прокидываем наш usb порт с коралом. Я советую прокинуть именно весь порт, а не отдельное устройство, меньше ебли с тем что виртуалка не увидит свисток.
Командой lsusb проверяем что корал виден, создаем каталоги под фригейт, монтируем NAS каталоги для хранения видео, создаем docker-compose.yml
version: "3.9"
services:
frigate:
container_name: frigate
image: ghcr.io/blakeblackshear/frigate:stable
restart: unless-stopped
privileged: true
shm_size: "512mb"
ports:
- "5000:5000" # Web UI
- "8554:8554" # RTSP (go2rtc)
- "8555:8555/tcp" # WebRTC
- "8555:8555/udp"
devices:
- /dev/bus/usb/004/004:/dev/bus/usb/004/004
device_cgroup_rules:
- 'c 189:* rmw'
volumes:
- /etc/localtime:/etc/localtime:ro
- /opt/frigate/config:/config
- /mnt/frigate/Frigate:/media/frigate
И в файл конфигурации фригейта добавляем настройки и наши камеры.
# === указываем брокера данных для связи с Home Assistant ===
mqtt:host: 192.168.0.* # адрес mqtt сервера, у меня он связан с Home Assistant
port: 1883
user: frigate # имя пользователя в mqtt
password: *** # пароль пользователя в mqtt
# === EdgeTPU (Coral USB) ===
detectors:
coral:
type: edgetpu
device: usb
# === Настройки записи ===
record:
enabled: true
retain:
days: 3
mode: motion
alerts:
retain:
days: 30
detections:
retain:
days: 30
snapshots:
enabled: true
retain:
default: 30
# === Настройки распознавания ===
detect:
enabled: true
version: 0.16-0
semantic_search:
enabled: true
model_size: small
face_recognition:
enabled: true
unknown_score: 0.6
recognition_threshold: 0.8
model_size: small
blur_confidence_filter: true # фильтровать размытые лица
lpr:
enabled: false
classification:
bird:
enabled: false
# === База и логирование ===
database:
path: /media/frigate/frigate.db
logger:
default: info
# === Камеры ===, указываем каждую камеру отдельно
cameras:
Имякамеры:
enabled: true
ffmpeg:
inputs:
- path: rtsp://имяпользователя:пароль@айпиадрескамеры:554/h264Preview_01_sub
roles: [detect]
input_args: [-rtsp_transport, tcp]
- path:
rtsp://имяпользователя:пароль@айпиадрескамеры/h264Preview_01_main
roles: [record]
input_args: [-rtsp_transport, tcp]
detect:
enabled: true
width: 640
height: 360
fps: 7
record:
enabled: true
retain:
days: 3
mode: all
Почти готово, вы великолепны. Осталось добавить интеграцию фригейт. Идем в HACS (надеюсь у вас он уже установлен!), затем подключить ее в разделе Настройки-Интеграции.
Обучение.
После того как все установлено и настроено - настало время самого интересного - настройка распознавания. Нам же нужно что бы камеры не просто видели какого то человека - а понимали что это за человек (и передавали это дальше в автоматизацию, чего я правда еще не сделал).
Идем в Настройки - Обогащение (Settings - Enrichments)
2. Добавляем лицо через Add Face (лучше скинуть селфи фронталки с телефона, можно парочку).
3. Активно ходим вокруг камеры, что бы она детектила лицо.
4. Затем заходите в Face Library - Train и вручную размечаете фотографии.
5. Указываем в конфиге frigate.yml настройки точности. Тут можно поиграть с вариантами в зависимости от освещенности, типа камеры, размещения.
6. В принципе можно еще поиграть с настройками точности
Google Coral достаточно редкий зверь, мне удалось достать его бушным на ебае только, поэтому прикладываю табличку сравнения - что бы понять чего его можно заменить.
Спасибо что дочитали, надеюсь кому то этот пост поможет избежать тех граблей, что были пройдены мной)





Хомячу Сервер
20 постов1.3K подписчика
Правила сообщества
Правила просты: уважение друг к другу, помощь новичкам, делимся только тем, что пробовали сами.