使用CC2531将ZigBee设备添加到Homebridge

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


本文中的所有操作都将使用以下设备进行:

  • Raspberry Pi 3 B +(Raspbian作业系统)
  • CC2531加密狗 (已缝制)
  • 小米设备(无线开关,温度和湿度传感器...)
  • MacBook Pro(OSX 10.14)

俄语(通过Pi)此处(通过CCDebuger)的俄语CC2531固件说明。

从原理上讲,整个工作链可以表示如下:



现在按顺序。

刷新调制解调器后,需要安装MQTT代理 (如果尚未安装)。

我使用Mosquitto,安装方式如下:

sudo apt install -y mosquitto mosquitto-clients # sudo services mosquitto start #  sudo systemctl enable mosquitto.service # 

可以在此处找到更详细的配置说明。

现在,您需要安装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上爬行的设备。

Source: https://habr.com/ru/post/zh-CN462459/


All Articles