Trend

The trend platform allows you to create sensors which show the trend of numeric state orstate_attributes from other entities. This sensor requires at least two updates of the underlying sensor to establish a trend. Thus it can take some time to show an accurate state. It can be useful as part of automations, where you want to base an action on a trend.

配置

要将 Trend helper 添加到您的 Home Assistant 实例中,请使用此 My 按钮:

手动配置步骤

如果上述 My 按钮不起作用,您也可以手动执行以下步骤:

  • 浏览到您的 Home Assistant 实例。

  • 转到 设置 > 设备与服务

  • 在屏幕顶部,选择标签:Helpers

  • 在右下角,选择 创建助手 按钮。

  • 从列表中选择 Trend

  • 按照屏幕上的说明完成设置。

Name

The name the sensor should have. You can change it again later.

Entity that the sensor tracks

The sensor entity that is to be tracked and whose trend is to be detected.

Attribute of the entity that the sensor tracks

The attribute of the previous selected sensor entity that this sensor tracks. If no attribute is specified then the sensor will track the state.

Invert the result

Invert the result. A true value would mean descending rather than ascending.

YAML Configuration

To enable Trend binary sensors in your installation, add the following to your configuration.yamlconfiguration.yaml 文件是 Home Assistant 的主要配置文件。它列出了要加载的集成及其特定配置。在某些情况下,需要直接在 configuration.yaml 文件中手动编辑配置。大多数集成可以在 UI 中配置。 [Learn more] file:

# Example configuration.yaml entry
binary_sensor:
  - platform: trend
    sensors:
      cpu_speed:
        entity_id: sensor.cpu_speed

Configuration Variables

sensors map Required

List of your sensors.

entity_id string Required

The entity that this sensor tracks.

attribute string (Optional)

The attribute of the entity that this sensor tracks. If no attribute is specified then the sensor will track the state.

device_class string (Optional)

Sets the class of the device, changing the device state and icon that is displayed on the frontend.

friendly_name string (Optional)

Name to use in the Frontend.

invert boolean (Optional, default: false)

Invert the result. A true value would mean descending rather than ascending.

max_samples integer (Optional, default: 2)

Limit the maximum number of stored samples.

min_samples integer (Optional, default: 2)

The minimum number of samples that must be collected before the gradient can be calculated.

min_gradient string (Optional, default: 0.0)

The minimum rate at which the observed value must be changing for this sensor to switch on. The gradient is measured in sensor units per second.

sample_duration integer (Optional, default: 0)

The duration in seconds to store samples for. Samples older than this value will be discarded.

Using Multiple Samples

If the optional sample_duration and max_samples parameters are specified then multiple samples can be stored and used to detect long-term trends.

Each time the state changes, a new sample is stored along with the sample time. Samples older than sample_duration seconds will be discarded. The max_samples parameter must be large enough to store sensor updates over the requested duration. If you want to trend over two hours and your sensor updates every 120s then max_samples must be at least 60, i.e., 7200/120 = 60.

A trend line is then fitted to the available samples, and the gradient of this line is compared to min_gradient to determine the state of the trend sensor. The gradient is measured in sensor units per second - so if you want to know when the temperature is falling by 2 degrees per hour, use a gradient of (-2) / (60 x 60) = -0.00055

The current number of stored samples is displayed on the States page.

Examples

In this section you find some real-life examples of how to use this sensor.

This example indicates true if the sun is still rising:

binary_sensor:
  - platform: trend
    sensors:
      sun_rising:
        entity_id: sun.sun
        attribute: elevation

This example creates two sensors to indicate whether the temperature is rising or falling at a rate of at least 3 degrees an hour, and collects samples over a two hour period:

binary_sensor:
  - platform: trend
    sensors:
      temp_falling:
        entity_id: sensor.outside_temperature
        sample_duration: 7200
        max_samples: 120
        min_samples: 20
        min_gradient: -0.0008
        device_class: cold

      temp_rising:
        entity_id: sensor.outside_temperature
        sample_duration: 7200
        max_samples: 120
        min_samples: 20
        min_gradient: 0.0008
        device_class: heat