homeassist MQTT Discovery设备自发现

文章详细介绍了HomeAssistant(hass)中的MQTT设备发现规则,包括设备发现主题的构建、配置载荷的要求,以及如何通过发布配置信息让hass自动发现和管理MQTT传感器。示例展示了布尔型传感器和具有多个测量值的传感器的配置方法,强调了unique_id的重要性以及如何取消注册设备。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

hass 设备发现规则

hass关于Discovery原文地址

举例说明

hass关于设备发现的测试:地址:https://gitee.com/norep/hass_manager


homeassist MQTT订阅信息

说明主题
设备发现主题前缀homeassistant
出生消息/遗嘱消息主题homeassistant/status
出生消息载荷online
遗嘱消息载荷offline

设备发现主题需要按照如下规则组合

<discovery_prefix>//[<node_id>/]<object_id>/config
discovery_prefix: 主题前缀,默认为homeassistant,可在hass MQTT集成中修改
component: 支持mqtt的组件,例如:binary_sensor/button/switch,原文中有所有支持的设备列表
[node_id]: 可选配置,非必须,节点ID,仅用于构成订阅主题,hass并不适用此字段
object_id: 设备ID,每个设备自己的ID。仅可使用 数字、字母、下划线、连字符。

设备发现的有效载荷

  1. 载荷必须为一个序列化的JSON字典,未配置的键值将会使用默认值。
  2. 收到新的载荷数据将会更新原始的数据,如果新的载荷为空,将会清除hass中记录的旧的数据。
  3. 可以使用"~“设置一个base topic,在以”_topic"结尾的变量中,"~"如果出现在值的开头或结尾,将为使用base topic代替。

在内存受限的嵌入式设备中,可使用简化的配置变量名称,如:

'stat_t':              'state_topic',
'tit':                 'title',
't':                   'topic',

其他配置字段参考原文。

一个MQTT设备通过向Discovery topic发布自身的配置信息,即可被hass系统自动发现这个MQTT设备

举例

布尔型传感器

hass关于布尔型传感器的说明 MQTT Binary Sensor
Discovery topic(设备自发现):homeassistant/binary_sensor/garden/config
State topic(传感器状态):homeassistant/binary_sensor/garden/state
Configuration payload(子发现发布配置信息):

{
    "name":"garden",
    "device_class":"motion",
    "state_topic":"homeassistant/binary_sensor/garden/state",
    "unique_id":"motion01ad",
    "device":{
        "identifiers":[
            "01ad"
        ],
        "name":"Garden"
    }
}

name:传感器名称, hass中显示为实体名称
device_class:设备类型,可为空,影响设备在hass中显示的图标与状态
state_topic:hass订阅的主题,用于接收传感器状态
unique_id:传感器的唯一标识符,如果有两个传感器具有相同的unique_id,hass将发生异常。如果不设置此字段,hass将无法管理此实体
device:只有在使用了"unique_id"时才有效,表示这个传感器的设备信息。
发布配置信息需要勾选"Retain",否则当hass重启后,将无法发现设备。
配置信息中各个键值的意义可参考 MQTT Binary Sensor 说明,

最小配置项为

{
    "name":"garden",
    "state_topic":"homeassistant/binary_sensor/garden/state",
    "unique_id":"motion01ad"
}

向主题发布传感器数据:

homeassistant/binary_sensor/garden/state
ON:触发传感器
OFF: 未触发传感器

从hass取消注册这个设备

向自发现主题发布一条空信息
homeassistant/binary_sensor/garden/config

具有多个测量值的传感器

hass关于具有多个测量值传感器的说明 MQTT Sensor
设置具有多个测量值的传感器需要配置多个主题。
使用同一个主题发布传感器值
state topic: homeassistant/sensor/sensorBedroom/state

Config No.1:
config topic: homeassistant/sensor/sensorBedroomT/config
payload:

{
    "device_class":"temperature",
    "name":"Temperature",
    "state_topic":"homeassistant/sensor/sensorBedroom/state",
    "unit_of_measurement":"C",
    "value_template":"{{ value_json.temperature}}",
    "unique_id":"temp01ae",
    "device":{
        "identifiers":[
            "bedroom01ae"
        ],
        "name":"Bedroom"
    }
}

Config No.2:
config topic: homeassistant/sensor/sensorBedroomH/config
payload:

{
    "device_class":"humidity",
    "name":"Humidity",
    "state_topic":"homeassistant/sensor/sensorBedroom/state",
    "unit_of_measurement":"%",
    "value_template":"{{ value_json.humidity}}",
    "unique_id":"hum01ae",
    "device":{
        "identifiers":[
            "bedroom01ae"
        ],
        "name":"Bedroom"
    }
}

unit_of_measurement:定义了传感器的单位,可以为空
value_template:定义一个模板来提取传感器值。

发布传感器数据:
state topic: homeassistant/sensor/sensorBedroom/state
{ “temperature”: 23.20, “humidity”: 43.70 }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

萌新程序猿~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值