mirror of
				https://github.com/esphome/esphome.git
				synced 2025-10-30 22:53:59 +00:00 
			
		
		
		
	Update some sensor schemas to be Optional (#8803)
This commit is contained in:
		| @@ -32,14 +32,14 @@ CONFIG_SCHEMA = ( | |||||||
|     cv.Schema( |     cv.Schema( | ||||||
|         { |         { | ||||||
|             cv.GenerateID(): cv.declare_id(CCS811Component), |             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, |                 unit_of_measurement=UNIT_PARTS_PER_MILLION, | ||||||
|                 icon=ICON_MOLECULE_CO2, |                 icon=ICON_MOLECULE_CO2, | ||||||
|                 accuracy_decimals=0, |                 accuracy_decimals=0, | ||||||
|                 device_class=DEVICE_CLASS_CARBON_DIOXIDE, |                 device_class=DEVICE_CLASS_CARBON_DIOXIDE, | ||||||
|                 state_class=STATE_CLASS_MEASUREMENT, |                 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, |                 unit_of_measurement=UNIT_PARTS_PER_BILLION, | ||||||
|                 icon=ICON_RADIATOR, |                 icon=ICON_RADIATOR, | ||||||
|                 accuracy_decimals=0, |                 accuracy_decimals=0, | ||||||
| @@ -64,10 +64,13 @@ async def to_code(config): | |||||||
|     await cg.register_component(var, config) |     await cg.register_component(var, config) | ||||||
|     await i2c.register_i2c_device(var, config) |     await i2c.register_i2c_device(var, config) | ||||||
|  |  | ||||||
|     sens = await sensor.new_sensor(config[CONF_ECO2]) |     if eco2_config := config.get(CONF_ECO2): | ||||||
|     cg.add(var.set_co2(sens)) |         sens = await sensor.new_sensor(eco2_config) | ||||||
|     sens = await sensor.new_sensor(config[CONF_TVOC]) |         cg.add(var.set_co2(sens)) | ||||||
|     cg.add(var.set_tvoc(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): |     if version_config := config.get(CONF_VERSION): | ||||||
|         sens = await text_sensor.new_text_sensor(version_config) |         sens = await text_sensor.new_text_sensor(version_config) | ||||||
|   | |||||||
| @@ -27,14 +27,14 @@ CONFIG_SCHEMA = ( | |||||||
|     cv.Schema( |     cv.Schema( | ||||||
|         { |         { | ||||||
|             cv.GenerateID(): cv.declare_id(DPS310Component), |             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, |                 unit_of_measurement=UNIT_CELSIUS, | ||||||
|                 icon=ICON_THERMOMETER, |                 icon=ICON_THERMOMETER, | ||||||
|                 accuracy_decimals=1, |                 accuracy_decimals=1, | ||||||
|                 device_class=DEVICE_CLASS_TEMPERATURE, |                 device_class=DEVICE_CLASS_TEMPERATURE, | ||||||
|                 state_class=STATE_CLASS_MEASUREMENT, |                 state_class=STATE_CLASS_MEASUREMENT, | ||||||
|             ), |             ), | ||||||
|             cv.Required(CONF_PRESSURE): sensor.sensor_schema( |             cv.Optional(CONF_PRESSURE): sensor.sensor_schema( | ||||||
|                 unit_of_measurement=UNIT_HECTOPASCAL, |                 unit_of_measurement=UNIT_HECTOPASCAL, | ||||||
|                 icon=ICON_GAUGE, |                 icon=ICON_GAUGE, | ||||||
|                 accuracy_decimals=1, |                 accuracy_decimals=1, | ||||||
| @@ -53,10 +53,10 @@ async def to_code(config): | |||||||
|     await cg.register_component(var, config) |     await cg.register_component(var, config) | ||||||
|     await i2c.register_i2c_device(var, config) |     await i2c.register_i2c_device(var, config) | ||||||
|  |  | ||||||
|     if CONF_TEMPERATURE in config: |     if temperature := config.get(CONF_TEMPERATURE): | ||||||
|         sens = await sensor.new_sensor(config[CONF_TEMPERATURE]) |         sens = await sensor.new_sensor(temperature) | ||||||
|         cg.add(var.set_temperature_sensor(sens)) |         cg.add(var.set_temperature_sensor(sens)) | ||||||
|  |  | ||||||
|     if CONF_PRESSURE in config: |     if pressure := config.get(CONF_PRESSURE): | ||||||
|         sens = await sensor.new_sensor(config[CONF_PRESSURE]) |         sens = await sensor.new_sensor(pressure) | ||||||
|         cg.add(var.set_pressure_sensor(sens)) |         cg.add(var.set_pressure_sensor(sens)) | ||||||
|   | |||||||
| @@ -26,19 +26,19 @@ CONFIG_SCHEMA = ( | |||||||
|     cv.Schema( |     cv.Schema( | ||||||
|         { |         { | ||||||
|             cv.GenerateID(): cv.declare_id(EE895Component), |             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, |                 unit_of_measurement=UNIT_CELSIUS, | ||||||
|                 accuracy_decimals=1, |                 accuracy_decimals=1, | ||||||
|                 device_class=DEVICE_CLASS_TEMPERATURE, |                 device_class=DEVICE_CLASS_TEMPERATURE, | ||||||
|                 state_class=STATE_CLASS_MEASUREMENT, |                 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, |                 unit_of_measurement=UNIT_PARTS_PER_MILLION, | ||||||
|                 icon=ICON_MOLECULE_CO2, |                 icon=ICON_MOLECULE_CO2, | ||||||
|                 accuracy_decimals=0, |                 accuracy_decimals=0, | ||||||
|                 state_class=STATE_CLASS_MEASUREMENT, |                 state_class=STATE_CLASS_MEASUREMENT, | ||||||
|             ), |             ), | ||||||
|             cv.Required(CONF_PRESSURE): sensor.sensor_schema( |             cv.Optional(CONF_PRESSURE): sensor.sensor_schema( | ||||||
|                 unit_of_measurement=UNIT_HECTOPASCAL, |                 unit_of_measurement=UNIT_HECTOPASCAL, | ||||||
|                 accuracy_decimals=1, |                 accuracy_decimals=1, | ||||||
|                 device_class=DEVICE_CLASS_PRESSURE, |                 device_class=DEVICE_CLASS_PRESSURE, | ||||||
| @@ -56,14 +56,14 @@ async def to_code(config): | |||||||
|     await cg.register_component(var, config) |     await cg.register_component(var, config) | ||||||
|     await i2c.register_i2c_device(var, config) |     await i2c.register_i2c_device(var, config) | ||||||
|  |  | ||||||
|     if CONF_TEMPERATURE in config: |     if temperature := config.get(CONF_TEMPERATURE): | ||||||
|         sens = await sensor.new_sensor(config[CONF_TEMPERATURE]) |         sens = await sensor.new_sensor(temperature) | ||||||
|         cg.add(var.set_temperature_sensor(sens)) |         cg.add(var.set_temperature_sensor(sens)) | ||||||
|  |  | ||||||
|     if CONF_CO2 in config: |     if co2 := config.get(CONF_CO2): | ||||||
|         sens = await sensor.new_sensor(config[CONF_CO2]) |         sens = await sensor.new_sensor(co2) | ||||||
|         cg.add(var.set_co2_sensor(sens)) |         cg.add(var.set_co2_sensor(sens)) | ||||||
|  |  | ||||||
|     if CONF_PRESSURE in config: |     if pressure := config.get(CONF_PRESSURE): | ||||||
|         sens = await sensor.new_sensor(config[CONF_PRESSURE]) |         sens = await sensor.new_sensor(pressure) | ||||||
|         cg.add(var.set_pressure_sensor(sens)) |         cg.add(var.set_pressure_sensor(sens)) | ||||||
|   | |||||||
| @@ -28,21 +28,21 @@ UNIT_INDEX = "index" | |||||||
|  |  | ||||||
| CONFIG_SCHEMA_BASE = cv.Schema( | 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, |             unit_of_measurement=UNIT_PARTS_PER_MILLION, | ||||||
|             icon=ICON_MOLECULE_CO2, |             icon=ICON_MOLECULE_CO2, | ||||||
|             accuracy_decimals=0, |             accuracy_decimals=0, | ||||||
|             device_class=DEVICE_CLASS_CARBON_DIOXIDE, |             device_class=DEVICE_CLASS_CARBON_DIOXIDE, | ||||||
|             state_class=STATE_CLASS_MEASUREMENT, |             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, |             unit_of_measurement=UNIT_PARTS_PER_BILLION, | ||||||
|             icon=ICON_RADIATOR, |             icon=ICON_RADIATOR, | ||||||
|             accuracy_decimals=0, |             accuracy_decimals=0, | ||||||
|             device_class=DEVICE_CLASS_VOLATILE_ORGANIC_COMPOUNDS_PARTS, |             device_class=DEVICE_CLASS_VOLATILE_ORGANIC_COMPOUNDS_PARTS, | ||||||
|             state_class=STATE_CLASS_MEASUREMENT, |             state_class=STATE_CLASS_MEASUREMENT, | ||||||
|         ), |         ), | ||||||
|         cv.Required(CONF_AQI): sensor.sensor_schema( |         cv.Optional(CONF_AQI): sensor.sensor_schema( | ||||||
|             icon=ICON_CHEMICAL_WEAPON, |             icon=ICON_CHEMICAL_WEAPON, | ||||||
|             accuracy_decimals=0, |             accuracy_decimals=0, | ||||||
|             device_class=DEVICE_CLASS_AQI, |             device_class=DEVICE_CLASS_AQI, | ||||||
| @@ -62,12 +62,15 @@ async def to_code_base(config): | |||||||
|     var = cg.new_Pvariable(config[CONF_ID]) |     var = cg.new_Pvariable(config[CONF_ID]) | ||||||
|     await cg.register_component(var, config) |     await cg.register_component(var, config) | ||||||
|  |  | ||||||
|     sens = await sensor.new_sensor(config[CONF_ECO2]) |     if eco2_config := config.get(CONF_ECO2): | ||||||
|     cg.add(var.set_co2(sens)) |         sens = await sensor.new_sensor(eco2_config) | ||||||
|     sens = await sensor.new_sensor(config[CONF_TVOC]) |         cg.add(var.set_co2(sens)) | ||||||
|     cg.add(var.set_tvoc(sens)) |     if tvoc_config := config.get(CONF_TVOC): | ||||||
|     sens = await sensor.new_sensor(config[CONF_AQI]) |         sens = await sensor.new_sensor(tvoc_config) | ||||||
|     cg.add(var.set_aqi(sens)) |         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): |     if compensation_config := config.get(CONF_COMPENSATION): | ||||||
|         sens = await cg.get_variable(compensation_config[CONF_TEMPERATURE]) |         sens = await cg.get_variable(compensation_config[CONF_TEMPERATURE]) | ||||||
|   | |||||||
| @@ -25,13 +25,13 @@ CONFIG_SCHEMA = ( | |||||||
|     cv.Schema( |     cv.Schema( | ||||||
|         { |         { | ||||||
|             cv.GenerateID(): cv.declare_id(HTE501Component), |             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, |                 unit_of_measurement=UNIT_CELSIUS, | ||||||
|                 accuracy_decimals=1, |                 accuracy_decimals=1, | ||||||
|                 device_class=DEVICE_CLASS_TEMPERATURE, |                 device_class=DEVICE_CLASS_TEMPERATURE, | ||||||
|                 state_class=STATE_CLASS_MEASUREMENT, |                 state_class=STATE_CLASS_MEASUREMENT, | ||||||
|             ), |             ), | ||||||
|             cv.Required(CONF_HUMIDITY): sensor.sensor_schema( |             cv.Optional(CONF_HUMIDITY): sensor.sensor_schema( | ||||||
|                 unit_of_measurement=UNIT_PERCENT, |                 unit_of_measurement=UNIT_PERCENT, | ||||||
|                 accuracy_decimals=1, |                 accuracy_decimals=1, | ||||||
|                 device_class=DEVICE_CLASS_HUMIDITY, |                 device_class=DEVICE_CLASS_HUMIDITY, | ||||||
| @@ -49,10 +49,10 @@ async def to_code(config): | |||||||
|     await cg.register_component(var, config) |     await cg.register_component(var, config) | ||||||
|     await i2c.register_i2c_device(var, config) |     await i2c.register_i2c_device(var, config) | ||||||
|  |  | ||||||
|     if CONF_TEMPERATURE in config: |     if temperature := config.get(CONF_TEMPERATURE): | ||||||
|         sens = await sensor.new_sensor(config[CONF_TEMPERATURE]) |         sens = await sensor.new_sensor(temperature) | ||||||
|         cg.add(var.set_temperature_sensor(sens)) |         cg.add(var.set_temperature_sensor(sens)) | ||||||
|  |  | ||||||
|     if CONF_HUMIDITY in config: |     if humidity := config.get(CONF_HUMIDITY): | ||||||
|         sens = await sensor.new_sensor(config[CONF_HUMIDITY]) |         sens = await sensor.new_sensor(humidity) | ||||||
|         cg.add(var.set_humidity_sensor(sens)) |         cg.add(var.set_humidity_sensor(sens)) | ||||||
|   | |||||||
| @@ -23,13 +23,13 @@ CONFIG_SCHEMA = ( | |||||||
|     cv.Schema( |     cv.Schema( | ||||||
|         { |         { | ||||||
|             cv.GenerateID(): cv.declare_id(HYT271Component), |             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, |                 unit_of_measurement=UNIT_CELSIUS, | ||||||
|                 accuracy_decimals=1, |                 accuracy_decimals=1, | ||||||
|                 device_class=DEVICE_CLASS_TEMPERATURE, |                 device_class=DEVICE_CLASS_TEMPERATURE, | ||||||
|                 state_class=STATE_CLASS_MEASUREMENT, |                 state_class=STATE_CLASS_MEASUREMENT, | ||||||
|             ), |             ), | ||||||
|             cv.Required(CONF_HUMIDITY): sensor.sensor_schema( |             cv.Optional(CONF_HUMIDITY): sensor.sensor_schema( | ||||||
|                 unit_of_measurement=UNIT_PERCENT, |                 unit_of_measurement=UNIT_PERCENT, | ||||||
|                 accuracy_decimals=1, |                 accuracy_decimals=1, | ||||||
|                 device_class=DEVICE_CLASS_HUMIDITY, |                 device_class=DEVICE_CLASS_HUMIDITY, | ||||||
| @@ -47,10 +47,10 @@ async def to_code(config): | |||||||
|     await cg.register_component(var, config) |     await cg.register_component(var, config) | ||||||
|     await i2c.register_i2c_device(var, config) |     await i2c.register_i2c_device(var, config) | ||||||
|  |  | ||||||
|     if CONF_TEMPERATURE in config: |     if temperature := config.get(CONF_TEMPERATURE): | ||||||
|         sens = await sensor.new_sensor(config[CONF_TEMPERATURE]) |         sens = await sensor.new_sensor(temperature) | ||||||
|         cg.add(var.set_temperature(sens)) |         cg.add(var.set_temperature(sens)) | ||||||
|  |  | ||||||
|     if CONF_HUMIDITY in config: |     if humidity := config.get(CONF_HUMIDITY): | ||||||
|         sens = await sensor.new_sensor(config[CONF_HUMIDITY]) |         sens = await sensor.new_sensor(humidity) | ||||||
|         cg.add(var.set_humidity(sens)) |         cg.add(var.set_humidity(sens)) | ||||||
|   | |||||||
| @@ -32,7 +32,7 @@ CONFIG_SCHEMA = ( | |||||||
|     cv.Schema( |     cv.Schema( | ||||||
|         { |         { | ||||||
|             cv.GenerateID(): cv.declare_id(MHZ19Component), |             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, |                 unit_of_measurement=UNIT_PARTS_PER_MILLION, | ||||||
|                 icon=ICON_MOLECULE_CO2, |                 icon=ICON_MOLECULE_CO2, | ||||||
|                 accuracy_decimals=0, |                 accuracy_decimals=0, | ||||||
| @@ -61,16 +61,20 @@ async def to_code(config): | |||||||
|     await cg.register_component(var, config) |     await cg.register_component(var, config) | ||||||
|     await uart.register_uart_device(var, config) |     await uart.register_uart_device(var, config) | ||||||
|  |  | ||||||
|     if CONF_CO2 in config: |     if co2 := config.get(CONF_CO2): | ||||||
|         sens = await sensor.new_sensor(config[CONF_CO2]) |         sens = await sensor.new_sensor(co2) | ||||||
|         cg.add(var.set_co2_sensor(sens)) |         cg.add(var.set_co2_sensor(sens)) | ||||||
|  |  | ||||||
|     if CONF_TEMPERATURE in config: |     if temperature := config.get(CONF_TEMPERATURE): | ||||||
|         sens = await sensor.new_sensor(config[CONF_TEMPERATURE]) |         sens = await sensor.new_sensor(temperature) | ||||||
|         cg.add(var.set_temperature_sensor(sens)) |         cg.add(var.set_temperature_sensor(sens)) | ||||||
|  |  | ||||||
|     if CONF_AUTOMATIC_BASELINE_CALIBRATION in config: |     if ( | ||||||
|         cg.add(var.set_abc_enabled(config[CONF_AUTOMATIC_BASELINE_CALIBRATION])) |         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])) |     cg.add(var.set_warmup_seconds(config[CONF_WARMUP_TIME])) | ||||||
|  |  | ||||||
|   | |||||||
| @@ -24,13 +24,13 @@ CONFIG_SCHEMA = ( | |||||||
|     cv.Schema( |     cv.Schema( | ||||||
|         { |         { | ||||||
|             cv.GenerateID(): cv.declare_id(MS5611Component), |             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, |                 unit_of_measurement=UNIT_CELSIUS, | ||||||
|                 accuracy_decimals=1, |                 accuracy_decimals=1, | ||||||
|                 device_class=DEVICE_CLASS_TEMPERATURE, |                 device_class=DEVICE_CLASS_TEMPERATURE, | ||||||
|                 state_class=STATE_CLASS_MEASUREMENT, |                 state_class=STATE_CLASS_MEASUREMENT, | ||||||
|             ), |             ), | ||||||
|             cv.Required(CONF_PRESSURE): sensor.sensor_schema( |             cv.Optional(CONF_PRESSURE): sensor.sensor_schema( | ||||||
|                 unit_of_measurement=UNIT_HECTOPASCAL, |                 unit_of_measurement=UNIT_HECTOPASCAL, | ||||||
|                 icon=ICON_GAUGE, |                 icon=ICON_GAUGE, | ||||||
|                 accuracy_decimals=1, |                 accuracy_decimals=1, | ||||||
| @@ -49,10 +49,10 @@ async def to_code(config): | |||||||
|     await cg.register_component(var, config) |     await cg.register_component(var, config) | ||||||
|     await i2c.register_i2c_device(var, config) |     await i2c.register_i2c_device(var, config) | ||||||
|  |  | ||||||
|     if CONF_TEMPERATURE in config: |     if temperature := config.get(CONF_TEMPERATURE): | ||||||
|         sens = await sensor.new_sensor(config[CONF_TEMPERATURE]) |         sens = await sensor.new_sensor(temperature) | ||||||
|         cg.add(var.set_temperature_sensor(sens)) |         cg.add(var.set_temperature_sensor(sens)) | ||||||
|  |  | ||||||
|     if CONF_PRESSURE in config: |     if pressure := config.get(CONF_PRESSURE): | ||||||
|         sens = await sensor.new_sensor(config[CONF_PRESSURE]) |         sens = await sensor.new_sensor(pressure) | ||||||
|         cg.add(var.set_pressure_sensor(sens)) |         cg.add(var.set_pressure_sensor(sens)) | ||||||
|   | |||||||
| @@ -29,19 +29,19 @@ CONFIG_SCHEMA = ( | |||||||
|     cv.Schema( |     cv.Schema( | ||||||
|         { |         { | ||||||
|             cv.GenerateID(): cv.declare_id(MS8607Component), |             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, |                 unit_of_measurement=UNIT_CELSIUS, | ||||||
|                 accuracy_decimals=2,  # Resolution: 0.01 |                 accuracy_decimals=2,  # Resolution: 0.01 | ||||||
|                 device_class=DEVICE_CLASS_TEMPERATURE, |                 device_class=DEVICE_CLASS_TEMPERATURE, | ||||||
|                 state_class=STATE_CLASS_MEASUREMENT, |                 state_class=STATE_CLASS_MEASUREMENT, | ||||||
|             ), |             ), | ||||||
|             cv.Required(CONF_PRESSURE): sensor.sensor_schema( |             cv.Optional(CONF_PRESSURE): sensor.sensor_schema( | ||||||
|                 unit_of_measurement=UNIT_HECTOPASCAL, |                 unit_of_measurement=UNIT_HECTOPASCAL, | ||||||
|                 accuracy_decimals=2,  # Resolution: 0.016 |                 accuracy_decimals=2,  # Resolution: 0.016 | ||||||
|                 device_class=DEVICE_CLASS_PRESSURE, |                 device_class=DEVICE_CLASS_PRESSURE, | ||||||
|                 state_class=STATE_CLASS_MEASUREMENT, |                 state_class=STATE_CLASS_MEASUREMENT, | ||||||
|             ), |             ), | ||||||
|             cv.Required(CONF_HUMIDITY): sensor.sensor_schema( |             cv.Optional(CONF_HUMIDITY): sensor.sensor_schema( | ||||||
|                 unit_of_measurement=UNIT_PERCENT, |                 unit_of_measurement=UNIT_PERCENT, | ||||||
|                 accuracy_decimals=2,  # Resolution: 0.04 |                 accuracy_decimals=2,  # Resolution: 0.04 | ||||||
|                 device_class=DEVICE_CLASS_HUMIDITY, |                 device_class=DEVICE_CLASS_HUMIDITY, | ||||||
|   | |||||||
| @@ -38,7 +38,7 @@ CONFIG_SCHEMA = ( | |||||||
|     cv.Schema( |     cv.Schema( | ||||||
|         { |         { | ||||||
|             cv.GenerateID(): cv.declare_id(SenseAirComponent), |             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, |                 unit_of_measurement=UNIT_PARTS_PER_MILLION, | ||||||
|                 icon=ICON_MOLECULE_CO2, |                 icon=ICON_MOLECULE_CO2, | ||||||
|                 accuracy_decimals=0, |                 accuracy_decimals=0, | ||||||
| @@ -57,8 +57,8 @@ async def to_code(config): | |||||||
|     await cg.register_component(var, config) |     await cg.register_component(var, config) | ||||||
|     await uart.register_uart_device(var, config) |     await uart.register_uart_device(var, config) | ||||||
|  |  | ||||||
|     if CONF_CO2 in config: |     if co2 := config.get(CONF_CO2): | ||||||
|         sens = await sensor.new_sensor(config[CONF_CO2]) |         sens = await sensor.new_sensor(co2) | ||||||
|         cg.add(var.set_co2_sensor(sens)) |         cg.add(var.set_co2_sensor(sens)) | ||||||
|  |  | ||||||
|  |  | ||||||
|   | |||||||
| @@ -37,14 +37,14 @@ CONFIG_SCHEMA = ( | |||||||
|     cv.Schema( |     cv.Schema( | ||||||
|         { |         { | ||||||
|             cv.GenerateID(): cv.declare_id(SGP30Component), |             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, |                 unit_of_measurement=UNIT_PARTS_PER_MILLION, | ||||||
|                 icon=ICON_MOLECULE_CO2, |                 icon=ICON_MOLECULE_CO2, | ||||||
|                 accuracy_decimals=0, |                 accuracy_decimals=0, | ||||||
|                 device_class=DEVICE_CLASS_CARBON_DIOXIDE, |                 device_class=DEVICE_CLASS_CARBON_DIOXIDE, | ||||||
|                 state_class=STATE_CLASS_MEASUREMENT, |                 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, |                 unit_of_measurement=UNIT_PARTS_PER_BILLION, | ||||||
|                 icon=ICON_RADIATOR, |                 icon=ICON_RADIATOR, | ||||||
|                 accuracy_decimals=0, |                 accuracy_decimals=0, | ||||||
| @@ -86,32 +86,30 @@ async def to_code(config): | |||||||
|     await cg.register_component(var, config) |     await cg.register_component(var, config) | ||||||
|     await i2c.register_i2c_device(var, config) |     await i2c.register_i2c_device(var, config) | ||||||
|  |  | ||||||
|     if CONF_ECO2 in config: |     if eco2_config := config.get(CONF_ECO2): | ||||||
|         sens = await sensor.new_sensor(config[CONF_ECO2]) |         sens = await sensor.new_sensor(eco2_config) | ||||||
|         cg.add(var.set_eco2_sensor(sens)) |         cg.add(var.set_eco2_sensor(sens)) | ||||||
|  |  | ||||||
|     if CONF_TVOC in config: |     if tvoc_config := config.get(CONF_TVOC): | ||||||
|         sens = await sensor.new_sensor(config[CONF_TVOC]) |         sens = await sensor.new_sensor(tvoc_config) | ||||||
|         cg.add(var.set_tvoc_sensor(sens)) |         cg.add(var.set_tvoc_sensor(sens)) | ||||||
|  |  | ||||||
|     if CONF_ECO2_BASELINE in config: |     if eco2_baseline_config := config.get(CONF_ECO2_BASELINE): | ||||||
|         sens = await sensor.new_sensor(config[CONF_ECO2_BASELINE]) |         sens = await sensor.new_sensor(eco2_baseline_config) | ||||||
|         cg.add(var.set_eco2_baseline_sensor(sens)) |         cg.add(var.set_eco2_baseline_sensor(sens)) | ||||||
|  |  | ||||||
|     if CONF_TVOC_BASELINE in config: |     if tvoc_baseline_config := config.get(CONF_TVOC_BASELINE): | ||||||
|         sens = await sensor.new_sensor(config[CONF_TVOC_BASELINE]) |         sens = await sensor.new_sensor(tvoc_baseline_config) | ||||||
|         cg.add(var.set_tvoc_baseline_sensor(sens)) |         cg.add(var.set_tvoc_baseline_sensor(sens)) | ||||||
|  |  | ||||||
|     if CONF_STORE_BASELINE in config: |     if (store_baseline := config.get(CONF_STORE_BASELINE)) is not None: | ||||||
|         cg.add(var.set_store_baseline(config[CONF_STORE_BASELINE])) |         cg.add(var.set_store_baseline(store_baseline)) | ||||||
|  |  | ||||||
|     if CONF_BASELINE in config: |     if baseline_config := config.get(CONF_BASELINE): | ||||||
|         baseline_config = config[CONF_BASELINE] |  | ||||||
|         cg.add(var.set_eco2_baseline(baseline_config[CONF_ECO2_BASELINE])) |         cg.add(var.set_eco2_baseline(baseline_config[CONF_ECO2_BASELINE])) | ||||||
|         cg.add(var.set_tvoc_baseline(baseline_config[CONF_TVOC_BASELINE])) |         cg.add(var.set_tvoc_baseline(baseline_config[CONF_TVOC_BASELINE])) | ||||||
|  |  | ||||||
|     if CONF_COMPENSATION in config: |     if compensation_config := config.get(CONF_COMPENSATION): | ||||||
|         compensation_config = config[CONF_COMPENSATION] |  | ||||||
|         sens = await cg.get_variable(compensation_config[CONF_HUMIDITY_SOURCE]) |         sens = await cg.get_variable(compensation_config[CONF_HUMIDITY_SOURCE]) | ||||||
|         cg.add(var.set_humidity_sensor(sens)) |         cg.add(var.set_humidity_sensor(sens)) | ||||||
|         sens = await cg.get_variable(compensation_config[CONF_TEMPERATURE_SOURCE]) |         sens = await cg.get_variable(compensation_config[CONF_TEMPERATURE_SOURCE]) | ||||||
|   | |||||||
| @@ -26,13 +26,13 @@ CONFIG_SCHEMA = ( | |||||||
|     cv.Schema( |     cv.Schema( | ||||||
|         { |         { | ||||||
|             cv.GenerateID(): cv.declare_id(SHTCXComponent), |             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, |                 unit_of_measurement=UNIT_CELSIUS, | ||||||
|                 accuracy_decimals=1, |                 accuracy_decimals=1, | ||||||
|                 device_class=DEVICE_CLASS_TEMPERATURE, |                 device_class=DEVICE_CLASS_TEMPERATURE, | ||||||
|                 state_class=STATE_CLASS_MEASUREMENT, |                 state_class=STATE_CLASS_MEASUREMENT, | ||||||
|             ), |             ), | ||||||
|             cv.Required(CONF_HUMIDITY): sensor.sensor_schema( |             cv.Optional(CONF_HUMIDITY): sensor.sensor_schema( | ||||||
|                 unit_of_measurement=UNIT_PERCENT, |                 unit_of_measurement=UNIT_PERCENT, | ||||||
|                 accuracy_decimals=1, |                 accuracy_decimals=1, | ||||||
|                 device_class=DEVICE_CLASS_HUMIDITY, |                 device_class=DEVICE_CLASS_HUMIDITY, | ||||||
| @@ -50,10 +50,10 @@ async def to_code(config): | |||||||
|     await cg.register_component(var, config) |     await cg.register_component(var, config) | ||||||
|     await i2c.register_i2c_device(var, config) |     await i2c.register_i2c_device(var, config) | ||||||
|  |  | ||||||
|     if CONF_TEMPERATURE in config: |     if temperature := config.get(CONF_TEMPERATURE): | ||||||
|         sens = await sensor.new_sensor(config[CONF_TEMPERATURE]) |         sens = await sensor.new_sensor(temperature) | ||||||
|         cg.add(var.set_temperature_sensor(sens)) |         cg.add(var.set_temperature_sensor(sens)) | ||||||
|  |  | ||||||
|     if CONF_HUMIDITY in config: |     if humidity := config.get(CONF_HUMIDITY): | ||||||
|         sens = await sensor.new_sensor(config[CONF_HUMIDITY]) |         sens = await sensor.new_sensor(humidity) | ||||||
|         cg.add(var.set_humidity_sensor(sens)) |         cg.add(var.set_humidity_sensor(sens)) | ||||||
|   | |||||||
| @@ -19,7 +19,7 @@ CONFIG_SCHEMA = ( | |||||||
|     cv.Schema( |     cv.Schema( | ||||||
|         { |         { | ||||||
|             cv.GenerateID(): cv.declare_id(T6615Component), |             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, |                 unit_of_measurement=UNIT_PARTS_PER_MILLION, | ||||||
|                 accuracy_decimals=0, |                 accuracy_decimals=0, | ||||||
|                 device_class=DEVICE_CLASS_CARBON_DIOXIDE, |                 device_class=DEVICE_CLASS_CARBON_DIOXIDE, | ||||||
| @@ -41,6 +41,6 @@ async def to_code(config): | |||||||
|     await cg.register_component(var, config) |     await cg.register_component(var, config) | ||||||
|     await uart.register_uart_device(var, config) |     await uart.register_uart_device(var, config) | ||||||
|  |  | ||||||
|     if CONF_CO2 in config: |     if co2 := config.get(CONF_CO2): | ||||||
|         sens = await sensor.new_sensor(config[CONF_CO2]) |         sens = await sensor.new_sensor(co2) | ||||||
|         cg.add(var.set_co2_sensor(sens)) |         cg.add(var.set_co2_sensor(sens)) | ||||||
|   | |||||||
| @@ -63,7 +63,8 @@ void T6615Component::loop() { | |||||||
|     case T6615Command::GET_PPM: { |     case T6615Command::GET_PPM: { | ||||||
|       const uint16_t ppm = encode_uint16(response_buffer[3], response_buffer[4]); |       const uint16_t ppm = encode_uint16(response_buffer[3], response_buffer[4]); | ||||||
|       ESP_LOGD(TAG, "T6615 Received CO₂=%uppm", ppm); |       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; |       break; | ||||||
|     } |     } | ||||||
|     default: |     default: | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user