Не так давно решил обновить свой 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
Устанавливаем необходимые пакеты:
sudo curl -sL https://deb.nodesource.com/setup_10.x | sudo -E bash -
sudo apt-get install -y nodejs git make g++ gcc
Клонируем репозиторий, меняем права на файлы для текущего пользователя, переходим в директорию для установки и устанавливаем::
sudo git clone https://github.com/Koenkk/zigbee2mqtt.git /opt/zigbee2mqtt
sudo chown -R pi:pi /opt/zigbee2mqtt
cd /opt/zigbee2mqtt
npm install
по завершении установки мы должны получить на экране что-то подобное:
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, причем показания соответсвуют значениям попадающим в лог.
Минск, Беларусь
На форуме: udvnl