[sgp4x] Rename voc/nox sensor keys to voc_index/nox_index (#17723)

This commit is contained in:
Brandon Harvey
2026-07-28 22:35:07 -04:00
committed by GitHub
parent 227f1d3842
commit 6ad804fbc5
3 changed files with 20 additions and 15 deletions
+2
View File
@@ -24,6 +24,7 @@ CONF_IAQ = "iaq"
CONF_IGNORE_NOT_FOUND = "ignore_not_found"
CONF_LIBRETINY = "libretiny"
CONF_LOOP = "loop"
CONF_NOX_INDEX = "nox_index"
CONF_ON_PACKET = "on_packet"
CONF_ON_RECEIVE = "on_receive"
CONF_ON_STATE_CHANGE = "on_state_change"
@@ -36,6 +37,7 @@ CONF_SHA256 = "sha256"
CONF_STATE_SAVE_INTERVAL = "state_save_interval"
CONF_STOP_BITS = "stop_bits"
CONF_USE_PSRAM = "use_psram"
CONF_VOC_INDEX = "voc_index"
CONF_VOLUME_INCREMENT = "volume_increment"
CONF_VOLUME_INITIAL = "volume_initial"
CONF_VOLUME_MAX = "volume_max"
+15 -12
View File
@@ -1,5 +1,6 @@
import esphome.codegen as cg
from esphome.components import i2c, sensirion_common, sensor
from esphome.components.const import CONF_NOX_INDEX, CONF_VOC_INDEX
import esphome.config_validation as cv
from esphome.const import (
CONF_ALGORITHM_TUNING,
@@ -35,9 +36,9 @@ CONF_HUMIDITY_SOURCE = "humidity_source"
def validate_sensors(config):
if CONF_VOC not in config and CONF_NOX not in config:
if CONF_VOC_INDEX not in config and CONF_NOX_INDEX not in config:
raise cv.Invalid(
f"At least one sensor is required. Define {CONF_VOC} and/or {CONF_NOX}"
f"At least one sensor is required. Define {CONF_VOC_INDEX} and/or {CONF_NOX_INDEX}"
)
return config
@@ -65,15 +66,17 @@ VOC_SENSOR = _gas_sensor_schema(100)
NOX_SENSOR = _gas_sensor_schema(1)
CONFIG_SCHEMA = cv.All(
cv.rename_key(CONF_VOC, CONF_VOC_INDEX, removed_in="2027.2.0", component="sgp4x"),
cv.rename_key(CONF_NOX, CONF_NOX_INDEX, removed_in="2027.2.0", component="sgp4x"),
cv.Schema(
{
cv.GenerateID(): cv.declare_id(SGP4xComponent),
cv.Optional(CONF_VOC): sensor.sensor_schema(
cv.Optional(CONF_VOC_INDEX): sensor.sensor_schema(
icon=ICON_RADIATOR,
accuracy_decimals=0,
state_class=STATE_CLASS_MEASUREMENT,
).extend(VOC_SENSOR),
cv.Optional(CONF_NOX): sensor.sensor_schema(
cv.Optional(CONF_NOX_INDEX): sensor.sensor_schema(
icon=ICON_RADIATOR,
accuracy_decimals=0,
state_class=STATE_CLASS_MEASUREMENT,
@@ -107,11 +110,11 @@ async def to_code(config):
cg.add(var.set_store_baseline(config[CONF_STORE_BASELINE]))
if CONF_VOC in config:
sens = await sensor.new_sensor(config[CONF_VOC])
if CONF_VOC_INDEX in config:
sens = await sensor.new_sensor(config[CONF_VOC_INDEX])
cg.add(var.set_voc_sensor(sens))
if CONF_ALGORITHM_TUNING in config[CONF_VOC]:
cfg = config[CONF_VOC][CONF_ALGORITHM_TUNING]
if CONF_ALGORITHM_TUNING in config[CONF_VOC_INDEX]:
cfg = config[CONF_VOC_INDEX][CONF_ALGORITHM_TUNING]
cg.add(
var.set_voc_algorithm_tuning(
cfg[CONF_INDEX_OFFSET],
@@ -123,11 +126,11 @@ async def to_code(config):
)
)
if CONF_NOX in config:
sens = await sensor.new_sensor(config[CONF_NOX])
if CONF_NOX_INDEX in config:
sens = await sensor.new_sensor(config[CONF_NOX_INDEX])
cg.add(var.set_nox_sensor(sens))
if CONF_ALGORITHM_TUNING in config[CONF_NOX]:
cfg = config[CONF_NOX][CONF_ALGORITHM_TUNING]
if CONF_ALGORITHM_TUNING in config[CONF_NOX_INDEX]:
cfg = config[CONF_NOX_INDEX][CONF_ALGORITHM_TUNING]
cg.add(
var.set_nox_algorithm_tuning(
cfg[CONF_INDEX_OFFSET],
+3 -3
View File
@@ -1,7 +1,7 @@
sensor:
- platform: sgp4x
i2c_id: i2c_bus
voc:
voc_index:
name: VOC Index
id: sgp40_voc_index
algorithm_tuning:
@@ -11,8 +11,8 @@ sensor:
gating_max_duration_minutes: 180
std_initial: 50
gain_factor: 230
nox:
name: NOx
nox_index:
name: NOx Index
algorithm_tuning:
index_offset: 100
learning_time_offset_hours: 12