跳转到内容

组合多个传感器的状态

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

unit_of_measurementdevice_classentity_categoryiconaccuracy_decimals 属性默认从第一个传感器继承。state_class 明确不继承,因为对于多种组合类型,当使用多个传感器时,total_increasing 状态仍可能减少。

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

  • KALMAN 滤波器:此类型将一个或多个传感器滤波为一个,并降低误差。如果使用单个传感器作为数据源,它的作用类似于 sensor-filter-exponential_moving_average 过滤器。使用多个传感器时,它会根据各自的标准差来组合它们的值。
# 示例配置条目
sensor:
- platform: combination
type: kalman
name: "温度"
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 组合:此类型将每个源传感器乘以配置的系数后求和。
# 示例配置条目
sensor:
- platform: combination
type: linear
name: "平衡功率"
sources:
- source: total_power
coefficient: 1.0
- source: circuit_1_power
coefficient: -1.0
  • MAXIMUMMEANMEDIANMINIMUMMOST_RECENTLY_UPDATEDRANGESUM 组合:这些类型在所有源传感器状态之间计算指定的组合值。
# 示例配置条目
sensor:
- platform: combination
type: median
name: "中位数温度"
sources:
- source: temperature_sensor_1
- source: temperature_sensor_2
- source: temperature_sensor_3
  • type (必需, 枚举): 组合统计类型,应为 KALMANLINEARMAXIMUMMEANMEDIANMINIMUMMOST_RECENTLY_UPDATEDRANGESUM 之一。

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

    • source (必需, SensorID): 用作采样源的传感器 ID。

    • error (必需, 仅用于 KALMAN 类型, 浮点数, 可模板化): 传感器测量的标准差。其作用类似于 process_std_dev 参数,低值表示数据准确。如果使用模板实现,测量值在参数 x 中。

    • coefficient (必需, 仅用于 LINEAR 类型, 浮点数, 可模板化): 在对所有源传感器状态求和之前,传感器状态要乘以的系数。如果使用模板实现,测量值在参数 x 中。

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

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

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