ESPHome 2026.11.0-dev
Loading...
Searching...
No Matches
automation.h
Go to the documentation of this file.
1#pragma once
2
6
7namespace esphome::number {
8
9class ValueRangeTrigger final : public Trigger<float>, public Component {
10 public:
11 explicit ValueRangeTrigger(Number *parent) : parent_(parent) {}
12
13 template<typename V> void set_min(V min) { this->min_ = min; }
14 template<typename V> void set_max(V max) { this->max_ = max; }
15
16 void setup() override;
17 float get_setup_priority() const override;
18
19 protected:
20 void on_state_(float state);
21
24 bool previous_in_range_{false};
25 TemplatableFn<float, float> min_{[](float) -> float { return NAN; }};
26 TemplatableFn<float, float> max_{[](float) -> float { return NAN; }};
27};
28
29template<typename... Ts> class NumberInRangeCondition final : public Condition<Ts...> {
30 public:
32
33 void set_min(float min) { this->min_ = min; }
34 void set_max(float max) { this->max_ = max; }
35 bool check(const Ts &...x) override {
36 const float state = this->parent_->state;
37 if (std::isnan(this->min_)) {
38 return state <= this->max_;
39 } else if (std::isnan(this->max_)) {
40 return state >= this->min_;
41 } else {
42 return this->min_ <= state && state <= this->max_;
43 }
44 }
45
46 protected:
48 float min_{NAN};
49 float max_{NAN};
50};
51
52} // namespace esphome::number
Base class for all automation conditions.
Definition automation.h:533
Function-pointer-only templatable storage (4 bytes on 32-bit).
Definition automation.h:20
Base-class for all numbers.
Definition number.h:29
bool check(const Ts &...x) override
Definition automation.h:35
float get_setup_priority() const override
TemplatableFn< float, float > max_
Definition automation.h:26
TemplatableFn< float, float > min_
Definition automation.h:25
bool state
Definition fan.h:2
uint16_t x
Definition tt21100.cpp:5