From 029014d9d6e29690781cbe82505ea1ade3b2e0bb Mon Sep 17 00:00:00 2001 From: RoboMagus <68224306+RoboMagus@users.noreply.github.com> Date: Wed, 10 Aug 2022 03:10:49 +0200 Subject: [PATCH] Add priority to on_shutdown trigger (#3644) --- esphome/core/base_automation.h | 5 +++++ esphome/core/config.py | 3 ++- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/esphome/core/base_automation.h b/esphome/core/base_automation.h index e87a4a2765..6ac6e596c1 100644 --- a/esphome/core/base_automation.h +++ b/esphome/core/base_automation.h @@ -93,7 +93,12 @@ class StartupTrigger : public Trigger<>, public Component { class ShutdownTrigger : public Trigger<>, public Component { public: + explicit ShutdownTrigger(float setup_priority) : setup_priority_(setup_priority) {} void on_shutdown() override { this->trigger(); } + float get_setup_priority() const override { return this->setup_priority_; } + + protected: + float setup_priority_; }; class LoopTrigger : public Trigger<>, public Component { diff --git a/esphome/core/config.py b/esphome/core/config.py index 68c253f7b4..f1337be04b 100644 --- a/esphome/core/config.py +++ b/esphome/core/config.py @@ -117,6 +117,7 @@ CONFIG_SCHEMA = cv.All( cv.Optional(CONF_ON_SHUTDOWN): automation.validate_automation( { cv.GenerateID(CONF_TRIGGER_ID): cv.declare_id(ShutdownTrigger), + cv.Optional(CONF_PRIORITY, default=600.0): cv.float_, } ), cv.Optional(CONF_ON_LOOP): automation.validate_automation( @@ -291,7 +292,7 @@ async def _add_automations(config): await automation.build_automation(trigger, [], conf) for conf in config.get(CONF_ON_SHUTDOWN, []): - trigger = cg.new_Pvariable(conf[CONF_TRIGGER_ID]) + trigger = cg.new_Pvariable(conf[CONF_TRIGGER_ID], conf.get(CONF_PRIORITY)) await cg.register_component(trigger, conf) await automation.build_automation(trigger, [], conf)