mirror of
https://github.com/esphome/esphome.git
synced 2026-09-29 07:50:21 +00:00
[sprinkler] Use register_apply_action for the seven keyless controller actions (#19617)
This commit is contained in:
@@ -66,19 +66,10 @@ SprinklerControllerSwitch = sprinkler_ns.class_(
|
||||
"SprinklerControllerSwitch", switch.Switch, cg.Component
|
||||
)
|
||||
|
||||
ClearQueuedValvesAction = sprinkler_ns.class_(
|
||||
"ClearQueuedValvesAction", automation.Action
|
||||
)
|
||||
StartFromQueueAction = sprinkler_ns.class_("StartFromQueueAction", automation.Action)
|
||||
StartFullCycleAction = sprinkler_ns.class_("StartFullCycleAction", automation.Action)
|
||||
StartSingleValveAction = sprinkler_ns.class_(
|
||||
"StartSingleValveAction", automation.Action
|
||||
)
|
||||
ShutdownAction = sprinkler_ns.class_("ShutdownAction", automation.Action)
|
||||
NextValveAction = sprinkler_ns.class_("NextValveAction", automation.Action)
|
||||
PreviousValveAction = sprinkler_ns.class_("PreviousValveAction", automation.Action)
|
||||
PauseAction = sprinkler_ns.class_("PauseAction", automation.Action)
|
||||
ResumeAction = sprinkler_ns.class_("ResumeAction", automation.Action)
|
||||
ResumeOrStartAction = sprinkler_ns.class_("ResumeOrStartAction", automation.Action)
|
||||
|
||||
|
||||
@@ -415,51 +406,61 @@ CONFIG_SCHEMA = cv.All(
|
||||
|
||||
_VALVE_AND_DURATION = ((CONF_VALVE_NUMBER, cg.size_t), (CONF_RUN_DURATION, cg.uint32))
|
||||
|
||||
automation.register_apply_action(
|
||||
"sprinkler.set_divider",
|
||||
SPRINKLER_ACTION_SET_DIVIDER_SCHEMA,
|
||||
automation.ApplyField(CONF_DIVIDER, "set_divider", cg.uint32),
|
||||
)
|
||||
|
||||
automation.register_apply_action(
|
||||
"sprinkler.set_multiplier",
|
||||
SPRINKLER_ACTION_SET_MULTIPLIER_SCHEMA,
|
||||
automation.ApplyField(CONF_MULTIPLIER, "set_multiplier", cg.float_),
|
||||
)
|
||||
|
||||
automation.register_apply_action(
|
||||
"sprinkler.queue_valve",
|
||||
SPRINKLER_ACTION_QUEUE_VALVE_SCHEMA,
|
||||
automation.ApplyCall("queue_valve({}, {})", _VALVE_AND_DURATION),
|
||||
)
|
||||
|
||||
automation.register_apply_action(
|
||||
"sprinkler.set_repeat",
|
||||
SPRINKLER_ACTION_REPEAT_SCHEMA,
|
||||
automation.ApplyField(CONF_REPEAT, "set_repeat", cg.uint32),
|
||||
)
|
||||
|
||||
automation.register_apply_action(
|
||||
"sprinkler.set_valve_run_duration",
|
||||
SPRINKLER_ACTION_SET_RUN_DURATION_SCHEMA,
|
||||
automation.ApplyCall("set_valve_run_duration({}, {})", _VALVE_AND_DURATION),
|
||||
)
|
||||
|
||||
|
||||
automation.register_simple_action(
|
||||
"sprinkler.start_from_queue",
|
||||
StartFromQueueAction,
|
||||
SPRINKLER_ACTION_SCHEMA,
|
||||
synchronous=True,
|
||||
)
|
||||
|
||||
|
||||
automation.register_simple_action(
|
||||
"sprinkler.start_full_cycle",
|
||||
StartFullCycleAction,
|
||||
SPRINKLER_ACTION_SCHEMA,
|
||||
synchronous=True,
|
||||
)
|
||||
for _name, _schema, _apply in (
|
||||
(
|
||||
"sprinkler.set_divider",
|
||||
SPRINKLER_ACTION_SET_DIVIDER_SCHEMA,
|
||||
automation.ApplyField(CONF_DIVIDER, "set_divider", cg.uint32),
|
||||
),
|
||||
(
|
||||
"sprinkler.set_multiplier",
|
||||
SPRINKLER_ACTION_SET_MULTIPLIER_SCHEMA,
|
||||
automation.ApplyField(CONF_MULTIPLIER, "set_multiplier", cg.float_),
|
||||
),
|
||||
(
|
||||
"sprinkler.queue_valve",
|
||||
SPRINKLER_ACTION_QUEUE_VALVE_SCHEMA,
|
||||
automation.ApplyCall("queue_valve({}, {})", _VALVE_AND_DURATION),
|
||||
),
|
||||
(
|
||||
"sprinkler.set_repeat",
|
||||
SPRINKLER_ACTION_REPEAT_SCHEMA,
|
||||
automation.ApplyField(CONF_REPEAT, "set_repeat", cg.uint32),
|
||||
),
|
||||
(
|
||||
"sprinkler.set_valve_run_duration",
|
||||
SPRINKLER_ACTION_SET_RUN_DURATION_SCHEMA,
|
||||
automation.ApplyCall("set_valve_run_duration({}, {})", _VALVE_AND_DURATION),
|
||||
),
|
||||
(
|
||||
"sprinkler.start_from_queue",
|
||||
SPRINKLER_ACTION_SCHEMA,
|
||||
automation.ApplyCall("start_from_queue()"),
|
||||
),
|
||||
(
|
||||
"sprinkler.start_full_cycle",
|
||||
SPRINKLER_ACTION_SCHEMA,
|
||||
automation.ApplyCall("start_full_cycle()"),
|
||||
),
|
||||
(
|
||||
"sprinkler.clear_queued_valves",
|
||||
SPRINKLER_ACTION_SCHEMA,
|
||||
automation.ApplyCall("clear_queued_valves()"),
|
||||
),
|
||||
(
|
||||
"sprinkler.next_valve",
|
||||
SPRINKLER_ACTION_SCHEMA,
|
||||
automation.ApplyCall("next_valve()"),
|
||||
),
|
||||
(
|
||||
"sprinkler.previous_valve",
|
||||
SPRINKLER_ACTION_SCHEMA,
|
||||
automation.ApplyCall("previous_valve()"),
|
||||
),
|
||||
("sprinkler.pause", SPRINKLER_ACTION_SCHEMA, automation.ApplyCall("pause()")),
|
||||
("sprinkler.resume", SPRINKLER_ACTION_SCHEMA, automation.ApplyCall("resume()")),
|
||||
):
|
||||
automation.register_apply_action(_name, _schema, _apply)
|
||||
|
||||
|
||||
@automation.register_action(
|
||||
@@ -479,46 +480,6 @@ async def sprinkler_start_single_valve_to_code(config, action_id, template_arg,
|
||||
return var
|
||||
|
||||
|
||||
automation.register_simple_action(
|
||||
"sprinkler.clear_queued_valves",
|
||||
ClearQueuedValvesAction,
|
||||
SPRINKLER_ACTION_SCHEMA,
|
||||
synchronous=True,
|
||||
)
|
||||
|
||||
|
||||
automation.register_simple_action(
|
||||
"sprinkler.next_valve",
|
||||
NextValveAction,
|
||||
SPRINKLER_ACTION_SCHEMA,
|
||||
synchronous=True,
|
||||
)
|
||||
|
||||
|
||||
automation.register_simple_action(
|
||||
"sprinkler.previous_valve",
|
||||
PreviousValveAction,
|
||||
SPRINKLER_ACTION_SCHEMA,
|
||||
synchronous=True,
|
||||
)
|
||||
|
||||
|
||||
automation.register_simple_action(
|
||||
"sprinkler.pause",
|
||||
PauseAction,
|
||||
SPRINKLER_ACTION_SCHEMA,
|
||||
synchronous=True,
|
||||
)
|
||||
|
||||
|
||||
automation.register_simple_action(
|
||||
"sprinkler.resume",
|
||||
ResumeAction,
|
||||
SPRINKLER_ACTION_SCHEMA,
|
||||
synchronous=True,
|
||||
)
|
||||
|
||||
|
||||
automation.register_simple_action(
|
||||
"sprinkler.resume_or_start_full_cycle",
|
||||
ResumeOrStartAction,
|
||||
|
||||
@@ -6,36 +6,6 @@
|
||||
|
||||
namespace esphome::sprinkler {
|
||||
|
||||
template<typename... Ts> class ClearQueuedValvesAction final : public Action<Ts...> {
|
||||
public:
|
||||
explicit ClearQueuedValvesAction(Sprinkler *a_sprinkler) : sprinkler_(a_sprinkler) {}
|
||||
|
||||
void play(const Ts &...x) override { this->sprinkler_->clear_queued_valves(); }
|
||||
|
||||
protected:
|
||||
Sprinkler *sprinkler_;
|
||||
};
|
||||
|
||||
template<typename... Ts> class StartFromQueueAction final : public Action<Ts...> {
|
||||
public:
|
||||
explicit StartFromQueueAction(Sprinkler *a_sprinkler) : sprinkler_(a_sprinkler) {}
|
||||
|
||||
void play(const Ts &...x) override { this->sprinkler_->start_from_queue(); }
|
||||
|
||||
protected:
|
||||
Sprinkler *sprinkler_;
|
||||
};
|
||||
|
||||
template<typename... Ts> class StartFullCycleAction final : public Action<Ts...> {
|
||||
public:
|
||||
explicit StartFullCycleAction(Sprinkler *a_sprinkler) : sprinkler_(a_sprinkler) {}
|
||||
|
||||
void play(const Ts &...x) override { this->sprinkler_->start_full_cycle(); }
|
||||
|
||||
protected:
|
||||
Sprinkler *sprinkler_;
|
||||
};
|
||||
|
||||
template<typename... Ts> class StartSingleValveAction final : public Action<Ts...> {
|
||||
public:
|
||||
explicit StartSingleValveAction(Sprinkler *a_sprinkler) : sprinkler_(a_sprinkler) {}
|
||||
@@ -64,46 +34,6 @@ template<typename... Ts> class ShutdownAction final : public Action<Ts...> {
|
||||
Sprinkler *sprinkler_;
|
||||
};
|
||||
|
||||
template<typename... Ts> class NextValveAction final : public Action<Ts...> {
|
||||
public:
|
||||
explicit NextValveAction(Sprinkler *a_sprinkler) : sprinkler_(a_sprinkler) {}
|
||||
|
||||
void play(const Ts &...x) override { this->sprinkler_->next_valve(); }
|
||||
|
||||
protected:
|
||||
Sprinkler *sprinkler_;
|
||||
};
|
||||
|
||||
template<typename... Ts> class PreviousValveAction final : public Action<Ts...> {
|
||||
public:
|
||||
explicit PreviousValveAction(Sprinkler *a_sprinkler) : sprinkler_(a_sprinkler) {}
|
||||
|
||||
void play(const Ts &...x) override { this->sprinkler_->previous_valve(); }
|
||||
|
||||
protected:
|
||||
Sprinkler *sprinkler_;
|
||||
};
|
||||
|
||||
template<typename... Ts> class PauseAction final : public Action<Ts...> {
|
||||
public:
|
||||
explicit PauseAction(Sprinkler *a_sprinkler) : sprinkler_(a_sprinkler) {}
|
||||
|
||||
void play(const Ts &...x) override { this->sprinkler_->pause(); }
|
||||
|
||||
protected:
|
||||
Sprinkler *sprinkler_;
|
||||
};
|
||||
|
||||
template<typename... Ts> class ResumeAction final : public Action<Ts...> {
|
||||
public:
|
||||
explicit ResumeAction(Sprinkler *a_sprinkler) : sprinkler_(a_sprinkler) {}
|
||||
|
||||
void play(const Ts &...x) override { this->sprinkler_->resume(); }
|
||||
|
||||
protected:
|
||||
Sprinkler *sprinkler_;
|
||||
};
|
||||
|
||||
template<typename... Ts> class ResumeOrStartAction final : public Action<Ts...> {
|
||||
public:
|
||||
explicit ResumeOrStartAction(Sprinkler *a_sprinkler) : sprinkler_(a_sprinkler) {}
|
||||
|
||||
Reference in New Issue
Block a user