August 27

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 которое по цене лучше и по функционалу качественнее.

у ИИ все под контролем, прям как у Юрия из Red Alert

Плата ещё очень энергоэффективная, что дает мне возможность подключить ее сразу к роутеру и использовать его питание. Меньше блоков питания, меньше проводов и все проще.

На некоторых объектах клиенты просили поставить 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

подключаемся через SSH.

штатный пароль 1234 и придумываем дальше свой, как просит система.

Обновляем всю эту систему:

sudo apt update && apt upgrade -y

Установи правильный часовой пояс, чтобы логи и расписания работали корректно.

dpkg-reconfigure tzdata

Следуй инструкциям на экране. Тебе нужно будет выбрать Europe, а затем Moscow (или другой подходящий для тебя часовой пояс).

Перенос root и загрузки с SSD

В командной строке вбиваем

armbian-config

Входим в System

Далее Storage

Выбираем Install

Нужно выбрать 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