mirror of
https://github.com/esphome/esphome.git
synced 2026-09-28 07:20:24 +00:00
[deep_sleep] Use register_apply_action for deep_sleep.prevent and deep_sleep.allow (#19607)
This commit is contained in:
@@ -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,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
|
||||
|
||||
|
||||
Reference in New Issue
Block a user