История проекта уличных камер для Frigate
Хочу поделиться историей своего проекта.
У меня была простая и понятная идея:
Сделать камеру для Frigate (прикольное приложение для обнаружения движений в кадре).
Максимально локально: никаких облаков, «китайских приложений», левых соединений наружу. Т.к. дома у родителей интернет от модема с симкой - скорость и качество соединения низкое.
Управление из Home Assistant. Потому что часть дома живет уже там и не хочется "плодить" приложения, да и отцу будет проще разобраться в чем-то одном.
В идеале — чтобы камера вообще могла жить без интернета (а на роутере можно было спокойно запретить ей выход наружу), и при этом всё управление оставалось внутри локальной сети.
То есть, с одной стороны — обычная IP-камера с RTSP. С другой — чтобы можно было в приложении поменять параметры и не лазить каждый раз в консоль. Почему не купил готовую? Можно было. Но мне нравится самому собирать, паять, прошивать.
Первая попытка: ESP32
Начинал с классики — ESP32-CAM и ESP32-S3 + OV2640.
ESP32 уже использовал в других проектах, платы мне знакомы и в целом близки.
Базовые штуки они делают неплохо:
картинку получить можно;
фотки в Telegram уходят отлично (даже с плохим интернетом);
Но как камера «для наблюдения» — боль:
стрим у меня был только MJPEG, а значит доп. нагрузка на сеть вайфая и миник, который собирал и перекодировал этот поток в h.264;
качество "видео"… мягко говоря, грустное;
Частые отвалы от Frigate. Да и фпс низкий и не очень стабильный.
Так я понял, что хочу H.264/H.265 с камеры и нормальный видеопайплайн, а это уже не про ESP32.
Находка: Luckfox — и первое разочарование
На Али наткнулся на платы Luckfox Pico на Rockchip RV1106. Почитал вики — выглядит как то, что нужно: аппаратное кодирование, нормальные сенсоры (камеры 4k и 1080р), есть готовые примеры. Да и цена приемлимая, в тот момент, когда покупал - вышло как сильно бюджетная камера.
Заказал, получил, попробовал… и разочаровался.
Встроенный RTSP-сервер (стандартный `rkipc`) у меня запускался и по Wi‑Fi (Luckfox Pico Ultra W), и по Ethernet (Pico Pro/Max). В помещении всё выглядело нормально. Радости не было придела!
Но стоило вынести камеру на улицу в солнечную погоду — картинка превратилась в белый экран. Я несколько дней ковырял настройки, пробовал разные профили — не победил.
Причем нейронки не смогли даже примерно подсказать в какую сторону "копать", где и что исправлять. В wiki тоже ничего не нашел. А на самом популярном репозитории на Github - плату использовали для разблокировки плойки.
Проект был заброшен в долгий ящик.
Возвращение: нейросети, грабли и маленькие победы
Примерно через полгода вернулся к идее — и начал методично разбирать, как это всё должно работать.
Параллельно мучил всё, что мучается: GPT/DeepSeek/Claude (без фанатизма, но иногда они хорошо помогают подсветить, где искать, о чем стоит задуматься и какие настройки вообще существуют).
В итоге, на базе примеров Luckfox и с кучей итераций получилось собрать свою реализацию, которая в реальной жизни ведёт себя предсказуемо и стабильно.
Вот что получилось реализовать в проекте:
Видео и потоки
Основной RTSP-стрим: H.264, в «родном» профиле сенсора (2K или 1080p, зависит от модуля).
Второй RTSP-стрим (sub/detect) для Frigate: уменьшенное видео (по умолчанию 640×360), "родное" разрешение детектора.
Управление из умного дома
Управление параметрами через MQTT.
Камера умеет Home Assistant MQTT Discovery — то есть появляется в HA как устройство автоматически, с сущностями/ползунками/переключателями.
Настройки сохраняются (переживают перезагрузку).
Что можно менять без перезапуска камеры (в HA)
FPS и битрейт потока.
Поворот/зеркало (mirror/flip).
Яркость/контраст/насыщенность/оттенок, резкость.
Режимы «день/ночь». Хотя по факту сейчас использую режим только "день".
Баланс белого: авто и пресеты.
Сейчас эксперементирую с корпусами, к одной камере напечатал корпус на 3D‑принтере.
Что ещё хочу сделать
Планы стараюсь держать реалистичными, но времени все-равно не хватает.
Детекция на самой камере (NPU 0.5/1 TOPS): платы это позволяют, хочется хотя бы MVP (человек/движение) и события в MQTT.
Разобраться с качеством в темное время суток, как по мне - чересчур много ряби и так быть не должно.
RTSP-авторизация: чтобы поток был не «всем в локалке открыт», а с логином/паролем.
Навести порядок в телеметрии MQTT: добавить полезные показатели и убрать тестовые, сейчас, как по мне - много лишнего.
Корпус: нормальный вариант под улицу, в идеале с сервой для поворота.
Звук: сейчас он есть в экспериментальном виде и ещё требует проверок по качеству.
P.S. Если будет интересно - дальше расскажу подробнее о стоимости, сборке и поделюсь кодом (на Github), а также покажу фото с камер, настройки Frigate и т.п.


Вот такие камеры сейчас установлены. У второй - пока корпус из банки, но главное ведь что внутри :D





