Skip to main content

传感器

mobile_app 集成支持暴露可以完全通过您的应用程序管理的自定义传感器。

注册传感器

所有传感器必须在更新之前注册。您一次只能注册一个传感器,这与更新传感器不同。

要注册传感器,请像这样向 webhook 发出请求:

{
"data": {
"attributes": {
"foo": "bar"
},
"device_class": "battery",
"icon": "mdi:battery",
"name": "电池状态",
"state": "12345",
"type": "sensor",
"unique_id": "battery_state",
"unit_of_measurement": "%",
"state_class": "measurement",
"entity_category": "diagnostic",
"disabled": true
},
"type": "register_sensor"
}

有效的键包括:

类型是否必需描述
attributesobject附加到传感器的属性
device_classstring有效设备类别之一。 二进制传感器类传感器类
iconMaterial Design Icon (字符串)必须以 mdi: 为前缀。如果未提供,默认值为 mdi:cellphone
namestring传感器的名称
statebool, float, int, string传感器的状态
typestring传感器的类型。必须是 binary_sensorsensor 之一
unique_idstring对于您的应用程序的此安装唯一的标识符。您稍后需要此标识符。通常最好使用安全版本的传感器名称
unit_of_measurementstring传感器的计量单位
state_classstring实体的 状态类(仅传感器)
entity_categorystring实体的实体类别
disabledboolean实体是否应该启用或禁用。

传感器在注册后会立即出现。

更新传感器

一旦注册了传感器,您需要更新它。这与注册非常相似,但您可以同时更新所有传感器。

例如,要更新我们上面注册的传感器,您可以发送以下内容:

{
"data": [
{
"attributes": {
"hello": "world"
},
"icon": "mdi:battery",
"state": 123,
"type": "sensor",
"unique_id": "battery_state"
}
],
"type": "update_sensor_states"
}

在更新过程中仅允许某些键:

类型是否必需描述
attributesobject附加到传感器的属性
iconMaterial Design Icon (字符串)必须以 mdi: 为前缀
statebool, float, int, string传感器的状态
typestring传感器的类型。必须是 binary_sensorsensor 之一
unique_idstring对于您的应用程序的此安装唯一的标识符。您稍后需要此标识符。通常最好使用安全版本的传感器名称

更新传感器的响应是一个字典,包含 unique_id => 更新结果。

如果实体在 Home Assistant 中被禁用,则成功更新时将添加键 is_disabled。这意味着应用程序可以禁用向传感器发送更新。

如果更新不成功,则返回错误。

{
"battery_state": {
"success": true
},
"battery_level": {
"success": true,
"is_disabled": true
},
"battery_charging": {
"success": false,
"error": {
"code": "not_registered",
"message": "实体未注册",
}
},
"battery_charging_state": {
"success": false,
"error": {
"code": "invalid_format",
"message": "类型的意外值",
}
}
}

保持传感器与 Home Assistant 同步

用户可以在 Home Assistant 中启用和禁用实体。禁用的实体将不会被添加到 Home Assistant,即使集成提供了它。这意味着手机发送数据到在 Home Assistant 中未启用的实体将没有意义。

当传感器在应用程序中启用/禁用时,应用程序应该发送 register_sensor webhook 以此传感器,并将 disabled 设置为 truefalse

当移动应用程序发送 update_sensor_states webhook 更新已禁用实体的数据时,更新结果将包含 is_disabled 键,其值为 true。这是移动应用程序需要从 Home Assistant 同步启用状态到移动应用程序的指示器。

{
"battery_level": {
"success": true
},
"battery_charging": {
"success": true,
"is_disabled": true
}
}

当用户在 Home Assistant 中启用/禁用实体时,必须将其同步到移动应用程序。 get_config webhook 响应包含 entities 键。它是一个字典,将 unique_id 映射到 {"disabled": boolean}。移动应用程序应采用这些启用设置。

{
// ...
"entities": {
"battery_level": {
"disabled": false
},
"battery_charging": {
"disabled": true
}
}
}