ESPHome 2025.7.2
Loading...
Searching...
No Matches
pmsx003.h
Go to the documentation of this file.
1#pragma once
2
7
8namespace esphome {
9namespace pmsx003 {
10
11enum PMSX0003Command : uint8_t {
13 0xE1, // Data Options: `PMS_CMD_MEASUREMENT_MODE_PASSIVE`, `PMS_CMD_MEASUREMENT_MODE_ACTIVE`
15 PMS_CMD_SLEEP_MODE = 0xE4, // Data Options: `PMS_CMD_SLEEP_MODE_SLEEP`, `PMS_CMD_SLEEP_MODE_WAKEUP`
16};
17
24
30
32 public:
33 PMSX003Component() = default;
34 void dump_config() override;
35 void loop() override;
36
37 void set_update_interval(uint32_t update_interval) { this->update_interval_ = update_interval; }
38
39 void set_type(PMSX003Type type) { this->type_ = type; }
40
41 void set_pm_1_0_std_sensor(sensor::Sensor *pm_1_0_std_sensor) { this->pm_1_0_std_sensor_ = pm_1_0_std_sensor; }
42 void set_pm_2_5_std_sensor(sensor::Sensor *pm_2_5_std_sensor) { this->pm_2_5_std_sensor_ = pm_2_5_std_sensor; }
43 void set_pm_10_0_std_sensor(sensor::Sensor *pm_10_0_std_sensor) { this->pm_10_0_std_sensor_ = pm_10_0_std_sensor; }
44
45 void set_pm_1_0_sensor(sensor::Sensor *pm_1_0_sensor) { this->pm_1_0_sensor_ = pm_1_0_sensor; }
46 void set_pm_2_5_sensor(sensor::Sensor *pm_2_5_sensor) { this->pm_2_5_sensor_ = pm_2_5_sensor; }
47 void set_pm_10_0_sensor(sensor::Sensor *pm_10_0_sensor) { this->pm_10_0_sensor_ = pm_10_0_sensor; }
48
49 void set_pm_particles_03um_sensor(sensor::Sensor *pm_particles_03um_sensor) {
50 this->pm_particles_03um_sensor_ = pm_particles_03um_sensor;
51 }
52 void set_pm_particles_05um_sensor(sensor::Sensor *pm_particles_05um_sensor) {
53 this->pm_particles_05um_sensor_ = pm_particles_05um_sensor;
54 }
55 void set_pm_particles_10um_sensor(sensor::Sensor *pm_particles_10um_sensor) {
56 this->pm_particles_10um_sensor_ = pm_particles_10um_sensor;
57 }
58 void set_pm_particles_25um_sensor(sensor::Sensor *pm_particles_25um_sensor) {
59 this->pm_particles_25um_sensor_ = pm_particles_25um_sensor;
60 }
61 void set_pm_particles_50um_sensor(sensor::Sensor *pm_particles_50um_sensor) {
62 this->pm_particles_50um_sensor_ = pm_particles_50um_sensor;
63 }
64 void set_pm_particles_100um_sensor(sensor::Sensor *pm_particles_100um_sensor) {
65 this->pm_particles_100um_sensor_ = pm_particles_100um_sensor;
66 }
67
68 void set_formaldehyde_sensor(sensor::Sensor *formaldehyde_sensor) {
69 this->formaldehyde_sensor_ = formaldehyde_sensor;
70 }
71
72 void set_temperature_sensor(sensor::Sensor *temperature_sensor) { this->temperature_sensor_ = temperature_sensor; }
73 void set_humidity_sensor(sensor::Sensor *humidity_sensor) { this->humidity_sensor_ = humidity_sensor; }
74
75 protected:
77 void parse_data_();
78 bool check_payload_length_(uint16_t payload_length);
79 void send_command_(PMSX0003Command cmd, uint16_t data);
80 uint16_t get_16_bit_uint_(uint8_t start_index) const {
81 return encode_uint16(this->data_[start_index], this->data_[start_index + 1]);
82 }
83
84 uint8_t data_[64];
85 uint8_t data_index_{0};
86 uint8_t initialised_{0};
87 uint32_t fan_on_time_{0};
88 uint32_t last_update_{0};
89 uint32_t last_transmission_{0};
90 uint32_t update_interval_{0};
93
94 // "Standard Particle"
98
99 // "Under Atmospheric Pressure"
103
104 // Particle counts by size
111
112 // Formaldehyde
114
115 // Temperature and Humidity
118};
119
120} // namespace pmsx003
121} // namespace esphome
sensor::Sensor * pm_10_0_sensor_
Definition pmsx003.h:102
sensor::Sensor * pm_1_0_std_sensor_
Definition pmsx003.h:95
void set_update_interval(uint32_t update_interval)
Definition pmsx003.h:37
sensor::Sensor * pm_particles_100um_sensor_
Definition pmsx003.h:110
void set_pm_particles_03um_sensor(sensor::Sensor *pm_particles_03um_sensor)
Definition pmsx003.h:49
sensor::Sensor * pm_2_5_sensor_
Definition pmsx003.h:101
void set_formaldehyde_sensor(sensor::Sensor *formaldehyde_sensor)
Definition pmsx003.h:68
sensor::Sensor * pm_particles_03um_sensor_
Definition pmsx003.h:105
sensor::Sensor * formaldehyde_sensor_
Definition pmsx003.h:113
void set_type(PMSX003Type type)
Definition pmsx003.h:39
void set_pm_particles_25um_sensor(sensor::Sensor *pm_particles_25um_sensor)
Definition pmsx003.h:58
sensor::Sensor * pm_2_5_std_sensor_
Definition pmsx003.h:96
sensor::Sensor * humidity_sensor_
Definition pmsx003.h:117
void set_pm_1_0_sensor(sensor::Sensor *pm_1_0_sensor)
Definition pmsx003.h:45
void set_pm_10_0_std_sensor(sensor::Sensor *pm_10_0_std_sensor)
Definition pmsx003.h:43
void set_temperature_sensor(sensor::Sensor *temperature_sensor)
Definition pmsx003.h:72
sensor::Sensor * pm_1_0_sensor_
Definition pmsx003.h:100
sensor::Sensor * pm_particles_10um_sensor_
Definition pmsx003.h:107
sensor::Sensor * pm_10_0_std_sensor_
Definition pmsx003.h:97
void set_pm_particles_100um_sensor(sensor::Sensor *pm_particles_100um_sensor)
Definition pmsx003.h:64
void set_pm_2_5_sensor(sensor::Sensor *pm_2_5_sensor)
Definition pmsx003.h:46
sensor::Sensor * pm_particles_25um_sensor_
Definition pmsx003.h:108
sensor::Sensor * pm_particles_05um_sensor_
Definition pmsx003.h:106
sensor::Sensor * temperature_sensor_
Definition pmsx003.h:116
void set_pm_particles_50um_sensor(sensor::Sensor *pm_particles_50um_sensor)
Definition pmsx003.h:61
uint16_t get_16_bit_uint_(uint8_t start_index) const
Definition pmsx003.h:80
sensor::Sensor * pm_particles_50um_sensor_
Definition pmsx003.h:109
void set_pm_10_0_sensor(sensor::Sensor *pm_10_0_sensor)
Definition pmsx003.h:47
void set_pm_2_5_std_sensor(sensor::Sensor *pm_2_5_std_sensor)
Definition pmsx003.h:42
void send_command_(PMSX0003Command cmd, uint16_t data)
Definition pmsx003.cpp:182
bool check_payload_length_(uint16_t payload_length)
Definition pmsx003.cpp:165
void set_pm_1_0_std_sensor(sensor::Sensor *pm_1_0_std_sensor)
Definition pmsx003.h:41
void set_pm_particles_10um_sensor(sensor::Sensor *pm_particles_10um_sensor)
Definition pmsx003.h:55
void set_humidity_sensor(sensor::Sensor *humidity_sensor)
Definition pmsx003.h:73
void set_pm_particles_05um_sensor(sensor::Sensor *pm_particles_05um_sensor)
Definition pmsx003.h:52
Base-class for all sensors.
Definition sensor.h:62
uint8_t type
@ PMS_CMD_MEASUREMENT_MODE
Definition pmsx003.h:12
@ PMS_CMD_MANUAL_MEASUREMENT
Definition pmsx003.h:14
@ PMSX003_STATE_STABILISING
Definition pmsx003.h:27
@ PMSX003_STATE_WAITING
Definition pmsx003.h:28
Providing packet encoding functions for exchanging data with a remote host.
Definition a01nyub.cpp:7
constexpr uint16_t encode_uint16(uint8_t msb, uint8_t lsb)
Encode a 16-bit value given the most and least significant byte.
Definition helpers.h:123