top of page

Duration: May 2018 - June 2018

Purpose: Personal project for home automation

Skills: Raspberry Pi, Python3, Sockets, Tkinter for GUI


This was a personal project to solve a specific problem our household constantly faced. The overhead water tank was always empty when we need it most and used to overflow wasting gallons of water if we forgot to turn off the pump while filling it.

This seems to be an easy problem to fix, yet there's no simple, low cost plug and play solution available in the market.


My first design used a Raspberry Pi 3 board. Four aluminium probes were immersed at various levels within the tank, each connected to a pin on the Pi that was constantly reading input voltage. A fifth probe was placed at the bottom of the tank at a constant potential of 5V.

As the water changed level in the tank, probes were immersed under water and were shorted with the 5V probe, returning a reading of 5V. The highest immersed probe gave the water level in blocks of 25%.

This was relayed to a companion device kept inside the house over the local network using sockets. A Python based GUI application displayed the level and also sounded alarms for low water level and full tank while filling.


Except for the Raspberry Pi board which cost about Rs. 3,000, the rest of the setup cost under Rs. 500 and fit the requirement for being low cost. This however, does not include the companion Windows device required to run the GUI indicator program.


  1. While the sensing setup itself was cheap and the microprocessor could be replaced by a cheaper alternative, this solution required a dedicated companion device that could run python applications.

  2. The casing for the electronics was poorly constructed and disintegrated after months of exposure to external weather.

  3. Water in the tank is muddy, and this deposited on the immersed probes, requiring periodic maintenance to remove the deposits as this affected conduction.

  4. Only showed five levels (0%,25%,50%,75%,100%)

Updated version

I realized sockets was untenable and created a local web server on the Raspberry Pi instead that could be accessed by visiting the IP address of the server. This allowed any devices connected to the network to access the indicator, solving one of the drawbacks. However the other drawbacks remained and the system had to be taken down after four months of operation.

Two years later, I was able to create a new system that solved all these drawbacks and more. This is detailed here: IoT based Water Level indicator 2.0


bottom of page