前几天,易微联送出了几个Zigbee传感器测试样品,有幸折腾一下,在此先谢过了!
测试样品发布帖https://bbs.hassbian.com/thread-8612-1-1.html
先发一下收到样品的一些图片
易微联全家福
易微联人体传感器
易微联门磁
易微联温湿度
下面,就以Docker版的Zigbee2mqtt为例,讲述一下配网和写入配置参数,并在home-assistant中使用的方法
首先,要安装Docker版本的zigbee2mqtt,本次使用的是最新的1.8.0版本
sudo docker pull koenkk/zigbee2mqtt:1.8.0
运行zigbee2mqtt的container
sudo docker run -d --restart=always --name=zigbee2mqtt -it -v /etc/localtime:/etc/localtime:ro -v /home/homeassistant/.homeassistant/zigbee2mqtt:/app/data --device=/dev/ttyACM0 koenkk/zigbee2mqtt:1.8.0
将默认的zigbee2mqtt配置文件改名
sudo mv /home/homeassistant/.homeassistant/zigbee2mqtt/configuration.yaml /home/homeassistant/.homeassistant/zigbee2mqtt/configuration.yaml.bak
新建一个自己的zigbee2mqtt配置文件
sudo nano /home/homeassistant/.homeassistant/zigbee2mqtt/configuration.yaml
将下面的内容,粘贴到文件中,CTRL+X,yes,保存退出。
# Home Assistant integration (MQTT discovery)(hass自动发现参数)
homeassistant: true
# allow new devices to join(允许加入zigbee网络写true)
permit_join: true
# MQTT settings
mqtt:
# MQTT base topic for zigbee2mqtt MQTT messages
#base_topic: zigbee2mqtt(改成你自己的)
base_topic: slzn-n1
# MQTT server URL(ip改成你自己的)
server: 'mqtt://192.168.1.127:1883'
# MQTT server authentication, uncomment if required:(你自己的mqtt broker的用户名和密码)
user: pi
password: raspberry
# Serial settings
serial:
# Location of CC2531 USB sniffer
port: /dev/ttyACM0
重启zigbee2mqtt容器
sudo docker restart zigbee2mqtt
使用mqtt“聆听命令”,判断zigbee2mqtt容器运行是否正常(pi是用户名,raspberry是密码,更换成你自己设置的参数,执行)
sudo mosquitto_sub -u pi -P raspberry -h 127.0.0.1 -t +/# -v
如果你看到如下字样,恭喜你,说明你的zigbee2mqtt网关,已经成功运行了。
slzn-n1/bridge/state online
slzn-n1/bridge/config {"version":"1.8.0","commit":"da4d26a","coordinator":{"type":"zStack12","meta":{"transportrev":2,"product":0,"majorrel":2,"minorrel":6,"maintrel":3,"revision":20190223}},"log_level":"info","permit_join":true}
接下来,我们就该接入易微联的传感器了。因为是测试样品,zigbee2mqtt官方的产品库中,还没有对应的“驱动参数”,所以需要自己去设置。
首先,进入容器的ssh
sudo docker exec -it zigbee2mqtt sh
使用VI命令,来编辑devices.js
vi /app/node_modules/zigbee-herdsman-converters/devices.js
找到6036行,把下面的产品参数insert进去。为了更方便的说明,我加个示例图
{
zigbeeModel: ['MS01'],
//人体移动传感器
model: 'MS01',
vendor: 'ewelink',
description: 'Motion sensor',
supports: 'occupancy',
fromZigbee: [fz.iaszone_occupancy_1, fz.battery_3V],
toZigbee: [],
},
{
zigbeeModel: ['DS01'],
// 门磁
model: 'DS01',
vendor: 'ewelink',
description: 'Wireless contact sensor',
supports: 'contact',
fromZigbee: [fz.ias_contact_alarm_1],
toZigbee: [],
},
{
zigbeeModel: ['TH01'],
//温湿度传感器
model: 'TH01',
vendor: 'ewelink',
description: 'Temperature and humidity sensor',
supports: 'temperature and humidity',
fromZigbee: [
fz.temperature,
fz.humidity,
fz.battery_percentage_remaining,
fz.generic_battery_voltage,
],
toZigbee: [],
meta: {configureKey: 1},
configure: async (device, coordinatorEndpoint) => {
const endpoint = device.getEndpoint(1);
await bind(endpoint, coordinatorEndpoint, ['genPowerCfg', 'msTemperatureMeasurement']);
await configureReporting.batteryVoltage(endpoint);
await configureReporting.temperature(endpoint);
},
},
devices.js
重启容器,就可以在mqtt的信息中,看到传感器发回的数据了。但是,在home-assistant中,还不能自动发现并显示这些传感器,所以我们还得去编辑一下容器中的homeassistant.js 文件
还是要进入zigbee2mqtt容器的ssh,使用VI命令
vi /app/lib/extension/homeassistant.js
找到1016行,insert插入如下内容
'DS01': [cfg.binary_sensor_contact, cfg.binary_sensor_battery_low],
'TH01': [cfg.sensor_temperature, cfg.sensor_battery],
'MS01': [cfg.binary_sensor_occupancy, cfg.binary_sensor_battery_low],
保存退出,再退出容器ssh操作。
重启一下zigbee2mqtt容器
sudo docker restart zigbee2mqtt
OVER啦!可以愉快的玩耍了!
有一个不完美的地方:温湿度传感器,不能显示“湿度”,希望有大神能够指点一下,把它搞完美,谢谢!
Happy Automating!
谢谢耐心看完本帖!水平有限,仓促编辑,难免有错,还请大家指正。
再次感谢易微联提供的测试样品!
|