[deep_sleep] Use register_apply_action for deep_sleep.prevent and deep_sleep.allow (#19607)

This commit is contained in:
J. Nick Koston
2026-09-25 10:26:57 -04:00
committed by GitHub
parent 3fb48e0bfa
commit 370d76d013
10 changed files with 20 additions and 44 deletions
+9 -31
View File
@@ -214,16 +214,6 @@ def _validate_sleep_duration(value: core.TimePeriod) -> core.TimePeriod:
deep_sleep_ns = cg.esphome_ns.namespace("deep_sleep")
DeepSleepComponent = deep_sleep_ns.class_("DeepSleepComponent", cg.Component)
EnterDeepSleepAction = deep_sleep_ns.class_("EnterDeepSleepAction", automation.Action)
PreventDeepSleepAction = deep_sleep_ns.class_(
"PreventDeepSleepAction",
automation.Action,
cg.Parented.template(DeepSleepComponent),
)
AllowDeepSleepAction = deep_sleep_ns.class_(
"AllowDeepSleepAction",
automation.Action,
cg.Parented.template(DeepSleepComponent),
)
WakeupPinMode = deep_sleep_ns.enum("WakeupPinMode")
WAKEUP_PIN_MODES = {
@@ -490,27 +480,15 @@ async def deep_sleep_enter_to_code(
return var
@automation.register_action(
"deep_sleep.prevent",
PreventDeepSleepAction,
automation.maybe_simple_id(DEEP_SLEEP_ACTION_SCHEMA),
synchronous=True,
)
@automation.register_action(
"deep_sleep.allow",
AllowDeepSleepAction,
automation.maybe_simple_id(DEEP_SLEEP_ACTION_SCHEMA),
synchronous=True,
)
async def deep_sleep_action_to_code(
config: ConfigType,
action_id: ID,
template_arg: cg.TemplateArguments,
args: TemplateArgsType,
) -> MockObj:
var = cg.new_Pvariable(action_id, template_arg)
await cg.register_parented(var, config[CONF_ID])
return var
for _name, _call in (
("deep_sleep.prevent", "prevent_deep_sleep()"),
("deep_sleep.allow", "allow_deep_sleep()"),
):
automation.register_apply_action(
_name,
automation.maybe_simple_id(DEEP_SLEEP_ACTION_SCHEMA),
automation.ApplyCall(_call),
)
FILTER_SOURCE_FILES = filter_source_files_from_platform(
@@ -121,8 +121,6 @@ class Ext1WakeTrigger : public Trigger<>, public Component {
template<typename... Ts> class EnterDeepSleepAction;
template<typename... Ts> class PreventDeepSleepAction;
/** This component allows setting up the node to go into deep sleep mode to conserve battery.
*
* To set this component up, first set *when* the deep sleep should trigger using set_run_cycles
@@ -298,15 +296,4 @@ template<typename... Ts> class EnterDeepSleepAction final : public Action<Ts...>
#endif
};
template<typename... Ts>
class PreventDeepSleepAction final : public Action<Ts...>, public Parented<DeepSleepComponent> {
public:
void play(const Ts &...x) override { this->parent_->prevent_deep_sleep(); }
};
template<typename... Ts> class AllowDeepSleepAction final : public Action<Ts...>, public Parented<DeepSleepComponent> {
public:
void play(const Ts &...x) override { this->parent_->allow_deep_sleep(); }
};
} // namespace esphome::deep_sleep
@@ -1,4 +1,5 @@
deep_sleep:
id: deep_sleep_1
run_duration:
default: 10s
gpio_wakeup_reason: 30s
@@ -1,4 +1,5 @@
deep_sleep:
id: deep_sleep_1
run_duration:
default: 10s
gpio_wakeup_reason: 30s
@@ -1,4 +1,5 @@
deep_sleep:
id: deep_sleep_1
run_duration:
default: 10s
gpio_wakeup_reason: 30s
+4
View File
@@ -4,6 +4,10 @@ esphome:
- deep_sleep.prevent
- delay: 1s
- deep_sleep.allow
- deep_sleep.prevent:
id: deep_sleep_1
- deep_sleep.allow:
id: deep_sleep_1
- if:
condition:
lambda: 'return false;'
@@ -6,6 +6,7 @@ packages:
deep_sleep: !include common.yaml
deep_sleep:
id: deep_sleep_1
run_duration: 10s
zephyr_ble_server:
@@ -1,4 +1,5 @@
deep_sleep:
id: deep_sleep_1
run_duration: 30s
sleep_duration: 12h
on_wake:
@@ -1,4 +1,5 @@
deep_sleep:
id: deep_sleep_1
run_duration: 10s
sleep_duration: 50s
on_wake:
@@ -1,4 +1,5 @@
deep_sleep:
id: deep_sleep_1
run_duration: 10s
sleep_duration: 50s