Skip to content
Bao Nam Do
Projects
AI & Machine Learning · Research2025

GreenVision AI — Smart Energy Monitoring

Cutting wasted electricity in schools with vision + IoT.

GreenVision AI live dashboard — per-room energy, occupancy and alerts

My Role

Sole developer across the whole stack — the computer-vision occupancy model, the async backend that fuses detections with sensor streams, and the front-end dashboard. I chose a camera-first design specifically so a school would not have to buy and wire new sensors into every room.

Technology

Python · FastAPI · YOLOv8 · OpenCV · React 19 · TypeScript · WebSocket · Docker Compose

Measurable Impact

  • Runs without a GPUCPU-only
  • Rooms monitored live5 at once
  • Person-detection mAP@0.5>0.9*

* Pending verification

The Problem

Walk any school after the last class and you'll find the same thing: empty rooms with the lights and air-conditioning still running. It's not that anyone means to waste power — it's that nobody can see it happening across a whole building at once. Wasted electricity is money and carbon leaking out of a place that is supposed to teach the next generation to care about both.

My Role

I built the whole system myself — vision model, backend and dashboard. The key decision was mine too: use cameras a school already has instead of asking it to install a sensor in every room. That one choice is the difference between a project a school could actually run and a proposal it would file away.

Occupancy by Vision

The core is a YOLOv8 person-detector trained to answer one cheap, robust question — is anyone in this room? — and to do it on an ordinary CPU, no graphics card required. That keeps the whole thing affordable for exactly the schools that most need to cut a power bill.

The Real-time System

An async FastAPI backend fuses live camera detections with a stream of sensor data over WebSocket, so the picture is always current rather than a report from an hour ago. It runs five rooms at once in the demo and comes up with a single Docker Compose command — a system, not a script.

The Dashboard

A React and TypeScript dashboard turns all of that into one screen a caretaker can read at a glance: which rooms are occupied, which are drawing power while empty, and where to walk first. The point was never a clever model in a notebook — it was a signal someone can act on before they lock up for the night.

Honest Limits & What's Next

The detection numbers come from the project's own test set, not a real building, and camera-based occupancy raises a fair privacy question — which is why the honest next step is not more accuracy but a pilot in one real corridor, with on-device processing so no video ever leaves the room, and an alert a caretaker actually receives.

Technology

PPython
FFastAPI
YYOLOv8
OOpenCV
RReact 19
TTypeScript
WWebSocket
DDocker Compose

What I Learned

  • The best design decision was refusing to require new hardware — reuse is what makes sustainability tech actually get installed.
  • A model only becomes useful the moment its output fits on one screen someone will actually look at.

What comes next

  • Pilot in one real building with on-device processing so no video leaves the room.
  • Turn the dashboard's flags into alerts a caretaker receives, and measure the electricity actually saved.

Last updated: 2026-08-15