ESPHome  2024.4.1
Public Member Functions | Protected Member Functions | Protected Attributes
esphome::sgp4x::SGP4xComponent Class Reference

This class implements support for the Sensirion sgp4x i2c GAS (VOC) sensors. More...

#include <sgp4x.h>

Inheritance diagram for esphome::sgp4x::SGP4xComponent:
esphome::PollingComponent esphome::sensor::Sensor esphome::sensirion_common::SensirionI2CDevice esphome::Component esphome::EntityBase esphome::EntityBase_DeviceClass esphome::EntityBase_UnitOfMeasurement esphome::i2c::I2CDevice

Public Member Functions

void set_humidity_sensor (sensor::Sensor *humidity)
 
void set_temperature_sensor (sensor::Sensor *temperature)
 
void setup () override
 
void update () override
 
void update_gas_indices ()
 
void dump_config () override
 
float get_setup_priority () const override
 
void set_store_baseline (bool store_baseline)
 
void set_voc_sensor (sensor::Sensor *voc_sensor)
 
void set_nox_sensor (sensor::Sensor *nox_sensor)
 
void set_voc_algorithm_tuning (uint16_t index_offset, uint16_t learning_time_offset_hours, uint16_t learning_time_gain_hours, uint16_t gating_max_duration_minutes, uint16_t std_initial, uint16_t gain_factor)
 
void set_nox_algorithm_tuning (uint16_t index_offset, uint16_t learning_time_offset_hours, uint16_t learning_time_gain_hours, uint16_t gating_max_duration_minutes, uint16_t gain_factor)
 
- Public Member Functions inherited from esphome::PollingComponent
 PollingComponent ()
 
 PollingComponent (uint32_t update_interval)
 Initialize this polling component with the given update interval in ms. More...
 
virtual void set_update_interval (uint32_t update_interval)
 Manually set the update interval in ms for this polling object. More...
 
void call_setup () override
 
virtual uint32_t get_update_interval () const
 Get the update interval in ms of this sensor. More...
 
void start_poller ()
 
void stop_poller ()
 
- Public Member Functions inherited from esphome::Component
virtual void loop ()
 This method will be called repeatedly. More...
 
float get_actual_setup_priority () const
 
void set_setup_priority (float priority)
 
virtual float get_loop_priority () const
 priority of loop(). More...
 
void call ()
 
virtual void on_shutdown ()
 
virtual void on_safe_shutdown ()
 
uint32_t get_component_state () const
 
virtual void mark_failed ()
 Mark this component as failed. More...
 
bool is_failed ()
 
bool is_ready ()
 
virtual bool can_proceed ()
 
bool status_has_warning () const
 
bool status_has_error () const
 
void status_set_warning (const char *message="unspecified")
 
void status_set_error (const char *message="unspecified")
 
void status_clear_warning ()
 
void status_clear_error ()
 
void status_momentary_warning (const std::string &name, uint32_t length=5000)
 
void status_momentary_error (const std::string &name, uint32_t length=5000)
 
bool has_overridden_loop () const
 
void set_component_source (const char *source)
 Set where this component was loaded from for some debug messages. More...
 
const char * get_component_source () const
 Get the integration where this component was declared as a string. More...
 
- Public Member Functions inherited from esphome::sensor::Sensor
 Sensor ()
 
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...
 
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 ()
 Override this method to set the unique ID of this sensor. More...
 
void internal_send_state_to_frontend (float state)
 
- Public Member Functions inherited from esphome::EntityBase
const StringRefget_name () const
 
void set_name (const char *name)
 
bool has_own_name () const
 
std::string get_object_id () const
 
void set_object_id (const char *object_id)
 
uint32_t get_object_id_hash ()
 
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)
 
std::string get_icon () const
 
void set_icon (const char *icon)
 
- Public Member Functions inherited from esphome::EntityBase_DeviceClass
std::string get_device_class ()
 Get the device class, using the manual override if set. More...
 
void set_device_class (const char *device_class)
 Manually set the device class. More...
 
- Public Member Functions inherited from esphome::EntityBase_UnitOfMeasurement
std::string get_unit_of_measurement ()
 Get the unit of measurement, using the manual override if set. More...
 
void set_unit_of_measurement (const char *unit_of_measurement)
 Manually set the unit of measurement. More...
 
- Public Member Functions inherited from esphome::sensirion_common::SensirionI2CDevice
bool read_data (uint16_t *data, uint8_t len)
 Read data words from i2c device. More...
 
bool read_data (uint16_t &data)
 Read 1 data word from i2c device. More...
 
bool get_register (uint16_t command, uint16_t *data, uint8_t len, uint8_t delay=0)
 get data words from i2c register. More...
 
bool get_register (uint16_t i2c_register, uint16_t &data, uint8_t delay=0)
 Read 1 data word from 16 bit i2c register. More...
 
bool get_8bit_register (uint8_t i2c_register, uint16_t *data, uint8_t len, uint8_t delay=0)
 get data words from i2c register. More...
 
bool get_8bit_register (uint8_t i2c_register, uint16_t &data, uint8_t delay=0)
 Read 1 data word from 8 bit i2c register. More...
 
template<class T >
bool write_command (T i2c_register)
 Write a command to the i2c device. More...
 
template<class T >
bool write_command (T i2c_register, uint16_t data)
 Write a command and one data word to the i2c device . More...
 
template<class T >
bool write_command (T i2c_register, const std::vector< uint16_t > &data)
 Write a command with arguments as words. More...
 
template<class T >
bool write_command (T i2c_register, const uint16_t *data, uint8_t len)
 Write a command with arguments as words. More...
 
- Public Member Functions inherited from esphome::i2c::I2CDevice
 I2CDevice ()=default
 we use the C++ default constructor More...
 
void set_i2c_address (uint8_t address)
 We store the address of the device on the bus. More...
 
void set_i2c_bus (I2CBus *bus)
 we store the pointer to the I2CBus to use More...
 
I2CRegister reg (uint8_t a_register)
 calls the I2CRegister constructor More...
 
I2CRegister16 reg16 (uint16_t a_register)
 calls the I2CRegister16 constructor More...
 
ErrorCode read (uint8_t *data, size_t len)
 reads an array of bytes from the device using an I2CBus More...
 
ErrorCode read_register (uint8_t a_register, uint8_t *data, size_t len, bool stop=true)
 reads an array of bytes from a specific register in the I²C device More...
 
ErrorCode read_register16 (uint16_t a_register, uint8_t *data, size_t len, bool stop=true)
 reads an array of bytes from a specific register in the I²C device More...
 
ErrorCode write (const uint8_t *data, size_t len, bool stop=true)
 writes an array of bytes to a device using an I2CBus More...
 
ErrorCode write_register (uint8_t a_register, const uint8_t *data, size_t len, bool stop=true)
 writes an array of bytes to a specific register in the I²C device More...
 
ErrorCode write_register16 (uint16_t a_register, const uint8_t *data, size_t len, bool stop=true)
 write an array of bytes to a specific register in the I²C device More...
 
bool read_bytes (uint8_t a_register, uint8_t *data, uint8_t len)
 Compat APIs All methods below have been added for compatibility reasons. More...
 
bool read_bytes_raw (uint8_t *data, uint8_t len)
 
template<size_t N>
optional< std::array< uint8_t, N > > read_bytes (uint8_t a_register)
 
template<size_t N>
optional< std::array< uint8_t, N > > read_bytes_raw ()
 
bool read_bytes_16 (uint8_t a_register, uint16_t *data, uint8_t len)
 
bool read_byte (uint8_t a_register, uint8_t *data, bool stop=true)
 
optional< uint8_t > read_byte (uint8_t a_register)
 
bool read_byte_16 (uint8_t a_register, uint16_t *data)
 
bool write_bytes (uint8_t a_register, const uint8_t *data, uint8_t len, bool stop=true)
 
bool write_bytes (uint8_t a_register, const std::vector< uint8_t > &data)
 
template<size_t N>
bool write_bytes (uint8_t a_register, const std::array< uint8_t, N > &data)
 
bool write_bytes_16 (uint8_t a_register, const uint16_t *data, uint8_t len)
 
bool write_byte (uint8_t a_register, uint8_t data, bool stop=true)
 
bool write_byte_16 (uint8_t a_register, uint16_t data)
 

Protected Member Functions

void self_test_ ()
 
int16_t sensirion_init_sensors_ ()
 
bool measure_gas_indices_ (int32_t &voc, int32_t &nox)
 Combined the measured gasses, temperature, and humidity to calculate the VOC Index. More...
 
bool measure_raw_ (uint16_t &voc_raw, uint16_t &nox_raw)
 Return the raw gas measurement. More...
 
- Protected Member Functions inherited from esphome::Component
virtual void call_loop ()
 
virtual void call_dump_config ()
 
void set_interval (const std::string &name, uint32_t interval, std::function< void()> &&f)
 Set an interval function with a unique name. More...
 
void set_interval (uint32_t interval, std::function< void()> &&f)
 
bool cancel_interval (const std::string &name)
 Cancel an interval function. More...
 
void set_retry (const std::string &name, uint32_t initial_wait_time, uint8_t max_attempts, std::function< RetryResult(uint8_t)> &&f, float backoff_increase_factor=1.0f)
 Set an retry function with a unique name. More...
 
void set_retry (uint32_t initial_wait_time, uint8_t max_attempts, std::function< RetryResult(uint8_t)> &&f, float backoff_increase_factor=1.0f)
 
bool cancel_retry (const std::string &name)
 Cancel a retry function. More...
 
void set_timeout (const std::string &name, uint32_t timeout, std::function< void()> &&f)
 Set a timeout function with a unique name. More...
 
void set_timeout (uint32_t timeout, std::function< void()> &&f)
 
bool cancel_timeout (const std::string &name)
 Cancel a timeout function. More...
 
void defer (const std::string &name, std::function< void()> &&f)
 Defer a callback to the next loop() call. More...
 
void defer (std::function< void()> &&f)
 Defer a callback to the next loop() call. More...
 
bool cancel_defer (const std::string &name)
 Cancel a defer callback using the specified name, name must not be empty. More...
 
- Protected Member Functions inherited from esphome::EntityBase
virtual uint32_t hash_base ()
 The hash_base() function has been deprecated. More...
 
void calc_object_id_ ()
 
- Protected Member Functions inherited from esphome::sensirion_common::SensirionI2CDevice
bool write_command_ (uint16_t command, CommandLen command_len, const uint16_t *data, uint8_t data_len)
 Write a command with arguments as words. More...
 
bool get_register_ (uint16_t reg, CommandLen command_len, uint16_t *data, uint8_t len, uint8_t delay)
 get data words from i2c register. More...
 
uint8_t sht_crc_ (uint16_t data)
 8-bit CRC checksum that is transmitted after each data word for read and write operation More...
 
uint8_t sht_crc_ (uint8_t data1, uint8_t data2)
 8-bit CRC checksum that is transmitted after each data word for read and write operation More...
 

Protected Attributes

sensor::Sensorhumidity_sensor_ {nullptr}
 Input sensor for humidity and temperature compensation. More...
 
sensor::Sensortemperature_sensor_ {nullptr}
 
SgpType sgp_type_ {SGP40}
 
uint64_t serial_number_
 
uint16_t featureset_
 
bool self_test_complete_
 
uint16_t self_test_time_
 
sensor::Sensorvoc_sensor_ {nullptr}
 
VOCGasIndexAlgorithm voc_algorithm_
 
optional< GasTuningvoc_tuning_params_
 
float voc_state0_
 
float voc_state1_
 
int32_t voc_index_ = 0
 
sensor::Sensornox_sensor_ {nullptr}
 
int32_t nox_index_ = 0
 
NOxGasIndexAlgorithm nox_algorithm_
 
optional< GasTuningnox_tuning_params_
 
uint16_t measure_time_
 
uint8_t samples_read_ = 0
 
uint8_t samples_to_stabilize_ = static_cast<int8_t>(GasIndexAlgorithm_INITIAL_BLACKOUT) * 2
 
bool store_baseline_
 
ESPPreferenceObject pref_
 
uint32_t seconds_since_last_store_
 
SGP4xBaselines voc_baselines_storage_
 
- Protected Attributes inherited from esphome::PollingComponent
uint32_t update_interval_
 
- Protected Attributes inherited from esphome::Component
uint32_t component_state_ {0x0000}
 State of this component. More...
 
float setup_priority_override_ {NAN}
 
const char * component_source_ {nullptr}
 
- Protected Attributes inherited from esphome::sensor::Sensor
CallbackManager< void(float)> raw_callback_
 Storage for raw state callbacks. More...
 
CallbackManager< void(float)> callback_
 Storage for filtered state callbacks. More...
 
Filterfilter_list_ {nullptr}
 Store all active filters. More...
 
optional< int8_t > accuracy_decimals_
 Accuracy in decimals override. More...
 
optional< StateClassstate_class_ {STATE_CLASS_NONE}
 State class override. More...
 
bool force_update_ {false}
 Force update mode. More...
 
bool has_state_ {false}
 
- Protected Attributes inherited from esphome::EntityBase
StringRef name_
 
const char * object_id_c_str_ {nullptr}
 
const char * icon_c_str_ {nullptr}
 
uint32_t object_id_hash_
 
bool has_own_name_ {false}
 
bool internal_ {false}
 
bool disabled_by_default_ {false}
 
EntityCategory entity_category_ {ENTITY_CATEGORY_NONE}
 
- Protected Attributes inherited from esphome::EntityBase_DeviceClass
const char * device_class_ {nullptr}
 Device class override. More...
 
- Protected Attributes inherited from esphome::EntityBase_UnitOfMeasurement
const char * unit_of_measurement_ {nullptr}
 Unit of measurement override. More...
 
- Protected Attributes inherited from esphome::sensirion_common::SensirionI2CDevice
uint8_t crc_polynomial_ {0x31u}
 
i2c::ErrorCode last_error_
 last error code from i2c operation More...
 
- Protected Attributes inherited from esphome::i2c::I2CDevice
uint8_t address_ {0x00}
 store the address of the device on the bus More...
 
I2CBusbus_ {nullptr}
 pointer to I2CBus instance More...
 

Additional Inherited Members

- Public Types inherited from esphome::sensirion_common::SensirionI2CDevice
enum  CommandLen : uint8_t { ADDR_8_BIT = 1, ADDR_16_BIT = 2 }
 
- Data Fields inherited from esphome::sensor::Sensor
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...
 

Detailed Description

This class implements support for the Sensirion sgp4x i2c GAS (VOC) sensors.

Definition at line 58 of file sgp4x.h.

Member Function Documentation

◆ dump_config()

void esphome::sgp4x::SGP4xComponent::dump_config ( )
overridevirtual

Reimplemented from esphome::Component.

Definition at line 304 of file sgp4x.cpp.

◆ get_setup_priority()

float esphome::sgp4x::SGP4xComponent::get_setup_priority ( ) const
inlineoverridevirtual

Reimplemented from esphome::Component.

Definition at line 78 of file sgp4x.h.

◆ measure_gas_indices_()

bool esphome::sgp4x::SGP4xComponent::measure_gas_indices_ ( int32_t &  voc,
int32_t &  nox 
)
protected

Combined the measured gasses, temperature, and humidity to calculate the VOC Index.

Parameters
temperatureThe measured temperature in degrees C
humidityThe measured relative humidity in % rH
Returns
int32_t The VOC Index

Definition at line 157 of file sgp4x.cpp.

◆ measure_raw_()

bool esphome::sgp4x::SGP4xComponent::measure_raw_ ( uint16_t &  voc_raw,
uint16_t &  nox_raw 
)
protected

Return the raw gas measurement.

Parameters
temperatureThe measured temperature in degrees C
humidityThe measured relative humidity in % rH
Returns
uint16_t The current raw gas measurement

Definition at line 198 of file sgp4x.cpp.

◆ self_test_()

void esphome::sgp4x::SGP4xComponent::self_test_ ( )
protected

Definition at line 117 of file sgp4x.cpp.

◆ sensirion_init_sensors_()

int16_t esphome::sgp4x::SGP4xComponent::sensirion_init_sensors_ ( )
protected

◆ set_humidity_sensor()

void esphome::sgp4x::SGP4xComponent::set_humidity_sensor ( sensor::Sensor humidity)
inline

Definition at line 71 of file sgp4x.h.

◆ set_nox_algorithm_tuning()

void esphome::sgp4x::SGP4xComponent::set_nox_algorithm_tuning ( uint16_t  index_offset,
uint16_t  learning_time_offset_hours,
uint16_t  learning_time_gain_hours,
uint16_t  gating_max_duration_minutes,
uint16_t  gain_factor 
)
inline

Definition at line 92 of file sgp4x.h.

◆ set_nox_sensor()

void esphome::sgp4x::SGP4xComponent::set_nox_sensor ( sensor::Sensor nox_sensor)
inline

Definition at line 81 of file sgp4x.h.

◆ set_store_baseline()

void esphome::sgp4x::SGP4xComponent::set_store_baseline ( bool  store_baseline)
inline

Definition at line 79 of file sgp4x.h.

◆ set_temperature_sensor()

void esphome::sgp4x::SGP4xComponent::set_temperature_sensor ( sensor::Sensor temperature)
inline

Definition at line 72 of file sgp4x.h.

◆ set_voc_algorithm_tuning()

void esphome::sgp4x::SGP4xComponent::set_voc_algorithm_tuning ( uint16_t  index_offset,
uint16_t  learning_time_offset_hours,
uint16_t  learning_time_gain_hours,
uint16_t  gating_max_duration_minutes,
uint16_t  std_initial,
uint16_t  gain_factor 
)
inline

Definition at line 82 of file sgp4x.h.

◆ set_voc_sensor()

void esphome::sgp4x::SGP4xComponent::set_voc_sensor ( sensor::Sensor voc_sensor)
inline

Definition at line 80 of file sgp4x.h.

◆ setup()

void esphome::sgp4x::SGP4xComponent::setup ( )
overridevirtual

Reimplemented from esphome::Component.

Definition at line 11 of file sgp4x.cpp.

◆ update()

void esphome::sgp4x::SGP4xComponent::update ( )
overridevirtual

Implements esphome::PollingComponent.

Definition at line 282 of file sgp4x.cpp.

◆ update_gas_indices()

void esphome::sgp4x::SGP4xComponent::update_gas_indices ( )

Definition at line 263 of file sgp4x.cpp.

Field Documentation

◆ featureset_

uint16_t esphome::sgp4x::SGP4xComponent::featureset_
protected

Definition at line 116 of file sgp4x.h.

◆ humidity_sensor_

sensor::Sensor* esphome::sgp4x::SGP4xComponent::humidity_sensor_ {nullptr}
protected

Input sensor for humidity and temperature compensation.

Definition at line 107 of file sgp4x.h.

◆ measure_time_

uint16_t esphome::sgp4x::SGP4xComponent::measure_time_
protected

Definition at line 133 of file sgp4x.h.

◆ nox_algorithm_

NOxGasIndexAlgorithm esphome::sgp4x::SGP4xComponent::nox_algorithm_
protected

Definition at line 130 of file sgp4x.h.

◆ nox_index_

int32_t esphome::sgp4x::SGP4xComponent::nox_index_ = 0
protected

Definition at line 129 of file sgp4x.h.

◆ nox_sensor_

sensor::Sensor* esphome::sgp4x::SGP4xComponent::nox_sensor_ {nullptr}
protected

Definition at line 128 of file sgp4x.h.

◆ nox_tuning_params_

optional<GasTuning> esphome::sgp4x::SGP4xComponent::nox_tuning_params_
protected

Definition at line 131 of file sgp4x.h.

◆ pref_

ESPPreferenceObject esphome::sgp4x::SGP4xComponent::pref_
protected

Definition at line 138 of file sgp4x.h.

◆ samples_read_

uint8_t esphome::sgp4x::SGP4xComponent::samples_read_ = 0
protected

Definition at line 134 of file sgp4x.h.

◆ samples_to_stabilize_

uint8_t esphome::sgp4x::SGP4xComponent::samples_to_stabilize_ = static_cast<int8_t>(GasIndexAlgorithm_INITIAL_BLACKOUT) * 2
protected

Definition at line 135 of file sgp4x.h.

◆ seconds_since_last_store_

uint32_t esphome::sgp4x::SGP4xComponent::seconds_since_last_store_
protected

Definition at line 139 of file sgp4x.h.

◆ self_test_complete_

bool esphome::sgp4x::SGP4xComponent::self_test_complete_
protected

Definition at line 118 of file sgp4x.h.

◆ self_test_time_

uint16_t esphome::sgp4x::SGP4xComponent::self_test_time_
protected

Definition at line 119 of file sgp4x.h.

◆ serial_number_

uint64_t esphome::sgp4x::SGP4xComponent::serial_number_
protected

Definition at line 115 of file sgp4x.h.

◆ sgp_type_

SgpType esphome::sgp4x::SGP4xComponent::sgp_type_ {SGP40}
protected

Definition at line 114 of file sgp4x.h.

◆ store_baseline_

bool esphome::sgp4x::SGP4xComponent::store_baseline_
protected

Definition at line 137 of file sgp4x.h.

◆ temperature_sensor_

sensor::Sensor* esphome::sgp4x::SGP4xComponent::temperature_sensor_ {nullptr}
protected

Definition at line 108 of file sgp4x.h.

◆ voc_algorithm_

VOCGasIndexAlgorithm esphome::sgp4x::SGP4xComponent::voc_algorithm_
protected

Definition at line 122 of file sgp4x.h.

◆ voc_baselines_storage_

SGP4xBaselines esphome::sgp4x::SGP4xComponent::voc_baselines_storage_
protected

Definition at line 140 of file sgp4x.h.

◆ voc_index_

int32_t esphome::sgp4x::SGP4xComponent::voc_index_ = 0
protected

Definition at line 126 of file sgp4x.h.

◆ voc_sensor_

sensor::Sensor* esphome::sgp4x::SGP4xComponent::voc_sensor_ {nullptr}
protected

Definition at line 121 of file sgp4x.h.

◆ voc_state0_

float esphome::sgp4x::SGP4xComponent::voc_state0_
protected

Definition at line 124 of file sgp4x.h.

◆ voc_state1_

float esphome::sgp4x::SGP4xComponent::voc_state1_
protected

Definition at line 125 of file sgp4x.h.

◆ voc_tuning_params_

optional<GasTuning> esphome::sgp4x::SGP4xComponent::voc_tuning_params_
protected

Definition at line 123 of file sgp4x.h.


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