-
-
StormBox: an offline hurricane safety box. It watches your home and tells you what to do, with no internet needed.
-
The phone screen a family sees during a storm. One clear status and the most important instruction first.
-
Ask the box any safety question. A small AI runs fully offline and answers from trusted safety guides.
-
Replaying a real hurricane through the system. The risk score rises and alarms fire just like a live storm.
-
Tested on Hurricane Nicole, a storm the model never saw. The risk score warned hours before the storm’s closest point.
-
Our storm risk model, trained on NOAA hurricane data. You can see exactly why it makes each prediction.
-
The sensors and ESP32 inside the box. Alarms come from fixed rules, never from the AI.
-
Our wind speed sensor. It warns at 39 mph and alarms at hurricane force (74 mph).
Inspiration
Every Floridian knows the moment: the lights go out, the phone drops to one bar, then zero. After a major hurricane, power and cell service can be gone for days, exactly when families need information most. Is this calm the end of the storm, or the eye? Is water coming in while we sleep? Is it too hot to stay inside?
Every smart-home device and AI assistant goes silent the moment the internet does. We wanted the opposite: a device that gets more useful when everything else fails.
What it does
StormBox has three jobs: warn, guide, and help you last.
- Senses the home: air pressure, wind speed (from an anemometer we built ourselves), indoor temperature and humidity, and floor water.
- Sounds the alarm on its own: flood and heat alarms run on the microcontroller with a buzzer. If the hub dies, the box still alarms. The AI never decides an alarm.
- Predicts the storm: a model trained on 20 years of real NOAA hurricane data gives an early-warning risk score. With pressure and wind, it caught every unseen test hurricane about 22 hours before closest approach.
- Reads the storm's phase: falling pressure, a possible eye ("the calm is temporary, stay inside"), and recovery.
- Talks you through it: an offline AI agent explains alarms out loud and answers questions by voice or chat from vetted guides (Ready.gov, CDC, NWS, EPA, FDA, Red Cross), always citing its source.
- Knows what "hot" really means: the NWS heat index ("feels like 112°F, danger level") from indoor readings, which matters when the AC is out.
- Replays real hurricanes: recorded NOAA data from Ian, Nicole, Idalia, Helene and Milton, with a live risk curve, a timeline you can speed up or rewind, and the decision path behind every score.
How we built it
Sense → Understand → Explain → Show. A self-contained sensor node keeps the house safe; an edge AI hub makes it smart.
The hardware node
- An ESP32 reads a barometer, temperature/humidity sensor, floor-water sensor, and our homemade anemometer, which counts rotations with a Hall-effect sensor.
- Alarm rules (with hysteresis so they don't flicker) and the buzzer run on the microcontroller, so safety never depends on anything else.
- The node talks to the hub over Wi-Fi with MQTT (Mosquitto, with a "last will" so the hub knows instantly if the box dies), with USB serial as a fallback.
The edge hub
A Python service keeps the live box state, logs to SQLite, runs the storm logic and replay, and serves a FastAPI + WebSocket dashboard (family and engineer views). Every AI model runs locally, with no network calls.
Storm risk model on real NOAA data
- Data: hourly pressure and wind from ~20 NOAA buoys and coastal stations around Florida (2005–2025), labeled with NOAA's HURDAT2 storm tracks: "a storm center passes within 150 km in the next 12 hours."
- Honest testing: trained on 2005–2018, threshold tuned on 2019–2021 (at most one false alarm per week), tested on 2022–2025 hurricanes it never saw.
- Explainable: we compared logistic regression with decision trees and shipped small depth-3 trees. They had far fewer false alarms, and the dashboard highlights the exact path behind every score.
- Sensor failover: three trees (pressure, wind, both). The hub uses whichever matches the sensors still working.
| Model | Unseen storms caught | Median warning | False alarms / week |
|---|---|---|---|
| Pressure + wind | 100% | 22 h | 0.98 |
| Pressure only | 96.8% | 20.5 h | 0.35 |
| Wind only | 96.8% | 15 h | 0.96 |
Pressure-only is our original model on all hours; the other two are compared on hours where both sensors had data. Each tree is ~3 KB and runs in microseconds.
The offline agent and RAG
- Knowledge pack: 15 emergency guides written from Ready.gov, CDC, NWS, EPA, FDA, FoodSafety.gov, Florida Emergency Management and the Red Cross, with exact numbers kept (6 inches of moving water can knock you down; 8 drops of bleach per gallon). 71 sourced chunks.
- Fastest path first: instant alarm explanations, then canned answers, then live sensor and storm tools, and only then RAG: the top guide passages (nomic-embed-text + ChromaDB) plus live readings go to a small local LLM (Llama 3.2 1B, Qwen3 0.6B fallback, via Ollama).
- Guardrails: code routes questions, not the LLM. If no guide matches, it says "I'm not sure" instead of guessing. Every answer cites its source and every step is logged to a trace panel.
Voice
Speech recognition with Whisper (faster-whisper) and speech output with Piper, both fully offline. Every model on the box is an open-weight model from the Hugging Face Hub.
Challenges we ran into
- Our Raspberry Pi died mid-build. We redesigned overnight into a distributed system: a wireless ESP32 sensor node plus an edge AI hub over MQTT. Because the AI layer was modular, almost none of it had to change.
- **Our esp32 was faulty from the start - We replaced the the esp32 with an another model and redesign our pin layouts as well as features based on the capabilities of this new model.
- A sensor went down, so we made the model survive it. When the barometer failed, we trained wind-based and combined models from the NOAA data and built automatic failover.
- Barometers don't read what NOAA reports. NOAA uses sea-level pressure; a box on a table reads lower. Without calibration, the model would show storm risk on a sunny day.
- Small models, real stakes. A 1B model
Built With
- chromadb
- esp32
- fastapi
- html
- javascript
- mosquitto
- mqtt
- numpy
- ollama
- pandas
- piper
- python
- scikit-learn
- websockets
- whisper
Log in or sign up for Devpost to join the conversation.