|
ESPHome 2026.1.0-dev
|
ESPHomeOTAComponent provides a simple way to integrate Over-the-Air updates into your app using ArduinoOTA. More...
#include <ota_esphome.h>
Public Types | |
| enum class | OTAState : uint8_t { IDLE , MAGIC_READ , MAGIC_ACK , FEATURE_READ , FEATURE_ACK , AUTH_SEND , AUTH_READ , DATA } |
Public Member Functions | |
| void | set_auth_password (const std::string &password) |
| void | set_port (uint16_t port) |
| Manually set the port OTA should listen on. | |
| void | setup () override |
| void | dump_config () override |
| float | get_setup_priority () const override |
| void | loop () override |
| uint16_t | get_port () const |
Public Member Functions inherited from esphome::ota::OTAComponent | |
| void | add_state_listener (OTAStateListener *listener) |
Public Member Functions inherited from esphome::Component | |
| float | get_actual_setup_priority () const |
| void | set_setup_priority (float priority) |
| virtual float | get_loop_priority () const |
| priority of loop(). | |
| void | call () |
| virtual void | on_shutdown () |
| virtual void | on_safe_shutdown () |
| virtual bool | teardown () |
| Called during teardown to allow component to gracefully finish operations. | |
| virtual void | on_powerdown () |
| Called after teardown is complete to power down hardware. | |
| uint8_t | get_component_state () const |
| void | reset_to_construction_state () |
| Reset this component back to the construction state to allow setup to run again. | |
| bool | is_in_loop_state () const |
| Check if this component has completed setup and is in the loop state. | |
| bool | is_idle () const |
| Check if this component is idle. | |
| virtual void | mark_failed () |
| Mark this component as failed. | |
| ESPDEPRECATED ("Use mark_failed(LOG_STR(\"static string literal\")) instead. Do NOT use .c_str() from temporary " "strings. Will stop working in 2026.6.0", "2025.12.0") void mark_failed(const char *message) | |
| void | mark_failed (const LogString *message) |
| void | disable_loop () |
| Disable this component's loop. | |
| void | enable_loop () |
| Enable this component's loop. | |
| void | enable_loop_soon_any_context () |
| Thread and ISR-safe version of enable_loop() that can be called from any context. | |
| bool | is_failed () const |
| bool | is_ready () const |
| virtual bool | can_proceed () |
| bool | status_has_warning () const |
| bool | status_has_error () const |
| void | status_set_warning (const char *message=nullptr) |
| void | status_set_warning (const LogString *message) |
| void | status_set_error () |
| ESPDEPRECATED ("Use status_set_error(LOG_STR(\"static string literal\")) instead. Do NOT use .c_str() from temporary " "strings. Will stop working in 2026.6.0", "2025.12.0") void status_set_error(const char *message) | |
| void | status_set_error (const LogString *message) |
| void | status_clear_warning () |
| void | status_clear_error () |
| void | status_momentary_warning (const char *name, uint32_t length=5000) |
| Set warning status flag and automatically clear it after a timeout. | |
| void | status_momentary_error (const char *name, uint32_t length=5000) |
| Set error status flag and automatically clear it after a timeout. | |
| bool | has_overridden_loop () const |
| void | set_component_source (const LogString *source) |
| Set where this component was loaded from for some debug messages. | |
| const LogString * | get_component_log_str () const |
| Get the integration where this component was declared as a LogString for logging. | |
| bool | should_warn_of_blocking (uint32_t blocking_time) |
Protected Member Functions | |
| void | handle_handshake_ () |
| void | handle_data_ () |
| bool | handle_auth_send_ () |
| bool | handle_auth_read_ () |
| bool | select_auth_type_ () |
| void | cleanup_auth_ () |
| void | log_auth_warning_ (const LogString *msg) |
| bool | readall_ (uint8_t *buf, size_t len) |
| bool | writeall_ (const uint8_t *buf, size_t len) |
| bool | write_byte_ (uint8_t byte) |
| bool | try_read_ (size_t to_read, const LogString *desc) |
| bool | try_write_ (size_t to_write, const LogString *desc) |
| bool | would_block_ (int error_code) const |
| bool | handle_read_error_ (ssize_t read, const LogString *desc) |
| bool | handle_write_error_ (ssize_t written, const LogString *desc) |
| void | transition_ota_state_ (OTAState next_state) |
| void | log_socket_error_ (const LogString *msg) |
| void | log_read_error_ (const LogString *what) |
| void | log_start_ (const LogString *phase) |
| void | log_remote_closed_ (const LogString *during) |
| void | cleanup_connection_ () |
| void | send_error_and_cleanup_ (ota::OTAResponseTypes error) |
| void | yield_and_feed_watchdog_ () |
Protected Member Functions inherited from esphome::ota::OTAComponent | |
| void | notify_state_ (OTAState state, float progress, uint8_t error) |
| void | notify_state_deferred_ (OTAState state, float progress, uint8_t error) |
| Notify state with deferral to main loop (for thread safety). | |
Protected Member Functions inherited from esphome::Component | |
| virtual void | call_loop () |
| virtual void | call_setup () |
| virtual void | call_dump_config () |
| void | set_component_state_ (uint8_t state) |
| Helper to set component state (clears state bits and sets new state) | |
| void | set_interval (const std::string &name, uint32_t interval, std::function< void()> &&f) |
| Set an interval function with a unique name. | |
| void | set_interval (const char *name, uint32_t interval, std::function< void()> &&f) |
| Set an interval function with a const char* name. | |
| void | set_interval (uint32_t interval, std::function< void()> &&f) |
| bool | cancel_interval (const std::string &name) |
| Cancel an interval function. | |
| bool | cancel_interval (const char *name) |
| void | set_retry (const std::string &name, uint32_t initial_wait_time, uint8_t max_attempts, std::function< RetryResult(uint8_t)> &&f, float backoff_increase_factor=1.0f) |
| Set an retry function with a unique name. | |
| void | set_retry (const char *name, uint32_t initial_wait_time, uint8_t max_attempts, std::function< RetryResult(uint8_t)> &&f, float backoff_increase_factor=1.0f) |
| void | set_retry (uint32_t initial_wait_time, uint8_t max_attempts, std::function< RetryResult(uint8_t)> &&f, float backoff_increase_factor=1.0f) |
| bool | cancel_retry (const std::string &name) |
| Cancel a retry function. | |
| bool | cancel_retry (const char *name) |
| void | set_timeout (const std::string &name, uint32_t timeout, std::function< void()> &&f) |
| Set a timeout function with a unique name. | |
| void | set_timeout (const char *name, uint32_t timeout, std::function< void()> &&f) |
| Set a timeout function with a const char* name. | |
| void | set_timeout (uint32_t timeout, std::function< void()> &&f) |
| bool | cancel_timeout (const std::string &name) |
| Cancel a timeout function. | |
| bool | cancel_timeout (const char *name) |
| void | defer (const std::string &name, std::function< void()> &&f) |
| Defer a callback to the next loop() call. | |
| void | defer (const char *name, std::function< void()> &&f) |
| Defer a callback to the next loop() call with a const char* name. | |
| void | defer (std::function< void()> &&f) |
| Defer a callback to the next loop() call. | |
| bool | cancel_defer (const std::string &name) |
| Cancel a defer callback using the specified name, name must not be empty. | |
Protected Attributes | |
| std::string | password_ |
| std::unique_ptr< uint8_t[]> | auth_buf_ |
| std::unique_ptr< socket::Socket > | server_ |
| std::unique_ptr< socket::Socket > | client_ |
| std::unique_ptr< ota::OTABackend > | backend_ |
| uint32_t | client_connect_time_ {0} |
| uint16_t | port_ |
| uint8_t | handshake_buf_ [5] |
| OTAState | ota_state_ {OTAState::IDLE} |
| uint8_t | handshake_buf_pos_ {0} |
| uint8_t | ota_features_ {0} |
| uint8_t | auth_buf_pos_ {0} |
| uint8_t | auth_type_ {0} |
Protected Attributes inherited from esphome::ota::OTAComponent | |
| std::vector< OTAStateListener * > | state_listeners_ |
Protected Attributes inherited from esphome::Component | |
| const LogString * | component_source_ {nullptr} |
| uint16_t | warn_if_blocking_over_ {WARN_IF_BLOCKING_OVER_MS} |
| Warn if blocked for this many ms (max 65.5s) | |
| uint8_t | component_state_ {0x00} |
| State of this component - each bit has a purpose: Bits 0-2: Component state (0x00=CONSTRUCTION, 0x01=SETUP, 0x02=LOOP, 0x03=FAILED, 0x04=LOOP_DONE) Bit 3: STATUS_LED_WARNING Bit 4: STATUS_LED_ERROR Bits 5-7: Unused - reserved for future expansion. | |
| volatile bool | pending_enable_loop_ {false} |
| ISR-safe flag for enable_loop_soon_any_context. | |
Static Protected Attributes | |
| static constexpr size_t | SHA256_HEX_SIZE = 64 |
ESPHomeOTAComponent provides a simple way to integrate Over-the-Air updates into your app using ArduinoOTA.
Definition at line 15 of file ota_esphome.h.
|
strong |
| Enumerator | |
|---|---|
| IDLE | |
| MAGIC_READ | |
| MAGIC_ACK | |
| FEATURE_READ | |
| FEATURE_ACK | |
| AUTH_SEND | |
| AUTH_READ | |
| DATA | |
Definition at line 17 of file ota_esphome.h.
|
protected |
Definition at line 667 of file ota_esphome.cpp.
|
protected |
Definition at line 506 of file ota_esphome.cpp.
|
overridevirtual |
Reimplemented from esphome::Component.
Definition at line 73 of file ota_esphome.cpp.
| uint16_t esphome::ESPHomeOTAComponent::get_port | ( | ) | const |
Definition at line 436 of file ota_esphome.cpp.
|
overridevirtual |
Reimplemented from esphome::Component.
Definition at line 435 of file ota_esphome.cpp.
|
protected |
Definition at line 609 of file ota_esphome.cpp.
|
protected |
Definition at line 540 of file ota_esphome.cpp.
|
protected |
Handle the OTA data transfer and update process.
This method is blocking and will not return until the OTA update completes, fails, or times out. It receives the firmware data, writes it to flash, and reboots on success.
Authentication has already been handled in the non-blocking states AUTH_SEND/AUTH_READ.
Definition at line 237 of file ota_esphome.cpp.
|
protected |
Handle the OTA handshake and authentication.
This method is non-blocking and will return immediately if no data is available. It manages the state machine through connection, magic bytes validation, feature negotiation, and authentication before entering the blocking data transfer phase.
Definition at line 99 of file ota_esphome.cpp.
|
protected |
Definition at line 453 of file ota_esphome.cpp.
|
protected |
Definition at line 466 of file ota_esphome.cpp.
|
protected |
Definition at line 525 of file ota_esphome.cpp.
|
protected |
Definition at line 443 of file ota_esphome.cpp.
|
protected |
Definition at line 449 of file ota_esphome.cpp.
|
protected |
Definition at line 439 of file ota_esphome.cpp.
|
protected |
Definition at line 445 of file ota_esphome.cpp.
|
overridevirtual |
Reimplemented from esphome::Component.
Definition at line 86 of file ota_esphome.cpp.
|
protected |
Definition at line 384 of file ota_esphome.cpp.
|
protected |
Definition at line 527 of file ota_esphome.cpp.
|
inlineprotected |
Definition at line 74 of file ota_esphome.h.
|
inline |
Definition at line 30 of file ota_esphome.h.
| void esphome::ESPHomeOTAComponent::set_port | ( | uint16_t | port | ) |
Manually set the port OTA should listen on.
Definition at line 437 of file ota_esphome.cpp.
|
overridevirtual |
Reimplemented from esphome::Component.
Definition at line 29 of file ota_esphome.cpp.
|
inlineprotected |
Definition at line 64 of file ota_esphome.h.
|
protected |
Definition at line 478 of file ota_esphome.cpp.
|
protected |
Definition at line 492 of file ota_esphome.cpp.
|
inlineprotected |
Definition at line 61 of file ota_esphome.h.
|
inlineprotected |
Definition at line 56 of file ota_esphome.h.
|
protected |
Definition at line 411 of file ota_esphome.cpp.
|
protected |
Definition at line 519 of file ota_esphome.cpp.
|
protected |
Definition at line 83 of file ota_esphome.h.
|
protected |
Definition at line 97 of file ota_esphome.h.
|
protected |
Definition at line 98 of file ota_esphome.h.
|
protected |
Definition at line 88 of file ota_esphome.h.
|
protected |
Definition at line 87 of file ota_esphome.h.
|
protected |
Definition at line 90 of file ota_esphome.h.
|
protected |
Definition at line 92 of file ota_esphome.h.
|
protected |
Definition at line 94 of file ota_esphome.h.
|
protected |
Definition at line 95 of file ota_esphome.h.
|
protected |
Definition at line 93 of file ota_esphome.h.
|
protected |
Definition at line 82 of file ota_esphome.h.
|
protected |
Definition at line 91 of file ota_esphome.h.
|
protected |
Definition at line 86 of file ota_esphome.h.
|
staticconstexprprotected |
Definition at line 47 of file ota_esphome.h.