ESPHome 2026.1.0-dev
Loading...
Searching...
No Matches
automation.h
Go to the documentation of this file.
1#pragma once
2
6
8
9template<typename... Ts> class SetDividerAction : public Action<Ts...> {
10 public:
11 explicit SetDividerAction(Sprinkler *a_sprinkler) : sprinkler_(a_sprinkler) {}
12
13 TEMPLATABLE_VALUE(uint32_t, divider)
14
15 void play(const Ts &...x) override { this->sprinkler_->set_divider(this->divider_.optional_value(x...)); }
16
17 protected:
19};
20
21template<typename... Ts> class SetMultiplierAction : public Action<Ts...> {
22 public:
23 explicit SetMultiplierAction(Sprinkler *a_sprinkler) : sprinkler_(a_sprinkler) {}
24
25 TEMPLATABLE_VALUE(float, multiplier)
26
27 void play(const Ts &...x) override { this->sprinkler_->set_multiplier(this->multiplier_.optional_value(x...)); }
28
29 protected:
31};
32
33template<typename... Ts> class QueueValveAction : public Action<Ts...> {
34 public:
35 explicit QueueValveAction(Sprinkler *a_sprinkler) : sprinkler_(a_sprinkler) {}
36
37 TEMPLATABLE_VALUE(size_t, valve_number)
38 TEMPLATABLE_VALUE(uint32_t, valve_run_duration)
39
40 void play(const Ts &...x) override {
41 this->sprinkler_->queue_valve(this->valve_number_.optional_value(x...),
42 this->valve_run_duration_.optional_value(x...));
43 }
44
45 protected:
47};
48
49template<typename... Ts> class ClearQueuedValvesAction : public Action<Ts...> {
50 public:
51 explicit ClearQueuedValvesAction(Sprinkler *a_sprinkler) : sprinkler_(a_sprinkler) {}
52
53 void play(const Ts &...x) override { this->sprinkler_->clear_queued_valves(); }
54
55 protected:
57};
58
59template<typename... Ts> class SetRepeatAction : public Action<Ts...> {
60 public:
61 explicit SetRepeatAction(Sprinkler *a_sprinkler) : sprinkler_(a_sprinkler) {}
62
63 TEMPLATABLE_VALUE(uint32_t, repeat)
64
65 void play(const Ts &...x) override { this->sprinkler_->set_repeat(this->repeat_.optional_value(x...)); }
66
67 protected:
69};
70
71template<typename... Ts> class SetRunDurationAction : public Action<Ts...> {
72 public:
73 explicit SetRunDurationAction(Sprinkler *a_sprinkler) : sprinkler_(a_sprinkler) {}
74
75 TEMPLATABLE_VALUE(size_t, valve_number)
76 TEMPLATABLE_VALUE(uint32_t, valve_run_duration)
77
78 void play(const Ts &...x) override {
79 this->sprinkler_->set_valve_run_duration(this->valve_number_.optional_value(x...),
80 this->valve_run_duration_.optional_value(x...));
81 }
82
83 protected:
85};
86
87template<typename... Ts> class StartFromQueueAction : public Action<Ts...> {
88 public:
89 explicit StartFromQueueAction(Sprinkler *a_sprinkler) : sprinkler_(a_sprinkler) {}
90
91 void play(const Ts &...x) override { this->sprinkler_->start_from_queue(); }
92
93 protected:
95};
96
97template<typename... Ts> class StartFullCycleAction : public Action<Ts...> {
98 public:
99 explicit StartFullCycleAction(Sprinkler *a_sprinkler) : sprinkler_(a_sprinkler) {}
100
101 void play(const Ts &...x) override { this->sprinkler_->start_full_cycle(); }
102
103 protected:
105};
106
107template<typename... Ts> class StartSingleValveAction : public Action<Ts...> {
108 public:
109 explicit StartSingleValveAction(Sprinkler *a_sprinkler) : sprinkler_(a_sprinkler) {}
110
111 TEMPLATABLE_VALUE(size_t, valve_to_start)
112 TEMPLATABLE_VALUE(uint32_t, valve_run_duration)
113
114 void play(const Ts &...x) override {
115 this->sprinkler_->start_single_valve(this->valve_to_start_.optional_value(x...),
116 this->valve_run_duration_.optional_value(x...));
117 }
118
119 protected:
121};
122
123template<typename... Ts> class ShutdownAction : public Action<Ts...> {
124 public:
125 explicit ShutdownAction(Sprinkler *a_sprinkler) : sprinkler_(a_sprinkler) {}
126
127 void play(const Ts &...x) override { this->sprinkler_->shutdown(); }
128
129 protected:
131};
132
133template<typename... Ts> class NextValveAction : public Action<Ts...> {
134 public:
135 explicit NextValveAction(Sprinkler *a_sprinkler) : sprinkler_(a_sprinkler) {}
136
137 void play(const Ts &...x) override { this->sprinkler_->next_valve(); }
138
139 protected:
141};
142
143template<typename... Ts> class PreviousValveAction : public Action<Ts...> {
144 public:
145 explicit PreviousValveAction(Sprinkler *a_sprinkler) : sprinkler_(a_sprinkler) {}
146
147 void play(const Ts &...x) override { this->sprinkler_->previous_valve(); }
148
149 protected:
151};
152
153template<typename... Ts> class PauseAction : public Action<Ts...> {
154 public:
155 explicit PauseAction(Sprinkler *a_sprinkler) : sprinkler_(a_sprinkler) {}
156
157 void play(const Ts &...x) override { this->sprinkler_->pause(); }
158
159 protected:
161};
162
163template<typename... Ts> class ResumeAction : public Action<Ts...> {
164 public:
165 explicit ResumeAction(Sprinkler *a_sprinkler) : sprinkler_(a_sprinkler) {}
166
167 void play(const Ts &...x) override { this->sprinkler_->resume(); }
168
169 protected:
171};
172
173template<typename... Ts> class ResumeOrStartAction : public Action<Ts...> {
174 public:
175 explicit ResumeOrStartAction(Sprinkler *a_sprinkler) : sprinkler_(a_sprinkler) {}
176
177 void play(const Ts &...x) override { this->sprinkler_->resume_or_start_full_cycle(); }
178
179 protected:
181};
182
183} // namespace esphome::sprinkler
virtual void play(const Ts &...x)=0
void play(const Ts &...x) override
Definition automation.h:53
ClearQueuedValvesAction(Sprinkler *a_sprinkler)
Definition automation.h:51
void play(const Ts &...x) override
Definition automation.h:137
NextValveAction(Sprinkler *a_sprinkler)
Definition automation.h:135
void play(const Ts &...x) override
Definition automation.h:157
PauseAction(Sprinkler *a_sprinkler)
Definition automation.h:155
PreviousValveAction(Sprinkler *a_sprinkler)
Definition automation.h:145
void play(const Ts &...x) override
Definition automation.h:147
valve_run_duration void play(const Ts &...x) override
Definition automation.h:40
QueueValveAction(Sprinkler *a_sprinkler)
Definition automation.h:35
TEMPLATABLE_VALUE(size_t, valve_number) TEMPLATABLE_VALUE(uint32_t
void play(const Ts &...x) override
Definition automation.h:167
ResumeAction(Sprinkler *a_sprinkler)
Definition automation.h:165
void play(const Ts &...x) override
Definition automation.h:177
ResumeOrStartAction(Sprinkler *a_sprinkler)
Definition automation.h:175
SetDividerAction(Sprinkler *a_sprinkler)
Definition automation.h:11
TEMPLATABLE_VALUE(uint32_t, divider) void play(const Ts &...x) override
Definition automation.h:13
TEMPLATABLE_VALUE(float, multiplier) void play(const Ts &...x) override
Definition automation.h:25
SetMultiplierAction(Sprinkler *a_sprinkler)
Definition automation.h:23
TEMPLATABLE_VALUE(uint32_t, repeat) void play(const Ts &...x) override
Definition automation.h:63
SetRepeatAction(Sprinkler *a_sprinkler)
Definition automation.h:61
SetRunDurationAction(Sprinkler *a_sprinkler)
Definition automation.h:73
TEMPLATABLE_VALUE(size_t, valve_number) TEMPLATABLE_VALUE(uint32_t
valve_run_duration void play(const Ts &...x) override
Definition automation.h:78
void play(const Ts &...x) override
Definition automation.h:127
ShutdownAction(Sprinkler *a_sprinkler)
Definition automation.h:125
void resume()
resumes a cycle that was suspended using pause()
void next_valve()
advances to the next valve (numerically)
void queue_valve(optional< size_t > valve_number, optional< uint32_t > run_duration)
adds a valve into the queue.
void set_valve_run_duration(optional< size_t > valve_number, optional< uint32_t > run_duration)
set how long the valve should remain on/open. run_duration is time in seconds
void set_repeat(optional< uint32_t > repeat)
set the number of times to repeat a full cycle
void start_full_cycle()
starts a full cycle of all enabled valves and enables auto_advance.
void shutdown(bool clear_queue=false)
turns off all valves, effectively shutting down the system.
void previous_valve()
advances to the previous valve (numerically)
void clear_queued_valves()
clears/removes all valves from the queue
void resume_or_start_full_cycle()
if a cycle was suspended using pause(), resumes it. otherwise calls start_full_cycle()
void start_single_valve(optional< size_t > valve_number, optional< uint32_t > run_duration=nullopt)
activates a single valve and disables auto_advance.
void set_divider(optional< uint32_t > divider)
sets the multiplier value to '1 / divider' and sets repeat value to divider
void pause()
same as shutdown(), but also stores active_valve() and time_remaining() allowing resume() to continue...
void start_from_queue()
starts the controller from the first valve in the queue and disables auto_advance.
void set_multiplier(optional< float > multiplier)
value multiplied by configured run times – used to extend or shorten the cycle
void play(const Ts &...x) override
Definition automation.h:91
StartFromQueueAction(Sprinkler *a_sprinkler)
Definition automation.h:89
StartFullCycleAction(Sprinkler *a_sprinkler)
Definition automation.h:99
void play(const Ts &...x) override
Definition automation.h:101
TEMPLATABLE_VALUE(size_t, valve_to_start) TEMPLATABLE_VALUE(uint32_t
StartSingleValveAction(Sprinkler *a_sprinkler)
Definition automation.h:109
valve_run_duration void play(const Ts &...x) override
Definition automation.h:114
uint16_t x
Definition tt21100.cpp:5