diff --git a/source/_components/sensor.filter.markdown b/source/_components/sensor.filter.markdown index 07f5b33e3a5..5ce3132af15 100644 --- a/source/_components/sensor.filter.markdown +++ b/source/_components/sensor.filter.markdown @@ -15,7 +15,7 @@ logo: home-assistant.png The `filter` platform enables sensors that process the states of other entities. -`filter` applies a signal processing algorithm to a sensor, previous and current states, and generates a `new state` given the chosen algorithm. +`filter` applies a signal processing algorithm to a sensor, previous and current states, and generates a `new state` given the chosen algorithm. The next image depicts an original sensor and the filter sensor of that same sensor using the [History Graph]({{site_roor}}/components/history_graph/) component.
@@ -37,6 +37,9 @@ sensor:
- filter: lowpass
time_constant: 10
precision: 2
+ - filter: time_simple_moving_average
+ window_size: 00:05
+ precision: 2
```
Filters can be chained and are applied according to the order present in the configuration file.
@@ -53,17 +56,17 @@ name:
filters:
description: Filters to be used.
required: true
- type: map
+ type: list
keys:
filter:
- description: Algorithm to be used to filter data. Available filters are `lowpass`, `outlier` and `throttle`.
+ description: Algorithm to be used to filter data. Available filters are `lowpass`, `outlier`, `throttle` and `time_simple_moving_average`.
required: true
type: string
window_size:
- description: Size of the window of previous states.
+ description: Size of the window of previous states. Time based filters such as `time_simple_moving_average` will require a time period (size in time), while other filters such as `outlier` will require an integer (size in number of states)
required: false
- type: int
- default: 5
+ type: [int, time]
+ default: 1
precision:
description: See [_lowpass_](#low-pass) filter. Defines the precision of the filtered state, through the argument of round().
required: false
@@ -78,14 +81,19 @@ filters:
description: See [_outlier_](#outlier) filter. Band radius from median of previous states.
required: false
type: float
- default: 2.0
+ default: 2.0
+ type:
+ description: See [_time_simple_moving_average_](#time-simple-moving-average) filter. Defines the type of Simple Moving Average.
+ required: false
+ type: string
+ default: last
{% endconfiguration %}
## {% linkable_title Filters %}
### {% linkable_title Low-pass %}
-The Low-pass filter (`lowpass`) is one of signal processing most common filters, as it smooths data by shortcuting peaks and valleys.
+The Low-pass filter (`lowpass`) is one of signal processing most common filters, as it smooths data by shortcutting peaks and valleys.
The included Low-pass filter is very basic and is based on a moving average, in which the previous data point is weighted with the new data point.
@@ -120,3 +128,10 @@ To adjust the rate you need to set the window_size. To throttle a sensor down to
This filter is relevant when you have a sensor which produces states at a very high-rate, which you might want to throttle down for storing or visualization purposes.
+### {% linkable_title Time Simple Moving Average %}
+
+The Time SMA filter (`time_simple_moving_average`) is based on the paper [Algorithms for Unevenly Spaced Time Series: Moving Averages and Other Rolling Operators](http://www.eckner.com/papers/Algorithms%20for%20Unevenly%20Spaced%20Time%20Series.pdf) by Andreas Eckner.
+
+The paper defines three types/versions of the Simple Moving Average (SMA): *last*, *next* and *linear*. Currently only *last* is implemented.
+
+Theta, as described in the paper, is the `window_size` parameter, and can be expressed using time notation (e.g., 00:05 for a five minutes time window).