Add HACS
wget -O - https://get.hacs.xyz | bash -
из каталога конфигурации HA
ZigBee модуль прошит в координатор прошивкой Z-Stack_Home_1.2.
Устройство GS SMH-ZW-I1 включает в себя:
- ZigBee на CC2531
- WiFi на RTL8723BU (802.11 b/g/n 2.4 GHz)
- Bluetooth на RTL8723BU (2.1/3.0/4.0, BLE)
Источник: тут
В рамках данного блога я уже рассказывал про установку Home Assistant во FreeBSD.
Поехали
Первым делом установим все, что нам нужно:
sudo apt update sudo apt install python3-dev python3-pip python3-venv libffi-dev libssl-dev
Создадим пользователя homeassistant и одноименную группу:
sudo adduser --system homeassistant && addgroup homeassistant sudo adduser homeassistant dialout
Создадим директорию для установки и назначим ей права:
sudo mkdir /opt/homeassistant sudo chown homeassistant:homeassistant /opt/homeassistant
Авторизуемся под пользователем homeassistant для установки hass от его имени:
sudo su -s /bin/bash homeassistant
Устанавливаем виртуальное окружение Python:
cd /opt/homeassistant python3 -m venv /opt/homeassistant source bin/activate
Устанавливаем Home Assistant:
python3 -m pip install wheel pip3 install homeassistant
Создадим директорию для конфигов:
mkdir /opt/homeassistant/config
Под реальным пользователем создаем скрипт автозапуска :
sudo vi /etc/systemd/system/hass.service [Unit] Description=Home Assistant After=network.target [Service] Type=simple User=homeassistant ExecStart=/opt/homeassistant/bin/hass -c /opt/homeassistant/config --log-file /opt/homeassistant/hass.log [Install] WantedBy=multi-user.target
Передергиваем systemctl, включаем Home Assistant в автозагрузку:
sudo systemctl --system daemon-reload sudo systemctl enable hass && systemctl start hass
Проверим:
systemctl status hass ● hass.service - Home Assistant Loaded: loaded (/etc/systemd/system/hass.service; enabled; vendor preset: enabled) Active: active (running) since Wed 2020-07-15 17:16:09 MSK; 35min ago Main PID: 3792120 (hass) Tasks: 18 (limit: 38326) Memory: 92.7M CGroup: /system.slice/hass.service └─3792120 /opt/homeassistant/bin/python3 /opt/homeassistant/bin/hass -c /opt/homeassistant/config --log-file /opt/homeassistant/hass.log
netstat -plant | grep 8123 tcp 0 0 0.0.0.0:8123 0.0.0.0:* LISTEN 3792120/python3
Из проверки видим, что сервис спешно запустился и ожидает нас на стандартном для hass порту — 8123.
Заходим браузером по адресу http://myipaddress:8123, заводим пользователя и пароль.
Источник - тут
Установка Zigbee2MQTT в Armbian
При работе с Home Assistant supervised или HassOS вместо описанного ниже способа установки желательно использовать аддон hassio-zigbee2mqtt
Данный вариант установки предназначен для установки сервиса zigbee2mqtt на компьютере или на контроллерах JetHub H1/D1.
Для работы zigbee2mqtt необходимо предварительно установить MQTT брокер, например mosquitto:
sudo apt install -y mosquitto mosquitto-clients
При установке MQTT брокер будет настроен на автоматический запуск и запущен. Проверить статус службы можно командой:
sudo systemctl status mosquitto.service
Установить дополнительные пакеты, необходимые для сборки zigbee2mqtt:
sudo apt-get install -y nodejs npm git make gcc g++
Скачать исходные тексты zigbee2mqtt:
sudo git clone https://github.com/Koenkk/zigbee2mqtt.git /opt/zigbee2mqtt sudo chown -R $USER:$USER /opt/zigbee2mqtt
Сборка:
cd /opt/zigbee2mqtt npm ci
Внести изменения в файл конфигурации:
nano /opt/zigbee2mqtt/data/configuration.yaml
Примерное содержимое файла конфигурации:
# Home Assistant integration (MQTT discovery) homeassistant: true # Allow new devices to join permit_join: false # MQTT settings mqtt: # MQTT base topic for Zigbee2MQTT MQTT messages base_topic: zigbee2mqtt # MQTT server URL server: 'mqtt://localhost' # Serial settings serial: # Location of CC2538 Zigbee module for JetHub H1 port: /dev/ttyAML2 # Optional: advanced settings advanced: # Optional: ZigBee channel (Note: changing requires re-pairing of all devices) channel: 15 # Optional: ZigBee pan ID pan_id: 0x1a62 # Optional: network encryption key, will improve security (Note: changing requires repairing of all devices) network_key: [1, 3, 5, 7, 9, 11, 13, 15, 0, 2, 4, 6, 8, 10, 12, 13] frontend: # Optional, default 8080 port: 8080 # Optional, default 0.0.0.0 host: 0.0.0.0
В примере приведено название порта для контроллера JetHub H1 (/dev/ttyAML2) для других контроллеров или USB-стиков название порта может быть другим (см. документацию к контроллеру).
Преведены значения pan_id и network_key, устанавливаемые по-умолчанию. Рекомендутся задать другие значения для этих параметров.
Запуск zigbee2mqtt:
cd /opt/zigbee2mqtt npm start
Для автоматического запуска zigbee2mqtt при запуске системы необходимо создать файл:
sudo nano /etc/systemd/system/zigbee2mqtt.service
Содержимое файла (где - имя пользователя под которым была выполнена установка):
[Unit] Description=zigbee2mqtt After=network.target [Service] ExecStart=/usr/bin/npm start WorkingDirectory=/opt/zigbee2mqtt StandardOutput=inherit StandardError=inherit Restart=always User=<USER> [Install] WantedBy=multi-user.target
Активировать и запустить сервис zigbee2mqtt:
sudo systemctl enable zigbee2mqtt.service sudo systemctl start zigbee2mqtt.service
После запуска службы, удостовериться в ее работе можно в логах:
sudo journalctl -u zigbee2mqtt.service -f
В файл конфигурации Home Assistant необходимо включить интеграцию MQTT. Это можно сделать двумя способами:
1. (Рекомендуется) В web-интерфейсе Home Assistant выбрать меню «Интеграции», нажать кнопку «Добавить» и выбрать из списка интеграцию «MQTT». На запрос параметров интеграции в строке «Адрес» указать «127.0.0.1».
2. В файл конфигурации Home Assistant добавить следующие параметры:
mqtt: discovery: true broker: localhost birth_message: topic: 'hass/status' payload: 'online' will_message: topic: 'hass/status' payload: 'offline'
Возможные проблемы
Отсутствуют права доступа к последовательному порту
Если во время запуска появляется ошибка:
Error: Error while opening serialport 'Error: Error: Permission denied, cannot open /dev/ttyAML2'
Необходимо включить пользователя, под которым производится запуск Zigbee2MQTT в группу dialout:
sudo gpasswd --add ${USER} dialout
После чего выйти из системы и заново зайти в нее под данным пользователем.