#pragma once #include "esphome/core/component.h" #include "esphome/core/automation.h" #include "esphome/components/ota/ota_component.h" namespace esphome { namespace ota { class OTAStartTrigger : public Trigger<> { public: explicit OTAStartTrigger(OTAComponent *parent) { parent->add_on_state_callback([this, parent](OTAState state, float progress, uint8_t error) { if (state == OTAState::Started && !parent->is_failed()) { trigger(); } }); } }; class OTAProgressTrigger : public Trigger { public: explicit OTAProgressTrigger(OTAComponent *parent) { parent->add_on_state_callback([this, parent](OTAState state, float progress, uint8_t error) { if (state == OTAState::InProgress && !parent->is_failed()) { trigger(progress); } }); } }; class OTAEndTrigger : public Trigger<> { public: explicit OTAEndTrigger(OTAComponent *parent) { parent->add_on_state_callback([this, parent](OTAState state, float progress, uint8_t error) { if (state == OTAState::Completed && !parent->is_failed()) { trigger(); } }); } }; class OTAErrorTrigger : public Trigger { public: explicit OTAErrorTrigger(OTAComponent *parent) { parent->add_on_state_callback([this, parent](OTAState state, float progress, uint8_t error) { if (state == OTAState::Error && !parent->is_failed()) { trigger(error); } }); } }; } // namespace ota } // namespace esphome