关于Habr的
文章 已经涉及如何使用智能家居控制系统制造各种制造商的ZigBee设备,而无需使用诸如小米网关之类的品牌集线器。 但是,不仅在Habré,而且在其他Internet开放空间上,我都没有找到关于
桥接的说明。 因此,我想分享将ZigBee设备添加到homebridge的经验。 非常感谢资源
zigbee2mqtt.io的创建者,其中
已经介绍了刷新CC2531调制解调器并连接到智能家居控制系统(如
Home Assistant ,
Domoticz和
Majordomo)的方法 。 本文适用于已经
安装和配置了 Homebridge的用户。

本文中的所有操作都将使用以下设备进行:
- Raspberry Pi 3 B +(Raspbian作业系统)
- CC2531加密狗 (已缝制)
- 小米设备(无线开关,温度和湿度传感器...)
- MacBook Pro(OSX 10.14)
俄语
(通过Pi)和
此处(通过CCDebuger)的俄语CC2531固件说明。
从原理上讲,整个工作链可以表示如下:

现在按顺序。
刷新调制解调器后,需要安装
MQTT代理 (如果尚未安装)。
我使用Mosquitto,安装方式如下:
sudo apt install -y mosquitto mosquitto-clients
可以在
此处找到更详细的配置说明。
现在,您需要安装zigbee2mqtt服务,该服务与CC2531调制解调器进行交互并将数据传输到Mosquitto:
sudo git clone https://github.com/Koenkk/zigbee2mqtt.git /opt/zigbee2mqtt sudo chown -R pi:pi /opt/zigbee2mqtt cd /opt/zigbee2mqtt npm install
为了将zigbee2mqtt作为服务运行,您需要创建一个文件:
/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
如果已经安装了MQTT代理,则需要在文件中注册用于连接到它的正确参数: /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
您可以开始与homebridge集成。
zigbee2mqtt.io资源包含
受支持设备的
列表以及创建对的说明。 例如,考虑添加小米无线交换机。

要在Mosquitto中查看事件,请使用
MQTT Explorer程序。 我们开始,输入MQTT服务器的地址,在我的情况下,它位于
192.168.1.104
。 如果一切都正确安装,则在树中,我们将看到zigbee2mqtt分支。 我们传递给它。 现在,在小米无线开关上,按住“重置”按钮,直到二极管闪烁(约5秒钟)。 在zigbee2mqtt分支中大约10秒钟后,我们将看到我们的设备及其传输的数据。
如果这没有发生,则在二极管闪烁之后,尝试以一秒钟的频率按一次“重置”。 应该是这样的:
让我们分析数据:
{ "linkquality":110, "battery":100, "voltage":3052, "click":"single" }
单击字段包含单击的类型;可以有五个:
Click, double click, triple click, long, long_release
我们学习了如何接收数据,现在将小米无线交换机添加到家用电桥中。 为了与MQTT进行交互,我们将使用
homebridge-mqttthing模块 。 与其他安装方式相同:
(sudo) npm install -g homebridge-mqttthing
该模块支持从开关到恒温器的多种设备。 对于小米无线交换机,最适合使用
StatelessProgramableSwitch
类。 要添加,您需要知道主题
(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 } ]
我们检查:

我曾经使用homebridge-mi-aqara模块,该模块添加了ZigBee设备,并与小米网关进行交互。 当网关被拒绝时,设备的响应时间缩短了,此外,我摆脱了坐在WiFi上并不断在Internet上爬行的设备。