ESPHome 2026.1.0-dev
Loading...
Searching...
No Matches
alarm_control_panel.cpp
Go to the documentation of this file.
4
5#include <utility>
6
9#include "esphome/core/log.h"
10
12
13static const char *const TAG = "alarm_control_panel";
14
16
18 switch (state) {
24 return true;
25 default:
26 return false;
27 }
28};
29
31 this->last_update_ = millis();
32 if (state != this->current_state_) {
33 auto prev_state = this->current_state_;
34 ESP_LOGD(TAG, "Set state to: %s, previous: %s", LOG_STR_ARG(alarm_control_panel_state_to_string(state)),
35 LOG_STR_ARG(alarm_control_panel_state_to_string(prev_state)));
36 this->current_state_ = state;
37 // Single state callback - triggers check get_state() for specific states
38 this->state_callback_.call();
39#if defined(USE_ALARM_CONTROL_PANEL) && defined(USE_CONTROLLER_REGISTRY)
41#endif
42 // Cleared fires when leaving TRIGGERED state
43 if (prev_state == ACP_STATE_TRIGGERED) {
44 this->cleared_callback_.call();
45 }
46 if (state == this->desired_state_) {
47 // only store when in the desired state
48 this->pref_.save(&state);
49 }
50 }
51}
52
53void AlarmControlPanel::add_on_state_callback(std::function<void()> &&callback) {
54 this->state_callback_.add(std::move(callback));
55}
56
57void AlarmControlPanel::add_on_cleared_callback(std::function<void()> &&callback) {
58 this->cleared_callback_.add(std::move(callback));
59}
60
61void AlarmControlPanel::add_on_chime_callback(std::function<void()> &&callback) {
62 this->chime_callback_.add(std::move(callback));
63}
64
65void AlarmControlPanel::add_on_ready_callback(std::function<void()> &&callback) {
66 this->ready_callback_.add(std::move(callback));
67}
68
70 auto call = this->make_call();
71 call.arm_away();
72 if (code.has_value())
73 call.set_code(code.value());
74 call.perform();
75}
76
78 auto call = this->make_call();
79 call.arm_home();
80 if (code.has_value())
81 call.set_code(code.value());
82 call.perform();
83}
84
86 auto call = this->make_call();
87 call.arm_night();
88 if (code.has_value())
89 call.set_code(code.value());
90 call.perform();
91}
92
94 auto call = this->make_call();
95 call.arm_vacation();
96 if (code.has_value())
97 call.set_code(code.value());
98 call.perform();
99}
100
102 auto call = this->make_call();
103 call.arm_custom_bypass();
104 if (code.has_value())
105 call.set_code(code.value());
106 call.perform();
107}
108
110 auto call = this->make_call();
111 call.disarm();
112 if (code.has_value())
113 call.set_code(code.value());
114 call.perform();
115}
116
117} // namespace esphome::alarm_control_panel
static void notify_alarm_control_panel_update(alarm_control_panel::AlarmControlPanel *obj)
bool save(const T *src)
Definition preferences.h:21
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_vacation(optional< std::string > code=nullopt)
arm the alarm in vacation mode
void arm_home(optional< std::string > code=nullopt)
arm the alarm in home mode
void arm_away(optional< std::string > code=nullopt)
arm the alarm in away mode
void arm_night(optional< std::string > code=nullopt)
arm the alarm in night mode
void arm_custom_bypass(optional< std::string > code=nullopt)
arm the alarm in custom bypass mode
void publish_state(AlarmControlPanelState state)
Set the state of the alarm_control_panel.
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.
bool has_value() const
Definition optional.h:92
value_type const & value() const
Definition optional.h:94
bool state
Definition fan.h:0
const LogString * alarm_control_panel_state_to_string(AlarmControlPanelState state)
Returns a string representation of the state.
uint32_t IRAM_ATTR HOT millis()
Definition core.cpp:25