ESPHome 2025.12.0-dev
Loading...
Searching...
No Matches
esphome::sensor::QuantileFilter Class Reference

Simple quantile filter. More...

#include <filter.h>

Inheritance diagram for esphome::sensor::QuantileFilter:
esphome::sensor::SortedWindowFilter esphome::sensor::SlidingWindowFilter esphome::sensor::Filter

Public Member Functions

 QuantileFilter (size_t window_size, size_t send_every, size_t send_first_at, float quantile)
 Construct a QuantileFilter.
 
void set_quantile (float quantile)
 
- Public Member Functions inherited from esphome::sensor::SortedWindowFilter
 SlidingWindowFilter (size_t window_size, size_t send_every, size_t send_first_at)
 
- Public Member Functions inherited from esphome::sensor::SlidingWindowFilter
 SlidingWindowFilter (size_t window_size, size_t send_every, size_t send_first_at)
 
optional< float > new_value (float value) final
 
- Public Member Functions inherited from esphome::sensor::Filter
virtual void initialize (Sensor *parent, Filter *next)
 Initialize this filter, please note this can be called more than once.
 
void input (float value)
 
void output (float value)
 

Protected Member Functions

float compute_result () override
 
- Protected Member Functions inherited from esphome::sensor::SortedWindowFilter
FixedVector< float > get_window_values_ ()
 Helper to get non-NaN values from the window (not sorted - caller will use nth_element) Returns empty FixedVector if all values are NaN.
 
- Protected Member Functions inherited from esphome::sensor::SlidingWindowFilter

Protected Attributes

float quantile_
 
- Protected Attributes inherited from esphome::sensor::SlidingWindowFilter
FixedVector< float > window_
 Access the sliding window values (ring buffer implementation) Use: for (size_t i = 0; i < window_count_; i++) { float val = window_[i]; }.
 
size_t window_head_ {0}
 Index where next value will be written.
 
size_t window_count_ {0}
 Number of valid values in window (0 to window_size_)
 
size_t window_size_
 Maximum window size.
 
size_t send_every_
 Send result every N values.
 
size_t send_at_
 Counter for send_every.
 
- Protected Attributes inherited from esphome::sensor::Filter
friend Sensor
 
Filternext_ {nullptr}
 
Sensorparent_ {nullptr}
 

Detailed Description

Simple quantile filter.

Takes the quantile of the last <window_size> values and pushes it out every <send_every>.

Definition at line 115 of file filter.h.

Constructor & Destructor Documentation

◆ QuantileFilter()

esphome::sensor::QuantileFilter::QuantileFilter ( size_t window_size,
size_t send_every,
size_t send_first_at,
float quantile )
explicit

Construct a QuantileFilter.

Parameters
window_sizeThe number of values that should be used in quantile calculation.
send_everyAfter how many sensor values should a new one be pushed out.
send_first_atAfter how many values to forward the very first value. Defaults to the first value on startup being published on the first raw value, so with no filter applied. Must be less than or equal to send_every.
quantilefloat 0..1 to pick the requested quantile. Defaults to 0.9.

Definition at line 119 of file filter.cpp.

Member Function Documentation

◆ compute_result()

float esphome::sensor::QuantileFilter::compute_result ( )
overrideprotectedvirtual

Implements esphome::sensor::SlidingWindowFilter.

Definition at line 122 of file filter.cpp.

◆ set_quantile()

void esphome::sensor::QuantileFilter::set_quantile ( float quantile)
inline

Definition at line 128 of file filter.h.

Field Documentation

◆ quantile_

float esphome::sensor::QuantileFilter::quantile_
protected

Definition at line 132 of file filter.h.


The documentation for this class was generated from the following files: