ESPHome  2021.9.1
Public Member Functions | Data Fields | Protected Member Functions | Protected Attributes
esphome::sensor::Sensor Class Reference

Base-class for all sensors. More...

#include <sensor.h>

Inheritance diagram for esphome::sensor::Sensor:
esphome::Nameable esphome::adc::ADCSensor esphome::ads1115::ADS1115Sensor esphome::bh1750::BH1750Sensor esphome::binary_sensor_map::BinarySensorMap esphome::ble_client::BLESensor esphome::ble_rssi::BLERSSISensor esphome::ct_clamp::CTClampSensor esphome::dallas::DallasTemperatureSensor esphome::demo::DemoSensor esphome::duty_cycle::DutyCycleSensor esphome::esp32_hall::ESP32HallSensor esphome::ezo::EZOSensor esphome::homeassistant::HomeassistantSensor esphome::hrxl_maxsonar_wr::HrxlMaxsonarWrComponent esphome::hx711::HX711Sensor esphome::integration::IntegrationSensor esphome::max31855::MAX31855Sensor esphome::max31856::MAX31856Sensor esphome::max31865::MAX31865Sensor esphome::max6675::MAX6675Sensor esphome::mcp3008::MCP3008Sensor esphome::mcp9808::MCP9808Sensor esphome::mqtt_subscribe::MQTTSubscribeSensor esphome::nextion::NextionSensor esphome::ntc::NTC esphome::pid::PIDClimateSensor esphome::pulse_counter::PulseCounterSensor esphome::pulse_meter::PulseMeterSensor esphome::pulse_width::PulseWidthSensor esphome::resistance::ResistanceSensor esphome::rotary_encoder::RotaryEncoderSensor esphome::sdp3x::SDP3XComponent esphome::sgp40::SGP40Component esphome::sts3x::STS3XComponent esphome::sun::SunSensor esphome::teleinfo::TeleInfoSensor esphome::template_::TemplateSensor esphome::tmp102::TMP102Component esphome::tmp117::TMP117Component esphome::tof10120::TOF10120Sensor esphome::total_daily_energy::TotalDailyEnergy esphome::tsl2561::TSL2561Sensor esphome::tuya::TuyaSensor esphome::ultrasonic::UltrasonicSensorComponent esphome::uptime::UptimeSensor esphome::vl53l0x::VL53L0XSensor esphome::wifi_signal::WiFiSignalSensor

Public Member Functions

 Sensor ()
 
 Sensor (const std::string &name)
 
std::string get_unit_of_measurement ()
 Get the unit of measurement, using the manual override if set. More...
 
void set_unit_of_measurement (const std::string &unit_of_measurement)
 Manually set the unit of measurement. More...
 
std::string get_icon ()
 Get the icon. Uses the manual override if specified or the default value instead. More...
 
void set_icon (const std::string &icon)
 Manually set the icon, for example "mdi:flash". More...
 
int8_t get_accuracy_decimals ()
 Get the accuracy in decimals, using the manual override if set. More...
 
void set_accuracy_decimals (int8_t accuracy_decimals)
 Manually set the accuracy in decimals. More...
 
std::string get_device_class ()
 Get the device class, using the manual override if set. More...
 
void set_device_class (const std::string &device_class)
 Manually set the device class. More...
 
StateClass get_state_class ()
 Get the state class, using the manual override if set. More...
 
void set_state_class (StateClass state_class)
 Manually set the state class. More...
 
bool get_force_update () const
 Get whether force update mode is enabled. More...
 
void set_force_update (bool force_update)
 Set force update mode. More...
 
void add_filter (Filter *filter)
 Add a filter to the filter chain. Will be appended to the back. More...
 
void add_filters (const std::vector< Filter *> &filters)
 Add a list of vectors to the back of the filter chain. More...
 
void set_filters (const std::vector< Filter *> &filters)
 Clear the filters and replace them by filters. More...
 
void clear_filters ()
 Clear the entire filter chain. More...
 
float get_state () const
 Getter-syntax for .state. More...
 
float get_raw_state () const
 Getter-syntax for .raw_state. More...
 
void publish_state (float state)
 Publish a new state to the front-end. More...
 
void add_on_state_callback (std::function< void(float)> &&callback)
 Add a callback that will be called every time a filtered value arrives. More...
 
void add_on_raw_state_callback (std::function< void(float)> &&callback)
 Add a callback that will be called every time the sensor sends a raw value. More...
 
bool has_state () const
 Return whether this sensor has gotten a full state (that passed through all filters) yet. More...
 
virtual std::string unique_id ()
 A unique ID for this sensor, empty for no unique id. More...
 
void internal_send_state_to_frontend (float state)
 
- Public Member Functions inherited from esphome::Nameable
 Nameable ()
 
 Nameable (std::string name)
 
const std::string & get_name () const
 
void set_name (const std::string &name)
 
const std::string & get_object_id ()
 Get the sanitized name of this nameable as an ID. Caching it internally. More...
 
uint32_t get_object_id_hash ()
 
bool is_internal () const
 
void set_internal (bool internal)
 
bool is_disabled_by_default () const
 Check if this object is declared to be disabled by default. More...
 
void set_disabled_by_default (bool disabled_by_default)
 

Data Fields

float state
 This member variable stores the last state that has passed through all filters. More...
 
float raw_state
 This member variable stores the current raw state of the sensor, without any filters applied. More...
 

Protected Member Functions

virtual std::string unit_of_measurement ()
 Override this to set the default unit of measurement. More...
 
virtual std::string icon ()
 Override this to set the default icon. More...
 
virtual int8_t accuracy_decimals ()
 Override this to set the default accuracy in decimals. More...
 
virtual std::string device_class ()
 Override this to set the default device class. More...
 
virtual StateClass state_class ()
 Override this to set the default state class. More...
 
uint32_t hash_base () override
 
- Protected Member Functions inherited from esphome::Nameable
void calc_object_id_ ()
 

Protected Attributes

CallbackManager< void(float)> raw_callback_
 Storage for raw state callbacks. More...
 
CallbackManager< void(float)> callback_
 Storage for filtered state callbacks. More...
 
bool has_state_ {false}
 
Filterfilter_list_ {nullptr}
 Store all active filters. More...
 
optional< std::string > unit_of_measurement_
 Unit of measurement override. More...
 
optional< std::string > icon_
 Icon override. More...
 
optional< int8_t > accuracy_decimals_
 Accuracy in decimals override. More...
 
optional< std::string > device_class_
 Device class override. More...
 
optional< StateClassstate_class_ {STATE_CLASS_NONE}
 State class override. More...
 
bool force_update_ {false}
 Force update mode. More...
 
- Protected Attributes inherited from esphome::Nameable
std::string name_
 
std::string object_id_
 
uint32_t object_id_hash_
 
bool internal_ {false}
 
bool disabled_by_default_ {false}
 

Detailed Description

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.

Definition at line 45 of file sensor.h.

Constructor & Destructor Documentation

◆ Sensor() [1/2]

esphome::sensor::Sensor::Sensor ( )
explicit

Definition at line 22 of file sensor.cpp.

◆ Sensor() [2/2]

esphome::sensor::Sensor::Sensor ( const std::string &  name)
explicit

Definition at line 21 of file sensor.cpp.

Member Function Documentation

◆ accuracy_decimals()

int8_t esphome::sensor::Sensor::accuracy_decimals ( )
protectedvirtual

Override this to set the default accuracy in decimals.

Reimplemented in esphome::integration::IntegrationSensor, and esphome::total_daily_energy::TotalDailyEnergy.

Definition at line 48 of file sensor.cpp.

◆ add_filter()

void esphome::sensor::Sensor::add_filter ( Filter filter)

Add a filter to the filter chain. Will be appended to the back.

Definition at line 84 of file sensor.cpp.

◆ add_filters()

void esphome::sensor::Sensor::add_filters ( const std::vector< 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 98 of file sensor.cpp.

◆ add_on_raw_state_callback()

void esphome::sensor::Sensor::add_on_raw_state_callback ( std::function< void(float)> &&  callback)

Add a callback that will be called every time the sensor sends a raw value.

Definition at line 80 of file sensor.cpp.

◆ add_on_state_callback()

void esphome::sensor::Sensor::add_on_state_callback ( std::function< void(float)> &&  callback)

Add a callback that will be called every time a filtered value arrives.

Definition at line 79 of file sensor.cpp.

◆ clear_filters()

void esphome::sensor::Sensor::clear_filters ( )

Clear the entire filter chain.

Definition at line 107 of file sensor.cpp.

◆ device_class()

std::string esphome::sensor::Sensor::device_class ( )
protectedvirtual

Override this to set the default device class.

Definition at line 56 of file sensor.cpp.

◆ get_accuracy_decimals()

int8_t esphome::sensor::Sensor::get_accuracy_decimals ( )

Get the accuracy in decimals, using the manual override if set.

Definition at line 42 of file sensor.cpp.

◆ get_device_class()

std::string esphome::sensor::Sensor::get_device_class ( )

Get the device class, using the manual override if set.

Definition at line 50 of file sensor.cpp.

◆ get_force_update()

bool esphome::sensor::Sensor::get_force_update ( ) const
inline

Get whether force update mode is enabled.

If the sensor is in force_update mode, the frontend is required to save all state changes to the database when they are published, even if the state is the same as before.

Definition at line 82 of file sensor.h.

◆ get_icon()

std::string esphome::sensor::Sensor::get_icon ( )

Get the icon. Uses the manual override if specified or the default value instead.

Definition at line 34 of file sensor.cpp.

◆ get_raw_state()

float esphome::sensor::Sensor::get_raw_state ( ) const

Getter-syntax for .raw_state.

Definition at line 114 of file sensor.cpp.

◆ get_state()

float esphome::sensor::Sensor::get_state ( ) const

Getter-syntax for .state.

Definition at line 113 of file sensor.cpp.

◆ get_state_class()

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.

◆ get_unit_of_measurement()

std::string esphome::sensor::Sensor::get_unit_of_measurement ( )

Get the unit of measurement, using the manual override if set.

Definition at line 24 of file sensor.cpp.

◆ has_state()

bool esphome::sensor::Sensor::has_state ( ) const

Return whether this sensor has gotten a full state (that passed through all filters) yet.

Definition at line 124 of file sensor.cpp.

◆ hash_base()

uint32_t esphome::sensor::Sensor::hash_base ( )
overrideprotectedvirtual

Implements esphome::Nameable.

Definition at line 125 of file sensor.cpp.

◆ icon()

std::string esphome::sensor::Sensor::icon ( )
protectedvirtual

Override this to set the default icon.

Reimplemented in esphome::integration::IntegrationSensor, and esphome::total_daily_energy::TotalDailyEnergy.

Definition at line 40 of file sensor.cpp.

◆ internal_send_state_to_frontend()

void esphome::sensor::Sensor::internal_send_state_to_frontend ( float  state)

Definition at line 117 of file sensor.cpp.

◆ publish_state()

void esphome::sensor::Sensor::publish_state ( float  state)

Publish a new state to the front-end.

First, the new state will be assigned to the raw_value. Then it's passed through all filters until it finally lands in the .value member variable and a callback is issued.

Parameters
stateThe state as a floating point number.

Definition at line 66 of file sensor.cpp.

◆ set_accuracy_decimals()

void esphome::sensor::Sensor::set_accuracy_decimals ( int8_t  accuracy_decimals)

Manually set the accuracy in decimals.

Definition at line 47 of file sensor.cpp.

◆ set_device_class()

void esphome::sensor::Sensor::set_device_class ( const std::string &  device_class)

Manually set the device class.

Definition at line 55 of file sensor.cpp.

◆ set_filters()

void esphome::sensor::Sensor::set_filters ( const std::vector< Filter *> &  filters)

Clear the filters and replace them by filters.

Definition at line 103 of file sensor.cpp.

◆ set_force_update()

void esphome::sensor::Sensor::set_force_update ( bool  force_update)
inline

Set force update mode.

Definition at line 84 of file sensor.h.

◆ set_icon()

void esphome::sensor::Sensor::set_icon ( const std::string &  icon)

Manually set the icon, for example "mdi:flash".

Definition at line 39 of file sensor.cpp.

◆ set_state_class()

void esphome::sensor::Sensor::set_state_class ( StateClass  state_class)

Manually set the state class.

Definition at line 58 of file sensor.cpp.

◆ set_unit_of_measurement()

void esphome::sensor::Sensor::set_unit_of_measurement ( const std::string &  unit_of_measurement)

Manually set the unit of measurement.

Definition at line 29 of file sensor.cpp.

◆ state_class()

StateClass esphome::sensor::Sensor::state_class ( )
protectedvirtual

Override this to set the default state class.

Definition at line 64 of file sensor.cpp.

◆ unique_id()

std::string esphome::sensor::Sensor::unique_id ( )
virtual

◆ unit_of_measurement()

std::string esphome::sensor::Sensor::unit_of_measurement ( )
protectedvirtual

Override this to set the default unit of measurement.

Reimplemented in esphome::integration::IntegrationSensor, and esphome::total_daily_energy::TotalDailyEnergy.

Definition at line 32 of file sensor.cpp.

Field Documentation

◆ accuracy_decimals_

optional<int8_t> esphome::sensor::Sensor::accuracy_decimals_
protected

Accuracy in decimals override.

Definition at line 181 of file sensor.h.

◆ callback_

CallbackManager<void(float)> esphome::sensor::Sensor::callback_
protected

Storage for filtered state callbacks.

Definition at line 174 of file sensor.h.

◆ device_class_

optional<std::string> esphome::sensor::Sensor::device_class_
protected

Device class override.

Definition at line 182 of file sensor.h.

◆ filter_list_

Filter* esphome::sensor::Sensor::filter_list_ {nullptr}
protected

Store all active filters.

Definition at line 177 of file sensor.h.

◆ force_update_

bool esphome::sensor::Sensor::force_update_ {false}
protected

Force update mode.

Definition at line 184 of file sensor.h.

◆ has_state_

bool esphome::sensor::Sensor::has_state_ {false}
protected

Definition at line 176 of file sensor.h.

◆ icon_

optional<std::string> esphome::sensor::Sensor::icon_
protected

Icon override.

Definition at line 180 of file sensor.h.

◆ raw_callback_

CallbackManager<void(float)> esphome::sensor::Sensor::raw_callback_
protected

Storage for raw state callbacks.

Definition at line 173 of file sensor.h.

◆ raw_state

float esphome::sensor::Sensor::raw_state

This member variable stores the current raw state of the sensor, without any filters applied.

Unlike .state,this will be updated immediately when publish_state is called.

Definition at line 141 of file sensor.h.

◆ state

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.

Definition at line 135 of file sensor.h.

◆ state_class_

optional<StateClass> esphome::sensor::Sensor::state_class_ {STATE_CLASS_NONE}
protected

State class override.

Definition at line 183 of file sensor.h.

◆ unit_of_measurement_

optional<std::string> esphome::sensor::Sensor::unit_of_measurement_
protected

Unit of measurement override.

Definition at line 179 of file sensor.h.


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