Установка HomeBridge на контроллеры JetHome, заводим ZigBee2MQTT

09 августа 2021, 08:00

Так как я в свое время достаточно долго пользовался системой HomeBridge, а судя по чату система до сих пор актуальна, мне стало интересно - можно ли запустить его на контроллере JetHome со встроенным Zigbee модулем?

P.S. Данная статья подойдет и для Raspberry pi, если в качестве контроллера вы будете использовать малину, следите за комментариями. 

Первое, что нам необходимо сделать, это установить саму систему HomeBrige. Итак, приступим.

Установка HomeBridge

Начнем с установки Node.js, установка осуществляется из официального репозитория со всеми необходимыми зависимостями. 

curl -sL https://deb.nodesource.com/setup_14.x | sudo bash -

#Установка Node.js
sudo apt install -y nodejs gcc g    make python net-tools

# Проверяем 
node -v

Далее приступим к установке Homebridge и Homebridge UI, для этого используем следующую команду:

sudo npm install -g --unsafe-perm homebridge homebridge-config-ui-x

Чтобы настроить Homebridge как службу, которая будет запускаться при загрузке, необходимо выполнить:

sudo hb-service install --user homebridge

На этом установка закончена, можно перейти в веб-интерфейс HomeBridge для дальнейшей настройки, в браузере: http://ip_address:8581

1600x_image.png?1627232884

Установка MQTT брокера

После установки HomeBridge, необходимо установить MQTT брокер, мы будем использовать Mosquitto. В данном случае, брокер необходим для общения компонента zigbee2mqtt с системой HomeBridge.

Установка осуществляется вводом следующих команд в терминал:

sudo apt update
sudo apt install -y mosquitto mosquitto-clients

# Добаляем в автозапуск
sudo systemctl enable mosquitto.service

# роверяем
mosquitto -v

Установка плагина Zigbee2MQTT

В Web-интерефейсе HomeBridge открываем:

Меню -> Плагины, в поиске пишем "Zigbee2MQTT". Находим плагин homebridge-z2m, нажимаем кнопку "Установить".

1600x_image.png?1627232881

После установки плагина необходимо настроить конфиг, для этого на вкладке Конфигурация, в секцию "platforms": [] добавляем следующий конфиг:

        {
            "platform": "zigbee2mqtt",
            "mqtt": {
                "base_topic": "zigbee2mqtt",
                "server": "mqtt://localhost:1883"
            }
        }

Сохраняем и перезагружаем HomeBridge. Перезагрузить можно как в веб-интерфейсе (в правом верхнем углу), так и при помощи терминала sudo reboot - в таком случае система перезагрузится полностью.

Установка Zigbee2MQTT

После успешной установки и первичной настройки HomeBridge, можно приступить к установке компонентов Zigbee2MQTT. 

Первым делом нужно установить Node.js, но так как мы устанавливали HomeBridge, он у нас уже установлен и данный пункт можно пропустить.

# Добавляем репозиторий Node.js
sudo curl -sL https://deb.nodesource.com/setup_14.x | sudo -E bash -

# Установка Node.js
sudo apt-get install -y nodejs git make g   gcc

Сразу приступаем к следующему пункту:

# Проверяем как все установилось
node --version
npm --version

# Клонируем репозиторий Zigbee2MQTT
sudo git clone https://github.com/Koenkk/zigbee2mqtt.git /opt/zigbee2mqtt

# Для контроллера JetHome
sudo chown -R root:root /opt/zigbee2mqtt
# Для контроллера Raspberry pi
# sudo chown -R pi:pi /opt/zigbee2mqtt

# Установка зависимостей
cd /opt/zigbee2mqtt
npm ci --production

Настройка ZigBee2MQTT 

Перед запуском Zigbee2MQTT, необходимо отредактировать configuration.yamlфайл. Этот файл содержит конфигурацию, которая используется компонентом Zigbee2MQTT.

Открываем файл конфигурации и приводим к такому виду. Для этого выполняем команду: 

nano /opt/zigbee2mqtt/data/configuration.yaml

Базовый конфиг для контроллера JetHome.

homeassistant: false
permit_join: false
mqtt:
  base_topic: zigbee2mqtt
  server: 'mqtt://localhost'
serial:
  port: /dev/ttyAML2
advanced:
  homeassistant_legacy_entity_attributes: false
  legacy_api: false
device_options:
  legacy: false
frontend:
  port: 8080
  host: 0.0.0.0
  auth_token: your-secret-token

Для Raspberry pi порт зигби модуля оставляем по умолчанию. 

Первый запуск

Теперь, когда мы все настроили, можем приступать к первому запуску Zigbee2MQTT.

cd /opt/zigbee2mqtt
npm start
1600x_image.png?1627236231

Если все запустилось без ошибок, необходимо добавить запуск ZigBee2MQTT в фоновом режиме. Для этого:

sudo nano /etc/systemd/system/zigbee2mqtt.service

Вставляем следующие строки:

[Unit]
Description=zigbee2mqtt
After=network.target

[Service]
ExecStart=/usr/bin/npm start
WorkingDirectory=/opt/zigbee2mqtt
StandardOutput=inherit
# Or use StandardOutput=null if you don't want Zigbee2MQTT messages filling syslog, for more options see systemd.exec(5)
StandardError=inherit
Restart=always
User=pi

[Install]
WantedBy=multi-user.target

Сохраняем - "Ctrl O", закрываем - "Ctrl X". Запускаем Zigbee2MQTT. При желании можно посмотреть статус. 

# Старт Zigbee2MQTT
sudo systemctl start zigbee2mqtt

# Статус
systemctl status zigbee2mqtt.service
1600x_image.png?1627236680

Если видим active (running), значит все работает верно. 

Полезности

Полезные команды для отладки установленных компонентов. В данном случае, на примере zigbee2mqtt.

# Стор Zigbee2MQTT
sudo systemctl stop zigbee2mqtt

# Старт Zigbee2MQTT
sudo systemctl start zigbee2mqtt

# Рестарт Zigbee2MQTT
sudo systemctl restart zigbee2mqtt

# Лог Zigbee2MQTT
sudo journalctl -u zigbee2mqtt.service -f

Обновление 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
npm ci

# Restore configuration
cp -R data-backup/* data
rm -rf data-backup

# Start Zigbee2MQTT
sudo systemctl start zigbee2mqtt

Сейчас же мы пропускаем этот шаг, и можем приступить к добавлению нашего первого ZigBee устройства. 

Web-интерфейс Zigbee2MQTT

Веб-интерфейс Zigbee2MQTT доступен по адресу: http://ip_address:8080

1600x_image.png?1627236682

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

Для добавления Zigbee устройства, в правом верхнем углу нажимаем кнопку "Разрешить подключения (все)". 

После чего вводим устройство в режим сопряжения, как правило, это скрытая кнопка на самом устройстве, либо активная клавиша самого устройства. 
Подробнее можно узнать в нашем Каталоге, открыв девайс, характеристика: Режим спаривания, сброса.
1600x_image.png?1628009847

Для примера я добавлю два первых устройства, которые мне попались под руку. Датчик движения от Heiman и съёмная розетка Xiaomi

1600x_image.png?1627236928
1600x_image.png?1627237050
1600x_image.png?1627237051
После добавления устройств в Zigbee2MQTT, в веб-интерфейсе HomeBridge устройства появляются автоматически. Если устройства не добавились, смотрите настройки конфига бриджа. 
k01-2.jpg

На этом можно было и заканчивать статью. Но ты наверняка задался вопросом - а что с автоматизациями? Ведь хомбридж только прокидывает устройства в Apple HomeKit, в этом случае автоматизации доступны только средствами самого кита, а мы знаем, что китовые автоматизации достаточно скудные. 

Автоматизации 

В качестве движка для автоматизаций мы будем использовать, на мой взгляд, самый гибкий, но при этом самый сложный инструмент - Node-RED.

Установка Node-RED

Возвращаемся к терминалу, так как установка также осуществляется методом ввода команд.  

#Установка
sudo npm install -g --unsafe-perm node-red

#Запуск
node-red

Добавление в автозагрузку.

nano /etc/systemd/system/node-red.service

В открывшийся редактор вставляем следующее: 

[Unit]
Description=Node-RED
After=syslog.target network.target
[Service]
ExecStart=/usr/bin/node-red
Restart=on-failure
KillSignal=SIGINT
SyslogIdentifier=node-red
StandardOutput=syslog
StandardError=syslog
WorkingDirectory=/root/.node-red
User=root
#Group=root
[Install]
WantedBy=multi-user.target

Сохраняем, активируем, запускаем.

systemctl enable node-red
systemctl start node-red

Веб-интерфейс Node-RED будет доступен по адресу: http://ip_address:1880

И первое, что я бы порекомендовал - это установить плагин: node-red-contrib-homebridge-automation, для взаимодействия с устройствами HomeBridge. Для этого в правом верхнем углу нажимаем три полоски -> управление палитрой -> установить, вводим те плагины, которые необходимо установить.

Триггер

Ну и напоследок давайте создадим нашу первую автоматизацию. Так как мы добавили в Zigbee2MQTT два устройства, давайте создадим между ними простенький триггер. Включение розетки Xiaomi по датчику движения Heiman.

1600x_image.png?1627239893

flows.json

Для примера, эта самая автоматизация:

[{"id":"01eb587b1a86964c","type":"tab","label":"Поток 1","disabled":false,"info":""},{"id":"1c98a85994aa250a","type":"group","z":"01eb587b1a86964c","style":{"stroke":"#999999","stroke-opacity":"1","fill":"none","fill-opacity":"1","label":true,"label-position":"nw","color":"#a4a4a4"},"nodes":["1a27dddfd87e8537","4c26fc61.906134","a69101bc494dd839","9961ca345126530e","a6a2b1fade2ddf0f","692bc0197ee03cb1"],"x":54,"y":119,"w":812,"h":142},{"id":"1a27dddfd87e8537","type":"hb-event","z":"01eb587b1a86964c","g":"1c98a85994aa250a","name":"Heiman motion sensor","Homebridge":"homebridge","Manufacturer":"HEIMAN","Service":"Occupancy Sensor","device":"homebridge0E:39:7D:7A:A4:1FHEIMANHeiman motion sensor00000086","conf":"d17c7d4e1ce4a995","x":180,"y":200,"wires":[["692bc0197ee03cb1","109c76ffe927984e"]]},{"id":"4c26fc61.906134","type":"comment","z":"01eb587b1a86964c","g":"1c98a85994aa250a","name":"Включение розетки по движению","info":"","x":220,"y":160,"wires":[]},{"id":"a69101bc494dd839","type":"hb-control","z":"01eb587b1a86964c","g":"1c98a85994aa250a","name":"Xiaomi Smart Plug","Homebridge":"homebridge","Manufacturer":"Xiaomi","Service":"Switch","device":"homebridge0E:39:7D:7A:A4:1FXiaomiXiaomi Smart Plug00000049","conf":"d17c7d4e1ce4a995","outputs":0,"x":750,"y":200,"wires":[]},{"id":"109c76ffe927984e","type":"debug","z":"01eb587b1a86964c","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":390,"y":340,"wires":[]},{"id":"cc30858f8f240635","type":"inject","z":"01eb587b1a86964c","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"","payloadType":"date","x":400,"y":80,"wires":[["a6a2b1fade2ddf0f"]]},{"id":"4ff45b00e44010da","type":"inject","z":"01eb587b1a86964c","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"","payloadType":"date","x":400,"y":40,"wires":[["9961ca345126530e"]]},{"id":"9961ca345126530e","type":"change","z":"01eb587b1a86964c","g":"1c98a85994aa250a","name":"Вкл","rules":[{"t":"delete","p":"payload","pt":"msg"},{"t":"set","p":"msg.payload['On']","pt":"msg","to":"true","tot":"bool"}],"action":"","property":"","from":"","to":"","reg":false,"x":570,"y":180,"wires":[["a69101bc494dd839"]]},{"id":"a6a2b1fade2ddf0f","type":"change","z":"01eb587b1a86964c","g":"1c98a85994aa250a","name":"Выкл","rules":[{"t":"delete","p":"payload","pt":"msg"},{"t":"set","p":"msg.payload['On']","pt":"msg","to":"false","tot":"bool"}],"action":"","property":"","from":"","to":"","reg":false,"x":570,"y":220,"wires":[["a69101bc494dd839"]]},{"id":"692bc0197ee03cb1","type":"switch","z":"01eb587b1a86964c","g":"1c98a85994aa250a","name":"","property":"payload.OccupancyDetected","propertyType":"msg","rules":[{"t":"eq","v":"1","vt":"num"},{"t":"eq","v":"0","vt":"num"}],"checkall":"true","repair":false,"outputs":2,"x":390,"y":200,"wires":[["9961ca345126530e"],["a6a2b1fade2ddf0f"]]},{"id":"d17c7d4e1ce4a995","type":"hb-conf","username":"462-93-171"}]

На написание статьи меня сподвигло сообщение в чате: "Посоветуйте недорогой контроллер под систему HomeBridge", так как Raspberry pi значительно подорожала на AliExpress. Я и подумал - а что мешает установить его на контроллер JetHome? Плюсом мы получаем еще и распаянный ZigBee модуль, который сейчас также в дефиците и его можно задействовать.

В общем, особо не принципиально, устанавливаем мы данную связку на Raspberry pi или на контроллер JetHome, все будет работать примерно одинаково. В случае с JetHome, все продается локально и есть в наличии. 

1600x_image.png?1600714040

Где купить?

Данный продукт был предоставлен на обзор нашими друзьями - магазином https://JHome.ru. Для всех читателей портала Sprut.ai в магазине действует промокод SPRUT, на скидку 3%. Напоминаю, что полный перечень партнёрских магазинов со скидками можно найти на этой странице.


Все новости мира умных домов - t.me/SprutAI_News или Instagram
Остались вопросы? Мы в Telegram - @SprutAI

Хочешь умный дом но нет времени разбираться?
Посмотри примеры работ и выбери себе интегратора.
  1. Вячеслав Фетисов (Ziracul)

    Хорошая статья, по факту там debian и команды от малины тоже работают для установки софта

  2. (naumserg74)
    (naumserg74) месяц назад

    Очень полезная статья. Имею  этот набор ПО  на второй малине + стик СС2531 . Только для Raspberry Pi я  устанавливал Mosquito и Zigbee2MQTT уже на готовый официальный образ HomeBridge.  В этом софте нравится универсальность и поддержка большого количества Zigbee устройств в Zigbee2MQTT, a NR позволяет создавать достаточно сложные сценарии.
    Пробовал также установить весь этот софт на Xiaomi Gateway (европейской версии) на прошивке OpenWRT . С установкой  Zigbee2MQTT  и Mosquito  проблем не возникло, но вот с установкой HomeBridge из готовых пакетов для OpenWRT 19.07 небольшая загвоздка вышла. HomeBridge установился, но старой версии 1.2 и он без UI-X.😕 сам собирать пакеты для OpenWRT  не умею, а сами разработчики всё больше «топят» за связку Zigbee2MQTT + HA. 

К списку статей

Устройства в материале

Socket

Производитель: Xiaomi
Заказать на:

Motion Sensor

Производитель: Heiman
Заказать на:

Raspberry Pi 4

Производитель: Raspberry Pi
Заказать на:

JetHome JetHub H1

Производитель: JetHome
Заказать на:

JetHome JetHub D1

Производитель: JetHome
Заказать на:

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

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

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

LifeControl

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

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

17 декабря 2019, 17:49
Универсальный привод для автоматического удаленного открытия окон с простой интеграцией в умные дома.
04 сентября 2018, 12:14
Интеграция RGB ленты на ESP8266 с прошивкой tasmota в систему HomeBridge (HomeKit)
25 сентября 2020, 11:49
Сенсорный монитор для управления умным домом. Настройка и использование.
20 октября 2018, 22:57
Теоретические основы протокола MQTT и описание того, как он работает и для чего используется
15 ноября 2018, 13:11
Xiaomi Mi Remote 360 добавляем Apple HomeKit
15 ноября 2018, 09:42
Способы автоматизации механических ворот
28 августа 2018, 09:48
От голого Raspbian до веб-интерфейса homebridge за четыре команды в терминале.
18 февраля 2020, 17:06
В данной статье описывается сборка слаботочного эл. щита на базе Wiren Board 6, а так же силового щита для небольшой квартиры.
29 октября 2019, 07:59
Умный домофон на базе nodeMCU с прошивкой ESPHome.
09 ноября 2020, 19:03
В статье я расскажу о том, как сделать ваши рулонные, в том числе и кассетные шторы, чуточку умнее. Дам ссылки на дешевые аккумуляторные моторы. Расскажу про способы трансляции сигналов 433Мгц в MQTT. И продемонстрирую много фотографий решения и немного видео.