mirror of
https://github.com/esphome/esphome.git
synced 2024-11-10 09:17:46 +01:00
pmsx003: add standard particle, particle counts (#1694)
This commit is contained in:
parent
b58ca46a46
commit
fb24e55c8d
5 changed files with 290 additions and 23 deletions
|
@ -6,9 +6,39 @@ namespace pmsx003 {
|
||||||
|
|
||||||
static const char *const TAG = "pmsx003";
|
static const char *const TAG = "pmsx003";
|
||||||
|
|
||||||
|
void PMSX003Component::set_pm_1_0_std_sensor(sensor::Sensor *pm_1_0_std_sensor) {
|
||||||
|
pm_1_0_std_sensor_ = pm_1_0_std_sensor;
|
||||||
|
}
|
||||||
|
void PMSX003Component::set_pm_2_5_std_sensor(sensor::Sensor *pm_2_5_std_sensor) {
|
||||||
|
pm_2_5_std_sensor_ = pm_2_5_std_sensor;
|
||||||
|
}
|
||||||
|
void PMSX003Component::set_pm_10_0_std_sensor(sensor::Sensor *pm_10_0_std_sensor) {
|
||||||
|
pm_10_0_std_sensor_ = pm_10_0_std_sensor;
|
||||||
|
}
|
||||||
|
|
||||||
void PMSX003Component::set_pm_1_0_sensor(sensor::Sensor *pm_1_0_sensor) { pm_1_0_sensor_ = pm_1_0_sensor; }
|
void PMSX003Component::set_pm_1_0_sensor(sensor::Sensor *pm_1_0_sensor) { pm_1_0_sensor_ = pm_1_0_sensor; }
|
||||||
void PMSX003Component::set_pm_2_5_sensor(sensor::Sensor *pm_2_5_sensor) { pm_2_5_sensor_ = pm_2_5_sensor; }
|
void PMSX003Component::set_pm_2_5_sensor(sensor::Sensor *pm_2_5_sensor) { pm_2_5_sensor_ = pm_2_5_sensor; }
|
||||||
void PMSX003Component::set_pm_10_0_sensor(sensor::Sensor *pm_10_0_sensor) { pm_10_0_sensor_ = pm_10_0_sensor; }
|
void PMSX003Component::set_pm_10_0_sensor(sensor::Sensor *pm_10_0_sensor) { pm_10_0_sensor_ = pm_10_0_sensor; }
|
||||||
|
|
||||||
|
void PMSX003Component::set_pm_particles_03um_sensor(sensor::Sensor *pm_particles_03um_sensor) {
|
||||||
|
pm_particles_03um_sensor_ = pm_particles_03um_sensor;
|
||||||
|
}
|
||||||
|
void PMSX003Component::set_pm_particles_05um_sensor(sensor::Sensor *pm_particles_05um_sensor) {
|
||||||
|
pm_particles_05um_sensor_ = pm_particles_05um_sensor;
|
||||||
|
}
|
||||||
|
void PMSX003Component::set_pm_particles_10um_sensor(sensor::Sensor *pm_particles_10um_sensor) {
|
||||||
|
pm_particles_10um_sensor_ = pm_particles_10um_sensor;
|
||||||
|
}
|
||||||
|
void PMSX003Component::set_pm_particles_25um_sensor(sensor::Sensor *pm_particles_25um_sensor) {
|
||||||
|
pm_particles_25um_sensor_ = pm_particles_25um_sensor;
|
||||||
|
}
|
||||||
|
void PMSX003Component::set_pm_particles_50um_sensor(sensor::Sensor *pm_particles_50um_sensor) {
|
||||||
|
pm_particles_50um_sensor_ = pm_particles_50um_sensor;
|
||||||
|
}
|
||||||
|
void PMSX003Component::set_pm_particles_100um_sensor(sensor::Sensor *pm_particles_100um_sensor) {
|
||||||
|
pm_particles_100um_sensor_ = pm_particles_100um_sensor;
|
||||||
|
}
|
||||||
|
|
||||||
void PMSX003Component::set_temperature_sensor(sensor::Sensor *temperature_sensor) {
|
void PMSX003Component::set_temperature_sensor(sensor::Sensor *temperature_sensor) {
|
||||||
temperature_sensor_ = temperature_sensor;
|
temperature_sensor_ = temperature_sensor;
|
||||||
}
|
}
|
||||||
|
@ -102,19 +132,68 @@ optional<bool> PMSX003Component::check_byte_() {
|
||||||
|
|
||||||
void PMSX003Component::parse_data_() {
|
void PMSX003Component::parse_data_() {
|
||||||
switch (this->type_) {
|
switch (this->type_) {
|
||||||
|
case PMSX003_TYPE_5003ST: {
|
||||||
|
uint16_t formaldehyde = this->get_16_bit_uint_(28);
|
||||||
|
float temperature = this->get_16_bit_uint_(30) / 10.0f;
|
||||||
|
float humidity = this->get_16_bit_uint_(32) / 10.0f;
|
||||||
|
|
||||||
|
ESP_LOGD(TAG, "Got Temperature: %.1f°C, Humidity: %.1f%% Formaldehyde: %u µg/m^3", temperature, humidity,
|
||||||
|
formaldehyde);
|
||||||
|
|
||||||
|
if (this->temperature_sensor_ != nullptr)
|
||||||
|
this->temperature_sensor_->publish_state(temperature);
|
||||||
|
if (this->humidity_sensor_ != nullptr)
|
||||||
|
this->humidity_sensor_->publish_state(humidity);
|
||||||
|
if (this->formaldehyde_sensor_ != nullptr)
|
||||||
|
this->formaldehyde_sensor_->publish_state(formaldehyde);
|
||||||
|
// The rest of the PMS5003ST matches the PMS5003, continue on
|
||||||
|
}
|
||||||
case PMSX003_TYPE_X003: {
|
case PMSX003_TYPE_X003: {
|
||||||
|
uint16_t pm_1_0_std_concentration = this->get_16_bit_uint_(4);
|
||||||
|
uint16_t pm_2_5_std_concentration = this->get_16_bit_uint_(6);
|
||||||
|
uint16_t pm_10_0_std_concentration = this->get_16_bit_uint_(8);
|
||||||
|
|
||||||
uint16_t pm_1_0_concentration = this->get_16_bit_uint_(10);
|
uint16_t pm_1_0_concentration = this->get_16_bit_uint_(10);
|
||||||
uint16_t pm_2_5_concentration = this->get_16_bit_uint_(12);
|
uint16_t pm_2_5_concentration = this->get_16_bit_uint_(12);
|
||||||
uint16_t pm_10_0_concentration = this->get_16_bit_uint_(14);
|
uint16_t pm_10_0_concentration = this->get_16_bit_uint_(14);
|
||||||
|
|
||||||
|
uint16_t pm_particles_03um = this->get_16_bit_uint_(16);
|
||||||
|
uint16_t pm_particles_05um = this->get_16_bit_uint_(18);
|
||||||
|
uint16_t pm_particles_10um = this->get_16_bit_uint_(20);
|
||||||
|
uint16_t pm_particles_25um = this->get_16_bit_uint_(22);
|
||||||
|
uint16_t pm_particles_50um = this->get_16_bit_uint_(24);
|
||||||
|
uint16_t pm_particles_100um = this->get_16_bit_uint_(26);
|
||||||
|
|
||||||
ESP_LOGD(TAG,
|
ESP_LOGD(TAG,
|
||||||
"Got PM1.0 Concentration: %u µg/m^3, PM2.5 Concentration %u µg/m^3, PM10.0 Concentration: %u µg/m^3",
|
"Got PM1.0 Concentration: %u µg/m^3, PM2.5 Concentration %u µg/m^3, PM10.0 Concentration: %u µg/m^3",
|
||||||
pm_1_0_concentration, pm_2_5_concentration, pm_10_0_concentration);
|
pm_1_0_concentration, pm_2_5_concentration, pm_10_0_concentration);
|
||||||
|
|
||||||
|
if (this->pm_1_0_std_sensor_ != nullptr)
|
||||||
|
this->pm_1_0_std_sensor_->publish_state(pm_1_0_std_concentration);
|
||||||
|
if (this->pm_2_5_std_sensor_ != nullptr)
|
||||||
|
this->pm_2_5_std_sensor_->publish_state(pm_2_5_std_concentration);
|
||||||
|
if (this->pm_10_0_std_sensor_ != nullptr)
|
||||||
|
this->pm_10_0_std_sensor_->publish_state(pm_10_0_std_concentration);
|
||||||
|
|
||||||
if (this->pm_1_0_sensor_ != nullptr)
|
if (this->pm_1_0_sensor_ != nullptr)
|
||||||
this->pm_1_0_sensor_->publish_state(pm_1_0_concentration);
|
this->pm_1_0_sensor_->publish_state(pm_1_0_concentration);
|
||||||
if (this->pm_2_5_sensor_ != nullptr)
|
if (this->pm_2_5_sensor_ != nullptr)
|
||||||
this->pm_2_5_sensor_->publish_state(pm_2_5_concentration);
|
this->pm_2_5_sensor_->publish_state(pm_2_5_concentration);
|
||||||
if (this->pm_10_0_sensor_ != nullptr)
|
if (this->pm_10_0_sensor_ != nullptr)
|
||||||
this->pm_10_0_sensor_->publish_state(pm_10_0_concentration);
|
this->pm_10_0_sensor_->publish_state(pm_10_0_concentration);
|
||||||
|
|
||||||
|
if (this->pm_particles_03um_sensor_ != nullptr)
|
||||||
|
this->pm_particles_03um_sensor_->publish_state(pm_particles_03um);
|
||||||
|
if (this->pm_particles_05um_sensor_ != nullptr)
|
||||||
|
this->pm_particles_05um_sensor_->publish_state(pm_particles_05um);
|
||||||
|
if (this->pm_particles_10um_sensor_ != nullptr)
|
||||||
|
this->pm_particles_10um_sensor_->publish_state(pm_particles_10um);
|
||||||
|
if (this->pm_particles_25um_sensor_ != nullptr)
|
||||||
|
this->pm_particles_25um_sensor_->publish_state(pm_particles_25um);
|
||||||
|
if (this->pm_particles_50um_sensor_ != nullptr)
|
||||||
|
this->pm_particles_50um_sensor_->publish_state(pm_particles_50um);
|
||||||
|
if (this->pm_particles_100um_sensor_ != nullptr)
|
||||||
|
this->pm_particles_100um_sensor_->publish_state(pm_particles_100um);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case PMSX003_TYPE_5003T: {
|
case PMSX003_TYPE_5003T: {
|
||||||
|
@ -131,29 +210,6 @@ void PMSX003Component::parse_data_() {
|
||||||
this->humidity_sensor_->publish_state(humidity);
|
this->humidity_sensor_->publish_state(humidity);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case PMSX003_TYPE_5003ST: {
|
|
||||||
uint16_t pm_1_0_concentration = this->get_16_bit_uint_(10);
|
|
||||||
uint16_t pm_2_5_concentration = this->get_16_bit_uint_(12);
|
|
||||||
uint16_t pm_10_0_concentration = this->get_16_bit_uint_(14);
|
|
||||||
uint16_t formaldehyde = this->get_16_bit_uint_(28);
|
|
||||||
float temperature = this->get_16_bit_uint_(30) / 10.0f;
|
|
||||||
float humidity = this->get_16_bit_uint_(32) / 10.0f;
|
|
||||||
ESP_LOGD(TAG, "Got PM2.5 Concentration: %u µg/m^3, Temperature: %.1f°C, Humidity: %.1f%% Formaldehyde: %u µg/m^3",
|
|
||||||
pm_2_5_concentration, temperature, humidity, formaldehyde);
|
|
||||||
if (this->pm_1_0_sensor_ != nullptr)
|
|
||||||
this->pm_1_0_sensor_->publish_state(pm_1_0_concentration);
|
|
||||||
if (this->pm_2_5_sensor_ != nullptr)
|
|
||||||
this->pm_2_5_sensor_->publish_state(pm_2_5_concentration);
|
|
||||||
if (this->pm_10_0_sensor_ != nullptr)
|
|
||||||
this->pm_10_0_sensor_->publish_state(pm_10_0_concentration);
|
|
||||||
if (this->temperature_sensor_ != nullptr)
|
|
||||||
this->temperature_sensor_->publish_state(temperature);
|
|
||||||
if (this->humidity_sensor_ != nullptr)
|
|
||||||
this->humidity_sensor_->publish_state(humidity);
|
|
||||||
if (this->formaldehyde_sensor_ != nullptr)
|
|
||||||
this->formaldehyde_sensor_->publish_state(formaldehyde);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
this->status_clear_warning();
|
this->status_clear_warning();
|
||||||
|
@ -163,9 +219,21 @@ uint16_t PMSX003Component::get_16_bit_uint_(uint8_t start_index) {
|
||||||
}
|
}
|
||||||
void PMSX003Component::dump_config() {
|
void PMSX003Component::dump_config() {
|
||||||
ESP_LOGCONFIG(TAG, "PMSX003:");
|
ESP_LOGCONFIG(TAG, "PMSX003:");
|
||||||
|
LOG_SENSOR(" ", "PM1.0STD", this->pm_1_0_std_sensor_);
|
||||||
|
LOG_SENSOR(" ", "PM2.5STD", this->pm_2_5_std_sensor_);
|
||||||
|
LOG_SENSOR(" ", "PM10.0STD", this->pm_10_0_std_sensor_);
|
||||||
|
|
||||||
LOG_SENSOR(" ", "PM1.0", this->pm_1_0_sensor_);
|
LOG_SENSOR(" ", "PM1.0", this->pm_1_0_sensor_);
|
||||||
LOG_SENSOR(" ", "PM2.5", this->pm_2_5_sensor_);
|
LOG_SENSOR(" ", "PM2.5", this->pm_2_5_sensor_);
|
||||||
LOG_SENSOR(" ", "PM10.0", this->pm_10_0_sensor_);
|
LOG_SENSOR(" ", "PM10.0", this->pm_10_0_sensor_);
|
||||||
|
|
||||||
|
LOG_SENSOR(" ", "PM0.3um", this->pm_particles_03um_sensor_);
|
||||||
|
LOG_SENSOR(" ", "PM0.5um", this->pm_particles_05um_sensor_);
|
||||||
|
LOG_SENSOR(" ", "PM1.0um", this->pm_particles_10um_sensor_);
|
||||||
|
LOG_SENSOR(" ", "PM2.5um", this->pm_particles_25um_sensor_);
|
||||||
|
LOG_SENSOR(" ", "PM5.0um", this->pm_particles_50um_sensor_);
|
||||||
|
LOG_SENSOR(" ", "PM10.0um", this->pm_particles_100um_sensor_);
|
||||||
|
|
||||||
LOG_SENSOR(" ", "Temperature", this->temperature_sensor_);
|
LOG_SENSOR(" ", "Temperature", this->temperature_sensor_);
|
||||||
LOG_SENSOR(" ", "Humidity", this->humidity_sensor_);
|
LOG_SENSOR(" ", "Humidity", this->humidity_sensor_);
|
||||||
LOG_SENSOR(" ", "Formaldehyde", this->formaldehyde_sensor_);
|
LOG_SENSOR(" ", "Formaldehyde", this->formaldehyde_sensor_);
|
||||||
|
|
|
@ -21,9 +21,22 @@ class PMSX003Component : public uart::UARTDevice, public Component {
|
||||||
void dump_config() override;
|
void dump_config() override;
|
||||||
|
|
||||||
void set_type(PMSX003Type type) { type_ = type; }
|
void set_type(PMSX003Type type) { type_ = type; }
|
||||||
|
|
||||||
|
void set_pm_1_0_std_sensor(sensor::Sensor *pm_1_0_std_sensor);
|
||||||
|
void set_pm_2_5_std_sensor(sensor::Sensor *pm_2_5_std_sensor);
|
||||||
|
void set_pm_10_0_std_sensor(sensor::Sensor *pm_10_0_std_sensor);
|
||||||
|
|
||||||
void set_pm_1_0_sensor(sensor::Sensor *pm_1_0_sensor);
|
void set_pm_1_0_sensor(sensor::Sensor *pm_1_0_sensor);
|
||||||
void set_pm_2_5_sensor(sensor::Sensor *pm_2_5_sensor);
|
void set_pm_2_5_sensor(sensor::Sensor *pm_2_5_sensor);
|
||||||
void set_pm_10_0_sensor(sensor::Sensor *pm_10_0_sensor);
|
void set_pm_10_0_sensor(sensor::Sensor *pm_10_0_sensor);
|
||||||
|
|
||||||
|
void set_pm_particles_03um_sensor(sensor::Sensor *pm_particles_03um_sensor);
|
||||||
|
void set_pm_particles_05um_sensor(sensor::Sensor *pm_particles_05um_sensor);
|
||||||
|
void set_pm_particles_10um_sensor(sensor::Sensor *pm_particles_10um_sensor);
|
||||||
|
void set_pm_particles_25um_sensor(sensor::Sensor *pm_particles_25um_sensor);
|
||||||
|
void set_pm_particles_50um_sensor(sensor::Sensor *pm_particles_50um_sensor);
|
||||||
|
void set_pm_particles_100um_sensor(sensor::Sensor *pm_particles_100um_sensor);
|
||||||
|
|
||||||
void set_temperature_sensor(sensor::Sensor *temperature_sensor);
|
void set_temperature_sensor(sensor::Sensor *temperature_sensor);
|
||||||
void set_humidity_sensor(sensor::Sensor *humidity_sensor);
|
void set_humidity_sensor(sensor::Sensor *humidity_sensor);
|
||||||
void set_formaldehyde_sensor(sensor::Sensor *formaldehyde_sensor);
|
void set_formaldehyde_sensor(sensor::Sensor *formaldehyde_sensor);
|
||||||
|
@ -37,9 +50,25 @@ class PMSX003Component : public uart::UARTDevice, public Component {
|
||||||
uint8_t data_index_{0};
|
uint8_t data_index_{0};
|
||||||
uint32_t last_transmission_{0};
|
uint32_t last_transmission_{0};
|
||||||
PMSX003Type type_;
|
PMSX003Type type_;
|
||||||
|
|
||||||
|
// "Standard Particle"
|
||||||
|
sensor::Sensor *pm_1_0_std_sensor_{nullptr};
|
||||||
|
sensor::Sensor *pm_2_5_std_sensor_{nullptr};
|
||||||
|
sensor::Sensor *pm_10_0_std_sensor_{nullptr};
|
||||||
|
|
||||||
|
// "Under Atmospheric Pressure"
|
||||||
sensor::Sensor *pm_1_0_sensor_{nullptr};
|
sensor::Sensor *pm_1_0_sensor_{nullptr};
|
||||||
sensor::Sensor *pm_2_5_sensor_{nullptr};
|
sensor::Sensor *pm_2_5_sensor_{nullptr};
|
||||||
sensor::Sensor *pm_10_0_sensor_{nullptr};
|
sensor::Sensor *pm_10_0_sensor_{nullptr};
|
||||||
|
|
||||||
|
// Particle counts by size
|
||||||
|
sensor::Sensor *pm_particles_03um_sensor_{nullptr};
|
||||||
|
sensor::Sensor *pm_particles_05um_sensor_{nullptr};
|
||||||
|
sensor::Sensor *pm_particles_10um_sensor_{nullptr};
|
||||||
|
sensor::Sensor *pm_particles_25um_sensor_{nullptr};
|
||||||
|
sensor::Sensor *pm_particles_50um_sensor_{nullptr};
|
||||||
|
sensor::Sensor *pm_particles_100um_sensor_{nullptr};
|
||||||
|
|
||||||
sensor::Sensor *temperature_sensor_{nullptr};
|
sensor::Sensor *temperature_sensor_{nullptr};
|
||||||
sensor::Sensor *humidity_sensor_{nullptr};
|
sensor::Sensor *humidity_sensor_{nullptr};
|
||||||
sensor::Sensor *formaldehyde_sensor_{nullptr};
|
sensor::Sensor *formaldehyde_sensor_{nullptr};
|
||||||
|
|
|
@ -8,6 +8,15 @@ from esphome.const import (
|
||||||
CONF_PM_10_0,
|
CONF_PM_10_0,
|
||||||
CONF_PM_1_0,
|
CONF_PM_1_0,
|
||||||
CONF_PM_2_5,
|
CONF_PM_2_5,
|
||||||
|
CONF_PM_10_0_STD,
|
||||||
|
CONF_PM_1_0_STD,
|
||||||
|
CONF_PM_2_5_STD,
|
||||||
|
CONF_PM_0_3UM,
|
||||||
|
CONF_PM_0_5UM,
|
||||||
|
CONF_PM_1_0UM,
|
||||||
|
CONF_PM_2_5UM,
|
||||||
|
CONF_PM_5_0UM,
|
||||||
|
CONF_PM_10_0UM,
|
||||||
CONF_TEMPERATURE,
|
CONF_TEMPERATURE,
|
||||||
CONF_TYPE,
|
CONF_TYPE,
|
||||||
DEVICE_CLASS_HUMIDITY,
|
DEVICE_CLASS_HUMIDITY,
|
||||||
|
@ -16,6 +25,7 @@ from esphome.const import (
|
||||||
STATE_CLASS_MEASUREMENT,
|
STATE_CLASS_MEASUREMENT,
|
||||||
UNIT_MICROGRAMS_PER_CUBIC_METER,
|
UNIT_MICROGRAMS_PER_CUBIC_METER,
|
||||||
UNIT_CELSIUS,
|
UNIT_CELSIUS,
|
||||||
|
UNIT_COUNT_DECILITRE,
|
||||||
UNIT_PERCENT,
|
UNIT_PERCENT,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -60,6 +70,24 @@ CONFIG_SCHEMA = (
|
||||||
{
|
{
|
||||||
cv.GenerateID(): cv.declare_id(PMSX003Component),
|
cv.GenerateID(): cv.declare_id(PMSX003Component),
|
||||||
cv.Required(CONF_TYPE): cv.enum(PMSX003_TYPES, upper=True),
|
cv.Required(CONF_TYPE): cv.enum(PMSX003_TYPES, upper=True),
|
||||||
|
cv.Optional(CONF_PM_1_0_STD): sensor.sensor_schema(
|
||||||
|
UNIT_MICROGRAMS_PER_CUBIC_METER,
|
||||||
|
ICON_CHEMICAL_WEAPON,
|
||||||
|
0,
|
||||||
|
DEVICE_CLASS_EMPTY,
|
||||||
|
),
|
||||||
|
cv.Optional(CONF_PM_2_5_STD): sensor.sensor_schema(
|
||||||
|
UNIT_MICROGRAMS_PER_CUBIC_METER,
|
||||||
|
ICON_CHEMICAL_WEAPON,
|
||||||
|
0,
|
||||||
|
DEVICE_CLASS_EMPTY,
|
||||||
|
),
|
||||||
|
cv.Optional(CONF_PM_10_0_STD): sensor.sensor_schema(
|
||||||
|
UNIT_MICROGRAMS_PER_CUBIC_METER,
|
||||||
|
ICON_CHEMICAL_WEAPON,
|
||||||
|
0,
|
||||||
|
DEVICE_CLASS_EMPTY,
|
||||||
|
),
|
||||||
cv.Optional(CONF_PM_1_0): sensor.sensor_schema(
|
cv.Optional(CONF_PM_1_0): sensor.sensor_schema(
|
||||||
unit_of_measurement=UNIT_MICROGRAMS_PER_CUBIC_METER,
|
unit_of_measurement=UNIT_MICROGRAMS_PER_CUBIC_METER,
|
||||||
icon=ICON_CHEMICAL_WEAPON,
|
icon=ICON_CHEMICAL_WEAPON,
|
||||||
|
@ -78,6 +106,42 @@ CONFIG_SCHEMA = (
|
||||||
accuracy_decimals=0,
|
accuracy_decimals=0,
|
||||||
state_class=STATE_CLASS_MEASUREMENT,
|
state_class=STATE_CLASS_MEASUREMENT,
|
||||||
),
|
),
|
||||||
|
cv.Optional(CONF_PM_0_3UM): sensor.sensor_schema(
|
||||||
|
UNIT_COUNT_DECILITRE,
|
||||||
|
ICON_CHEMICAL_WEAPON,
|
||||||
|
0,
|
||||||
|
DEVICE_CLASS_EMPTY,
|
||||||
|
),
|
||||||
|
cv.Optional(CONF_PM_0_5UM): sensor.sensor_schema(
|
||||||
|
UNIT_COUNT_DECILITRE,
|
||||||
|
ICON_CHEMICAL_WEAPON,
|
||||||
|
0,
|
||||||
|
DEVICE_CLASS_EMPTY,
|
||||||
|
),
|
||||||
|
cv.Optional(CONF_PM_1_0UM): sensor.sensor_schema(
|
||||||
|
UNIT_COUNT_DECILITRE,
|
||||||
|
ICON_CHEMICAL_WEAPON,
|
||||||
|
0,
|
||||||
|
DEVICE_CLASS_EMPTY,
|
||||||
|
),
|
||||||
|
cv.Optional(CONF_PM_2_5UM): sensor.sensor_schema(
|
||||||
|
UNIT_COUNT_DECILITRE,
|
||||||
|
ICON_CHEMICAL_WEAPON,
|
||||||
|
0,
|
||||||
|
DEVICE_CLASS_EMPTY,
|
||||||
|
),
|
||||||
|
cv.Optional(CONF_PM_5_0UM): sensor.sensor_schema(
|
||||||
|
UNIT_COUNT_DECILITRE,
|
||||||
|
ICON_CHEMICAL_WEAPON,
|
||||||
|
0,
|
||||||
|
DEVICE_CLASS_EMPTY,
|
||||||
|
),
|
||||||
|
cv.Optional(CONF_PM_10_0UM): sensor.sensor_schema(
|
||||||
|
UNIT_COUNT_DECILITRE,
|
||||||
|
ICON_CHEMICAL_WEAPON,
|
||||||
|
0,
|
||||||
|
DEVICE_CLASS_EMPTY,
|
||||||
|
),
|
||||||
cv.Optional(CONF_TEMPERATURE): sensor.sensor_schema(
|
cv.Optional(CONF_TEMPERATURE): sensor.sensor_schema(
|
||||||
unit_of_measurement=UNIT_CELSIUS,
|
unit_of_measurement=UNIT_CELSIUS,
|
||||||
accuracy_decimals=1,
|
accuracy_decimals=1,
|
||||||
|
@ -110,6 +174,18 @@ async def to_code(config):
|
||||||
|
|
||||||
cg.add(var.set_type(config[CONF_TYPE]))
|
cg.add(var.set_type(config[CONF_TYPE]))
|
||||||
|
|
||||||
|
if CONF_PM_1_0_STD in config:
|
||||||
|
sens = await sensor.new_sensor(config[CONF_PM_1_0_STD])
|
||||||
|
cg.add(var.set_pm_1_0_std_sensor(sens))
|
||||||
|
|
||||||
|
if CONF_PM_2_5_STD in config:
|
||||||
|
sens = await sensor.new_sensor(config[CONF_PM_2_5_STD])
|
||||||
|
cg.add(var.set_pm_2_5_std_sensor(sens))
|
||||||
|
|
||||||
|
if CONF_PM_10_0_STD in config:
|
||||||
|
sens = await sensor.new_sensor(config[CONF_PM_10_0_STD])
|
||||||
|
cg.add(var.set_pm_10_0_std_sensor(sens))
|
||||||
|
|
||||||
if CONF_PM_1_0 in config:
|
if CONF_PM_1_0 in config:
|
||||||
sens = await sensor.new_sensor(config[CONF_PM_1_0])
|
sens = await sensor.new_sensor(config[CONF_PM_1_0])
|
||||||
cg.add(var.set_pm_1_0_sensor(sens))
|
cg.add(var.set_pm_1_0_sensor(sens))
|
||||||
|
@ -122,6 +198,30 @@ async def to_code(config):
|
||||||
sens = await sensor.new_sensor(config[CONF_PM_10_0])
|
sens = await sensor.new_sensor(config[CONF_PM_10_0])
|
||||||
cg.add(var.set_pm_10_0_sensor(sens))
|
cg.add(var.set_pm_10_0_sensor(sens))
|
||||||
|
|
||||||
|
if CONF_PM_0_3UM in config:
|
||||||
|
sens = await sensor.new_sensor(config[CONF_PM_0_3UM])
|
||||||
|
cg.add(var.set_pm_particles_03um_sensor(sens))
|
||||||
|
|
||||||
|
if CONF_PM_0_5UM in config:
|
||||||
|
sens = await sensor.new_sensor(config[CONF_PM_0_5UM])
|
||||||
|
cg.add(var.set_pm_particles_05um_sensor(sens))
|
||||||
|
|
||||||
|
if CONF_PM_1_0UM in config:
|
||||||
|
sens = await sensor.new_sensor(config[CONF_PM_1_0UM])
|
||||||
|
cg.add(var.set_pm_particles_10um_sensor(sens))
|
||||||
|
|
||||||
|
if CONF_PM_2_5UM in config:
|
||||||
|
sens = await sensor.new_sensor(config[CONF_PM_2_5UM])
|
||||||
|
cg.add(var.set_pm_particles_25um_sensor(sens))
|
||||||
|
|
||||||
|
if CONF_PM_5_0UM in config:
|
||||||
|
sens = await sensor.new_sensor(config[CONF_PM_5_0UM])
|
||||||
|
cg.add(var.set_pm_particles_50um_sensor(sens))
|
||||||
|
|
||||||
|
if CONF_PM_10_0UM in config:
|
||||||
|
sens = await sensor.new_sensor(config[CONF_PM_10_0UM])
|
||||||
|
cg.add(var.set_pm_particles_100um_sensor(sens))
|
||||||
|
|
||||||
if CONF_TEMPERATURE in config:
|
if CONF_TEMPERATURE in config:
|
||||||
sens = await sensor.new_sensor(config[CONF_TEMPERATURE])
|
sens = await sensor.new_sensor(config[CONF_TEMPERATURE])
|
||||||
cg.add(var.set_temperature_sensor(sens))
|
cg.add(var.set_temperature_sensor(sens))
|
||||||
|
|
|
@ -441,10 +441,19 @@ CONF_PINS = "pins"
|
||||||
CONF_PIXEL_MAPPER = "pixel_mapper"
|
CONF_PIXEL_MAPPER = "pixel_mapper"
|
||||||
CONF_PLATFORM = "platform"
|
CONF_PLATFORM = "platform"
|
||||||
CONF_PLATFORMIO_OPTIONS = "platformio_options"
|
CONF_PLATFORMIO_OPTIONS = "platformio_options"
|
||||||
|
CONF_PM_0_3UM = "pm_0_3um"
|
||||||
|
CONF_PM_0_5UM = "pm_0_5um"
|
||||||
CONF_PM_1_0 = "pm_1_0"
|
CONF_PM_1_0 = "pm_1_0"
|
||||||
|
CONF_PM_1_0_STD = "pm_1_0_std"
|
||||||
|
CONF_PM_1_0UM = "pm_1_0um"
|
||||||
CONF_PM_10_0 = "pm_10_0"
|
CONF_PM_10_0 = "pm_10_0"
|
||||||
|
CONF_PM_10_0_STD = "pm_10_0_std"
|
||||||
|
CONF_PM_10_0UM = "pm_10_0um"
|
||||||
CONF_PM_2_5 = "pm_2_5"
|
CONF_PM_2_5 = "pm_2_5"
|
||||||
|
CONF_PM_2_5_STD = "pm_2_5_std"
|
||||||
|
CONF_PM_2_5UM = "pm_2_5um"
|
||||||
CONF_PM_4_0 = "pm_4_0"
|
CONF_PM_4_0 = "pm_4_0"
|
||||||
|
CONF_PM_5_0UM = "pm_5_0um"
|
||||||
CONF_PM_SIZE = "pm_size"
|
CONF_PM_SIZE = "pm_size"
|
||||||
CONF_PMC_0_5 = "pmc_0_5"
|
CONF_PMC_0_5 = "pmc_0_5"
|
||||||
CONF_PMC_1_0 = "pmc_1_0"
|
CONF_PMC_1_0 = "pmc_1_0"
|
||||||
|
@ -709,6 +718,7 @@ ICON_WIFI = "mdi:wifi"
|
||||||
|
|
||||||
UNIT_AMPERE = "A"
|
UNIT_AMPERE = "A"
|
||||||
UNIT_CELSIUS = "°C"
|
UNIT_CELSIUS = "°C"
|
||||||
|
UNIT_COUNT_DECILITRE = "/dL"
|
||||||
UNIT_COUNTS_PER_CUBIC_METER = "#/m³"
|
UNIT_COUNTS_PER_CUBIC_METER = "#/m³"
|
||||||
UNIT_CUBIC_METER = "m³"
|
UNIT_CUBIC_METER = "m³"
|
||||||
UNIT_DECIBEL = "dB"
|
UNIT_DECIBEL = "dB"
|
||||||
|
|
|
@ -450,6 +450,66 @@ sensor:
|
||||||
name: 'PM 2.5 Concentration'
|
name: 'PM 2.5 Concentration'
|
||||||
pm_10_0:
|
pm_10_0:
|
||||||
name: 'PM 10.0 Concentration'
|
name: 'PM 10.0 Concentration'
|
||||||
|
pm_1_0_std:
|
||||||
|
name: 'PM 1.0 Standard Atmospher Concentration'
|
||||||
|
pm_2_5_std:
|
||||||
|
name: 'PM 2.5 Standard Atmospher Concentration'
|
||||||
|
pm_10_0_std:
|
||||||
|
name: 'PM 10.0 Standard Atmospher Concentration'
|
||||||
|
pm_0_3um:
|
||||||
|
name: 'Particulate Count >0.3um'
|
||||||
|
pm_0_5um:
|
||||||
|
name: 'Particulate Count >0.5um'
|
||||||
|
pm_1_0um:
|
||||||
|
name: 'Particulate Count >1.0um'
|
||||||
|
pm_2_5um:
|
||||||
|
name: 'Particulate Count >2.5um'
|
||||||
|
pm_5_0um:
|
||||||
|
name: 'Particulate Count >5.0um'
|
||||||
|
pm_10_0um:
|
||||||
|
name: 'Particulate Count >10.0um'
|
||||||
|
- platform: pmsx003
|
||||||
|
uart_id: uart2
|
||||||
|
type: PMS5003T
|
||||||
|
pm_2_5:
|
||||||
|
name: 'PM 2.5 Concentration'
|
||||||
|
temperature:
|
||||||
|
name: 'PMS Temperature'
|
||||||
|
humidity:
|
||||||
|
name: 'PMS Humidity'
|
||||||
|
- platform: pmsx003
|
||||||
|
uart_id: uart2
|
||||||
|
type: PMS5003ST
|
||||||
|
pm_1_0:
|
||||||
|
name: 'PM 1.0 Concentration'
|
||||||
|
pm_2_5:
|
||||||
|
name: 'PM 2.5 Concentration'
|
||||||
|
pm_10_0:
|
||||||
|
name: 'PM 10.0 Concentration'
|
||||||
|
pm_1_0_std:
|
||||||
|
name: 'PM 1.0 Standard Atmospher Concentration'
|
||||||
|
pm_2_5_std:
|
||||||
|
name: 'PM 2.5 Standard Atmospher Concentration'
|
||||||
|
pm_10_0_std:
|
||||||
|
name: 'PM 10.0 Standard Atmospher Concentration'
|
||||||
|
pm_0_3um:
|
||||||
|
name: 'Particulate Count >0.3um'
|
||||||
|
pm_0_5um:
|
||||||
|
name: 'Particulate Count >0.5um'
|
||||||
|
pm_1_0um:
|
||||||
|
name: 'Particulate Count >1.0um'
|
||||||
|
pm_2_5um:
|
||||||
|
name: 'Particulate Count >2.5um'
|
||||||
|
pm_5_0um:
|
||||||
|
name: 'Particulate Count >5.0um'
|
||||||
|
pm_10_0um:
|
||||||
|
name: 'Particulate Count >10.0um'
|
||||||
|
temperature:
|
||||||
|
name: 'PMS Temperature'
|
||||||
|
humidity:
|
||||||
|
name: 'PMS Humidity'
|
||||||
|
formaldehyde:
|
||||||
|
name: 'PMS Formaldehyde Concentration'
|
||||||
- platform: cse7766
|
- platform: cse7766
|
||||||
uart_id: uart3
|
uart_id: uart3
|
||||||
voltage:
|
voltage:
|
||||||
|
|
Loading…
Reference in a new issue