ESPHome 2025.5.0
Loading...
Searching...
No Matches
sen5x.h
Go to the documentation of this file.
1#pragma once
2
8
9namespace esphome {
10namespace sen5x {
11
20
21// Shortest time interval of 3H for storing baseline values.
22// Prevents wear of the flash because of too many write operations
23const uint32_t SHORTEST_BASELINE_STORE_INTERVAL = 10800;
24// Store anyway if the baseline difference exceeds the max storage diff value
25const uint32_t MAXIMUM_STORAGE_DIFF = 50;
26
28 int32_t state0;
29 int32_t state1;
30} PACKED; // NOLINT
31
33
42
48
50 public:
51 float get_setup_priority() const override { return setup_priority::DATA; }
52 void setup() override;
53 void dump_config() override;
54 void update() override;
55
57
62
63 void set_voc_sensor(sensor::Sensor *voc_sensor) { voc_sensor_ = voc_sensor; }
64 void set_nox_sensor(sensor::Sensor *nox_sensor) { nox_sensor_ = nox_sensor; }
65 void set_humidity_sensor(sensor::Sensor *humidity_sensor) { humidity_sensor_ = humidity_sensor; }
66 void set_temperature_sensor(sensor::Sensor *temperature_sensor) { temperature_sensor_ = temperature_sensor; }
67 void set_store_baseline(bool store_baseline) { store_baseline_ = store_baseline; }
69 void set_auto_cleaning_interval(uint32_t auto_cleaning_interval) { auto_cleaning_interval_ = auto_cleaning_interval; }
70 void set_voc_algorithm_tuning(uint16_t index_offset, uint16_t learning_time_offset_hours,
71 uint16_t learning_time_gain_hours, uint16_t gating_max_duration_minutes,
72 uint16_t std_initial, uint16_t gain_factor) {
73 GasTuning tuning_params;
74 tuning_params.index_offset = index_offset;
75 tuning_params.learning_time_offset_hours = learning_time_offset_hours;
76 tuning_params.learning_time_gain_hours = learning_time_gain_hours;
77 tuning_params.gating_max_duration_minutes = gating_max_duration_minutes;
78 tuning_params.std_initial = std_initial;
79 tuning_params.gain_factor = gain_factor;
80 voc_tuning_params_ = tuning_params;
81 }
82 void set_nox_algorithm_tuning(uint16_t index_offset, uint16_t learning_time_offset_hours,
83 uint16_t learning_time_gain_hours, uint16_t gating_max_duration_minutes,
84 uint16_t gain_factor) {
85 GasTuning tuning_params;
86 tuning_params.index_offset = index_offset;
87 tuning_params.learning_time_offset_hours = learning_time_offset_hours;
88 tuning_params.learning_time_gain_hours = learning_time_gain_hours;
89 tuning_params.gating_max_duration_minutes = gating_max_duration_minutes;
90 tuning_params.std_initial = 50;
91 tuning_params.gain_factor = gain_factor;
92 nox_tuning_params_ = tuning_params;
93 }
94 void set_temperature_compensation(float offset, float normalized_offset_slope, uint16_t time_constant) {
96 temp_comp.offset = offset * 200;
97 temp_comp.normalized_offset_slope = normalized_offset_slope * 10000;
98 temp_comp.time_constant = time_constant;
99 temperature_compensation_ = temp_comp;
100 }
101 bool start_fan_cleaning();
102
103 protected:
104 bool write_tuning_parameters_(uint16_t i2c_command, const GasTuning &tuning);
107 bool initialized_{false};
112 // SEN54 and SEN55 only
116 // SEN55 only
118
119 std::string product_name_;
120 uint8_t serial_number_[4];
131};
132
133} // namespace sen5x
134} // namespace esphome
BedjetMode mode
BedJet operating mode.
This class simplifies creating components that periodically check a state.
Definition component.h:301
float get_setup_priority() const override
Definition sen5x.h:51
optional< RhtAccelerationMode > acceleration_mode_
Definition sen5x.h:126
void set_pm_1_0_sensor(sensor::Sensor *pm_1_0)
Definition sen5x.h:58
void set_humidity_sensor(sensor::Sensor *humidity_sensor)
Definition sen5x.h:65
void set_temperature_compensation(float offset, float normalized_offset_slope, uint16_t time_constant)
Definition sen5x.h:94
void set_pm_10_0_sensor(sensor::Sensor *pm_10_0)
Definition sen5x.h:61
sensor::Sensor * pm_4_0_sensor_
Definition sen5x.h:110
void set_temperature_sensor(sensor::Sensor *temperature_sensor)
Definition sen5x.h:66
void dump_config() override
Definition sen5x.cpp:242
void set_acceleration_mode(RhtAccelerationMode mode)
Definition sen5x.h:68
void set_auto_cleaning_interval(uint32_t auto_cleaning_interval)
Definition sen5x.h:69
ESPPreferenceObject pref_
Definition sen5x.h:125
bool write_tuning_parameters_(uint16_t i2c_command, const GasTuning &tuning)
Definition sen5x.cpp:404
void set_nox_sensor(sensor::Sensor *nox_sensor)
Definition sen5x.h:64
sensor::Sensor * pm_2_5_sensor_
Definition sen5x.h:109
sensor::Sensor * temperature_sensor_
Definition sen5x.h:113
optional< uint32_t > auto_cleaning_interval_
Definition sen5x.h:127
void set_store_baseline(bool store_baseline)
Definition sen5x.h:67
sensor::Sensor * pm_1_0_sensor_
Definition sen5x.h:108
sensor::Sensor * voc_sensor_
Definition sen5x.h:115
optional< TemperatureCompensation > temperature_compensation_
Definition sen5x.h:130
void set_voc_sensor(sensor::Sensor *voc_sensor)
Definition sen5x.h:63
sensor::Sensor * nox_sensor_
Definition sen5x.h:117
optional< GasTuning > voc_tuning_params_
Definition sen5x.h:128
sensor::Sensor * pm_10_0_sensor_
Definition sen5x.h:111
Sen5xBaselines voc_baselines_storage_
Definition sen5x.h:122
sensor::Sensor * humidity_sensor_
Definition sen5x.h:114
void set_pm_4_0_sensor(sensor::Sensor *pm_4_0)
Definition sen5x.h:60
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)
Definition sen5x.h:70
bool write_temperature_compensation_(const TemperatureCompensation &compensation)
Definition sen5x.cpp:419
optional< GasTuning > nox_tuning_params_
Definition sen5x.h:129
void set_pm_2_5_sensor(sensor::Sensor *pm_2_5)
Definition sen5x.h:59
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)
Definition sen5x.h:82
Implementation of a i2c functions for Sensirion sensors Sensirion data requires crc checking.
Base-class for all sensors.
Definition sensor.h:57
const uint32_t SHORTEST_BASELINE_STORE_INTERVAL
Definition sen5x.h:23
struct esphome::sen5x::Sen5xBaselines PACKED
RhtAccelerationMode
Definition sen5x.h:32
@ LOW_ACCELERATION
Definition sen5x.h:32
@ HIGH_ACCELERATION
Definition sen5x.h:32
@ MEDIUM_ACCELERATION
Definition sen5x.h:32
@ PRODUCT_NAME_FAILED
Definition sen5x.h:16
@ MEASUREMENT_INIT_FAILED
Definition sen5x.h:15
@ FIRMWARE_FAILED
Definition sen5x.h:17
@ SERIAL_NUMBER_IDENTIFICATION_FAILED
Definition sen5x.h:14
@ COMMUNICATION_FAILED
Definition sen5x.h:13
const uint32_t MAXIMUM_STORAGE_DIFF
Definition sen5x.h:25
const float DATA
For components that import data from directly connected sensors like DHT.
Definition component.cpp:19
Providing packet encoding functions for exchanging data with a remote host.
Definition a01nyub.cpp:7
uint16_t learning_time_gain_hours
Definition sen5x.h:37
uint16_t gating_max_duration_minutes
Definition sen5x.h:38
uint16_t learning_time_offset_hours
Definition sen5x.h:36