ESPHome 2026.1.0-dev
Loading...
Searching...
No Matches
automation.h
Go to the documentation of this file.
1
2#pragma once
5
7
9class StateTrigger : public Trigger<> {
10 public:
11 explicit StateTrigger(AlarmControlPanel *alarm_control_panel) {
12 alarm_control_panel->add_on_state_callback([this]() { this->trigger(); });
13 }
14};
15
17template<AlarmControlPanelState State> class StateEnterTrigger : public Trigger<> {
18 public:
19 explicit StateEnterTrigger(AlarmControlPanel *alarm_control_panel) : alarm_control_panel_(alarm_control_panel) {
20 alarm_control_panel->add_on_state_callback([this]() {
21 if (this->alarm_control_panel_->get_state() == State)
22 this->trigger();
23 });
24 }
25
26 protected:
28};
29
30// Type aliases for state-specific triggers
38
40class ClearedTrigger : public Trigger<> {
41 public:
42 explicit ClearedTrigger(AlarmControlPanel *alarm_control_panel) {
43 alarm_control_panel->add_on_cleared_callback([this]() { this->trigger(); });
44 }
45};
46
48class ChimeTrigger : public Trigger<> {
49 public:
50 explicit ChimeTrigger(AlarmControlPanel *alarm_control_panel) {
51 alarm_control_panel->add_on_chime_callback([this]() { this->trigger(); });
52 }
53};
54
56class ReadyTrigger : public Trigger<> {
57 public:
58 explicit ReadyTrigger(AlarmControlPanel *alarm_control_panel) {
59 alarm_control_panel->add_on_ready_callback([this]() { this->trigger(); });
60 }
61};
62
63template<typename... Ts> class ArmAwayAction : public Action<Ts...> {
64 public:
65 explicit ArmAwayAction(AlarmControlPanel *alarm_control_panel) : alarm_control_panel_(alarm_control_panel) {}
66
67 TEMPLATABLE_VALUE(std::string, code)
68
69 void play(const Ts &...x) override {
70 auto call = this->alarm_control_panel_->make_call();
71 auto code = this->code_.optional_value(x...);
72 if (code.has_value()) {
73 call.set_code(code.value());
74 }
75 call.arm_away();
76 call.perform();
77 }
78
79 protected:
81};
82
83template<typename... Ts> class ArmHomeAction : public Action<Ts...> {
84 public:
85 explicit ArmHomeAction(AlarmControlPanel *alarm_control_panel) : alarm_control_panel_(alarm_control_panel) {}
86
87 TEMPLATABLE_VALUE(std::string, code)
88
89 void play(const Ts &...x) override {
90 auto call = this->alarm_control_panel_->make_call();
91 auto code = this->code_.optional_value(x...);
92 if (code.has_value()) {
93 call.set_code(code.value());
94 }
95 call.arm_home();
96 call.perform();
97 }
98
99 protected:
101};
102
103template<typename... Ts> class ArmNightAction : public Action<Ts...> {
104 public:
105 explicit ArmNightAction(AlarmControlPanel *alarm_control_panel) : alarm_control_panel_(alarm_control_panel) {}
106
107 TEMPLATABLE_VALUE(std::string, code)
108
109 void play(const Ts &...x) override {
110 auto call = this->alarm_control_panel_->make_call();
111 auto code = this->code_.optional_value(x...);
112 if (code.has_value()) {
113 call.set_code(code.value());
114 }
115 call.arm_night();
116 call.perform();
117 }
118
119 protected:
121};
122
123template<typename... Ts> class DisarmAction : public Action<Ts...> {
124 public:
125 explicit DisarmAction(AlarmControlPanel *alarm_control_panel) : alarm_control_panel_(alarm_control_panel) {}
126
127 TEMPLATABLE_VALUE(std::string, code)
128
129 void play(const Ts &...x) override { this->alarm_control_panel_->disarm(this->code_.optional_value(x...)); }
130
131 protected:
133};
134
135template<typename... Ts> class PendingAction : public Action<Ts...> {
136 public:
137 explicit PendingAction(AlarmControlPanel *alarm_control_panel) : alarm_control_panel_(alarm_control_panel) {}
138
139 void play(const Ts &...x) override { this->alarm_control_panel_->make_call().pending().perform(); }
140
141 protected:
143};
144
145template<typename... Ts> class TriggeredAction : public Action<Ts...> {
146 public:
147 explicit TriggeredAction(AlarmControlPanel *alarm_control_panel) : alarm_control_panel_(alarm_control_panel) {}
148
149 void play(const Ts &...x) override { this->alarm_control_panel_->make_call().triggered().perform(); }
150
151 protected:
153};
154
155template<typename... Ts> class AlarmControlPanelCondition : public Condition<Ts...> {
156 public:
158 bool check(const Ts &...x) override {
159 return this->parent_->is_state_armed(this->parent_->get_state()) ||
161 }
162
163 protected:
165};
166
167} // namespace esphome::alarm_control_panel
virtual void play(const Ts &...x)=0
Base class for all automation conditions.
Definition automation.h:183
void trigger(const Ts &...x)
Definition automation.h:204
void add_on_state_callback(std::function< void()> &&callback)
Add a callback for when the state of the alarm_control_panel changes.
bool is_state_armed(AlarmControlPanelState state)
AlarmControlPanelState get_state() const
Get the state.
void disarm(optional< std::string > code=nullopt)
disarm the alarm
void add_on_ready_callback(std::function< void()> &&callback)
Add a callback for when a ready state changes.
void add_on_cleared_callback(std::function< void()> &&callback)
Add a callback for when the state of the alarm_control_panel clears from triggered.
void add_on_chime_callback(std::function< void()> &&callback)
Add a callback for when a chime zone goes from closed to open.
AlarmControlPanelCall make_call()
Make a AlarmControlPanelCall.
TEMPLATABLE_VALUE(std::string, code) void play(const Ts &...x) override
Definition automation.h:67
ArmAwayAction(AlarmControlPanel *alarm_control_panel)
Definition automation.h:65
ArmHomeAction(AlarmControlPanel *alarm_control_panel)
Definition automation.h:85
TEMPLATABLE_VALUE(std::string, code) void play(const Ts &...x) override
Definition automation.h:87
TEMPLATABLE_VALUE(std::string, code) void play(const Ts &...x) override
Definition automation.h:107
ArmNightAction(AlarmControlPanel *alarm_control_panel)
Definition automation.h:105
Trigger on chime event (zone opened while disarmed)
Definition automation.h:48
ChimeTrigger(AlarmControlPanel *alarm_control_panel)
Definition automation.h:50
Trigger when leaving TRIGGERED state (alarm cleared)
Definition automation.h:40
ClearedTrigger(AlarmControlPanel *alarm_control_panel)
Definition automation.h:42
TEMPLATABLE_VALUE(std::string, code) void play(const Ts &...x) override
Definition automation.h:127
DisarmAction(AlarmControlPanel *alarm_control_panel)
Definition automation.h:125
PendingAction(AlarmControlPanel *alarm_control_panel)
Definition automation.h:137
void play(const Ts &...x) override
Definition automation.h:139
Trigger on ready state change.
Definition automation.h:56
ReadyTrigger(AlarmControlPanel *alarm_control_panel)
Definition automation.h:58
Template trigger that fires when entering a specific state.
Definition automation.h:17
StateEnterTrigger(AlarmControlPanel *alarm_control_panel)
Definition automation.h:19
Trigger on any state change.
Definition automation.h:9
StateTrigger(AlarmControlPanel *alarm_control_panel)
Definition automation.h:11
TriggeredAction(AlarmControlPanel *alarm_control_panel)
Definition automation.h:147
void play(const Ts &...x) override
Definition automation.h:149
uint16_t x
Definition tt21100.cpp:5