ESPHome 2026.1.0-dev
Loading...
Searching...
No Matches
esphome::EntityBase Class Reference

#include <entity_base.h>

Inheritance diagram for esphome::EntityBase:
esphome::StatefulEntityBase< bool > esphome::StatefulEntityBase< T > esphome::alarm_control_panel::AlarmControlPanel esphome::button::Button esphome::camera::Camera esphome::climate::Climate esphome::cover::Cover esphome::datetime::DateTimeBase esphome::event::Event esphome::fan::Fan esphome::light::LightState esphome::lock::Lock esphome::media_player::MediaPlayer esphome::number::Number esphome::select::Select esphome::sensor::Sensor esphome::switch_::Switch esphome::text::Text esphome::text_sensor::TextSensor esphome::update::UpdateEntity esphome::valve::Valve esphome::water_heater::WaterHeater

Data Structures

struct  EntityFlags
 

Public Member Functions

const StringRefget_name () const
 
void set_name (const char *name)
 
bool has_own_name () const
 
ESPDEPRECATED("object_id mangles names and all object_id methods are planned for removal " "(see https://github.com/esphome/backlog/issues/76). " "Now is the time to stop using object_id. If still needed, use get_object_id_to() " "which will remain available longer. get_object_id() will be removed in 2026.7.0", "2025.12.0") std void set_object_id (const char *object_id)
 
void set_name_and_object_id (const char *name, const char *object_id)
 
uint32_t get_object_id_hash ()
 
StringRef get_object_id_to (std::span< char, OBJECT_ID_MAX_LEN > buf) const
 Get object_id with zero heap allocation For static case: returns StringRef to internal storage (buffer unused) For dynamic case: formats into buffer and returns StringRef to buffer.
 
size_t write_object_id_to (char *buf, size_t buf_size) const
 Write object_id directly to buffer, returns length written (excluding null) Useful for building compound strings without intermediate buffer.
 
bool is_internal () const
 
void set_internal (bool internal)
 
bool is_disabled_by_default () const
 
void set_disabled_by_default (bool disabled_by_default)
 
EntityCategory get_entity_category () const
 
void set_entity_category (EntityCategory entity_category)
 
ESPDEPRECATED("Use get_icon_ref() instead for better performance (avoids string copy). Will be removed in ESPHome 2026.5.0", "2025.11.0") std void set_icon (const char *icon)
 
StringRef get_icon_ref () const
 
uint32_t get_device_id () const
 
void set_device (Device *device)
 
bool has_state () const
 
void set_has_state (bool state)
 
uint32_t get_preference_hash ()
 Get a unique hash for storing preferences/settings for this entity.
 

Protected Member Functions

void calc_object_id_ ()
 
bool is_object_id_dynamic_ () const
 Check if the object_id is dynamic (changes with MAC suffix)
 

Protected Attributes

StringRef name_
 
const char * object_id_c_str_ {nullptr}
 
const char * icon_c_str_ {nullptr}
 
uint32_t object_id_hash_ {}
 
Devicedevice_ {}
 
struct esphome::EntityBase::EntityFlags flags_
 

Detailed Description

Definition at line 26 of file entity_base.h.

Member Function Documentation

◆ calc_object_id_()

void esphome::EntityBase::calc_object_id_ ( )
protected

Definition at line 75 of file entity_base.cpp.

◆ get_device_id()

uint32_t esphome::EntityBase::get_device_id ( ) const
inline

Definition at line 96 of file entity_base.h.

◆ get_entity_category()

EntityCategory esphome::EntityBase::get_entity_category ( ) const
inline

Definition at line 74 of file entity_base.h.

◆ get_icon_ref()

StringRef esphome::EntityBase::get_icon_ref ( ) const
inline

Definition at line 85 of file entity_base.h.

◆ get_name()

const StringRef & esphome::EntityBase::get_name ( ) const

Definition at line 11 of file entity_base.cpp.

◆ get_object_id_hash()

uint32_t esphome::EntityBase::get_object_id_hash ( )

Definition at line 113 of file entity_base.cpp.

◆ get_object_id_to()

StringRef esphome::EntityBase::get_object_id_to ( std::span< char, OBJECT_ID_MAX_LEN > buf) const

Get object_id with zero heap allocation For static case: returns StringRef to internal storage (buffer unused) For dynamic case: formats into buffer and returns StringRef to buffer.

Definition at line 105 of file entity_base.cpp.

◆ get_preference_hash()

uint32_t esphome::EntityBase::get_preference_hash ( )
inline

Get a unique hash for storing preferences/settings for this entity.

This method returns a hash that uniquely identifies the entity for the purpose of storing preferences (such as calibration, state, etc.). Unlike get_object_id_hash(), this hash also incorporates the device_id (if devices are enabled), ensuring uniqueness across multiple devices that may have entities with the same object_id.

Use this method when storing or retrieving preferences/settings that should be unique per device-entity pair. Use get_object_id_hash() when you need a hash that identifies the entity regardless of the device it belongs to.

For backward compatibility, if device_id is 0 (the main device), the hash is unchanged from previous versions, so existing single-device configurations will continue to work.

Returns
uint32_t The unique hash for preferences, including device_id if available.

Definition at line 128 of file entity_base.h.

◆ has_own_name()

bool esphome::EntityBase::has_own_name ( ) const
inline

Definition at line 33 of file entity_base.h.

◆ has_state()

bool esphome::EntityBase::has_state ( ) const
inline

Definition at line 106 of file entity_base.h.

◆ is_disabled_by_default()

bool esphome::EntityBase::is_disabled_by_default ( ) const
inline

Definition at line 70 of file entity_base.h.

◆ is_internal()

bool esphome::EntityBase::is_internal ( ) const
inline

Definition at line 64 of file entity_base.h.

◆ is_object_id_dynamic_()

bool esphome::EntityBase::is_object_id_dynamic_ ( ) const
protected

Check if the object_id is dynamic (changes with MAC suffix)

Definition at line 49 of file entity_base.cpp.

◆ set_device()

void esphome::EntityBase::set_device ( Device * device)
inline

Definition at line 102 of file entity_base.h.

◆ set_disabled_by_default()

void esphome::EntityBase::set_disabled_by_default ( bool disabled_by_default)
inline

Definition at line 71 of file entity_base.h.

◆ set_entity_category()

void esphome::EntityBase::set_entity_category ( EntityCategory entity_category)
inline

Definition at line 75 of file entity_base.h.

◆ set_has_state()

void esphome::EntityBase::set_has_state ( bool state)
inline

Definition at line 109 of file entity_base.h.

◆ set_icon()

void esphome::EntityBase::set_icon ( const char * icon)

Definition at line 40 of file entity_base.cpp.

◆ set_internal()

void esphome::EntityBase::set_internal ( bool internal)
inline

Definition at line 65 of file entity_base.h.

◆ set_name()

void esphome::EntityBase::set_name ( const char * name)

Definition at line 12 of file entity_base.cpp.

◆ set_name_and_object_id()

void esphome::EntityBase::set_name_and_object_id ( const char * name,
const char * object_id )

Definition at line 68 of file entity_base.cpp.

◆ set_object_id()

void esphome::EntityBase::set_object_id ( const char * object_id)

Definition at line 63 of file entity_base.cpp.

◆ write_object_id_to()

size_t esphome::EntityBase::write_object_id_to ( char * buf,
size_t buf_size ) const

Write object_id directly to buffer, returns length written (excluding null) Useful for building compound strings without intermediate buffer.

Definition at line 92 of file entity_base.cpp.

Field Documentation

◆ device_

Device* esphome::EntityBase::device_ {}
protected

Definition at line 153 of file entity_base.h.

◆ flags_

struct esphome::EntityBase::EntityFlags esphome::EntityBase::flags_
protected

◆ icon_c_str_

const char* esphome::EntityBase::icon_c_str_ {nullptr}
protected

Definition at line 149 of file entity_base.h.

◆ name_

StringRef esphome::EntityBase::name_
protected

Definition at line 146 of file entity_base.h.

◆ object_id_c_str_

const char* esphome::EntityBase::object_id_c_str_ {nullptr}
protected

Definition at line 147 of file entity_base.h.

◆ object_id_hash_

uint32_t esphome::EntityBase::object_id_hash_ {}
protected

Definition at line 151 of file entity_base.h.


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