Инструкция по установке Home Assistant Stable c поддержкой Bluetooth, Portainer, File editor на контроллер Wirenboard 7 в docker-compose

СКАЖУ СРАЗУ СУПЕРВИЗОРА В HA В ЭТОМ МЕТОДЕ НЕТ!

За основу этого материала взята статья Установка Docker и Portainer для Home Assistant - IO Home которую я не один раз (не один раз, а целых пять раз) опробовал на своих контроллерах WB7 и других устройствах с ОС debian11 и debian 12).

В этом материале я немного переделал материал излагаемый автором под особенности установки стороннего ПО на контроллер Wirenboard для того, чтобы не забивать основную память устройства, а устанавливать все в /mnt/data как рекомендует производитель WB.

Хочу заметить что отличия от первоисточника указанного выше минимальные.

Также хочу заметить, что все действия в данной инструкции и все команды выполняются от имени пользователя root, если вы работаете с WB от имени другого пользователя то пред началом выполнения своих действий вам необходимо выполнить команду sudo -s и ввести свой пароль суперпользователя (если вы его не меняли то по умолчанию ваш пароль wirenboard). Узнать под каким имен вы зашли в систему можно командой whoami

Отличия от инструкции предлагаемой Установка Home Assistant на контроллер Wiren Board — Wiren Board в том, что предлагаемый мной метод установки для HA и других контейнеров, которые могут вам в дальнейшем пригодиться для работы в течении всего периода эксплуатации контроллера, намой взгляд гораздо проще в плане дальнейшей эксплуатации и обновления и пересоздания каждого из ранее установленных контейнеров.
При выборе метода установки docker-compose (Почитать о нем можно тут Руководство по Docker Compose для начинающих / Хабр) обновление всех уже установленных и описанных в фалей docker-compose.yaml контейнеров в дальнейшем происходит всего тремя простыми командами:

  1. cd /mnt/data - Команда для перехода к директории хранящей файл docker-compose.yaml (в нем хранятся данные всех создаваемых нами в этой инструкции контейнеров)
  2. docker compose pull - Команда для загрузки новых образов контейнеров описанных в файле docker-compose.yaml
  3. docker compose up -d - Команда установки обновлений и запуска контейнеров описанных в файле docker-compose.yaml

И так приступим.
Я имею на руках контроллер Wiren Board 7.4.3, release wb-2401 (as stable) это последняя на сегодняшний момент версия ПО

  1. на операционную систему, на которой еще не стоит docker установим его и проверим его работоспособность по инструкции:
    Установка Docker на контроллер Wiren Board — Wiren Board
  2. перейдем в директорию которая будет хранить все файлы связанные с установками новых контейнеров хранящихся в докере, для этого введем команду:
    cd /mnt/data
  3. создадим и сразу отредактируем для установки всех создаваемых нами контейнеров файл конфигурации docker-compose.yaml , в который мы в дальнейшем будем добавлять новые контейнеры. Выполним команду:
    nano docker-compose.yaml

Далее я предлагаю вам установить “Portainer” (что это такое вы можете почитать например тут Portainer | Инструмент управления контейнерами с открытым исходным кодом ).
Если коротко то Portainer сможет вам помочь удобным образом перезагружать контейнеры, смотреть логи журналов событий при неудачном запуске этих контейнеров и т. д., в общем с его помощью можно решать многие другие задачи по созданию новых и конфигурированию уже существующих контейнеров.

Обращаю ваше внимание, если вам удобны другие способы управления и мониторинга контейнеров и вам не хочется забивать память WB разными программами которыми вы не собираетесь в дальнейшем пользоваться, то вы можете пропустить шаг конфигурации контейнера Portainer в файле docker-compose.yaml и начать сразу редактировать свой файл docker-compose.yaml с пункта касающегося установки Home Assistant.

Создаем файл конфигурации всех поднимаемых контейнеров docker-compose.yaml - вводим команду (обратите внимание что вы по прежнему должны находиться по пути /mnt/data) вводим команду:

В открывшемся редакторе файлов Nano открылся созданный нами файл docker-compose.yaml, который изначально будет пустым, в него вставляем с помощью правой кнопки мыши следующие скопированные данные, важно сохранять все пробелы:

version: '3.0'

services:
  portainer:
    container_name: portainer
    image: portainer/portainer-ce:latest
    restart: unless-stopped
    ports:
      - "9000:9000/tcp"
      - "9443:9443/tcp"
    environment:
      - TZ=Europe/Moscow
    volumes:
      - /etc/localtime:/etc/localtime:ro
      - /var/run/docker.sock:/var/run/docker.sock
      - ./portainer/data:/data
  1. Нажимаем сочетание клавиш ctrl+s (тем самым сохраняем содержимое созданного файла), а затем нажимаем сочетание клавиш ctrl+x (тем самым закрывая редактор Nano)

  2. После сохранения и закрытия редактируемого файла вы попадаете опять в командную оболочку, в которой вам нужно выполнить следующую команду, которая необходима чтобы установить сконфигурированный вами контейнер под названием Portainer. Устанавливаемые файлы контейнера разместятся директории mnt/data/portainer. Выполняем команду:

docker compose up -d

  1. После успешной загрузки Portainer через некоторое время (примерно 1-3 минуты) станет доступным по IP адресу вашего Wirenboar с добавлением соответствующего порта после IP адреса:
    https://<ip адрес вашего WB7>:9443 # зашифрованное содинение (например у меня это https://192.168.1.124:9443)
    http://<ip адрес вашего WB7>:9000 # не защищенное соединение (например у меня это http://192.168.1.124:9000)

  2. После того как вы вошли в WEB интерфейс Portainer вам необходимо придумать новый логин и пароль для входа, который необходимо запомнить или записать, он потребуется для дальнейшего входа в систему.
    На создание пользователя выделяется определенное время, поэтому к настройке нового пользователя лучше приступить сразу после установки контейнера.
    После настройки нового пользователя на главной странице portainer нужно нажать на изображение кита, после этого вы можете перейти на вкладку container в которой вы сможете увидеть запущенный одноименный контейнер под названием “portainer”.

Итоговая структура проекта:

/mnt/data
         ├── docker-compose.yaml (файл с конфигурацией контейнера portainer)
         └── portainer 
                      └── data
  1. Установка Home assistant.
    Итак после того как мы установили наш первый контейнер, приступим в установке самого home assistant, предлагаемый мной метод установки содержит такую же версию HA Stable как и в официальной инструкции Установка Home Assistant на контроллер Wiren Board — Wiren Board.
    Повторю еще раз эта версия Home Assistant как и в инструкции на сайте WB - Home Assistant STABLE отличия от других возможных методов установки вы можете посмотреть самостоятельно и выбрать любой удобный для вас ( Installation - Home Assistant )
    Единственное, что ставить наш HA мы будем с помощью docker-compose.

Первым шагом вводим команду на создание в директории /mnt/data новой папки которая будет содержать все файлы нашей новой конфигурации Home Assistant, для этого вводим команду:
mkdir homeassistant
После ввода команды mkdir homeassistant должна появиться пустая папка c именем “homeassistant” по следующему пути /mnt/data проверить 'это можно открыв например в командной строке файловый менеджер командой:
mc (чтобы закрыть файловый менеджер после просмотра нужно мышкой дважды нажать на выход в правом нижнем углу интерфейса mc)
если папка там не появилась проверьте свое расположение в корневой системе, напоминаю что изначально вы должны находиться в расположении: cd /mnt/data и создавать все файлы там).

  1. Повторно открываем файл docker-compose.yaml и вводим параметры нового необходимого нам контейнера под названием homeassistant , для этого вводим команду:

nano docker-compose.yaml

И дополняем ранее созданную запись следующим, отступив пару строк от последней строки конфигурации предыдущего контейнера, копируем и вставляем текст:

  homeassistant:
    container_name: homeassistant
    image: "ghcr.io/home-assistant/home-assistant:stable"
    restart: unless-stopped
    privileged: true
    ports:
      - "8123:8123"
    environment:
      - TZ=Europe/Moscow
    volumes:
      - ./homeassistant/:/config
      - /etc/localtime:/etc/localtime:ro

Нажимаем сочетание клавиш ctrl+s (тем самым сохраняем содержимое файла), а затем нажимаем сочетание клавиш ctrl+x (тем самым закрывая редактор Nano)

Загружаем и запускаем новый контейнер:

docker compose up -d

  1. После успешной загрузки нового контейнера home assistant станет доступным по следующему адресу вашего контроллера:
    http://:8123 # не защищенное соединение (например http://192.168.1.124:8123)

Выполните его первоначальную настройку по созданию нового пользователя перейдя по своему IP адресу контроллера с добавлением порта 8123.

Итоговая структура проекта:

/mnt/data
         ├── docker-compose.yaml
         ├── homeassistant
         │               ├── ...
         │               └── configuration.yaml
         └── portainer
  1. Добавляем поддержку Bluetooth в Home Assistant ( Bluetooth - Home Assistant ) .

Не для кого не секрет что контроллеры Wiren Board из коробки поддерживают этот интерфейс передачи данных, о чем сказано Bluetooth — Wiren Board

Для начала необходимо установить зависимости Bluetooth:

  • Установите пакет брокера DBus:
    apt install dbus-broker
  • Включить системную службу:
    systemctl enable dbus-broker.service
  • Установить пакет BlueZ:
    apt install bluez

Для того чтобы наш адаптер заработал в Home Assistant нам необходимо добавить новое хранилище dbus в файл уже созданной конфигурации контейнера homeassistant (напоминаю что все создаваемые конфигурации контейнеров хранятся в одном фале по адресу /mnt/data/docker-compose.yaml)

Выполняем команду:

nano docker-compose.yaml

И после строк
volumes:
- ./homeassistant/:/config
- /etc/localtime:/etc/localtime:ro:
Добавляем - /run/dbus:/run/dbus:ro # ← Bluetooth адаптер
Должно получиться так:

  homeassistant:
    container_name: homeassistant
    image: "ghcr.io/home-assistant/home-assistant:stable"
    restart: unless-stopped
    privileged: true
    ports:
      - "8123:8123"
    environment:
      - TZ=Europe/Moscow
    volumes:
      - ./homeassistant/:/config
      - /etc/localtime:/etc/localtime:ro
      - /run/dbus:/run/dbus:ro # <-- Bluetooth адаптер

Нажимаем сочетание клавиш ctrl+s (тем самым сохраняем содержимое файла), а затем нажимаем сочетание клавиш ctrl+x (тем самым закрывая редактор Nano).

  1. Загружаем новые данные и пересоздаем и поднимаем контейнер homeassitant уже с поддержкой Bluetooth.

Выполняем команду:
docker compose up -d homeassistant

  1. Установка File Editor.
    Для быстрого доступа к configuration.yaml Home Assistant приходится каждый раз подключаться к SSH и производить изменения. Это занимает определенное время, которого иногда не хватает. Для облегчения процесса редактирования файлов подключим File Editor. Который в свою очередь добавит в web интерфейс онлайн редактор кода.
    Так как мы используем Docker, то там подойдет абсолютно любой редактор, который разворачивается в контейнере. Их существует большое количество. Здесь рассмотрен только один из вариантов.

Создаем новую папку для хранения файлов конфигуратора по адресу /mnt/data.

Вводим команду:
mkdir fileeditor

В третий раз открываем файл docker-compose.yaml и добавляем в него после записи о контейнере homeassistant (отступив пару строк) следующие данные.

Вводим команду:
nano docker-compose.yaml

Копируем и вставляем данные контейнера редактора файлов:


  hass-configurator:
    container_name: hassconf
    image: causticlab/hass-configurator-docker
    restart: unless-stopped
    environment:
      - HC_BASEPATH=/hass-config
      - HC_DIRSFIRST=true
    ports:
      - "3218:3218/tcp"
    volumes:
      - ./fileeditor:/config
      - ./homeassistant:/hass-config

Нажимаем сочетание клавиш ctrl+s (тем самым сохраняем содержимое файла), а затем нажимаем сочетание клавиш ctrl+x (тем самым закрывая редактор Nano).

Загружаем и поднимаем новый контейнер, выполняем команду:
docker compose up -d

После установки и запуска нового контейнера редактор файлов конфигурации HA он будет доступен по адресу вашего контроллера с добавлением порта 3218:
http://:3218 # не защищенное соединение (например http://192.168.1.124:3218)

Итоговая структура проекта:

/mnt/data
        ├── docker-compose.yaml
        ├── fileeditor
        ├── homeassistant
        └── portainer
  1. Теперь давайте добавим возможность быстрого перехода к веб интерфейсам Portainer и Fileeditor (ну тут в примере я добавил еще и z2m) прямо из боковой панели Home Assistant.

Для этого добавим в файл configuration.yaml по адресу /mnt/data/homeassistant/configuration.yaml нужные нам данные.

Переходим по пути расположения файла с конфигурацией Home Assistant под названием configuration.yaml. Для этого вводим:
cd /mnt/data/homeassistant

Открываем файл для редактирования командой:
nano configuration.yaml

И добавляем туда следующие данные (я добавил в самый низ конфигурации после всех уже имеющихся записей уже содержащихся вы файле configuration.yaml):

panel_iframe:

  portainer:
    title: Portainer
    url: "http://указать ваш IP:9000/#!/2/docker/containers"
    icon: mdi:docker
    require_admin: true

  configurator:
    title: Configurator
    icon: mdi:wrench
    url: "http://указать ваш IP:3218"
    require_admin: true

  zigbee2mqtt:
    title: Zigbee2MQTT
    icon: mdi:zigbee
    url: "http://указать ваш IP:8081"
    require_admin: true

Если нужно то можно сразу открыть доступ с боковой панели Home Assitant к веб интерфейсу Z2M Если нет то не пишите последнюю часть кода.

Перезагрузите Home Assistant, после перезагрузки все сервисы станут доступными на боковой панели (слева) в интерфейсе программы.

Повторюсь еще раз, что обновить все загруженные вами контейнеры вы можете обновить всего несколькими командами:

  1. cd /mnt/data - Команда для перехода к директории в которой расположен файл docker-compose.yaml в котором хранятся данные создаваемых нами в этой инструкции контейнеров
  2. docker compose pull - Команда для загрузки новых образов контейнеров описанных в файле docker-compose.yaml
  3. docker compose up -d - Команда установки обновлений и запуска контейнеров описанных в файле docker-compose.yaml

Если в будущем, если вам необходимо установить любые другие контейнеры doker то вы можете дописывать их данные в файл docker-compose по такому же принципу как расписано в этом материале.
Надеюсь этот материал буде кому-нибудь полезен. Спасибо за внимание!

12 лайков

Отлично, подробно и понятно описано. Я рад что делитесь наработками.

Добрый день, делал все по инструкции:

  • Сначала сбросил контролер WB к заводским настройкам
  • установил докер по инструкции для контролера WB
  • установил Portainer, зашел через Web, все работает
    При установке Home Assistant столкнулся с такой проблемой
    root@wirenboard-#######:/mnt/data# docker compose up -d
    validating /mnt/data/docker-compose.yaml: (root) Additional property homeassistant is not allowed
    Кто ни будь сталкивался с таким?

Добрый день, покажите содержимое вашего файла docker-compose.yaml

version: ‘3.0’

services:
portainer:
container_name: portainer
image: portainer/portainer-ce:latest
restart: unless-stopped
ports:
- “9000:9000/tcp”
- “9443:9443/tcp”
environment:
- TZ=Europe/Moscow
volumes:
- /etc/localtime:/etc/localtime:ro
- /var/run/docker.sock:/var/run/docker.sock
- ./portainer/data:/data

homeassistant:
container_name: homeassistant
image: “Package home-assistant · GitHub
restart: unless-stopped
privileged: true
ports:
- “8123:8123”
environment:
- TZ=Europe/Moscow
volumes:
- ./homeassistant/:/config
- /etc/localtime:/etc/localtime:ro

Без форматирования текста не совсем понятно правильно ли вы воспроизвели все отступы в файле, попробуйте стереть весь вашу конфигурацию в файле docker-compose которая относиться к блоку home assistant и заново вставить этот текст

  homeassistant:
    container_name: homeassistant
    image: "ghcr.io/home-assistant/home-assistant:stable"
    restart: unless-stopped
    privileged: true
    ports:
      - "8123:8123"
    environment:
      - TZ=Europe/Moscow
    volumes:
      - ./homeassistant/:/config
      - /etc/localtime:/etc/localtime:ro

Перед блоком “homeassistant:” обязательно должно быть два пробела, следущие строки после этого блока должны быть сдвинуты еще на два пробела относительно первого блока

1 лайк

Заработало! Спасибо!

1 лайк