跳转至

Home Assistant-自动发现Mqtt设备

Untitled.png HomeAssistant中MQTT设备的自动发现逻辑是:

  • MQTT设备将自身的配置信息发布在事前定义的主题位置上
  • HomeAssistant从这个主题位置读取信息,生成对应的系统内实体设备

支持自动发现的设备包括:

  • 开关型传感器(binary_sensor)
  • 摄像头(camera)
  • 窗帘(cover)
  • 电扇(fan)
  • 灯(light)
  • 传感器(sensor)
  • 开关(switch)

修改配置

如果我们在homeassistant中安装mqtt集成的话,在安装集成的时候就可以打开MQTT发现,如果不启用我们可以手动修改configuration.yaml,需要在配置文件中增加:

mqtt:
  # 此处为mqtt原有的一些配置
  # ……
  # 配置自动发现
  discovery: true
  # 自动发现使用的主题位置前缀,缺省为homeassistant
  discovery_prefix: homeassistant

发布身份主题

设备将自己的配置信息发布在主题位置:

  • <discovery_prefix>/<component>/[<node_id>/]<object_id>/config
  • <discovery_prefix>:配置文件中的discovery_prefix,缺省为homeassistant
  • <component>:设备所在的域,例如light、switch、binary_sensor等
  • <node_id>:可选,节点ID
  • <object_id>:设备ID

配置信息采用JSON格式。 例如,MQTT设备在主题homeassistant/switch/smarthome/config,发布信息:

{"name": "test_switch", "command_topic": "iotts/switch/smarthome/set", "state_topic": "iotts/switch/smarthome/state"}

当HomeAssistant读取此信息,相当于配置文件中存在以下内容:

switch:
  - platform: mqtt
    name: "test_switch"
    command_topic: "iotts/switch/smarthome/set"
    state_topic: "iotts/switch/smarthome/state"

实际操作

打开paho mqtt调试助手

在homeassistant配置信息主题上发布自己的消息

技术分享图片

登录homeassistant,我们发现自动多出一个设备

设备类型 开关

名字 test_switch

技术分享图片

重发送配置,不会出现重复的设备。

之后我们自己编写硬件程序的时候就可以在启动的时候发布一条自动发现的主题,不需要修改配置文件了

至此自动发现设备教程结束