|
ESPHome 2026.2.3
|
#include <application.h>
Public Member Functions | |
| void | pre_setup (const std::string &name, const std::string &friendly_name, bool name_add_mac_suffix) |
| void | register_device (Device *device) |
| void | register_area (Area *area) |
| void | set_current_component (Component *component) |
| Component * | get_current_component () |
| void | register_binary_sensor (binary_sensor::BinarySensor *binary_sensor) |
| void | register_sensor (sensor::Sensor *sensor) |
| void | register_switch (switch_::Switch *a_switch) |
| void | register_button (button::Button *button) |
| void | register_text_sensor (text_sensor::TextSensor *sensor) |
| void | register_fan (fan::Fan *state) |
| void | register_cover (cover::Cover *cover) |
| void | register_climate (climate::Climate *climate) |
| void | register_light (light::LightState *light) |
| void | register_number (number::Number *number) |
| void | register_date (datetime::DateEntity *date) |
| void | register_time (datetime::TimeEntity *time) |
| void | register_datetime (datetime::DateTimeEntity *datetime) |
| void | register_text (text::Text *text) |
| void | register_select (select::Select *select) |
| void | register_lock (lock::Lock *a_lock) |
| void | register_valve (valve::Valve *valve) |
| void | register_media_player (media_player::MediaPlayer *media_player) |
| void | register_alarm_control_panel (alarm_control_panel::AlarmControlPanel *a_alarm_control_panel) |
| void | register_water_heater (water_heater::WaterHeater *water_heater) |
| void | register_infrared (infrared::Infrared *infrared) |
| void | register_event (event::Event *event) |
| void | register_update (update::UpdateEntity *update) |
| template<class C > | |
| C * | register_component (C *c) |
| Reserve space for components to avoid memory fragmentation. | |
| void | setup () |
| Set up all the registered components. Call this at the end of your setup() function. | |
| void | loop () |
| Make a loop iteration. Call this in your loop() function. | |
| const std::string & | get_name () const |
| Get the name of this Application set by pre_setup(). | |
| const std::string & | get_friendly_name () const |
| Get the friendly name of this Application set by pre_setup(). | |
| const char * | get_area () const |
| Get the area of this Application set by pre_setup(). | |
| void | get_comment_string (std::span< char, ESPHOME_COMMENT_SIZE > buffer) |
| Copy the comment string into the provided buffer Buffer must be ESPHOME_COMMENT_SIZE bytes (compile-time enforced) | |
| std::string | get_comment () |
| Get the comment of this Application as a string. | |
| bool | is_name_add_mac_suffix_enabled () const |
| constexpr uint32_t | get_config_hash () |
| Get the config hash as a 32-bit integer. | |
| constexpr uint32_t | get_config_version_hash () |
| Get the config hash extended with ESPHome version. | |
| constexpr time_t | get_build_time () |
| Get the build time as a Unix timestamp. | |
| void | get_build_time_string (std::span< char, BUILD_TIME_STR_SIZE > buffer) |
| Copy the build time string into the provided buffer Buffer must be BUILD_TIME_STR_SIZE bytes (compile-time enforced) | |
| ESPDEPRECATED ("Use get_build_time_string() instead. Removed in 2026.7.0", "2026.1.0") std | |
| Get the build time as a string (deprecated, use get_build_time_string() instead) | |
| uint32_t IRAM_ATTR HOT | get_loop_component_start_time () const |
| Get the cached time in milliseconds from when the current component started its loop execution. | |
| void | set_loop_interval (uint32_t loop_interval) |
| Set the target interval with which to run the loop() calls. | |
| uint32_t | get_loop_interval () const |
| void | schedule_dump_config () |
| void | feed_wdt (uint32_t time=0) |
| void | reboot () |
| void | safe_reboot () |
| void | run_safe_shutdown_hooks () |
| void | run_powerdown_hooks () |
| void | teardown_components (uint32_t timeout_ms) |
| Teardown all components with a timeout. | |
| uint8_t | get_app_state () const |
| const auto & | get_devices () |
| const auto & | get_areas () |
| auto & | get_binary_sensors () const |
| GET_ENTITY_METHOD (binary_sensor::BinarySensor, binary_sensor, binary_sensors) auto &get_switches() const | |
| GET_ENTITY_METHOD (switch_::Switch, switch, switches) auto &get_buttons() const | |
| GET_ENTITY_METHOD (button::Button, button, buttons) auto &get_sensors() const | |
| GET_ENTITY_METHOD (sensor::Sensor, sensor, sensors) auto &get_text_sensors() const | |
| GET_ENTITY_METHOD (text_sensor::TextSensor, text_sensor, text_sensors) auto &get_fans() const | |
| GET_ENTITY_METHOD (fan::Fan, fan, fans) auto &get_covers() const | |
| GET_ENTITY_METHOD (cover::Cover, cover, covers) auto &get_lights() const | |
| GET_ENTITY_METHOD (light::LightState, light, lights) auto &get_climates() const | |
| GET_ENTITY_METHOD (climate::Climate, climate, climates) auto &get_numbers() const | |
| GET_ENTITY_METHOD (number::Number, number, numbers) auto &get_dates() const | |
| GET_ENTITY_METHOD (datetime::DateEntity, date, dates) auto &get_times() const | |
| GET_ENTITY_METHOD (datetime::TimeEntity, time, times) auto &get_datetimes() const | |
| GET_ENTITY_METHOD (datetime::DateTimeEntity, datetime, datetimes) auto &get_texts() const | |
| GET_ENTITY_METHOD (text::Text, text, texts) auto &get_selects() const | |
| GET_ENTITY_METHOD (select::Select, select, selects) auto &get_locks() const | |
| GET_ENTITY_METHOD (lock::Lock, lock, locks) auto &get_valves() const | |
| GET_ENTITY_METHOD (valve::Valve, valve, valves) auto &get_media_players() const | |
| GET_ENTITY_METHOD (media_player::MediaPlayer, media_player, media_players) auto &get_alarm_control_panels() const | |
| GET_ENTITY_METHOD (alarm_control_panel::AlarmControlPanel, alarm_control_panel, alarm_control_panels) auto &get_water_heaters() const | |
| GET_ENTITY_METHOD (water_heater::WaterHeater, water_heater, water_heaters) auto &get_infrareds() const | |
| GET_ENTITY_METHOD (infrared::Infrared, infrared, infrareds) auto &get_events() const | |
| GET_ENTITY_METHOD (event::Event, event, events) auto &get_updates() const | |
| GET_ENTITY_METHOD (update::UpdateEntity, update, updates) Scheduler scheduler | |
| bool | register_socket_fd (int fd) |
| Register/unregister a socket file descriptor to be monitored for read events. | |
| void | unregister_socket_fd (int fd) |
| bool | is_socket_ready (int fd) const |
| Check if there's data available on a socket without blocking This function is thread-safe for reading, but should be called after select() has run The read_fds_ is only modified by select() in the main loop. | |
| void | wake_loop_threadsafe () |
| Wake the main event loop from a FreeRTOS task Thread-safe, can be called from task context to immediately wake select() IMPORTANT: NOT safe to call from ISR context (socket operations not ISR-safe) | |
Static Public Attributes | |
| static constexpr size_t | BUILD_TIME_STR_SIZE = 26 |
| Size of buffer required for build time string (including null terminator) | |
Protected Member Functions | |
| bool | is_socket_ready_ (int fd) const |
| Fast path for Socket::ready() via friendship - skips negative fd check. | |
| void | register_component_ (Component *comp) |
| void | calculate_looping_components_ () |
| void | add_looping_components_by_state_ (bool match_loop_done) |
| void | disable_component_loop_ (Component *component) |
| void | enable_component_loop_ (Component *component) |
| void | enable_pending_loops_ () |
| void | activate_looping_component_ (uint16_t index) |
| void | before_loop_tasks_ (uint32_t loop_start_time) |
| void | after_loop_tasks_ () |
| void | __attribute__ ((noinline)) process_dump_config_() |
| Process dump_config output one component per loop iteration. | |
| void | feed_wdt_arch_ () |
| void | yield_with_select_ (uint32_t delay_ms) |
| Perform a delay while also monitoring socket file descriptors for readiness. | |
| void | setup_wake_loop_threadsafe_ () |
| void | drain_wake_notifications_ () |
Protected Attributes | |
| friend | Component |
| Component * | current_component_ {nullptr} |
| FixedVector< Component * > | looping_components_ {} |
| std::vector< int > | socket_fds_ |
| int | wake_socket_fd_ {-1} |
| std::string | name_ |
| std::string | friendly_name_ |
| size_t | dump_config_at_ {SIZE_MAX} |
| uint32_t | last_loop_ {0} |
| uint32_t | loop_component_start_time_ {0} |
| int | max_fd_ {-1} |
| uint16_t | loop_interval_ {16} |
| uint16_t | looping_components_active_end_ {0} |
| uint16_t | current_loop_index_ {0} |
| uint8_t | app_state_ {0} |
| bool | name_add_mac_suffix_ |
| bool | in_loop_ {false} |
| volatile bool | has_pending_enable_loop_requests_ {false} |
| bool | socket_fds_changed_ {false} |
| fd_set | base_read_fds_ {} |
| fd_set | read_fds_ {} |
| StaticVector< Component *, ESPHOME_COMPONENT_COUNT > | components_ {} |
| StaticVector< Device *, ESPHOME_DEVICE_COUNT > | devices_ {} |
| StaticVector< Area *, ESPHOME_AREA_COUNT > | areas_ {} |
| StaticVector< binary_sensor::BinarySensor *, ESPHOME_ENTITY_BINARY_SENSOR_COUNT > | binary_sensors_ {} |
| StaticVector< switch_::Switch *, ESPHOME_ENTITY_SWITCH_COUNT > | switches_ {} |
| StaticVector< button::Button *, ESPHOME_ENTITY_BUTTON_COUNT > | buttons_ {} |
| StaticVector< event::Event *, ESPHOME_ENTITY_EVENT_COUNT > | events_ {} |
| StaticVector< sensor::Sensor *, ESPHOME_ENTITY_SENSOR_COUNT > | sensors_ {} |
| StaticVector< text_sensor::TextSensor *, ESPHOME_ENTITY_TEXT_SENSOR_COUNT > | text_sensors_ {} |
| StaticVector< fan::Fan *, ESPHOME_ENTITY_FAN_COUNT > | fans_ {} |
| StaticVector< cover::Cover *, ESPHOME_ENTITY_COVER_COUNT > | covers_ {} |
| StaticVector< climate::Climate *, ESPHOME_ENTITY_CLIMATE_COUNT > | climates_ {} |
| StaticVector< light::LightState *, ESPHOME_ENTITY_LIGHT_COUNT > | lights_ {} |
| StaticVector< number::Number *, ESPHOME_ENTITY_NUMBER_COUNT > | numbers_ {} |
| StaticVector< datetime::DateEntity *, ESPHOME_ENTITY_DATE_COUNT > | dates_ {} |
| StaticVector< datetime::TimeEntity *, ESPHOME_ENTITY_TIME_COUNT > | times_ {} |
| StaticVector< datetime::DateTimeEntity *, ESPHOME_ENTITY_DATETIME_COUNT > | datetimes_ {} |
| StaticVector< select::Select *, ESPHOME_ENTITY_SELECT_COUNT > | selects_ {} |
| StaticVector< text::Text *, ESPHOME_ENTITY_TEXT_COUNT > | texts_ {} |
| StaticVector< lock::Lock *, ESPHOME_ENTITY_LOCK_COUNT > | locks_ {} |
| StaticVector< valve::Valve *, ESPHOME_ENTITY_VALVE_COUNT > | valves_ {} |
| StaticVector< media_player::MediaPlayer *, ESPHOME_ENTITY_MEDIA_PLAYER_COUNT > | media_players_ {} |
| StaticVector< alarm_control_panel::AlarmControlPanel *, ESPHOME_ENTITY_ALARM_CONTROL_PANEL_COUNT > | alarm_control_panels_ {} |
| StaticVector< water_heater::WaterHeater *, ESPHOME_ENTITY_WATER_HEATER_COUNT > | water_heaters_ {} |
| StaticVector< infrared::Infrared *, ESPHOME_ENTITY_INFRARED_COUNT > | infrareds_ {} |
| StaticVector< update::UpdateEntity *, ESPHOME_ENTITY_UPDATE_COUNT > | updates_ {} |
Definition at line 116 of file application.h.
|
protected |
Process dump_config output one component per loop iteration.
Extracted from loop() to keep cold startup/reconnect logging out of the hot path. Caller must ensure dump_config_at_ < components_.size().
|
protected |
Definition at line 443 of file application.cpp.
|
protected |
Definition at line 405 of file application.cpp.
|
protected |
Definition at line 551 of file application.cpp.
|
protected |
Definition at line 521 of file application.cpp.
|
protected |
Definition at line 381 of file application.cpp.
|
protected |
Definition at line 414 of file application.cpp.
|
inlineprotected |
Definition at line 709 of file application.h.
|
protected |
Definition at line 451 of file application.cpp.
|
protected |
Definition at line 468 of file application.cpp.
|
inline |
Get the build time as a string (deprecated, use get_build_time_string() instead)
Definition at line 311 of file application.h.
| void IRAM_ATTR HOT esphome::Application::feed_wdt | ( | uint32_t | time = 0 | ) |
Definition at line 243 of file application.cpp.
|
protected |
|
inline |
Definition at line 361 of file application.h.
|
inline |
Get the area of this Application set by pre_setup().
Definition at line 267 of file application.h.
|
inline |
Definition at line 386 of file application.h.
|
inline |
Definition at line 389 of file application.h.
|
inlineconstexpr |
Get the build time as a Unix timestamp.
Definition at line 303 of file application.h.
| void esphome::Application::get_build_time_string | ( | std::span< char, BUILD_TIME_STR_SIZE > | buffer | ) |
Copy the build time string into the provided buffer Buffer must be BUILD_TIME_STR_SIZE bytes (compile-time enforced)
Definition at line 743 of file application.cpp.
|
inline |
Get the comment of this Application as a string.
Definition at line 285 of file application.h.
|
inline |
Copy the comment string into the provided buffer Buffer must be ESPHOME_COMMENT_SIZE bytes (compile-time enforced)
Definition at line 279 of file application.h.
|
inlineconstexpr |
Get the config hash as a 32-bit integer.
Definition at line 297 of file application.h.
|
inlineconstexpr |
Get the config hash extended with ESPHome version.
Definition at line 300 of file application.h.
|
inline |
Definition at line 147 of file application.h.
|
inline |
Definition at line 374 of file application.h.
|
inline |
Definition at line 463 of file application.h.
|
inline |
Definition at line 390 of file application.h.
|
inline |
Definition at line 398 of file application.h.
|
inline |
Definition at line 422 of file application.h.
|
inline |
Definition at line 414 of file application.h.
|
inline |
Definition at line 430 of file application.h.
|
inline |
Definition at line 438 of file application.h.
|
inline |
Definition at line 434 of file application.h.
|
inline |
Definition at line 478 of file application.h.
|
inline |
Definition at line 410 of file application.h.
|
inline |
Definition at line 473 of file application.h.
|
inline |
Definition at line 418 of file application.h.
|
inline |
Definition at line 450 of file application.h.
|
inline |
Definition at line 458 of file application.h.
|
inline |
Definition at line 426 of file application.h.
|
inline |
Definition at line 446 of file application.h.
|
inline |
Definition at line 402 of file application.h.
|
inline |
Definition at line 394 of file application.h.
|
inline |
Definition at line 442 of file application.h.
|
inline |
Definition at line 406 of file application.h.
| esphome::Application::GET_ENTITY_METHOD | ( | update::UpdateEntity | , |
| update | , | ||
| updates | ) |
|
inline |
Definition at line 454 of file application.h.
|
inline |
Definition at line 468 of file application.h.
|
inline |
Get the friendly name of this Application set by pre_setup().
Definition at line 264 of file application.h.
|
inline |
Get the cached time in milliseconds from when the current component started its loop execution.
Definition at line 319 of file application.h.
|
inline |
Definition at line 341 of file application.h.
|
inline |
Get the name of this Application set by pre_setup().
Definition at line 261 of file application.h.
|
inline |
Definition at line 291 of file application.h.
|
inline |
Check if there's data available on a socket without blocking This function is thread-safe for reading, but should be called after select() has run The read_fds_ is only modified by select() in the main loop.
Definition at line 499 of file application.h.
|
inlineprotected |
Fast path for Socket::ready() via friendship - skips negative fd check.
Safe because: fd was validated in register_socket_fd() at registration time, and Socket::ready() only calls this when loop_monitored_ is true (registration succeeded). FD_ISSET may include its own upper bounds check depending on platform.
Definition at line 518 of file application.h.
| void esphome::Application::loop | ( | ) |
Make a loop iteration. Call this in your loop() function.
Definition at line 150 of file application.cpp.
|
inline |
Definition at line 118 of file application.h.
| void esphome::Application::reboot | ( | ) |
Definition at line 258 of file application.cpp.
|
inline |
Definition at line 224 of file application.h.
|
inline |
Definition at line 143 of file application.h.
|
inline |
Definition at line 150 of file application.h.
|
inline |
Definition at line 164 of file application.h.
|
inline |
Definition at line 180 of file application.h.
|
inline |
Reserve space for components to avoid memory fragmentation.
Register the component in this Application instance.
Definition at line 248 of file application.h.
|
protected |
Definition at line 72 of file application.cpp.
|
inline |
Definition at line 176 of file application.h.
|
inline |
Definition at line 192 of file application.h.
|
inline |
Definition at line 200 of file application.h.
|
inline |
Definition at line 140 of file application.h.
|
inline |
Definition at line 238 of file application.h.
|
inline |
Definition at line 172 of file application.h.
|
inline |
Definition at line 234 of file application.h.
|
inline |
Definition at line 184 of file application.h.
|
inline |
Definition at line 212 of file application.h.
|
inline |
Definition at line 220 of file application.h.
|
inline |
Definition at line 188 of file application.h.
|
inline |
Definition at line 208 of file application.h.
|
inline |
Definition at line 156 of file application.h.
| bool esphome::Application::register_socket_fd | ( | int | fd | ) |
Register/unregister a socket file descriptor to be monitored for read events.
These functions update the fd_set used by select() in the main loop. WARNING: These functions are NOT thread-safe. They must only be called from the main loop. NOTE: File descriptors >= FD_SETSIZE (typically 10 on ESP) will be rejected with an error.
Definition at line 557 of file application.cpp.
|
inline |
Definition at line 160 of file application.h.
|
inline |
Definition at line 204 of file application.h.
|
inline |
Definition at line 168 of file application.h.
|
inline |
Definition at line 196 of file application.h.
|
inline |
Definition at line 242 of file application.h.
|
inline |
Definition at line 216 of file application.h.
|
inline |
Definition at line 230 of file application.h.
| void esphome::Application::run_powerdown_hooks | ( | ) |
Definition at line 282 of file application.cpp.
| void esphome::Application::run_safe_shutdown_hooks | ( | ) |
Definition at line 273 of file application.cpp.
| void esphome::Application::safe_reboot | ( | ) |
Definition at line 265 of file application.cpp.
|
inline |
Definition at line 343 of file application.h.
|
inline |
Definition at line 146 of file application.h.
|
inline |
Set the target interval with which to run the loop() calls.
If the loop() method takes longer than the target interval, ESPHome won't sleep in loop(), but if the time spent in loop() is small than the target, ESPHome will delay at the end of the App.loop() method.
This is done to conserve power: In most use-cases, high-speed loop() calls are not required and degrade power consumption.
Each component can request a high frequency loop execution by using the HighFrequencyLoopRequester helper in helpers.h
Note: This method is not called by ESPHome core code. It is only used by lambda functions in YAML configurations or by external components.
| loop_interval | The interval in milliseconds to run the core loop at. Defaults to 16 milliseconds. |
Definition at line 337 of file application.h.
| void esphome::Application::setup | ( | ) |
Set up all the registered components. Call this at the end of your setup() function.
Definition at line 90 of file application.cpp.
|
protected |
Definition at line 675 of file application.cpp.
| void esphome::Application::teardown_components | ( | uint32_t | timeout_ms | ) |
Teardown all components with a timeout.
| timeout_ms | Maximum time to wait for teardown in milliseconds |
Definition at line 288 of file application.cpp.
| void esphome::Application::unregister_socket_fd | ( | int | fd | ) |
Definition at line 584 of file application.cpp.
| void esphome::Application::wake_loop_threadsafe | ( | ) |
Wake the main event loop from a FreeRTOS task Thread-safe, can be called from task context to immediately wake select() IMPORTANT: NOT safe to call from ISR context (socket operations not ISR-safe)
Definition at line 729 of file application.cpp.
|
protected |
Perform a delay while also monitoring socket file descriptors for readiness.
Definition at line 614 of file application.cpp.
|
protected |
Definition at line 685 of file application.h.
|
protected |
Definition at line 602 of file application.h.
|
protected |
Definition at line 624 of file application.h.
|
protected |
Definition at line 613 of file application.h.
|
protected |
Definition at line 627 of file application.h.
|
staticconstexpr |
Size of buffer required for build time string (including null terminator)
Definition at line 294 of file application.h.
|
protected |
Definition at line 633 of file application.h.
|
protected |
Definition at line 651 of file application.h.
|
protected |
Definition at line 510 of file application.h.
|
protected |
Definition at line 618 of file application.h.
|
protected |
Definition at line 648 of file application.h.
|
protected |
Definition at line 554 of file application.h.
|
protected |
Definition at line 599 of file application.h.
|
protected |
Definition at line 660 of file application.h.
|
protected |
Definition at line 666 of file application.h.
|
protected |
Definition at line 621 of file application.h.
|
protected |
Definition at line 586 of file application.h.
|
protected |
Definition at line 636 of file application.h.
|
protected |
Definition at line 645 of file application.h.
|
protected |
Definition at line 583 of file application.h.
|
protected |
Definition at line 605 of file application.h.
|
protected |
Definition at line 604 of file application.h.
|
protected |
Definition at line 691 of file application.h.
|
protected |
Definition at line 589 of file application.h.
|
protected |
Definition at line 654 of file application.h.
|
protected |
Definition at line 675 of file application.h.
|
protected |
Definition at line 590 of file application.h.
|
protected |
Definition at line 597 of file application.h.
|
protected |
Definition at line 573 of file application.h.
|
protected |
Definition at line 598 of file application.h.
|
protected |
Definition at line 593 of file application.h.
|
protected |
Definition at line 681 of file application.h.
|
protected |
Definition at line 582 of file application.h.
|
protected |
Definition at line 603 of file application.h.
|
protected |
Definition at line 657 of file application.h.
|
protected |
Definition at line 614 of file application.h.
|
protected |
Definition at line 669 of file application.h.
|
protected |
Definition at line 639 of file application.h.
|
protected |
Definition at line 575 of file application.h.
|
protected |
Definition at line 608 of file application.h.
|
protected |
Definition at line 630 of file application.h.
|
protected |
Definition at line 642 of file application.h.
|
protected |
Definition at line 672 of file application.h.
|
protected |
Definition at line 663 of file application.h.
|
protected |
Definition at line 694 of file application.h.
|
protected |
Definition at line 678 of file application.h.
|
protected |
Definition at line 577 of file application.h.
|
protected |
Definition at line 688 of file application.h.