|
ESPHome 2026.3.0
|
#include <application.h>
Public Member Functions | |
| void | pre_setup (char *name, size_t name_len, char *friendly_name, size_t friendly_name_len) |
| Pre-setup with MAC suffix: overwrites placeholder in mutable static buffers with actual MAC. | |
| void | pre_setup (const char *name, size_t name_len, const char *friendly_name, size_t friendly_name_len) |
| Pre-setup without MAC suffix: StringRef points directly at const string literals in flash. | |
| 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_serial_proxy (serial_proxy::SerialProxy *proxy) |
| void | register_event (event::Event *event) |
| void | register_update (update::UpdateEntity *update) |
| void | setup () |
| Reserve space for components to avoid memory fragmentation. | |
| void | loop () |
| Make a loop iteration. Call this in your loop() function. | |
| const StringRef & | get_name () const |
| Get the name of this Application set by pre_setup(). | |
| const StringRef & | 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_MAX > buffer) |
| Copy the comment string into the provided buffer. | |
| std::string | get_comment () |
| Get the comment of this Application as a string. | |
| bool | is_name_add_mac_suffix_enabled () const |
| uint32_t | get_config_hash () |
| Get the config hash as a 32-bit integer. | |
| uint32_t | get_config_version_hash () |
| Get the config hash extended with ESPHome version. | |
| 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_serial_proxies() const | |
| 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 (struct lwip_sock *sock) |
| Register/unregister a socket to be monitored for read events. | |
| void | unregister_socket (struct lwip_sock *sock) |
| bool | register_socket_fd (int fd) |
| Fallback select() path: monitors file descriptors. | |
| void | unregister_socket_fd (int fd) |
| void | wake_loop_threadsafe () |
| Wake the main event loop from another FreeRTOS task. | |
Static Public Member Functions | |
| static void IRAM_ATTR | wake_loop_isrsafe (int *px_higher_priority_task_woken) |
| Wake the main event loop from an ISR. | |
| static void IRAM_ATTR | wake_loop_any_context () |
| Wake the main event loop from any context (ISR, thread, or main loop). | |
| static void IRAM_ATTR | wake_loop_any_context () |
| Wake the main event loop from any context (ISR, thread, or main loop). | |
| static void | wake_loop_any_context () |
| Wake the main event loop from any context. | |
Static Public Attributes | |
| static constexpr size_t | ESPHOME_COMMENT_SIZE_MAX = 256 |
| Maximum size of the comment buffer (including null terminator) | |
| static constexpr size_t | BUILD_TIME_STR_SIZE = 26 |
| Size of buffer required for build time string (including null terminator) | |
Protected Member Functions | |
| friend | void::setup () |
| friend | void::original_setup () |
| bool | is_socket_ready_ (int fd) const |
| template<typename T > | |
| void | register_component_ (T *comp) |
| Register a component, detecting loop() override at compile time. | |
| void | register_component_impl_ (Component *comp, bool has_loop) |
| 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_ () |
Definition at line 142 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 451 of file application.cpp.
|
protected |
Definition at line 413 of file application.cpp.
|
protected |
Definition at line 558 of file application.cpp.
|
protected |
Definition at line 528 of file application.cpp.
|
protected |
Definition at line 397 of file application.cpp.
|
protected |
Definition at line 422 of file application.cpp.
|
inlineprotected |
Definition at line 789 of file application.h.
|
protected |
Definition at line 459 of file application.cpp.
|
protected |
Definition at line 476 of file application.cpp.
|
inline |
Get the build time as a string (deprecated, use get_build_time_string() instead)
Definition at line 348 of file application.h.
| void HOT esphome::Application::feed_wdt | ( | uint32_t | time = 0 | ) |
Definition at line 259 of file application.cpp.
|
protected |
|
inline |
Definition at line 398 of file application.h.
|
inline |
Get the area of this Application set by pre_setup().
Definition at line 305 of file application.h.
|
inline |
Definition at line 423 of file application.h.
|
inline |
Definition at line 426 of file application.h.
| time_t esphome::Application::get_build_time | ( | ) |
Get the build time as a Unix timestamp.
Definition at line 839 of file application.cpp.
| 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 825 of file application.cpp.
|
inline |
Get the comment of this Application as a string.
Definition at line 322 of file application.h.
| void esphome::Application::get_comment_string | ( | std::span< char, ESPHOME_COMMENT_SIZE_MAX > | buffer | ) |
Copy the comment string into the provided buffer.
Definition at line 830 of file application.cpp.
| uint32_t esphome::Application::get_config_hash | ( | ) |
Get the config hash as a 32-bit integer.
Definition at line 835 of file application.cpp.
| uint32_t esphome::Application::get_config_version_hash | ( | ) |
Get the config hash extended with ESPHome version.
Definition at line 837 of file application.cpp.
|
inline |
Definition at line 185 of file application.h.
|
inline |
Definition at line 411 of file application.h.
|
inline |
Definition at line 500 of file application.h.
|
inline |
Definition at line 427 of file application.h.
|
inline |
Definition at line 435 of file application.h.
|
inline |
Definition at line 459 of file application.h.
|
inline |
Definition at line 451 of file application.h.
|
inline |
Definition at line 467 of file application.h.
|
inline |
Definition at line 475 of file application.h.
|
inline |
Definition at line 471 of file application.h.
|
inline |
Definition at line 519 of file application.h.
|
inline |
Definition at line 447 of file application.h.
|
inline |
Definition at line 510 of file application.h.
|
inline |
Definition at line 455 of file application.h.
|
inline |
Definition at line 487 of file application.h.
|
inline |
Definition at line 495 of file application.h.
|
inline |
Definition at line 463 of file application.h.
|
inline |
Definition at line 483 of file application.h.
|
inline |
Definition at line 439 of file application.h.
|
inline |
Definition at line 431 of file application.h.
|
inline |
Definition at line 479 of file application.h.
|
inline |
Definition at line 443 of file application.h.
| esphome::Application::GET_ENTITY_METHOD | ( | update::UpdateEntity | , |
| update | , | ||
| updates | ) |
|
inline |
Definition at line 491 of file application.h.
|
inline |
Definition at line 505 of file application.h.
|
inline |
Definition at line 518 of file application.h.
|
inline |
Get the friendly name of this Application set by pre_setup().
Definition at line 302 of file application.h.
|
inline |
Get the cached time in milliseconds from when the current component started its loop execution.
Definition at line 356 of file application.h.
|
inline |
Definition at line 378 of file application.h.
|
inline |
Get the name of this Application set by pre_setup().
Definition at line 299 of file application.h.
|
inline |
Definition at line 328 of file application.h.
|
inlineprotected |
Definition at line 587 of file application.h.
| void esphome::Application::loop | ( | ) |
Make a loop iteration. Call this in your loop() function.
Definition at line 166 of file application.cpp.
|
inline |
Pre-setup with MAC suffix: overwrites placeholder in mutable static buffers with actual MAC.
Definition at line 147 of file application.h.
|
inline |
Pre-setup without MAC suffix: StringRef points directly at const string literals in flash.
Definition at line 169 of file application.h.
| void esphome::Application::reboot | ( | ) |
Definition at line 274 of file application.cpp.
|
inline |
Definition at line 262 of file application.h.
|
inline |
Definition at line 181 of file application.h.
|
inline |
Definition at line 188 of file application.h.
|
inline |
Definition at line 202 of file application.h.
|
inline |
Definition at line 218 of file application.h.
|
inlineprotected |
Register a component, detecting loop() override at compile time.
Uses HasLoopOverride<T> which handles ambiguous &T::loop from multiple inheritance.
Definition at line 592 of file application.h.
|
protected |
Definition at line 82 of file application.cpp.
|
inline |
Definition at line 214 of file application.h.
|
inline |
Definition at line 230 of file application.h.
|
inline |
Definition at line 238 of file application.h.
|
inline |
Definition at line 178 of file application.h.
|
inline |
Definition at line 283 of file application.h.
|
inline |
Definition at line 210 of file application.h.
|
inline |
Definition at line 272 of file application.h.
|
inline |
Definition at line 222 of file application.h.
|
inline |
Definition at line 250 of file application.h.
|
inline |
Definition at line 258 of file application.h.
|
inline |
Definition at line 226 of file application.h.
|
inline |
Definition at line 246 of file application.h.
|
inline |
Definition at line 194 of file application.h.
|
inline |
Definition at line 276 of file application.h.
| bool esphome::Application::register_socket | ( | struct lwip_sock * | sock | ) |
Register/unregister a socket to be monitored for read events.
WARNING: These functions are NOT thread-safe. They must only be called from the main loop. Fast select path: hooks netconn callback and registers for monitoring.
Definition at line 564 of file application.cpp.
| bool esphome::Application::register_socket_fd | ( | int | fd | ) |
Fallback select() path: monitors file descriptors.
NOTE: File descriptors >= FD_SETSIZE (typically 10 on ESP) will be rejected with an error.
Definition at line 589 of file application.cpp.
|
inline |
Definition at line 198 of file application.h.
|
inline |
Definition at line 242 of file application.h.
|
inline |
Definition at line 206 of file application.h.
|
inline |
Definition at line 234 of file application.h.
|
inline |
Definition at line 287 of file application.h.
|
inline |
Definition at line 254 of file application.h.
|
inline |
Definition at line 268 of file application.h.
| void esphome::Application::run_powerdown_hooks | ( | ) |
Definition at line 298 of file application.cpp.
| void esphome::Application::run_safe_shutdown_hooks | ( | ) |
Definition at line 289 of file application.cpp.
| void esphome::Application::safe_reboot | ( | ) |
Definition at line 281 of file application.cpp.
|
inline |
Definition at line 380 of file application.h.
|
inline |
Definition at line 184 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 374 of file application.h.
| void esphome::Application::setup | ( | ) |
Reserve space for components to avoid memory fragmentation.
Set up all the registered components. Call this at the end of your setup() function.
Definition at line 88 of file application.cpp.
|
protected |
Definition at line 755 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 304 of file application.cpp.
| void esphome::Application::unregister_socket | ( | struct lwip_sock * | sock | ) |
Definition at line 573 of file application.cpp.
| void esphome::Application::unregister_socket_fd | ( | int | fd | ) |
Definition at line 615 of file application.cpp.
|
protected |
|
protected |
|
inlinestatic |
Wake the main event loop from any context (ISR, thread, or main loop).
Detects the calling context and uses the appropriate FreeRTOS API.
Definition at line 564 of file application.h.
|
inlinestatic |
Wake the main event loop from any context (ISR, thread, or main loop).
Sets the socket wake flag and calls esp_schedule() to exit esp_delay() early.
Definition at line 571 of file application.h.
|
inlinestatic |
Wake the main event loop from any context.
Sets the socket wake flag and calls __sev() to exit __wfe() early.
Definition at line 575 of file application.h.
|
inlinestatic |
Wake the main event loop from an ISR.
Uses vTaskNotifyGiveFromISR() — <1 us, ISR-safe. Only available on platforms with fast select (ESP32, LibreTiny).
| px_higher_priority_task_woken | Set to pdTRUE if a context switch is needed. |
Definition at line 557 of file application.h.
| void esphome::Application::wake_loop_threadsafe | ( | ) |
Wake the main event loop from another FreeRTOS task.
Thread-safe, but must only be called from task context (NOT ISR-safe). On ESP32: uses xTaskNotifyGive (<1 us) On other platforms: uses UDP loopback socket
Definition at line 749 of file application.cpp.
|
protected |
Perform a delay while also monitoring socket file descriptors for readiness.
Definition at line 644 of file application.cpp.
|
protected |
Definition at line 762 of file application.h.
|
protected |
Definition at line 679 of file application.h.
|
protected |
Definition at line 701 of file application.h.
|
protected |
Definition at line 691 of file application.h.
|
protected |
Definition at line 704 of file application.h.
|
staticconstexpr |
Size of buffer required for build time string (including null terminator)
Definition at line 331 of file application.h.
|
protected |
Definition at line 710 of file application.h.
|
protected |
Definition at line 728 of file application.h.
|
protected |
Definition at line 579 of file application.h.
|
protected |
Definition at line 695 of file application.h.
|
protected |
Definition at line 725 of file application.h.
|
protected |
Definition at line 629 of file application.h.
|
protected |
Definition at line 676 of file application.h.
|
protected |
Definition at line 737 of file application.h.
|
protected |
Definition at line 743 of file application.h.
|
protected |
Definition at line 698 of file application.h.
|
protected |
Definition at line 673 of file application.h.
|
staticconstexpr |
Maximum size of the comment buffer (including null terminator)
Definition at line 316 of file application.h.
|
protected |
Definition at line 713 of file application.h.
|
protected |
Definition at line 722 of file application.h.
|
protected |
Definition at line 662 of file application.h.
|
protected |
Definition at line 682 of file application.h.
|
protected |
Definition at line 681 of file application.h.
|
protected |
Definition at line 768 of file application.h.
|
protected |
Definition at line 665 of file application.h.
|
protected |
Definition at line 731 of file application.h.
|
protected |
Definition at line 752 of file application.h.
|
protected |
Definition at line 666 of file application.h.
|
protected |
Definition at line 674 of file application.h.
|
protected |
Definition at line 648 of file application.h.
|
protected |
Definition at line 675 of file application.h.
|
protected |
Definition at line 669 of file application.h.
|
protected |
Definition at line 758 of file application.h.
|
protected |
Definition at line 650 of file application.h.
|
protected |
Definition at line 661 of file application.h.
|
protected |
Definition at line 680 of file application.h.
|
protected |
Definition at line 734 of file application.h.
|
protected |
Definition at line 690 of file application.h.
|
protected |
Definition at line 746 of file application.h.
|
protected |
Definition at line 716 of file application.h.
|
protected |
Definition at line 771 of file application.h.
|
protected |
Definition at line 652 of file application.h.
|
protected |
Definition at line 685 of file application.h.
|
protected |
Definition at line 707 of file application.h.
|
protected |
Definition at line 719 of file application.h.
|
protected |
Definition at line 749 of file application.h.
|
protected |
Definition at line 740 of file application.h.
|
protected |
Definition at line 774 of file application.h.
|
protected |
Definition at line 755 of file application.h.
|
protected |
Definition at line 656 of file application.h.
|
protected |
Definition at line 765 of file application.h.