The Sensirion SEN55 is a useful all-in-one indoor-air-quality sensor when you need more than a temperature sensor or a basic VOC breakout. Inside one fan-assisted module it measures particulate mass concentration at PM1, PM2.5, PM4 and PM10, temperature and relative humidity, and reports two calculated gas indicators: the VOC Index and NOx Index. An ESP32 with ESPHome can expose all eight values directly to Home Assistant over I²C.
It is particularly interesting for rooms where you want to distinguish cooking particles from a VOC event, operate an air purifier, or compare air quality over the day. It is not a CO₂ sensor, and neither the VOC Index nor the NOx Index is a direct ppm measurement. For actual CO₂ concentration, pair it with a dedicated SCD40, SCD41 or another suitable optical CO₂ sensor.
SEN55 Specifications at a Glance
| Feature | SEN55 |
|---|---|
| Particulate readings | PM1.0, PM2.5, PM4.0 and PM10 mass concentration |
| Particulate units | µg/m³ |
| Gas readings | VOC Index and NOx Index; unitless relative indicators |
| Other readings | Temperature and relative humidity |
| Power supply | 5 V nominal; bare module 4.5–5.5 V |
| Normal running current | About 63 mA average after initial operation; allow up to 110 mA peak |
| ESPHome interface | I²C; default address 0x69 |
| Module connector | Six-pin, 1.25 mm; five signals used in I²C mode |
| Automatic fan cleaning | Normally once a week of uninterrupted measurement operation |
| Typical use | Mains-powered indoor air-quality monitor or purifier feedback |
The SEN55 is substantially more power-hungry than a standalone SHT or SGP gas chip because it contains an optical particle sensor and a fan. Design it as a continuously powered sensor unless you have a specific reason to implement duty cycling.
What SEN55 Measures — and What It Does Not
The four PM values are mass concentrations, expressed in micrograms per cubic metre of air. PM2.5 refers to the estimated mass concentration of particles in the fine-particle size fraction; it is not the number of particles counted. The module combines optical particle measurement and an internal conversion model, so it is useful for trends and control, but not a substitute for a regulatory-grade reference monitor.
The VOC Index reflects changes in volatile-organic-compound-sensitive gas response relative to the sensor’s learned background. A typical VOC Index is centred around 100. A rise above that level signals a stronger response than the recent reference, not “100 ppm VOC”.
The NOx Index reflects changes in oxidising-gas response. Its default learned background is near 1 rather than 100. Both indices are unitless and can change following cooking or exposure to other gas mixtures, but neither identifies a specific chemical or measures a certified NO₂ concentration. Avoid turning them into a toxic-gas alarm or labelling them as ppm.
A useful architecture is therefore: SEN55 for particles and gas-change indicators, plus an optical CO₂ sensor when occupancy/ventilation-related CO₂ is important. Our ESP32 indoor air-quality station demonstrates the separate-sensor approach.
SEN55 Connector Pinout and ESP32 Wiring
The bare SEN55 module uses a six-pin, 1.25 mm connector. Confirm the numbering against the connector’s orientation or the pin labels on your breakout; do not infer pin 1 from wire colour alone.
| Module pin | Function | Classic ESP32 connection |
|---|---|---|
| 1 | VDD | Regulated 5 V |
| 2 | GND | Common ground |
| 3 | SDA | GPIO21; pulled up to 3.3 V |
| 4 | SCL | GPIO22; pulled up to 3.3 V |
| 5 | SEL | Connect to GND to select I²C |
| 6 | NC | Leave unconnected |
The module supply and the I²C logic do not use the same voltage in this arrangement. Power SEN55 at 5 V, but pull SDA and SCL up to 3.3 V so the ESP32 inputs never see a 5 V logic-high. Sensirion lists its I²C interface as 3.3 V compatible. If a breakout already includes I²C pull-ups, inspect where they connect: a breakout that pulls the bus up to 5 V must not be connected directly to ESP32 GPIO without correcting the pull-ups or adding level shifting.
The sensor’s fan and laser need a stable 5 V rail. Do not power the SEN55 from an ESP32’s 3.3 V pin. A small USB wall supply with enough current margin for both boards is usually simpler than a battery arrangement.
Why the SEL Pin Must Be Grounded
The SEN5x family has interface-selection hardware. For the I²C mode supported by ESPHome’s sen5x component, connect SEL (pin 5) to ground (pin 2). If you leave SEL incorrectly configured, a perfectly wired sensor may not appear in the I²C scan at all.
The chip family may offer another communication mode, but the current ESPHome SEN5x integration implements I²C only. Avoid copying UART wiring from a non-ESPHome SEN55 tutorial and expecting the ESPHome component to recognise it.
Minimal ESPHome SEN55 Configuration
Start by getting the sensor visible on I²C. On an original ESP32 DevKit, GPIO21 and GPIO22 are convenient examples, but other valid pins can work through the ESP32 GPIO matrix.
i2c:
sda: GPIO21
scl: GPIO22
scan: true
sensor:
- platform: sen5x
id: sen55_sensor
address: 0x69
update_interval: 10s
pm_1_0:
name: "SEN55 PM1.0"
pm_2_5:
name: "SEN55 PM2.5"
pm_4_0:
name: "SEN55 PM4.0"
pm_10_0:
name: "SEN55 PM10"
temperature:
name: "SEN55 Temperature"
humidity:
name: "SEN55 Humidity"
voc_index:
name: "SEN55 VOC Index"
nox_index:
name: "SEN55 NOx Index"
Current ESPHome documentation uses voc_index and nox_index. Older examples use voc and nox, which are deprecated names. Use the Index names in a new project because the values are not concentration measurements.
Full ESP32 and Home Assistant Configuration
The following creates a normal Wi-Fi ESPHome node using the Native API. Replace the secret names with your own ESPHome secrets.
esphome:
name: living-room-air
friendly_name: Living Room Air
esp32:
board: esp32dev
framework:
type: esp-idf
logger:
api:
encryption:
key: !secret api_encryption_key
ota:
- platform: esphome
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password
i2c:
sda: GPIO21
scl: GPIO22
scan: true
sensor:
- platform: sen5x
id: sen55_sensor
address: 0x69
update_interval: 10s
store_baseline: true
pm_1_0:
name: "PM1.0"
pm_2_5:
name: "PM2.5"
id: indoor_pm25
pm_4_0:
name: "PM4.0"
pm_10_0:
name: "PM10"
temperature:
name: "Air Temperature"
humidity:
name: "Air Humidity"
voc_index:
name: "VOC Index"
nox_index:
name: "NOx Index"
- platform: wifi_signal
name: "WiFi RSSI"
update_interval: 60s
entity_category: diagnostic
- platform: uptime
name: "Device Uptime"
entity_category: diagnostic
This example uses store_baseline: true to preserve the VOC algorithm state over ordinary node restarts. ESPHome limits how often it writes that state to flash; still, continuous mains power is preferable to restarting the device every few minutes. The NOx Index needs its own stabilisation time and should not be treated as a ready-to-use gas concentration immediately at startup.
What to Expect During Startup
Allow the sensor about a minute to warm up after enabling measurement. Particle, humidity and temperature outputs can become available before the gas-index algorithms have learned enough context to produce stable-looking readings. On a brand-new monitor, compare trends over several hours rather than deciding within the first minute that a VOC value is wrong.
Gas index readings depend on the recent background. A high VOC event followed by several hours of normal conditions may give a different index trajectory from the same event immediately after the first boot. That is expected of a relative index: do not create a permanent room-quality score by simply comparing VOC Index values across different rooms without context.
Fan Cleaning and Sensor Lifetime
SEN55 periodically accelerates its fan for about ten seconds to clear dust. ESPHome documents a default automatic-cleaning interval of 604,800 seconds, or one week of uninterrupted operation. Measurements pause briefly while the fan is cleaning.
If you regularly switch the entire SEN55 off, the internal cleaning timer resets. A device that never stays powered for a full week may therefore miss its default periodic cleaning indefinitely. For a continuously installed monitor, leaving the module powered is typically the simplest approach. For a deliberately duty-cycled design, plan and test cleaning rather than assuming it will happen automatically.
You can expose a manual clean button in ESPHome:
button:
- platform: template
name: "Clean SEN55 Fan"
entity_category: diagnostic
on_press:
- sen5x.start_fan_autoclean: sen55_sensor
Run cleaning after installation or servicing if the inlet has accumulated dust; do not mistake the temporary pause in measurements for Wi-Fi instability.
Choose the Enclosure Around Airflow
Unlike a tiny SHT40, SEN55 actively pulls air through an optical chamber. The enclosure must not block the sensor’s inlet or outlet. Leave enough clearance for the actual SEN55 airflow path, and avoid pointing the outlet directly back at the inlet because recirculation changes the sample the instrument is meant to measure.
Keep the sensor away from the ESP32 regulator and other heat sources. SEN55 reports temperature and humidity, but its installation inside a warm box may still need measured thermal compensation. Provide ventilation through the case while protecting the electronics from splashes and condensation.
Position the monitor in representative room air, not beside a cooker hood, humidifier, open window or air purifier exhaust unless that local reading is exactly what you intend to monitor. Avoid direct sunlight, which heats the case, and keep the module accessible for inspection and maintenance.
How Temperature Compensation Works
ESPHome exposes SEN5x temperature_compensation with an offset, a normalized_offset_slope and a smoothing time_constant. These are intended to correct the thermal effects of the finished product design, not to force every module to show the same number as a nearby thermostat.
First put a trustworthy reference sensor in the same air for long enough to equilibrate. If SEN55 stays consistently high because of the housing, correct the ventilation and thermal layout before calculating an offset. ESPHome also provides an acceleration_mode for environments with more rapid thermal changes; the default low setting is suitable for many stationary monitors.
Home Assistant Dashboard: Keep the Units Honest
Arrange the Home Assistant card into three clearly labelled groups. Particles: PM1, PM2.5, PM4 and PM10 in µg/m³. Gas-change indicators: VOC Index and NOx Index with no ppm or µg/m³ suffix. Climate: temperature in °C and humidity in %.
PM2.5 is often the most intuitive particle trace for room air: frying, toasting or dust disturbance may raise it sharply. A gas cleaning product may move VOC Index without producing much PM2.5. Conversely, the particles from an activity need not create a proportionate gas-index event. Keep those signals separate so automations respond to the right phenomenon.
For long-term comparisons, record trends and suitably averaged PM2.5; a single momentary value is not equivalent to a regulatory air-quality metric or a health assessment. Outdoor air entering through a window can improve CO₂ while increasing indoor particles during a pollution event, so ventilation and filtration should not be conflated.
A Sensible PM2.5 Air-Purifier Automation
The following is an example control threshold, not a health limit. It starts a purifier after PM2.5 has remained above a chosen level for ten minutes. Adjust the entities, duration and threshold to the room and purifier. Configure a separate lower threshold and sufficient delay for switching off, so the fan does not chatter.
alias: Start purifier on sustained PM2.5
triggers:
- trigger: numeric_state
entity_id: sensor.living_room_air_pm2_5
above: 25
for: "00:10:00"
conditions:
- condition: state
entity_id: fan.living_room_purifier
state: "off"
actions:
- action: fan.turn_on
target:
entity_id: fan.living_room_purifier
mode: single
Verify the actual Home Assistant entity ID after adding the ESPHome node. For an automation that protects a device or property, do not treat one hobby sensor as the sole safety interlock.
SEN50 vs SEN54 vs SEN55
| Model | PM | Temperature/RH | VOC Index | NOx Index |
|---|---|---|---|---|
| SEN50 | Yes | No | No | No |
| SEN54 | Yes | Yes | Yes | No |
| SEN55 | Yes | Yes | Yes | Yes |
ESPHome can detect the SEN5x model automatically. The nox_index output is only available on a physical SEN55; copying a SEN55 YAML block onto an SEN54 cannot create an NOx channel. Sensirion now also lists SEN65 as a successor product to SEN55. For a new commercial design, check current sensor availability and your ESPHome version’s support for the specific new model rather than assuming identical drivers or pinouts.
SEN55 vs PMS5003 + SGP40
A PMS5003 measures particulate matter while SGP40 offers a relative VOC Index. Add an SHT sensor for temperature/humidity compensation and you have a flexible multi-board architecture. The SEN55 integrates all those broad sensing roles and adds a NOx Index, reducing sensor wiring at the cost of a larger, more expensive single module.
Our existing PMS5003 with ESPHome article covers the lower-cost UART PM option. The SGP40 ESPHome guide covers the separate VOC sensor; our SGP40 vs SGP41 comparison explains the different gas channels.
Neither arrangement directly measures CO₂ unless you also fit a true CO₂ sensor. A VOC-derived eCO₂ estimate is not interchangeable with SCD4x’s optical CO₂ readings.
Troubleshooting SEN55 and ESPHome
| Symptom | What to check first |
|---|---|
| Nothing appears at 0x69 | 5 V supply, shared ground, SDA/SCL, SEL grounded, connector orientation |
| I²C scan works but measurements fail | 5 V rail droop during fan operation, bus pull-ups and wiring length |
| ESP32 behaves erratically after connection | Check whether the breakout pulls SDA/SCL to 5 V |
| NOx entity missing | Verify actual model is SEN55, not SEN54 |
| VOC looks strange immediately after restart | Allow warm-up and gas-index learning; check baseline persistence |
| PM stays nearly zero with a cooking event | Check inlet/outlet airflow and whether the fan is running |
| PM pauses for around 10 seconds | Normal automatic fan cleaning may be in progress |
| Temperature always too high | Case heating, nearby regulator/ESP32 and enclosure airflow |
| Measurements disappear with ESPHome unavailable | Check Wi-Fi, API, device uptime and power before blaming SEN55 |
| Two SEN55s on one I²C bus conflict | Both default to 0x69; use separate I²C buses or a multiplexer |
If you do need multiple identical sensors at 0x69 on one controller, see our TCA9548A I²C multiplexer guide once it is published; each channel can present an independent virtual I²C bus to ESPHome.
When I Would Use SEN55
SEN55 is a strong fit for a permanently powered indoor monitor where you want PM2.5 alongside relative VOC and oxidising-gas trends from one compact sensor subsystem. Its practical benefits are integrated airflow, several PM size fractions, I²C support and built-in fan maintenance.
Use a simpler PMS5003 if you only need particle trends. Add an optical CO₂ sensor if ventilation/occupancy monitoring is a requirement. Spend time on the enclosure, 5 V rail, 3.3 V pull-ups and sensor placement: those will determine whether your carefully written ESPHome YAML produces useful room data.
Official Documentation and Further Reading
- ESPHome SEN5x component — current YAML keys, I²C pinout, baseline and fan-cleaning options.
- Sensirion SEN55 product page — module specifications and successor information.
- Sensirion embedded I²C SEN5x driver — manufacturer pin-assignment reference.
- ESP32 Indoor Air Quality Station — separate PM, VOC and CO₂ sensor architecture.