Vibeleaderboard
Index / tool
Visit github.com
Category
Health & Fitness
Rank
No. 1416Tools index

Previous survey · No. 1421 ·

Pricing
Open Source
Type
TOOL
GitHub
126 stars
Date

About

Build your own open-source CO2 sensor with a ready-to-use TUI — monitor air quality and get alerts when it is time to ventilate.

What it does

Workspace Climate Control is a DIY workstation monitoring system built around an ESP32 and several environmental sensors. Its firmware samples carbon dioxide, temperature, humidity, pressure, light, and volatile compounds, then exposes readings locally over Bluetooth or sends batches over WiFi for remote dashboards and history.

Why it's ranked here

The project covers an unusually complete path from wiring to local display and hosted metrics. Calibration, Bluetooth transport, persistent trends, device diagnostics, and recovery from network failures are present. Documentation gaps around the required sensor set and alert setup keep it from feeling turnkey.

What's good

Local monitoring continues while WiFi reporting runs separately. Network and clock setup use bounded waits, failed initialization gets retried, and repeated sending failures trigger batch cleanup or restart. The firmware also reports heap, signal strength, uptime, and send failures, making remote operation easier to diagnose.

Tradeoffs

You must source components, wire buses and power correctly, flash ESP32 firmware, and perform initial calibration. The minimum-parts table omits the BMP280 and Si7021 devices that the firmware initializes. Remote history requires WiFi and Grafana Cloud credentials, while alerts have no supplied configuration.

How to use it well

Choose it for a hands-on desk sensor where local readings must survive internet outages and long-term trends belong in Grafana. Install the Rust terminal client for daily checks, then add remote reporting when history matters. It does not replace a preassembled monitor or provide ready-made alert automation.

Technical notes+

core/src/main.cpp polls the BH1750, BMP280, Si7021, CCS811, and MH-Z19 on a two-second loop, applies calibration, publishes serialized readings through BLE, and optionally captures Prometheus samples. core/src/ble.cpp defines readable, notifying sensor data plus writable calibration characteristics. core/src/serialize.cpp emits JSON and packs sensor failures into an error bit field. core/src/prometheus.cpp implements bounded WiFi reconnection and SNTP synchronization, TLS remote-write, metric batching, stale-batch resets, and restart escalation. core/src/calibration.cpp persists CO2 calibration state and temperature adjustment through ESP32 Preferences. The embedded CCS811 implementation lives under core/lib/CCS811-master/src/ccs811.cpp.

Observed

Languages
ESP32 firmware is C++; the terminal client is built with the Rust toolchain.
Install surface
The CLI can be built with Cargo, linked into /usr/local/bin, or installed as the co2nsole Cargo package.
Local interface
A text-based terminal interface communicates with the device over Bluetooth Low Energy.
Remote interface
Optional firmware support sends Prometheus remote-write batches to Grafana Cloud over WiFi and TLS.
Hardware target
The build uses an ESP32 with MH-Z19, CCS811, BH1750, BMP280, and Si7021 sensor integrations.
Configuration model
Grafana credentials and WiFi settings are supplied through a gitignored local configuration header.

Read from README.md, core/extra_script.py, core/src/data.h, core/src/ble.cpp, core/src/main.cpp, core/src/serialize.h, core/src/prometheus.h, core/src/i2c_scanner.h, core/src/serialize.cpp, core/src/certificates.h, core/src/prometheus.cpp, core/src/calibration.cpp, core/src/i2c_scanner.cpp, core/lib/CCS811-master/src/ccs811.h, core/lib/CCS811-master/src/ccs811.cpp.

What it can do

  • Monitor real-time CO2 levels

    CO2 sensor dataCurrent CO2 concentration readings

  • Track air quality over time

    Continuous CO2 measurementsHistorical air quality data and trends

  • Send ventilation alerts

    CO2 threshold levelsNotifications when ventilation is needed

  • Display air quality metrics in terminal interface

    Sensor readings and user preferencesText-based user interface with CO2 data visualization

  • Configure CO2 alert thresholds

    User-defined CO2 concentration limitsCustomized alert settings

Tags

co2-sensorhardwaretuihealthworkspace

Tech Stack

CC++PythonRustShell

Comments (0)

No comments yet

Editorially curated, with community endorsements as a secondary signal. Corrections welcome.