На Хабре уже встречались статьи о том, как подружить ZigBee устройства различных производителей с системами управления умным домом, без использования фирменных хабов, вроде Xiaomi Gateway. Однако, инструкции для homebridge, я не нашел не только на Хабре, но и на других просторах интернета. Поэтому хочу поделиться опытом добавления ZigBee устройств в homebridge. Огромную благодарность надо выразить создателю ресурса zigbee2mqtt.io, там уже расписаны способы прошивки модема CC2531 и подключения к таким системам управления умным домом как Home Assistant, Domoticz и Majordomo. Статья рассчитана на пользователей, у которых уже установлен и настроен homebridge.
Все действия в статье будут проводиться со следующим набором оборудования:
sudo apt install -y mosquitto mosquitto-clients #устанавка
sudo services mosquitto start # запуск
sudo systemctl enable mosquitto.service #автозапуск
sudo git clone https://github.com/Koenkk/zigbee2mqtt.git /opt/zigbee2mqtt
sudo chown -R pi:pi /opt/zigbee2mqtt
cd /opt/zigbee2mqtt
npm install
/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
/opt/zigbee2mqtt/data/configuration.yaml
sudo systemctl start zigbee2mqtt
sudo systemctl enable zigbee2mqtt.service
sudo journalctl -u zigbee2mqtt.service -f
`permit_join` set to `true` in configuration.yaml.
Allowing new devices to join.
Set `permit_join` to `false` once you joined all devices.
Zigbee: allowing new devices to join.
Connecting to MQTT server at mqtt://localhost
zigbee-shepherd ready
Connected to MQTT server
192.168.1.104
. Если все установлено правильно, то в дереве увидим ветку zigbee2mqtt. Переходим в нее. Теперь на Xiaomi Wireless Switch зажимаем кнопку Reset до появления мигания диода (около 5 секунд). Примерно через 10 секунд в ветке zigbee2mqtt мы увидим наше устройство и данные которое оно передает.{
"linkquality":110,
"battery":100,
"voltage":3052,
"click":"single"
}
Click, double click, triple click, long, long_release
(sudo) npm install -g homebridge-mqttthing
StatelessProgramableSwitch
. Для добавления нужно знать Topic (0x00158d00022c85ea)
и названия команд. Получается вот такой конфиг:{
"accessory": "mqttthing",
"type": "statelessProgrammableSwitch",
"name": "Xiaomi Single Button",
"topics": {
"getSwitch": {
"topic": "zigbee2mqtt/0x00158d00022c85ea",
"apply": "return JSON.parse(message).click;"
}
},
"switchValues": [
"single",
"double",
"long_release"
]
}
"accessories":
[
{
"accessory": "mqttthing",
"type": "occupancySensor",
"name": "Xiaomi Occupancy Sencor",
"topics": {
"getOccupancyDetected": {
"topic": "zigbee2mqtt/0x00158d000236b492",
"apply": "return JSON.parse(message).occupancy;"
}
},
"integerValue": true
},
{
"accessory": "mqttthing",
"type": "contactSensor",
"name": "Xiaomi Contatc Sencor",
"topics": {
"getContactSensorState": {
"topic": "zigbee2mqtt/0x00158d000278db8c",
"apply": "return !JSON.parse(message).contact;"
}
},
"integerValue": true
},
{
"accessory": "mqttthing",
"type": "statelessProgrammableSwitch",
"name": "Xiaomi Single Button",
"topics": {
"getSwitch": {
"topic": "zigbee2mqtt/0x00158d00022c85ea",
"apply": "return JSON.parse(message).click;"
}
},
"switchValues": [
"single",
"double",
"long_release"
]
},
{
"accessory": "mqttthing",
"type": "temperatureSensor",
"name": "Xiaomi Temperature Sencor",
"topics": {
"getCurrentTemperature": {
"topic": "zigbee2mqtt/0x00158d000201842c",
"apply": "return parseFloat(JSON.parse(message).temperature);"
}
},
"history": true
},
{
"accessory": "mqttthing",
"type": "humiditySensor",
"name": "Xiaomi Humidity Sencor",
"topics": {
"getCurrentRelativeHumidity": {
"topic": "zigbee2mqtt/0x00158d000201842c",
"apply": "return parseFloat(JSON.parse(message).humidity);"
}
},
"history": true
}
]
К сожалению, не доступен сервер mySQL