ESPHome 2026.3.0-dev
Loading...
Searching...
No Matches
esphome::sgp30::SGP30Component Class Reference

This class implements support for the Sensirion SGP30 i2c GAS (VOC and CO2eq) sensors. More...

#include <sgp30.h>

Inheritance diagram for esphome::sgp30::SGP30Component:
esphome::PollingComponent esphome::sensirion_common::SensirionI2CDevice esphome::Component esphome::i2c::I2CDevice

Public Member Functions

void set_eco2_sensor (sensor::Sensor *eco2)
 
void set_tvoc_sensor (sensor::Sensor *tvoc)
 
void set_eco2_baseline_sensor (sensor::Sensor *eco2_baseline)
 
void set_tvoc_baseline_sensor (sensor::Sensor *tvoc_baseline)
 
void set_store_baseline (bool store_baseline)
 
void set_eco2_baseline (uint16_t eco2_baseline)
 
void set_tvoc_baseline (uint16_t tvoc_baseline)
 
void set_humidity_sensor (sensor::Sensor *humidity)
 
void set_temperature_sensor (sensor::Sensor *temperature)
 
void setup () override
 
void update () override
 
void dump_config () override
 
- Public Member Functions inherited from esphome::PollingComponent
 PollingComponent ()
 
 PollingComponent (uint32_t update_interval)
 Initialize this polling component with the given update interval in ms.
 
virtual void set_update_interval (uint32_t update_interval)
 Manually set the update interval in ms for this polling object.
 
void call_setup () override
 
virtual uint32_t get_update_interval () const
 Get the update interval in ms of this sensor.
 
void start_poller ()
 
void stop_poller ()
 
- Public Member Functions inherited from esphome::Component
virtual void loop ()
 This method will be called repeatedly.
 
virtual float get_setup_priority () const
 priority of setup().
 
float get_actual_setup_priority () const
 
void set_setup_priority (float priority)
 
virtual float get_loop_priority () const
 priority of loop().
 
void call ()
 
virtual void on_shutdown ()
 
virtual void on_safe_shutdown ()
 
virtual bool teardown ()
 Called during teardown to allow component to gracefully finish operations.
 
virtual void on_powerdown ()
 Called after teardown is complete to power down hardware.
 
uint8_t get_component_state () const
 
void reset_to_construction_state ()
 Reset this component back to the construction state to allow setup to run again.
 
bool is_in_loop_state () const
 Check if this component has completed setup and is in the loop state.
 
bool is_idle () const
 Check if this component is idle.
 
void mark_failed ()
 Mark this component as failed.
 
 ESPDEPRECATED ("Use mark_failed(LOG_STR(\"static string literal\")) instead. Do NOT use .c_str() from temporary " "strings. Will stop working in 2026.6.0", "2025.12.0") void mark_failed(const char *message)
 
void mark_failed (const LogString *message)
 
void disable_loop ()
 Disable this component's loop.
 
void enable_loop ()
 Enable this component's loop.
 
void enable_loop_soon_any_context ()
 Thread and ISR-safe version of enable_loop() that can be called from any context.
 
bool is_failed () const
 
bool is_ready () const
 
virtual bool can_proceed ()
 
bool status_has_warning () const
 
bool status_has_error () const
 
void status_set_warning (const char *message=nullptr)
 
void status_set_warning (const LogString *message)
 
void status_set_error ()
 
 ESPDEPRECATED ("Use status_set_error(LOG_STR(\"static string literal\")) instead. Do NOT use .c_str() from temporary " "strings. Will stop working in 2026.6.0", "2025.12.0") void status_set_error(const char *message)
 
void status_set_error (const LogString *message)
 
void status_clear_warning ()
 
void status_clear_error ()
 
void status_momentary_warning (const char *name, uint32_t length=5000)
 Set warning status flag and automatically clear it after a timeout.
 
void status_momentary_error (const char *name, uint32_t length=5000)
 Set error status flag and automatically clear it after a timeout.
 
bool has_overridden_loop () const
 
void set_component_source (const LogString *source)
 Set where this component was loaded from for some debug messages.
 
const LogString * get_component_log_str () const
 Get the integration where this component was declared as a LogString for logging.
 
bool should_warn_of_blocking (uint32_t blocking_time)
 
- Public Member Functions inherited from esphome::sensirion_common::SensirionI2CDevice
bool read_data (uint16_t *data, uint8_t len)
 Read data words from I2C device.
 
bool read_data (uint16_t &data)
 Read 1 data word from I2C device.
 
bool get_register (uint16_t command, uint16_t *data, uint8_t len, uint8_t delay=0)
 get data words from I2C register.
 
bool get_register (uint16_t i2c_register, uint16_t &data, uint8_t delay=0)
 Read 1 data word from 16 bit I2C register.
 
bool get_8bit_register (uint8_t i2c_register, uint16_t *data, uint8_t len, uint8_t delay=0)
 get data words from I2C register.
 
bool get_8bit_register (uint8_t i2c_register, uint16_t &data, uint8_t delay=0)
 Read 1 data word from 8 bit I2C register.
 
template<class T >
bool write_command (T i2c_register)
 Write a command to the I2C device.
 
template<class T >
bool write_command (T i2c_register, uint16_t data)
 Write a command and one data word to the I2C device .
 
template<class T >
bool write_command (T i2c_register, const std::vector< uint16_t > &data)
 Write a command with arguments as words.
 
template<class T >
bool write_command (T i2c_register, const uint16_t *data, uint8_t len)
 Write a command with arguments as words.
 
- Public Member Functions inherited from esphome::i2c::I2CDevice
 I2CDevice ()=default
 we use the C++ default constructor
 
void set_i2c_address (uint8_t address)
 We store the address of the device on the bus.
 
uint8_t get_i2c_address () const
 Returns the I2C address of the object.
 
void set_i2c_bus (I2CBus *bus)
 we store the pointer to the I2CBus to use
 
I2CRegister reg (uint8_t a_register)
 calls the I2CRegister constructor
 
I2CRegister16 reg16 (uint16_t a_register)
 calls the I2CRegister16 constructor
 
ErrorCode read (uint8_t *data, size_t len) const
 reads an array of bytes from the device using an I2CBus
 
ErrorCode read_register (uint8_t a_register, uint8_t *data, size_t len)
 reads an array of bytes from a specific register in the I²C device
 
ErrorCode read_register16 (uint16_t a_register, uint8_t *data, size_t len)
 reads an array of bytes from a specific register in the I²C device
 
ErrorCode write (const uint8_t *data, size_t len) const
 writes an array of bytes to a device using an I2CBus
 
ErrorCode write_read (const uint8_t *write_data, size_t write_len, uint8_t *read_data, size_t read_len) const
 writes an array of bytes to a device, then reads an array, as a single transaction
 
ErrorCode write_register (uint8_t a_register, const uint8_t *data, size_t len) const
 writes an array of bytes to a specific register in the I²C device
 
ErrorCode write_register16 (uint16_t a_register, const uint8_t *data, size_t len) const
 write an array of bytes to a specific register in the I²C device
 
bool read_bytes (uint8_t a_register, uint8_t *data, uint8_t len)
 Compat APIs All methods below have been added for compatibility reasons.
 
bool read_bytes_raw (uint8_t *data, uint8_t len) const
 
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)
 
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) const
 
bool write_bytes (uint8_t a_register, const std::vector< uint8_t > &data) const
 
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) const
 
bool write_byte (uint8_t a_register, uint8_t data) const
 
bool write_byte_16 (uint8_t a_register, uint16_t data) const
 

Protected Types

enum  ErrorCode : uint8_t {
  COMMUNICATION_FAILED , MEASUREMENT_INIT_FAILED , INVALID_ID , UNSUPPORTED_ID ,
  UNKNOWN
}
 

Protected Member Functions

void send_env_data_ ()
 
void read_iaq_baseline_ ()
 
bool is_sensor_baseline_reliable_ ()
 
void write_iaq_baseline_ (uint16_t eco2_baseline, uint16_t tvoc_baseline)
 
- Protected Member Functions inherited from esphome::Component
void call_loop_ ()
 
void call_dump_config_ ()
 
void set_component_state_ (uint8_t state)
 Helper to set component state (clears state bits and sets new state)
 
bool set_status_flag_ (uint8_t flag)
 Helper to set a status LED flag on both this component and the app.
 
void set_interval (uint32_t id, uint32_t interval, std::function< void()> &&f)
 Set an interval function with a numeric ID (zero heap allocation).
 
void set_interval (InternalSchedulerID id, uint32_t interval, std::function< void()> &&f)
 
void set_interval (uint32_t interval, std::function< void()> &&f)
 
bool cancel_interval (uint32_t id)
 
bool cancel_interval (InternalSchedulerID id)
 
ESPDEPRECATED("set_retry is deprecated and will be removed in 2026.8.0. Use set_timeout or set_interval instead.", "2026.2.0") void set_retry(const std ESPDEPRECATED ("set_retry is deprecated and will be removed in 2026.8.0. Use set_timeout or set_interval instead.", "2026.2.0") void set_retry(const char *name
 
 ESPDEPRECATED ("set_retry is deprecated and will be removed in 2026.8.0. Use set_timeout or set_interval instead.", "2026.2.0") void set_retry(uint32_t id
 
 ESPDEPRECATED ("set_retry is deprecated and will be removed in 2026.8.0. Use set_timeout or set_interval instead.", "2026.2.0") void set_retry(uint32_t initial_wait_time
 
ESPDEPRECATED("cancel_retry is deprecated and will be removed in 2026.8.0.", "2026.2.0") bool cancel_retry(const std ESPDEPRECATED ("cancel_retry is deprecated and will be removed in 2026.8.0.", "2026.2.0") bool cancel_retry(const char *name)
 
 ESPDEPRECATED ("cancel_retry is deprecated and will be removed in 2026.8.0.", "2026.2.0") bool cancel_retry(uint32_t id)
 
void set_timeout (uint32_t id, uint32_t timeout, std::function< void()> &&f)
 Set a timeout function with a numeric ID (zero heap allocation).
 
void set_timeout (InternalSchedulerID id, uint32_t timeout, std::function< void()> &&f)
 
void set_timeout (uint32_t timeout, std::function< void()> &&f)
 
bool cancel_timeout (uint32_t id)
 
bool cancel_timeout (InternalSchedulerID id)
 
void defer (std::function< void()> &&f)
 Defer a callback to the next loop() call.
 
void defer (uint32_t id, std::function< void()> &&f)
 Defer a callback with a numeric ID (zero heap allocation)
 
bool cancel_defer (uint32_t 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.
 
bool get_register_ (uint16_t reg, CommandLen command_len, uint16_t *data, uint8_t len, uint8_t delay)
 get data words from I2C register.
 

Protected Attributes

uint64_t serial_number_
 
uint32_t required_warm_up_time_
 
uint32_t seconds_since_last_store_
 
uint16_t featureset_
 
uint16_t eco2_baseline_ {0x0000}
 
uint16_t tvoc_baseline_ {0x0000}
 
bool store_baseline_
 
enum esphome::sgp30::SGP30Component::ErrorCode UNKNOWN
 
ESPPreferenceObject pref_
 
SGP30Baselines baselines_storage_
 
sensor::Sensoreco2_sensor_ {nullptr}
 
sensor::Sensortvoc_sensor_ {nullptr}
 
sensor::Sensoreco2_sensor_baseline_ {nullptr}
 
sensor::Sensortvoc_sensor_baseline_ {nullptr}
 
sensor::Sensorhumidity_sensor_ {nullptr}
 Input sensor for humidity and temperature compensation.
 
sensor::Sensortemperature_sensor_ {nullptr}
 
- Protected Attributes inherited from esphome::PollingComponent
uint32_t update_interval_
 
- Protected Attributes inherited from esphome::Component
ESPDEPRECATED("Use const char* or uint32_t overload instead. Removed in 2026.7.0", "2026.1.0") void set_interval(const std voi set_interval )(const char *name, uint32_t interval, std::function< void()> &&f)
 Set an interval function with a unique name.
 
ESPDEPRECATED("Use const char* or uint32_t overload instead. Removed in 2026.7.0", "2026.1.0") bool cancel_interval(const std boo cancel_interval )(const char *name)
 Cancel an interval function.
 
ESPDEPRECATED("set_retry is deprecated and will be removed in 2026.8.0. Use set_timeout or set_interval instead.", "2026.2.0") void set_retry(const std uint32_t initial_wait_time
 
ESPDEPRECATED("set_retry is deprecated and will be removed in 2026.8.0. Use set_timeout or set_interval instead.", "2026.2.0") void set_retry(const std uint32_t uint8_t max_attempts
 
ESPDEPRECATED("set_retry is deprecated and will be removed in 2026.8.0. Use set_timeout or set_interval instead.", "2026.2.0") void set_retry(const std uint32_t uint8_t std::function< RetryResult(uint8_t)> && f
 
ESPDEPRECATED("set_retry is deprecated and will be removed in 2026.8.0. Use set_timeout or set_interval instead.", "2026.2.0") void set_retry(const std uint32_t uint8_t std::function< RetryResult(uint8_t)> float backoff_increase_factor = 1.0f)
 
uint32_t initial_wait_time
 
uint32_t uint8_t max_attempts
 
uint32_t uint8_t std::function< RetryResult(uint8_t)> && f
 
uint32_t uint8_t std::function< RetryResult(uint8_t)> float backoff_increase_factor = 1.0f)
 
uint8_t max_attempts
 
uint8_t std::function< RetryResult(uint8_t)> && f
 
uint8_t std::function< RetryResult(uint8_t)> float backoff_increase_factor = 1.0f)
 
ESPDEPRECATED("Use const char* or uint32_t overload instead. Removed in 2026.7.0", "2026.1.0") void set_timeout(const std voi set_timeout )(const char *name, uint32_t timeout, std::function< void()> &&f)
 Set a timeout function with a unique name.
 
ESPDEPRECATED("Use const char* or uint32_t overload instead. Removed in 2026.7.0", "2026.1.0") bool cancel_timeout(const std boo cancel_timeout )(const char *name)
 Cancel a timeout function.
 
ESPDEPRECATED("Use const char* overload instead. Removed in 2026.7.0", "2026.1.0") void defer(const std voi defer )(const char *name, std::function< void()> &&f)
 Defer a callback to the next loop() call.
 
ESPDEPRECATED("Use const char* overload instead. Removed in 2026.7.0", "2026.1.0") bool cancel_defer(const std boo cancel_defer )(const char *name)
 Cancel a defer callback using the specified name, name must not be empty.
 
const LogString * component_source_ {nullptr}
 
uint16_t warn_if_blocking_over_ {WARN_IF_BLOCKING_OVER_MS}
 Warn if blocked for this many ms (max 65.5s)
 
uint8_t component_state_ {0x00}
 State of this component - each bit has a purpose: Bits 0-2: Component state (0x00=CONSTRUCTION, 0x01=SETUP, 0x02=LOOP, 0x03=FAILED, 0x04=LOOP_DONE) Bit 3: STATUS_LED_WARNING Bit 4: STATUS_LED_ERROR Bit 5: Has overridden loop() (set at registration time) Bits 6-7: Unused - reserved for future expansion.
 
volatile bool pending_enable_loop_ {false}
 ISR-safe flag for enable_loop_soon_any_context.
 
- Protected Attributes inherited from esphome::sensirion_common::SensirionI2CDevice
i2c::ErrorCode last_error_
 last error code from I2C operation
 
- Protected Attributes inherited from esphome::i2c::I2CDevice
uint8_t address_ {0x00}
 store the address of the device on the bus
 
I2CBusbus_ {nullptr}
 pointer to I2CBus instance
 

Additional Inherited Members

- Public Types inherited from esphome::sensirion_common::SensirionI2CDevice
enum  CommandLen : uint8_t { ADDR_8_BIT = 1 , ADDR_16_BIT = 2 }
 
- Static Public Member Functions inherited from esphome::sensirion_common::SensirionI2CDevice
static const char * sensirion_convert_to_string_in_place (uint16_t *array, size_t length)
 This function performs an in-place conversion of the provided buffer from uint16_t values to big endianness.
 

Detailed Description

This class implements support for the Sensirion SGP30 i2c GAS (VOC and CO2eq) sensors.

Definition at line 20 of file sgp30.h.

Member Enumeration Documentation

◆ ErrorCode

Enumerator
COMMUNICATION_FAILED 
MEASUREMENT_INIT_FAILED 
INVALID_ID 
UNSUPPORTED_ID 
UNKNOWN 

Definition at line 50 of file sgp30.h.

Member Function Documentation

◆ dump_config()

void esphome::sgp30::SGP30Component::dump_config ( )
overridevirtual

Reimplemented from esphome::Component.

Definition at line 226 of file sgp30.cpp.

◆ is_sensor_baseline_reliable_()

bool esphome::sgp30::SGP30Component::is_sensor_baseline_reliable_ ( )
protected

Definition at line 100 of file sgp30.cpp.

◆ read_iaq_baseline_()

void esphome::sgp30::SGP30Component::read_iaq_baseline_ ( )
protected

Definition at line 110 of file sgp30.cpp.

◆ send_env_data_()

void esphome::sgp30::SGP30Component::send_env_data_ ( )
protected

Definition at line 161 of file sgp30.cpp.

◆ set_eco2_baseline()

void esphome::sgp30::SGP30Component::set_eco2_baseline ( uint16_t eco2_baseline)
inline

Definition at line 27 of file sgp30.h.

◆ set_eco2_baseline_sensor()

void esphome::sgp30::SGP30Component::set_eco2_baseline_sensor ( sensor::Sensor * eco2_baseline)
inline

Definition at line 24 of file sgp30.h.

◆ set_eco2_sensor()

void esphome::sgp30::SGP30Component::set_eco2_sensor ( sensor::Sensor * eco2)
inline

Definition at line 22 of file sgp30.h.

◆ set_humidity_sensor()

void esphome::sgp30::SGP30Component::set_humidity_sensor ( sensor::Sensor * humidity)
inline

Definition at line 29 of file sgp30.h.

◆ set_store_baseline()

void esphome::sgp30::SGP30Component::set_store_baseline ( bool store_baseline)
inline

Definition at line 26 of file sgp30.h.

◆ set_temperature_sensor()

void esphome::sgp30::SGP30Component::set_temperature_sensor ( sensor::Sensor * temperature)
inline

Definition at line 30 of file sgp30.h.

◆ set_tvoc_baseline()

void esphome::sgp30::SGP30Component::set_tvoc_baseline ( uint16_t tvoc_baseline)
inline

Definition at line 28 of file sgp30.h.

◆ set_tvoc_baseline_sensor()

void esphome::sgp30::SGP30Component::set_tvoc_baseline_sensor ( sensor::Sensor * tvoc_baseline)
inline

Definition at line 25 of file sgp30.h.

◆ set_tvoc_sensor()

void esphome::sgp30::SGP30Component::set_tvoc_sensor ( sensor::Sensor * tvoc)
inline

Definition at line 23 of file sgp30.h.

◆ setup()

void esphome::sgp30::SGP30Component::setup ( )
overridevirtual

Reimplemented from esphome::Component.

Definition at line 37 of file sgp30.cpp.

◆ update()

void esphome::sgp30::SGP30Component::update ( )
overridevirtual

Implements esphome::PollingComponent.

Definition at line 275 of file sgp30.cpp.

◆ write_iaq_baseline_()

void esphome::sgp30::SGP30Component::write_iaq_baseline_ ( uint16_t eco2_baseline,
uint16_t tvoc_baseline )
protected

Definition at line 210 of file sgp30.cpp.

Field Documentation

◆ baselines_storage_

SGP30Baselines esphome::sgp30::SGP30Component::baselines_storage_
protected

Definition at line 59 of file sgp30.h.

◆ eco2_baseline_

uint16_t esphome::sgp30::SGP30Component::eco2_baseline_ {0x0000}
protected

Definition at line 46 of file sgp30.h.

◆ eco2_sensor_

sensor::Sensor* esphome::sgp30::SGP30Component::eco2_sensor_ {nullptr}
protected

Definition at line 61 of file sgp30.h.

◆ eco2_sensor_baseline_

sensor::Sensor* esphome::sgp30::SGP30Component::eco2_sensor_baseline_ {nullptr}
protected

Definition at line 63 of file sgp30.h.

◆ featureset_

uint16_t esphome::sgp30::SGP30Component::featureset_
protected

Definition at line 45 of file sgp30.h.

◆ humidity_sensor_

sensor::Sensor* esphome::sgp30::SGP30Component::humidity_sensor_ {nullptr}
protected

Input sensor for humidity and temperature compensation.

Definition at line 66 of file sgp30.h.

◆ pref_

ESPPreferenceObject esphome::sgp30::SGP30Component::pref_
protected

Definition at line 58 of file sgp30.h.

◆ required_warm_up_time_

uint32_t esphome::sgp30::SGP30Component::required_warm_up_time_
protected

Definition at line 43 of file sgp30.h.

◆ seconds_since_last_store_

uint32_t esphome::sgp30::SGP30Component::seconds_since_last_store_
protected

Definition at line 44 of file sgp30.h.

◆ serial_number_

uint64_t esphome::sgp30::SGP30Component::serial_number_
protected

Definition at line 42 of file sgp30.h.

◆ store_baseline_

bool esphome::sgp30::SGP30Component::store_baseline_
protected

Definition at line 48 of file sgp30.h.

◆ temperature_sensor_

sensor::Sensor* esphome::sgp30::SGP30Component::temperature_sensor_ {nullptr}
protected

Definition at line 67 of file sgp30.h.

◆ tvoc_baseline_

uint16_t esphome::sgp30::SGP30Component::tvoc_baseline_ {0x0000}
protected

Definition at line 47 of file sgp30.h.

◆ tvoc_sensor_

sensor::Sensor* esphome::sgp30::SGP30Component::tvoc_sensor_ {nullptr}
protected

Definition at line 62 of file sgp30.h.

◆ tvoc_sensor_baseline_

sensor::Sensor* esphome::sgp30::SGP30Component::tvoc_sensor_baseline_ {nullptr}
protected

Definition at line 64 of file sgp30.h.

◆ UNKNOWN

enum esphome::sgp30::SGP30Component::ErrorCode esphome::sgp30::SGP30Component::UNKNOWN
protected

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