Indoor climate

CO₂, RH for schools, offices, museums, wine cellars

Indoor air monitoring covers four sub-cases that share infrastructure (CO₂ NDIR sensor + T/RH probe) but have wildly different thresholds:

  1. Schools and offices — CO₂ as a ventilation proxy.
  2. Museums and instrument storage — RH stability.
  3. Wine cellars — both, on long time-scales.
  4. Indoor cannabis / greenhouses (not regulated, included because we get the question).

Schools and offices — CO₂

CO₂ levels in occupied rooms are the simplest proxy for ventilation adequacy. Outdoor air is ~420 ppm in 2026; comfortable indoor air is < 1000 ppm; > 1400 ppm causes measurable cognitive impairment;

2000 ppm is a sign the room is functionally unventilated.

OpenSense defaults for a climate site labelled school or office:

ok
< 1000 ppm
warn
1000–1400 ppm sustained 15 min
alarm
> 1400 ppm sustained 15 min — open windows or call HVAC

Recommended sensor: Sensirion SCD41 NDIR-based CO₂ + T/RH on an ESP32 (see DIY ESP32). Commercial alternatives: Aranet4 (BLE, needs a gateway), Airthings (proprietary cloud, contact us).

Museums — relative humidity stability

For museum collections and musical instruments, the rate of change of RH matters more than the absolute value. Pianos, wooden furniture, parchment and oil paintings all warp at different rates when humidity swings.

Standard targets (Bizot Group / Smithsonian / V&A guidance):

Object classTarget RHDrift tolerance
Oil on canvas45–55 %± 5 % per month
Wooden furniture45–55 %± 7 % per month
Paper, parchment, books30–50 %± 5 % per month
Photographs (acetate)30–40 %± 5 % per month
Musical instruments (wood)40–55 %± 3 % per week
Iron / steel artefacts< 40 %dryer is better

OpenSense supports a derived_drift channel: max(|RH_now − RH_avg_7d|). Alarms fire when the drift exceeds the configured tolerance, not when the absolute reading is out of range. This is the inverted view museums care about.

ok
Drift < tolerance / 2
warn
Drift > tolerance
alarm
Drift > 2× tolerance — climate system is broken

Wine cellars

Industry consensus for table-wine cellaring:

VariableTargetAcceptableWhy
Temperature12 °C10–15 °CSlow, even ageing
RH70 %60–80 %Cork stays sealed; labels survive
Temp swing< 2 °C / week< 5 °C / weekCork breathes, oxygen ingress
Lightdarkdim, no UV(Not measured by OpenSense yet)

For investment-grade cellaring the constraints tighten by ~30 %; the defaults above are the operational compromise that lets you store cases without sleeve-by-sleeve obsession.

Greenhouse / grow-room

Not regulated. Pure ops:

  • CO₂ enriched to 800–1200 ppm during photoperiod for accelerated growth.
  • RH 50–70 % vegetative, 40–55 % flowering.
  • VPD (vapour pressure deficit) is the modern variable; OpenSense derives VPD from T + RH if you flag a channel as grow_room.

A note on indoor air quality beyond CO₂

We deliberately do not currently support:

  • PM 2.5 / PM 10: there are cheap sensors (Plantower PMS5003 etc.) but the public-health interpretation is tricky and varies by jurisdiction. We will add it once we ship a calibration story.
  • VOC: SGP30/SGP40 sensors are noisy; the calibration drift is too high to alarm on. We can ingest the channel but do not run rules on it.
  • Radon: long-term integration, weeks of measurement, not real-time. Different product category.

Sources