ESPHome  2024.5.0
Public Member Functions | Data Fields | Protected Member Functions | Protected Attributes
esphome::Application Class Reference

#include <application.h>

Public Member Functions

void pre_setup (const std::string &name, const std::string &friendly_name, const std::string &area, const char *comment, const char *compilation_time, bool name_add_mac_suffix)
 
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)
 
template<class C >
C * register_component (C *c)
 Register the component in this Application instance. More...
 
void setup ()
 Set up all the registered components. Call this at the end of your setup() function. More...
 
void loop ()
 Make a loop iteration. Call this in your loop() function. More...
 
const std::string & get_name () const
 Get the name of this Application set by pre_setup(). More...
 
const std::string & get_friendly_name () const
 Get the friendly name of this Application set by pre_setup(). More...
 
const std::string & get_area () const
 Get the area of this Application set by pre_setup(). More...
 
std::string get_comment () const
 Get the comment of this Application set by pre_setup(). More...
 
bool is_name_add_mac_suffix_enabled () const
 
std::string get_compilation_time () const
 
void set_loop_interval (uint32_t loop_interval)
 Set the target interval with which to run the loop() calls. More...
 
uint32_t get_loop_interval () const
 
void schedule_dump_config ()
 
void feed_wdt ()
 
void reboot ()
 
void safe_reboot ()
 
void run_safe_shutdown_hooks ()
 
uint32_t get_app_state () const
 
const std::vector< binary_sensor::BinarySensor * > & get_binary_sensors ()
 
binary_sensor::BinarySensorget_binary_sensor_by_key (uint32_t key, bool include_internal=false)
 
const std::vector< switch_::Switch * > & get_switches ()
 
switch_::Switchget_switch_by_key (uint32_t key, bool include_internal=false)
 
const std::vector< button::Button * > & get_buttons ()
 
button::Buttonget_button_by_key (uint32_t key, bool include_internal=false)
 
const std::vector< sensor::Sensor * > & get_sensors ()
 
sensor::Sensorget_sensor_by_key (uint32_t key, bool include_internal=false)
 
const std::vector< text_sensor::TextSensor * > & get_text_sensors ()
 
text_sensor::TextSensorget_text_sensor_by_key (uint32_t key, bool include_internal=false)
 
const std::vector< fan::Fan * > & get_fans ()
 
fan::Fanget_fan_by_key (uint32_t key, bool include_internal=false)
 
const std::vector< cover::Cover * > & get_covers ()
 
cover::Coverget_cover_by_key (uint32_t key, bool include_internal=false)
 
const std::vector< light::LightState * > & get_lights ()
 
light::LightStateget_light_by_key (uint32_t key, bool include_internal=false)
 
const std::vector< climate::Climate * > & get_climates ()
 
climate::Climateget_climate_by_key (uint32_t key, bool include_internal=false)
 
const std::vector< number::Number * > & get_numbers ()
 
number::Numberget_number_by_key (uint32_t key, bool include_internal=false)
 
const std::vector< datetime::DateEntity * > & get_dates ()
 
datetime::DateEntityget_date_by_key (uint32_t key, bool include_internal=false)
 
const std::vector< datetime::TimeEntity * > & get_times ()
 
datetime::TimeEntityget_time_by_key (uint32_t key, bool include_internal=false)
 
const std::vector< datetime::DateTimeEntity * > & get_datetimes ()
 
datetime::DateTimeEntityget_datetime_by_key (uint32_t key, bool include_internal=false)
 
const std::vector< text::Text * > & get_texts ()
 
text::Textget_text_by_key (uint32_t key, bool include_internal=false)
 
const std::vector< select::Select * > & get_selects ()
 
select::Selectget_select_by_key (uint32_t key, bool include_internal=false)
 
const std::vector< lock::Lock * > & get_locks ()
 
lock::Lockget_lock_by_key (uint32_t key, bool include_internal=false)
 
const std::vector< valve::Valve * > & get_valves ()
 
valve::Valveget_valve_by_key (uint32_t key, bool include_internal=false)
 
const std::vector< media_player::MediaPlayer * > & get_media_players ()
 
media_player::MediaPlayerget_media_player_by_key (uint32_t key, bool include_internal=false)
 
const std::vector< alarm_control_panel::AlarmControlPanel * > & get_alarm_control_panels ()
 
alarm_control_panel::AlarmControlPanelget_alarm_control_panel_by_key (uint32_t key, bool include_internal=false)
 
const std::vector< event::Event * > & get_events ()
 
event::Eventget_event_by_key (uint32_t key, bool include_internal=false)
 

Data Fields

Scheduler scheduler
 

Protected Member Functions

void register_component_ (Component *comp)
 
void calculate_looping_components_ ()
 
void feed_wdt_arch_ ()
 

Protected Attributes

friend Component
 
std::vector< Component * > components_ {}
 
std::vector< Component * > looping_components_ {}
 
std::vector< binary_sensor::BinarySensor * > binary_sensors_ {}
 
std::vector< switch_::Switch * > switches_ {}
 
std::vector< button::Button * > buttons_ {}
 
std::vector< event::Event * > events_ {}
 
std::vector< sensor::Sensor * > sensors_ {}
 
std::vector< text_sensor::TextSensor * > text_sensors_ {}
 
std::vector< fan::Fan * > fans_ {}
 
std::vector< cover::Cover * > covers_ {}
 
std::vector< climate::Climate * > climates_ {}
 
std::vector< light::LightState * > lights_ {}
 
std::vector< number::Number * > numbers_ {}
 
std::vector< datetime::DateEntity * > dates_ {}
 
std::vector< datetime::TimeEntity * > times_ {}
 
std::vector< datetime::DateTimeEntity * > datetimes_ {}
 
std::vector< select::Select * > selects_ {}
 
std::vector< text::Text * > texts_ {}
 
std::vector< lock::Lock * > locks_ {}
 
std::vector< valve::Valve * > valves_ {}
 
std::vector< media_player::MediaPlayer * > media_players_ {}
 
std::vector< alarm_control_panel::AlarmControlPanel * > alarm_control_panels_ {}
 
std::string name_
 
std::string friendly_name_
 
std::string area_
 
const char * comment_ {nullptr}
 
const char * compilation_time_ {nullptr}
 
bool name_add_mac_suffix_
 
uint32_t last_loop_ {0}
 
uint32_t loop_interval_ {16}
 
size_t dump_config_at_ {SIZE_MAX}
 
uint32_t app_state_ {0}
 

Detailed Description

Definition at line 75 of file application.h.

Member Function Documentation

◆ calculate_looping_components_()

void esphome::Application::calculate_looping_components_ ( )
protected

Definition at line 146 of file application.cpp.

◆ feed_wdt()

void IRAM_ATTR HOT esphome::Application::feed_wdt ( )

Definition at line 111 of file application.cpp.

◆ feed_wdt_arch_()

void esphome::Application::feed_wdt_arch_ ( )
protected

◆ get_alarm_control_panel_by_key()

alarm_control_panel::AlarmControlPanel* esphome::Application::get_alarm_control_panel_by_key ( uint32_t  key,
bool  include_internal = false 
)
inline

Definition at line 406 of file application.h.

◆ get_alarm_control_panels()

const std::vector<alarm_control_panel::AlarmControlPanel *>& esphome::Application::get_alarm_control_panels ( )
inline

Definition at line 403 of file application.h.

◆ get_app_state()

uint32_t esphome::Application::get_app_state ( ) const
inline

Definition at line 237 of file application.h.

◆ get_area()

const std::string& esphome::Application::get_area ( ) const
inline

Get the area of this Application set by pre_setup().

Definition at line 201 of file application.h.

◆ get_binary_sensor_by_key()

binary_sensor::BinarySensor* esphome::Application::get_binary_sensor_by_key ( uint32_t  key,
bool  include_internal = false 
)
inline

Definition at line 241 of file application.h.

◆ get_binary_sensors()

const std::vector<binary_sensor::BinarySensor *>& esphome::Application::get_binary_sensors ( )
inline

Definition at line 240 of file application.h.

◆ get_button_by_key()

button::Button* esphome::Application::get_button_by_key ( uint32_t  key,
bool  include_internal = false 
)
inline

Definition at line 259 of file application.h.

◆ get_buttons()

const std::vector<button::Button *>& esphome::Application::get_buttons ( )
inline

Definition at line 258 of file application.h.

◆ get_climate_by_key()

climate::Climate* esphome::Application::get_climate_by_key ( uint32_t  key,
bool  include_internal = false 
)
inline

Definition at line 313 of file application.h.

◆ get_climates()

const std::vector<climate::Climate *>& esphome::Application::get_climates ( )
inline

Definition at line 312 of file application.h.

◆ get_comment()

std::string esphome::Application::get_comment ( ) const
inline

Get the comment of this Application set by pre_setup().

Definition at line 204 of file application.h.

◆ get_compilation_time()

std::string esphome::Application::get_compilation_time ( ) const
inline

Definition at line 208 of file application.h.

◆ get_cover_by_key()

cover::Cover* esphome::Application::get_cover_by_key ( uint32_t  key,
bool  include_internal = false 
)
inline

Definition at line 295 of file application.h.

◆ get_covers()

const std::vector<cover::Cover *>& esphome::Application::get_covers ( )
inline

Definition at line 294 of file application.h.

◆ get_date_by_key()

datetime::DateEntity* esphome::Application::get_date_by_key ( uint32_t  key,
bool  include_internal = false 
)
inline

Definition at line 331 of file application.h.

◆ get_dates()

const std::vector<datetime::DateEntity *>& esphome::Application::get_dates ( )
inline

Definition at line 330 of file application.h.

◆ get_datetime_by_key()

datetime::DateTimeEntity* esphome::Application::get_datetime_by_key ( uint32_t  key,
bool  include_internal = false 
)
inline

Definition at line 349 of file application.h.

◆ get_datetimes()

const std::vector<datetime::DateTimeEntity *>& esphome::Application::get_datetimes ( )
inline

Definition at line 348 of file application.h.

◆ get_event_by_key()

event::Event* esphome::Application::get_event_by_key ( uint32_t  key,
bool  include_internal = false 
)
inline

Definition at line 416 of file application.h.

◆ get_events()

const std::vector<event::Event *>& esphome::Application::get_events ( )
inline

Definition at line 415 of file application.h.

◆ get_fan_by_key()

fan::Fan* esphome::Application::get_fan_by_key ( uint32_t  key,
bool  include_internal = false 
)
inline

Definition at line 286 of file application.h.

◆ get_fans()

const std::vector<fan::Fan *>& esphome::Application::get_fans ( )
inline

Definition at line 285 of file application.h.

◆ get_friendly_name()

const std::string& esphome::Application::get_friendly_name ( ) const
inline

Get the friendly name of this Application set by pre_setup().

Definition at line 198 of file application.h.

◆ get_light_by_key()

light::LightState* esphome::Application::get_light_by_key ( uint32_t  key,
bool  include_internal = false 
)
inline

Definition at line 304 of file application.h.

◆ get_lights()

const std::vector<light::LightState *>& esphome::Application::get_lights ( )
inline

Definition at line 303 of file application.h.

◆ get_lock_by_key()

lock::Lock* esphome::Application::get_lock_by_key ( uint32_t  key,
bool  include_internal = false 
)
inline

Definition at line 376 of file application.h.

◆ get_locks()

const std::vector<lock::Lock *>& esphome::Application::get_locks ( )
inline

Definition at line 375 of file application.h.

◆ get_loop_interval()

uint32_t esphome::Application::get_loop_interval ( ) const
inline

Definition at line 225 of file application.h.

◆ get_media_player_by_key()

media_player::MediaPlayer* esphome::Application::get_media_player_by_key ( uint32_t  key,
bool  include_internal = false 
)
inline

Definition at line 394 of file application.h.

◆ get_media_players()

const std::vector<media_player::MediaPlayer *>& esphome::Application::get_media_players ( )
inline

Definition at line 393 of file application.h.

◆ get_name()

const std::string& esphome::Application::get_name ( ) const
inline

Get the name of this Application set by pre_setup().

Definition at line 195 of file application.h.

◆ get_number_by_key()

number::Number* esphome::Application::get_number_by_key ( uint32_t  key,
bool  include_internal = false 
)
inline

Definition at line 322 of file application.h.

◆ get_numbers()

const std::vector<number::Number *>& esphome::Application::get_numbers ( )
inline

Definition at line 321 of file application.h.

◆ get_select_by_key()

select::Select* esphome::Application::get_select_by_key ( uint32_t  key,
bool  include_internal = false 
)
inline

Definition at line 367 of file application.h.

◆ get_selects()

const std::vector<select::Select *>& esphome::Application::get_selects ( )
inline

Definition at line 366 of file application.h.

◆ get_sensor_by_key()

sensor::Sensor* esphome::Application::get_sensor_by_key ( uint32_t  key,
bool  include_internal = false 
)
inline

Definition at line 268 of file application.h.

◆ get_sensors()

const std::vector<sensor::Sensor *>& esphome::Application::get_sensors ( )
inline

Definition at line 267 of file application.h.

◆ get_switch_by_key()

switch_::Switch* esphome::Application::get_switch_by_key ( uint32_t  key,
bool  include_internal = false 
)
inline

Definition at line 250 of file application.h.

◆ get_switches()

const std::vector<switch_::Switch *>& esphome::Application::get_switches ( )
inline

Definition at line 249 of file application.h.

◆ get_text_by_key()

text::Text* esphome::Application::get_text_by_key ( uint32_t  key,
bool  include_internal = false 
)
inline

Definition at line 358 of file application.h.

◆ get_text_sensor_by_key()

text_sensor::TextSensor* esphome::Application::get_text_sensor_by_key ( uint32_t  key,
bool  include_internal = false 
)
inline

Definition at line 277 of file application.h.

◆ get_text_sensors()

const std::vector<text_sensor::TextSensor *>& esphome::Application::get_text_sensors ( )
inline

Definition at line 276 of file application.h.

◆ get_texts()

const std::vector<text::Text *>& esphome::Application::get_texts ( )
inline

Definition at line 357 of file application.h.

◆ get_time_by_key()

datetime::TimeEntity* esphome::Application::get_time_by_key ( uint32_t  key,
bool  include_internal = false 
)
inline

Definition at line 340 of file application.h.

◆ get_times()

const std::vector<datetime::TimeEntity *>& esphome::Application::get_times ( )
inline

Definition at line 339 of file application.h.

◆ get_valve_by_key()

valve::Valve* esphome::Application::get_valve_by_key ( uint32_t  key,
bool  include_internal = false 
)
inline

Definition at line 385 of file application.h.

◆ get_valves()

const std::vector<valve::Valve *>& esphome::Application::get_valves ( )
inline

Definition at line 384 of file application.h.

◆ is_name_add_mac_suffix_enabled()

bool esphome::Application::is_name_add_mac_suffix_enabled ( ) const
inline

Definition at line 206 of file application.h.

◆ loop()

void esphome::Application::loop ( )

Make a loop iteration. Call this in your loop() function.

Definition at line 66 of file application.cpp.

◆ pre_setup()

void esphome::Application::pre_setup ( const std::string &  name,
const std::string &  friendly_name,
const std::string &  area,
const char *  comment,
const char *  compilation_time,
bool  name_add_mac_suffix 
)
inline

Definition at line 77 of file application.h.

◆ reboot()

void esphome::Application::reboot ( )

Definition at line 124 of file application.cpp.

◆ register_alarm_control_panel()

void esphome::Application::register_alarm_control_panel ( alarm_control_panel::AlarmControlPanel a_alarm_control_panel)
inline

Definition at line 172 of file application.h.

◆ register_binary_sensor()

void esphome::Application::register_binary_sensor ( binary_sensor::BinarySensor binary_sensor)
inline

Definition at line 98 of file application.h.

◆ register_button()

void esphome::Application::register_button ( button::Button button)
inline

Definition at line 112 of file application.h.

◆ register_climate()

void esphome::Application::register_climate ( climate::Climate climate)
inline

Definition at line 128 of file application.h.

◆ register_component()

template<class C >
C* esphome::Application::register_component ( C *  c)
inline

Register the component in this Application instance.

Definition at line 182 of file application.h.

◆ register_component_()

void esphome::Application::register_component_ ( Component comp)
protected

Definition at line 14 of file application.cpp.

◆ register_cover()

void esphome::Application::register_cover ( cover::Cover cover)
inline

Definition at line 124 of file application.h.

◆ register_date()

void esphome::Application::register_date ( datetime::DateEntity date)
inline

Definition at line 140 of file application.h.

◆ register_datetime()

void esphome::Application::register_datetime ( datetime::DateTimeEntity datetime)
inline

Definition at line 148 of file application.h.

◆ register_event()

void esphome::Application::register_event ( event::Event event)
inline

Definition at line 178 of file application.h.

◆ register_fan()

void esphome::Application::register_fan ( fan::Fan state)
inline

Definition at line 120 of file application.h.

◆ register_light()

void esphome::Application::register_light ( light::LightState light)
inline

Definition at line 132 of file application.h.

◆ register_lock()

void esphome::Application::register_lock ( lock::Lock a_lock)
inline

Definition at line 160 of file application.h.

◆ register_media_player()

void esphome::Application::register_media_player ( media_player::MediaPlayer media_player)
inline

Definition at line 168 of file application.h.

◆ register_number()

void esphome::Application::register_number ( number::Number number)
inline

Definition at line 136 of file application.h.

◆ register_select()

void esphome::Application::register_select ( select::Select select)
inline

Definition at line 156 of file application.h.

◆ register_sensor()

void esphome::Application::register_sensor ( sensor::Sensor sensor)
inline

Definition at line 104 of file application.h.

◆ register_switch()

void esphome::Application::register_switch ( switch_::Switch a_switch)
inline

Definition at line 108 of file application.h.

◆ register_text()

void esphome::Application::register_text ( text::Text text)
inline

Definition at line 152 of file application.h.

◆ register_text_sensor()

void esphome::Application::register_text_sensor ( text_sensor::TextSensor sensor)
inline

Definition at line 116 of file application.h.

◆ register_time()

void esphome::Application::register_time ( datetime::TimeEntity time)
inline

Definition at line 144 of file application.h.

◆ register_valve()

void esphome::Application::register_valve ( valve::Valve valve)
inline

Definition at line 164 of file application.h.

◆ run_safe_shutdown_hooks()

void esphome::Application::run_safe_shutdown_hooks ( )

Definition at line 137 of file application.cpp.

◆ safe_reboot()

void esphome::Application::safe_reboot ( )

Definition at line 131 of file application.cpp.

◆ schedule_dump_config()

void esphome::Application::schedule_dump_config ( )
inline

Definition at line 227 of file application.h.

◆ set_loop_interval()

void esphome::Application::set_loop_interval ( uint32_t  loop_interval)
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

Parameters
loop_intervalThe interval in milliseconds to run the core loop at. Defaults to 16 milliseconds.

Definition at line 223 of file application.h.

◆ setup()

void esphome::Application::setup ( )

Set up all the registered components. Call this at the end of your setup() function.

Definition at line 28 of file application.cpp.

Field Documentation

◆ alarm_control_panels_

std::vector<alarm_control_panel::AlarmControlPanel *> esphome::Application::alarm_control_panels_ {}
protected

Definition at line 496 of file application.h.

◆ app_state_

uint32_t esphome::Application::app_state_ {0}
protected

Definition at line 508 of file application.h.

◆ area_

std::string esphome::Application::area_
protected

Definition at line 501 of file application.h.

◆ binary_sensors_

std::vector<binary_sensor::BinarySensor *> esphome::Application::binary_sensors_ {}
protected

Definition at line 439 of file application.h.

◆ buttons_

std::vector<button::Button *> esphome::Application::buttons_ {}
protected

Definition at line 445 of file application.h.

◆ climates_

std::vector<climate::Climate *> esphome::Application::climates_ {}
protected

Definition at line 463 of file application.h.

◆ comment_

const char* esphome::Application::comment_ {nullptr}
protected

Definition at line 502 of file application.h.

◆ compilation_time_

const char* esphome::Application::compilation_time_ {nullptr}
protected

Definition at line 503 of file application.h.

◆ Component

friend esphome::Application::Component
protected

Definition at line 427 of file application.h.

◆ components_

std::vector<Component *> esphome::Application::components_ {}
protected

Definition at line 435 of file application.h.

◆ covers_

std::vector<cover::Cover *> esphome::Application::covers_ {}
protected

Definition at line 460 of file application.h.

◆ dates_

std::vector<datetime::DateEntity *> esphome::Application::dates_ {}
protected

Definition at line 472 of file application.h.

◆ datetimes_

std::vector<datetime::DateTimeEntity *> esphome::Application::datetimes_ {}
protected

Definition at line 478 of file application.h.

◆ dump_config_at_

size_t esphome::Application::dump_config_at_ {SIZE_MAX}
protected

Definition at line 507 of file application.h.

◆ events_

std::vector<event::Event *> esphome::Application::events_ {}
protected

Definition at line 448 of file application.h.

◆ fans_

std::vector<fan::Fan *> esphome::Application::fans_ {}
protected

Definition at line 457 of file application.h.

◆ friendly_name_

std::string esphome::Application::friendly_name_
protected

Definition at line 500 of file application.h.

◆ last_loop_

uint32_t esphome::Application::last_loop_ {0}
protected

Definition at line 505 of file application.h.

◆ lights_

std::vector<light::LightState *> esphome::Application::lights_ {}
protected

Definition at line 466 of file application.h.

◆ locks_

std::vector<lock::Lock *> esphome::Application::locks_ {}
protected

Definition at line 487 of file application.h.

◆ loop_interval_

uint32_t esphome::Application::loop_interval_ {16}
protected

Definition at line 506 of file application.h.

◆ looping_components_

std::vector<Component *> esphome::Application::looping_components_ {}
protected

Definition at line 436 of file application.h.

◆ media_players_

std::vector<media_player::MediaPlayer *> esphome::Application::media_players_ {}
protected

Definition at line 493 of file application.h.

◆ name_

std::string esphome::Application::name_
protected

Definition at line 499 of file application.h.

◆ name_add_mac_suffix_

bool esphome::Application::name_add_mac_suffix_
protected

Definition at line 504 of file application.h.

◆ numbers_

std::vector<number::Number *> esphome::Application::numbers_ {}
protected

Definition at line 469 of file application.h.

◆ scheduler

Scheduler esphome::Application::scheduler

Definition at line 424 of file application.h.

◆ selects_

std::vector<select::Select *> esphome::Application::selects_ {}
protected

Definition at line 481 of file application.h.

◆ sensors_

std::vector<sensor::Sensor *> esphome::Application::sensors_ {}
protected

Definition at line 451 of file application.h.

◆ switches_

std::vector<switch_::Switch *> esphome::Application::switches_ {}
protected

Definition at line 442 of file application.h.

◆ text_sensors_

std::vector<text_sensor::TextSensor *> esphome::Application::text_sensors_ {}
protected

Definition at line 454 of file application.h.

◆ texts_

std::vector<text::Text *> esphome::Application::texts_ {}
protected

Definition at line 484 of file application.h.

◆ times_

std::vector<datetime::TimeEntity *> esphome::Application::times_ {}
protected

Definition at line 475 of file application.h.

◆ valves_

std::vector<valve::Valve *> esphome::Application::valves_ {}
protected

Definition at line 490 of file application.h.


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