ESPHome  2022.11.5
Public Member Functions | Protected Types | Protected Member Functions | Protected Attributes
esphome::sps30::SPS30Component Class Reference

This class implements support for the Sensirion SPS30 i2c/UART Particulate Matter PM1.0, PM2.5, PM4, PM10 Air Quality sensors. More...

#include <sps30.h>

Inheritance diagram for esphome::sps30::SPS30Component:
esphome::PollingComponent esphome::sensirion_common::SensirionI2CDevice esphome::Component esphome::i2c::I2CDevice

Public Member Functions

void set_pm_1_0_sensor (sensor::Sensor *pm_1_0)
 
void set_pm_2_5_sensor (sensor::Sensor *pm_2_5)
 
void set_pm_4_0_sensor (sensor::Sensor *pm_4_0)
 
void set_pm_10_0_sensor (sensor::Sensor *pm_10_0)
 
void set_pmc_0_5_sensor (sensor::Sensor *pmc_0_5)
 
void set_pmc_1_0_sensor (sensor::Sensor *pmc_1_0)
 
void set_pmc_2_5_sensor (sensor::Sensor *pmc_2_5)
 
void set_pmc_4_0_sensor (sensor::Sensor *pmc_4_0)
 
void set_pmc_10_0_sensor (sensor::Sensor *pmc_10_0)
 
void set_pm_size_sensor (sensor::Sensor *pm_size)
 
void set_auto_cleaning_interval (uint32_t auto_cleaning_interval)
 
void setup () override
 
void update () override
 
void dump_config () override
 
float get_setup_priority () const override
 
bool start_fan_cleaning ()
 
- 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...
 
- 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 ()
 
virtual bool can_proceed ()
 
bool status_has_warning ()
 
bool status_has_error ()
 
void status_set_warning ()
 
void status_set_error ()
 
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::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
 
void set_i2c_address (uint8_t address)
 
void set_i2c_bus (I2CBus *bus)
 
I2CRegister reg (uint8_t a_register)
 
ErrorCode read (uint8_t *data, size_t len)
 
ErrorCode read_register (uint8_t a_register, uint8_t *data, size_t len, bool stop=true)
 
ErrorCode write (const uint8_t *data, uint8_t len, bool stop=true)
 
ErrorCode write_register (uint8_t a_register, const uint8_t *data, size_t len, bool stop=true)
 
bool read_bytes (uint8_t a_register, uint8_t *data, uint8_t len)
 
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 Types

enum  ErrorCode {
  COMMUNICATION_FAILED, FIRMWARE_VERSION_REQUEST_FAILED, FIRMWARE_VERSION_READ_FAILED, SERIAL_NUMBER_REQUEST_FAILED,
  SERIAL_NUMBER_READ_FAILED, MEASUREMENT_INIT_FAILED, UNKNOWN
}
 

Protected Member Functions

bool start_continuous_measurement_ ()
 
- 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()> &&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()> &&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::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

char serial_number_ [17] = {0}
 
uint16_t raw_firmware_version_
 Terminating NULL character. More...
 
uint8_t skipped_data_read_cycles_ = 0
 
enum esphome::sps30::SPS30Component::ErrorCode UNKNOWN
 
sensor::Sensorpm_1_0_sensor_ {nullptr}
 
sensor::Sensorpm_2_5_sensor_ {nullptr}
 
sensor::Sensorpm_4_0_sensor_ {nullptr}
 
sensor::Sensorpm_10_0_sensor_ {nullptr}
 
sensor::Sensorpmc_0_5_sensor_ {nullptr}
 
sensor::Sensorpmc_1_0_sensor_ {nullptr}
 
sensor::Sensorpmc_2_5_sensor_ {nullptr}
 
sensor::Sensorpmc_4_0_sensor_ {nullptr}
 
sensor::Sensorpmc_10_0_sensor_ {nullptr}
 
sensor::Sensorpm_size_sensor_ {nullptr}
 
optional< uint32_t > fan_interval_
 
- 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::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}
 
I2CBusbus_ {nullptr}
 

Additional Inherited Members

- Public Types inherited from esphome::sensirion_common::SensirionI2CDevice
enum  CommandLen : uint8_t { ADDR_8_BIT = 1, ADDR_16_BIT = 2 }
 

Detailed Description

This class implements support for the Sensirion SPS30 i2c/UART Particulate Matter PM1.0, PM2.5, PM4, PM10 Air Quality sensors.

Definition at line 12 of file sps30.h.

Member Enumeration Documentation

◆ ErrorCode

Enumerator
COMMUNICATION_FAILED 
FIRMWARE_VERSION_REQUEST_FAILED 
FIRMWARE_VERSION_READ_FAILED 
SERIAL_NUMBER_REQUEST_FAILED 
SERIAL_NUMBER_READ_FAILED 
MEASUREMENT_INIT_FAILED 
UNKNOWN 

Definition at line 39 of file sps30.h.

Member Function Documentation

◆ dump_config()

void esphome::sps30::SPS30Component::dump_config ( )
overridevirtual

Reimplemented from esphome::Component.

Definition at line 70 of file sps30.cpp.

◆ get_setup_priority()

float esphome::sps30::SPS30Component::get_setup_priority ( ) const
inlineoverridevirtual

Reimplemented from esphome::Component.

Definition at line 29 of file sps30.h.

◆ set_auto_cleaning_interval()

void esphome::sps30::SPS30Component::set_auto_cleaning_interval ( uint32_t  auto_cleaning_interval)
inline

Definition at line 25 of file sps30.h.

◆ set_pm_10_0_sensor()

void esphome::sps30::SPS30Component::set_pm_10_0_sensor ( sensor::Sensor pm_10_0)
inline

Definition at line 17 of file sps30.h.

◆ set_pm_1_0_sensor()

void esphome::sps30::SPS30Component::set_pm_1_0_sensor ( sensor::Sensor pm_1_0)
inline

Definition at line 14 of file sps30.h.

◆ set_pm_2_5_sensor()

void esphome::sps30::SPS30Component::set_pm_2_5_sensor ( sensor::Sensor pm_2_5)
inline

Definition at line 15 of file sps30.h.

◆ set_pm_4_0_sensor()

void esphome::sps30::SPS30Component::set_pm_4_0_sensor ( sensor::Sensor pm_4_0)
inline

Definition at line 16 of file sps30.h.

◆ set_pm_size_sensor()

void esphome::sps30::SPS30Component::set_pm_size_sensor ( sensor::Sensor pm_size)
inline

Definition at line 24 of file sps30.h.

◆ set_pmc_0_5_sensor()

void esphome::sps30::SPS30Component::set_pmc_0_5_sensor ( sensor::Sensor pmc_0_5)
inline

Definition at line 18 of file sps30.h.

◆ set_pmc_10_0_sensor()

void esphome::sps30::SPS30Component::set_pmc_10_0_sensor ( sensor::Sensor pmc_10_0)
inline

Definition at line 22 of file sps30.h.

◆ set_pmc_1_0_sensor()

void esphome::sps30::SPS30Component::set_pmc_1_0_sensor ( sensor::Sensor pmc_1_0)
inline

Definition at line 19 of file sps30.h.

◆ set_pmc_2_5_sensor()

void esphome::sps30::SPS30Component::set_pmc_2_5_sensor ( sensor::Sensor pmc_2_5)
inline

Definition at line 20 of file sps30.h.

◆ set_pmc_4_0_sensor()

void esphome::sps30::SPS30Component::set_pmc_4_0_sensor ( sensor::Sensor pmc_4_0)
inline

Definition at line 21 of file sps30.h.

◆ setup()

void esphome::sps30::SPS30Component::setup ( )
overridevirtual

Deferred Sensor initialization

Firmware version identification

Serial number identification

Reimplemented from esphome::Component.

Definition at line 24 of file sps30.cpp.

◆ start_continuous_measurement_()

bool esphome::sps30::SPS30Component::start_continuous_measurement_ ( )
protected

Definition at line 213 of file sps30.cpp.

◆ start_fan_cleaning()

bool esphome::sps30::SPS30Component::start_fan_cleaning ( )

Definition at line 226 of file sps30.cpp.

◆ update()

void esphome::sps30::SPS30Component::update ( )
overridevirtual

Check if warning flag active (sensor reconnected?)

Sensor restarted and reading attempt made next cycle

Check if measurement is ready before reading the value

The following logic is required to address the cases when a sensor is quickly replaced before it's marked as failed so that new sensor is eventually forced to be reinitialized for continuous measurement.

Reading and converting Mass concentration

Reading and converting Number concentration

Reading and converting Typical size

Implements esphome::PollingComponent.

Definition at line 113 of file sps30.cpp.

Field Documentation

◆ fan_interval_

optional<uint32_t> esphome::sps30::SPS30Component::fan_interval_
protected

Definition at line 59 of file sps30.h.

◆ pm_10_0_sensor_

sensor::Sensor* esphome::sps30::SPS30Component::pm_10_0_sensor_ {nullptr}
protected

Definition at line 52 of file sps30.h.

◆ pm_1_0_sensor_

sensor::Sensor* esphome::sps30::SPS30Component::pm_1_0_sensor_ {nullptr}
protected

Definition at line 49 of file sps30.h.

◆ pm_2_5_sensor_

sensor::Sensor* esphome::sps30::SPS30Component::pm_2_5_sensor_ {nullptr}
protected

Definition at line 50 of file sps30.h.

◆ pm_4_0_sensor_

sensor::Sensor* esphome::sps30::SPS30Component::pm_4_0_sensor_ {nullptr}
protected

Definition at line 51 of file sps30.h.

◆ pm_size_sensor_

sensor::Sensor* esphome::sps30::SPS30Component::pm_size_sensor_ {nullptr}
protected

Definition at line 58 of file sps30.h.

◆ pmc_0_5_sensor_

sensor::Sensor* esphome::sps30::SPS30Component::pmc_0_5_sensor_ {nullptr}
protected

Definition at line 53 of file sps30.h.

◆ pmc_10_0_sensor_

sensor::Sensor* esphome::sps30::SPS30Component::pmc_10_0_sensor_ {nullptr}
protected

Definition at line 57 of file sps30.h.

◆ pmc_1_0_sensor_

sensor::Sensor* esphome::sps30::SPS30Component::pmc_1_0_sensor_ {nullptr}
protected

Definition at line 54 of file sps30.h.

◆ pmc_2_5_sensor_

sensor::Sensor* esphome::sps30::SPS30Component::pmc_2_5_sensor_ {nullptr}
protected

Definition at line 55 of file sps30.h.

◆ pmc_4_0_sensor_

sensor::Sensor* esphome::sps30::SPS30Component::pmc_4_0_sensor_ {nullptr}
protected

Definition at line 56 of file sps30.h.

◆ raw_firmware_version_

uint16_t esphome::sps30::SPS30Component::raw_firmware_version_
protected

Terminating NULL character.

Definition at line 35 of file sps30.h.

◆ serial_number_

char esphome::sps30::SPS30Component::serial_number_[17] = {0}
protected

Definition at line 34 of file sps30.h.

◆ skipped_data_read_cycles_

uint8_t esphome::sps30::SPS30Component::skipped_data_read_cycles_ = 0
protected

Definition at line 37 of file sps30.h.

◆ UNKNOWN

enum esphome::sps30::SPS30Component::ErrorCode esphome::sps30::SPS30Component::UNKNOWN
protected

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