Статья

Подключаем Zigbee Спрутстик к Home Assistant

Предисловие

Многим, кто взял в свое время Zigbee спрутстик наверное интересно, как его можно не только в HomeBridge. Сегодня я расскажу вам, как это осуществить. За основу мы возьмем проект zigbee2mqtt, который позволит использоватьзовать ваш стик практически в любом программном комплексе умного дома, который поддерживает MQTT. Приступим!

Установка zigbee2mqtt бриджа

В принципе все описано на странице самого проекта, я расскажу вам более подробно и с комментариями об установке. Для начала необходимо поставить на малину пакет node.js, если у вас на малине стоит homebridge, то пакет уже должен стоять, но мы перестрахуемся. Подключаемся к малине по ssh и выполняем следующую команду:

sudo apt-get install nodejs git make g gcc

Ждем, пока установятся все пакеты. После установки необходимо скопировать git zigbee2mqtt себе локально на устройство, делаем для этого следующее:

sudo git clone https://github.com/Koenkk/zigbee2mqtt.git /opt/zigbee2mqtt sudo chown -R pi:pi /opt/zigbee2mqtt

Где pi:pi это логин и группа, пользователя, от которого вы логинитесь на малину. Чаще всего это именно pi:pi, но бывают исключения. После этого устанавливаем бридж следующей командой:

cd /opt/zigbee2mqtt npm install

Так же не забываем, что пользователю от которого будет запускаться zigbee2mqtt в дальнейшем, необходимо дать права на доступ к устройствам, находящимся в /dev/. Для этого делаем так:

sudo usermod -a -G dialout pi

Не забываем указывать вместо pi вашего корректного пользователя. 

Настройка zigbee2mqtt

После всех необходимых установок пришло время настроить наш бридж. Делаем следующее:

nano /opt/zigbee2mqtt/data/configuration.yaml

Откроется пустой файл в который мы вставляем и редактируем следующий текст:

mqtt: #Тут мы указываем топик, в который будет писать информацию наш бридж. base_topic: zigbee2mqtt #А тут указываем адрес MQTT брокера server: 'mqtt://localhost' #Если вы настриавали и устанавливали брокер по моей инструкции - убираем знак # перед следующими строчками и пишем свои данные #user: my_user #password: my_password

После всех настроек сохраняем файл и пробуем запустить бридж:

cd /opt/zigbee2mqtt npm start

И если все сделано правильно - увидим следующие строчки в начале:

> zigbee2mqtt@0.1.8 start /opt/zigbee2mqtt > node index.js zigbee2mqtt:info 11/10/2018, 1:10:42 PM Logging to directory: '/opt/zigbee2mqtt/data/log/2018-11-10.13-10-42' zigbee2mqtt:info 11/10/2018, 1:10:44 PM Starting zigbee2mqtt version 0.1.8 (commit #97cc56b) zigbee2mqtt:info 11/10/2018, 1:10:44 PM Starting zigbee-shepherd zigbee2mqtt:info 11/10/2018, 1:10:45 PM zigbee-shepherd started

Теперь можно остановить бридж через комбинацию 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

Опять таки не забываем про правильного юзера в последней строчке второго блока. Теперь активируем автозагрузку и запустим сервис:

sudo systemctl enable zigbee2mqtt.service sudo systemctl start zigbee2mqtt.service

И можем посмотреть что сервис запустился корректно:

ubuntu@ubuntu:/opt/zigbee2mqtt$ sudo systemctl status zigbee2mqtt.service ● zigbee2mqtt.service - zigbee2mqtt Loaded: loaded (/etc/systemd/system/zigbee2mqtt.service; enabled; vendor preset: enabled) Active: active (running) since Sat 2018-11-10 14:12:55 04; 18min ago Main PID: 27655 (npm) Tasks: 23 (limit: 4915) CGroup: /system.slice/zigbee2mqtt.service ├─27655 npm ├─27705 sh -c node index.js └─27707 node index.js Nov 10 14:13:08 ubuntu npm[27655]: zigbee2mqtt:info 2018-11-10 13:13:08 Zigbee: allowing new devices to join. Nov 10 14:13:08 ubuntu npm[27655]: zigbee2mqtt:info 2018-11-10 13:13:08 Connecting to MQTT server at mqtt://localhost Nov 10 14:13:08 ubuntu npm[27655]: zigbee2mqtt:info 2018-11-10 13:13:08 zigbee-shepherd ready Nov 10 14:13:08 ubuntu npm[27655]: zigbee2mqtt:info 2018-11-10 13:13:08 Connected to MQTT server Nov 10 14:13:08 ubuntu npm[27655]: zigbee2mqtt:info 2018-11-10 13:13:08 MQTT publish, topic: 'zigbee2mqtt/bridge/state', payload: 'online'

Полный лог можно посмотреть командой:

sudo journalctl -u zigbee2mqtt.service -f

Добавление устройств в Home Assistant

Теперь можем приступать к завершающей части. Для начала парим необходимое зигби устройство со стиком. Я буду показывать на примере одноклавишного выключателя Aqara без нулевой линии. жамкаем на стике дальнюю от USB кнопку, переводим выключатель в режим паринга зажатием кнопки на 10 секунд, или пока снизу не замигают синенькие огонечки. Ждем секунд 30. Если в это время посмотреть логи, то там будет что-то вроде этого: 

Nov 10 15:13:52 ubuntu npm[8178]: zigbee2mqtt:info 2018-11-10 14:13:52 MQTT publish, topic: 'homeassistant/switch/0x00158d00022ec91b/switch/config', payload: '{"payload_off":"OFF","payload_on":"ON","value_template":"{{ value_json.state }}","command_topic":"zigbee2mqtt/0x00158d00022ec91b/set","state_topic":"zigbee2mqtt/0x00158d00022ec91b","availability_topic":"zigbee2mqtt/bridge/state","name":"0x00158d00022ec91b","unique_id":"0x00158d00022ec91b_switch_zigbee2mqtt"}' Nov 10 15:13:52 ubuntu npm[8178]: zigbee2mqtt:info 2018-11-10 14:13:52 MQTT publish, topic: 'zigbee2mqtt/0x00158d00022ec91b', payload: '{"state":"OFF","linkquality":55}'

У вас будет на несколько строчек больше, потому что у меня кнопка уже спарена со стиком. Нам важно для дальнейшей настройки увидеть топик в который будут писаться сообщения от нашего выключателя. В моем случае это будет: zigbee2mqtt/0x00158d00022ec91b. Далее идем по ссылке и ищем там свое устройство по его коду. Для одноклавишного сяоми без нулевой линии это QBKG04LM. Посмотреть все поддерживаемые на данный момент устройства можно тут. Открываем конфиг HA и добавляем следующие строчки:

switch: - platform: "mqtt" name: "wall_switch_158d00022ec91b" state_topic: "zigbee2mqtt/0x00158d00022ec91b" availability_topic: "zigbee2mqtt/bridge/state" payload_off: "OFF" payload_on: "ON" value_template: "{{ value_json.state }}" command_topic: "zigbee2mqtt/0x00158d00022ec91b/set"

Вам надо будет заменить zigbee2mqtt/0x00158d00022ec91b на ваше значение. После этого сохраняем конфиг HA, проверяем его и перезагружаем. Если все сделано верно, у нас появится новое entity, с которым можно будет проводить необходимые действия. Другие устройства добавляются аналогично. Более подробно про теорию MQTT брокера можно почитать тут, а про практику тут. Если у вас остались какие-то вопросы или предложения/пожелания - выслушаю в комментах или нашей телеграмм группе


Огромное спасибо за статью, прямо в тему, а то спрутстик лежит холостяком, теперь я его поженю с Home Assistant ;)

отлично!

А где оглавление ?)))) а так отличная работа !!!

Это не статья из цикла, она отдельна и самодостаточна)

Надо будет по тегу оглавление делать, что бы если я случайно залетел на эту статью - знал как шаг за шагом это сделать ;)

а для hassio данная инструкция подойдет?



Что то не получается 

2000x2000x_image.png?1542318469

Добрый день.

Спасибо за инструкцию, после танцев с бубном получилось добавлять устройства Xiaomi (у меня конфигурация посложнее).

Но теперь меня волнует один вопрос - а устройства Xiaomi добавленные в HA через zigbee2mqtt не могут быть добавлены в хаб Xiaomi ?

То есть они сопрягаются или с Xiaomi хабом или со стиком ?
У меня и через хаб всё прекрасно работает, я специально создаю только автоматизации которые работают только через локалку и не задействуют китайское облако.
И поэтому я в раздумьях - надо ли мне все устройства перекидывать в HA через MQTT бридж.

Добрый! Совершенно верно, или хаб, или стик. Смысл в том, что бы убрать одно уязвимое звено, которому необходим wifi

привет. Удалось все подключить и настроить как в статье. Но возник такой вопрос - после перезагрузки ХА устройства, подключённые к стику не отображают своё последнее состояние. Приходится их заново опрашивать - открывать/закрывать дверь и т. д. Если устройств подключено много, то с этим возникают определённые затруднения. Можно ли это как-то исправить? Чтобы при перезагрузке отображалось последнее состояние устройств? Заранее спасибо

Добрый день, у меня такая же беда. пока мирюсь так. 

так то стабильно работает, но датчиков одних будет штук 15 как минимум.... интересно, на деконзе такая же ситуация?....

Не будет, т.к. там нет прослойки в виде Zigbee2mqtt

если заставить zigbee2mqtt отправлять с retain флагом, то эта проблема исчезнет, хотя появится другая : датчик перестал работать, но при перезагрузки система получает "от него" информацию...

  #user: "my_user"
#password: "my_password"

Если у вас мост не может подключиться к брокеру и выбивает ошибку 

"zigbee2mqtt:error Not connected to MQTT server!" - попробуйте взять логин и пароль "в кавычки". У некоторых, в частности у меня, проблема заключалась в этом.

Отлично! После добавления кавычек мост подключился к брокеру. Прошу добавить эту инфу в статью.

Доброе время суток! Подскажите пожалуйста как как спарить стик zigbee и агара выключател, Розетка без проблем связалась а выключатель не хочет.

<p>
zigbee2mqtt:info 9/1/2019, 7:51:48 PM Zigbee publish to device '0x00158d00033ad203', genOnOff - on - {} - {"manufSpec":0,"disDefaultRsp":0} - 2</p><p>
zigbee2mqtt:error 9/1/2019, 7:51:49 PM Zigbee publish to device '0x00158d00033ad203', genOnOff - on - {} - {"manufSpec":0,"disDefaultRsp":0} - 2 failed with error Error: AF data request fails, status code: 205. No network route. Please confirm that the device has (re)joined the network.</p><p>
zigbee2mqtt:info 9/1/2019, 7:51:49 PM MQTT publish: topic 'zigbee2mqtt/bridge/log', payload '{"type":"zigbee_publish_error","message":"Error: AF data request fails, status code: 205. No network route. Please confirm that the device has (re)joined the network.","meta":{"entity":{"ID":"0x00158d00033ad203","type":"device","friendlyName":"0x00158d00033ad203"},"message":"ON"}}'</p>

При нажатии на стике на кнопку светодиод должен как то менять цвет.

А где сейчас можно купить спрутстик?

Хорошо бы обновить статью :)


Вернуться назад

Устройства


Aqara

Wall Light Switch

(9 отзывов)

Texas Instruments

USB Stick CC2531

(14 отзывов)

Raspberry Pi

Raspberry Pi 4

(16 отзывов)

Вернуться назад