Подключение 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 достаточно редкий зверь, мне удалось достать его бушным на ебае только, поэтому прикладываю табличку сравнения - что бы понять чего его можно заменить.
Спасибо что дочитали, надеюсь кому то этот пост поможет избежать тех граблей, что были пройдены мной)








