Inspiration

Germans "Stoßlüften": open the window wide for a few minutes. But nobody knows how many minutes. Too short and the air stays stale, too long and the room freezes. We wanted a sensor that tells you, without a camera or microphone.

What it does

An ESP32-C3 sensor node measures temperature, humidity, pressure (BME280, DHT11) and relative air quality (MQ gas sensor) every 5 seconds. A buzzer raises gas alarms and plays a funny melody for poor air, all on the device. Only plain numbers leave the room.

A Python room service runs a live dashboard and a ventilation model that detects an open window and predicts the temperature after 5, 10 and 20 minutes of airing. An AI agent on Nebius Token Factory, with NVIDIA Nemotron 3 Super as primary model, reads the situation and uses tools: buzzer, announcements, web search (Tavily), dashboard insights and phone push (ntfy). You can also ask the room questions. Answers come from live readings only.

How I built it

ESP32-C3 firmware (PlatformIO/Arduino), Python/aiohttp service with SSE dashboard, OpenAI-compatible tool calling on Nebius with a model fallback chain (Nemotron, then DeepSeek-V4 Flash) and a rule-based fallback without any key. Outdoor data from Open-Meteo. Home Assistant add-on included. We benchmarked six cheap Nebius models on four agent scenarios (table in the README).

Challenges I ran into

The MQ heater warms the board (temperature corrected by an offset), the MQ sensor is relative, not ppm, and the ESP32 only does 2.4 GHz Wi-Fi.

Accomplishments that I am proud of

getting all the wiring into a reasonably stylish and compact case, and calibrating the temperature sensors

What I learned

to come from a rough idea to an working hardware gadget in 2 days

What's next for Stoßlüften_Esp

Home Assistant voice announcements and CO2 sensing.

Built With

  • aiohttp
  • arduino
  • elevenlabs
  • esp32-c3
  • hardware
  • home-assistant
  • nebius-token-factory
  • ntfy
  • nvidia-nemotron
  • open-meteo
  • platformio
  • python
  • tavily
Share this project:

Updates

Submission history