ESPHome 2025.5.2
All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Modules Pages
pmsx003.h
Go to the documentation of this file.
1#pragma once
2
6
7namespace esphome {
8namespace pmsx003 {
9
10enum PMSX0003Command : uint8_t {
12 0xE1, // Data Options: `PMS_CMD_MEASUREMENT_MODE_PASSIVE`, `PMS_CMD_MEASUREMENT_MODE_ACTIVE`
14 PMS_CMD_SLEEP_MODE = 0xE4, // Data Options: `PMS_CMD_SLEEP_MODE_SLEEP`, `PMS_CMD_SLEEP_MODE_WAKEUP`
15};
16
23
29
31 public:
32 PMSX003Component() = default;
33 float get_setup_priority() const override { return setup_priority::DATA; }
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);
81
82 uint8_t data_[64];
83 uint8_t data_index_{0};
84 uint8_t initialised_{0};
85 uint32_t fan_on_time_{0};
86 uint32_t last_update_{0};
87 uint32_t last_transmission_{0};
88 uint32_t update_interval_{0};
91
92 // "Standard Particle"
96
97 // "Under Atmospheric Pressure"
101
102 // Particle counts by size
109
110 // Formaldehyde
112
113 // Temperature and Humidity
116};
117
118} // namespace pmsx003
119} // namespace esphome
sensor::Sensor * pm_10_0_sensor_
Definition pmsx003.h:100
sensor::Sensor * pm_1_0_std_sensor_
Definition pmsx003.h:93
uint16_t get_16_bit_uint_(uint8_t start_index)
Definition pmsx003.cpp:317
void set_update_interval(uint32_t update_interval)
Definition pmsx003.h:37
sensor::Sensor * pm_particles_100um_sensor_
Definition pmsx003.h:108
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:99
void set_formaldehyde_sensor(sensor::Sensor *formaldehyde_sensor)
Definition pmsx003.h:68
sensor::Sensor * pm_particles_03um_sensor_
Definition pmsx003.h:103
sensor::Sensor * formaldehyde_sensor_
Definition pmsx003.h:111
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:94
sensor::Sensor * humidity_sensor_
Definition pmsx003.h:115
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:98
sensor::Sensor * pm_particles_10um_sensor_
Definition pmsx003.h:105
sensor::Sensor * pm_10_0_std_sensor_
Definition pmsx003.h:95
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:106
sensor::Sensor * pm_particles_05um_sensor_
Definition pmsx003.h:104
sensor::Sensor * temperature_sensor_
Definition pmsx003.h:114
void set_pm_particles_50um_sensor(sensor::Sensor *pm_particles_50um_sensor)
Definition pmsx003.h:61
sensor::Sensor * pm_particles_50um_sensor_
Definition pmsx003.h:107
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
float get_setup_priority() const override
Definition pmsx003.h:33
Base-class for all sensors.
Definition sensor.h:57
uint8_t type
@ PMS_CMD_MEASUREMENT_MODE
Definition pmsx003.h:11
@ PMS_CMD_MANUAL_MEASUREMENT
Definition pmsx003.h:13
@ PMSX003_STATE_STABILISING
Definition pmsx003.h:26
@ PMSX003_STATE_WAITING
Definition pmsx003.h:27
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