udvnl

 
<<< Назад

Zigbee2mqtt, немного о стиках CC2531 и Sonoff USB Zigbee 3.0 Dongle Plus (сравнение, подключение, тестирование).

Не так давно решил обновить свой 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 нет видимых индикаторов.

Первый шаг: включение в MajorDomo и ОС Linux (Raspbian):

Устанавливаем дополнение 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 минут)

Небольшое тестирование параметра качества связи (linkquality)

Для построения сети беспроводных устройств УД довольно важен параметр канала связи, в теминологии 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: versionGLIBCXX_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 

Обсуждение (3) (4)

Смотрите так же:
03.11.2023 Пару мыслей о совместном применении SIP телефонии и систем «Умного Дома», а также немного об организации независимого от Internet канала связи с УД.
14.10.2023 Контроль SystemD и инструмент работы с системными логами через веб браузер
10.10.2023 Установка SIP сервера FreeSWITCH 1.10.10 на Raspberry Pi OS Lite (Debian11)
03.01.2023 Установка MajorDoMo с помощью скрипта от SergeJey на Raspberry Pi
09.12.2022 Где Телефон?
30.05.2022 Вариант установки Majordomo на Windows 10 с использованием пакета XAMPP. Немного о переносе и создании тестовой копии системы с Raspberry PI на Windows
09.03.2022 Небольшие заметки по подключению и использованию сервиса CONNECT
23.09.2021 Второй раз в первый класс. Часть 1: начало работы c базовым образом для RPi.
31.12.2020 Возможность создания канала управления через телефонные сети для системы домашней автоматизации.
06.07.2020 Чтение файлов из образа img Операционной системы. Возможность записи образа на меньшую по размеру SD карту памяти
19.06.2020 Raspberry Pi: немного о резервном копировании и актуальной копии системы
07.05.2020 Установка VoIP сервера FreeSWITCH с частичной интеграцией в систему MajorDoMo
28.04.2020 Установка базового образа MajorDoMo на Raspberry Pi. Начало первые шаги.
07.10.2019 Возможность создания видео звонков у MajorDoMo (RPI +WebCam)
11.09.2019 Создание голосового оповещения MajorDoMo
21.08.2019 Установка USB аудиокарты и настройка звука в Raspberry Pi
04.04.2019 Сертификация в Z-Wave
11.03.2019 RPI Monitor полезное ПО для Raspberry PI и Orange Pi
04.02.2019 Тестирование пропускной способности канала Ethernet (Wi-Fi) с помощью утилиты IPerf
23.12.2018 Пошаговая инструкция с картинками по установки MajorDoMo на Raspberry Pi 3 с помощью скрипта от Immortal
20.10.2018 Установка Freeswitch 1.8.2 на Debian 9 (Raspbian Stretch) на базовый образ системы «Умного дома» MajorDomo
14.08.2018 Создание беспроводного «умного дома». На основе технологии Linux, Z-Wave и ПО MajorDoMo. Включение первого устройства Z-Wave и первые шаги по автоматизации
08.07.2018 Создание беспроводного «умного дома». На основе технологии Linux, Z-Wave и ПО MajorDoMo. Включение контроллера RaZberry и первые шаги по Z-Wave
29.06.2018 Пошаговая инструкция по установке образа Majordomo на Raspberry Pi
21.06.2018 Удаленное наблюдение за близкими, но к сожалению, больными людьми.

Минск, Беларусь

На форуме: udvnl