SGP40 vs SGP41: VOC vs VOC + NOx for ESP32/Home Assistant

Quick Summary (TL;DR):
The SGP40 and SGP41 are Sensirion metal-oxide gas sensors designed for indoor-air-quality monitoring with ESP32, ESPHome and Home Assistant. The biggest difference is simple: SGP40 measures VOC behaviour only, while SGP41 adds a second sensing pixel for oxidizing gases, especially NOx. Both use I²C address 0x59, both need continuous 1 Hz sampling for the Gas Index Algorithm, both work best with real temperature/humidity compensation, and both report a unitless Gas Index rather than a true ppm/ppb concentration. The VOC Index is normally interpreted relative to recent history, with typical conditions mapped around 100; values above 100 indicate more VOC activity than the recent background, while lower values indicate cleaner-than-recent-background conditions. The SGP41 adds a NOx Index that reacts mainly to oxidizing gases such as NO₂/O₃ and can reveal combustion-related indoor-air events that an SGP40 cannot distinguish. For a normal room, bedroom, office or air-purifier trigger, SGP40 is the best-value choice. For a kitchen, gas-cooking environment, garage-adjacent room, urban-air monitor or more complete IAQ station, SGP41 is the better sensor. Neither sensor measures real CO₂, PM2.5 or a specific VOC species, so a complete air-quality node may also use SHT45 for temperature/humidity, SCD40/SCD41 for true CO₂ and PMS5003/SEN6x for particles.

Materials You’ll Need

ItemWhy you need it
ESP32 development boardRuns ESPHome/Arduino and the Gas Index processing
SGP40 breakoutVOC-only option
SGP41 breakoutVOC + NOx option
SHT40/SHT45 temperature-humidity sensorRecommended real compensation source
USB cable + stable power supplyContinuous operation is preferable for Gas Index learning
Dupont wiresI²C connections
BreadboardPrototype wiring
Ventilated enclosureLets room air reach the gas sensor without trapping heat
Home Assistant + ESPHomeLocal logging, graphs and automations

For a new build, the most useful combinations are ESP32 + SGP40 + SHT45 for a strong VOC monitor, or ESP32 + SGP41 + SHT45 when NOx information is also valuable. The SHT45 can share the same I²C bus.

SGP40 vs SGP41 at a Glance

FeatureSGP40SGP41
VOC sensingYesYes
NOx / oxidizing-gas sensingNoYes
VOC Index1–500 / commonly presented 0–5001–500 / commonly presented 0–500
NOx IndexNo1–500
Raw gas channelsSRAW_VOCSRAW_VOC + SRAW_NOX
I²C address0x590x59
I²C speed100 / 400 kHz100 / 400 kHz
Bare-chip supply1.7–3.6 V1.7–3.6 V
Average operating current~2.6 mA class~3.0 mA class
Response τ63%<10 s VOC<10 s VOC; NOx channel also event-oriented
On-chip humidity compensation inputYesYes
ESPHome platformsgp4xsgp4x
Best useGeneral VOC / odour / ventilation monitoringVOC + combustion/oxidizing-gas awareness

The Most Important Point: These Sensors Do Not Output ‘VOC ppm’

SGP40 and SGP41 are often sold with descriptions that make them sound like laboratory gas analysers. They are not. They are broadband metal-oxide gas sensors whose raw resistance changes in response to mixtures of gases.

Sensirion therefore recommends processing the raw signal with its Gas Index Algorithm rather than pretending the sensor can uniquely convert a mixed indoor atmosphere into one true VOC concentration.

SGP40 raw response
      ↓
Sensirion Gas Index Algorithm
      ↓
VOC Index

SGP41 raw VOC + NOx responses
      ↓
VOC + NOx Gas Index Algorithms
      ↓
VOC Index + NOx Index

This is exactly why current ESPHome renamed the old configuration keys voc and nox to voc_index and nox_index: the values are unitless indices, not gas concentrations.

What the VOC Index Actually Means

Sensirion’s VOC Index is designed to behave more like a human nose than a conventional concentration meter. It learns the normal chemical background of the room and reports current VOC conditions relative to that recent history.

VOC Index ≈ 100
→ typical recent VOC background

VOC Index > 100
→ more VOC activity than recent average

VOC Index < 100
→ cleaner than recent average / fresh-air event

The algorithm uses a moving learned baseline and adapts its gain to typical events. That makes the same scale useful in different rooms even though one room may have more permanent off-gassing than another.

The downside is equally important: a VOC Index of 200 does not mean “twice as many ppm” as a VOC Index of 100. It is a relative indoor-air-quality signal.

What Counts as a VOC Event?

  • Cooking fumes
  • Cleaning products
  • Perfume and deodorant
  • Paints and solvents
  • New furniture / flooring / adhesives
  • Alcohol-based products
  • Human breath and occupancy-related organics
  • Combustion by-products
  • Off-gassing plastics and materials

Because SGP40 is broadband, it reacts to many reducing gases and VOC mixtures. It cannot tell Home Assistant “this spike was ethanol” or “this is formaldehyde.” It tells you that the room’s VOC environment has changed.

What the SGP41 Adds: A Dedicated NOx / Oxidizing-Gas Pixel

SGP41 contains an additional sensing element that responds to oxidizing gases. In indoor air, the most relevant group is usually nitrogen oxides, especially NO and NO₂, although the sensor can also respond to gases such as ozone.

That second channel is the entire reason to buy SGP41 over SGP40.

SGP40
└─ VOC pixel

SGP41
├─ VOC pixel
└─ NOx / oxidizing-gas pixel

The NOx Index is especially useful where combustion can occur or outdoor urban pollution can enter the room.

Where NOx Comes From Indoors

  • Gas hobs and ovens
  • Gas heaters / unflued combustion appliances
  • Vehicle exhaust entering from roads or garages
  • Outdoor urban pollution entering through windows/ventilation
  • Other combustion sources

A gas cooker is one of the clearest SGP41 use cases because cooking can create both VOC and NOx events. SGP40 sees the VOC side; SGP41 gives you another independent signal that can react to the oxidizing-gas component.

The NOx Index Is Also Not a True NO₂ ppm/ppb Meter

The SGP41 datasheet characterises the NOx pixel using NO₂ in clean air, but Sensirion explicitly recommends the NOx Index for real-world indoor use rather than treating the raw MOX response as a precise concentration measurement.

So this is wrong:

NOx Index 100 = 100 ppb NO2   ← WRONG

The correct interpretation is: the NOx Index is a processed indicator of oxidizing-gas conditions relative to the sensor’s learnt environment and algorithm behaviour.

SGP40 vs SGP41 for a Kitchen

Winner: SGP41.

A kitchen is exactly where the extra channel can add information. Frying, baking and cleaning can produce large VOC events; a gas cooker can also create nitrogen oxides. The two indices can therefore behave differently during the same cooking session.

That does not let SGP41 identify the recipe or gas species, but it gives Home Assistant a richer air-quality picture and can improve extractor-fan/ventilation automations.

SGP40 vs SGP41 for a Bedroom

Usually SGP40.

In a bedroom, the more valuable measurements are often CO₂, temperature and humidity. VOC monitoring is useful for perfumes, cleaning products, furniture off-gassing and general IAQ trends, but dedicated NOx sensing is usually less critical unless the room is close to heavy traffic or a combustion source.

A strong bedroom node could therefore be:

SCD41 → real CO2
SHT45 → temperature + humidity
SGP40 → VOC Index

SGP40 vs SGP41 for Urban Apartments

SGP41 becomes more attractive.

If windows face a busy road, outdoor NOx pollution can enter the building. A NOx-sensitive channel can then provide useful trend information alongside particles and VOCs.

For that environment, a more complete node could combine SGP41 with a PM2.5 sensor and CO₂ sensor rather than expecting one gas sensor to represent every air-quality problem.

SGP40 vs SGP41 for Air Purifier Control

For a basic activated-carbon/air-purifier fan trigger, SGP40 is often enough. Sensirion specifically positions SGP40 for air treatment devices and gradual fan control based on VOC Index.

SGP41 is useful when the purifier/ventilation strategy should also react to oxidizing-gas events. Remember that a normal HEPA filter removes particles, not gases; VOC/NOx removal depends on activated carbon or other gas-treatment media and ventilation.

Both Sensors Need Continuous 1 Hz Measurement

This is one of the most important implementation details. The SGP4x Gas Index workflow expects the sensor to be sampled at approximately 1 Hz.

ESPHome handles this internally. Even if Home Assistant is updated only every 30 or 60 seconds, ESPHome continues to drive the SGP4x sensor once per second so the algorithm sees the continuous data stream.

Sensor measurement: 1 sample / second
Home Assistant publish: e.g. every 30–60 seconds

These are NOT the same interval.

This is a good design because Home Assistant does not need 86,400 VOC updates per day, but the Gas Index Algorithm benefits from continuous samples.

Why Deep Sleep Is a Poor Fit

SGP40/SGP41 are not ideal for a node that wakes every five minutes, takes one reading and immediately sleeps. The sensor and algorithm learn the environment over time, and meaningful Gas Index performance depends on continuous operation/history.

If battery life is critical, choose the architecture carefully. For a mains-powered room-air monitor, keeping the ESP32 and SGP4x running continuously is the simplest and most reliable design.

Startup and Learning Time

A newly powered gas sensor should not be treated as fully settled immediately. Sensirion specifies a switch-on period and the VOC algorithm goes through a fast initial adaptation before longer-term learning stabilises the baseline.

Practical Home Assistant rule:

First few minutes → useful for obvious events, but still initializing
First ~1–2 hours → baseline adapting quickly
Longer operation → increasingly representative room history

Do not calibrate thresholds based on the first five minutes after flashing a new node.

ESPHome Baseline Storage

Current ESPHome can store and restore the Gas Index algorithm baseline. This reduces the “start from zero knowledge” effect after a normal reboot.

The default store_baseline: true is normally what you want for a permanently installed air-quality node.

Baseline storage does not magically preserve every second of historical context, but it improves restart behaviour and avoids unnecessary relearning compared with discarding the algorithm state each time.

Temperature and Humidity Compensation

Metal-oxide gas sensor behaviour changes with ambient humidity and temperature. SGP40 and SGP41 therefore accept humidity/temperature values as inputs to the measurement command so the raw gas signal can be compensated.

ESPHome can use an external sensor such as SHT40/SHT45 as the compensation source.

SHT45 temperature ─┐
                  ├→ SGP4x compensated measurement
SHT45 humidity ────┘

If no valid compensation source is available, ESPHome can fall back to reasonable default conditions. That is convenient, but a real nearby temperature/humidity sensor is better when the room varies significantly.

Why SHT45 Is a Particularly Good Companion

SHT45 is accurate, fast and uses I²C. It can share the same SDA/SCL pins as SGP40/SGP41 because the addresses are different.

ESP32 I2C bus
GPIO21 SDA ─────────┬─ SHT45 (0x44)
GPIO22 SCL ─────────┴─ SGP40/SGP41 (0x59)

This gives one ESP32 node temperature, humidity, VOC Index and — with SGP41 — NOx Index using only two GPIOs.

Wiring to ESP32

SGP40 / SGP41ESP32 (typical classic DevKit)Note
VIN/VCC3.3 VSafest universal choice; check breakout-board regulator/level shifter if using VIN
GNDGNDCommon ground
SDAGPIO21Example I²C SDA
SCLGPIO22Example I²C SCL

The bare SGP40/SGP41 chip is a 1.7–3.6 V device. Some breakout boards advertise 5 V because the board includes regulation/level shifting. Do not assume every anonymous module does. Powering the breakout from 3.3 V is the safest default for ESP32.

Both sensors use fixed I²C address 0x59, so an SGP40 and SGP41 cannot normally share the same I²C bus simultaneously without a multiplexer. In practice you would choose one, not install both.

ESPHome 2026 Configuration: Important Key Rename

ESPHome 2026.8 renamed the SGP4x sensor keys from voc/nox to voc_index/nox_index.

The old names currently warn and auto-migrate, but ESPHome plans to remove them in 2027.2.0. For a new article/configuration, use the new names now.

ESPHome Configuration: SGP40 Only

i2c:
  sda: GPIO21
  scl: GPIO22
  scan: true

sensor:
  - platform: sgp4x
    voc_index:
      name: "Room VOC Index"
    update_interval: 30s
    store_baseline: true

ESPHome auto-detects whether the connected SGP4x device is SGP40 or SGP41. If an SGP40 is detected, there is no NOx channel.

ESPHome Configuration: SGP41 VOC + NOx

i2c:
  sda: GPIO21
  scl: GPIO22
  scan: true

sensor:
  - platform: sgp4x
    voc_index:
      name: "Room VOC Index"
    nox_index:
      name: "Room NOx Index"
    update_interval: 30s
    store_baseline: true

ESPHome Configuration: SGP41 + SHT45 Compensation

i2c:
  sda: GPIO21
  scl: GPIO22
  scan: true

sensor:
  - platform: sht4x
    temperature:
      name: "Room Temperature"
      id: room_temperature
    humidity:
      name: "Room Humidity"
      id: room_humidity
    precision: High
    update_interval: 30s

  - platform: sgp4x
    voc_index:
      name: "Room VOC Index"
    nox_index:
      name: "Room NOx Index"
    compensation:
      temperature_source: room_temperature
      humidity_source: room_humidity
    update_interval: 30s
    store_baseline: true

This is the configuration I would use for an SGP41 Home Assistant node unless another good temperature/humidity sensor is already present.

SGP41 NOx Conditioning

SGP41 has an extra startup step for its NOx sensing pixel. The device performs a short NOx conditioning period before normal dual-channel measurement.

Current ESPHome handles that automatically; its SGP4x implementation runs the NOx conditioning command for the first approximately 10 seconds before switching to the normal SGP41 VOC+NOx measurement command.

You therefore do not need a Home Assistant automation or special startup script just to condition the NOx pixel.

How Fast Do SGP40/41 React?

Sensirion specifies a VOC response time below roughly 10 seconds τ63% under test conditions. That means the sensor element itself can react quickly to a sudden gas event.

The Gas Index output also contains algorithm dynamics, baseline learning and filtering. So the chart you see in Home Assistant is intentionally not the same as simply plotting raw MOX resistance.

Why Raw Values Are Usually Less Useful

The raw SRAW signal is primarily valuable for testing, algorithm research and low-level integration. For normal Home Assistant automations, the processed VOC/NOx Indices are easier to interpret and more stable across changing background conditions.

Raw SRAW value → sensor physics / engineering
Gas Index      → application / automation signal

VOC Index Thresholds for Home Assistant

Because VOC Index is adaptive, thresholds should be treated as control heuristics rather than health-limit concentrations.

VOC Index behaviourPractical interpretation
Around 100Typical recent background
Below 100Cleaner than recent background
120–150+Noticeable increase / possible event
200+Strong VOC event relative to room history
Very high spikesCooking, cleaning, solvents, perfume or other major chemical event likely

Sensirion gives examples of using a fixed VOC Index threshold such as 150 to trigger stronger air-purifier operation. Your best threshold depends on the room and automation objective.

NOx Index Thresholds

NOx Index should also be used as an event/condition indicator rather than converted into a fictional ppb value.

For a kitchen extractor automation, the useful question is not “is this exactly 83 ppb NO₂?” but “has the oxidizing-gas condition risen far above normal during gas cooking?”

Sensirion’s NOx Index documentation illustrates fixed action thresholds as a valid use pattern. Before automating, observe several days of your own Home Assistant history and identify the room’s normal behaviour.

A Good Home Assistant Dashboard

  • VOC Index
  • NOx Index (SGP41 only)
  • Temperature
  • Relative humidity
  • CO₂ if an SCD4x sensor is present
  • PM2.5 if a particle sensor is present
  • 24-hour history graph

A single “Air Quality = Good/Bad” badge hides too much information. Keeping the individual signals visible makes it much easier to understand what is happening.

Example Home Assistant Automation: VOC Ventilation

alias: Ventilate on high VOC
trigger:
  - platform: numeric_state
    entity_id: sensor.room_voc_index
    above: 180
    for: "00:02:00"
action:
  - service: fan.turn_on
    target:
      entity_id: fan.air_purifier
mode: restart

The delay prevents one short perfume/cleaner spike from repeatedly toggling the fan.

Example Automation: Kitchen NOx Alert

alias: Kitchen oxidizing gas alert
trigger:
  - platform: numeric_state
    entity_id: sensor.kitchen_nox_index
    above: 150
    for: "00:01:00"
action:
  - service: fan.turn_on
    target:
      entity_id: fan.kitchen_extractor
mode: restart

Do not copy 150 blindly as a health threshold; it is an automation example. First observe your own SGP41 history and tune the threshold to the desired response.

Can SGP40 or SGP41 Measure CO₂?

No.

Neither sensor contains a true CO₂ measurement cell. A rise in human occupancy can influence VOCs, but VOC is not a substitute for carbon dioxide.

Need real CO2 → SCD30 / SCD40 / SCD41
Need VOC trend → SGP40 / SGP41
Need NOx trend → SGP41

This distinction is important for ventilation. CO₂ is excellent for occupancy/ventilation load; VOC/NOx detect different chemical/combustion events.

Can SGP41 Replace a PM2.5 Sensor?

No. Gas sensors and particle sensors measure different pollutants.

SGP41 → gases
PMS5003 / SEN5x → airborne particles

Frying food can produce both gas and particle events, but one sensor cannot infer the other reliably.

Can SGP41 Detect Carbon Monoxide?

Do not use SGP41 as a life-safety carbon-monoxide alarm. MOX sensors can have cross-sensitivities, but SGP41 is not a certified CO alarm and its VOC/NOx Index outputs are not a calibrated CO concentration.

For life safety, use a certified CO alarm designed for that purpose.

Can SGP41 Detect Natural-Gas Leaks?

Do not use it as a certified combustible-gas safety detector. It may react to some gas mixtures, but that is not the same as guaranteed methane/LPG leak detection at a defined concentration.

SGP40 vs BME688

Both are MOX-based air-quality approaches, but the ecosystems are different.

FeatureSGP40BME688
VOC behaviourYes, VOC IndexYes via gas resistance/BSEC2
NOx-specific channelNoNo dedicated NOx channel
Temperature/humidityNeeds external sensorBuilt in
PressureNoBuilt in
Gas classification experimentsNot the main focusBME AI-Studio / heater profiles
Simple Home Assistant VOC nodeVery strongGood, but more algorithm stack

If you want a straightforward high-quality VOC Index plus an accurate SHT45, SGP40 is extremely attractive. If you want pressure and Bosch’s advanced gas-scanning/classification ecosystem, BME688 is more interesting.

SGP41 vs BME688

SGP41 has one decisive advantage for this comparison: a dedicated oxidizing-gas / NOx pixel. BME688 offers richer environmental sensing and programmable gas-scanning, but it does not simply expose the same dedicated NOx Index channel.

For a kitchen or urban-air-quality node where combustion-related gas trends matter, SGP41 has a very clear purpose.

SGP41 vs SEN55 / SEN65 / SEN66

Sensirion’s SEN5x/SEN6x modules integrate more sensors into one larger package. Depending on model they can combine particles, humidity, temperature, VOC, NOx and — in newer SEN6x models — CO₂/formaldehyde.

Choose SGP41 when you are building a small custom PCB/node and only need the gas channels. Choose an integrated SEN module when you want a complete calibrated air-quality platform and do not mind the larger size/cost.

Power Consumption

SensorTypical operating current classPractical view
SGP40~2.6 mA averageLow for a continuously heated MOX gas sensor
SGP41~3.0 mA averageSlightly higher because of dual gas sensing

For a USB-powered Home Assistant node, this difference is negligible. For battery power, the bigger issue is the need for continuous 1 Hz operation and algorithm history, not the extra fraction of a milliamp between the sensors.

Enclosure Design

The gas sensor must exchange air with the room. A sealed enclosure destroys response time and can trap heat/contaminants around the sensor.

  • Use ventilation openings close to the SGP4x sensor.
  • Keep the sensor away from the ESP32 antenna and warm regulators where practical.
  • Do not place it directly in the exhaust of a fan unless that is intentional.
  • Avoid adhesive/silicone vapours close to the sensor during assembly.
  • Do not spray conformal coating over the gas sensor opening.
  • Keep condensation and liquid water away from the sensor.

For a comparison between rooms, enclosure geometry should be similar. A sensor behind tiny slots will respond more slowly than the same sensor in open airflow.

Placement in a Room

For general indoor-air monitoring, place the sensor where it samples representative room air — not immediately beside an open window, extractor outlet, perfume shelf or cooker unless the project specifically targets that source.

For a kitchen extractor controller, closer placement to the cooking zone can be useful. For a whole-room IAQ trend sensor, a more representative wall/shelf location is better.

Common Problem: VOC Index Stays Around 100

That can be perfectly normal. The VOC Index intentionally maps the learnt recent background toward its typical offset. If the room chemistry is stable, a value near 100 is expected rather than evidence that the sensor is “stuck.”

Test with a temporary, safe VOC event such as alcohol vapour at a reasonable distance — do not pour liquid onto the sensor — and watch whether the index responds.

Common Problem: VOC Index Changes After Reboot

A reboot interrupts the continuous algorithm history. Keep store_baseline: true and avoid unnecessary power cycling. Expect some readjustment after long outages or when moving the sensor to a completely different room.

Common Problem: NOx Index Is Missing

If ESPHome detects an SGP40, the NOx entity is ignored because the hardware does not contain the second pixel. Check the actual breakout/module marking and the ESPHome logs.

Also use the current nox_index: key on ESPHome 2026.8+ rather than relying on the deprecated nox: spelling.

Common Problem: I²C Scanner Finds Nothing

  • Confirm 3.3 V and GND.
  • Check SDA/SCL are not swapped.
  • Look for address 0x59.
  • Check breakout-board pin labels — some use VIN/3V3 differently.
  • Keep I²C wiring short during testing.
  • Make sure pull-ups exist; most breakouts include them.

Common Problem: Readings React to Humidity Changes

Humidity affects MOX sensing chemistry. That is why the SGP4x measurement command accepts humidity/temperature compensation.

If the project already has an SHT45, feed it into ESPHome’s compensation: block. This will not remove every environmental interaction, but it improves robustness compared with fixed default conditions.

Common Problem: Very High Reading After Cleaning

Cleaning products are a classic VOC source. A large spike after using alcohol, sprays or solvents may be exactly what the SGP40/41 is supposed to detect.

Do not “calibrate it away” immediately. Look at how the index recovers after ventilation and compare the event with your normal room baseline.

Common Problem: Sensor Is Hot

The SGP4x family uses a temperature-controlled micro-hotplate as part of the sensing principle. Some heat generation is normal. The sensor is designed for continuous operation within its specifications.

The relevant concern is enclosure heat affecting a nearby temperature sensor. Place SHT45 far enough away on the PCB or near a separate ventilation opening so it measures room air rather than the SGP4x/ESP32 heat plume.

Should You Tune the Gas Index Algorithm?

ESPHome exposes advanced tuning parameters such as index offset, learning time, gating duration and gain factor.

For most Home Assistant users: leave them at defaults.

Tuning is useful when designing a specific air purifier/HVAC product and validating its behaviour over controlled test events. Changing parameters just because the graph “looks too flat” can make device-to-device comparisons worse.

What ‘Baseline’ Means Here

The baseline is not a factory statement that “clean air equals exactly X ohms.” Indoor rooms always contain some VOC background. The algorithm learns what is typical for the current environment and uses that as a reference.

This is why moving the same SGP40 from a bedroom to a workshop can require time before the index becomes well adapted to the new chemical background.

Best Sensor for Home Assistant

Use caseRecommended sensor
Normal bedroom/living room VOC trackingSGP40
Kitchen with gas cookingSGP41
Urban apartment near trafficSGP41
Air-purifier VOC triggerSGP40
More complete gas-trend monitorSGP41
Lowest cost / simplestSGP40
Need actual CO₂Neither — add SCD40/SCD41
Need PM2.5Neither — add PMS5003/SEN5x/SEN6x

Is SGP41 Worth the Extra Cost?

Yes, if you have a reason to care about combustion/oxidizing-gas events.

For a kitchen, gas-heated space, garage-adjacent room or urban-pollution monitor, the second channel gives genuinely different information.

No, if all you want is a general VOC/odour trend. The SGP40 already provides the same core VOC Index architecture at lower cost and slightly lower power.

My 2026 Recommendation

SGP40 = best value VOC monitor
SGP41 = best compact VOC + NOx monitor

Add SHT45 = better humidity/temperature compensation
Add SCD41 = real CO2
Add PMS5003/SENx = particulate matter

For a simple Home Assistant room sensor, I would build ESP32 + SGP40 + SHT45. For a kitchen or higher-end air-quality station, I would choose ESP32 + SGP41 + SHT45.

The biggest mistake is buying SGP41 because it has “more gases” and then treating its outputs as laboratory ppm measurements. Its strength is not precise chemical identification. Its strength is robust, continuous, relative detection of VOC and oxidizing-gas events that can drive useful ventilation and air-treatment automations.

Related ESP32 Guides

Datasheets & External Resources

All manufacturer/framework references are collected here so the main article keeps readers inside esp32.co.uk.

Share your love