Armbian на Orange Pi 3b ради Frigate / Home Assistant
Я использую плату Orange Pi 3b 8gb как основную для небольших объектов. На борту с запасом оперативки 8гб, возможность установить sdd любого объема, достаточно usb портов (1USB 2.0 support Device or HOST mode, 1USB 3.0 HOST, 2*USB 2.0 HOST) - можно сказать ходовая плата. Да немного медленно компилирует для esphome и отладка на такой плате раздражает - но я на более мощном железе правлю файл и потом заливают на 3b. eMMC я не пробовал, не вижу в этом смысле если есть ssd которое по цене лучше и по функционалу качественнее.
Плата ещё очень энергоэффективная, что дает мне возможность подключить ее сразу к роутеру и использовать его питание. Меньше блоков питания, меньше проводов и все проще.
На некоторых объектах клиенты просили поставить 1-2 камеры просто для наблюдения за состоянием перед входной дверью. Я планировал через штатную интеграцию в Home Assistant подключить камеру и все. Потом я заметил запись built-in AI accelerator NPU with 0.8Tops computing power - это то что я использовал у себя на более мощном Ornage pi 5 plus для распознавания объектов. Не мог подумать что такая малютка как orange pi 3b может хоть немного в распознавание, особенно когда с таким напрягом компилирует esphome. Оказалось может. Я еще проверил официальный сайт frigate и приятно удивлен что есть поддержка RK3566 - супер же.
Я всегда использовал официальный образ для апельсинок, для orange pi 5 plus официальный образ содержал нужные драйверы для NPU, а вот для 3b Orangepi3b_1.0.8_debian_bookworm_server_linux6.6.0-rc5 в официальном образе драйверов нет - может потом встроят, но в этом образе нет. Официальные образы очень удобно вставали на sdd и сразу с нее грузились - это быстро и удобно.
Я ходил вокруг Armbian давно, не нравилось что загрузка идет с sd карты. Выхода однако не было, нашел версию с драйверами для NPU вот образ Armbian_community_25.11.0-trunk.21_Orangepi3b_bookworm_vendor_6.1.115_minimal.img. Не нравилось что поддержка только от сообщества, а не полная armbian поддержка как у других плат, но решил попробовать.
За свою цену считаю такой набор шикарным.
Все же по поводу SD идет холивар насколько хватит ресурса записи и прочее … учитывая стоимость крутых и надежных SD то проще взять ssd. В этой плате есть как раз место под обычную ssd. Только внимание, во второй ревизии она будет как на картинке, а вот в первой ревизии ssd меньше размером - уже натолкнулся на эту проблему.
В версии Armbian_community_25.11.0-trunk.21Orangepi3b_bookworm_vendor_6.1.115_minimal.img я попробовал все перенести загрузку с sd на sdd. Ничего не получилось, кроме ошибок и загрузки по-прежнему с sd. Но сообщество видимо быстро обновило образ до Armbian_community_25.11.0-**trunk.70**Orangepi3b_bookworm_vendor_6.1.115_minimal.img и все отлично запустилось с ssd - теперь для буду юзать армбиан.
Закупиться по моим ссылкам можно тут Железо для сервера
Производительность
Протестировав несколько дней, я был приятно удивлен на что способна плана. Распознавание объектов работает хорошо, не так быстро как на orange pi 5 plus, но определяет хорошо. Еще же зависит от камеры, а тут хорошая камера попалась Aqara G2hPro работающая через HomeKit. Крипово делает увеличение, но все же обновляет последние снапшоты:
Специальные карточки для отображения я не устанавливал пока, тестировал только с mqtt интеграцией frigtae.
Как обычно можно привязать автоматизации через доступные сущности, но для этого обязательно установить интеграцию Frigate. Тут есть и подсчет объектов, скрины, распознавание последнего определенного лица. Для подключения определения лиц нужно в настройках Обогащение данных переключить на Распознавание лиц.
После перезагрузки появится возможность внести свои фотки и обучить модель.
По мере обнаружения будет предложены еще фотки и можно их будет разметить что бы точнее обучить модель.
После обучения доступны и лица
Теперь по нагрузке - у меня одна камера Aqara G2hPro подключенная через HomeKit, второй камеры под рукой не оказалось. Модель для распознавания я выбрал большую, потому что в тестах с малой я разницы не обнаружил. Так или иначе, у клиента будет только 1 камера при входе за дверью, такой аналог глазка, только видно всю площадь перед дверью. Ну и запись всяких курьеров когда доставку оставили. Можно будет прикрутить всплывающую карточку на дашборде в приложении телефона если обнаружено движение за дверью.
Запись стоит на день, а по событиям на 30 дней - что должно хватить на 256 гб карте. Постоянная запись на день позволяет мне перемотать события в течении дня и глянуть то что не попало в движение… хотя сложно представить такой кейс.
record: enabled: true # Включить запись видео (false = запись выключена) sync_recordings: true # true = синхронизировать сегменты, удобнее для просмотра expire_interval: 900 # Интервал (в секундах) проверки и удаления старых записей (900 = каждые 15 минут) retain: # 🟡 ОБЩИЕ правила хранения всего видео архива days: 1 # Сколько дней хранить общий архив (1 день) mode: all # Режим хранения: # all – хранить всё видео (без фильтрации) # motion – хранить только моменты с движением # active_objects – хранить только когда был зафиксирован объект (человек, авто и т.п.) alerts: # 🔴 ХРАНЕНИЕ ВАЖНЫХ СОБЫТИЙ (тревоги/алерты) # Этот блок нужен для случаев, когда ты хочешь, # чтобы тревожные события хранились дольше, чем обычный архив. # Пример: общее видео хранится 1 день, но тревоги – месяц. retain: days: 30 # Сколько хранить тревоги (например: 7, 14, 30, 60, 365 дней) mode: motion # Режим хранения тревог: # all – хранить всё подряд (весь поток) в момент тревоги # motion – хранить только сегменты с движением во время тревоги # active_objects – хранить только фрагменты, где реально засекли объект (надежно и экономит место) detections: # 🟢 ХРАНЕНИЕ ДЕТЕКЦИЙ (конкретные события с объектами) # Здесь настраивается срок хранения видео, # где алгоритм зафиксировал объекты (люди, машины, животные). # В отличие от alerts – это не "система тревог", а просто записи с фактами обнаружений. retain: days: 30 # Сколько хранить видео с детекциями объектов mode: motion # Режим хранения детекций: # all – всё подряд, даже если объекта не видно # motion – только в моменты движения при детекции # active_objects – только фрагменты, где реально виден объект (экономит место)
В конфигурации по определению всё просто, только человек и лицо.
cameras: aqara_g2hpro: # 🟡 Имя камеры (уникальное). Это имя будет использоваться в Home Assistant и в UI Frigate. ffmpeg: # Настройки подключения к видеопотоку через ffmpeg inputs: # Список входных потоков (можно несколько – разные разрешения/потоки) - path: rtsp://127.0.0.1:8554/aqara_g2hpro # 📡 RTSP-ссылка на камеру или restream (здесь локальный restream на 8554 порту) input_args: preset-rtsp-restream # Набор аргументов ffmpeg для RTSP-потока: # preset-rtsp-restream – оптимальные параметры для restream сервера roles: # Роли, для чего используется данный поток: - detect # 🔎 detect – используется для анализа движения и детекции объектов - record # 🎥 record – используется для записи архива - audio # 🔊 audio – включить захват аудио (если камера поддерживает) detect: # 🔍 Настройки детекции движения и объектов width: 1280 # Ширина кадра, с которой работает детектор (уменьшение снижает нагрузку, но влияет на точность) height: 720 # Высота кадра для анализа (обычно пропорциональна RTSP потоку камеры) fps: 5 # Количество кадров в секунду, анализируемых детектором (чем меньше – тем меньше нагрузка) objects: # 🧍♂️ Настройки отслеживаемых объектов track: # Список классов объектов, которые нужно отслеживать - person # 👤 person – обнаружение людей - face # 🙂 face – обнаружение лиц (если включена модель с поддержкой face detection)
При таких вводных мне хватило записи на день и заняло не так много, где-то 1.5 гб в час.
По нагрузке, я думаю что как раз под 1 или 2 камеры можно использовать Orange pi 3b 8b это если использовать только на определение человека, если нагрузить ещё объектов или взять модель больше то думаю что плата будет кряхтеть. Это на постоянно включенном обнаружении, но не всегда я в кадре.
Да иногда ругается что использует много ресурсов CPU … но никак не влияет на умный дом и на работу камеры
Я скажу что мне плата и раньше нравилась, а теперь вообще огонь с возможностью подключить распознавание - это за небольшие деньги и такой комбайн. Буду использовать на объектах типа 1-2 комнаты квартира, конечно если не будет запроса сделать много камер.
Установка HA / Frigate на Armbian на Orange pi 3b с ускорением.
Запись образа
Записываем на SD образ старше Armbian_community_25.11.0-trunk.70_Orangepi3b_bookworm_vendor_6.1.115_minimal.img https://www.armbian.com/orangepi3b/
Старше - значит больше версия чем trunk.70
штатный пароль 1234 и придумываем дальше свой, как просит система.
sudo apt update && apt upgrade -y
Установи правильный часовой пояс, чтобы логи и расписания работали корректно.
dpkg-reconfigure tzdata
Следуй инструкциям на экране. Тебе нужно будет выбрать Europe
, а затем Moscow
(или другой подходящий для тебя часовой пояс).
Перенос root и загрузки с SSD
armbian-config
Нужно выбрать 7 Install/Update the bootloader on MTD Flash
И устанавливаем потом 4 Boot from MTD Flash - system on SATA, USB OR NVMe.
Соглашаемся со всем и после отключения вынимаем SD карту - теперь грузим с ssd.
Докер
Потом установим докер, через Containers:
Bluetooth
Нужно будет установить Bluetooth так как в штатном варианте я его не нашел, а он нам нужен будет в Home Assistant.
sudo apt update sudo apt install bluez pulseaudio-module-bluetooth -y # Если есть графика: sudo apt install blueman -y
sudo systemctl enable bluetooth sudo systemctl start bluetooth
rfkill list sudo rfkill unblock bluetooth hciconfig -a
Проверка как работают NPU
uname -r # ожидаем: 6.1.*-vendor-rk35xx # логи драйвера dmesg | grep -i -E 'rknpu|rknpu2|npu' || true # попытка получить версию драйвера (если debugfs доступен) sudo cat /sys/kernel/debug/rknpu/version 2>/dev/null || echo "no rknpu debug info"
Команда dmesg | grep -i rknpu
должна дать примерно такой результат:
[ ...] RKNPU fdab0000.npu: Adding to iommu group 0 [ ...] RKNPU fdab0000.npu: RKNPU: rknpu iommu is enabled, using iommu mode [ ...] RKNPU fdab0000.npu: Looking up rknpu-supply from device tree [ ...] RKNPU fdab0000.npu: Looking up mem-supply from device tree [ ...] [drm] Initialized rknpu 0.9.x YYYYMMDD for fdab0000.npu on minor 1
rknpu iommu is enabled
– значит включена система управления памятью (IOMMU);Initialized rknpu 0.9.x
– версия драйвера, где0.9.x
актуальна (обычно ≥ 0.9.6–0.9.8);- Появляется адрес контроллера
fdab0000.npu
.
Это типичный вывод, подтверждающий, что ядро обнаружило и инициализировало драйвер NPU. GitHub
Теперь можно продолжить установку по моей универсальной инструкции с Часть 2. Установка редактора кода VS Code и менеджера контейнеров Portainer:
https://teletype.in/@godisblind/eALTwAArLCo
Если устанавливали через мой способ выше, то можно по аналогии загрузить Frigate через Portainer https://github.com/smirnowegor/HA_Container/blob/main/FrigateRK.yaml
В Portainer ввести название файла при установке через репозиторий:
FrigateRK.yaml
После установки заходим в конфигурацию и вставляем свои данные от frigate. Включено распознавание лиц и объектов. Использую go2rtc для захвата потока с homekit, да и лучше его использовать и для обычных потоков rtsp - работает лучше.
Можно = нужно установить интеграцию Frigate через HACS - позволит получать данные от контейнера с Frigate и использовать в автоматизациях. При подключении используем адрес своей машины вместо ccab4aaf-frigate ( http://ccab4aaf-frigate:5000 ).
Для удобства в ингресс (смотри установку HA в контейнере выше) можно добавить сам Frigate. Тогда будет доступ из боковой панели. Нужно только подставить адрес своей машины.
ingress: frigate: work_mode: ingress title: Frigate icon: mdi:pencil url: <http://192.168.1.81:5000/>
Больше про распознавание объект тут https://dzen.ru/a/aAkGKnIEIjkwHdef
Полная конфигурация для камеры HomeKit и через go2rtc + распознавание лиц и людей. Вот шаблон для Orange Pi 3b что бы работал. В конфигурации у меня подключена тестовая камера через HomeKit.
mqtt: # Интеграция Frigate ↔ Home Assistant через MQTT enabled: true # Вкл/выкл MQTT (false — полностью отключить) host: localhost # Адрес брокера (localhost = тот же сервер, где Frigate) port: 1883 # Порт брокера (обычно 1883, для SSL — 8883) topic_prefix: frigate # Префикс топиков (можно менять, если несколько инстансов Frigate) client_id: frigate # Имя клиента MQTT (уникальное для каждого Frigate) record: # Запись видеоархива sync_recordings: true # Синхронизация сегментов (true = удобно перематывать в UI) enabled: true # Включить запись expire_interval: 900 # Интервал очистки (секунды), 900 = 15 минут retain: # Общий архив days: 1 # Сколько хранить видео mode: all # all/motion/active_objects alerts: # Особые события (алерты, тревоги) retain: days: 30 # Сколько хранить тревожные события mode: motion # motion/all/active_objects detections: # Отдельные события детекции объектов retain: days: 30 mode: motion snapshots: # Снимки объектов при событиях enabled: true # Включить снимки retain: default: 20 # Хранить до 20 снимков на событие bounding_box: true # Рисовать рамку вокруг объекта clean_copy: true # Дополнительно сохранить копию без рамки timestamp: false # Метка времени (false = не добавлять) crop: false # Вырезать только объект (false = полный кадр) quality: 100 # JPEG качество (0–100) ffmpeg: # Настройки ffmpeg hwaccel_args: preset-rkmpp # Аппаратное ускорение (для Rockchip) detectors: # Настройка движка детекции rknn: type: rknn # Тип движка: rknn, tpu, openvino, cpu num_cores: 1 # Сколько ядер NPU использовать (1–4) model: # Нейросеть для распознавания path: rock-i8-yolox_tiny # Путь к модели (YOLOX Tiny для RKNN) model_type: yolox # Тип модели (yolox, yolov5, efficientdet) width: 416 # Размер входа модели height: 416 input_tensor: nhwc # Формат входных данных (nhwc / nchw) labelmap_path: /labelmap/coco-80.txt # Список классов (COCO-80 или кастомный) go2rtc: # Restream + WebRTC streams: aqara_g2hpro: - homekit://192.168.1.82:44163?device_id=ВАША_КАМЕРА - ffmpeg:aqara_g2hpro#audio=aac webrtc: candidates: - stun:8555 # STUN сервер для проброса WebRTC cameras: # Камеры aqara_g2hpro: ffmpeg: inputs: - path: rtsp://127.0.0.1:8554/aqara_g2hpro input_args: preset-rtsp-restream roles: # Для чего используется поток - detect # Анализ движения и объектов - record # Запись архива - audio # Захват звука detect: width: 1280 # Разрешение для анализа (чем ниже — тем меньше нагрузка) height: 720 fps: 5 # Кадры/сек для анализа (5–10 достаточно) objects: track: - person # Отслеживать людей - face # Отслеживать лица (если модель поддерживает) detect: enabled: true # Включить детекцию объектов version: 0.16-0 # Версия Frigate semantic_search: enabled: false # Поиск по событиям (false = выкл.) model_size: small # small/medium/large (в зависимости от ресурсов) face_recognition: enabled: true # Включить распознавание лиц model_size: large # Модель (small = быстрее, large = точнее) lpr: enabled: false # Распознавание номеров авто classification: # Доп. классификация объектов bird: enabled: false # Пример: птицы (false = выкл.)
#сделайсам #обучение #настройка #планирование #wirenboard
Способ 1 Поддержать автора
Способ 2 https://donate.stream/yoomoney410013774736621
или через криптокошелёк (Только USDT) TCHekdJZFndXpDrHZGuTmqFNcqhWBTTzPr
Связаться со мной. (Консультации, проектирование и обучение)
Новый подход к электрике и дизайну помещений. Некоторые провода уже не нужно тянуть, какие-то решения можно принять после ремонта. Перенести выключатель, запустить кондиционер с телефона - возможно автоматизировать любую рутину.
Мой телеграм канал, там все быстрее обновляется телеграм.
Сайт smart4home.ru и альтернативный Умный дом на любом этапе
Соц сети: RuTube канал Удобный дом / You Tube канал Удобный дом Яндекс Дзен: Удобный дом / InGram
Платформы специалистов: Авито / Профи.ру / Яндекс Услуги https://uslugi.yandex.ru/profile/EgorSmirnov-2294380?from=telek