|
ESPHome 2026.1.0-dev
|
#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_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_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. | |
| 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 | |
| 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 | 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< update::UpdateEntity *, ESPHOME_ENTITY_UPDATE_COUNT > | updates_ {} |
Definition at line 109 of file application.h.
|
protected |
Definition at line 414 of file application.cpp.
|
protected |
Definition at line 376 of file application.cpp.
|
protected |
Definition at line 522 of file application.cpp.
|
protected |
Definition at line 492 of file application.cpp.
|
protected |
Definition at line 352 of file application.cpp.
|
protected |
Definition at line 385 of file application.cpp.
|
inlineprotected |
Definition at line 675 of file application.h.
|
protected |
Definition at line 422 of file application.cpp.
|
protected |
Definition at line 439 of file application.cpp.
|
inline |
Get the build time as a string (deprecated, use get_build_time_string() instead)
Definition at line 300 of file application.h.
| void IRAM_ATTR HOT esphome::Application::feed_wdt | ( | uint32_t | time = 0 | ) |
Definition at line 214 of file application.cpp.
|
protected |
|
inline |
Definition at line 350 of file application.h.
|
inline |
Get the area of this Application set by pre_setup().
Definition at line 256 of file application.h.
|
inline |
Definition at line 375 of file application.h.
|
inline |
Definition at line 378 of file application.h.
|
inlineconstexpr |
Get the build time as a Unix timestamp.
Definition at line 292 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 723 of file application.cpp.
|
inline |
Get the comment of this Application as a string.
Definition at line 274 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 268 of file application.h.
|
inlineconstexpr |
Get the config hash as a 32-bit integer.
Definition at line 286 of file application.h.
|
inlineconstexpr |
Get the config hash extended with ESPHome version.
Definition at line 289 of file application.h.
|
inline |
Definition at line 140 of file application.h.
|
inline |
Definition at line 363 of file application.h.
|
inline |
Definition at line 452 of file application.h.
|
inline |
Definition at line 379 of file application.h.
|
inline |
Definition at line 387 of file application.h.
|
inline |
Definition at line 411 of file application.h.
|
inline |
Definition at line 403 of file application.h.
|
inline |
Definition at line 419 of file application.h.
|
inline |
Definition at line 427 of file application.h.
|
inline |
Definition at line 423 of file application.h.
|
inline |
Definition at line 462 of file application.h.
|
inline |
Definition at line 399 of file application.h.
|
inline |
Definition at line 407 of file application.h.
|
inline |
Definition at line 439 of file application.h.
|
inline |
Definition at line 447 of file application.h.
|
inline |
Definition at line 415 of file application.h.
|
inline |
Definition at line 435 of file application.h.
|
inline |
Definition at line 391 of file application.h.
|
inline |
Definition at line 383 of file application.h.
|
inline |
Definition at line 431 of file application.h.
|
inline |
Definition at line 395 of file application.h.
| esphome::Application::GET_ENTITY_METHOD | ( | update::UpdateEntity | , |
| update | , | ||
| updates | ) |
|
inline |
Definition at line 443 of file application.h.
|
inline |
Definition at line 457 of file application.h.
|
inline |
Get the friendly name of this Application set by pre_setup().
Definition at line 253 of file application.h.
|
inline |
Get the cached time in milliseconds from when the current component started its loop execution.
Definition at line 308 of file application.h.
|
inline |
Definition at line 330 of file application.h.
|
inline |
Get the name of this Application set by pre_setup().
Definition at line 250 of file application.h.
|
inline |
Definition at line 280 of file application.h.
| bool esphome::Application::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.
Definition at line 583 of file application.cpp.
| void esphome::Application::loop | ( | ) |
Make a loop iteration. Call this in your loop() function.
Definition at line 143 of file application.cpp.
|
inline |
Definition at line 111 of file application.h.
| void esphome::Application::reboot | ( | ) |
Definition at line 229 of file application.cpp.
|
inline |
Definition at line 217 of file application.h.
|
inline |
Definition at line 136 of file application.h.
|
inline |
Definition at line 143 of file application.h.
|
inline |
Definition at line 157 of file application.h.
|
inline |
Definition at line 173 of file application.h.
|
inline |
Reserve space for components to avoid memory fragmentation.
Register the component in this Application instance.
Definition at line 237 of file application.h.
|
protected |
Definition at line 69 of file application.cpp.
|
inline |
Definition at line 169 of file application.h.
|
inline |
Definition at line 185 of file application.h.
|
inline |
Definition at line 193 of file application.h.
|
inline |
Definition at line 133 of file application.h.
|
inline |
Definition at line 227 of file application.h.
|
inline |
Definition at line 165 of file application.h.
|
inline |
Definition at line 177 of file application.h.
|
inline |
Definition at line 205 of file application.h.
|
inline |
Definition at line 213 of file application.h.
|
inline |
Definition at line 181 of file application.h.
|
inline |
Definition at line 201 of file application.h.
|
inline |
Definition at line 149 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 528 of file application.cpp.
|
inline |
Definition at line 153 of file application.h.
|
inline |
Definition at line 197 of file application.h.
|
inline |
Definition at line 161 of file application.h.
|
inline |
Definition at line 189 of file application.h.
|
inline |
Definition at line 231 of file application.h.
|
inline |
Definition at line 209 of file application.h.
|
inline |
Definition at line 223 of file application.h.
| void esphome::Application::run_powerdown_hooks | ( | ) |
Definition at line 253 of file application.cpp.
| void esphome::Application::run_safe_shutdown_hooks | ( | ) |
Definition at line 244 of file application.cpp.
| void esphome::Application::safe_reboot | ( | ) |
Definition at line 236 of file application.cpp.
|
inline |
Definition at line 332 of file application.h.
|
inline |
Definition at line 139 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 326 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 83 of file application.cpp.
|
protected |
Definition at line 655 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 259 of file application.cpp.
| void esphome::Application::unregister_socket_fd | ( | int | fd | ) |
Definition at line 555 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 709 of file application.cpp.
|
protected |
Perform a delay while also monitoring socket file descriptors for readiness.
Definition at line 594 of file application.cpp.
|
protected |
Definition at line 654 of file application.h.
|
protected |
Definition at line 571 of file application.h.
|
protected |
Definition at line 593 of file application.h.
|
protected |
Definition at line 582 of file application.h.
|
protected |
Definition at line 596 of file application.h.
|
staticconstexpr |
Size of buffer required for build time string (including null terminator)
Definition at line 283 of file application.h.
|
protected |
Definition at line 602 of file application.h.
|
protected |
Definition at line 620 of file application.h.
|
protected |
Definition at line 493 of file application.h.
|
protected |
Definition at line 587 of file application.h.
|
protected |
Definition at line 617 of file application.h.
|
protected |
Definition at line 523 of file application.h.
|
protected |
Definition at line 568 of file application.h.
|
protected |
Definition at line 629 of file application.h.
|
protected |
Definition at line 635 of file application.h.
|
protected |
Definition at line 590 of file application.h.
|
protected |
Definition at line 555 of file application.h.
|
protected |
Definition at line 605 of file application.h.
|
protected |
Definition at line 614 of file application.h.
|
protected |
Definition at line 552 of file application.h.
|
protected |
Definition at line 574 of file application.h.
|
protected |
Definition at line 573 of file application.h.
|
protected |
Definition at line 558 of file application.h.
|
protected |
Definition at line 623 of file application.h.
|
protected |
Definition at line 644 of file application.h.
|
protected |
Definition at line 559 of file application.h.
|
protected |
Definition at line 566 of file application.h.
|
protected |
Definition at line 542 of file application.h.
|
protected |
Definition at line 567 of file application.h.
|
protected |
Definition at line 562 of file application.h.
|
protected |
Definition at line 650 of file application.h.
|
protected |
Definition at line 551 of file application.h.
|
protected |
Definition at line 572 of file application.h.
|
protected |
Definition at line 626 of file application.h.
|
protected |
Definition at line 583 of file application.h.
|
protected |
Definition at line 638 of file application.h.
|
protected |
Definition at line 608 of file application.h.
|
protected |
Definition at line 544 of file application.h.
|
protected |
Definition at line 577 of file application.h.
|
protected |
Definition at line 599 of file application.h.
|
protected |
Definition at line 611 of file application.h.
|
protected |
Definition at line 641 of file application.h.
|
protected |
Definition at line 632 of file application.h.
|
protected |
Definition at line 660 of file application.h.
|
protected |
Definition at line 647 of file application.h.
|
protected |
Definition at line 546 of file application.h.
|
protected |
Definition at line 657 of file application.h.