
Workspace Climate Control
github.com/dmtrkovalenko/workspace-climate-control- Category
- Health & Fitness
- Rank
- No. 1416Tools index
Previous survey · No. 1421 ·
- Pricing
- Open Source
- Type
- TOOL
- Builder
- dmtrkovalenko
- 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 data → Current CO2 concentration readings
Track air quality over time
Continuous CO2 measurements → Historical air quality data and trends
Send ventilation alerts
CO2 threshold levels → Notifications when ventilation is needed
Display air quality metrics in terminal interface
Sensor readings and user preferences → Text-based user interface with CO2 data visualization
Configure CO2 alert thresholds
User-defined CO2 concentration limits → Customized alert settings
Tags
Tech Stack
Comments (0)
No comments yet
Editorially curated, with community endorsements as a secondary signal. Corrections welcome.