Zigbee2Tasmota使用及Homeassistant中MQTT Sensor配置过程

说明

  • 因为zigbee2mqtt 的1.19.0版本后使用了新的readconfiguration步骤(未知修改原因,待查)导致cc2530+esp8266 妖神版的tasmota固件z2mp模式无法正常启动zigbee2mqtt。 同时我的Homeassistant安装环境重做后丢失了备份,新安装的zigbee2mqtt版本都到1.22了。(我真是手贱升级。。。)所以尝试了tasmota固件z2tp模式作为网关使用。
  • 之前文章中提到了z2tp和z2mp两种模式配置方式,个人还是推荐使用z2mp,因为zigbee2mqtt能支持更多zigbee设备。使用z2tp的话需要将tasmota上的mqtt服务器配置配为homeassistant mqtt broker。然后再homeassistant环境下测试mqtt sensor配置。个人走了很多路,这里做个记录。

本人zigbee网络设计

  • 新入了锐角云之间烧录hassOS,比rpi3 性能高多了。原来rpi已经不能满足需求了,而且一直没有响应。随着homeassistant越来越复杂,对性能要求会越来越高。
  • 设备:
  1. 锐角云+usb zigbee网关,运行hassOS, zigbee home automation(zha) ,HACS,hass-yeelightbt连接aqara zigbee贴墙开关并控制小米蓝牙床头灯(yeelight bedsidelamp)、涂鸦插座、aqara六键贴墙开关、涂鸦阳台单火灯(zigbee)
  2. rpi3b + usb zigbee网关cc2531, 运行hassOS,zigbee2mqtt, hacs,连接lhomee的小米双键贴墙开关(因为zha不支持,用了zigbee2mqtt)。通过remote_homeassistant访问主homeassistant控制主卧灯和夜灯。
  3. 主homeassistant,在esxi上的一个虚拟机,主要负责连接xiaomi_gateway和xiaomi_miio等网络上应用的组件,同时通过remote_homeassistant控制锐角云上提供的床头灯设备、阳台灯(涂鸦)。自身提供remote_homeassistant可以被控制。
  • zigbee网络设计
  1. 小米设备全部连接至客厅及主卧的小米二代网关,除了北方间的aqara一代墙壁单火开关连接到小米空调伴侣上。
  2. 部分设备连接至zigbee第三方网关
  3. 小房间通过蓝牙mesh连接到redmi_play音箱上。
  • 上述设计原因
  1. 因为接入自己的zigbee第三方网关就不能使用小爱同学控制,实际上小爱并不好控制
  2. 而小米网关可以通过局域网控制,所以弄了混合模式,实际上自己想各种模式都要体验一遍。

个人推荐的zigbee网络设计

  • 一个网关(coordinator)多个路由(router)
  • 网关推荐使用usb的zigbee适配器,且建议cc2530以上,支持设备更多的适配器。
  • 路由的话,推荐涂鸦的zigbee插座,可以做到40元一个,用以拓展zigbee网络。
  • 如果用zigbee home automation(zha)的话可以指定zigbee终端(endpoint)设备通过路由(router)连接。
  • 如果zigbee2mqtt的话,我还不知道怎么弄。

正文

以下记录了如何使用zigbee2tasmota来使用zigbee设备并且在homeassitant上手工配置设备。

zigbee2tasmota配置

  • tasmota界面设置z2tp并重启
  • 用过控制台界面使用zbpermitjoin 1命令与zigbee设备配对
  • 使用zbname 0xaaaa,xiaomi_remote设置别名,因为0x在mqtt中被homeassistant的json解析时会被转译
  • 设置setoption83 1在mqtt消息中显示别名而不是0xaaaa
  • 设置setoption89 1在mqtt消息中的topic包含设备的0xaaaa,这样配对多个设备就可以分为不同topic,在state_topic更好配置

homeassistant的mqtt配置

  • 在supervisor先安装好mqtt broker并且启动,在ha中新增mqtt用户用于z2t的mqtt登录
  • 在integration中新增mqtt配置
  • 在mqtt配置中选项中可以通过输入#并开始监听服务所有mqtt消息。

在homeassistant的configuration.yaml中配置mqtt sensor

  • 首先,可以先通过mqtt的选项页面进行测试,配置topic为格式

//[/]/config

如:homeassistant/binary_sensor/garden/config
这里设备是binary sensor
名称是garden
然后在topic参数里填写json格式
{"name": "garden", "device_class": "motion", "state_topic": "homeassistant/binary_sensor/garden/state"}
这表示设备名为garden的motion类型的binary sensor 读取topic为“homeassistant/binary_sensor/garden/state"的状态。

  • 此时ha会自动创建一个临时的实体,该实体重启后会消失,你也可以用前面的config topic不带参数来删除实体。
  • 这里state_topic可以为tele/gateway/aaaa/sensor,这是z2t的报文topic
  • 然后需要新增一个value_template字段,在mqtt测试界面无法传输,可以用ssh登录,发送以下消息

mosquitto_pub -h ha_ip -p 1883 -t "homeassistant/binary_sensor/garden/config" -m '{"name": "garden", "device_class": "motion", "state_topic": "homeassistant/binary_sensor/garden/state"}'

参考mqtt discovery

  • value_template这么写:

"value_template": "{{ value_json.ZbReceived.xiaomi_remote.Power }}"

对应mqtt报文格式为
{"ZbReceived": {"xiaomi_remote": {"Power": "1". "Endpoint": "1". "LinkQuanlity": "59"}}}
这样就可以正常测试mqtt设备了,此处是用sensor做案例,switch情况请参考homeassistant网站的mqtt dicovery 和mqtt switch页面,应该是再多一个command_topic。此处没有尝试过。

  • 下一步就是测试通过的mqtt配置写configuration.yaml
    我的样例:

sensor:
- platform: mqtt
name: "xiaomi_remote"
device_class: power
state_topic: "tele/gateway/aaaa/sensor"
value_template: "{{value_json.ZbReceived.xiaomi_remote.Power}}"

  • 重启后可用

你可能感兴趣的:(Zigbee2Tasmota使用及Homeassistant中MQTT Sensor配置过程)