4.2 KiB
title, description, ha_category, ha_release, ha_iot_class, ha_quality_scale, ha_domain
title | description | ha_category | ha_release | ha_iot_class | ha_quality_scale | ha_domain | ||
---|---|---|---|---|---|---|---|---|
Trend | Instructions on how to integrate Trend binary sensors into Home Assistant. |
|
0.28 | Local Push | internal | 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.
Configuration
To enable Trend binary sensors in your installation,
add the following to your configuration.yaml
file:
# Example configuration.yaml entry
binary_sensor:
- platform: trend
sensors:
cpu_speed:
entity_id: sensor.cpu_speed
{% configuration %}
sensors:
description: List of your sensors.
required: true
type: map
keys:
entity_id:
description: The entity that this sensor tracks.
required: true
type: string
attribute:
description: >
The attribute of the entity that this sensor tracks.
If no attribute is specified then the sensor will track the state.
required: false
type: string
device_class:
description: Sets the class of the device, changing the device state and icon that is displayed on the frontend.
required: false
type: string
friendly_name:
description: Name to use in the Frontend.
required: false
type: string
invert:
description: >
Invert the result. A true
value would
mean descending rather than ascending.
required: false
type: boolean
default: false
max_samples:
description: Limit the maximum number of stored samples.
required: false
type: integer
default: 2
min_gradient:
description: >
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.
required: false
type: string
default: 0.0
sample_duration:
description: >
The duration in seconds to store samples for.
Samples older than this value will be discarded.
required: false
type: integer
default: 0
{% endconfiguration %}
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 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_gradient: -0.0008
device_class: cold
temp_rising:
entity_id: sensor.outside_temperature
sample_duration: 7200
max_samples: 120
min_gradient: 0.0008
device_class: heat