SEN6x Series Environmental Sensor
The sen6x sensor platform allows you to use your Sensirion
SEN62,
SEN63C,
SEN65,
SEN66,
SEN68 and
SEN69C Environmental sensor
(datasheet)
sensors with ESPHome.
The I²C Bus is required to be set up in your configuration for this sensor to work.

| Sensor | PM | RH/T | VOC | NOx | CO₂ | HCHO |
|---|---|---|---|---|---|---|
| SEN62 | ✓ | ✓ | ||||
| SEN63C | ✓ | ✓ | ✓ | |||
| SEN65 | ✓ | ✓ | ✓ | ✓ | ||
| SEN66 | ✓ | ✓ | ✓ | ✓ | ✓ | |
| SEN68 | ✓ | ✓ | ✓ | ✓ | ✓ | |
| SEN69C | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
# Example configuration entrysensor: - platform: sen6x id: my_sen6x type: SEN69C pm_1_0: name: PM <1µm Weight concentration pm_2_5: name: PM <2.5µm Weight concentration pm_4_0: name: PM <4µm Weight concentration pm_10_0: name: PM <10µm Weight concentration temperature: name: Temperature humidity: name: Humidity voc_index: name: VOC Index nox_index: name: NOx Index co2: name: Carbon Dioxide formaldehyde: name: FormaldehydeNOTE
The voc and nox keys were renamed to voc_index and nox_index, since
these sensors report Sensirion’s unitless Gas Index rather than a
concentration. The old keys still work but are deprecated and will be removed
in ESPHome 2027.2.0.
Configuration variables
Section titled “Configuration variables”-
type (Optional): The type of sensor. If not specified, sensor type will be auto-detected. If specified, the value will override auto-detection. In case of mismatch, a warning will be provided in the log.
SEN62SEN63CSEN65SEN66SEN68SEN69C
-
pm_1_0 (Optional): The information for the Weight Concentration sensor for fine particles up to 1μm. Readings in µg/m³.
- All options from Sensor.
-
pm_2_5 (Optional): The information for the Weight Concentration sensor for fine particles up to 2.5μm. Readings in µg/m³.
- All options from Sensor.
-
pm_4_0 (Optional): The information for the Weight Concentration sensor for coarse particles up to 4μm. Readings in µg/m³.
- All options from Sensor.
-
pm_10_0 (Optional): The information for the Weight Concentration sensor for coarse particles up to 10μm. Readings in µg/m³.
- All options from Sensor.
-
pmc_0_5 (Optional): The information for the Number Concentration sensor for ultrafine particles up to 0.5μm. Readings in particles/cm³.
- All options from Sensor.
-
pmc_1_0 (Optional): The information for the Number Concentration sensor for fine particles up to 1μm. Readings in particles/cm³.
- All options from Sensor.
-
pmc_2_5 (Optional): The information for the Number Concentration sensor for fine particles up to 2.5μm. Readings in particles/cm³.
- All options from Sensor.
-
pmc_4_0 (Optional): The information for the Number Concentration sensor for coarse particles up to 4μm. Readings in particles/cm³.
- All options from Sensor.
-
pmc_10_0 (Optional): The information for the Number Concentration sensor for coarse particles up to 10μm. Readings in particles/cm³.
- All options from Sensor.
-
temperature (Optional): Temperature.
- All options from Sensor.
-
humidity (Optional): Relative Humidity.
- All options from Sensor.
-
voc_index (Optional): VOC Index. Note: only available with SEN65, SEN66, SEN68 or SEN69C. The sensor will be ignored on unsupported models.
-
algorithm_tuning (Optional): The VOC algorithm can be customized by tuning 6 different parameters. For more details see the SEN6x datasheet.
- index_offset (Optional): VOC index representing typical (average) conditions. Allowed values are in range 1..250. The default value is 100.
- learning_time_offset_hours (Optional): Time constant to estimate the VOC algorithm offset from the history in hours. Past events will be forgotten after about twice the learning time. Allowed values are in range 1..1000. The default value is 12 hours.
- learning_time_gain_hours (Optional): Time constant to estimate the VOC algorithm gain from the history in hours. Past events will be forgotten after about twice the learning time. Allowed values are in range 1..1000. The default value is 12 hours.
- gating_max_duration_minutes (Optional): Maximum duration of gating in minutes (freeze of estimator during high VOC index signal). Zero disables the gating. Allowed values are in range 0..3000. The default value is 180 minutes.
- std_initial (Optional): Initial estimate for standard deviation. Lower value boosts events during initial learning period, but may result in larger device-to-device variations. Allowed values are in range 10..5000. The default value is 50.
- gain_factor (Optional): Gain factor to amplify or to attenuate the VOC index output. Allowed values are in range 1..1000. The default value is 230.
-
All other options from Sensor.
-
-
nox_index (Optional): NOx Index. Note: only available with SEN65, SEN66, SEN68 or SEN69C. The sensor will be ignored on unsupported models.
-
algorithm_tuning (Optional): The NOx algorithm can be customized by tuning 5 different parameters. For more details see the SEN6x datasheet. Unlike VOC, the NOx algorithm has no configurable
std_initial; the device requires it to be 50 and ESPHome always sends that value.- index_offset (Optional): NOx index representing typical (average) conditions. Allowed values are in range 1..250. The default value is 1.
- learning_time_offset_hours (Optional): Time constant to estimate the NOx algorithm offset from the history in hours. Past events will be forgotten after about twice the learning time. Allowed values are in range 1..1000. The default value is 12 hours.
- learning_time_gain_hours (Optional): Time constant to estimate the NOx algorithm gain from the history in hours. Past events will be forgotten after about twice the learning time. Allowed values are in range 1..1000. The default value is 12 hours.
- gating_max_duration_minutes (Optional): Maximum duration of gating in minutes (freeze of estimator during high NOx index signal). Zero disables the gating. Allowed values are in range 0..3000. The default value is 720 minutes.
- gain_factor (Optional): Gain factor to amplify or to attenuate the NOx index output. Allowed values are in range 1..1000. The default value is 230.
-
All other options from Sensor.
-
-
co2 (Optional): The carbon dioxide concentration in ppm. Note: only available with SEN63C, SEN66 or SEN69C. The sensor will be ignored on unsupported models.
- automatic_self_calibration (Optional, boolean): Enable or disable the CO₂ sensor’s automatic self-calibration (ASC). The device enables ASC by default.
- altitude_compensation (Optional, int): Altitude of the sensor location in meters above sea level, used to compensate the CO₂ reading. Allowed values are in range 0..3000. The device ignores it once an ambient pressure is written by either option below.
- ambient_pressure_compensation (Optional, int): Static ambient pressure in hPa used to compensate the CO₂ reading. Allowed values are in range 700..1200.
- ambient_pressure_compensation_source (Optional, ID): A pressure sensor
(in hPa) whose value updates the ambient pressure compensation on every update cycle. Values outside
700..1200 hPa are ignored with a warning. Can be combined with
ambient_pressure_compensation, which then applies until the source reports a valid value. - All other options from Sensor.
Options that are not set are not written to the device.
-
formaldehyde (Optional): The Formaldehyde (HCHO) concentration in ppb. Note: only available with SEN68 or SEN69C. The sensor will be ignored on unsupported models.
- All options from Sensor.
-
address (Optional, int): Manually specify the I²C address of the sensor. Defaults to
0x6B. -
update_interval (Optional, Time): The interval to check the sensor. Defaults to
60s.
NOTE
The sensor needs about a minute “warm-up”. The VOC and NOx gas index algorithm needs a number of samples before the values stabilize.
Binary Sensor
Section titled “Binary Sensor”The sen6x binary sensor platform exposes the device status register as diagnostic entities. The register is
read and cleared once per update cycle while measuring, so each error entity reports whether the problem occurred
since the last update; fan_speed_warning shows the fan’s state at the moment of the read. The entities keep their
last state while the measurement is stopped.
binary_sensor: - platform: sen6x fan_error: name: Fan Error fan_speed_warning: name: Fan Speed Warning rht_error: name: RH/T Error gas_error: name: Gas Error co2_error: name: CO2 Error hcho_error: name: HCHO Error pm_error: name: PM ErrorConfiguration variables
Section titled “Configuration variables”- sen6x_id (Optional, ID): The ID of the sen6x sensor component.
- fan_error (Optional): The fan is switched on but not spinning.
- fan_speed_warning (Optional): The fan speed is more than 10% off target. Not latched; clears by itself.
- rht_error (Optional): Error in the relative humidity and temperature sensor.
- gas_error (Optional): Error in the VOC/NOx gas sensor. Only available with SEN65, SEN66, SEN68 or SEN69C.
- co2_error (Optional): Error in the CO₂ sensor. Only available with SEN63C, SEN66 or SEN69C.
- hcho_error (Optional): Error in the formaldehyde sensor. Only available with SEN68 or SEN69C.
- pm_error (Optional): Error in the particulate matter sensor.
All entities support all options from Binary Sensor. Entities not supported by the detected model are ignored with an error in the log.
Actions
Section titled “Actions”The measurement can be controlled and maintenance functions triggered from automations. On the SEN6x family, fan cleaning and the SHT heater only work while the measurement is stopped, and the device needs wait time after each command (1400 ms after stop, 10 s after fan cleaning, 20 s after the heater). Commands sent too early are ignored with a “Device busy” warning.
sen6x.start_measurement Action
Section titled “sen6x.start_measurement Action”Starts a continuous measurement. The warm-up period applies again before values are published. On SEN63C and SEN69C the measurement must not be restarted within 24 s of a start while the CO₂ sensor is conditioning; ESPHome enforces this.
sen6x.stop_measurement Action
Section titled “sen6x.stop_measurement Action”Stops the measurement and puts the device in idle mode. No values are published while stopped.
sen6x.start_fan_cleaning Action
Section titled “sen6x.start_fan_cleaning Action”Runs the fan at maximum speed for 10 seconds to blow out accumulated dust. Only accepted in idle mode.
sen6x.activate_sht_heater Action
Section titled “sen6x.activate_sht_heater Action”Activates the built-in heater of the RH/T sensor for 1 second with 200 mW to reverse creep at high humidity. Only accepted in idle mode.
# Example: fan cleaning via a buttonbutton: - platform: template name: Fan Cleaning on_press: - sen6x.stop_measurement: my_sen6x - delay: 2s - sen6x.start_fan_cleaning: my_sen6x - delay: 11s - sen6x.start_measurement: my_sen6xWiring
Section titled “Wiring”The sensor has a JST GHR-06V-S 6 pin type connector, with a 1.25mm pitch. The cable needs this connector:

Pins 2 and 5 (GND) and pins 1 and 6 (VDD) are connected internally.
For better stability, the SDA and SCL lines require suitable pull-up resistors.
See Also
Section titled “See Also”- Sensor Filters
- Sen5x Series Environmental sensor
- Absolute Humidity
- SDS011 Particulate Matter Sensor
- PMSX003 Particulate Matter Sensor
- CCS811 eCO_2 and Volatile Organic Compound Sensor
- SCD4X CO₂, Temperature and Relative Humidity Sensor
- SPS30 Particulate Matter Sensor
- SGP40 Volatile Organic Compound Sensor and SGP41 VOC and NOx Sensor
- API Reference: sen6x.h