Не так давно решил обновить свой USB=Zigbee стик CC2531 на более новый Zigbee координатор Sonoff ZBDongle USB Zigbee 3.0 Dongle Plus. Заодно решил сделать небольшое сравнение и в качестве дополнения небольшая инструкция по установке и настройке Zigbee устройств в MajorDoMo с модулем zigbee2mqtt (автор модуля Directman). Инструкция делалась на Raspberry Pi 3B, установлен голый образ 3_44.
Внешний вид USB стиков представлен на фото:
Sonoff стик выглядит солидно и внушительно на мой взгляд несколько великоват. Довольно длиная антенна может вращаться в разные стороны и складываться на 90 градусов. После подключения в USB разъём в большинстве случаев из оставшихся 3-х портов на малинке, можно использовать только один, находящийся по диагонали от занятого (иногда даже это не получается). Если планируется подключать ещё что то, то выход использовать USB удлинитель. Стик CC2531 выглядит несколько миниатюрнее, нет ни внешней антенны ни возможности её подключения, он у меня без корпуса. У CC2531 присутствует индикатор (при работе постоянно постояно горит зелёным). У Sonoff нет видимых индикаторов.
Устанавливаем дополнение zigbee2mqtt от Directman.
Переходим в раздел Система – Маркет Дополнений панели управления. Открываем раздел Оборудование и ищем модуль zigbee2mqtt (можно на главной странице Маркета воспользоваться поиском).
Устанавливаем дополнение zigbee2mqtt, после установки переходим в меню Панели Управления - Устройства, выбираем раздел zigbee2mqtt.
Zigbee стик пока не определён ни в систему «Умного Дома», ни в операционной системе. В модуле есть очень подробная информация о установке, устройствах и т.д.
Пока в этой части опишу подключение стика CC2531.
Подключаем стик к USB порту. Индикатор стика кратковременно загорается зелёным и гаснет.
Переходим в раздел Информация и что для стика CC2531, что для Sonoff координатора пользуемся инструкцией по установке.
Продублирую её с небольшими примечаниями:
Проверяем на каком порту у нас появился стик:
pi@raspberry:/ $ ls -l /dev/serial/by-id
вывод:
total 0 lrwxrwxrwx. 1 root root 13 Oct 19 19:26 usb-Texas_Instruments_TI_CC2531_USB_CDC___0X00124B0018ED3DDF-if00 -> ../../ttyACM0
Убедились, что стик встал на порту /dev/ttyACM0, этот адрес потом понадобится при настройке файла конфигурации configuration.yaml. Для концентратора Sonoff порт несколько отличается: ttyUSB0
Обновлено 2022-09-26 в связи с изменениями в официальной инструкции
https://www.zigbee2mqtt.io/guide/installation/01_l...
Официальная инструкция от разработчика
Обновляем Операционную Систему (ОС)
sudo apt-get update
sudo apt-get upgrade
Устанавливаем необходимые пакеты:
# Set up Node.js repository and install Node.js + required dependencies, Устанавливаем Node.js и зависимости
# NOTE: Older i386 hardware can work with [unofficial-builds.nodejs.org](https://unofficial-builds.nodejs.org/download/release/v16.15.0/ e.g. #Version 16.15.0 should work.
sudo curl -fsSL https://deb.nodesource.com/setup_16.x | sudo -E bash -
sudo apt-get install -y nodejs git make g++ gcc
# Verify that the correct nodejs and npm (automatically installed with nodejs)
# version has been installed
#Проверяем версии node и npm
node --version # (должна быть) Should output v14.X, V16.x, V17.x or V18.X
npm --version # (должна быть) Should output 6.X, 7.X or 8.X
# Create a directory for zigbee2mqtt and set your user as owner of it, создаем директорию и меняем права
sudo mkdir /opt/zigbee2mqtt
sudo chown -R pi: /opt/zigbee2mqtt
# Clone Zigbee2MQTT repository клонируем репозиторий
git clone --depth 1 https://github.com/Koenkk/zigbee2mqtt.git /opt/zigbee2mqtt
# Install dependencies (as user "pi") устанавливаем npm
cd /opt/zigbee2mqtt
npm ci
по завершении установки мы должны получить на экране что-то подобное:
node-pre-gyp info ok
added 383 packages in 111.613s
Вывод после окончания установки (у меня было несколько предупреждений, но на работу z2m они не сказывались):
Настраиваем файл конфигурации:
nano /opt/zigbee2mqtt/data/configuration.yaml
По умолчанию формируется файл со следующей работоспособной для стика СС3521 конфигурацией. Приведу его:
homeassistant: false
permit_join: true
mqtt:
base_topic: zigbee2mqtt
server: mqtt://localhost
serial:
port: /dev/ttyACM0
devices:
Запуск zigbee2mqtt как сервис
Создаем файл zigbee2mqtt.service
sudo nano /etc/systemd/system/zigbee2mqtt.service
c содержимым:
[Unit]
Description=zigbee2mqtt
After=network.target
[Service]
ExecStart=/usr/bin/npm start
WorkingDirectory=/opt/zigbee2mqtt
StandardOutput=inherit
StandardError=inherit
Restart=always
User=pi
[Install]
WantedBy=multi-user.target
для запуска zigbee2mqtt необходимо выполнить:
sudo systemctl start zigbee2mqtt
Проверка статуса сервиса:
systemctl status zigbee2mqtt.service
автозапуск демона при старте системы:
sudo systemctl enable zigbee2mqtt.service
Можем сразу же прописать в настройках модуля z2m MajorDoMo следующие настройки:
На всякий случай правильно перегружаем малинку (используя скрипт перезагрузки).
После загрузки переходим опять в устройства модуля z2m.
У меня сразу же определились некоторые устройства (скорее всего ранее они были подключены к моему стику, и несмотря на использование свежепереписанного базового образа они определились, хотя и не совсем корректно).
Кстати, обращаем внимание: засветилось зеленым окошечко сопряжение устройств.
Можем зайти во вкладку Сервис посмотреть состояние сервиса системы, непосредственно из MajorDoMo.
Сопряжение устройств, для подключения устройств в свой систему УД, стик должен быть включён на сопряжение (в конфиге параметр permitjoin: true) и включить сопряжение физически непосредственно на устройстве. Легче всего обратиться к документации на устройство или же посмотреть на сайте https://www.zigbee2mqtt.io/ список поддерживаемых устройств и Pairing для конкретного девайса.
После сопряжения (пересопряжения) устройств картинка в Majordomo приблизительно следующая:
Из раздела устройства можем включить/выключить устройства, если они управляются, получить текущее состояние для датчиков и т.д.
Замечу, после привязки устройства в конфигурационном файле в секции devices прописываются дополнительные строки
devices: '0x00158d00069fec28': friendly_name: '0x00158d00069fec28'
Подключение Sonoff ZBDongle USB Zigbee 3.0 Dongle Plus
Подключение координатор Sonoff ZBDongle USB Zigbee 3.0 Dongle Plus происходит аналогично стику СС. За исключением конфигурационного файла.
Пример конфига:
nano /opt/zigbee2mqtt/data/configuration.yaml
homeassistant: false
permit_join: true
frontend:
port: 8080
host: 0.0.0.0
# auth_token: 123456 (поменяйте на свой пароль)
mqtt:
base_topic: zigbee2mqtt
server: mqtt://localhost
serial:
port: /dev/ttyUSB0
devices:
В конфиге включён веб-интерфейс координатора (на порту 8080) с шифрованием (работает и без оного).
После изменения файла нужно перезапустить сервис, сделать можно или из вкладки сервис модуля или из командной строки терминала:
Небольшое примечание: с выключенным веб интерфейсом запуск (перезапуск) сервиса происходит у меня довольно быстро. С включенной веб интерфейсом гораздо дольше (доходило до 5 минут)
Для построения сети беспроводных устройств УД довольно важен параметр канала связи, в теминологии zigbee linkquality.
Сравним этот показатель у обоих устройств. Малинка расположена на одном и том же месте, сравниваемые устройства так же, никуда не перемещаются.
Первый скрин: CC2531, второй соответственно Sonoff.
В самом модуле majorDoMo у меня этот показатель както не свосем корректно показывает (возможно берёт какие то усредненные значения). Что бы посмотреть более точно, можно открыть лог файл и из него уже смотреть приходящие сообщения. Файл находится:
nano /opt/zigbee2mqtt/data/log/xxxx-xx-xx.xx-xx-xx/log.txt
где наименование папки время создания лога.
Перовое устройство выключатель – расстояние около 6 метров по прямой, однако на пути 3 стенки, также имеется зеркальный шкаф купе.
Используя стик СС2531 качество от 0 до 30 (довольно часто меняется этот показатель), причем при 0 выключатель корректно управляется (всё время, сбоев не обнаружил).
Остальные устройства имеют более-менее стабильные показатели (могут меняться до десятка единиц значений) у Sonoffa гораздо более стабильные показатели:
------------СС2531---------------Sonoff
1) - от 0 до 30---------------- 38 ------------- 7м ------------- 3 стенки +зеркало
2) --------49 -------------------- 65 ------------- 4м ------------- 2 стенки
3) -------- 89 ------------------ 103 -------------1м ------------- 1 стенка
4) ------- 78 ------------------ 170 ------------1м -------- препятствий нет
Пример показаний в веб интерфейсе, на вкладке карта сети, для концентратора sonoff, причем показания соответсвуют значениям попадающим в лог.
UPD. Спустя довольно большое время (более года работы) возникла ошибка при обновлении сервиса zigbee2mqtt скриптом update.sh
Zigbee2mqtt не запускался, в системных ошибках, при запуске вручную npm start Cannot find module 'semver'
Требовалось обновит node.js. проблема в том, что пытается обновить на npm 20.x Но после обновления при запросе
node --version
node: /usr/lib/arm-linux-gnueabihf/libstdc++.so.6: version
GLIBCXX_3.4.26' not found (required by node)`
В итоге получилось установить версию node 18 согласно официальной инструкции:
https://github.com/nodesource/distributions
Using Debian, as root
```curl -fsSL https://deb.nodesource.com/setup_18.x | bash - &&\
apt-get install -y nodejs
После этого обновился и zigbee2mqtt
Минск, Беларусь
На форуме: udvnl