ESPHome 2026.3.2
Loading...
Searching...
No Matches
esphome::sensor::SlidingWindowFilter Class Referenceabstract

Base class for filters that use a sliding window of values. More...

#include <filter.h>

Inheritance diagram for esphome::sensor::SlidingWindowFilter:
esphome::sensor::Filter esphome::sensor::MinMaxFilter esphome::sensor::SlidingWindowMovingAverageFilter esphome::sensor::SortedWindowFilter esphome::sensor::MaxFilter esphome::sensor::MinFilter esphome::sensor::MedianFilter esphome::sensor::QuantileFilter

Public Member Functions

 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

virtual float compute_result ()=0
 Called by new_value() to compute the filtered result from the current window.
 

Protected Attributes

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

Base class for filters that use a sliding window of values.

Uses a ring buffer to efficiently maintain a fixed-size sliding window without reallocations or pop_front() overhead. Eliminates deque fragmentation issues.

Definition at line 53 of file filter.h.

Constructor & Destructor Documentation

◆ SlidingWindowFilter()

esphome::sensor::SlidingWindowFilter::SlidingWindowFilter ( size_t window_size,
size_t send_every,
size_t send_first_at )

Definition at line 44 of file filter.cpp.

Member Function Documentation

◆ compute_result()

virtual float esphome::sensor::SlidingWindowFilter::compute_result ( )
protectedpure virtual

◆ new_value()

optional< float > esphome::sensor::SlidingWindowFilter::new_value ( float value)
finalvirtual

Implements esphome::sensor::Filter.

Definition at line 50 of file filter.cpp.

Field Documentation

◆ send_at_

size_t esphome::sensor::SlidingWindowFilter::send_at_
protected

Counter for send_every.

Definition at line 70 of file filter.h.

◆ send_every_

size_t esphome::sensor::SlidingWindowFilter::send_every_
protected

Send result every N values.

Definition at line 69 of file filter.h.

◆ window_

FixedVector<float> esphome::sensor::SlidingWindowFilter::window_
protected

Access the sliding window values (ring buffer implementation) Use: for (size_t i = 0; i < window_count_; i++) { float val = window_[i]; }.

Definition at line 65 of file filter.h.

◆ window_count_

size_t esphome::sensor::SlidingWindowFilter::window_count_ {0}
protected

Number of valid values in window (0 to window_size_)

Definition at line 67 of file filter.h.

◆ window_head_

size_t esphome::sensor::SlidingWindowFilter::window_head_ {0}
protected

Index where next value will be written.

Definition at line 66 of file filter.h.

◆ window_size_

size_t esphome::sensor::SlidingWindowFilter::window_size_
protected

Maximum window size.

Definition at line 68 of file filter.h.


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