|
ESPHome 2026.11.0-dev
|
Base-class for all sensors. More...
#include <sensor.h>
Data Structures | |
| struct | SensorFlags |
Public Member Functions | |
| Sensor () | |
| int8_t | get_accuracy_decimals () |
| Get the accuracy in decimals, using the manual override if set. | |
| void | set_accuracy_decimals (int8_t accuracy_decimals) |
| Manually set the accuracy in decimals. | |
| bool | has_accuracy_decimals () const |
| Check if the accuracy in decimals has been manually set. | |
| StateClass | get_state_class () |
| Get the state class, using the manual override if set. | |
| void | set_state_class (StateClass state_class) |
| Manually set the state class. | |
| bool | get_force_update () const |
| Get whether force update mode is enabled. | |
| void | set_force_update (bool force_update) |
| Set force update mode. | |
| void | add_filter (Filter *filter) |
| Add a filter to the filter chain. Will be appended to the back. | |
| void | add_filters (std::initializer_list< Filter * > filters) |
| Add a list of vectors to the back of the filter chain. | |
| void | set_filters (std::initializer_list< Filter * > filters) |
| Clear the filters and replace them by filters. | |
| void | clear_filters () |
| Clear the entire filter chain. | |
| float | get_state () const |
| Getter-syntax for .state. | |
| float | get_raw_state () const |
| Get the last state received by publish_state(), before any filters were applied. | |
| void | publish_state (float state) |
| Publish a new state to the front-end. | |
| template<typename F > | |
| void | add_on_state_callback (F &&callback) |
| Add a callback that will be called every time a filtered value arrives. | |
| template<typename F > | |
| void | add_on_raw_state_callback (F &&callback) |
| Add a callback that will be called every time the sensor sends a raw value. | |
| void | internal_send_state_to_frontend (float state) |
Public Member Functions inherited from esphome::EntityBase | |
| ESPDEPRECATED ("Use get_name_to() or get_log_name() instead. Will be removed in ESPHome 2027.5.0", "2026.11.0") const StringRef &get_name() const | |
| The name is in flash here; the first call makes a RAM copy that is kept for the life of the device. | |
| StringRef | get_name_to (std::span< char, ENTITY_NAME_BUF_SIZE > buffer) const |
| Get the name of this Entity, copied out of flash into buffer. | |
| ESPDEPRECATED ("Use get_name_to() or get_log_name() instead. Will be removed in ESPHome 2027.5.0", "2026.11.0") const StringRef &get_name() const | |
| const StringRef & | get_name_to (std::span< char, ENTITY_NAME_BUF_SIZE >) const |
| bool | name_equals (const StringRef &other) const |
| const ProgmemStringRef & | get_name_progmem () const |
| The name as stored, for consumers that read flash themselves (e.g. API progmem fields). | |
| size_t | write_name_to (char *buf, size_t buf_size) const |
| Copy the name into buf (null terminated), returns its length. | |
| const LogString * | get_log_name () const |
| Get the name for a "%s" log argument (LOG_STR_ARG). | |
| bool | has_own_name () const |
| uint32_t | get_object_id_hash () const |
| 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 |
| EntityCategory | get_entity_category () const |
| const char * | get_device_class_to (std::span< char, MAX_DEVICE_CLASS_LENGTH > buffer) const |
| ProgmemStringRef | get_device_class_progmem () const |
| The device class as stored (in flash on ESP8266), for consumers that read flash themselves. | |
| StringRef | get_unit_of_measurement_ref () const |
| const char * | get_icon_to (std::span< char, MAX_ICON_LENGTH > buffer) const |
| ProgmemStringRef | get_icon_progmem () const |
| The icon as stored (in flash on ESP8266), for consumers that read flash themselves. | |
| uint32_t | get_device_id () const |
| Device * | get_device () const |
| bool | has_state () const |
| void | set_has_state (bool state) |
| ESPDEPRECATED ("Use make_entity_preference<T>() instead, or preferences won't be migrated. " "See https://github.com/esphome/backlog/issues/85. Will be removed in 2027.1.0.", "2026.7.0") uint32_t get_preference_hash() | |
| Get a unique hash for storing preferences/settings for this entity. | |
| template<typename T > | |
| ESPPreferenceObject | make_entity_preference (uint32_t version=0) |
| Create a preference object for storing this entity's state/settings. | |
| template<typename T > | |
| ESPPreferenceObject | make_entity_preference (uint32_t version, bool in_flash) |
| As make_entity_preference(), stored in flash or RTC memory where the backend supports the choice. | |
Data Fields | |
| float | state |
| This member variable stores the last state that has passed through all filters. | |
Protected Attributes | |
| float | raw_state_ {NAN} |
| The last state passed to publish_state(), before filters. | |
| LazyCallbackManager< void(float)> | raw_callback_ |
| Storage for raw state callbacks. | |
| LazyCallbackManager< void(float)> | callback_ |
| Storage for filtered state callbacks. | |
| Filter * | filter_list_ {nullptr} |
| Store all active filters. | |
| int8_t | accuracy_decimals_ {-1} |
| Accuracy in decimals (-1 = not set) | |
| StateClass | state_class_ {STATE_CLASS_NONE} |
| State class (STATE_CLASS_NONE = not set) | |
| struct esphome::sensor::Sensor::SensorFlags | sensor_flags_ |
Protected Attributes inherited from esphome::EntityBase | |
| ProgmemStringRef | name_ |
| uint32_t | object_id_hash_ {} |
| Device * | device_ {} |
| struct esphome::EntityBase::EntityFlags | flags_ |
| uint8_t | device_class_idx_ {} |
| uint8_t | uom_idx_ {} |
| uint8_t | icon_idx_ {} |
Additional Inherited Members | |
Protected Member Functions inherited from esphome::EntityBase | |
| friend | void::setup () |
| friend | void::original_setup () |
| void | configure_entity_ (const char *name, uint32_t object_id_hash, uint32_t entity_fields) |
| Combined entity setup from codegen: set name, object_id hash, entity string indices, and flags. | |
| void | set_device_ (Device *device) |
| ESPPreferenceObject | make_entity_preference_ (size_t size, uint32_t version) |
| Non-template helpers for make_entity_preference() to avoid code bloat. | |
| ESPPreferenceObject | make_entity_preference_ (size_t size, uint32_t version, bool in_flash) |
| uint32_t | entity_preference_key_ (uint32_t version) |
| Key for both helpers; preference hash migration goes here. | |
Base-class for all sensors.
A sensor has unit of measurement and can use publish_state to send out a new value with the specified accuracy.
|
explicit |
Definition at line 43 of file sensor.cpp.
| void esphome::sensor::Sensor::add_filter | ( | Filter * | filter | ) |
Add a filter to the filter chain. Will be appended to the back.
Definition at line 85 of file sensor.cpp.
| void esphome::sensor::Sensor::add_filters | ( | std::initializer_list< Filter * > | filters | ) |
Add a list of vectors to the back of the filter chain.
This may look like:
sensor->add_filters({ LambdaFilter([&](float value) -> optional<float> { return 42/value; }), OffsetFilter(1), SlidingWindowMovingAverageFilter(15, 15), // average over last 15 values });
Definition at line 99 of file sensor.cpp.
|
inline |
|
inline |
| void esphome::sensor::Sensor::clear_filters | ( | ) |
Clear the entire filter chain.
Definition at line 108 of file sensor.cpp.
| int8_t esphome::sensor::Sensor::get_accuracy_decimals | ( | ) |
Get the accuracy in decimals, using the manual override if set.
Definition at line 45 of file sensor.cpp.
|
inline |
|
inline |
Get the last state received by publish_state(), before any filters were applied.
|
inline |
| StateClass esphome::sensor::Sensor::get_state_class | ( | ) |
Get the state class, using the manual override if set.
Definition at line 59 of file sensor.cpp.
|
inline |
| void esphome::sensor::Sensor::internal_send_state_to_frontend | ( | float | state | ) |
Definition at line 116 of file sensor.cpp.
| void esphome::sensor::Sensor::publish_state | ( | float | state | ) |
Publish a new state to the front-end.
The value is passed through the filter chain (when filters are compiled in) before landing in the state member and triggering the state callback. The pre-filter value is available via get_raw_state().
| state | The state as a floating point number. |
Definition at line 65 of file sensor.cpp.
| void esphome::sensor::Sensor::set_accuracy_decimals | ( | int8_t | accuracy_decimals | ) |
Manually set the accuracy in decimals.
Definition at line 50 of file sensor.cpp.
| void esphome::sensor::Sensor::set_filters | ( | std::initializer_list< Filter * > | filters | ) |
Clear the filters and replace them by filters.
Definition at line 104 of file sensor.cpp.
|
inline |
| void esphome::sensor::Sensor::set_state_class | ( | StateClass | state_class | ) |
Manually set the state class.
Definition at line 55 of file sensor.cpp.
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
The last state passed to publish_state(), before filters.
|
protected |
| float esphome::sensor::Sensor::state |
This member variable stores the last state that has passed through all filters.
On startup, when no state is available yet, this is NAN (not-a-number) and the validity can be checked using has_state().
This is exposed through a member variable for ease of use in esphome lambdas.
|
protected |