ESPHome 2026.3.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, "'%s' >> %s (was %s)", this->get_name().c_str(),
36 LOG_STR_ARG(alarm_control_panel_state_to_string(prev_state)));
37 this->current_state_ = state;
38 // Single state callback - triggers check get_state() for specific states
39 this->state_callback_.call();
40#if defined(USE_ALARM_CONTROL_PANEL) && defined(USE_CONTROLLER_REGISTRY)
42#endif
43 // Cleared fires when leaving TRIGGERED state
44 if (prev_state == ACP_STATE_TRIGGERED) {
45 this->cleared_callback_.call();
46 }
47 if (state == this->desired_state_) {
48 // only store when in the desired state
49 this->pref_.save(&state);
50 }
51 }
52}
53
54void AlarmControlPanel::add_on_state_callback(std::function<void()> &&callback) {
55 this->state_callback_.add(std::move(callback));
56}
57
58void AlarmControlPanel::add_on_cleared_callback(std::function<void()> &&callback) {
59 this->cleared_callback_.add(std::move(callback));
60}
61
62void AlarmControlPanel::add_on_chime_callback(std::function<void()> &&callback) {
63 this->chime_callback_.add(std::move(callback));
64}
65
66void AlarmControlPanel::add_on_ready_callback(std::function<void()> &&callback) {
67 this->ready_callback_.add(std::move(callback));
68}
69
71 const char *code) {
72 auto call = this->make_call();
73 (call.*arm_method)();
74 if (code != nullptr)
75 call.set_code(code);
76 call.perform();
77}
78
80
82
84
88
92
94
95} // 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
const StringRef & get_name() const
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(const char *code=nullptr)
arm the alarm in vacation mode
void arm_custom_bypass(const char *code=nullptr)
arm the alarm in custom bypass mode
void arm_home(const char *code=nullptr)
arm the alarm in home mode
void arm_with_code_(AlarmControlPanelCall &(AlarmControlPanelCall::*arm_method)(), const char *code)
void disarm(const char *code=nullptr)
disarm the alarm
void publish_state(AlarmControlPanelState state)
Set the state of the alarm_control_panel.
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.
bool state
Definition fan.h:2
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