In order to be able to communicate with your USB device over a virtual COM port, you might need a driver for your OS in order for it to be able to be found by your flashing software.
- For CP210x based chipsets, there is a driver available at Silicon Labs’ websiteopen in new window.
- For CC1352/CC2652/CC2538 based chipsets, have a look at FTDI chip’s websiteopen in new window for drivers.
- Connect your sniffer device
- Open up Start menu and start typing
Device Manager
- Expand
Ports (COM & LPT)
- Look for a node similar to
USB Serial Device (COM4)
- Take note of the port number, it will be needed during configuration
Installing
- Download and install Node.js 16 LTS from their websiteopen in new window
- Open up a
Command prompt
orPowershell
from the Start menu (Powershell has prettier colors) - Verify Node.js was successfully installed
- Choose a suitable directory for Zigbee2MQTT and copy all the files from the Zigbee2MQTT repositoryopen in new window
- if you prefer to use git (which you should), just clone the whole repository
git clone --depth 1 git@github.com:Koenkk/zigbee2mqtt.git
- otherwise use the green
Clone or download
button to download the zip archive, then extract it
- if you prefer to use git (which you should), just clone the whole repository
- Change to the newly created directory and install dependencies with Node.js own package manager
npm
Configuring
- Open
dataconfiguration.yaml
in a text editor - Change the serial port configuration to match your setup
- Make sure other settings are correct as well
- Save and exit
Congratulations, you’re now ready to start your Zigbee2MQTT installation
Starting Zigbee2MQTT
Just change to the root directory of your installation and run the application:
A successful setup produces an output similar to this:
> zigbee2mqtt@1.6.0 start C:UsersmeDocumentsGitHubzigbee2mqtt
> node index.js
Zigbee2MQTT:info 2019-10-18 10:56:22 PM Logging to directory: 'D:DocumentsGitHubzigbee2mqttdatalog2019-10-18.22-56-22'
Zigbee2MQTT:info 2019-10-18 10:56:22 PM Starting Zigbee2MQTT version 1.6.0 (commit #e26ad2a)
Zigbee2MQTT:info 2019-10-18 10:56:22 PM Starting zigbee-shepherd
Zigbee2MQTT:info 2019-10-18 10:56:24 PM zigbee-shepherd started
Zigbee2MQTT:info 2019-10-18 10:56:24 PM Coordinator firmware version: '20190608'
The Coordinator firmware version: '20190608'
entry means that Zigbee2MQTT has successfully communicated with the USB sniffer.
Zigbee2MQTT can be stopped anytime by pressing CTRL + C
and then confirming with Y
.
iot:software:zigbee2mqtt:windows
Содержание
В данной статье1) описана установка и основные настройки Zigbee2MQTT на Windows2). Предполагается, что прочий необходимый софт уже установлен3), а координатор прошит.
Установка
-
Скачать и установить git;
-
запустить командную строку от имени администратора;
-
создать папку, выполнив команду
md c:optzigbee2mqtt
; -
выполнить
c:Progra~1Gitbingit clone https://github.com/Koenkk/zigbee2mqtt.git c:optzigbee2mqtt
; -
перейти в папку, выполнив команду
cd с:optzigbee2mqtt
; -
ввести и выполнить
npm install
.
Настройка
Для настройки Zigbee2MQTT надо перейти в папку c:optzigbee2mqttdata
и открыть файл настроек configuration.yaml
. Ниже указаны самые необходимые параметры на примере моего конфига:
# Присутствует по умолчанию. homeassistant: false # Установить в true для добавления новых устройств. permit_join: false # Вполне стандартные настройки MQTT. mqtt: base_topic: zigbee2mqtt server: 'mqtt://localhost' user: RGEHrther password: jkyuk56e4t # Установка номера COM-порта. serial: port: \.COM3 disable_led: false # disable_led в положении true выключит светодиод на анализаторе. # Чтобы включить обратно, помимо установки false, необходимо передернуть устройство по питанию! # Включение web-интерфейса. frontend: port: 8080 host: 0.0.0.0 auth_token: test # Пароль авторизации в web-интерфейсе. # У меня цифры в виде токена не заработали, только текст...
Добавление устройств
Тестовый запуск Zigbee2MQTT осуществляется из командной строки4) вводом npm start
находясь в папке c:optzigbee2mqtt
. А остановка, нажатием там же клавиш Ctrl+C → Y
.
Для добавления устройств необходимо поменять флаг false
на true
для параметра permit_join
и не забыть вернуть его назад после настройки. Управлять этим флагом так же можно из web-интерфейса!
Устройства добавляются согласно их инструкции, но обычно, это долгое нажатие на единственную кнопку на корпусе.
При наличии роутера, в web-интерфейсе появляется выбор, к какому из приемников подключать устройство. Автоматического роуминга между ними, кажется, нет… – т.е. к какому датчик подключился, с тем и будет работать до сброса.
Автозапуск
Я не нашел5) нормальных способов автозапуска Zigbee2MQTT на Windows, поэтому пришлось немного поколхозить:
-
устанавливаем pm2, выполнив
npm install pm2 -g
; -
скачиваем и копируем файл
nssm.exe
вc:optzigbee2mqtt
; -
Выполняем команду
nssm install ZigBee2MQTT
; -
в открывшемся окне вводим в «Path»
C:Users<username>AppDataRoamingnpmpm2.cmd
6); -
в поле «Startup directory» –
c:optzigbee2mqtt
; -
в поле «Arguments» –
start c:optzigbee2mqttindex.js
; -
и на закладке «Exit actions» в поле «Restart» выбираем «Stop service»;
-
все, нажимаем «Install service»!
Это несколько кривой вариант, т.к. перезапуск службы не работает, но он самый простой и быстрый.
Дисклеймер
-
Использование материалов данной базы знаний разрешено на условиях лицензии, указанной внизу каждой страницы! При использовании материалов активная гиперссылка на соответствующую страницу данной базы знаний обязательна!
-
Автор не несет и не может нести какую либо ответственность за последствия использования материалов, размещенных в данной базе знаний. Все материалы предоставляются по принципу «как есть». Используйте их исключительно на свой страх и риск.
-
Все высказывания, мысли или идеи автора, размещенные в материалах данной базе знаний, являются исключительно его личным субъективным мнением и могут не совпадать с мнением читателей!
-
При размещении ссылок в данной базе знаний на интернет-страницы третьих лиц автор не несет ответственности за их техническую функциональность (особенно отсутствие вирусов) и содержание! При обнаружении таких ссылок, можно и желательно сообщить о них в комментариях к соответствующей статье.
Последнее изменение: 2022/02/16 21:20 —
Николай Солошин
Путеводитель по теме:
1) Вступление, прошивка стика, установка zigbee2mqtt viewtopic.php?f=5&t=6011#p95680
2) Привязка устройств viewtopic.php?f=5&t=6011#p95681
3) Список протестированного оборудования viewtopic.php?f=5&t=6011#p96005
4) Binding viewtopic.php?f=5&t=6011#p96064
Вступление
В настоящее время для работы с zigbee сетями разработано уже довольно много различных решений (deconz, athom hommey, samsung smartthings, philips hue, Smart home Hommyn Zigbee Хаб (HU-20-Z), Mi home и др). Наиболее динамично развивающийся проект создан норжвежцем Коеном Кантером (https://zigbee2mqtt.io). Данный проект отличает внушительное количество поддерживаемого оборудования и большое сообщество неравнодушных людей по всему миру.
Модуль zigbee2mqtt для мажордомо является клиентом mqtt, заточенным для работы с zigbee2mqtt проектом. Развитие модуля не завершено, обновления указаны в конце 1 сообщения.
Пока модуль может работать только с брокером mqtt, например mosquitto. Установка mosquitto на ubuntu-18.04 детально описана тут https://www.8host.com/blog/ustanovka-br … ntu-18-04/
В перспективе планируется управление шлюзом на esp32 без использования mqtt.
Варианты работы:
1) Самый простой вариант USB стика:
Для работы c zigbee2mqtt нужен прошитый стик и компьютер на линукс (подойдет любой одноплатник типа малины) Также есть варианты запуска z2m на Windows.
Готовый прошитый последней девелоперской прошивкой стик можно заказать по цене 1000 руб + стоимость доставки по РФ (около 200 руб)
Для корректной отправки требуется отправить сообщение в WhatsApp/telegram на номер +79122962262 адрес в следующем формате:
ФИО (без сокращений), телефон, индекс, город, улица, дом, корпус, номер квартиры (офиса)
2) Вариант USB стика v2 с усилителем cc2530+2992 https://modkam.ru/?p=1017 в продаже не будет
3) Вариант USB стика v3 с усилителем и новым чипом сс2538+2592 https://modkam.ru/?p=1112
Принимаются заявки на изготовление готового стика v3, цена без учета доставки около 2000. Заявки отправлять через телеграм https://t.me/Dmitrii_Sannikov.
4) Вариант готового контроллера на esp32 и новом чипе с усилителем сс2538+2592 (работает из коробки) viewtopic.php?f=22&t=6700
Пока только опытные образцы для самостоятельной сборки. Чуть позже будут в продаже готовые контроллеры в удобном корпусе.
Продаются шлюзы SLS Zigbee gateway в корпусе. В наличии около 20 штук. Шлюз позволяет отказаться от китайских сетевых облаков и использовать одновременно устройства разных производителей. Шлюз имеет прошивку SLS, которая полностью совместима с zigbee2mqtt. Это позволяет использовать шлюз совместно с системами MajorDoMo, HomeAssistant, IOBroker, Node-Red и др.
В настоящее время прошивка поддерживает около 100 видов устройств от 10 производителей. Список поддерживаемых устройств постоянно обновляется. Почти любое из устройств Zigbee или BLE может быть добавлено в прошивку по запросу.
Инструкция и дополнительная информация по работе с шлюзом указаны на сайте https://slsys.github.io/Gateway/README_rus.html
В основе шлюза лежит контроллер ESP32, трансивер сс2538 с усилителем сс2592. Шлюз в корпусе, 3000 руб. Доставка в любой регион РФ или СНГ почтой России или Авито-доставкой. Примерная стоимость доставки почтой РФ 200 руб. и оплачивается дополнительно. https://www.avito.ru/ekaterinburg/tovar … 1859134075
Инструкция по прошивке стика v1 и v2:
Инструкция по прошивке стика v3: https://modkam.ru/?p=1188
Инструкция по установке zigbee2mqtt для linux:
https://www.zigbee2mqtt.io/getting_star … 2mqtt.html
Если вам нужна поддержка разрабатываемого в данный момент железа, можно установить девелоперскую ветку. Тогда посте установки мастер необходимо выполнить следующий код:
Код: Выделить всё
sudo git clone https://github.com/Koenkk/zigbee2mqtt.git /opt/zigbee2mqtt
sudo chown -R pi:pi /opt/zigbee2mqtt
cd /opt/zigbee2mqtt
npm install
нужно выполнить
Код: Выделить всё
sudo git clone --single-branch --branch dev https://github.com/Koenkk/zigbee2mqtt/ /opt/zigbee2mqtt
sudo chown -R pi:pi /opt/zigbee2mqtt
cd /opt/zigbee2mqtt
npm install
Установка zigbee2mqtt для windows
1) Устанавливаем брокер mqtt, если у вас его еще нет по инструкции http://www.steves-internet-guide.com/in … to-broker/
Кому лениво устанавливать или держать у себя брокер, а также пользователям windows, у которых нет брокера, при наличии платной подписки на connect (200р.), вы можете использовать адрес http://connect.smartliving.ru в качестве брокера mqtt.
2) Качаем и устанавливаем git
https://git-scm.com/download/win
3) Качаем и устанавливаем node.js для windows
https://nodejs.org/en/download/
Далее процесс идентичен установке под linux https://www.zigbee2mqtt.io/getting_star … 2mqtt.html
Пока только не понятно, как управлять и перезагружать сервис под виндой.
Более подробная инструкция для WIndows 10 указана в данном сообщении: viewtopic.php?f=5&t=6011&start=220#p103652
Настраиваем конфигурационный файл /opt/zigbee2mqtt/data/configuration.yaml
пример вариантов настроек конфигурационного файла https://www.zigbee2mqtt.io/configuratio … ation.html
Код: Выделить всё
homeassistant: false
permit_join: true
advanced:
channel: 26
log_level: debug
report: true
mqtt:
base_topic: zigbee2mqtt
# server: 'mqtt://192.168.178.32:1900'
server: 'mqtt://192.168.1.39'
serial:
port: /dev/ttyACM1
26 канал выбран для livolo выключателя (работают только на 26 канале https://github.com/Koenkk/zigbee2mqtt/issues/592). При отсутствии ливоло выключателей, можно удалить эту строку.
Если вы настраиваете систему под windows, порт необходимо указать в следующем формате:
Запускаем командой sudo systemctl start zigbee2mqtt
Обновление локального zigbee2mqtt до актуальной версии:
Код: Выделить всё
# Stop zigbee2mqtt and go to directory
sudo systemctl stop zigbee2mqtt
cd /opt/zigbee2mqtt
# Backup configuration
cp -R data data-backup
# Update
git checkout HEAD -- npm-shrinkwrap.json
git pull
rm -rf node_modules
npm install
# Restore configuration
cp -R data-backup/* data
rm -rf data-backup
# Start zigbee2mqtt
sudo systemctl start zigbee2mqtt
Чтобы сервис стартовал автоматически, не забудьте после п. 5 (Optional) Running as a daemon with systemctl выполнить
(сервис будет запускаться автоматически при старте системы)
Главная задача данного проекта (модуля) — комплексное управление освещением с возможностью управления устройствами (лампами и реле ) с помощью настенных пультов. Работа данной связки (при наличии соответствующих возможностей самого оборудования (икея, филипс) без координатора (режим Binding https://www.zigbee2mqtt.io/information/binding.html ). Поддержка остального оборудования из списка поддерживаемого (ссылка внизу 1 сообщения). Задачи по замещению функций модуля miHome не ставится. Хотя функции выполняются одни и те-же.
Текущий статус модуля: бетта
Реализовано:
1) подписка на канал zigbee2mqtt/#
2) автоматическое создание устройств;
3) автоматическое заполнение метрик устройств;
4) привязка метрик к объектам.
5) просмотр логов zigbee2mqtt;
6) конвертирование привязанных переменных в стандартный для мажордомо формат (вместо 1/0 в zigbee2mqtt используется ON/OFF);
7) управление устройствами;
создание карты устройств.
9) Добавлено управление и просмотр режимами сопряжения.
10) Добавлено управление (ON OFF) устройствами с главного окна модуля.
11)Подсвечиваются серым потерянные устройства.
12) Исправлен баг с отсутствием combobox
13) Добавлен индикатор режима сопряжения.
При нажатии на верхнюю кнопку «доступен /недоступен для сопряжения» переключается текущий режим. Управление производится через публикацию zigbee2mqtt/bridge/config/permit_join в mqtt (https://www.zigbee2mqtt.io/information/ … cture.html). Зеленый цвет — сопряжение разрешено, красный — запрещено.
14) Убрана кнопка и функционал запроса доп. данных устройств из файла базы данных. Весь функционал заменен обменом сообщений через mqtt. Таким образом, сервис zigbee2mqtt может быть установлен на другом сетевом устройстве (отдельной малине, сервере и тд). При нажатии кнопки «Refresh log from mqtt» на вкладке «Service» происходит публикация запроса в топик zigbee2mqtt/bridge/config/devices. Создается отложенная на 10 секунд задача, которая разбирает полученный массив и обновляет данные по устройствам. В виду того, что строка ответа может содержать длиннейшую запись, изменен формат базы данных на LONGTEXT. Чтобы корректно обновились данные, необходимо удалить или модуль или таблицу zigbee2mqtt.
15) Добавлена кнопка исключения устройства (правый крестик). Публикуется Friendy_Name в топик zigbee2mqtt/bridge/config/remove. Также удаляется запись об устройстве в базе данных модуля. Левый крестик только удаляет запись в модуле без исключения устройства.
16) Добавлены кнопки управления устройствами с главной страницы модуля без привязки к объектам. Протестированы лампочки IKEA, Aqara, выключатели QBKG03LM, WXKG03LM. Двухкнопочными выключателями можно управлять с главной страницы модуля обоими реле (появляются две кнопки).
17) Пересортирован лог приложения zigbee2mqtt. Последние сообщения находятся сверху.
18) Добавлен журнал сообщений mqtt с разбором типа сообщений
19) Добавлен просмотр групп (тест).
20) Добавлена привязка устройств к группе (тест)
21) Изменен цикл и сопутствующие методы работы по аналогии с изменениями в модуле mqtt (за последние 4 месяца много чего изменилось). Получился значительный пророст производительности обработки входящих сообщений.
22) Отлажена работа беспроводных пультов (ikea, aqara). Если в сообщении прилетает «action» или «click», то параметры реверсятся. Это дает возможность настраивать каждое из получаемых действий в отдельности. Привязка действие протестирована в режиме вызова метода. Время реакции около 1 сек.
33) Убрана вкладка «Data», чтоб не вводить в заблуждение.
34) Отлажено уведомление об остановке zigbee2mqtt. Возможно еще нужно что-то придумывать, когда сервис установлен на другом сервере. Такую конфигурацию еще не тестировал. Просьба отписаться, кто пробовал такой режим работы.
35) Теперь работает переключение режима логирования z2m (debug, info, warn, error). Переключение на вкладке Settings. После перезагрузки z2m берется настройка из файла конфигурации configuration.yaml
36) Обновлен файл помощи.
37) Автоматическое обновление лога zigbee2mqtt на вкладке «Zigbee2mqtt log». Теперь нет нужды постоянно обновлять страницу.
38) Добавлена визуализация карты в формате graphviz.
39) Добавлена более удобная визуализация на базе bootstrap 4
40) При нажатии на фотографию, переключается режим работы
41) Цвет рамки меняется в зависимости от состояния устройства.
42) Добавлен режим просмотра журнала изменений по каждому устройству
43) Добавлена возможность отвязки и привязки кнопок к реле настенных выключателей aqara
44) Добавлен фильтр устройств по помещениям и типам устройств.
45) Оптимизированы шаблоны отображения устройств. В основном окне модуля показываются значения привязанных свойств и методов, которые они вызывают. При нажатии на картинку меняется режим работы устройства. Включенный режим по возможности отображается выделенным цветом.
46) Вынесены настройки типа отображения (старый табличный и новый вид)
47) Исправлены логотипы для групп
48) Метрика color с координатами осей XY конвертирует в метрику rgbcolor. Эту метрику можно привязывать к «Простому устройству» RGB, свойству color. Изменение цвета и изменение свойства работают в обоих направлениях.
49) Добавлена кнопка получения списка привязанных групп, удаление устройства из всех групп (тестирование)
50) Добавлено меню для отвязки кнопок от реле для выключателей aqara с нулем.
51) Добавлена фильтрация по типам записей (группы и устройства)
52) Добавлена кнопка запроса состояние устройства (на вкладке с метриками напротив frindly_name устройства кнопка обновить)
53) Для корректного отслеживания реакций на выключатели рекомендуется включить в configuration.yaml:
54) Исправлена работа сенсоров (датчики протечки, движения, открытия двери). Для корректной работы после обновления нужно нажать кнопку update metrics.
55) Добавлена информация о биндинге (в разделе Help), также в 5 сообщении данной темы собирается список протестированных в режиме Bind устройств viewtopic.php?f=5&t=6011&p=96064#p96064
56) Добавлена возможность изменения цвета ламп и RGB димеров. Протестированы лампа LED1624G9 и диммер GL-C-008. Обновлены метрики. Добавлена возможность изменения цвета через меню устройства (см. скриншот)
57) Добавлена возможность цветовой температуры ламп и RGB димеров. Протестирована лампа aqara.
58) Добавлен быстрый переход к справке по устройству из списка проекта zigbee2mqtt.io https://www.zigbee2mqtt.io/information/ … vices.html (клик по картинке с логотипом устройства)
59) Исправил текст левых/правых кнопок при привязке/отвязке.
60) Исправлены некоторые языковые подписи, структура страницы с настройками (nick7zmail)
61) Убрана возможность отправки сообщений в топики с параметрами Qos и Retain. Последний запоминает на сервере все последние топики и начинает их отрабатывать по кругу. Необходимость настройки QoS в рамках поставленных задач пока также не обнаружена.
62) Добавлены определение и метрики для управления устройством Danalock
63) Исправлены метрики для управления выключателями LIvolo
64) Добавлена возможность чистки лога устройства и общего лога в базе данных сервера.
65) Рефакторинг главного обработчика событий.
66) Убраны лишние сообщения в логе. Теперь в логе хранятся данные только в json, также в лог теперь пишутся исходные данные для формирования карты в обоих форматах.
67) Исправлены проблемы, когда не рисовалась карта в формате VIS (при наличии двух и более координаторов — глюк).
68) Масштабирование карты в формате graphviz (nick7zmail)
Что планируется:
1) Работа с группами https://www.zigbee2mqtt.io/information/groups.html
2) Заведение отсутствующих метрик, чтобы можно было привязать не описанные события)
4) Отладить работу, когда мажордомо и zigbee2mqtt находятся на разных устройствах. Запросил информацию для отвязки от конфигов https://github.com/Koenkk/zigbee2mqtt/issues/1236
5) Настройка отвязки выключателей акара от реле
6) Биндинг устройств (управление без коодинатора)
Ссылка на интересный тематический канал в телеграм: https://t.me/zigbeer
Часто задаваемые вопросы по zigbee https://myzigbee.ru/
Ссылка на репозиторий модуля zigbee2mqtt: http://github.com/directman66/majordomo-zigbee2mqtt/
Топики для управления устройствами через mqtt https://www.zigbee2mqtt.io/integration/ … stant.html
Топики для управления шлюзом через mqtt https://www.zigbee2mqtt.io/information/ … tbridgelog
Драйвера для smartRF04EB начинаются на swrc* есть в репозитории Кирова Ильи https://github.com/kirovilya/files
Огромная благодарность Илье @goofyk за помощь в освоении материала )
Последние версии прошивок можно взять тут
https://github.com/Koenkk/Z-Stack-firmw … CC2531/bin
https://github.com/Koenkk/Z-Stack-firmw … ity/CC2531
Список поддерживаемого оборудования:
https://www.zigbee2mqtt.io/information/ … vices.html
Обсуждение умных ламп http://majordomo.smartliving.ru/forum/v … 733#p95733
Разработка данного модуля осуществляется на общественных началах и требует значительных временных затрат. Поддержать разработку данного модуля можно через коннект https://connect.smartliving.ru/tasks/355.html,
покупкой прошитого стика, переводом Cбербанк-Онлайн по номеру телефона +79122962262, банковским переводом на карту 5336690289960694, либо через Яндекс кошелек: 41001189619405. Покупка прошитого стика сс2531 у автора модуля также является элементом стимулирования развития проекта. .
Скриншот:
- screen.png (130.07 КБ) 27260 просмотров
Последний раз редактировалось directman66 Пт май 15, 2020 8:41 am, всего редактировалось 107 раз.
Более подробная инструкция находится тут
Модуль для интеграции устройств zigbee в систему MAJORDOMO c использованием zigbee2mqtt
Давно известно, что с zigbee устройствами можно работать не только через шлюз MiHome. Имеется множество других решений, через которые можно получать данные и управлять устройствами (deconz, athom hommey, samsung smartthings, philips hue, Smart home Hommyn Zigbee Хаб (HU-20-Z) etc). По моему мнению, самым интересным и бюджетным вариантом является проект zigbee2mqtt https://www.zigbee2mqtt.io
Для работы c проектом нужен прошитый стик и компьютер на линукс (подойдет любой одноплатник типа малины)
стик https://ru.aliexpress.com/store/product/Wireless-Zigbee-CC2531-Sniffer-Bare-Board-Packet-Protocol-Analyzer-Module-USB-Interface-Dongle-Capture-Packet-Module/2182011_32852226435.html
дебаггер https://ru.aliexpress.com/store/product/Smart-RF04E-Smart-RF04EB-CC1110-CC2530-CC2531-CC2540-ZigBee-Module-Target-Zigbee-Emulator-CC-Debugger-Bluetooth/2182011_32950422195.html
шнурок https://ru.aliexpress.com/store/product/Downloader-Cable-Bluetooth-4-0-CC2540-zigbee-CC2531-Sniffer-USB-Programmer-Wire-Download-Programming-Connector-Board/2182011_32853531081.html
Желательно все заказывать у одного продавца, тогда будет один трек на все товары. Я имел неосторожность заказать у разных продавцов, в итоге шнурок ждал около 3 месяцев без пробивания трека.
Прошитый стик можно заказать у спрута https://sprut.ai/client/projects/105 (нажать кнопку помочь проекту, выбрать прошитый стик и указать цену 1000 руб.)
Есть возможность прошить стик через ардуино
https://github.com/kirovilya/ioBroker.zigbee/wiki/%D0%9F%D1%80%D0%BE%D1%88%D0%B8%D0%B2%D0%BA%D0%B0-%D1%87%D0%B5%D1%80%D0%B5%D0%B7-Arduino, но это очень долгий процесс и занимает около 5 часов. К тому-же очень сложно прошивать, не имея кабель-шнурок. От этого варианта прошивания я отказался.
Также стик можно прошить у коллег в вашем городе, например в Екате я могу прошить стик за символическую плату в размере 500 руб )
В модуле mqtt от @SergeJey доступно только чтение параметров, поэтому для управления устройствами начал писать новый модуль zigbee2mqtt
Инструкция по перепрошивке стика:
Понадобился драйвер для дебагера https://github.com/kirovilya/files/blob/master/swrc212a.zip
Прошивал по этой инструкции: https://www.zigbee2mqtt.io/getting_started/flashing_the_cc2531.html
Еще инструкция https://github.com/kirovilya/ioBroker.zigbee/wiki/%D0%9F%D1%80%D0%BE%D1%88%D0%B8%D0%B2%D0%BA%D0%B0
Прошивальщик https://yadi.sk/d/RxIVtu3YTCBDyw
Последние версии прошивок можно взять тут https://github.com/Koenkk/Z-Stack-firmware/tree/dev/coordinator/
Инструкция по установке zigbee2mqtt для linux:
https://www.zigbee2mqtt.io/getting_started/running_zigbee2mqtt.html
Если вам нужна поддержка разрабатываемого в данный момент железа, можно установить девелоперскую ветку. Тогда вместо
sudo git clone https://github.com/Koenkk/zigbee2mqtt.git /opt/zigbee2mqtt
sudo chown -R pi:pi /opt/zigbee2mqtt
cd /opt/zigbee2mqtt
npm install
нужно выполнить
sudo git clone --single-branch --branch dev https://github.com/Koenkk/zigbee2mqtt/ /opt/zigbee2mqtt
sudo chown -R pi:pi /opt/zigbee2mqtt
cd /opt/zigbee2mqtt
npm install
Установка zigbee2mqtt для windows
- Устанавливаем брокер mqtt, если у вас его еще нет по инструкции http://www.steves-internet-guide.com/install-mosquitto-broker/
Кому лениво устанавливать или держать у себя брокер, а также пользователям windows, у которых нет брокера, при наличии платной подписки на connect (200р.), вы можете использовать адрес http://connect.smartliving.ru в качестве брокера mqtt.
- Качаем и устанавливаем git
https://git-scm.com/download/win - Качаем и устанавливаем node.js для windows
https://nodejs.org/en/download/
Далее процесс идентичен установке под linux https://www.zigbee2mqtt.io/getting_started/running_zigbee2mqtt.html
Пока только не понятно, как управлять и перезагружать сервис под виндой.
Настраиваем конфигурационный файл /opt/zigbee2mqtt/data/configuration.yaml
пример вариантов настроек конфигурационного файла https://www.zigbee2mqtt.io/configuration/configuration.html
homeassistant: false permit_join: true advanced: channel: 26 log_level: debug mqtt: base_topic: zigbee2mqtt # server: 'mqtt://192.168.178.32:1900' server: 'mqtt://192.168.1.39' serial: port: /dev/ttyACM1
26 канал выбран для livolo выключателя (работают только на 26 канале Koenkk/zigbee2mqtt#592). При отсутствии ливоло выключателей, можно удалить эту строку.
Если вы настраиваете систему под windows, порт необходимо указать в следующем формате:
serial: port: COM4[/code]
Запускаем командой sudo systemctl start zigbee2mqtt
#Обновление локального zigbee2mqtt до актуальной версии:
# Stop zigbee2mqtt and go to directory sudo systemctl stop zigbee2mqtt cd /opt/zigbee2mqtt # Backup configuration cp -R data data-backup # Update git checkout HEAD -- npm-shrinkwrap.json git pull rm -rf node_modules npm install # Restore configuration cp -R data-backup/* data rm -rf data-backup # Start zigbee2mqtt sudo systemctl start zigbee2mqtt
Чтобы сервис стартовал автоматически, не забудьте после п. 5 (Optional) Running as a daemon with systemctl выполнить
sudo systemctl enable zigbee2mqtt
(сервис будет запускаться автоматически при старте системы)
#Список поддерживаемого оборудования:
https://www.zigbee2mqtt.io/information/supported_devices.html
Текущий статус модуля: бетта
Реализовано:
- подписка на канал zigbee2mqtt/#
- автоматическое создание устройств;
- автоматическое заполнение метрик устройств;
- привязка метрик к объектам.
- просмотр логов zigbee2mqtt;
- конвертирование привязанных переменных в стандартный для мажордомо формат (вместо 1/0 в zigbee2mqtt используется ON/OFF);
- управление устройствами;
- создание карты устройств.
- Добавлено управление и просмотр режимами сопряжения.
- Добавлено управление (ON OFF) устройствами с главного окна модуля.
11)Подсвечиваются серым потерянные устройства.
Что планируется:
- Работа с группами https://www.zigbee2mqtt.io/information/groups.html
- Заведение отсутствующих метрик, чтобы можно было привязать не описанные события)
- Отладить работу. Поступают противоречивые данные, у кого-то не отображаются выпадающие списки с картинками и тд.
- Отладить работу, когда мажордомо и zigbee2mqtt находятся на разных устройствах. Запросил информацию для отвязки от конфигов Koenkk/zigbee2mqtt#1236
- Настройка прямого управления устройствами
Ссылка на интересный тематический канал в телеграм: https://t.me/zigbeer
Ссылка на репозиторий модуля zigbee2mqtt: http://github.com/directman66/majordomo-zigbee2mqtt/
Топики для управления устройствами через mqtt https://www.zigbee2mqtt.io/integration/home_assistant.html
Топики для управления шлюзом через mqtt https://www.zigbee2mqtt.io/information/mqtt_topics_and_message_structure.html#zigbee2mqttbridgelog
Драйвера для smartRF04EB начинаются на swrc* есть в репозитории Кирова Ильи https://github.com/kirovilya/files
Огромная благодарность Илье @goofyk за помощь в освоении материала )
Последние версии прошивок можно взять тут https://github.com/Koenkk/Z-Stack-firmware/tree/dev/coordinator/
Обсуждение умных ламп http://majordomo.smartliving.ru/forum/viewtopic.php?f=8&t=6016&p=95733#p95733
Более подробная информация содержится на форуме https://mjdm.ru/forum/viewtopic.php?f=5&t=6011
Для подключения ZigBee устройств и датчиков необходим шлюз, который обеспечит взаимодействие между ними. Зачастую каждый производитель выпускает шлюзы поддерживающие только устройства своей экосистемы. Не все шлюзы возможно подключить к альтернативным системам управления и не все, подключенные через шлюз устройства, могут поддерживаться, бывает, что у устройств ограничен функционал. Решить подобные проблемы и объединить наши устройства поможет USB координатор CC2531 стоимостью 5$. Заказать можно на одной известной торговой китайской торговой площадке, устройства предлагаются в двух вариантах, со встроенной и внешней подключаемой антенной, предпочтительнее второй вариант, т.к. при недостаточном уровне сигнала можно заменить антенну на более мощную.
Для подключения устройств необходимы:
- USB координатор CC2531.
- Компьютер для подключения координатора и установки необходимого программного обеспечения, для этих целей прекрасно подходит Raspberry Pi.
- Программное обеспечение ZigBee2MQTT.
- Программное обеспечение для работы протокола MQTT (так называемый MQTT брокер), например, Mosquitto.
Преимущества данного подключения устройств:
- Датчики и устройства можно подключить к альтернативным системам, таким как Home Assistant, не имея шлюза производителя.
- Обширный список устройств разных производителей. Полный список поддерживаемых устройств.
- Можно использовать гибридную систему, часть устройств подключены к шлюзу производителя, часть напрямую к СС2531.
- Некоторые устройства имеют функции, которых нет при подключении к шлюзу своей экосистемы.
Схема подключения будет выглядеть следующим образом:
На сайте проекта ZigBee2MQTT подробно расписан порядок действий, ниже будет представлен вольный перевод того, что необходимо выполнить:
- Прошивка CC2531
- Установка MQTT брокера Mosquitto
- Установка ZigBee2MQTT
- Обновление ZigBee2MQTT
- Подключение устройств
- Выявленные проблемы
Прошивка CC2531
Изначально устройство пустое, на ней не прошито никакого управляющего программного обеспечения, поэтому первым делом необходимо залить на устройство прошивку. Прошить устройство можно несколькими способами:
- При помощи CC Debugger, покупается на той же площадке где и плата, стоит как два устройства CC2531. Можно поискать у знакомых, которые уже купили данное устройство. Минус, то что оно нужно всего на один-два раза, прошить/обновить плату и…. возможно прошить еще одну, которая будет выступать как роутер. Необходим Debug кабель, покупается там же вместе с CC Debugger’ом или отдельно.
- Прошить с помощью Paspberry Pi. [Инструкция]
Ниже описан первый вариант для Windows. Оригинал был описан на сайте ZigBee2MQTT. UPD.: на 10.11.2020 страница перенесена, но в общем списке ссылка на нее отсутствует.
Скачиваем и устанавливаем программу SmartRF Flash Programmer, необходимо зарегистрироваться на сайте, после чего будет доступна ссылка на скачивание. Будьте внимательны! SmartRF Flash Programmer v2 не подходит!!! [Зеркало]
Скачиваем и устанавливаем драйвер для CC Debugger, подключите CC Debugger к USB порту, в диспетчере устройств убедитесь, что драйвер установился корректно и устройство определилось. При возникновении проблем установите драйвер вручную. Отключите CC Debugger. [Зеркало]
Подключить СС2531 к CC Debugger’у при помощи Debug кабеля. Подключить оба устройства (CC2531 и CC Debugger) к USB портам компьютера. Если индикатор на CC Debugger светит красным, то нажать кнопку Reset на CC Debugger, индикатор должен загореться зеленым цветом.
Скачиваем и распаковываем прошивку для CC2531. Прошивки есть для ZigBee версии 1.2 и 3. Для версии 1.2 есть два вида прошивок Default и Source Routing, автор комментирует так:
- Если в ZigBee сети до 30 устройств, то рекомендуется версия Default.
- Если в ZigBee сети более 30 устройств, то рекомендуется версия Source Routing. Данная прошивка поддерживает только 5 прямых подключений к координатору, остальные устройства подключаются через роутеры. Роутером в ZigBee сети обычно выступает любое устройство, подключенное к постоянному питанию, розетки, выключатели, светильники, но выключатели Xiaomi без нулевой линии не являются роутерами. Так же в качестве роутера можно использовать другое устройства CC2531 или CC2530, но прошитые специальной прошивкой.
Запускаем SmartRF Flash Programmer и выбираем:
- What do you want to program:
Program CCxxxx SoC or MSP430
- Во вкладке Sisten-on-Chip выбираем
CC2531
- Interface:
Fast
- Flash Image File выбираем файл прошивки с расширением
*.hex
. - Location:
Primary
- Actions:
Erace, program and verify
Нажимаем Perfom actions,
ждем окончания прошивки модуля.
Отключаем модуль от компьютера и CC Debugger’а.
Установка MQTT брокера Mosquitto
Дальнейшие инструкции описывают установку программного обеспечения на Ubuntu и другие системы на базе Debian, в том числе Raspberry Pi OS.
Выполняем:
$ sudo apt-get install mosquitto
В файле /etc/mosquitto/mosquitto.conf
должно быть следующее:
pid_file /var/run/mosquitto.pid persistence true persistence_location /var/lib/mosquitto/ log_dest file /var/log/mosquitto/mosquitto.log include_dir /etc/mosquitto/conf.d
Создадим файл default.conf
для внесения своих настроек:
$ sudo touch /etc/mosquitto/conf.d/default.conf
Для установки пароля в файл /etc/mosquitto/conf.d/default.conf
внесем следующее:
allow_anonymous false password_file /etc/mosquitto/passwd
Создаем нового пользователя usermosquitto с паролем passmosquitto для подключения к Mosquitto:
$ sudo mosquitto_passwd -c /etc/mosquitto/passwd usermosquitto
Вводим пароль для нового пользователя и перезапускаем сервис Mosquitto:
$ sudo systemctl restart mosquitto
Установка ZigBee2MQTT
Подключаем CC2531 координатор к компьютеру, работающему 24/7, самый распространенный вариант это Raspberry Pi где крутится сервис автоматизации, но на самом деле это могут быть разные компьютеры, первый MQTT брокером, второй с сервисом ZigBee2MQTT, третий с сервисом автоматизации Но обычно это один компьютер.
Проверяем подключение устройства в системе:
$ ls -l /dev/serial/by-id total 0 lrwxrwxrwx 1 root root 13 Jul 18 10:56 usb-Texas_Instruments_TI_CC2531_USB_CDC___0X00124B0014D47D15-if00 -> ../../ttyACM0
Как видно из ответа, наше устройство обнаружилось как ttyACM0
, проверяем:
$ ls -l /dev/ttyACM0 crw-rw---- 1 root dialout 166, 0 Jul 22 22:43 /dev/ttyACM0
Устанавливаем репозиторий Node.js
:
$ sudo curl -sL https://deb.nodesource.com/setup_12.x | sudo -E bash -
Устанавливаем Node.js
:
$ sudo apt-get install -y nodejs git make g++ gcc
Проверяем версии Node.js
и npm:
$ node --version v12.18.2 $ npm --version 6.14.5
Версия Node.js
должна быть 10.x или 12.x, npm
— 6.x
Делаем клон репозитория ZigBee2MQTT:
$ sudo git clone https://github.com/Koenkk/zigbee2mqtt.git /opt/zigbee2mqtt
Устанавливаем права:
$ sudo chown -R user:group /opt/zigbee2mqtt
где user — пользователь, под которым будет работать сервис, group — группа имеющая доступ к папке. Для Raspberry Pi это обычно pi:pi. Пользователь должен входить в группу dialout.
Установка зависимостей:
$ cd /opt/zigbee2mqtt $ npm ci
При корректной установке в ответ будет выведено сообщение вида:
node-pre-gyp info ok added 752 packages in 121.57s
Предупреждающие сообщения Warning
игнорируем.
Редактируем файл настроек /opt/zigbee2mqtt/data/configuration.yaml
:
homeassistant: true permit_join: false mqtt: base_topic: zigbee2mqtt server: 'mqtt://localhost' user: usermosquitto password: passmosquitto serial: port: /dev/ttyACM0 advanced: network_key: GENERATE
homeassistant: true
— если вы собираетесь используете интеграцию с Home Assistant.
permit_join: false
— подключение новых устройств. Для подключения новых устройств необходимо выставить в true, рекомендуемое значение false во избежании подключения случайных устройств.
server: 'mqtt://localhost'
— адрес сервера MQTT. Если это тоже самое устройство, то оставляем localhost
.
user: usermosquitto
— пользователь с доступом к MQTT серверу.
password: passmosquitto
— Пароль пользователя MQTT сервера.
port: /dev/ttyACM0
— устройсво CC2531 в системе.
network_key: GENERATE
— ключ безопасности сети ZigBee. GENERATE
— при старте будет сгенерирован новый ключ, можно задать вручную: network_key: [1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5]
Первый запуск:
$ cd /opt/zigbee2mqtt $ npm start
При правильной настройке будет сообщение вида:
zigbee2mqtt:info: Connecting to MQTT server at mqtt://localhost zigbee2mqtt:info: Connected to MQTT server
Останавливаем программу Ctrl+C
.
Создаем файл для запуска сервиса при старте системы.
$ 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=pi [Install] WantedBy=multi-user.target
User=pi
— Пользователь, с правами которого запускается сервис. Для Raspberry Pi это обычно пользователь pi.
Добавляем сервис в автозагрузку и запускаем его:
$ sudo systemctl enable zigbee2mqtt.service $ sudo systemctl start zigbee2mqtt.service
Обновление ZigBee2MQTT
Останавливаем сервис:
$ sudo systemctl stop zigbee2mqtt.service
Делаем резервную копию данных:
$ cd /opt/zigbee2mqtt $ cp -R data data-backup
Запуск обновления:
$ git checkout HEAD -- npm-shrinkwrap.json $ git pull $ npm ci
Восстановление данных и запуск сервиса:
$ cp -R data-backup/* data $ rm -rf data-backup $ sudo systemctl start zigbee2mqtt
Подключение устройств
Для подключения устройств в файле /opt/zigbee2mqtt/data/configuration.yaml
надо установить permit_join: true
и перезагрузить сервис.
Перед подключением необходимо проверить, что подключаемое устройство находится в списке поддерживаемых устройств. Для перевода подключаемого устройства в режим спаривания необходимо обратиться к инструкции производителя.
После подключения всех устройств для повышения безопасности и избежании случайного подключения других устройств в файле /opt/zigbee2mqtt/data/configuration.yaml
необходимо установить permit_join: false
после чего перезагрузить сервис.
Выявленные проблемы
На Ubuntu было лень создавать отдельного пользователя для работы сервиса и программа запускалась от пользователя homeassistant
вместе с самим Home Assistant. После нескольких минут работы у Home Assistant отваливалась связь со шлюзами и светильниками Xiaomi. После создания в системе отдельного пользователя и настройки запуска от его имени проблема ушла.
Я ни разу не параноик и никогда не переживал, что мой аккаунт в соцсети взломают злодеи и прочтут всю ту ахинею, которую я пишу друзьям. Но подключение «мозгов» умного дома к облаку, будь то китайское или американское, да хоть русское- это выше моего пофигизма. С другой стороны, сейчас на рынке много доступных предложений по автоматизации, которые достойны внимания, но работают через облака. К примеру, Xiaomi.
В этой статье я покажу, как организовать работу в локальной сети устройств Zigbee от разных производителей без подключения к непонятным облакам
Начинаем, как всегда, с постановки задачи: устройства Zigbee должны работать с Home Assistant локально без доступа к облаку производителя.
Изначально важно понимать, что все производители используют единый стандарт беспроводной передачи данных, поэтому устройство одного производителя может спокойно подключаться к сети Zigbee и обмениваться данными с другими устройствами разных производителей. Все ограничения, как правило, прописываются в шлюзах, приложениях и облаках — тут уж кто на что горазд. Поэтому задача сводится к созданию своего zigbee шлюза.
Для Zigbee-устройств используется в основном 3 вида чипов компании TI (есть и другие, но эти наиболее популярны):
cc2530 — дешевый и проверенный чип с 8Кб памяти
cc2531 — такой же дешевый и проверенный чип с 8Кб памяти, но имеющий контроллер USB на борту
cc2538 — с процессором Cortex-M3 и 32Кб памяти
В целом семейство чипов cc253x привлекательно своей низкой ценой. Поэтому большинство китайских устройств сделано именно на них.
Плавно мы подошли к тому, что можно сделать устройство с чипом cc253x и с помощью него слушать/ посылать в эфир команды по протоколу zigbee. И такие устройства, конечно, есть. Самый популярный вариант Zigbee-стика с подключением в USB порт реализован на чипе cc2531. Его преимущество в том что он продается в готовом для эксплуатации виде (нужно только прошить прошивку). Выглядит так:
Стоит такой стик порядка 350 рублей (без доставки) Ссылка на Aliexpress
Следующий шаг — объяснить чипу, что в этой жизни он будет шлюзом сети Zigbee, другими словами прошить устройство с помощью программатора CC Debugger. Выглядит он так:
Стоит такой порядка 370 рублей (без доставки) Ссылка на Aliexpress
Прошивка zigbee стика
Прошивать будем прошивку с популярного проекта zigbee2mqtt.io Суть заключается в том, что стик, являясь координатором сети Zigbee будет пересылать сообщения из zigbee сети в MQTT и обратно. Стик поддерживает работу одновременно до 25 конечных устройств. Для бОльшего количества потребуется устройство с ролью ретранслятор. Как правило, это устройство, включающееся в розетку.
На момент написания статьи поддерживается 785 устройств от 140 различных производителей! Ссылка на страницу с перечнем устройств
Процесс прошивки (на ОС Windows):
— Скачиваем с сайта TI программное обеспечение SmartRF Flash programmer (НЕ v2). Предварительно попросят зарегистрировать бесплатный аккаунт
— Устанавливаем CC debugger driver
— Соединяем CC debugger —> Downloader cable CC2531 —> CC2531 USB стик
— Вставляем CC2531 USB стик в порт компьютера
— Вставляем CC debugger в порт компьютера
— Если лампочка на CC debugger горит красным — нажмите кнопку reset. Лампочка должна гореть зеленым.
— Скачиваем прошивку CC2531_coordinator_firmware
— Запускаем SmartRF Flash Programmer, устанавливаем настройки, как на картинке и нажимаем «Perform actions». Проверьте, что файл выбран с расширением .hex!
Поздравляю, с железной частью мы закончили.
Настраиваем сервер MQTT.
Если он у вас настроен, то это шаг можно пропустить. Я использую аддон hassio, который называется Mosquitto broker. Для его установки переходим на вкладку Supervisor на закладку ADD-ON STORE и выбираем этот аддон из списка
Настройки брокера описаны на вкладке Documenation. В целом mqtt будет вполне корректно работать с дефолтовыми настройками. После настройки необходимо запустить аддон. Если в логах нет ошибок, то переходим в Настройки -> Люди -> Пользователи (Configuration -> Users) и создаем нового пользователя mqtt.
Переходим в Настройки -> Интеграции (Configuration -> Integrations), выбираем интеграцию MQTT и ставим галочку «Добавлять новые объекты». Это включит автоматическое добавление mqtt устройств в Home Assistant Подробнее тут
Устанавливаем и настраиваем Zigbee2mqtt
Для этого подключаем стик к серверу умного дома Home Assistant. Я использую версию Hassio на Raspberry PI3
Устанавливаем аддон zigbee2mqtt GitHub. Для этого переходим на вкладку Supervisor на закладку ADD-ON STORE и добавляем новый репозиторий
https://github.com/danielwelch/hassio-zigbee2mqtt
и устанавливаем аддон
Для корректной работы аддона необходимо определить путь к нашему свистку. Заходим в закладку System и нажимаем кнопку Hardware. У меня он находится по адресу /dev/ttyACM1. Предварительно настоятельно советую отключить остальные устройства из usb для чистоты эксперимента.
Теперь необходимо настроить аддон zigbee2mqtt. Для этого переходим на вкладку Configuration аддона. Я настраивал секции mqtt (подключение к серверу mqtt) и serial (путь к стику).
data_path: /share/zigbee2mqtt
devices: devices.yaml
groups: groups.yaml
homeassistant: true
permit_join: false
mqtt:
base_topic: zigbee2mqtt
server: 'mqtt://ip:1883'
user: mqtt_user
password: mqtt_pass
serial:
port: /dev/ttyACM1
advanced:
pan_id: 6754
channel: 11
network_key:
- 1
- 3
- 5
- 7
- 9
- 11
- 13
- 15
- 0
- 2
- 4
- 6
- 8
- 10
- 12
- 13
availability_blacklist: []
ban: []
whitelist: []
queue: {}
socat:
enabled: false
master: 'pty,raw,echo=0,link=/dev/ttyZ2M,mode=777'
slave: 'tcp-listen:8485,keepalive,nodelay,reuseaddr,keepidle=1,keepintvl=1,keepcnt=5'
restartdelay: 1
initialdelay: 1
options: '-d -d'
log: false
Запускаем аддон и переходим на вкладку Log. Проверяем, что аддон запускается без ошибок
Создаем объекты в Home assistant для подключения устройств Zigbee. В файле Configuration.yaml добавляем код
#--------------------------------------------------------Объекты
input_boolean:
zigbee_permit_join:
name: Allow devices to join
initial: off
icon: mdi:cellphone-wireless
timer:
zigbee_permit_join:
name: Time remaining
duration: 600 # Updated this to the number of seconds you wish
#-----------------------------------------------------Датчики
sensor:
#----------------------------------------------Состояние моста MQTT-ZigBee
- platform: mqtt
name: Bridge state
state_topic: "zigbee2mqtt/bridge/state"
icon: mdi:router-wireless
В файл automations.yaml добавляем код
#---------------------------------------------------Автоматизация
automation:
- id: enable_zigbee_join
alias: Enable Zigbee joining
hide_entity: true
trigger:
- platform: state
entity_id: input_boolean.zigbee_permit_join
to: 'on'
action:
- service: mqtt.publish
data:
topic: zigbee2mqtt/bridge/config/permit_join
payload: 'true'
- service: timer.start
data:
entity_id: timer.zigbee_permit_join
- id: disable_zigbee_join
alias: Disable Zigbee joining
trigger:
- entity_id: input_boolean.zigbee_permit_join
platform: state
to: 'off'
action:
- service: mqtt.publish
data:
payload: 'false'
topic: zigbee2mqtt/bridge/config/permit_join
- service: timer.cancel
data:
entity_id: timer.zigbee_permit_join
hide_entity: true
- id: disable_zigbee_join_timer
alias: Disable Zigbee joining by timer
hide_entity: true
trigger:
- platform: event
event_type: timer.finished
event_data:
entity_id: timer.zigbee_permit_join
action:
- service: mqtt.publish
data:
topic: zigbee2mqtt/bridge/config/permit_join
payload: 'false'
- service: input_boolean.turn_off
data:
entity_id: input_boolean.zigbee_permit_join
Добавляем на основной экран (Lovelace) объекты » Allow devices to join «, Time remaining, и Bridge state.
Теперь для запуска режима подключения нового устройства достаточно перевести переключатель Allow devices to join в положение «Включено»
Подключение устройств Zigbee к шлюзу cc2531
Сделаем подключение на примере Xiaomi Aqara Window Door Sensor
— Включаем Allow devices to join в Home Assistant. Шлюз включит режим сопряжения устройств на 10 минут
— Открываем лог аддона ZigBee2MQTT
— Нажимаем кнопку сопряжения на Aqara Window Door Sensor где-то на 3 сек. Синий огонек начнет мигать.
— Ждем появления записей об подключении в логе аддона ZigBee2MQTT
В итоге у вас появляется устройство binary_sensor.<номер>_contact
В интерфейсе у меня датчик контролирует открытие окна. Выглядит следующим образом:
Аналогично подключаются и другие устройства Zigbee, указанные в списке поддерживаемых устройств
В итоге, решение поддерживает локальное подключение zigbee устройств от порядка 140 производителей без подключения к интернету и не подконтрольным облакам.
В заключение нельзя не упомянуть об еще одной возможности интеграции Zigbee устройств в Home Assistant — ZHA. Это библиотека Python с открытым исходным кодом, реализующая стек Zigbee. На момент написания статьи библиотека поддерживает семейство стиков CC253х экспериментальном режиме. К достоинству этого решения можно отнести отсутствие моста zigbee-mqtt, но, судя по отзывам на форумам, решение еще относительно сырое. Планирую его попробовать на тестовом стенде.
Добавляем ZigBee к нашей всеядной машине.
Часть 0. Почему Home Assistant?
Часть 1. Установка Home Assistant
Часть 2. Настройка Z-wave
Часть 3. Настройка Zigbee
Часть 4. Установка Node-RED
Часть 5. HomeKit в Home Assistant через Node-RED
В отличие от Z-wave, хабы, поддерживающие ZigBee, доступны и достаточно просты в настройке и их использовании.
И если самым известным Z-wave производителем со своим хабом единолично можно считать FIBARO, то среди ZigBee можно спокойно выделить как минимум трёх «держателей устоев»: Xiaomi(Mijia и Aqara), IKEA TRÅDFRI, Philips Hue.
Поэтому если в случае с Z-wave мы просто вынуждены использовать какое-то решение с поддержкой OpenZWave, то в случае с ZigBee начинающим пользователям проще не вдаваться в подробности и подключать устройства к хабам, а потом уже к Home Assistant или другому центру автоматизации.
Но если вы в душе перфекционист и вы не хотите лишней прослойки в виде отдельного хаба, общающегося с вашим сервером УД по Wi-Fi, то текст ниже для вас.
Благодаря коллегам по цеху: а именно Кирову Илье (@goofyk в telegram) на нашем портале есть ряд статей об использовании zigbee стиков, их настройке и сравнении. Вот одна из них.
Но мы остановимся на одном наиболее доступном и обсуждаемом варианте: стик CC2531 и zigbee2mqtt. Именно эта связка позволит нам управлять устройствами не только от Xiaomi, IKEA и Philips, но и многими другими, включая некие полезные китайские поделки.
Покупка и прошивка стика
Ниже простой перевод оригинальной статьи с GitHub. Настоятельно рекомендуем использовать его.
Windows
- Установите SmartRF Flash programmer (Не V2). Это програмное обеспечение бесплатно, но требует аккаунт для того, чтобы его скачать.
- Установите CC debugger driver на ваш компьютер. Перед продолжением убедитесь, что CC Debugger driver установлен правильно. Смотри Figure 1. Verify Correct Driver Installation @ Chapter 5.1. Если CC Debugger не распознается, то установить его вручную.
- Подключите
CC debugger --> Downloader cable CC2531 --> CC2531 USB sniffer
. - Подключите ОБА
CC2531 USB sniffer
иCC debugger
к вашему компьютеру через USB. - Если лампочка на CC debugger горит КРАСНЫМ, то нажми кнопку Reset на CC debugger. Теперь цвет лампочки должна измениться на ЗЕЛЕНЫЙ. Если нет, то используй CC debugger user guide для решения проблем.
- Скачиваем прошивку CC2531ZNP-Prod.hex
- Стартуем SmartRF Flash Programmer, устанавливаем настройки как на скриншоте и нажимаем
Perform actions
.
Linux или MacOS
- Установите необходимые зависимости для CC-Tool используя package center (например для macOS Homebrew )
- Соберите cc-tool
git clone https://github.com/dashesy/cc-tool.git cd cc-tool ./bootstrap ./configure make
- Подключите
CC debugger --> Downloader cable CC2531 --> CC2531 USB sniffer
. - Подключите ОБА
CC2531 USB sniffer
иCC debugger
к вашему компьютеру через USB. - Если лампочка на CC debugger горит КРАСНЫМ, то нажми кнопку Reset на CC debugger. Теперь цвет лампочки должна измениться на ЗЕЛЕНЫЙ. Если нет, то используй CC debugger user guide для решения проблем.
- Скачиваем прошивку CC2531ZNP-Prod.hex.
- Записываем прошивку:
sudo ./cc-tool -e -w CC2531ZNP-Prod.hex
Установка zigbee2mqtt
Опять же предупрежу, что ниже идет перевод оригинальной статьи от автора zigbee2mqtt
- Как и во время настройки Z-wave, выполняем 3 простых шага (выключаем Raspberry, вставляем наш прошитый стик, включаем Raspberry).
- Далее определяем порт стика (в отличие от UZB стика здесь будет всё проще). Выполняем команду
ls -l /dev/serial/by-id
и находим в ответе тот порт, у которого в ответе будет что-то про Texas Instruments
lrwxrwxrwx 1 root root 13 Dec 23 14:00 usb-0658_0200_12345678-9012-3456-7890-123456789012-if00 -&amp;amp;gt; ../../ttyACM1 lrwxrwxrwx 1 root root 13 Dec 23 14:00 usb-Texas_Instruments_TI_CC2531_USB_CDC___0X00124B0012022F34-if00 -&amp;amp;gt; ../../ttyACM0
- Устанавливаем сам zigbee2mqtt, выполняя строчку за строчкой следующий набор команд
# Setup Node.js repository sudo curl -sL https://deb.nodesource.com/setup_10.x | sudo -E bash - # Install Node.js 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 --version # Should output v10.X npm --version # Should output 6.X # Clone zigbee2mqtt repository sudo git clone https://github.com/Koenkk/zigbee2mqtt.git /opt/zigbee2mqtt sudo chown -R pi:pi /opt/zigbee2mqtt # Install dependencies cd /opt/zigbee2mqtt npm install
- Настраиваем zigbee2mqtt.
Редактируем файл configuration.yamlnano /opt/zigbee2mqtt/data/configuration.yaml
Добавляем в файл следующие строки (меняем только адрес MQTT сервера, если он у вас поднят не на этой Raspberry)
# MQTT settings mqtt: # MQTT base topic for zigbee2mqtt MQTT messages base_topic: zigbee2mqtt # MQTT server URL server: 'mqtt://localhost' # MQTT server authentication, uncomment if required: # user: my_user # password: my_password
Сохраняем файл и закрываем его.
- Стартуем zigbee2mqtt первый раз
cd /opt/zigbee2mqtt npm start
После этого мы должны получить приблизительно такой ответ:
2018-5-18 20:35:07 INFO Starting zigbee-shepherd 2018-5-18 20:35:09 INFO zigbee-shepherd started 2018-5-18 20:35:09 INFO Currently 0 devices are joined: 2018-5-18 20:35:09 INFO Connecting to MQTT server at mqtt://localhost 2018-5-18 20:35:09 INFO zigbee-shepherd ready 2018-5-18 20:35:09 INFO Connected to MQTT server
Если всё ок, то мы можем останавливать zigbee2mqtt(CTRL+C) и переходить к следующему шагу — автозапуск
- Для того, чтобы zigbee2mqtt стартовал автоматически при запуске Raspberry, настроим автозапуск.
Создаем конфигурационный файл: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=pi [Install] WantedBy=multi-user.target
Активируем службу:
sudo systemctl enable zigbee2mqtt.service
Как и в случае с запуском Home Assistant ниже несколько tips & tricks на будущее:
# Stopping zigbee2mqtt sudo systemctl stop zigbee2mqtt # Starting zigbee2mqtt sudo systemctl start zigbee2mqtt # View the log of zigbee2mqtt sudo journalctl -u zigbee2mqtt.service -f
- Процесс обновления (на будущее)
# Stop zigbee2mqtt and go to directory sudo systemctl stop zigbee2mqtt cd /opt/zigbee2mqtt # Backup configuration cp -R data data-backup # Update git checkout HEAD -- npm-shrinkwrap.json git pull rm -rf node_modules npm install # Restore configuration cp -R data-backup/* data rm -rf data-backup # Start zigbee2mqtt sudo systemctl start zigbee2mqtt
Настройка Home Assistant
Продолжаем традиции и используем за основу оригинальную статью от автора.
ВАЖНО! Необходимо использование версии Home Assistant не ниже 0.84
- Открываем configuration.yaml Zigbee2mqtt
nano /opt/zigbee2mqtt/data/configuration.yaml
и добавляем в самое начало файла
homeassistant: true
- Открываем configuration.yaml Home Assistant и добавляем блок с MQTT discovery:
mqtt: discovery: true broker: localhost # Remove if you want to use builtin-in MQTT broker birth_message: topic: 'hass/status' payload: 'online' will_message: topic: 'hass/status' payload: 'offline'
- После этих действий нам остается начать добавлять устройства в zigbee2mqtt, чтобы они начали появляться в Home Assistant.
Спаривание устройств
Отдельный блок по спариванию устройств каждого производителя представлена опять же на github автора, ниже лишь приведем пример для устройств Xiaomi.
- Первым делом редактируем файл configuration.yaml zigbee2mqtt
nano /opt/zigbee2mqtt/data/configuration.yaml
и добавляем строку для добавления устройств
permit_join: true
- Далее ищем наш девайс среди поддерживаемых на странице проекта
- После того как мы убедились, что наше устройство поддерживается стиком, то находясь недалеко от стика и нашей Raspberry сбрасываем устройство.
- Большинство MiJia устройств: нажмите и держите кнопку сброса на +/- 5 секунд (до тех пор пока голубой цвет начнет моргать). ВАЖНО: Отпускайте и нажимайте кнопку сброса каждую секунду — при этом обязательно должен моргать голубой свет (если не свет не моргнул, то нажмите кнопку еще раз не дожидаясь следующей секунды). Это будет держать устройство онлайн и заставлять не уходить в сон. Иначе же вы получите ошибку в момент спаривания.
[ERR_UNHANDLED_ERROR]: Unhandled error. (Cannot get the Node Descriptor of the Device: 0x00158d0001720111)
- Для Aqara устройств всё проще: держите +/- 5 секунд кнопку сброса пока голубой цвет не поморгает 3 раза, после этого отпустите (голубой цвет моргнет еще раз) и ждите.
- Для Aqara выключателей всё также просто: держите +/- 10 секунд кнопку пока голубой цвет сначала не начнет моргать, а потом закончит, после этого отпустите и ждите.
Тем самым мы добавили ещё один протокол, с добавлением которого к имеющемуся Z-wave сможем покрыть около 90% своих потребностей, но это не всё… продолжение следует…
Часть 0. Почему Home Assistant?
Часть 1. Установка Home Assistant
Часть 2. Настройка Z-wave
Часть 3. Настройка Zigbee
Часть 4. Установка Node-RED
Часть 5. HomeKit в Home Assistant через Node-RED
Сервер Home Assistant работает на orange pi zero2: http://alii.pub/68uelr
Еще лучше сервер получается из Orange pi 4 lts: http://alii.pub/6esnb3
Если Вы устанавливаете аддон Zigbee2mqtt по старым мануалам, то у Вас он не будет обновляться и версия аддона будет довольно старая, не поддерживающая новые устройства zigbee.
Да да и у меня есть такой старый мануал:
Подключение к Home Assistant модуля Zigbee CC2531
Часть с mqtt брокером и прошивкой и настройкой CC2531 актуальна. А вот сам аддон zigbee2mqtt уже нет. Он там будет версии 1.17.1 – не выше.
Чтоб установить актуальную версию, то нам нужно зайти в магазин addonов и добавить туда новую ссылку: https://github.com/zigbee2mqtt/hassio-zigbee2mqtt
После добавления этой ссылки в репозитории, необходимо перезапустить Home Assistant.
НУ и после перезапуска, у нас появится новый аддон. zigbee2mqtt который можно установить. Перед установкой старый можно не удалять. Достаточно его выключить. Так даже будет лучше, так как если у Вас в старом аддоне были добавлены устройства zigbee. Мы их будем переносить в новый аддон.
Версия актуальная по этой ссылке аддона zigbee2mqtt 1.28.0-1.
Чтоб перенести все устройства в новый аддон, надо в конфигурации нового аддона в параметрах, прописать правильный путь к папке zigbee2mqtt.
Но у меня путь в принципе и был такой же /confg/zigbee2mqtt. ПО этому у меня сразу все подтянулось.
Вот и все. Теперь Ваш аддон zigbee2mqtt будет обновляться довольно-таки часто.