7#ifdef SEN6X_STATUS_SENSOR_COUNT
14#ifdef SEN6X_STATUS_SENSOR_COUNT
34static constexpr uint16_t NOX_STD_INITIAL = 50;
70#ifdef USE_SEN6X_NUMBER_CONCENTRATION
85 void setup()
override;
86 void dump_config()
override;
87 void update()
override;
89 enum Sen6xType { SEN62, SEN63C, SEN65, SEN66, SEN68, SEN69C, UNKNOWN };
92 void set_voc_algorithm_tuning(uint16_t index_offset, uint16_t learning_time_offset_hours,
93 uint16_t learning_time_gain_hours, uint16_t gating_max_duration_minutes,
94 uint16_t std_initial, uint16_t gain_factor) {
96 index_offset, learning_time_offset_hours, learning_time_gain_hours, gating_max_duration_minutes, std_initial,
99 void set_nox_algorithm_tuning(uint16_t index_offset, uint16_t learning_time_offset_hours,
100 uint16_t learning_time_gain_hours, uint16_t gating_max_duration_minutes,
101 uint16_t gain_factor) {
103 learning_time_offset_hours,
104 learning_time_gain_hours,
105 gating_max_duration_minutes,
110 void set_temperature_compensation(int16_t offset, int16_t normalized_offset_slope, uint16_t time_constant) {
113 void set_temperature_acceleration(uint16_t k, uint16_t p, uint16_t t1, uint16_t t2) {
116#ifdef SEN6X_STATUS_SENSOR_COUNT
121 void set_automatic_self_calibration(
bool enabled) { this->
co2_asc_ = enabled; }
123 void set_ambient_pressure_compensation(uint16_t pressure_hpa) { this->
ambient_pressure_ = pressure_hpa; }
125 void start_measurement();
126 void stop_measurement();
127 void start_fan_cleaning();
128 void activate_sht_heater();
161#ifdef SEN6X_STATUS_SENSOR_COUNT
164#ifdef USE_SEN6X_NUMBER_CONCENTRATION
172#ifdef SEN6X_STATUS_SENSOR_COUNT
virtual void setup()
Where the component's initialization should happen.
This class simplifies creating components that periodically check a state.
Minimal static vector - saves memory by avoiding std::vector overhead.
Base class for all binary_sensor-type classes.
void parse_and_publish_number_concentration_()
bool write_temperature_compensation_(const TemperatureCompensation &compensation)
optional< GasTuning > voc_tuning_params_
bool has_number_concentration_sensor_() const
void run_next_setup_step_()
uint16_t ambient_pressure_
@ SETUP_STEP_AMBIENT_PRESSURE
@ SETUP_STEP_TEMPERATURE_COMPENSATION
@ SETUP_STEP_TEMPERATURE_ACCELERATION
uint16_t last_ambient_pressure_
StaticVector< StatusSensor, SEN6X_STATUS_SENSOR_COUNT > status_sensors_
void parse_and_publish_device_status_()
optional< TemperatureAcceleration > temperature_acceleration_
uint8_t setup_step_index_
void set_command_wait_(uint32_t wait_ms)
uint32_t command_wait_remaining_() const
void on_measurement_started_()
bool write_setup_register_(uint16_t i2c_command, uint16_t value)
sensor::Sensor * ambient_pressure_source_
void read_number_concentration_()
void read_measurements_()
std::string serial_number_
uint16_t altitude_compensation_
bool command_blocked_() const
std::string product_name_
bool write_temperature_acceleration_(const TemperatureAcceleration &acceleration)
uint32_t command_started_at_
uint8_t poll_retries_remaining_
Sen6xType infer_type_from_product_name_(const std::string &product_name)
void read_device_status_()
uint32_t startup_delay_ms_
bool write_config_words_(uint16_t i2c_command, const uint16_t *data, uint8_t len)
bool pressure_range_warned_
uint8_t firmware_version_minor_
void parse_and_publish_measurements_()
bool write_setup_step_(SetupStep step)
uint8_t firmware_version_major_
optional< TemperatureCompensation > temperature_compensation_
optional< GasTuning > nox_tuning_params_
optional< bool > co2_asc_
bool write_tuning_parameters_(uint16_t i2c_command, const GasTuning &tuning)
void write_ambient_pressure_(uint16_t pressure_hpa)
void update_ambient_pressure_compensation_(float pressure_hpa)
Base-class for all sensors.
constexpr uint16_t ALTITUDE_UNSET
@ SEN6X_STATUS_FAN_SPEED_WARNING
@ SEN6X_STATUS_HCHO_ERROR
constexpr uint16_t PRESSURE_UNSET
uint16_t learning_time_gain_hours
uint16_t learning_time_offset_hours
uint16_t gating_max_duration_minutes
binary_sensor::BinarySensor * sensor
int16_t normalized_offset_slope