Как установить zigbee2mqtt на windows 10

Zigbee to MQTT bridge, get rid of your proprietary Zigbee bridges
Zigbee2MQTTZigbee2MQTT

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.
  1. Connect your sniffer device
  2. Open up Start menu and start typing Device Manager
  3. Expand Ports (COM & LPT)
  4. Look for a node similar to USB Serial Device (COM4)
  5. Take note of the port number, it will be needed during configuration

Device Manager

Installing

  1. Download and install Node.js 16 LTS from their websiteopen in new window
  2. Open up a Command prompt or Powershell from the Start menu (Powershell has prettier colors)
  3. Verify Node.js was successfully installed
  4. 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
  5. Change to the newly created directory and install dependencies with Node.js own package manager npm

Configuring

  1. Open dataconfiguration.yaml in a text editor
  2. Change the serial port configuration to match your setup
  3. Make sure other settings are correct as well
  4. 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), а координатор прошит.

Установка

  1. Скачать и установить git;

  2. запустить командную строку от имени администратора;

  3. создать папку, выполнив команду md c:optzigbee2mqtt;

  4. выполнить c:Progra~1Gitbingit clone https://github.com/Koenkk/zigbee2mqtt.git c:optzigbee2mqtt;

  5. перейти в папку, выполнив команду cd с:optzigbee2mqtt;

  6. ввести и выполнить 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, поэтому пришлось немного поколхозить:

  1. устанавливаем pm2, выполнив npm install pm2 -g;

  2. скачиваем и копируем файл nssm.exe в c:optzigbee2mqtt;

  3. Выполняем команду nssm install ZigBee2MQTT;

  4. в открывшемся окне вводим в «Path» C:Users<username>AppDataRoamingnpmpm2.cmd6);

  5. в поле «Startup directory» – c:optzigbee2mqtt;

  6. в поле «Arguments» – start c:optzigbee2mqttindex.js;

  7. и на закладке «Exit actions» в поле «Restart» выбираем «Stop service»;

  8. все, нажимаем «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) управление устройствами;
8) создание карты устройств.
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
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

  1. Устанавливаем брокер mqtt, если у вас его еще нет по инструкции http://www.steves-internet-guide.com/install-mosquitto-broker/

Кому лениво устанавливать или держать у себя брокер, а также пользователям windows, у которых нет брокера, при наличии платной подписки на connect (200р.), вы можете использовать адрес http://connect.smartliving.ru в качестве брокера mqtt.

  1. Качаем и устанавливаем git
    https://git-scm.com/download/win
  2. Качаем и устанавливаем 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

Текущий статус модуля: бетта

Реализовано:

  1. подписка на канал zigbee2mqtt/#
  2. автоматическое создание устройств;
  3. автоматическое заполнение метрик устройств;
  4. привязка метрик к объектам.
  5. просмотр логов zigbee2mqtt;
  6. конвертирование привязанных переменных в стандартный для мажордомо формат (вместо 1/0 в zigbee2mqtt используется ON/OFF);
  7. управление устройствами;
  8. создание карты устройств.
  9. Добавлено управление и просмотр режимами сопряжения.
  10. Добавлено управление (ON OFF) устройствами с главного окна модуля.
    11)Подсвечиваются серым потерянные устройства.

Что планируется:

  1. Работа с группами https://www.zigbee2mqtt.io/information/groups.html
  2. Заведение отсутствующих метрик, чтобы можно было привязать не описанные события)
  3. Отладить работу. Поступают противоречивые данные, у кого-то не отображаются выпадающие списки с картинками и тд.
  4. Отладить работу, когда мажордомо и zigbee2mqtt находятся на разных устройствах. Запросил информацию для отвязки от конфигов Koenkk/zigbee2mqtt#1236
  5. Настройка прямого управления устройствами

Ссылка на интересный тематический канал в телеграм: 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.
  • Некоторые устройства имеют функции, которых нет при подключении к шлюзу своей экосистемы.

Схема подключения будет выглядеть следующим образом:

zigbee cc2531 schema

На сайте проекта 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 прошивка CC Debugger connect

Скачиваем и распаковываем прошивку для 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, ждем окончания прошивки модуля.

cc2531 flash programmer

Отключаем модуль от компьютера и 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

  1. Установите SmartRF Flash programmer (Не V2). Это програмное обеспечение бесплатно, но требует аккаунт для того, чтобы его скачать.
  2. Установите CC debugger driver на ваш компьютер. Перед продолжением убедитесь, что CC Debugger driver установлен правильно. Смотри Figure 1. Verify Correct Driver Installation @ Chapter 5.1. Если CC Debugger не распознается, то установить его вручную.
  3. Подключите CC debugger --> Downloader cable CC2531 --> CC2531 USB sniffer.
  4. Подключите ОБА CC2531 USB sniffer и CC debugger к вашему компьютеру через USB.
  5. Если лампочка на CC debugger горит КРАСНЫМ, то нажми кнопку Reset  на CC debugger. Теперь цвет лампочки должна измениться на ЗЕЛЕНЫЙ. Если нет, то используй CC debugger user guide для решения проблем.
    How to connect
  6. Скачиваем прошивку CC2531ZNP-Prod.hex
  7. Стартуем SmartRF Flash Programmer, устанавливаем настройки как на скриншоте и нажимаем Perform actions. SmartRF Flash Programmer

Linux или MacOS

  1. Установите необходимые зависимости для CC-Tool используя package center (например для macOS Homebrew )
  2. Соберите cc-tool
    git clone https://github.com/dashesy/cc-tool.git
    cd cc-tool
    ./bootstrap
    ./configure
    make
  3. Подключите CC debugger --> Downloader cable CC2531 --> CC2531 USB sniffer.
  4. Подключите ОБА CC2531 USB sniffer и CC debugger к вашему компьютеру через USB.
  5. Если лампочка на CC debugger горит КРАСНЫМ, то нажми кнопку Reset  на CC debugger. Теперь цвет лампочки должна измениться на ЗЕЛЕНЫЙ. Если нет, то используй CC debugger user guide для решения проблем.
    How to connect
  6. Скачиваем прошивку CC2531ZNP-Prod.hex.
  7. Записываем прошивку:
    sudo ./cc-tool -e -w CC2531ZNP-Prod.hex

Установка zigbee2mqtt

Опять же предупрежу, что ниже идет перевод оригинальной статьи от автора zigbee2mqtt

  1. Как и во время настройки Z-wave, выполняем 3 простых шага (выключаем Raspberry, вставляем наш прошитый стик, включаем Raspberry).
  2. Далее определяем порт стика (в отличие от 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;amp;gt; ../../ttyACM1
    lrwxrwxrwx 1 root root 13 Dec 23 14:00 usb-Texas_Instruments_TI_CC2531_USB_CDC___0X00124B0012022F34-if00 -&amp;amp;amp;gt; ../../ttyACM0
  3. Устанавливаем сам 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
  4. Настраиваем zigbee2mqtt.
    Редактируем файл configuration.yaml

    nano /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

    Сохраняем файл и закрываем его.

  5. Стартуем 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) и переходить к следующему шагу — автозапуск

  6. Для того, чтобы 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
  7. Процесс обновления (на будущее)
    # 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

  1. Открываем configuration.yaml Zigbee2mqtt
    nano /opt/zigbee2mqtt/data/configuration.yaml

    и добавляем в самое начало файла

    homeassistant: true
  2. Открываем 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'
  3. После этих действий нам остается начать добавлять устройства в zigbee2mqtt, чтобы они начали появляться в Home Assistant.

Спаривание устройств

Отдельный блок по спариванию устройств каждого производителя представлена опять же на github автора, ниже лишь приведем пример для устройств Xiaomi.

  1. Первым делом редактируем файл configuration.yaml zigbee2mqtt
    nano /opt/zigbee2mqtt/data/configuration.yaml

    и добавляем строку для добавления устройств

    permit_join: true
  2. Далее ищем наш девайс среди поддерживаемых на странице проекта
  3. После того как мы убедились, что наше устройство поддерживается стиком, то находясь недалеко от стика и нашей Raspberry сбрасываем устройство.
  4. Большинство MiJia устройств: нажмите и держите кнопку сброса на +/- 5  секунд (до тех пор пока голубой цвет начнет моргать). ВАЖНО: Отпускайте и нажимайте кнопку сброса каждую секунду — при этом обязательно должен моргать голубой свет (если не свет не моргнул, то нажмите кнопку еще раз не дожидаясь следующей секунды). Это будет держать устройство онлайн и заставлять не уходить в сон. Иначе же вы получите ошибку в момент спаривания.
    [ERR_UNHANDLED_ERROR]: Unhandled error. (Cannot get the Node Descriptor of the Device: 0x00158d0001720111)
  5. Для Aqara устройств всё проще: держите +/- 5 секунд кнопку сброса пока  голубой цвет не поморгает 3 раза, после этого отпустите (голубой цвет моргнет еще раз) и ждите.
  6. Для 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 будет обновляться довольно-таки часто.

Понравилась статья? Поделить с друзьями:
  • Как установить zabbix server на windows 10
  • Как установить youtube на рабочий стол windows 10
  • Как установить youtube на компьютер windows 10
  • Как установить youtube на windows phone
  • Как установить yasm на windows 10