Inspiration
Water is one of the most precious resources on the planet — yet millions of litres are wasted every single day due to overflowing tanks, dry pumps, and systems running on blind timers. We've all seen it: a tank overflows for hours because a float switch failed, or a pump runs dry because nobody noticed the level dropping. In many communities across Africa, the Caribbean, and South Asia, water isn't always available on demand — every drop counts.
We asked ourselves: why are we still managing water the same way we did 50 years ago? Float switches, ball valves, and mechanical timers have no intelligence, no visibility, and no remote control. We knew IoT and AI could do better. AquaWatch was born from that frustration — a desire to bring smart, real-time intelligence to something as fundamental as water.
What it does
AquaWatch is an end-to-end smart water management platform. An IoT sensor monitors water levels in real time and transmits data — alongside GPS location — through a WiFi module to a cloud server via a secure HTTPS REST API. That data is processed and delivered to users through the AquaWatch mobile app.
The platform gives users:
- Live tank monitoring — see exact water levels at any time, from anywhere
- AI-powered insights via the Gemini API — detect usage patterns, predict demand, and flag anomalies
- Flexible schedules — automate tank refills on a custom timetable
- Manual override — remotely control pumps directly from the app
- Smart alerts — get notified of low levels, overflows, or unusual activity
- Secure device licensing — only registered, licensed devices can operate on the platform
How we built it
The system is built across three layers.
Hardware Layer We wrote the device firmware in C++, running on a microcontroller development board paired with a water level sensor and a GPS module. The sensor continuously samples the water level, the microprocessor processes the raw readings, and the WiFi module transmits the data securely to our backend.
Backend / Cloud Layer The server side is built in PHP, exposing a REST API that receives sensor data over HTTPS. The backend handles data ingestion, storage, processing, and the scheduling logic for automated pump control. Time-series sensor readings are stored and passed to the Gemini API, which analyses usage patterns and generates AI insights returned to the user in plain language.
Mobile App The AquaWatch app is built in React Native, giving us a cross-platform mobile experience from a single codebase. Users register an account, register their device, and activate a license before the device goes live. From the dashboard they can view live tank levels, review historical usage, configure refill schedules, and trigger manual pump control in real time.
The data flow can be summarised as:
$$\text{Sensor (C++)} \rightarrow \text{Microprocessor} \rightarrow \text{WiFi (HTTPS)} \rightarrow \text{PHP REST API} \rightarrow \text{Cloud Server} \rightarrow \text{Gemini API} \rightarrow \text{React Native App}$$
Challenges we ran into
Sensor accuracy and noise — Raw sensor readings are noisy. Getting stable, reliable water level data required filtering and calibration at the firmware level in C++. Small fluctuations in the water surface caused erratic readings that we had to smooth out algorithmically.
Reliable data transmission — Ensuring data reached the server consistently, even under poor WiFi conditions, required implementing retry logic and connection state management on the device.
Real-time sync between hardware and app — Keeping the React Native app in sync with live sensor data without excessive battery or bandwidth drain was a balancing act. We had to tune polling intervals and optimise the PHP API payload size.
Device registration and licensing — Building a secure onboarding flow where devices are uniquely tied to user accounts — and only operate with a valid license — required careful backend design in PHP to prevent unauthorised access.
Gemini API integration — Feeding time-series sensor data to Gemini in a format that produced genuinely useful, context-aware insights took significant prompt engineering. Raw numbers alone were not enough — we had to structure the data and the prompt carefully to get responses that were meaningful to a non-technical end user.
Pump control latency — Remote pump control needs to feel instant. Minimising the round-trip time from an app command to a physical pump action, over the internet, was a real engineering challenge.
Accomplishments that we're proud of
- A fully working end-to-end system — from physical sensor to cloud to mobile app
- Real-time water level monitoring with live data flowing through the PHP API to the React Native app
- Remote pump control that works over the internet with acceptable latency
- Gemini API integration that turns raw sensor data into readable, actionable AI insights
- A secure device licensing system — not just a demo, but a real access control model
- Automated scheduling that outperforms traditional timers and float switches
What we learned
This project taught us that building IoT systems is about much more than writing code — it is about the entire stack, from electrons moving through a sensor to pixels on a phone screen.
We deepened our understanding of C++ embedded development and the discipline it demands around memory management and hardware reliability. On the backend, building a PHP REST API optimised for frequent, low-bandwidth IoT payloads is a different challenge from building a typical web application. React Native proved to be a strong choice for the app layer — a single codebase gave us a polished mobile experience without doubling our development effort.
Working with the Gemini API showed us that AI is most powerful when it is given well-structured context. Prompt engineering is a real skill, and getting Gemini to produce concise, useful water usage insights — rather than generic text — required iteration and precision.
Most importantly, we learned that the best solutions solve problems people actually have — and wasted water is a problem millions of people face every day.
What's next for AquaWatch
The foundation is built. Now we scale.
- Multi-tank support — manage multiple tanks across different locations from one account
- Advanced AI forecasting using Gemini — predict when a tank will run empty based on usage history and seasonal patterns
- Water quality monitoring — add sensors for pH, turbidity, and contamination detection
- Third-party integrations — connect with smart home platforms and utility billing systems
- Commercial and municipal deployments — scale beyond residential to hotels, schools, and local governments
- A web dashboard built for enterprise customers managing large infrastructure
- A certified installer programme — partnering with plumbers and electricians to deploy AquaWatch hardware professionally
Water scarcity is not getting better on its own. AquaWatch is our contribution to making every drop count.
Built With
- android
- c++
- device
- gemini-api
- gps
- https
- iot
- javascript
- microcontroller
- php
- react-native
- rest-api
- water-level-sensor
- wifi
Log in or sign up for Devpost to join the conversation.