Spaces:
Sleeping
A newer version of the Gradio SDK is available: 6.20.0
title: Appliance Health & Leakage Monitor
emoji: ⚡
colorFrom: blue
colorTo: indigo
sdk: gradio
sdk_version: 5.49.1
app_file: app.py
pinned: false
⚡ Appliance Health & Leakage Monitor
A live monitoring dashboard built on the AMPds2 household power dataset. It plays back the records hour-by-hour, builds a per-appliance expected band with TimesFM 2.5, and raises dashboard alerts for two independent problems:
- Appliance health — an appliance drawing more (wear / fault) or less (under-draw / off) than its healthy rated power.
- Whole-house leakage — the gap between the metered mains and the sum of all appliances (unaccounted load).
You can inject faults into any appliance (over-draw / under-draw / off) and inject house leakage, then watch the dashboard respond in real time.
Files
| File | Purpose |
|---|---|
app.py |
Gradio dashboard (playback, injection controls, charts, alerts) |
engine.py |
Simulation + detection logic, TimesFM envelope builder |
prepare_data.py |
One-time: AMPds2 zip → data/ampds2_hourly.parquet |
requirements.txt |
Pinned dependencies |
Quick start
1. Get the data. Download AMPds2 (dataverse_files.zip) from
Harvard Dataverse.
2. Build the compact parquet the app reads (resamples the minutely data to hourly):
python prepare_data.py /path/to/dataverse_files.zip
# -> writes data/ampds2_hourly.parquet
3. Run locally:
pip install -r requirements.txt
python app.py
Deploy to Hugging Face Spaces
- Create a new Gradio Space.
- Push
app.py,engine.py,prepare_data.py,requirements.txt,README.md. - Add the data: commit
data/ampds2_hourly.parquet(it's small after hourly resampling), or upload it via the Space's Files tab. (Runprepare_data.pylocally first to create it.) - The Space builds from
requirements.txt. TimesFM 2.5 installs from GitHub and its weights download on first launch.
Hardware: runs on the free CPU tier — first launch takes ~1–2 min while TimesFM loads and
forecasts the expected bands. A T4 GPU makes initialization noticeably faster. If timesfm
can't be imported, the app automatically falls back to a seasonal (hour-of-day) expected band so it
still works.
How to use
- Set the playback window and healthy context lengths, click Initialize (the context window trains the baselines and TimesFM bands).
- ▶ Play (or Step) to stream the records; Speed sets hours per tick.
- Inject an appliance fault: pick an appliance, choose Over-draw / Under-draw / Off, set the magnitude and when in the timeline it begins, then Apply.
- Inject leakage: set a continuous phantom load (W) and a start point, then Apply.
- Watch the Alerts & status panel and the two charts react.
How detection works
- Expected band is forecast once by TimesFM 2.5 from the healthy context window, per appliance (shown as the q10–q90 ribbon on the focus chart).
- Over / under / off fire when an appliance's trailing ON-power deviates from its healthy rated value — robust to normal on/off cycling. (The forecast band is the visual evidence; the rated comparison is the trigger, which avoids false alarms on sharp on/off loads.)
- Leakage =
mains − Σ(appliances), compared to the normal hour-of-day residual band. Importantly, an appliance fault raises the mains by the same amount, so it does not move the residual — only a true leak does. That keeps the two alert types independent and physically consistent. - AMPds2 has no real fault/leak labels, so the system is validated by injection — exactly what the controls let you do.
Notes
- Power is in watts; hourly energy in kWh = W / 1000.
- The mains meter is
WHE;UNE(unmetered) is excluded from the appliance sum. - TimesFM is used zero-shot (pretrained, no training on AMPds2).