Полноценный сервер с Home Assistant Container на Wirenboard 8
Готовый и рабочий сервер должен тянуть на себе полностью Home Assistant и дополнительные программы типа EspHome. Конечно, нагружать такаие не очень мощные платы компиляцией тяжелого кода от ESPHome кажется бессмысленным, но вдруг нужно поправить прям с объекта. Я ставлю все контейнеры через Portainer - мне так удобнее, экономить ресурсы в этом я точно не хочу.
Сама модульность контроллера и вшитые порты это огонь, очень удобно. Все это сопровождается хорошей проработкой дров и адаптацией на уровене софта. Модули расширения https://wirenboard.com/ru/catalog/wb-extensions/
На удивление, мне плата показалась шустрой, а компиляция кода в ESPhome даже быстрее чем на orange pi 3b. Точно можно на небольшую квартиру или дом сделать полноценный удобный сервер в электрощит. Я сделал такой мини набор приложений которые позволят удобно обустроить УД на Home Assistant.
- VS code для более удобного копания в конфигурациях.
- Docker для загрузки Portainer.
- Wb-Engine плагин для отправки подключаемых устройства сразу с WB на Home Assistant.
- Zigbee2mqtt настроенный на локальный Home Assistant через встроенный Mosquitto.
- Matter сервер, так как таких устройств становится все больше.
- HACS понятное дело, без него HA не полноценная система.
- ESPHome как очень крутой инструмент добавления и настройки кастомных устройств.
- Whats up docker для контроля контейнеров и получение информации по необходимости обновления прямо в HA.
- Duplicati как резервное копирование, так как теперь бекапы HA не полноценные в контейнере.
На многое у меня готовы скрипты/образы на гитхабе. Они специально адаптированы что бы не забивать и без того малый раздел rootfs, а писать сразу на большой раздел. Пришлось немного погонять скрипты, так что если вылезет ошибка - сообщите. https://github.com/smirnowegor/ESP-WB/tree/main
Это будет полная установка от чистой системы до полноценного сервера, некоторые шаги будут повторяться с настройками Это основная статья где подробно про мосты с другими HA и тестированием оборудования от WB.
В конце будет бонус раздел, в котором после (почти) каждого элемента будет скринт из таблицы состояния системы (htop). Понять насколько какой элемент добавляет нагрузки и съедает ресурсы.
Процесс установки HA на Wirenboard 8 (2507 stable).
Установка прошивки и начальные настройки.
Многие вещи взял из оф инструкции https://wiki.wirenboard.com/wiki/Wiren_Board_8.5
Первое подключение
Оба Ethernet порта контроллера настроены на получение IP-адреса по DHCP, поэтому вам понадобится роутер с настроенной раздачей IP-адресов — обычно это любые роутеры, стоящие в квартире или офисе:
- Возьмите патчкорд с коннекторами RJ-45 и установите его одной стороной в свободный порт роутера, а другой в один из портов контроллера.
- Зайдите в настройки вашего роутера и посмотрите, какой IP-адрес он выдал контроллеру. Другие способы узнать IP-адрес.
- Откройте на компьютере, подключённому к тому же роутеру, что и контроллер, веб-браузер и введите IP-адрес из предыдущего пункта.
Очень важно поменять права доступа.
Для изменения настроек контроллера вам нужен уровень доступа Администратор, который можно выставить в разделе Настройки → Права доступа. Без этого ничего дальше настроить не получится.
Прошивку через веб-интерфейс удобно использовать, если на компьютере нет интернета и вы используете только встроенное в контроллер ПО. Способ подходит для обновления внутри веток stable или testing, а также для перехода со stable на testing.
При обновлении сохраняются пользовательские файлы и настройки только в /mnt/data
, но стороннее ПО будет удалено. Рекомендуем сделать резервную копию.
Cсылка для скачивания FIT-файлов в веб-интерфейсе контроллера Wiren Board
Вам понадобится fit-файл прошивки для вашей версии контроллера:
Другие версии ПО вы найдёте в нашем репозитории.
Также в свежих релизах FIT-файл можно скачать по ссылке в веб-интерфейсе: Настройки → Система При загрузке прошивки через веб-интерфейс имя файла не имеет значения.
У нас такой экран в устройствах, 1 wire нашелся автоматически и уже показывает данные.
Дополнительное обновление через командную строку
Вход через ssh для доступа к командной строке подключитесь к контроллеру по протоколу SSH или через отладочный порт. Включение прав администратора Логин и пароль по умолчанию root/wirenboard.
sudo apt update && apt upgrade -y
Установи правильный часовой пояс, чтобы логи и расписания работали корректно.
dpkg-reconfigure tzdata
Следуй инструкциям на экране. Тебе нужно будет выбрать Europe
, а затем Moscow
(или другой подходящий для тебя часовой пояс).
Установить VS code для удобства
Не обязательно, но очень удобно в дальнейшем работать с файлами и конфигурациями. Скрипт адаптирован под перенос на большую память что бы не забивать rootfs. Порт лучше выбрать 9091, так как дефолтный 8080 может быть занят Zigbee2mqtt
sudo bash -c "$(curl -fsSL https://raw.githubusercontent.com/smirnowegor/HA_Container/main/vscodeoneclick.sh)"
После установки нам предложат адрес и переходим по предложенному адресу. Открываем папку через “/” и будет доступна вся система.
Установка происходит на /mnt/data и не забивает rootfs
============================================== root@wirenboard-A4DURUYC:~# df -hT Filesystem Type Size Used Avail Use% Mounted on /dev/root ext4 2.0G 747M 1.1G 41% / devtmpfs devtmpfs 2.0G 0 2.0G 0% /dev tmpfs tmpfs 2.0G 4.0K 2.0G 1% /dev/shm tmpfs tmpfs 787M 1.3M 786M 1% /run tmpfs tmpfs 5.0M 0 5.0M 0% /run/lock /dev/mmcblk0p6 ext4 55G 1.1G 51G 2% /mnt/data tmpfs tmpfs 394M 0 394M 0% /run/user/0 root@wirenboard-A4DURUYC:~# lsblk -f NAME FSTYPE FSVER LABEL UUID FSAVAIL FSUSE% MOUNTPOINT mmcblk0 ├─mmcblk0p1 ├─mmcblk0p2 ext4 1.0 rootfs1 53108673-ae75-4681-8b39-5780e6a8e8ce 1.1G 38% / ├─mmcblk0p3 ext4 1.0 rootfs2 1230e5bc-0fa4-4d87-b7b0-f088703ebeef ├─mmcblk0p4 ├─mmcblk0p5 swap 1 c6489b97-e46e-446e-8738-9428774a380b [SWAP] └─mmcblk0p6 ext4 1.0 data 20e1d3ce-b157-4346-9f2e-4194196129ea 50.9G 2% /mnt/data mmcblk0boot0 mmcblk0boot1
Найдем и подключим устройства
Подготовим и проверим оборудование.
Настройки - Конфигурационные файлы - Настройка драйвера Serial-устройств
Тут можем найти все устройства автоматически, ну почти все… счетчик сторонний сам не нашелся.
Счетчик можно добавить из шаблонов
Все устройства прокинулись, их нужно предварительно настроить. Это нужно сделать до того как полетят в Home Assistant. Я настрою в отдельных статьях
Счетчик электричества https://teletype.in/@godisblind/8iFvMlHuuSU
Диммер https://smart4you.notion.site/WB-MDM3-24e8751588a580348563e51549561444?pvs=74
Датчик температуры и влажности https://smart4you.notion.site/WB-Modbus-20e8751588a580a9b57cf0f4cc1b5621?pvs=74
WB Комбинированный датчик (темп, движения, СО2…) + Zigbee https://smart4you.notion.site/WB-2-Zigbee-26c8751588a580eaa1a5e6c80cd3e7a8?pvs=74
Счетчик Меркурий 230 как бонус https://smart4you.notion.site/3-2009-26d8751588a58085920fdf5f6d759fa7#26d8751588a58085920fdf5f6d759fa7
Немого про фейл, у меня скакнуло электричество во время обновления и пришлось восстанавливать прошивку датчика https://wiki.wirenboard.com/wiki/Wb-mcu-fw-updater#Восстановление_(recover)
Установка Wb-Engine на WB.
Wb-Engine устанавливается на сам контроллер WB и “отправляет” выбранные сущности в броке с автоопределением для Home Assistant. Кто его потом заберт - свой локальный HA или через мост на другой брокер mqtt в другой HA не так важно.
Установка и настройка wb-engine
на Wiren Board
- Подключись по SSH к устройству WB (192.168.2.39).
- Установи
wb-engine
, чтобы автоматически создать виртуальные устройства и экспортировать их в Home Assistant:
wget https://github.com/4mr/wb-engine/releases/latest/download/wb-engine_arm64.deb dpkg -i wb-engine_arm64.deb rm wb-engine_arm64.deb
Через Engine не все перелетают параметры в MQTT сразу, те что не опрашиваются то отображатся для передачи в HA не будут. Нужно сначала настроить опрос = “включить” параметр, а потом его уже можно будет передать в НА.
Не все параметры судя по всему можно отправить … например настройки скорости затемнения и прочих. Входы выбор действий списком…. но я и в Устройствах на дашборде тоже не вижу в WB - а вот и ответ.
Сейчас в WB Engine действительно есть ограничение: он в MQTT и, соответственно, в HA отдает только те параметры, которые помечены как контролы (controls
) в описании устройства. Конфигурационные параметры драйвера (вроде «Кривая диммирования») туда не попадают автоматически — это сделано сознательно, чтобы не засорять MQTT служебными настройками.
Установка Docker
Что бы работали контейнеры нужнен докер) оно и понятно. Тут главное отправить докер именно на большую память, а также что бы все контейнеры и тяжелые образы были на большой памяти. Скрипт автоматический, но следить нужно.
curl -fsSL https://raw.githubusercontent.com/smirnowegor/ESP-WB/main/fastDockerWb.sh | bash
После установки докера выглядит так, тут важно конечно следить за ресурсами.
Устанавливаем Portainer
Теперь нам нужна приложуха для установки контейнеров, хотел бы использовать Dockge, но он не работает в ингресс. Зальем тоже скриптом. В скрипте установка
sudo bash -c "$(curl -fsSL https://raw.githubusercontent.com/smirnowegor/ESP-WB/refs/heads/main/fastPortainerWB.sh)"
После установки не сильно нагрузило систему
Установка Home Assistant
Теперь сам великий Home Assistant - идем в Portainer и устанавливаем в разделе Stacks. Репозиторий https://github.com/smirnowegor/ESP-WB
Репозиторий тот же, а название файла homeassistantWB.yaml
организацию файла можно посмотреть в гите https://github.com/smirnowegor/ESP-WB/blob/main/homeassistantWB.yaml
При первом входе нашел кучу устройств из моей сети.
Установка Zigbee2mqtt на WB и добавление в HA.
У меня стоит модуль с zigbee, в слоте 1.
Его нужно сначала включить в настройках
Находится в конфигурационных файлах в Модули расширения и порты
Дальше через терминал запустить мой скрипт, который сам найдет нужный модуль и заполнит конфигурацию. Дополнительно установит wb-zigbee2mqtt/ Следим за установкой, потому что будут вопросы для подтвержения и выбора.
bash <(curl -L https://raw.githubusercontent.com/smirnowegor/ESP-WB/refs/heads/main/fastZ2MWB.sh)
После успешной установки видим
Выставляем адрес нашего сервера WB
Любые устройства подключенные через Z2M теперь залетают в Home Assistan. Можем добавить и устройства от самого контроллера через wb-engine который в веб интерфейсе WB, все тоже полетит автоматом в HA.
Теперь установим доп приложения.
Matter сервер
Matter сервер, пока мало им пользуюсь, но вдруг нужен будет. Установка как и выше через Portainer, репозиторий тот же https://github.com/smirnowegor/ESP-WB Имя образа
MatterWB.yaml
В HA в установке интеграций добавляем Matter. Адрес ставить не обязательно, можно просто согласиться.
https://getwud.github.io/wud/#/?id=introduction Удобная приложуха для наблюдения за контейнерами и нормально отправляет данные через mqtt
docker network create homeiot_internal
Последний контейнер - это наблюдатель за контейнерами) Whats up docker. имя
wudWB.yaml
и адрес http://192.168.2.39:3006/containers Ваш IP и порт 3006
Вот так можно следить за контейнерами. Портейнер использую старой версии что бы можно было добавить через Ingress
HACS очень нужен
Отличненько от предыдущего метода, быстро и удобно. Продолжаем.
Надо установить HACS - его установка должна быть в той же папке что и сам Home Assistant - иначе не встанет, скрипт должен сам найти нужную папку.
sudo bash -c "$(curl -fsSL https://raw.githubusercontent.com/smirnowegor/HA_Container/main/fastHacs.sh)"
Далеко не отходим и установим удобную штуку для размещения ссылок на контейнеры прямо в HA как это происходит с аддонами. https://github.com/lovelylain/hass_ingress
Что бы было удобно все делать из боковых панелей мы сразу добавим VS Code. Для этого в этом сам vs code отправляемся и находим Home Assistant configuration.yaml (по скриптам тут /mnt/data/udobnidom/homeassistant/config) и вставляем следующее
ingress: vscode: work_mode: ingress title: VS Code icon: mdi:microsoft-visual-studio-code url: <http://192.168.2.39:9091/> # Это адрес машины и порт который выбрали при установке VS code
Теперь перезагружаем Home Assistant и у нас в боковой панели удобный и знакомый по supervised VS Code.
Добавим и другие контейнеры (Не забываем менять адрес на свой!)
ingress: vscode: work_mode: ingress title: VS Code icon: mdi:microsoft-visual-studio-code url: <http://192.168.2.39:9091/> # Это адрес машины и порт который выбрали при установке VS code esphome: work_mode: ingress title: ESPHome icon: mdi:chip # Подходящая иконка для ESPHome url: <http://192.168.1.74:6052/> zigbee2mqtt: work_mode: ingress title: Zigbee2MQTT icon: mdi:zigbee # Иконка Zigbee url: <http://192.168.1.74:8080/> portainer: work_mode: ingress title: Portainer icon: mdi:docker # Иконка Docker, так как Portainer управляет контейнерами url: <http://192.168.1.74:9000/>
Все удобно, а главное что работает и по внешним ссылкам без ошибки http-httpS
Установка ESPhome
Nехнически установить и запустить ESPHome (dashboard/CLI) на самом Wiren Board можно (через Docker или pip), но это не “путь по умолчанию” для сообщества WB. Официальная документация Wiren Board ориентирует на подключение ESPHome‑устройств по MQTT через конвертер esphome2wb, а не на хостинг ESPHome на контроллере. Это связано с ресурсами: сборки под ESP‑IDF требуют много места и RAM; на WB это часто выливается в ошибки “No space left on device”, если не вынести кэш и /tmp на большой раздел.
Долго шлифовал конфигурацию и можно загрузить адаптированную под WB. Установка через Portainer, репозиторий тот же https://github.com/smirnowegor/ESP-WB
espHomeWB.yaml
Процесс компиляции больших файлов не очень быстрый, но все равно работает и не виснет и не жалуется на забитую память. Если грузануть в root то точно можно получить такую ошибку
Бекапы через Duplicati
Я использую эту приложуху для установок HA в контейнере, значит и тут поможет. Самая хорошая фишка - загрузка в облако без танцев с бубном.
Мы лишь установим через адаптированный скрипт. В процессе будут введены настройки и пароли.
sudo bash -c "$(curl -fsSL https://raw.githubusercontent.com/smirnowegor/ESP-WB/refs/heads/main/duplicatiFastWB.sh)"
Добавляем интеграцию в Home Assistant репозиторий нужно добавить в HACS https://github.com/txxa/hass-duplicati
Для этого в Добавить интеграции добавляем Diplicati и вбиваем http://localhost:8200 и наш пароль от входа в интерфейс (не ключ шифрования) . Будет работать только после создания первого бекапа, как его делать тут
https://teletype.in/@godisblind/eALTwAArLCo
Все можем контролировать из HA
Удаленный доступ можно настроить по аналогии
Как тут https://teletype.in/@godisblind/eALTwAArLCo
Работа системы
Все достатно шустро работает, по идее можно еще установить карту памяти что бы добить нужными приложениями… но надо ли. Например Frigate я даже и пробовать не буду ставить - он для другой машинки.
У меня все что нужно нашел внутри сети и сам даже добавил весы от сяоми.
В принципе, если бы не цена то был бы мой любимчик - поставил в щит и забыл + ещё интерфейсов дофига. Возможностей тоже много - knx, opentherm и другое веселье) Куча модулей!!!!
Памяти осталось много свободной
Те приложения которые можно я вынес на боковую панель через ингресс, значит будет грузить и по внешней ссылке.
Сильно не перегревается, но у меня в тестовом варианте не сидит в шкафу.
Не все загрузил, но это тестовый вариант.
Загрузка системы с добавлением сервисов.
Подключение устройств, wb-engine и docker
После установки Home Assistant
После установки WUD, Matter, HACS
Компиляция сильно нагрузит процессоры. Вот при предыдущих пусках
По времени конечно мощно … понятно что лучше готовить на другой машине прошивки.
size. RAM: [= ] 14.3% (used 46936 bytes from 327680 bytes) Flash: [========= ] 86.9% (used 1594584 bytes from 1835008 bytes) Building .pioenvs/plant-sensor/firmware.bin Warning: DEPRECATED: 'esptool.py' is deprecated. Please use 'esptool' instead. The '.py' suffix will be removed in a future major release. Creating ESP32C3 image... Successfully created ESP32C3 image. merge_factory_bin([".pioenvs/plant-sensor/firmware.bin"], [".pioenvs/plant-sensor/firmware.elf"]) Info: bootloader.bin not found - skipping Info: partition-table.bin not found - skipping Info: ota_data_initial.bin not found - skipping Info: plant-sensor.bin not found - skipping Using FLASH_EXTRA_IMAGES from PlatformIO environment Merging binaries into /build/plant-sensor/.pioenvs/plant-sensor/firmware.factory.bin Merging binaries with esptool SHA digest in image updated. Wrote 0x195660 bytes to file '/build/plant-sensor/.pioenvs/plant-sensor/firmware.factory.bin', ready to flash to offset 0x0. Successfully created /build/plant-sensor/.pioenvs/plant-sensor/firmware.factory.bin esp32_copy_ota_bin([".pioenvs/plant-sensor/firmware.bin"], [".pioenvs/plant-sensor/firmware.elf"]) Copied firmware to /build/plant-sensor/.pioenvs/plant-sensor/firmware.ota.bin ======================== [SUCCESS] Took 1211.06 seconds ========================
Финальная система (может rootfs немного забит из-за тестов).
#сделайсам #обучение #настройка #планирование #wirenboard
Способ 1 Поддержать автора
Способ 2 https://donate.stream/yoomoney410013774736621
Способ 3 телеграм https://t.me/tribute/app?startapp=dvHM
или через криптокошелёк (Только USDT) TCHekdJZFndXpDrHZGuTmqFNcqhWBTTzPr
Связаться со мной. (Консультации, проектирование и обучение)
Новый подход к электрике и дизайну помещений. Некоторые провода уже не нужно тянуть, какие-то решения можно принять после ремонта. Перенести выключатель, запустить кондиционер с телефона - возможно автоматизировать любую рутину.
Мой телеграм канал, там все быстрее обновляется телеграм.
Сайт smart4home.ru и альтернативный Умный дом на любом этапе
Соц сети: RuTube канал Удобный дом / You Tube канал Удобный дом Яндекс Дзен: Удобный дом / InGram
Платформы специалистов: Авито / Профи.ру / Яндекс Услуги https://uslugi.yandex.ru/profile/EgorSmirnov-2294380?from=telek