ESPHome 2026.2.4
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 { this->alarm_control_panel_->arm_away(this->code_.optional_value(x...)); }
70
71 protected:
73};
74
75template<typename... Ts> class ArmHomeAction : public Action<Ts...> {
76 public:
77 explicit ArmHomeAction(AlarmControlPanel *alarm_control_panel) : alarm_control_panel_(alarm_control_panel) {}
78
79 TEMPLATABLE_VALUE(std::string, code)
80
81 void play(const Ts &...x) override { this->alarm_control_panel_->arm_home(this->code_.optional_value(x...)); }
82
83 protected:
85};
86
87template<typename... Ts> class ArmNightAction : public Action<Ts...> {
88 public:
89 explicit ArmNightAction(AlarmControlPanel *alarm_control_panel) : alarm_control_panel_(alarm_control_panel) {}
90
91 TEMPLATABLE_VALUE(std::string, code)
92
93 void play(const Ts &...x) override { this->alarm_control_panel_->arm_night(this->code_.optional_value(x...)); }
94
95 protected:
97};
98
99template<typename... Ts> class DisarmAction : public Action<Ts...> {
100 public:
101 explicit DisarmAction(AlarmControlPanel *alarm_control_panel) : alarm_control_panel_(alarm_control_panel) {}
102
103 TEMPLATABLE_VALUE(std::string, code)
104
105 void play(const Ts &...x) override { this->alarm_control_panel_->disarm(this->code_.optional_value(x...)); }
106
107 protected:
109};
110
111template<typename... Ts> class PendingAction : public Action<Ts...> {
112 public:
113 explicit PendingAction(AlarmControlPanel *alarm_control_panel) : alarm_control_panel_(alarm_control_panel) {}
114
115 void play(const Ts &...x) override { this->alarm_control_panel_->make_call().pending().perform(); }
116
117 protected:
119};
120
121template<typename... Ts> class TriggeredAction : public Action<Ts...> {
122 public:
123 explicit TriggeredAction(AlarmControlPanel *alarm_control_panel) : alarm_control_panel_(alarm_control_panel) {}
124
125 void play(const Ts &...x) override { this->alarm_control_panel_->make_call().triggered().perform(); }
126
127 protected:
129};
130
131template<typename... Ts> class AlarmControlPanelCondition : public Condition<Ts...> {
132 public:
134 bool check(const Ts &...x) override {
135 return this->parent_->is_state_armed(this->parent_->get_state()) ||
137 }
138
139 protected:
141};
142
143} // namespace esphome::alarm_control_panel
virtual void play(const Ts &...x)=0
Base class for all automation conditions.
Definition automation.h:258
void trigger(const Ts &...x)
Definition automation.h:279
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)
void arm_home(const char *code=nullptr)
arm the alarm in home mode
AlarmControlPanelState get_state() const
Get the state.
void disarm(const char *code=nullptr)
disarm the alarm
void add_on_ready_callback(std::function< void()> &&callback)
Add a callback for when a ready state changes.
void arm_night(const char *code=nullptr)
arm the alarm in night mode
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.
void arm_away(const char *code=nullptr)
arm the alarm in away mode
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:77
TEMPLATABLE_VALUE(std::string, code) void play(const Ts &...x) override
Definition automation.h:79
TEMPLATABLE_VALUE(std::string, code) void play(const Ts &...x) override
Definition automation.h:91
ArmNightAction(AlarmControlPanel *alarm_control_panel)
Definition automation.h:89
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:103
DisarmAction(AlarmControlPanel *alarm_control_panel)
Definition automation.h:101
PendingAction(AlarmControlPanel *alarm_control_panel)
Definition automation.h:113
void play(const Ts &...x) override
Definition automation.h:115
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:123
void play(const Ts &...x) override
Definition automation.h:125
uint16_t x
Definition tt21100.cpp:5