跳转到内容

组合多个传感器的状态

combination 传感器平台允许您将多个 传感器的状态组合为一个。要使用此传感器,请指定组合类型并添加源传感器。

unit_of_measurement、device_class、entity_category、icon 和 accuracy_decimals 属性默认从第一个传感器继承。 state_class 明确不继承,因为当多个传感器用于某些组合类型时,total_increasing 状态 仍可能下降。

源传感器状态可以通过几种方式组合:

  • KALMAN 滤波器:此类型将一或多个 传感器以减小误差的方式过滤为一个。如果使用单个传感器作为数据源, 它的作用类似于 sensor-filter-exponential_moving_average 滤波器。使用 多个传感器时,它根据其各自的 标准差组合它们的值。
# Example configuration entry
sensor:
- platform: combination
type: kalman
name: "Temperature"
process_std_dev: 0.001
sources:
- source: temperature_sensor_1
error: 1.0
- source: temperature_sensor_2
error: !lambda |-
return 0.5 + std::abs(x - 25) * 0.023
  • LINEAR 组合:此类型在将所有源传感器分别乘以配置的系数后进行求和。
# Example configuration entry
sensor:
- platform: combination
type: linear
name: "Balance Power"
sources:
- source: total_power
coefficient: 1.0
- source: circuit_1_power
coefficient: -1.0
  • MAX、MEAN、MEDIAN、MIN、MOST_RECENTLY_UPDATED、 RANGE、SUM 组合:这些类型在所有源传感器状态中计算指定的组合。
# Example configuration entry
sensor:
- platform: combination
type: median
name: "Median Temperature"
sources:
- source: temperature_sensor_1
- source: temperature_sensor_2
- source: temperature_sensor_3
  • type (必选, enum): 组合统计类型,应为 KALMAN、LINEAR、MAX、MEAN、MEDIAN、MIN、 MOST_RECENTLY_UPDATED、RANGE 或 SUM 之一。

  • sources (必选, list): 用作源的传感器列表。

    • source (必选, Sensor 的 ID): 用作采样源的传感器 id。

    • error (必选, 仅适用于 KALMAN 类型, float, 可模板化): 传感器测量的标准差。这与 process_std_dev 参数类似,低值表示准确数据。如果实现为模板,则 测量值在参数 x 中。

    • coefficient (可选, 仅适用于 LINEAR 类型, float, 可模板化): 将所有源传感器状态求和之前,乘以传感器状态的系数。 如果实现为模板,则测量值在参数 x 中。

  • process_std_dev (必选, 仅适用于 KALMAN 类型, float): 测量值每秒变化的标准差(例如 1/3600 = 0.000277,如果 温度通常每小时变化最多 1 开尔文)。此处较低的值 将对当前状态赋予高重要性,对 测量样本的变化响应缓慢。较高的值将更新更快,但也会 更嘈杂。

  • std_dev (可选, 仅适用于 KALMAN 类型, Sensor): 一个传感器, 每次更新时发布当前状态的标准差。

  • 来自 Sensor 的所有其他选项。