35 void input(
float value);
61 explicit QuantileFilter(
size_t window_size,
size_t send_every,
size_t send_first_at,
float quantile);
65 void set_send_every(
size_t send_every);
66 void set_window_size(
size_t window_size);
67 void set_quantile(
float quantile);
91 explicit MedianFilter(
size_t window_size,
size_t send_every,
size_t send_first_at);
95 void set_send_every(
size_t send_every);
96 void set_window_size(
size_t window_size);
119 explicit MinFilter(
size_t window_size,
size_t send_every,
size_t send_first_at);
123 void set_send_every(
size_t send_every);
124 void set_window_size(
size_t window_size);
147 explicit MaxFilter(
size_t window_size,
size_t send_every,
size_t send_first_at);
151 void set_send_every(
size_t send_every);
152 void set_window_size(
size_t window_size);
180 void set_send_every(
size_t send_every);
181 void set_window_size(
size_t window_size);
201 void set_send_every(
size_t send_every);
202 void set_alpha(
float alpha);
205 bool first_value_{
true};
206 float accumulator_{NAN};
220 void setup()
override;
224 float get_setup_priority()
const override;
294 uint32_t last_input_{0};
304 float get_setup_priority()
const override;
314 void setup()
override;
318 float get_setup_priority()
const override;
323 bool has_value_{
false};
334 float last_value_{NAN};
339 explicit OrFilter(std::vector<Filter *> filters);
lambda_filter_t lambda_filter_
uint32_t min_time_between_inputs_
std::deque< float > queue_
This class allows for creation of simple template filters.
std::vector< Filter * > filters_
std::vector< float > coefficients_
std::deque< float > queue_
virtual optional< float > new_value(float value)=0
This will be called every time the filter receives a new value.
float value_to_filter_out_
Simple exponential moving average filter.
CalibratePolynomialFilter(std::vector< float > coefficients)
A simple filter that only forwards the filter chain if it doesn't receive value_to_filter_out.
virtual void initialize(Sensor *parent, Filter *next)
Initialize this filter, please note this can be called more than once.
A simple filter that adds offset to each value it receives.
A simple filter that multiplies to each value it receives by multiplier.
std::deque< float > queue_
std::deque< float > queue_
std::function< optional< float >(float)> lambda_filter_t
Apply a filter to sensor values such as moving average.
Simple throttle average filter.
Base-class for all sensors.
Simple sliding window moving average filter.