Hey there! Welcome to the WeFlow project page! Below you'll find more details about the inspiration for the project and the work that went into it. If you would like to see a demo of the WeFlow in action, check out the demo video in the links section!


The WeFlow is a water leak detection system that functions by using water pressure sensors to measure the water pressure in different sections of a piping structure. Depending on the pressure level that the sensors read in, a solenoid valve can be triggered to close off a section that detects a low pressure so as to prevent an excessive loss of water from the leak. Current states of the system are sent via WebSockets from the ESP32 clients to a server made using Tornado Web Server, and the server will then send the data to a webpage client for a user to interact with.

The inspiration for this project comes from a problem I personally experienced recently. Back in February, a huge snowstorm came through Texas and dropped at least a foot of snow onto my hometown and many other cities across the state. While my town wasn't one of the towns that suffered from the major power outages and other serious damage like that seen in Houston, there were still waterlines around town that were damaged by the unexpected weather. The water company that sources the water to my home had to repair damaged pipes after the snow melted, but since their usual method for finding leaking pipes is to look for a wet spot on the ground, locating the damaged pipes was difficult given that the entire ground at the time was soaked. They had to reach out for help from the community in order to find the problem.

I didn't think this was very efficient, so I thought it would be fun to design a theoretical system that could've been used in February for my senior project.


The Components section below contains the list of components used for the functionality of the current version of the WeFlow. There is also a Bill of Materials file listed in the Files of the project that has a full list of parts used throughout the project, including components that didn't work for the project such as the LiPo batteries, and parts that aren't absolutely essential for the systems functionality like the PVC pipe.

For the WeFlow, water pressure sensors were chosen to detect leaks in the pipes because I thought that detecting drops in pressure would be a good way to determine if there was a leak in a certain area. From research done at the beginning of the project, I've learned that there are other methods to detect leaks in a pipe, such as using acoustic technologies, and that a drop in water pressure can mean something other than a water leak, but for the sake of this project I still decided to go with the pressure sensor method since it was simple to implement, and it could still function as a feasible method of detecting water leaks.

As for the solenoid valves, I wanted to implement some kind of mitigation system if a leak was detected, and the options that I was considering were either closing off the problem area in the pipes, or shutting off the water at the source. I decided on the former since if this system happened to be used in an actual city water system, it wouldn't make sense to turn off everybody's water because of an issue at a single house. Solenoid valves specifically were chosen because they're already a useful tool in closing off access to a pipe, and the normally open configuration allowed for continuous water flow when needed without having to continuously keep a current induced in the solenoids in order to keep them open.

The DOIT ESP32 devkits with the Arduino IDE were a good choice to use due to their ease of use and WebSocket capabilities, and I didn't require anything super sophisticated for what I planned. The 3V relays were important in helping properly trigger the solenoid valves when they needed to be closed, and the power adapters were an easy way to provide power...

Read more »