ESPHome 2025.9.0
|
#include <application.h>
Public Member Functions | |
void | pre_setup (const std::string &name, const std::string &friendly_name, const char *comment, const char *compilation_time, 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_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(). | |
std::string | get_comment () const |
Get the comment of this Application set by pre_setup(). | |
bool | is_name_add_mac_suffix_enabled () const |
std::string | get_compilation_time () const |
StringRef | get_compilation_time_ref () const |
Get the compilation time as StringRef (for API usage) | |
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_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. | |
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. | |
Protected Attributes | |
friend | Component |
Component * | current_component_ {nullptr} |
const char * | comment_ {nullptr} |
const char * | compilation_time_ {nullptr} |
std::vector< Component * > | looping_components_ {} |
std::vector< int > | socket_fds_ |
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< update::UpdateEntity *, ESPHOME_ENTITY_UPDATE_COUNT > | updates_ {} |
Definition at line 98 of file application.h.
|
protected |
Definition at line 396 of file application.cpp.
|
protected |
Definition at line 358 of file application.cpp.
|
protected |
Definition at line 499 of file application.cpp.
|
protected |
Definition at line 474 of file application.cpp.
|
protected |
Definition at line 334 of file application.cpp.
|
protected |
Definition at line 367 of file application.cpp.
|
protected |
Definition at line 404 of file application.cpp.
|
protected |
Definition at line 421 of file application.cpp.
void IRAM_ATTR HOT esphome::Application::feed_wdt | ( | uint32_t | time = 0 | ) |
Definition at line 196 of file application.cpp.
|
protected |
|
inline |
Definition at line 298 of file application.h.
|
inline |
Get the area of this Application set by pre_setup().
Definition at line 236 of file application.h.
|
inline |
Definition at line 323 of file application.h.
|
inline |
Definition at line 326 of file application.h.
|
inline |
Get the comment of this Application set by pre_setup().
Definition at line 247 of file application.h.
|
inline |
Definition at line 251 of file application.h.
|
inline |
Get the compilation time as StringRef (for API usage)
Definition at line 253 of file application.h.
|
inline |
Definition at line 124 of file application.h.
|
inline |
Definition at line 311 of file application.h.
|
inline |
Definition at line 400 of file application.h.
|
inline |
Definition at line 327 of file application.h.
|
inline |
Definition at line 335 of file application.h.
|
inline |
Definition at line 359 of file application.h.
|
inline |
Definition at line 351 of file application.h.
|
inline |
Definition at line 367 of file application.h.
|
inline |
Definition at line 375 of file application.h.
|
inline |
Definition at line 371 of file application.h.
|
inline |
Definition at line 405 of file application.h.
|
inline |
Definition at line 347 of file application.h.
|
inline |
Definition at line 355 of file application.h.
|
inline |
Definition at line 387 of file application.h.
|
inline |
Definition at line 395 of file application.h.
|
inline |
Definition at line 363 of file application.h.
|
inline |
Definition at line 383 of file application.h.
|
inline |
Definition at line 339 of file application.h.
|
inline |
Definition at line 331 of file application.h.
|
inline |
Definition at line 379 of file application.h.
|
inline |
Definition at line 343 of file application.h.
esphome::Application::GET_ENTITY_METHOD | ( | update::UpdateEntity | , |
update | , | ||
updates | ) |
|
inline |
Definition at line 391 of file application.h.
|
inline |
Get the friendly name of this Application set by pre_setup().
Definition at line 233 of file application.h.
|
inline |
Get the cached time in milliseconds from when the current component started its loop execution.
Definition at line 256 of file application.h.
|
inline |
Definition at line 278 of file application.h.
|
inline |
Get the name of this Application set by pre_setup().
Definition at line 230 of file application.h.
|
inline |
Definition at line 249 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 560 of file application.cpp.
void esphome::Application::loop | ( | ) |
Make a loop iteration. Call this in your loop() function.
Definition at line 127 of file application.cpp.
|
inline |
Definition at line 100 of file application.h.
void esphome::Application::reboot | ( | ) |
Definition at line 211 of file application.cpp.
|
inline |
Definition at line 201 of file application.h.
|
inline |
Definition at line 120 of file application.h.
|
inline |
Definition at line 127 of file application.h.
|
inline |
Definition at line 141 of file application.h.
|
inline |
Definition at line 157 of file application.h.
|
inline |
Reserve space for components to avoid memory fragmentation.
Register the component in this Application instance.
Definition at line 217 of file application.h.
|
protected |
Definition at line 58 of file application.cpp.
|
inline |
Definition at line 153 of file application.h.
|
inline |
Definition at line 169 of file application.h.
|
inline |
Definition at line 177 of file application.h.
|
inline |
Definition at line 117 of file application.h.
|
inline |
Definition at line 207 of file application.h.
|
inline |
Definition at line 149 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 197 of file application.h.
|
inline |
Definition at line 165 of file application.h.
|
inline |
Definition at line 185 of file application.h.
|
inline |
Definition at line 133 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 505 of file application.cpp.
|
inline |
Definition at line 137 of file application.h.
|
inline |
Definition at line 181 of file application.h.
|
inline |
Definition at line 145 of file application.h.
|
inline |
Definition at line 173 of file application.h.
|
inline |
Definition at line 211 of file application.h.
|
inline |
Definition at line 193 of file application.h.
void esphome::Application::run_powerdown_hooks | ( | ) |
Definition at line 235 of file application.cpp.
void esphome::Application::run_safe_shutdown_hooks | ( | ) |
Definition at line 226 of file application.cpp.
void esphome::Application::safe_reboot | ( | ) |
Definition at line 218 of file application.cpp.
|
inline |
Definition at line 280 of file application.h.
|
inline |
Definition at line 123 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 274 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 72 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 241 of file application.cpp.
void esphome::Application::unregister_socket_fd | ( | int | fd | ) |
Definition at line 532 of file application.cpp.
|
protected |
Perform a delay while also monitoring socket file descriptors for readiness.
Definition at line 571 of file application.cpp.
|
protected |
Definition at line 584 of file application.h.
|
protected |
Definition at line 501 of file application.h.
|
protected |
Definition at line 523 of file application.h.
|
protected |
Definition at line 512 of file application.h.
|
protected |
Definition at line 526 of file application.h.
|
protected |
Definition at line 532 of file application.h.
|
protected |
Definition at line 550 of file application.h.
|
protected |
Definition at line 455 of file application.h.
|
protected |
Definition at line 456 of file application.h.
|
protected |
Definition at line 429 of file application.h.
|
protected |
Definition at line 517 of file application.h.
|
protected |
Definition at line 547 of file application.h.
|
protected |
Definition at line 454 of file application.h.
|
protected |
Definition at line 498 of file application.h.
|
protected |
Definition at line 559 of file application.h.
|
protected |
Definition at line 565 of file application.h.
|
protected |
Definition at line 520 of file application.h.
|
protected |
Definition at line 485 of file application.h.
|
protected |
Definition at line 535 of file application.h.
|
protected |
Definition at line 544 of file application.h.
|
protected |
Definition at line 482 of file application.h.
|
protected |
Definition at line 504 of file application.h.
|
protected |
Definition at line 503 of file application.h.
|
protected |
Definition at line 488 of file application.h.
|
protected |
Definition at line 553 of file application.h.
|
protected |
Definition at line 574 of file application.h.
|
protected |
Definition at line 489 of file application.h.
|
protected |
Definition at line 496 of file application.h.
|
protected |
Definition at line 475 of file application.h.
|
protected |
Definition at line 497 of file application.h.
|
protected |
Definition at line 492 of file application.h.
|
protected |
Definition at line 580 of file application.h.
|
protected |
Definition at line 481 of file application.h.
|
protected |
Definition at line 502 of file application.h.
|
protected |
Definition at line 556 of file application.h.
|
protected |
Definition at line 513 of file application.h.
|
protected |
Definition at line 568 of file application.h.
|
protected |
Definition at line 538 of file application.h.
|
protected |
Definition at line 477 of file application.h.
|
protected |
Definition at line 507 of file application.h.
|
protected |
Definition at line 529 of file application.h.
|
protected |
Definition at line 541 of file application.h.
|
protected |
Definition at line 571 of file application.h.
|
protected |
Definition at line 562 of file application.h.
|
protected |
Definition at line 587 of file application.h.
|
protected |
Definition at line 577 of file application.h.