ESPHome 2026.3.0-dev
Loading...
Searching...
No Matches
esphome::scd30::SCD30Component Class Reference

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

#include <scd30.h>

Inheritance diagram for esphome::scd30::SCD30Component:
esphome::Component esphome::sensirion_common::SensirionI2CDevice esphome::i2c::I2CDevice

Public Member Functions

void set_co2_sensor (sensor::Sensor *co2)
 
void set_humidity_sensor (sensor::Sensor *humidity)
 
void set_temperature_sensor (sensor::Sensor *temperature)
 
void set_automatic_self_calibration (bool asc)
 
void set_altitude_compensation (uint16_t altitude)
 
void set_ambient_pressure_compensation (float pressure)
 
void set_temperature_offset (float offset)
 
void set_update_interval (uint16_t interval)
 
bool force_recalibration_with_reference (uint16_t co2_reference)
 
uint16_t get_forced_calibration_reference ()
 
void setup () override
 
void update ()
 
void dump_config () override
 
- 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 {
  COMMUNICATION_FAILED , FIRMWARE_IDENTIFICATION_FAILED , MEASUREMENT_INIT_FAILED , FORCE_RECALIBRATION_FAILED ,
  UNKNOWN
}
 

Protected Member Functions

bool is_data_ready_ ()
 
- Protected Member Functions inherited from esphome::Component
void call_loop_ ()
 
virtual void call_setup ()
 
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

enum esphome::scd30::SCD30Component::ErrorCode UNKNOWN
 
bool enable_asc_ {true}
 
uint16_t altitude_compensation_ {0xFFFF}
 
uint16_t ambient_pressure_compensation_ {0x0000}
 
float temperature_offset_ {0.0}
 
uint16_t update_interval_ {0xFFFF}
 
sensor::Sensorco2_sensor_ {nullptr}
 
sensor::Sensorhumidity_sensor_ {nullptr}
 
sensor::Sensortemperature_sensor_ {nullptr}
 
- 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 scd30 i2c GAS (VOC and CO2eq) sensors.

Definition at line 11 of file scd30.h.

Member Enumeration Documentation

◆ ErrorCode

Enumerator
COMMUNICATION_FAILED 
FIRMWARE_IDENTIFICATION_FAILED 
MEASUREMENT_INIT_FAILED 
FORCE_RECALIBRATION_FAILED 
UNKNOWN 

Definition at line 33 of file scd30.h.

Member Function Documentation

◆ dump_config()

void esphome::scd30::SCD30Component::dump_config ( )
overridevirtual

Reimplemented from esphome::Component.

Definition at line 117 of file scd30.cpp.

◆ force_recalibration_with_reference()

bool esphome::scd30::SCD30Component::force_recalibration_with_reference ( uint16_t co2_reference)

Definition at line 211 of file scd30.cpp.

◆ get_forced_calibration_reference()

uint16_t esphome::scd30::SCD30Component::get_forced_calibration_reference ( )

Definition at line 224 of file scd30.cpp.

◆ is_data_ready_()

bool esphome::scd30::SCD30Component::is_data_ready_ ( )
protected

Definition at line 199 of file scd30.cpp.

◆ set_altitude_compensation()

void esphome::scd30::SCD30Component::set_altitude_compensation ( uint16_t altitude)
inline

Definition at line 17 of file scd30.h.

◆ set_ambient_pressure_compensation()

void esphome::scd30::SCD30Component::set_ambient_pressure_compensation ( float pressure)
inline

Definition at line 18 of file scd30.h.

◆ set_automatic_self_calibration()

void esphome::scd30::SCD30Component::set_automatic_self_calibration ( bool asc)
inline

Definition at line 16 of file scd30.h.

◆ set_co2_sensor()

void esphome::scd30::SCD30Component::set_co2_sensor ( sensor::Sensor * co2)
inline

Definition at line 13 of file scd30.h.

◆ set_humidity_sensor()

void esphome::scd30::SCD30Component::set_humidity_sensor ( sensor::Sensor * humidity)
inline

Definition at line 14 of file scd30.h.

◆ set_temperature_offset()

void esphome::scd30::SCD30Component::set_temperature_offset ( float offset)
inline

Definition at line 21 of file scd30.h.

◆ set_temperature_sensor()

void esphome::scd30::SCD30Component::set_temperature_sensor ( sensor::Sensor * temperature)
inline

Definition at line 15 of file scd30.h.

◆ set_update_interval()

void esphome::scd30::SCD30Component::set_update_interval ( uint16_t interval)
inline

Definition at line 22 of file scd30.h.

◆ setup()

void esphome::scd30::SCD30Component::setup ( )
overridevirtual

Firmware version identification

Sensor initialization

Reimplemented from esphome::Component.

Definition at line 28 of file scd30.cpp.

◆ update()

void esphome::scd30::SCD30Component::update ( )

Definition at line 153 of file scd30.cpp.

Field Documentation

◆ altitude_compensation_

uint16_t esphome::scd30::SCD30Component::altitude_compensation_ {0xFFFF}
protected

Definition at line 41 of file scd30.h.

◆ ambient_pressure_compensation_

uint16_t esphome::scd30::SCD30Component::ambient_pressure_compensation_ {0x0000}
protected

Definition at line 42 of file scd30.h.

◆ co2_sensor_

sensor::Sensor* esphome::scd30::SCD30Component::co2_sensor_ {nullptr}
protected

Definition at line 46 of file scd30.h.

◆ enable_asc_

bool esphome::scd30::SCD30Component::enable_asc_ {true}
protected

Definition at line 40 of file scd30.h.

◆ humidity_sensor_

sensor::Sensor* esphome::scd30::SCD30Component::humidity_sensor_ {nullptr}
protected

Definition at line 47 of file scd30.h.

◆ temperature_offset_

float esphome::scd30::SCD30Component::temperature_offset_ {0.0}
protected

Definition at line 43 of file scd30.h.

◆ temperature_sensor_

sensor::Sensor* esphome::scd30::SCD30Component::temperature_sensor_ {nullptr}
protected

Definition at line 48 of file scd30.h.

◆ UNKNOWN

enum esphome::scd30::SCD30Component::ErrorCode esphome::scd30::SCD30Component::UNKNOWN
protected

◆ update_interval_

uint16_t esphome::scd30::SCD30Component::update_interval_ {0xFFFF}
protected

Definition at line 44 of file scd30.h.


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