36 void input(
float value);
62 explicit QuantileFilter(
size_t window_size,
size_t send_every,
size_t send_first_at,
float quantile);
92 explicit MedianFilter(
size_t window_size,
size_t send_every,
size_t send_first_at);
138 explicit MinFilter(
size_t window_size,
size_t send_every,
size_t send_first_at);
166 explicit MaxFilter(
size_t window_size,
size_t send_every,
size_t send_first_at);
239 void setup()
override;
346 void setup()
override;
360 explicit DeltaFilter(
float delta,
bool percentage_mode);
373 explicit OrFilter(std::vector<Filter *> filters);
415 ClampFilter(
float min,
float max,
bool ignore_out_of_range);
optional< float > new_value(float value) override
std::vector< std::array< float, 3 > > linear_functions_
CalibrateLinearFilter(std::vector< std::array< float, 3 > > linear_functions)
CalibratePolynomialFilter(std::vector< float > coefficients)
std::vector< float > coefficients_
optional< float > new_value(float value) override
bool ignore_out_of_range_
ClampFilter(float min, float max, bool ignore_out_of_range)
optional< float > new_value(float value) override
optional< float > new_value(float value) override
float get_setup_priority() const override
DebounceFilter(uint32_t time_period)
DeltaFilter(float delta, bool percentage_mode)
optional< float > new_value(float value) override
Simple exponential moving average filter.
void set_send_every(size_t send_every)
optional< float > new_value(float value) override
ExponentialMovingAverageFilter(float alpha, size_t send_every, size_t send_first_at)
void set_alpha(float alpha)
Apply a filter to sensor values such as moving average.
virtual optional< float > new_value(float value)=0
This will be called every time the filter receives a new value.
virtual void initialize(Sensor *parent, Filter *next)
Initialize this filter, please note this can be called more than once.
A simple filter that only forwards the filter chain if it doesn't receive value_to_filter_out.
std::vector< TemplatableValue< float > > values_to_filter_out_
FilterOutValueFilter(std::vector< TemplatableValue< float > > values_to_filter_out)
optional< float > new_value(float value) override
HeartbeatFilter(uint32_t time_period)
optional< float > new_value(float value) override
float get_setup_priority() const override
This class allows for creation of simple template filters.
const lambda_filter_t & get_lambda_filter() const
LambdaFilter(lambda_filter_t lambda_filter)
lambda_filter_t lambda_filter_
void set_lambda_filter(const lambda_filter_t &lambda_filter)
optional< float > new_value(float value) override
void set_send_every(size_t send_every)
void set_window_size(size_t window_size)
std::deque< float > queue_
optional< float > new_value(float value) override
MaxFilter(size_t window_size, size_t send_every, size_t send_first_at)
Construct a MaxFilter.
void set_window_size(size_t window_size)
void set_send_every(size_t send_every)
MinFilter(size_t window_size, size_t send_every, size_t send_first_at)
Construct a MinFilter.
std::deque< float > queue_
optional< float > new_value(float value) override
A simple filter that multiplies to each value it receives by multiplier.
optional< float > new_value(float value) override
MultiplyFilter(TemplatableValue< float > multiplier)
TemplatableValue< float > multiplier_
A simple filter that adds offset to each value it receives.
optional< float > new_value(float value) override
OffsetFilter(TemplatableValue< float > offset)
TemplatableValue< float > offset_
optional< float > new_value(float value) override
PhiNode(OrFilter *or_parent)
std::vector< Filter * > filters_
optional< float > new_value(float value) override
void initialize(Sensor *parent, Filter *next) override
OrFilter(std::vector< Filter * > filters)
void set_window_size(size_t window_size)
void set_send_every(size_t send_every)
std::deque< float > queue_
void set_quantile(float quantile)
optional< float > new_value(float value) override
QuantileFilter(size_t window_size, size_t send_every, size_t send_first_at, float quantile)
Construct a QuantileFilter.
RoundFilter(uint8_t precision)
optional< float > new_value(float value) override
optional< float > new_value(float value) override
RoundMultipleFilter(float multiple)
Base-class for all sensors.
SkipInitialFilter(size_t num_to_ignore)
Construct a SkipInitialFilter.
optional< float > new_value(float value) override
Simple sliding window moving average filter.
std::deque< float > queue_
void set_window_size(size_t window_size)
void set_send_every(size_t send_every)
optional< float > new_value(float value) override
SlidingWindowMovingAverageFilter(size_t window_size, size_t send_every, size_t send_first_at)
Construct a SlidingWindowMovingAverageFilter.
Simple throttle average filter.
optional< float > new_value(float value) override
ThrottleAverageFilter(uint32_t time_period)
float get_setup_priority() const override
uint32_t min_time_between_inputs_
ThrottleFilter(uint32_t min_time_between_inputs)
optional< float > new_value(float value) override
TemplatableValue< float > value_
optional< float > new_value(float value) override
float get_setup_priority() const override
TimeoutFilter(uint32_t time_period, TemplatableValue< float > new_value)
optional< float > new_value(float value) override
ToNTCResistanceFilter(double a, double b, double c)
optional< float > new_value(float value) override
ToNTCTemperatureFilter(double a, double b, double c)
std::function< optional< float >(float)> lambda_filter_t
Providing packet encoding functions for exchanging data with a remote host.