mirror of
https://github.com/esphome/esphome.git
synced 2026-10-02 09:20:22 +00:00
[alarm_control_panel] Use register_apply_action for pending and triggered, drop the chime and ready actions that had no class (#19627)
This commit is contained in:
@@ -41,10 +41,6 @@ StateAnyForwarder = alarm_control_panel_ns.class_("StateAnyForwarder")
|
|||||||
StateEnterForwarder = alarm_control_panel_ns.class_("StateEnterForwarder")
|
StateEnterForwarder = alarm_control_panel_ns.class_("StateEnterForwarder")
|
||||||
AlarmControlPanelState = alarm_control_panel_ns.enum("AlarmControlPanelState")
|
AlarmControlPanelState = alarm_control_panel_ns.enum("AlarmControlPanelState")
|
||||||
|
|
||||||
PendingAction = alarm_control_panel_ns.class_("PendingAction", automation.Action)
|
|
||||||
TriggeredAction = alarm_control_panel_ns.class_("TriggeredAction", automation.Action)
|
|
||||||
ChimeAction = alarm_control_panel_ns.class_("ChimeAction", automation.Action)
|
|
||||||
ReadyAction = alarm_control_panel_ns.class_("ReadyAction", automation.Action)
|
|
||||||
|
|
||||||
AlarmControlPanelCondition = alarm_control_panel_ns.class_(
|
AlarmControlPanelCondition = alarm_control_panel_ns.class_(
|
||||||
"AlarmControlPanelCondition", automation.Condition
|
"AlarmControlPanelCondition", automation.Condition
|
||||||
@@ -208,36 +204,16 @@ for _name, _arm in (
|
|||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
automation.register_simple_action(
|
for _name, _call in (
|
||||||
"alarm_control_panel.pending",
|
("alarm_control_panel.pending", "pending()"),
|
||||||
PendingAction,
|
("alarm_control_panel.triggered", "triggered()"),
|
||||||
ALARM_CONTROL_PANEL_ACTION_SCHEMA,
|
):
|
||||||
synchronous=True,
|
automation.register_apply_action(
|
||||||
)
|
_name,
|
||||||
|
ALARM_CONTROL_PANEL_ACTION_SCHEMA,
|
||||||
|
automation.ApplyCall(_call),
|
||||||
automation.register_simple_action(
|
call="make_call",
|
||||||
"alarm_control_panel.triggered",
|
)
|
||||||
TriggeredAction,
|
|
||||||
ALARM_CONTROL_PANEL_ACTION_SCHEMA,
|
|
||||||
synchronous=True,
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
automation.register_simple_action(
|
|
||||||
"alarm_control_panel.chime",
|
|
||||||
ChimeAction,
|
|
||||||
ALARM_CONTROL_PANEL_ACTION_SCHEMA,
|
|
||||||
synchronous=True,
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
automation.register_simple_action(
|
|
||||||
"alarm_control_panel.ready",
|
|
||||||
ReadyAction,
|
|
||||||
ALARM_CONTROL_PANEL_ACTION_SCHEMA,
|
|
||||||
synchronous=True,
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
automation.register_simple_condition(
|
automation.register_simple_condition(
|
||||||
|
|||||||
@@ -27,26 +27,6 @@ static_assert(std::is_trivially_copyable_v<StateAnyForwarder>);
|
|||||||
static_assert(sizeof(StateEnterForwarder<ACP_STATE_TRIGGERED>) <= sizeof(void *));
|
static_assert(sizeof(StateEnterForwarder<ACP_STATE_TRIGGERED>) <= sizeof(void *));
|
||||||
static_assert(std::is_trivially_copyable_v<StateEnterForwarder<ACP_STATE_TRIGGERED>>);
|
static_assert(std::is_trivially_copyable_v<StateEnterForwarder<ACP_STATE_TRIGGERED>>);
|
||||||
|
|
||||||
template<typename... Ts> class PendingAction final : public Action<Ts...> {
|
|
||||||
public:
|
|
||||||
explicit PendingAction(AlarmControlPanel *alarm_control_panel) : alarm_control_panel_(alarm_control_panel) {}
|
|
||||||
|
|
||||||
void play(const Ts &...x) override { this->alarm_control_panel_->make_call().pending().perform(); }
|
|
||||||
|
|
||||||
protected:
|
|
||||||
AlarmControlPanel *alarm_control_panel_;
|
|
||||||
};
|
|
||||||
|
|
||||||
template<typename... Ts> class TriggeredAction final : public Action<Ts...> {
|
|
||||||
public:
|
|
||||||
explicit TriggeredAction(AlarmControlPanel *alarm_control_panel) : alarm_control_panel_(alarm_control_panel) {}
|
|
||||||
|
|
||||||
void play(const Ts &...x) override { this->alarm_control_panel_->make_call().triggered().perform(); }
|
|
||||||
|
|
||||||
protected:
|
|
||||||
AlarmControlPanel *alarm_control_panel_;
|
|
||||||
};
|
|
||||||
|
|
||||||
template<typename... Ts> class AlarmControlPanelCondition final : public Condition<Ts...> {
|
template<typename... Ts> class AlarmControlPanelCondition final : public Condition<Ts...> {
|
||||||
public:
|
public:
|
||||||
AlarmControlPanelCondition(AlarmControlPanel *parent) : parent_(parent) {}
|
AlarmControlPanelCondition(AlarmControlPanel *parent) : parent_(parent) {}
|
||||||
|
|||||||
@@ -0,0 +1,6 @@
|
|||||||
|
button:
|
||||||
|
- platform: template
|
||||||
|
name: Alarm Calls
|
||||||
|
on_press:
|
||||||
|
- alarm_control_panel.pending: alarmcontrolpanel1
|
||||||
|
- alarm_control_panel.triggered: alarmcontrolpanel1
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
packages:
|
||||||
|
alarm_control_panel: !include common.yaml
|
||||||
|
actions: !include common-actions.yaml
|
||||||
Reference in New Issue
Block a user