diff --git a/esphome/components/ccs811/sensor.py b/esphome/components/ccs811/sensor.py index 10565cb328..d9023a415f 100644 --- a/esphome/components/ccs811/sensor.py +++ b/esphome/components/ccs811/sensor.py @@ -32,14 +32,14 @@ CONFIG_SCHEMA = ( cv.Schema( { cv.GenerateID(): cv.declare_id(CCS811Component), - cv.Required(CONF_ECO2): sensor.sensor_schema( + cv.Optional(CONF_ECO2): sensor.sensor_schema( unit_of_measurement=UNIT_PARTS_PER_MILLION, icon=ICON_MOLECULE_CO2, accuracy_decimals=0, device_class=DEVICE_CLASS_CARBON_DIOXIDE, state_class=STATE_CLASS_MEASUREMENT, ), - cv.Required(CONF_TVOC): sensor.sensor_schema( + cv.Optional(CONF_TVOC): sensor.sensor_schema( unit_of_measurement=UNIT_PARTS_PER_BILLION, icon=ICON_RADIATOR, accuracy_decimals=0, @@ -64,10 +64,13 @@ async def to_code(config): await cg.register_component(var, config) await i2c.register_i2c_device(var, config) - sens = await sensor.new_sensor(config[CONF_ECO2]) - cg.add(var.set_co2(sens)) - sens = await sensor.new_sensor(config[CONF_TVOC]) - cg.add(var.set_tvoc(sens)) + if eco2_config := config.get(CONF_ECO2): + sens = await sensor.new_sensor(eco2_config) + cg.add(var.set_co2(sens)) + + if tvoc_config := config.get(CONF_TVOC): + sens = await sensor.new_sensor(tvoc_config) + cg.add(var.set_tvoc(sens)) if version_config := config.get(CONF_VERSION): sens = await text_sensor.new_text_sensor(version_config) diff --git a/esphome/components/dps310/sensor.py b/esphome/components/dps310/sensor.py index b2a98e5bab..605812beaa 100644 --- a/esphome/components/dps310/sensor.py +++ b/esphome/components/dps310/sensor.py @@ -27,14 +27,14 @@ CONFIG_SCHEMA = ( cv.Schema( { cv.GenerateID(): cv.declare_id(DPS310Component), - cv.Required(CONF_TEMPERATURE): sensor.sensor_schema( + cv.Optional(CONF_TEMPERATURE): sensor.sensor_schema( unit_of_measurement=UNIT_CELSIUS, icon=ICON_THERMOMETER, accuracy_decimals=1, device_class=DEVICE_CLASS_TEMPERATURE, state_class=STATE_CLASS_MEASUREMENT, ), - cv.Required(CONF_PRESSURE): sensor.sensor_schema( + cv.Optional(CONF_PRESSURE): sensor.sensor_schema( unit_of_measurement=UNIT_HECTOPASCAL, icon=ICON_GAUGE, accuracy_decimals=1, @@ -53,10 +53,10 @@ async def to_code(config): await cg.register_component(var, config) await i2c.register_i2c_device(var, config) - if CONF_TEMPERATURE in config: - sens = await sensor.new_sensor(config[CONF_TEMPERATURE]) + if temperature := config.get(CONF_TEMPERATURE): + sens = await sensor.new_sensor(temperature) cg.add(var.set_temperature_sensor(sens)) - if CONF_PRESSURE in config: - sens = await sensor.new_sensor(config[CONF_PRESSURE]) + if pressure := config.get(CONF_PRESSURE): + sens = await sensor.new_sensor(pressure) cg.add(var.set_pressure_sensor(sens)) diff --git a/esphome/components/ee895/sensor.py b/esphome/components/ee895/sensor.py index 0f8f44c8a2..8c9c7e7238 100644 --- a/esphome/components/ee895/sensor.py +++ b/esphome/components/ee895/sensor.py @@ -26,19 +26,19 @@ CONFIG_SCHEMA = ( cv.Schema( { cv.GenerateID(): cv.declare_id(EE895Component), - cv.Required(CONF_TEMPERATURE): sensor.sensor_schema( + cv.Optional(CONF_TEMPERATURE): sensor.sensor_schema( unit_of_measurement=UNIT_CELSIUS, accuracy_decimals=1, device_class=DEVICE_CLASS_TEMPERATURE, state_class=STATE_CLASS_MEASUREMENT, ), - cv.Required(CONF_CO2): sensor.sensor_schema( + cv.Optional(CONF_CO2): sensor.sensor_schema( unit_of_measurement=UNIT_PARTS_PER_MILLION, icon=ICON_MOLECULE_CO2, accuracy_decimals=0, state_class=STATE_CLASS_MEASUREMENT, ), - cv.Required(CONF_PRESSURE): sensor.sensor_schema( + cv.Optional(CONF_PRESSURE): sensor.sensor_schema( unit_of_measurement=UNIT_HECTOPASCAL, accuracy_decimals=1, device_class=DEVICE_CLASS_PRESSURE, @@ -56,14 +56,14 @@ async def to_code(config): await cg.register_component(var, config) await i2c.register_i2c_device(var, config) - if CONF_TEMPERATURE in config: - sens = await sensor.new_sensor(config[CONF_TEMPERATURE]) + if temperature := config.get(CONF_TEMPERATURE): + sens = await sensor.new_sensor(temperature) cg.add(var.set_temperature_sensor(sens)) - if CONF_CO2 in config: - sens = await sensor.new_sensor(config[CONF_CO2]) + if co2 := config.get(CONF_CO2): + sens = await sensor.new_sensor(co2) cg.add(var.set_co2_sensor(sens)) - if CONF_PRESSURE in config: - sens = await sensor.new_sensor(config[CONF_PRESSURE]) + if pressure := config.get(CONF_PRESSURE): + sens = await sensor.new_sensor(pressure) cg.add(var.set_pressure_sensor(sens)) diff --git a/esphome/components/ens160_base/__init__.py b/esphome/components/ens160_base/__init__.py index 28e77e322b..3b6ad8a4ee 100644 --- a/esphome/components/ens160_base/__init__.py +++ b/esphome/components/ens160_base/__init__.py @@ -28,21 +28,21 @@ UNIT_INDEX = "index" CONFIG_SCHEMA_BASE = cv.Schema( { - cv.Required(CONF_ECO2): sensor.sensor_schema( + cv.Optional(CONF_ECO2): sensor.sensor_schema( unit_of_measurement=UNIT_PARTS_PER_MILLION, icon=ICON_MOLECULE_CO2, accuracy_decimals=0, device_class=DEVICE_CLASS_CARBON_DIOXIDE, state_class=STATE_CLASS_MEASUREMENT, ), - cv.Required(CONF_TVOC): sensor.sensor_schema( + cv.Optional(CONF_TVOC): sensor.sensor_schema( unit_of_measurement=UNIT_PARTS_PER_BILLION, icon=ICON_RADIATOR, accuracy_decimals=0, device_class=DEVICE_CLASS_VOLATILE_ORGANIC_COMPOUNDS_PARTS, state_class=STATE_CLASS_MEASUREMENT, ), - cv.Required(CONF_AQI): sensor.sensor_schema( + cv.Optional(CONF_AQI): sensor.sensor_schema( icon=ICON_CHEMICAL_WEAPON, accuracy_decimals=0, device_class=DEVICE_CLASS_AQI, @@ -62,12 +62,15 @@ async def to_code_base(config): var = cg.new_Pvariable(config[CONF_ID]) await cg.register_component(var, config) - sens = await sensor.new_sensor(config[CONF_ECO2]) - cg.add(var.set_co2(sens)) - sens = await sensor.new_sensor(config[CONF_TVOC]) - cg.add(var.set_tvoc(sens)) - sens = await sensor.new_sensor(config[CONF_AQI]) - cg.add(var.set_aqi(sens)) + if eco2_config := config.get(CONF_ECO2): + sens = await sensor.new_sensor(eco2_config) + cg.add(var.set_co2(sens)) + if tvoc_config := config.get(CONF_TVOC): + sens = await sensor.new_sensor(tvoc_config) + cg.add(var.set_tvoc(sens)) + if aqi_config := config.get(CONF_AQI): + sens = await sensor.new_sensor(aqi_config) + cg.add(var.set_aqi(sens)) if compensation_config := config.get(CONF_COMPENSATION): sens = await cg.get_variable(compensation_config[CONF_TEMPERATURE]) diff --git a/esphome/components/hte501/sensor.py b/esphome/components/hte501/sensor.py index 7eef641c4a..17ae3a3d1b 100644 --- a/esphome/components/hte501/sensor.py +++ b/esphome/components/hte501/sensor.py @@ -25,13 +25,13 @@ CONFIG_SCHEMA = ( cv.Schema( { cv.GenerateID(): cv.declare_id(HTE501Component), - cv.Required(CONF_TEMPERATURE): sensor.sensor_schema( + cv.Optional(CONF_TEMPERATURE): sensor.sensor_schema( unit_of_measurement=UNIT_CELSIUS, accuracy_decimals=1, device_class=DEVICE_CLASS_TEMPERATURE, state_class=STATE_CLASS_MEASUREMENT, ), - cv.Required(CONF_HUMIDITY): sensor.sensor_schema( + cv.Optional(CONF_HUMIDITY): sensor.sensor_schema( unit_of_measurement=UNIT_PERCENT, accuracy_decimals=1, device_class=DEVICE_CLASS_HUMIDITY, @@ -49,10 +49,10 @@ async def to_code(config): await cg.register_component(var, config) await i2c.register_i2c_device(var, config) - if CONF_TEMPERATURE in config: - sens = await sensor.new_sensor(config[CONF_TEMPERATURE]) + if temperature := config.get(CONF_TEMPERATURE): + sens = await sensor.new_sensor(temperature) cg.add(var.set_temperature_sensor(sens)) - if CONF_HUMIDITY in config: - sens = await sensor.new_sensor(config[CONF_HUMIDITY]) + if humidity := config.get(CONF_HUMIDITY): + sens = await sensor.new_sensor(humidity) cg.add(var.set_humidity_sensor(sens)) diff --git a/esphome/components/hyt271/sensor.py b/esphome/components/hyt271/sensor.py index 22364ce854..bf37646d4f 100644 --- a/esphome/components/hyt271/sensor.py +++ b/esphome/components/hyt271/sensor.py @@ -23,13 +23,13 @@ CONFIG_SCHEMA = ( cv.Schema( { cv.GenerateID(): cv.declare_id(HYT271Component), - cv.Required(CONF_TEMPERATURE): sensor.sensor_schema( + cv.Optional(CONF_TEMPERATURE): sensor.sensor_schema( unit_of_measurement=UNIT_CELSIUS, accuracy_decimals=1, device_class=DEVICE_CLASS_TEMPERATURE, state_class=STATE_CLASS_MEASUREMENT, ), - cv.Required(CONF_HUMIDITY): sensor.sensor_schema( + cv.Optional(CONF_HUMIDITY): sensor.sensor_schema( unit_of_measurement=UNIT_PERCENT, accuracy_decimals=1, device_class=DEVICE_CLASS_HUMIDITY, @@ -47,10 +47,10 @@ async def to_code(config): await cg.register_component(var, config) await i2c.register_i2c_device(var, config) - if CONF_TEMPERATURE in config: - sens = await sensor.new_sensor(config[CONF_TEMPERATURE]) + if temperature := config.get(CONF_TEMPERATURE): + sens = await sensor.new_sensor(temperature) cg.add(var.set_temperature(sens)) - if CONF_HUMIDITY in config: - sens = await sensor.new_sensor(config[CONF_HUMIDITY]) + if humidity := config.get(CONF_HUMIDITY): + sens = await sensor.new_sensor(humidity) cg.add(var.set_humidity(sens)) diff --git a/esphome/components/mhz19/sensor.py b/esphome/components/mhz19/sensor.py index 10428b1e4a..106636a6ba 100644 --- a/esphome/components/mhz19/sensor.py +++ b/esphome/components/mhz19/sensor.py @@ -32,7 +32,7 @@ CONFIG_SCHEMA = ( cv.Schema( { cv.GenerateID(): cv.declare_id(MHZ19Component), - cv.Required(CONF_CO2): sensor.sensor_schema( + cv.Optional(CONF_CO2): sensor.sensor_schema( unit_of_measurement=UNIT_PARTS_PER_MILLION, icon=ICON_MOLECULE_CO2, accuracy_decimals=0, @@ -61,16 +61,20 @@ async def to_code(config): await cg.register_component(var, config) await uart.register_uart_device(var, config) - if CONF_CO2 in config: - sens = await sensor.new_sensor(config[CONF_CO2]) + if co2 := config.get(CONF_CO2): + sens = await sensor.new_sensor(co2) cg.add(var.set_co2_sensor(sens)) - if CONF_TEMPERATURE in config: - sens = await sensor.new_sensor(config[CONF_TEMPERATURE]) + if temperature := config.get(CONF_TEMPERATURE): + sens = await sensor.new_sensor(temperature) cg.add(var.set_temperature_sensor(sens)) - if CONF_AUTOMATIC_BASELINE_CALIBRATION in config: - cg.add(var.set_abc_enabled(config[CONF_AUTOMATIC_BASELINE_CALIBRATION])) + if ( + automatic_baseline_calibration := config.get( + CONF_AUTOMATIC_BASELINE_CALIBRATION + ) + ) is not None: + cg.add(var.set_abc_enabled(automatic_baseline_calibration)) cg.add(var.set_warmup_seconds(config[CONF_WARMUP_TIME])) diff --git a/esphome/components/ms5611/sensor.py b/esphome/components/ms5611/sensor.py index 168ca0c5c8..dfb6083bef 100644 --- a/esphome/components/ms5611/sensor.py +++ b/esphome/components/ms5611/sensor.py @@ -24,13 +24,13 @@ CONFIG_SCHEMA = ( cv.Schema( { cv.GenerateID(): cv.declare_id(MS5611Component), - cv.Required(CONF_TEMPERATURE): sensor.sensor_schema( + cv.Optional(CONF_TEMPERATURE): sensor.sensor_schema( unit_of_measurement=UNIT_CELSIUS, accuracy_decimals=1, device_class=DEVICE_CLASS_TEMPERATURE, state_class=STATE_CLASS_MEASUREMENT, ), - cv.Required(CONF_PRESSURE): sensor.sensor_schema( + cv.Optional(CONF_PRESSURE): sensor.sensor_schema( unit_of_measurement=UNIT_HECTOPASCAL, icon=ICON_GAUGE, accuracy_decimals=1, @@ -49,10 +49,10 @@ async def to_code(config): await cg.register_component(var, config) await i2c.register_i2c_device(var, config) - if CONF_TEMPERATURE in config: - sens = await sensor.new_sensor(config[CONF_TEMPERATURE]) + if temperature := config.get(CONF_TEMPERATURE): + sens = await sensor.new_sensor(temperature) cg.add(var.set_temperature_sensor(sens)) - if CONF_PRESSURE in config: - sens = await sensor.new_sensor(config[CONF_PRESSURE]) + if pressure := config.get(CONF_PRESSURE): + sens = await sensor.new_sensor(pressure) cg.add(var.set_pressure_sensor(sens)) diff --git a/esphome/components/ms8607/sensor.py b/esphome/components/ms8607/sensor.py index 7ed7c61750..038f17190a 100644 --- a/esphome/components/ms8607/sensor.py +++ b/esphome/components/ms8607/sensor.py @@ -29,19 +29,19 @@ CONFIG_SCHEMA = ( cv.Schema( { cv.GenerateID(): cv.declare_id(MS8607Component), - cv.Required(CONF_TEMPERATURE): sensor.sensor_schema( + cv.Optional(CONF_TEMPERATURE): sensor.sensor_schema( unit_of_measurement=UNIT_CELSIUS, accuracy_decimals=2, # Resolution: 0.01 device_class=DEVICE_CLASS_TEMPERATURE, state_class=STATE_CLASS_MEASUREMENT, ), - cv.Required(CONF_PRESSURE): sensor.sensor_schema( + cv.Optional(CONF_PRESSURE): sensor.sensor_schema( unit_of_measurement=UNIT_HECTOPASCAL, accuracy_decimals=2, # Resolution: 0.016 device_class=DEVICE_CLASS_PRESSURE, state_class=STATE_CLASS_MEASUREMENT, ), - cv.Required(CONF_HUMIDITY): sensor.sensor_schema( + cv.Optional(CONF_HUMIDITY): sensor.sensor_schema( unit_of_measurement=UNIT_PERCENT, accuracy_decimals=2, # Resolution: 0.04 device_class=DEVICE_CLASS_HUMIDITY, diff --git a/esphome/components/senseair/sensor.py b/esphome/components/senseair/sensor.py index cd6d85c12b..2eb2617e30 100644 --- a/esphome/components/senseair/sensor.py +++ b/esphome/components/senseair/sensor.py @@ -38,7 +38,7 @@ CONFIG_SCHEMA = ( cv.Schema( { cv.GenerateID(): cv.declare_id(SenseAirComponent), - cv.Required(CONF_CO2): sensor.sensor_schema( + cv.Optional(CONF_CO2): sensor.sensor_schema( unit_of_measurement=UNIT_PARTS_PER_MILLION, icon=ICON_MOLECULE_CO2, accuracy_decimals=0, @@ -57,8 +57,8 @@ async def to_code(config): await cg.register_component(var, config) await uart.register_uart_device(var, config) - if CONF_CO2 in config: - sens = await sensor.new_sensor(config[CONF_CO2]) + if co2 := config.get(CONF_CO2): + sens = await sensor.new_sensor(co2) cg.add(var.set_co2_sensor(sens)) diff --git a/esphome/components/sgp30/sensor.py b/esphome/components/sgp30/sensor.py index 8c92f55ef7..848e4e9f9f 100644 --- a/esphome/components/sgp30/sensor.py +++ b/esphome/components/sgp30/sensor.py @@ -37,14 +37,14 @@ CONFIG_SCHEMA = ( cv.Schema( { cv.GenerateID(): cv.declare_id(SGP30Component), - cv.Required(CONF_ECO2): sensor.sensor_schema( + cv.Optional(CONF_ECO2): sensor.sensor_schema( unit_of_measurement=UNIT_PARTS_PER_MILLION, icon=ICON_MOLECULE_CO2, accuracy_decimals=0, device_class=DEVICE_CLASS_CARBON_DIOXIDE, state_class=STATE_CLASS_MEASUREMENT, ), - cv.Required(CONF_TVOC): sensor.sensor_schema( + cv.Optional(CONF_TVOC): sensor.sensor_schema( unit_of_measurement=UNIT_PARTS_PER_BILLION, icon=ICON_RADIATOR, accuracy_decimals=0, @@ -86,32 +86,30 @@ async def to_code(config): await cg.register_component(var, config) await i2c.register_i2c_device(var, config) - if CONF_ECO2 in config: - sens = await sensor.new_sensor(config[CONF_ECO2]) + if eco2_config := config.get(CONF_ECO2): + sens = await sensor.new_sensor(eco2_config) cg.add(var.set_eco2_sensor(sens)) - if CONF_TVOC in config: - sens = await sensor.new_sensor(config[CONF_TVOC]) + if tvoc_config := config.get(CONF_TVOC): + sens = await sensor.new_sensor(tvoc_config) cg.add(var.set_tvoc_sensor(sens)) - if CONF_ECO2_BASELINE in config: - sens = await sensor.new_sensor(config[CONF_ECO2_BASELINE]) + if eco2_baseline_config := config.get(CONF_ECO2_BASELINE): + sens = await sensor.new_sensor(eco2_baseline_config) cg.add(var.set_eco2_baseline_sensor(sens)) - if CONF_TVOC_BASELINE in config: - sens = await sensor.new_sensor(config[CONF_TVOC_BASELINE]) + if tvoc_baseline_config := config.get(CONF_TVOC_BASELINE): + sens = await sensor.new_sensor(tvoc_baseline_config) cg.add(var.set_tvoc_baseline_sensor(sens)) - if CONF_STORE_BASELINE in config: - cg.add(var.set_store_baseline(config[CONF_STORE_BASELINE])) + if (store_baseline := config.get(CONF_STORE_BASELINE)) is not None: + cg.add(var.set_store_baseline(store_baseline)) - if CONF_BASELINE in config: - baseline_config = config[CONF_BASELINE] + if baseline_config := config.get(CONF_BASELINE): cg.add(var.set_eco2_baseline(baseline_config[CONF_ECO2_BASELINE])) cg.add(var.set_tvoc_baseline(baseline_config[CONF_TVOC_BASELINE])) - if CONF_COMPENSATION in config: - compensation_config = config[CONF_COMPENSATION] + if compensation_config := config.get(CONF_COMPENSATION): sens = await cg.get_variable(compensation_config[CONF_HUMIDITY_SOURCE]) cg.add(var.set_humidity_sensor(sens)) sens = await cg.get_variable(compensation_config[CONF_TEMPERATURE_SOURCE]) diff --git a/esphome/components/shtcx/sensor.py b/esphome/components/shtcx/sensor.py index bb83ee4482..fdb1344fb7 100644 --- a/esphome/components/shtcx/sensor.py +++ b/esphome/components/shtcx/sensor.py @@ -26,13 +26,13 @@ CONFIG_SCHEMA = ( cv.Schema( { cv.GenerateID(): cv.declare_id(SHTCXComponent), - cv.Required(CONF_TEMPERATURE): sensor.sensor_schema( + cv.Optional(CONF_TEMPERATURE): sensor.sensor_schema( unit_of_measurement=UNIT_CELSIUS, accuracy_decimals=1, device_class=DEVICE_CLASS_TEMPERATURE, state_class=STATE_CLASS_MEASUREMENT, ), - cv.Required(CONF_HUMIDITY): sensor.sensor_schema( + cv.Optional(CONF_HUMIDITY): sensor.sensor_schema( unit_of_measurement=UNIT_PERCENT, accuracy_decimals=1, device_class=DEVICE_CLASS_HUMIDITY, @@ -50,10 +50,10 @@ async def to_code(config): await cg.register_component(var, config) await i2c.register_i2c_device(var, config) - if CONF_TEMPERATURE in config: - sens = await sensor.new_sensor(config[CONF_TEMPERATURE]) + if temperature := config.get(CONF_TEMPERATURE): + sens = await sensor.new_sensor(temperature) cg.add(var.set_temperature_sensor(sens)) - if CONF_HUMIDITY in config: - sens = await sensor.new_sensor(config[CONF_HUMIDITY]) + if humidity := config.get(CONF_HUMIDITY): + sens = await sensor.new_sensor(humidity) cg.add(var.set_humidity_sensor(sens)) diff --git a/esphome/components/t6615/sensor.py b/esphome/components/t6615/sensor.py index 6df40497a9..9315e4a669 100644 --- a/esphome/components/t6615/sensor.py +++ b/esphome/components/t6615/sensor.py @@ -19,7 +19,7 @@ CONFIG_SCHEMA = ( cv.Schema( { cv.GenerateID(): cv.declare_id(T6615Component), - cv.Required(CONF_CO2): sensor.sensor_schema( + cv.Optional(CONF_CO2): sensor.sensor_schema( unit_of_measurement=UNIT_PARTS_PER_MILLION, accuracy_decimals=0, device_class=DEVICE_CLASS_CARBON_DIOXIDE, @@ -41,6 +41,6 @@ async def to_code(config): await cg.register_component(var, config) await uart.register_uart_device(var, config) - if CONF_CO2 in config: - sens = await sensor.new_sensor(config[CONF_CO2]) + if co2 := config.get(CONF_CO2): + sens = await sensor.new_sensor(co2) cg.add(var.set_co2_sensor(sens)) diff --git a/esphome/components/t6615/t6615.cpp b/esphome/components/t6615/t6615.cpp index c139c56ce4..1c78833500 100644 --- a/esphome/components/t6615/t6615.cpp +++ b/esphome/components/t6615/t6615.cpp @@ -63,7 +63,8 @@ void T6615Component::loop() { case T6615Command::GET_PPM: { const uint16_t ppm = encode_uint16(response_buffer[3], response_buffer[4]); ESP_LOGD(TAG, "T6615 Received CO₂=%uppm", ppm); - this->co2_sensor_->publish_state(ppm); + if (this->co2_sensor_ != nullptr) + this->co2_sensor_->publish_state(ppm); break; } default: