Skip to content
Get started

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.

SEN6x Environmental Sensor

SensorPMRH/TVOCNOxCO₂HCHO
SEN62✓✓
SEN63C✓✓✓
SEN65✓✓✓✓
SEN66✓✓✓✓✓
SEN68✓✓✓✓✓
SEN69C✓✓✓✓✓✓
# Example configuration entry
sensor:
- 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: Formaldehyde

NOTE

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.

  • 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.

    • SEN62
    • SEN63C
    • SEN65
    • SEN66
    • SEN68
    • SEN69C
  • pm_1_0 (Optional): The information for the Weight Concentration sensor for fine particles up to 1μm. Readings in µg/m³.

  • pm_2_5 (Optional): The information for the Weight Concentration sensor for fine particles up to 2.5μm. Readings in µg/m³.

  • pm_4_0 (Optional): The information for the Weight Concentration sensor for coarse particles up to 4μm. Readings in µg/m³.

  • pm_10_0 (Optional): The information for the Weight Concentration sensor for coarse particles up to 10μm. Readings in µg/m³.

  • pmc_0_5 (Optional): The information for the Number Concentration sensor for ultrafine particles up to 0.5μm. Readings in particles/cm³.

  • pmc_1_0 (Optional): The information for the Number Concentration sensor for fine particles up to 1μm. Readings in particles/cm³.

  • pmc_2_5 (Optional): The information for the Number Concentration sensor for fine particles up to 2.5μm. Readings in particles/cm³.

  • pmc_4_0 (Optional): The information for the Number Concentration sensor for coarse particles up to 4μm. Readings in particles/cm³.

  • pmc_10_0 (Optional): The information for the Number Concentration sensor for coarse particles up to 10μm. Readings in particles/cm³.

  • temperature (Optional): Temperature.

  • humidity (Optional): Relative Humidity.

  • 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.

  • 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.

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 Error
  • 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.

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.

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.

Stops the measurement and puts the device in idle mode. No values are published while stopped.

Runs the fan at maximum speed for 10 seconds to blow out accumulated dust. Only accepted in idle mode.

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 button
button:
- 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_sen6x

The sensor has a JST GHR-06V-S 6 pin type connector, with a 1.25mm pitch. The cable needs this connector:

JST GHR-06V-S 6-pin 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.