projects

Awita

IoT water monitor built for regions with unreliable water supply. Sensors track tank levels, the dashboard shows real-time data, and ML predicts when you'll run out.

Personal Project
Main image
1/3
Thumbnail 2
Thumbnail 3

The Problem

In Baja California, water isn't guaranteed. Many homes rely on water trucks that deliver on irregular schedules, and storage tanks are the buffer between having water and running dry. I wanted to build something that would tell you exactly how much water you have left and warn you before it runs out.

How It Works

  1. 1An Arduino with an ultrasonic sensor sits on top of your water tank, measuring the distance to the water surface every 60 seconds.
  2. 2Readings are sent to an AWS Lambda via API Gateway, which calculates the water level percentage and stores it in MySQL.
  3. 3A React dashboard shows your current water level as an animated gauge, with 24-hour, 7-day, and 30-day historical charts.
  4. 4A separate LSTM model (Python/TensorFlow) analyzes usage patterns and predicts how many hours until your tank is empty, with confidence scores.
  5. 5Email alerts notify you when water drops below a configurable threshold or when the sensor stops reporting (disconnection).

What I Built

Designed the full system architecture: Arduino firmware that registers itself on first boot, Lambda for sensor ingestion and notification dispatch, NestJS API behind API Gateway, and a React SPA with Clerk authentication.

Built the ML prediction service: an LSTM neural network trained on historical usage data with hyperparameters optimized via genetic algorithm. Predictions are cached in Redis and served through a FastAPI endpoint.

Results

The system handles 1,000+ daily sensor readings at < 200 ms latency. The prediction model achieves strong accuracy for 24-hour forecasts.

Technologies

ReactNestJSMySQLAWSArduinoTensorFlow