Automated Bath and Shower

A user friendly system to automate the task of operating your bath and shower.

Similar projects worth following
We've all had the problem of trying to adjust the perfect water temperature for our shower. When you first start it, it's too cold. Then it becomes too hot until you finally reach a desired temperature. The same problem exists with pouring a bath. As you're pouring it, the water might slowly become colder as the hot water tank empties and you don't notice until it's too late. It can also be the other way around, what seems to be a good temperature for your hand sometimes ends up being scorching hot for the rest of your body. This is a waste of energy and money because you end up adding cold water to the bath.

The automated bathroom system is the solution to these problems. At the touch of a few buttons, the shower starts at the desired temperature and flow rate, or the bath begins filling at the desired temperature and stops at your chosen level.

The aim of this system is to solve many little problems that most of us encounter everyday while saving valuable resources.


Good question! It's quite simple really. It can be done in as little as 2 steps:

1) Log in

2) Start either the bath or shower with your previously saved settings!

And that's it!


You will begin by entering your pass-code in the GUI in order to load all of your desired settings from the MySQL database running on the server. Once you're logged in, you'll select the bathroom menu. Here, you'll have two sections to choose from: Bath or Shower. As mentioned before, all your desired settings will be preloaded on the screen but you'll still have the option to adjust any of the 4 variables. For the shower, you have water temperature and water flow. For the bath, you have water temperature and water level. Once you press the start button, the magic begins.

Let's assume first that you selected a shower. Your command will be sent to the server. From there the server communicates with the bathroom node and makes sure everything is going as planned. If all is good, the bathroom node will start adjusting the hot and cold water and try to achieve the desired temperature and flow. Until the desired temperature is reached, the water will be directed to the drain before even coming out of the shower head. This water will be cold so it's better to divert it to the drain instead of on you.

Within a few seconds, the water will have reached the temperature and will be redirected to the shower head. You will be able to adjust the water temperature from within the shower via a few buttons. You will also have the option to pause the water while you're shampooing and whatnot for extreme energy and water conservation. Once you're done, simply press a button and it all stops and is ready for next time.

The bath works pretty much the same way. It reaches the desired temperature at maximum flow and also keeps track of how much water is in the bath via a flow sensor. Once it's reached the desired water level it stops. After you're done, press a button and the water drains away.


These are the criteria that must be met in order for the system to be functional. The system must:

-Be user friendly. Anybody that is able to use a shower or bath by themselves must be able to operate the system without any difficulty.

-Be easily expandable so that future nodes for other rooms and systems can be added to reach the end goal of having a fully automated home.

-Operate faster than the average person in order to be considered useful.

-Be more efficient than the typical system in order to save water and the energy used to heat the water which converts to money in our pockets.

-Be easily put back to the boring manual mode in case of an extended power outage or the system malfunctions.


There are three main hardware components to the system. There's the server, the user interface and the node. The server and user interface will both run on the same Raspberry Pi for now but will be on different Pi's in the future as the system expands and gets more nodes. They will all be connected together through a router and will communicate using TCP/IP. Let's go into more detail for each of them.


The server consists of a Raspberry Pi. The server will hold all of the users preferences and also communicate with all the nodes. In our case, there will only be 1 node but as said before, I want it to be expandable in the future.

User Interface:

The user interface will consist of a Raspberry Pi that will run the user interface software and display it on a capacitive touch screen mounted on the wall. I chose the Raspberry Pi for it's small size to be hidden behind a wall and also, of course, for it's very low cost.


The node has final control of all the bath and shower functions. Its the only device that knows what's going on and that can activate servos and solenoids. It consists of an ATmega328P chip with the Arduino bootloader. It receives commands from the server and also sends back updates on it's status to the server. It will get input...

Read more »

  • It begins, once again...

    Andre Viau03/26/2015 at 01:06 0 comments

    Last year, I've attempted to enter this same project in the Hackaday prize contest, but unfortunately I couldn't put enough time into it due to work and moving to a new location. This time I hope to have the time to complete the project because my wife and I would love to have this luxury in our bathroom! It would make life slightly simpler.

    We've just recently finished completely remodelling our bathroom so we thought it would be the perfect time to attempt to implement the system. I still have many of the components from last year so we're already a step ahead.

    The biggest challenge that I'm currently facing is to be able to control the bathtub drain electronically. My first thought was to control a valve using a servo, but I haven't found a valve that would be easy to operate using a servo. I've thought of using a stepper motor and gearbox, but I find that to be very loud and annoying. I will continue to experiment and post my results.

View project log

Enjoy this project?



Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates