Open-source bedroom environment monitor

Measure your bedroom. Sleep better in it

Five sensors, judged against sleep research. When something is off, it tells you the fix.

  • Made for sleep
  • Five sensors
  • Open source, GPLv3
  • Costs less, does more

Bad CO₂ is out of range: open a window

What it measures

Five readings. Each comes with a fix

Judged against what sleep research asks of a bedroom, not office air standards. By day the app only judges CO₂ and noise.

CO₂

≤ 800ppm

Open a window or leave the door ajar

Why this range

Sleep studies see worse sleep from a night average of 1,000 ppm. The range follows ventilation research and Health Canada's residential limit. Sensor: Sensirion SCD41.

Temperature

16–20°C at night

Turn the heating down or use a lighter duvet

Why this range

Sleep efficiency falls above 25 °C. Comfort varies from person to person. Sensor: Bosch BME280.

Humidity

40–60%

Use a humidifier or ventilate

Why this range

Under 30 % dries your throat, over 70 % favours mould. Comfort varies from person to person. Sensor: Bosch BME280.

Light

≤ 1lux asleep

Blackout curtains or a sleep mask

Why this range

Light while you sleep disturbs your body clock. Sensor: Vishay VEML7700.

Noise

≤ 45dB(A)

Earplugs, or close the window

Why this range

Sounds over 45 dB wake the brain even when you don't notice. From the WHO night noise guidelines; the night average should stay near 30 dB. Sensor: SPH0641 microphone.

The app

Sync in the morning. See how the night went

Each night opens with what went wrong and when. Tap a reading for its chart and the research behind the range.

Nights

Sample night, generated · bedtime 23:00, wake 07:00

4008001,0001,400BadStuffy22:0001:0004:0007:00Door shutPassed 1,000 ppm · 01:20Window opened · 05:30

Stuffy night

Over 1,000 ppm for 5 h 30 min, peaking at 1,276 ppm. Leave the door ajar tonight.

Bluetooth to your phone. That's it

No account, no Wi-Fi, no server. Nobody else sees how you sleep.

Judged by your sleep window

From an hour before bed until you wake. By day, only unhealthy CO₂ or noise.

One sentence, then the detail

Tap a reading for its full chart and the research behind the range.

Open source

Yours to open, reflash and change

Hardware, firmware and app in one GPLv3 repository. Change the firmware in the Arduino IDE and flash it over USB.

One sample every 60 s by default (10 s to 10 min)

  1. WakeSensors power up in turn
  2. BurstA quick run of readings
  3. FilterOne value with an error estimate
  4. StoreKept on flash until you sync
  5. SleepDeep sleep until the next one
  • SCD41CO₂
  • BME280Temperature, humidity, pressure
  • VEML7700Light
  • SPH0641Noise, A-weighted
  • nRF52840Processor, Bluetooth
  • 1.54″E-ink, 152 × 152
  • LiPo400 mAh, rechargeable
Full specifications
ProcessornRF52840 (Seeed XIAO nRF52840 Plus)
ConnectionBluetooth Low Energy
CO₂Sensirion SCD41
Temperature, humidity, pressureBosch BME280
LightVEML7700
NoiseSPH0641 MEMS microphone, A-weighted
Display1.54″ e-ink, 152 × 152
Storage64 Mb SPI flash
Power400 mAh LiPo, USB-C charging, deep sleep between samples
Sampling1, 5, 10 or 30 min, default 5 min
Firmware updatesOver USB: drag and drop one file
LicenceGPLv3

Temperature and humidity come from a BME280 that is powered only while it measures, so it doesn't warm itself up. There is no VOC sensor: it draws too much current for a battery device and its number is hard to act on.

I wanted data you can act on: high CO₂, open a window; too much light, use a sleep mask; too much noise, try earplugs.From the maker, who started Quiesco in 2026

A calmer bedroom, one reading at a time