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

09 ноября 2018, 22:15

Предисловие

Многим, кто взял в свое время 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

Теперь можем приступать к завершающей части. Для начала парим необходимое зигби устройство со стиком. Я буду показывать на примере одно клавишного выключателя без нулевой линии. жамкаем на стике дальнюю от 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 брокера можно почитать тут, а про практику тут. Если у вас остались какие-то вопросы или предложения/пожелания - выслушаю в комментах или нашей телеграмм группе


Все новости мира умных домов - t.me/SprutAI_News

Остались вопросы? Мы в Telegram - t.me/soprut

Хочешь умный дом но нет времени разбираться?
Посмотри примеры работ и выбери себе интегратора.
  1. Алексей Новосельцев (novo)
    Алексей Новосельцев (novo) 11 месяцев назад

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

  2. Сергей Цыганов (Tsvdonsk)
    Сергей Цыганов (Tsvdonsk) 11 месяцев назад

    отлично!

  3. Олег Челбаев (sprut)
    Олег Челбаев (sprut) 11 месяцев назад

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

    • Александр Жабунин (OXOTH1K)
      Александр Жабунин (OXOTH1K) 11 месяцев назад

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

      • Олег Челбаев (sprut)
        Олег Челбаев (sprut) 11 месяцев назад

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

  4. Александр Майоров (am8374)
    Александр Майоров (am8374) отредактировано 11 месяцев назад
    Комментарий был удален
  5. Денис Игнат (iGnat78)
    Денис Игнат (iGnat78) 11 месяцев назад

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

    2000x2000x_image.png?1542318469
  6. Роман П (Gigru)
    Роман П (Gigru) 10 месяцев назад

    Добрый день.

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

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

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

  7. Александр Жабунин (OXOTH1K)
    Александр Жабунин (OXOTH1K) 10 месяцев назад

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

  8. Александр Майоров (am8374)
    Александр Майоров (am8374) 9 месяцев назад

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

  9. Александр Майоров (am8374)
    Александр Майоров (am8374) 9 месяцев назад

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

    • Александр Жабунин (OXOTH1K)
      Александр Жабунин (OXOTH1K) 9 месяцев назад

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

      • (solopov)
        (solopov) 8 месяцев назад

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

  10. Антон Набатчиков (Anton0_0)
    Антон Набатчиков (Anton0_0) отредактировано 8 месяцев назад
      #user: "my_user"
      #password: "my_password"
    

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

  11. Илья Яшин (yshinig)
    Илья Яшин (yshinig) месяц назад

    Доброе время суток! Подскажите пожалуйста как как спарить стик 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>
    
    При нажатии на стике на кнопку светодиод должен как то менять цвет.
К списку статей

Скидки для сообщества

Интернет-магазин yourhomekit.ru

+7 914 550-51-11
Промокод:
SPRUT-BLG
Размер скидки:
8%
Cамый большой ассортимент в России аксессуаров Apple HomeKit

LifeControl

+7 495 240-81-01
Промокод:
sprut10
Размер скидки:
10%
На весь ассортимент Lifecontrol

Похожие статьи

15 ноября 2018, 09:42
Способы автоматизации механических ворот
15 июня 2018, 12:13
Охранная система в гараж на ESP8266 с интеграцией в Apple HomeKit
24 августа 2018, 12:18
Пошаговая установка HomeAssistant
27 августа 2018, 10:14
Интегрируем ХА в HomeKit
20 октября 2018, 22:57
Теоретические основы протокола MQTT и описание того, как он работает и для чего используется
01 ноября 2018, 09:27
Настройка Deconz USB стика ConBee от Dresden Elektronik в Hass.io и некоторые особенности эксплуатации
03 октября 2018, 22:03
Как собрать и настроить Hyperion Ambilight - адаптивную подсветку ТВ.
24 августа 2018, 10:15
Краткий экскурс в настройку Home Assistant
11 мая 2019, 19:57
Как активировать русский язык в Google Assistant для Google Home
09 ноября 2018, 17:27
Очень часто от пользователей, кто только начинает знакомиться с сетью Zigbee, можно услышать вопросы: “а сколько Zigbee-устройств потянет малина?”, “я купил стик с антенной, который бьет на 2 км, но он даже на 20м не работает, как быть?” Сегодня я попытаюсь приоткрыть завесу тайны ответов на эти вопросы - расскажу свой опыт и знания о масштабировании Zigbee-сети.