ESPHome 2025.10.0-dev
Loading...
Searching...
No Matches
esphome::ESPHomeOTAComponent Class Reference

ESPHomeOTAComponent provides a simple way to integrate Over-the-Air updates into your app using ArduinoOTA. More...

#include <ota_esphome.h>

Inheritance diagram for esphome::ESPHomeOTAComponent:
esphome::ota::OTAComponent esphome::Component

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_on_state_callback (std::function< void(ota::OTAState, float, uint8_t)> &&callback)
 
- 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.
 
virtual void mark_failed ()
 Mark this component as failed.
 
void mark_failed (const char *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 (const char *message=nullptr)
 
void status_clear_warning ()
 
void status_clear_error ()
 
void status_momentary_warning (const std::string &name, uint32_t length=5000)
 
void status_momentary_error (const std::string &name, uint32_t length=5000)
 
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_ ()
 
bool prepare_auth_nonce_ (HashBase *hasher)
 
bool verify_hash_auth_ (HashBase *hasher, size_t hex_size)
 
size_t get_auth_hex_size_ () const
 
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 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::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 (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.
 
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< socket::Socketserver_
 
std::unique_ptr< socket::Socketclient_
 
std::unique_ptr< ota::OTABackendbackend_
 
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}
 
std::unique_ptr< uint8_t[]> auth_buf_
 
uint8_t auth_buf_pos_ {0}
 
uint8_t auth_type_ {0}
 
- Protected Attributes inherited from esphome::ota::OTAComponent
StateCallbackManager state_callback_ {this}
 
- 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.
 

Detailed Description

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.

Member Enumeration Documentation

◆ OTAState

enum class esphome::ESPHomeOTAComponent::OTAState : uint8_t
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.

Member Function Documentation

◆ cleanup_auth_()

void esphome::ESPHomeOTAComponent::cleanup_auth_ ( )
protected

Definition at line 799 of file ota_esphome.cpp.

◆ cleanup_connection_()

void esphome::ESPHomeOTAComponent::cleanup_connection_ ( )
protected

Definition at line 543 of file ota_esphome.cpp.

◆ dump_config()

void esphome::ESPHomeOTAComponent::dump_config ( )
overridevirtual

Reimplemented from esphome::Component.

Definition at line 92 of file ota_esphome.cpp.

◆ get_auth_hex_size_()

size_t esphome::ESPHomeOTAComponent::get_auth_hex_size_ ( ) const
protected

Definition at line 784 of file ota_esphome.cpp.

◆ get_port()

uint16_t esphome::ESPHomeOTAComponent::get_port ( ) const

Definition at line 473 of file ota_esphome.cpp.

◆ get_setup_priority()

float esphome::ESPHomeOTAComponent::get_setup_priority ( ) const
overridevirtual

Reimplemented from esphome::Component.

Definition at line 472 of file ota_esphome.cpp.

◆ handle_auth_read_()

bool esphome::ESPHomeOTAComponent::handle_auth_read_ ( )
protected

Definition at line 659 of file ota_esphome.cpp.

◆ handle_auth_send_()

bool esphome::ESPHomeOTAComponent::handle_auth_send_ ( )
protected

Definition at line 609 of file ota_esphome.cpp.

◆ handle_data_()

void esphome::ESPHomeOTAComponent::handle_data_ ( )
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 264 of file ota_esphome.cpp.

◆ handle_handshake_()

void esphome::ESPHomeOTAComponent::handle_handshake_ ( )
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 126 of file ota_esphome.cpp.

◆ handle_read_error_()

bool esphome::ESPHomeOTAComponent::handle_read_error_ ( ssize_t read,
const LogString * desc )
protected

Definition at line 490 of file ota_esphome.cpp.

◆ handle_write_error_()

bool esphome::ESPHomeOTAComponent::handle_write_error_ ( ssize_t written,
const LogString * desc )
protected

Definition at line 503 of file ota_esphome.cpp.

◆ log_auth_warning_()

void esphome::ESPHomeOTAComponent::log_auth_warning_ ( const LogString * msg)
protected

Definition at line 562 of file ota_esphome.cpp.

◆ log_read_error_()

void esphome::ESPHomeOTAComponent::log_read_error_ ( const LogString * what)
protected

Definition at line 480 of file ota_esphome.cpp.

◆ log_remote_closed_()

void esphome::ESPHomeOTAComponent::log_remote_closed_ ( const LogString * during)
protected

Definition at line 486 of file ota_esphome.cpp.

◆ log_socket_error_()

void esphome::ESPHomeOTAComponent::log_socket_error_ ( const LogString * msg)
protected

Definition at line 476 of file ota_esphome.cpp.

◆ log_start_()

void esphome::ESPHomeOTAComponent::log_start_ ( const LogString * phase)
protected

Definition at line 482 of file ota_esphome.cpp.

◆ loop()

void esphome::ESPHomeOTAComponent::loop ( )
overridevirtual

Reimplemented from esphome::Component.

Definition at line 105 of file ota_esphome.cpp.

◆ prepare_auth_nonce_()

bool esphome::ESPHomeOTAComponent::prepare_auth_nonce_ ( HashBase * hasher)
protected

Definition at line 708 of file ota_esphome.cpp.

◆ readall_()

bool esphome::ESPHomeOTAComponent::readall_ ( uint8_t * buf,
size_t len )
protected

Definition at line 421 of file ota_esphome.cpp.

◆ select_auth_type_()

bool esphome::ESPHomeOTAComponent::select_auth_type_ ( )
protected

Definition at line 564 of file ota_esphome.cpp.

◆ send_error_and_cleanup_()

void esphome::ESPHomeOTAComponent::send_error_and_cleanup_ ( ota::OTAResponseTypes error)
inlineprotected

Definition at line 75 of file ota_esphome.h.

◆ set_auth_password()

void esphome::ESPHomeOTAComponent::set_auth_password ( const std::string & password)
inline

Definition at line 30 of file ota_esphome.h.

◆ set_port()

void esphome::ESPHomeOTAComponent::set_port ( uint16_t port)

Manually set the port OTA should listen on.

Definition at line 474 of file ota_esphome.cpp.

◆ setup()

void esphome::ESPHomeOTAComponent::setup ( )
overridevirtual

Reimplemented from esphome::Component.

Definition at line 44 of file ota_esphome.cpp.

◆ transition_ota_state_()

void esphome::ESPHomeOTAComponent::transition_ota_state_ ( OTAState next_state)
inlineprotected

Definition at line 65 of file ota_esphome.h.

◆ try_read_()

bool esphome::ESPHomeOTAComponent::try_read_ ( size_t to_read,
const LogString * desc )
protected

Definition at line 515 of file ota_esphome.cpp.

◆ try_write_()

bool esphome::ESPHomeOTAComponent::try_write_ ( size_t to_write,
const LogString * desc )
protected

Definition at line 529 of file ota_esphome.cpp.

◆ verify_hash_auth_()

bool esphome::ESPHomeOTAComponent::verify_hash_auth_ ( HashBase * hasher,
size_t hex_size )
protected

Definition at line 750 of file ota_esphome.cpp.

◆ would_block_()

bool esphome::ESPHomeOTAComponent::would_block_ ( int error_code) const
inlineprotected

Definition at line 62 of file ota_esphome.h.

◆ writeall_()

bool esphome::ESPHomeOTAComponent::writeall_ ( const uint8_t * buf,
size_t len )
protected

Definition at line 448 of file ota_esphome.cpp.

◆ yield_and_feed_watchdog_()

void esphome::ESPHomeOTAComponent::yield_and_feed_watchdog_ ( )
protected

Definition at line 556 of file ota_esphome.cpp.

Field Documentation

◆ auth_buf_

std::unique_ptr<uint8_t[]> esphome::ESPHomeOTAComponent::auth_buf_
protected

Definition at line 97 of file ota_esphome.h.

◆ auth_buf_pos_

uint8_t esphome::ESPHomeOTAComponent::auth_buf_pos_ {0}
protected

Definition at line 98 of file ota_esphome.h.

◆ auth_type_

uint8_t esphome::ESPHomeOTAComponent::auth_type_ {0}
protected

Definition at line 99 of file ota_esphome.h.

◆ backend_

std::unique_ptr<ota::OTABackend> esphome::ESPHomeOTAComponent::backend_
protected

Definition at line 88 of file ota_esphome.h.

◆ client_

std::unique_ptr<socket::Socket> esphome::ESPHomeOTAComponent::client_
protected

Definition at line 87 of file ota_esphome.h.

◆ client_connect_time_

uint32_t esphome::ESPHomeOTAComponent::client_connect_time_ {0}
protected

Definition at line 90 of file ota_esphome.h.

◆ handshake_buf_

uint8_t esphome::ESPHomeOTAComponent::handshake_buf_[5]
protected

Definition at line 92 of file ota_esphome.h.

◆ handshake_buf_pos_

uint8_t esphome::ESPHomeOTAComponent::handshake_buf_pos_ {0}
protected

Definition at line 94 of file ota_esphome.h.

◆ ota_features_

uint8_t esphome::ESPHomeOTAComponent::ota_features_ {0}
protected

Definition at line 95 of file ota_esphome.h.

◆ ota_state_

OTAState esphome::ESPHomeOTAComponent::ota_state_ {OTAState::IDLE}
protected

Definition at line 93 of file ota_esphome.h.

◆ password_

std::string esphome::ESPHomeOTAComponent::password_
protected

Definition at line 83 of file ota_esphome.h.

◆ port_

uint16_t esphome::ESPHomeOTAComponent::port_
protected

Definition at line 91 of file ota_esphome.h.

◆ server_

std::unique_ptr<socket::Socket> esphome::ESPHomeOTAComponent::server_
protected

Definition at line 86 of file ota_esphome.h.


The documentation for this class was generated from the following files: