Sensirion's SEN6x modules measure particulate matter, humidity and temperature, and depending on the variant also VOC, NOx, CO2 and formaldehyde. ESPHome's sen6x component already reads those values. Four pull requests by Brandon Harvey (bharvey88), merged between 20:41 and 23:34 UTC on 17 October 2026, add most of the settings the modules offer. Together with a fifth merged on 14 October, they split an earlier large pull request (#14375) by mebner86 into smaller pieces. All five are in the development branch for ESPHome 2026.11.
CO2 settings (SEN63C, SEN66, SEN69C)
The co2 sensor gets automatic_self_calibration, altitude_compensation in metres and ambient_pressure_compensation in hPa. Instead of a fixed pressure, you can point ambient_pressure_compensation_source at another pressure sensor, and the component sends its reading to the module on every polling cycle. On a variant without a CO2 sensor the settings are skipped and setup logs a single error. The author tested that path on a SEN65, and a SEN69C user reported the CO2 settings working.
Particle counts
New sensors from pmc_0_5 to pmc_10_0 report number concentration in particles per cm³, alongside the mass concentration in µg/m³ the component already reported. Every SEN6x variant supports this reading. Key names and units follow the sps30 component.
Fault sensors
A new binary_sensor platform reads the device status register at the start of every update: fan_error, fan_speed_warning, rht_error, gas_error, co2_error, hcho_error and pm_error. They are diagnostic entities with the problem device class. The register is cleared on every read, so each cycle shows whether something went wrong since the previous one, and the status is read even when the measurement read fails. A sensor the detected variant cannot report is disabled at setup.
Temperature and warm-up
temperature_compensation takes an offset, a slope and a time constant, and temperature_acceleration takes the K, P, T1 and T2 parameters from Sensirion's instructions on temperature acceleration and compensation. startup_delay replaces the fixed 60-second warm-up during which readings are discarded, with a limit of one hour. The documentation for this part was still waiting for review on 18 October.
Actions
Since 14 October, automations can also call sen6x.start_measurement, sen6x.stop_measurement, sen6x.start_fan_cleaning and sen6x.activate_sht_heater. Fan cleaning and the heater only work while measurement is stopped. The component enforces the datasheet's waiting times, such as 10 s after fan cleaning and 20 s after the heater, and logs "Device busy" instead of sending a command too early, so a hastily written automation cannot put the module into an invalid state. The example in the pull request stops measurement, waits 2 s, starts fan cleaning, waits 11 s and starts measuring again.
All of it was tested on an ESPHome Starter Kit (ESP32-C6) with a SEN65 module.