ESPHome 2025.5.0
Loading...
Searching...
No Matches
automation.h
Go to the documentation of this file.
1#pragma once
2
5#include "valve.h"
6
7namespace esphome {
8namespace valve {
9
10template<typename... Ts> class OpenAction : public Action<Ts...> {
11 public:
12 explicit OpenAction(Valve *valve) : valve_(valve) {}
13
14 void play(Ts... x) override { this->valve_->make_call().set_command_open().perform(); }
15
16 protected:
18};
19
20template<typename... Ts> class CloseAction : public Action<Ts...> {
21 public:
22 explicit CloseAction(Valve *valve) : valve_(valve) {}
23
24 void play(Ts... x) override { this->valve_->make_call().set_command_close().perform(); }
25
26 protected:
28};
29
30template<typename... Ts> class StopAction : public Action<Ts...> {
31 public:
32 explicit StopAction(Valve *valve) : valve_(valve) {}
33
34 void play(Ts... x) override { this->valve_->make_call().set_command_stop().perform(); }
35
36 protected:
38};
39
40template<typename... Ts> class ToggleAction : public Action<Ts...> {
41 public:
42 explicit ToggleAction(Valve *valve) : valve_(valve) {}
43
44 void play(Ts... x) override { this->valve_->make_call().set_command_toggle().perform(); }
45
46 protected:
48};
49
50template<typename... Ts> class ControlAction : public Action<Ts...> {
51 public:
52 explicit ControlAction(Valve *valve) : valve_(valve) {}
53
56
57 void play(Ts... x) override {
58 auto call = this->valve_->make_call();
59 if (this->stop_.has_value())
60 call.set_stop(this->stop_.value(x...));
61 if (this->position_.has_value())
62 call.set_position(this->position_.value(x...));
63 call.perform();
64 }
65
66 protected:
68};
69
70template<typename... Ts> class ValveIsOpenCondition : public Condition<Ts...> {
71 public:
72 ValveIsOpenCondition(Valve *valve) : valve_(valve) {}
73 bool check(Ts... x) override { return this->valve_->is_fully_open(); }
74
75 protected:
77};
78
79template<typename... Ts> class ValveIsClosedCondition : public Condition<Ts...> {
80 public:
82 bool check(Ts... x) override { return this->valve_->is_fully_closed(); }
83
84 protected:
86};
87
88class ValveOpenTrigger : public Trigger<> {
89 public:
91 a_valve->add_on_state_callback([this, a_valve]() {
92 if (a_valve->is_fully_open()) {
93 this->trigger();
94 }
95 });
96 }
97};
98
99class ValveClosedTrigger : public Trigger<> {
100 public:
102 a_valve->add_on_state_callback([this, a_valve]() {
103 if (a_valve->is_fully_closed()) {
104 this->trigger();
105 }
106 });
107 }
108};
109
110} // namespace valve
111} // namespace esphome
Base class for all automation conditions.
Definition automation.h:75
void trigger(Ts... x)
Definition automation.h:96
void play(Ts... x) override
Definition automation.h:24
TEMPLATABLE_VALUE(bool, stop) TEMPLATABLE_VALUE(float
position void play(Ts... x) override
Definition automation.h:57
void play(Ts... x) override
Definition automation.h:14
void play(Ts... x) override
Definition automation.h:34
void play(Ts... x) override
Definition automation.h:44
ValveCall & set_stop(bool stop)
Set whether this valve call should stop the valve.
Definition valve.cpp:121
ValveCall & set_command_close()
Set the command to close the valve.
Definition valve.cpp:55
ValveCall & set_position(float position)
Set the call to a certain target position.
Definition valve.cpp:67
ValveCall & set_command_toggle()
Set the command to toggle the valve.
Definition valve.cpp:63
ValveCall & set_command_stop()
Set the command to stop the valve.
Definition valve.cpp:59
ValveCall & set_command_open()
Set the command to open the valve.
Definition valve.cpp:51
void perform()
Perform the valve call.
Definition valve.cpp:71
Base class for all valve devices.
Definition valve.h:105
bool is_fully_closed() const
Helper method to check if the valve is fully closed. Equivalent to comparing .position against 0....
Definition valve.cpp:166
bool is_fully_open() const
Helper method to check if the valve is fully open. Equivalent to comparing .position against 1....
Definition valve.cpp:165
ValveCall make_call()
Construct a new valve call used to control the valve.
Definition valve.cpp:127
void add_on_state_callback(std::function< void()> &&f)
Definition valve.cpp:129
bool check(Ts... x) override
Definition automation.h:73
float position
Definition cover.h:0
Providing packet encoding functions for exchanging data with a remote host.
Definition a01nyub.cpp:7
uint16_t x
Definition tt21100.cpp:5