Web Enabled Pool Control - Raspberry Pi

31,860

160

38

Last year I had a pool built. It was exciting when the pool builder showed me that the pool industry had moved into the technology age and now offered application control over the internet. Being a computer junkie I jumped for joy. Then the quote... $10,000 for pool automation. Let me say that again... $10,000 for pool automation. Of course that was out of the budget... but not a lost desire.

I thought, let me purchase the components and I'll do the work. Researched and looking into the major builders hardware and it alone would have cost me near $5,000. Without install.

So I made it my mission to create my custom solution.

This is a brief overview of my project. To say I'm proud is an understatement! This project has taken months in planning and learning the software side and the labor to build has been at least 60 hours with an overall hardware cost around $1,000.

It will continue to mature. Better interface. More functionality. But for now it is live.

A word of caution, many of these components use 120V and 240V AC and they are dangerous if you don't have the training. That said... here we go.

Teacher Notes

Teachers! Did you use this instructable in your classroom?
Add a Teacher Note to share how you incorporated it into your lesson.

Step 1: Drafting the Hardware

Step one, plan the project. Identify inputs (what you will monitor - i.e. water temp) and outputs (pumps, valves, LEDs, etc). Create a Pin-Out drawing for reference. (A lesson learned here was the pin-outs changed to enable cleaning wiring in a later phase). Measure the components. Draft them out to determine the size of the box needed.

A quick drawing is worth its weight in gold (use thin paper :-))

Parts List (links are examples):

1) Raspberry Pi: https://www.amazon.com/CanaKit-Raspberry-Complete-...

2) Raspberry Pi Relay Board: https://www.amazon.com/Elegoo-Channel-Optocoupler-...

3) 24V AC Transformer: https://www.amazon.com/Furnace-Control-Transformer...

4) 24V AC Relay: https://www.amazon.com/White-Rodgers-90-340-Replac...

5) Power Strip (note on this: I wanted to use the USB part of this strip to save my power supply, but it caused the Pi to reboot. Assuming it is under powered): https://www.amazon.com/gp/product/B015MF60O2/ref=o...

6) Project Box: https://www.amazon.com/gp/product/B005T57DF6/ref=o...

7) Terminals for easier connections: https://www.amazon.com/gp/product/B00G9IEMJM/ref=o...

8) Valve Actuator (non-name brand - works great. Can set it at any degree of rotation with cam settings: https://www.amazon.com/gp/product/B002ZPJVV2/ref=o...

9) LevelSmart water level (this cost was not in the original writeup - but is working very well!): https://konalabs.com/levelsmart/

10) Pool Components: Installed by pool contractors. All Pentair name brand except valves - they are Jandy, and the waterfalls, they are Brillian Wonders. For details on each component click on the picture and zoom in. The model is on the component.

11) Waterfall controllers - do not purchase the ones in this photo. You need the Brilliant Wonders Smart Sync. Found it for about $139 at American Best Pool Supply...http://www.americanbestpoolsupply.com/smart-sync-l... This allows the colors to sync with the LED colors from Pentair

12) If you need to integrate to the SPA heater I can help with this brand & model. Others would require additional investigation. I plan on improving this design when I get back to working the details of this project.

Step 2: Setting Up the Raspberry Pi

Setting up the webpage was new and a bit cumbersome, but this page followed step-by-step, will lay the ground work no matter how sizable your project.

http://forums.connectedly.com/raspberry-pi-f179/ho...

Don't miss the small line about making it "mobile enabled". It makes the phone operation look more professional.

Right now, I'm going to stay high level, but will come back later to add more detail. As a general rule, enter the name of each step below followed by raspberry pi into google and with some time you will find what you need. The one that took more time to figure out was 2c, so I've added a link to "patch" webiopi to a newer version.

Sub steps:

2a: Setup Static IP

2b: Setup Remote Desktop

2c: Setup Webiopi - there is a patch required - details here: https://www.raspberrypi.org/forums/viewtopic.php?f...

2d: Setup Apache Server - ensure it loads at startup.

2e: Setup WinSCP to transfer files to the Pi from your PC

2f: Setup No-IP DNS (or other free service) - Point web request to your webpage

2g: Setup port forwarding on your router

After you have this working and you can pull up a working page on your web-browser, your creative work is still to go. Referencing the pin-out you created in step two, set your HTML and Python script names to match the pins. Then, with some planning and trial and error, setup your macros to do the work for you.

Step 3: Wiring the Raspberry Pi Relays

Installing Relay boards. Refer to your relay pinouts in step 1. Label the relays... it helps assembly greatly when you have dozens and dozens of wires in a box.

As a design criteria, I chose to have the relay boards switch 24V AC. The small relays (blue boxes in the pictures) do say they are rated for 120V and 240V, however running "main pump current" through relays this small would likely lead to excessive heat and early failure. I used the low level relays to apply 24V to large relays to switch 120V/240V.

Another important consideration. You should design your system to have everything "off" when the power is not applied to the Pi. What this means is should the Pi reboot, purposefully or power outage, you want the relays to disconnect power to all components during boot. Otherwise, you will have random components turning on when the Pi is down... Maybe not a big deal in some cases, but not desirable in any case. In designing with this in mind, all of the HTML and Python code "seems" backwards. High settings = "off", and Low settings = "On".

Watch the video attached and you can see the relays turn on and off (the red light below each blue relay) when I press the button on my smartphone.

Step 4: Designing and Building the System

As I mentioned in the introduction, working with 120V and 240V is no joke. Don't do it unless you take time to educate yourself!

Determine System Voltages: In this case, the pool industry sets that precedence for our project. It is a mix of output voltages.

1) 120v/240v - Pumps, Chlorinator, Heater, Pool Lighting Transformers

2) 24vAC - Pool valve drive motors, Pool Heater Interface Voltage, Pool LEDs

3) 12vDC - Pool waterfall LEDs.

I had a question for a wiring schematic which I wanted to reply too. Although it is possible to put one together the time investment is just too great. The best wording descriptions I can add are as follows:

1) Each component comes with their own wiring diagram. Each component has an input and an output. The inputs and outputs will be one of the 3 voltages above. Each component requires a particular input to create the correct output.

a. Raspberry Pi - 120v AC- power supply

b. Raspberry Pi - 5v DC- fed from Raspberry Pi

c. 24v Transformer - 120v AC to 240v AC input (refer to schematic provided with the transformer for wire color) - 24v AC Output

d. Control Relays - 24v AC Input to relay connectors - any output voltage to the relay connectors

e. Pool Pump (240v AC) - Chlorinator (240v AC) - Heater (240v or 120v AC) - LED Transformer (120v AC) - Waterfall Transformer (120v AC) - SPA Blower (240v or 120v AC - based on model). Switched with the control relays in step D.

In construction I used plexiglass from Lowes. Lots of sawing, drilling, measuring... you get the jest. I had to make two boxes. One for my pump room. One for my greenhouse where all of the lighting and the spa blower is located. I chose a cabinet with door to prevent prying hands from contacting high voltage.

Take your time and remember one lesson, before turning on the main power ALWAYS ohm between the source and ground to ensure there is NO DIRECT SHORT. Miss this step and you may have unexpected fireworks and burned components.

Step 5: Working With Macros

Referencing the top link in Step 2, creating macros with Python and calling them with HTML does multiple clicks with one button. This creates a set of instructions that will set each pin to the desired state. See the attached "pool setup" macro that is in the "python script" file.

Step 6: Wrapping Up... Watch the Videos

This is a fully functional replacement for some very high end consumer products. It was admittedly a massive undertaking, but in the end, fun and rewarding.

By the way - as you may notice in the videos, the time to pull up the webpage is very slow. The cause has been identified as a defective wireless router. It has been replaced and my controls are fast and have been up for over 2 weeks straight without a single minute of downtime!

When I show it to people, it blows them away! I hope it does you as well.

Good luck with your pool controls!

Beyond the Comfort Zone Contest

Participated in the
Beyond the Comfort Zone Contest

Automation Contest 2016

Participated in the
Automation Contest 2016

Internet of Things Contest 2016

Participated in the
Internet of Things Contest 2016

Be the First to Share

    Recommendations

    • Made with Math Contest

      Made with Math Contest
    • Multi-Discipline Contest

      Multi-Discipline Contest
    • Robotics Contest

      Robotics Contest

    38 Discussions

    None
    el_duderino

    3 months ago

    Just checking in to see if you're still using this and if you've made any updates and/or changes to this amazing project.

    1 reply
    None
    thedawnscel_duderino

    Reply 3 months ago

    I am still using it... holding up very well. Had to replace the memory card a year ago - but all is well. Only small modifications - added a couple of additional valves. I am wanting to use a better software to make it look better, but life is too busy.

    None
    rwendt33

    6 months ago

    Awesome project! You have inspired me to create my own pool controller for my setup. Do you have a good hyperlink for the one is step 2? I can't seem to get it to work. Also, do you have more on the software/code that you wrote? Any help is appreciated.

    1 reply
    None
    thedawnscrwendt33

    Reply 6 months ago

    Good morning! I could not log on yesterday - odd. But it is working today. Send me an email to thedawnsc@gmail.com. The link is broken, but I save the whole page into a pdf back when I was programming it. I can share that across email and sharing my control files is not a problem as well. They are pretty darn basic. I really want to upgrade the software side, but it still works.

    None
    rwendt33

    Question 6 months ago

    Does the website link work for anyone else? I know this is an old thread but I would love to do thos same thing. The only hurdle for me is the raspberry pi and web programming. Also, what LCD screen did you use? Do you have code repositories that I could copy? Thanks in advance.

    None
    motorambler

    Question 8 months ago

    Wow, thanks for taking the time to share this how-to! I have a question about the overall design of your setup but first hear me out.

    Most homes have the main pool controls out back somewhere usually next to the pool equipment, and have a remote keypad in the house that does nothing other than issue commands to the main box (for example: turn on heater or turn on the lights or spa, etc.).

    Now, wouldn't it have been easier to focus solely on adding wifi (or ethernet) capability to the existing remote keypad that's ALREADY WIRED & INTEGRATED to the main control box/system?

    1 answer
    None
    thedawnscmotorambler

    Reply 8 months ago

    Mine did not have the controls per se. It had a timer on the pump and manual valves. If there were a remote keypad, you are right, it probably would not be worth the effort.

    None
    el_duderino

    1 year ago

    This is very impressive. Hopefully you're still around to answer questions! Have you made any recent updates? I am looking to undertake a similar project (using a particle proton) and I have the same heater. Could you elaborate on how you control the Pentair heater? Also, I see you used a separate 24v transformer for each actuator, etc. The Hayward controller I currently have seems to employ only one 24v transformer. What led you to that decision? Finally, if you have some clear pics of the innards, I would be very interested to see how you wired everything up.

    Thank you!

    12 replies
    None
    thedawnscel_duderino

    Reply 1 year ago

    1st photo is cabinet 1 total. Picture 2 is the high voltage motor drives. The distribution block (black with screws) on the top left (and a closeup in pic 3) is where the 240v comes in. You can see I jumper that across to other circuits. Look close and you see small 24v wires to the relay coil (orange on the left relay) which switches the red and black of the 240v back to the pool pump. Each of the 24v wires is switched from the pi to the blue relays, to the high voltage relays. You can see the commons and neutrals are all wire nutted together - I switch the hot leg to all outputs through the relays. In the middle of pic 2 are the two 24v transformers (120v to 24v) that I mention earlier. One power all of this box. The other a 2nd box - pics to come.

    20180417_191849.jpg20180417_191900.jpg20180417_191944.jpg
    None
    el_duderinothedawnsc

    Reply 1 year ago

    Thank you! This is great and very helpful. Appreciate the detailed descriptions as well. I am getting close to having a working prototype for much of my functionality and want to test it out before actually switching the pool equipment over from my current controller, but these pics definitely help my confidence with the high voltage stuff.

    One thing I would LOVE to do is hack the "off" switch on the valve actuators. If I could run them for a set amount of time and then freeze them in a both open position, that would allow me the opportunity to do some great things with my pool.

    Since you seem to be pretty astute with this stuff, do you think that is even possible? I would think so, but I haven't messed around with it yet. I have a few semi-working spares that I may mess around with, but wanted to get your thoughts as well.

    Thanks again! I'll be sure to share what I have when it's a bit more ready for prime time.

    None
    thedawnscel_duderino

    Reply 1 year ago

    Yes it is certainly possible. First thought though I'm not 100% sure it would work - just like you said - use two relays to apply the 24v ac to each actuator wire. When you turn both off the motor will have no drive voltage and stop. The issue that would need to be tested is if you applied 24v to both lines by leaving both relays on - what will the motor do? It may drive all the way open and all the way closed again and again... not sure. It would be an easy test - put 24v to both wires and see what happens. Probably not enough voltage to really hurt anything for a short time. Either way, you would need an interface that turns one relay off when the other is turned on to make it work...

    None
    el_duderinoel_duderino

    Reply 1 year ago

    After looking at the innards of an actuator, it seems like you could use two relays and when both were off, it would stop at that point? Maybe I'm missing something.

    None
    thedawnscel_duderino

    Reply 1 year ago

    The 2nd box is a bit simpler to see what is going on. The 1st pic is where all of the relay wires are attached to the wires running under the ground. Pic 2 is where the wires come into the greenhouse and are connected to the relay box. The 3rd pic are all of the outgoing wires. 3 LEDs, 2 waterfall LEDs, a 120v wire for general lighting, 120v for the spa blower. The 4th pic is of the components. 7 relays - labeled - the silver and white boxes are the waterfall LED controllers and the cream box is the transformer for the pool LEDs. The middle device is my wireless pool fill device. All of the components are attached to plexiglass and the wires are running behind the glass. Hope all of this helps. Let me know when you complete your program - would love to copy some of it. Good luck!

    20180417_192136.jpg20180417_192248.jpg20180417_192254.jpg20180417_192301.jpg
    None
    thedawnscel_duderino

    Reply 1 year ago

    These are a little harder to see. Pic 1 is a detail pic of the relays. The bottom are pinouts that connect to the pi. The top are normally open or closed relays. The relay marked WFV is a clear example of wiring a valve motor (last pic). You can see the middle leg is dark blue. It is tied to 24v. When the relay is off it connects the 24v to the white wires drives the valve open. When energized it connects the 24v to the red wire, driving it closed. Pic 2 (barely) shows the pi in the background - a ribbon cable for easy disconnect from the pi running to the relay wires. Pic 3 is a 120v power strip fed from one leg of the 240v feed wire that powers the pi and the screen. Pic 4 is a pic of the pi from above. You see an extension cable from the memory card slot so I can change the memory card easy (worth the cost!!!). And finally pic 5 is a wifi antenna because the signal was too weak inside the cabinet.

    20180417_192127.jpg20180417_191915.jpg20180417_192012.jpg20180417_192036.jpg20180417_192051.jpg20180417_192116.jpg20180417_192127.jpg
    None
    thedawnscel_duderino

    Reply 1 year ago

    1st Pic - Main Power - Orange wire is 240v. The white and yellow wires are outputs. The 2 white wires are 240v back to the pool and spa pump. The yellow is 120v to a small solar heater pump.

    20180417_191844.jpg
    None
    thedawnscel_duderino

    Reply 1 year ago

    The question about the two 24v transformers, this may be over engineered but the reason there is two was I have have 11 relays and 6 automated valve motors and half of them are closer to the pool - about 40 feet from the main controller - so I use one transformer for the main room - 4 relays, 6 valves (admitted they don't energize all at the same time...), and the second transformer runs 7 relays 40 ft away that could all be energized at the same time through small thermostat wire - so I was concerned that there would be a voltage drop. So... I figured better safe than sorry... If you post your email address I'll send a lot of pics.

    None
    el_duderinothedawnsc

    Reply 1 year ago

    Thank you!

    I'm managing the temperature measurement already, so I wan to be able to control that via my DIY controller. Walking to the heater would be a bit difficult for me given location. I'll work more on that as I get closer.

    Currently, I'm looking to integrate mine with SmartThings, but I may look into OpenHAB as well and see if that's more feasible (I already have ST hub and have some of the integrations implemented).

    Is there a semi-private way I can send you my email address lol, as I would love to see detailed photos?

    None
    thedawnscel_duderino

    Reply 1 year ago

    I would love to see what you do with SmartThings when you are complete. Before we go though the email exchange process I'll try to post them here...

    Give me a couple of days.

    None
    thedawnscel_duderino

    Reply 1 year ago

    Thank you... yes, still around. I went through two options with the heater. My first was to use the 24v inputs detailed on page 31 of the user manual. You move Jumper 3 and hook up 24v inputs for the pool and spa separately (The diagram calls the input "Spa Line" & "Pool Line"). This had the benefit of being able to select 2 temps with two relays but it had a drawback of the panel becomes inactive so if you want to change the temp you have to move the jumper position - set the temps - move the jumper back - cycle the power. This year I converted over to the more conventional setup. I installed a 24v relay in line with the "Firemans Switch" - which took me a while to figure out - but very simple after you know where to wire. On the same page, bottom right of the wiring diagram you see a text box that starts with "Replace Jumper with" - it is a yellow jumper. You wire the relay here. When you energize the relay it energizes the power board so you can change the temp - but you only have an on and off so if you want to change the temp to have to walk to the heater. My plan install a temp sensor and upgrade my software to measure the temp and turn the heater on and off. More to come on that... I am strongly considering Openhab - if you develop something and are willing to share that would be great!

    None
    thedawnscthedawnsc

    Reply 1 year ago

    One other REALLY important point I forgot to add - Using the first option puts 24v directly to the control board which is low voltage. I had a board failure and I was concerned that it may have contributed. The second option deals with the 120v (or 240v) input.