ESPHome 2026.5.0-dev
Loading...
Searching...
No Matches
automation.h
Go to the documentation of this file.
1
2#pragma once
5
7
12 void operator()(AlarmControlPanelState /*state*/) const { this->automation->trigger(); }
13};
14
17template<AlarmControlPanelState State> struct StateEnterForwarder {
20 if (state == State)
21 this->automation->trigger();
22 }
23};
24
25static_assert(sizeof(StateAnyForwarder) <= sizeof(void *));
26static_assert(std::is_trivially_copyable_v<StateAnyForwarder>);
27static_assert(sizeof(StateEnterForwarder<ACP_STATE_TRIGGERED>) <= sizeof(void *));
28static_assert(std::is_trivially_copyable_v<StateEnterForwarder<ACP_STATE_TRIGGERED>>);
29
30template<typename... Ts> class ArmAwayAction : public Action<Ts...> {
31 public:
32 explicit ArmAwayAction(AlarmControlPanel *alarm_control_panel) : alarm_control_panel_(alarm_control_panel) {}
33
34 TEMPLATABLE_VALUE(std::string, code)
35
36 void play(const Ts &...x) override { this->alarm_control_panel_->arm_away(this->code_.optional_value(x...)); }
37
38 protected:
40};
41
42template<typename... Ts> class ArmHomeAction : public Action<Ts...> {
43 public:
44 explicit ArmHomeAction(AlarmControlPanel *alarm_control_panel) : alarm_control_panel_(alarm_control_panel) {}
45
46 TEMPLATABLE_VALUE(std::string, code)
47
48 void play(const Ts &...x) override { this->alarm_control_panel_->arm_home(this->code_.optional_value(x...)); }
49
50 protected:
52};
53
54template<typename... Ts> class ArmNightAction : public Action<Ts...> {
55 public:
56 explicit ArmNightAction(AlarmControlPanel *alarm_control_panel) : alarm_control_panel_(alarm_control_panel) {}
57
58 TEMPLATABLE_VALUE(std::string, code)
59
60 void play(const Ts &...x) override { this->alarm_control_panel_->arm_night(this->code_.optional_value(x...)); }
61
62 protected:
64};
65
66template<typename... Ts> class DisarmAction : public Action<Ts...> {
67 public:
68 explicit DisarmAction(AlarmControlPanel *alarm_control_panel) : alarm_control_panel_(alarm_control_panel) {}
69
70 TEMPLATABLE_VALUE(std::string, code)
71
72 void play(const Ts &...x) override { this->alarm_control_panel_->disarm(this->code_.optional_value(x...)); }
73
74 protected:
76};
77
78template<typename... Ts> class PendingAction : public Action<Ts...> {
79 public:
80 explicit PendingAction(AlarmControlPanel *alarm_control_panel) : alarm_control_panel_(alarm_control_panel) {}
81
82 void play(const Ts &...x) override { this->alarm_control_panel_->make_call().pending().perform(); }
83
84 protected:
86};
87
88template<typename... Ts> class TriggeredAction : public Action<Ts...> {
89 public:
90 explicit TriggeredAction(AlarmControlPanel *alarm_control_panel) : alarm_control_panel_(alarm_control_panel) {}
91
92 void play(const Ts &...x) override { this->alarm_control_panel_->make_call().triggered().perform(); }
93
94 protected:
96};
97
98template<typename... Ts> class AlarmControlPanelCondition : public Condition<Ts...> {
99 public:
101 bool check(const Ts &...x) override {
102 return this->parent_->is_state_armed(this->parent_->get_state()) ||
104 }
105
106 protected:
108};
109
110} // namespace esphome::alarm_control_panel
virtual void play(const Ts &...x)=0
void trigger(const Ts &...x) ESPHOME_ALWAYS_INLINE
Definition automation.h:642
Base class for all automation conditions.
Definition automation.h:459
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 arm_night(const char *code=nullptr)
arm the alarm in night mode
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:34
ArmAwayAction(AlarmControlPanel *alarm_control_panel)
Definition automation.h:32
ArmHomeAction(AlarmControlPanel *alarm_control_panel)
Definition automation.h:44
TEMPLATABLE_VALUE(std::string, code) void play(const Ts &...x) override
Definition automation.h:46
TEMPLATABLE_VALUE(std::string, code) void play(const Ts &...x) override
Definition automation.h:58
ArmNightAction(AlarmControlPanel *alarm_control_panel)
Definition automation.h:56
TEMPLATABLE_VALUE(std::string, code) void play(const Ts &...x) override
Definition automation.h:70
DisarmAction(AlarmControlPanel *alarm_control_panel)
Definition automation.h:68
PendingAction(AlarmControlPanel *alarm_control_panel)
Definition automation.h:80
void play(const Ts &...x) override
Definition automation.h:82
TriggeredAction(AlarmControlPanel *alarm_control_panel)
Definition automation.h:90
void play(const Ts &...x) override
Definition automation.h:92
bool state
Definition fan.h:2
Callback forwarder that triggers an Automation<> on any state change.
Definition automation.h:10
void operator()(AlarmControlPanelState) const
Definition automation.h:12
Callback forwarder that triggers an Automation<> only when the alarm enters a specific state.
Definition automation.h:17
void operator()(AlarmControlPanelState state) const
Definition automation.h:19
uint16_t x
Definition tt21100.cpp:5