Friday, June 19, 2026

The Evolution of My Hot Water System - Part 1

Hot water isn't usually thought of as a problem in the rural Arizona desert, but to my household, it actually is. During the summer, we get lukewarm water out of the tap running around 80° - 90° because the ground heats up to that temperature. The water right out of the well runs cooler, but it sits in a tank and travels through a PVC pipe to the house. One would think that just heating it up to the standard 130° - 140°F would be cheap. Not true.

Incessantly rising power company charges and the energy it takes to raise the temperature of water 50 degrees make for a noticeable expense. Then let's compound that with "Peak Demand Billing" and an uncontrolled water heater can really tack on the charges. In fact, this exact thing is what got me started in Home Automation. I was surprised by a huge power bill and wanted to understand why; then after hours of research, trying to find a way to prevent it became a large part of my free time. This blog is filled with my various methods of control. 

Specific to the water heater, first I had a solar-assisted water heater installed. That was wonderful and did a lot for my power consumption. Suppose on a normal clear day of our usual 100+° sunshine, I only get one tank of hot water from the solar system. Going from 85°F up to 135°F in an 80 gallon tank is actually 667 lbs x 50°F = 33,360 BTUs. Using one of the internet calculators to convert to kWh, 33,360 / 3,412 = 9.78 kWh using only sunshine and a few watts from the circulation pump. That leads to around $1.20 to $1.50 a day savings. Taking that on an average monthly bill, I'm saving about $36; in a year that's over $430!! 

I'm saving money that I don't have to give to the power company's lawyers so they can lobby for higher rates with the local regulators.

Unfortunately, that doesn't address the peak billing problem. Back then the peak period was from 3 PM until 8 PM, and that period held some of the largest uses of hot water, like the evening meal (supper to some, dinner to others), dishes, and after-work showers, normal stuff. That led me to installing a power shutoff timer to keep the helper heating element in the hot water heater shut off during that period. 



I added stops in the timer to control the heater from 10 PM to 6 AM also since I didn't need hot water during those times. Everything was great until the power went off (happened often back then) and the timer was off. Those mechanical devices, while extremely reliable, had nothing to keep the time correct. When I got a power bill for an extra $40 in demand charges because I forgot to reset the timer clock, I started looking for another solution. That initial solution (this was in 2011) was an X10 relay and a timer clock in the house that had a battery in it. That failed me as well <link>, and another $40 down the drain... literally. 

It was time to create something that actually worked. Grabbing an Arduino and ordering an SSR from China, I built my own controller that had the time from an XBee network that I already had running and controlled the SSR that interrupted the power to the water heater. Note that I tried a contactor first, but those things are noisy unless you spend tons of money on them <link>. SSR devices cost a lot less and are easier to control. That little device <link> actually worked really well for a long time until I decided to measure the power usage of the heater. This ability to measure the power usage was mostly just me investigating because, at the time, I really didn't need to know the water heater used 4500 watts; that was written right on the label. What I wanted to know was how often it kicked on and why.

My SSR Water Heater Controller

That meant another device and a bunch of changes. I built up a pretty sophisticated combination of an Arduino hooked to an XBee that read power from a Modbus-based power measuring and display device <link>. This transmitted the state of the water heater and the temperature of the top vs. the bottom of the heater. I was really cooking now. I had temperature measurements, power measurements, remote control, and it wouldn't fail because the time changed. It looked cool on the wall over the water heater and was great for showing off to the neighbors <link>.

Oddly, it didn't impress the girls though

Man, I was right up there with a fully controlled water heater that provided wireless telemetering and autonomously controlled activity to avoid peak demand charges. A home automation dream, BUT there was still that problem of not enough hot water on cloudy days. What should I do about that?

The answer was right in front of me for years. The solar-assisted water heater had a circulation pump that pumped antifreeze-conditioned water from the heating coils at the bottom of the heater to the array on the roof. That's how they avoid damage from freezing weather: isolate the potable water with a radiator in the water heater and send it through the heating array on the roof. Suppose I put another one in that pumps the water from the bottom of the water heater to the top. I have water fittings on both ends, one is the exit for hot water to the house (top) and the other is the drain at the bottom. That would force mixing the water to equalize the temperature, and the helper element would take up any slack to give me the entire volume of the heater as a reserve. With an 80 gallon capacity, that would serve any reasonable purpose during cloudy days. However, this wouldn't be a simple task; one inch plumbing fittings are a real pain to deal with, and sweat joints are NOT as easy as the YouTube videos pretend.

But this series of adventures is getting too long, and I know you're approaching TL;DR, so in part 2 I'll get into the trials of a destratification pump.

Thursday, June 18, 2026

More Adventures With My Pool

 Way back over a decade ago (2013), I installed a Waterco Multicyclone Filter on my pool <link>, and it worked pretty well. Then in 2015 I had a problem when one of the fittings broke, <link> which was annoying because nothing else broke when my pool flooded during a downpour. Well, it happened again and was a little bit exciting at the time.

I was sitting on the patio enjoying a fine sunny day (103F) over a cup of coffee when I noticed the pool level had dropped. A little bit concerned, I checked to see if the autofill was working; it was. So I went to the equipment, and the area was flooded, and water was shooting everywhere. I waded through the mud and spray to the controls and shut the pump off. The union fitting on the Waterco had split in half and was the source of a high-pressure leak right at the pump. The first time this happened, it was the top fitting; this time it was the bottom fitting. After a heavy sigh, I decided it would be necessary to do some plumbing work.

A little background here: my area requires a cartridge filter on swimming pools to conserve water. The thinking is that backwashing a sand filter wastes water and a cartridge filter solves that problem. The engineer that came up with that suggestion was an idiot. The person didn't think about the fact that cleaning a large cartridge filter takes a ton of water to clean. I actually used a pressure washer, and it took an hour or more to clean all four filters in the enclosure. Then, it would fill up with desert sand in a week during the summer, and here in Arizona, we have roughly nine months of summer. So it was almost a weekly task of taking out the cartridges, putting in a spare set, cleaning the dirty ones, and putting everything back in service. Cleaning the darn things took a whole lot more water than my neighbor's sand filter, plus the time and effort of doing it. When the cartridges wore out from incessant cleaning, they cost around $100 each; four filters in use and 4 on standby for changing, roughly $800 invested in paper. 

Now, keep it to yourself, but I bought a sand filter and replaced that hunk of junk cartridge filter. The straw that broke the camel's back was when the assembly inside the cartridge filter failed and needed replacement. I looked at the cost of Hayward parts and decided it was time. After changing to a sand filter, the water looked just as good, backwashing took about 6 minutes, and I was done for at least three weeks before it needed it again. Much less work, much less water wasted, no cartridges to worry about replacing. A little bit of heaven for a change. 

Getting back to the recent problem, the last time I replaced the fitting on the Waterco, it took over a week to get it, and that would mean a green pool. Additionally, the failure was exactly the same as the last time; the ring split in half.


I decided that over a full decade of good service while I was fighting the cartridge filter's problems was enough for this device and decided to eliminate it. Mostly because I realized that it really wasn't overpressure that destroyed the fitting; it was vibration. Years of motor start-stops, pressure changes, and constant vibration just wore the darn fitting out. That combined with the ease of cleaning the sand filter and its much better filtration meant that I really didn't need the extra filtration any more.

Time to simplify and eliminate another thing to take care of.

However, it was a bigger job than I first expected, actually much bigger. The darn concrete platform the equipment was sitting on was broken and starting to fall apart. Yes, the people that manufactured that piece of concrete for pool companies to install had left some of the rebar reinforcement outside the concrete and water infitrated causing the rebar to rust. When rebar rusts, it expands and cracks the concrete. I had a broken mess supporting my pool equipment. But pulling all the above ground plumbing, tearing out the broken slab, pouring a new slab, waiting for it to cure, putting everything back would take at least a couple of weeks. 

What to do? I decided to take it in two steps. First, I would just get the pool back in service because it is June in the middle of Arizona and we only get half a day of active work before the heat drives us into the shade or under an air conditioner. Second, it's Summer, that's when you want a pool. Third, to support the weight of the filter, the concrete should cure for at least three weeks before you put weight on it like a sand filter and a heavy motor. Those three reasons made enough sense to me to do something different. After I got it in service with the broken slab and some inventive plumbing, I would cast the slab out in the back on a piece of plywood, let it cure for a few weeks, then dismantle the plumbing and move the new slab into place where it needed to be. Yes, the new slab would be heavy and hard to move, but I have a small skid steer, a small excavator, a Jeep with a winch on it, and pipes. I should be able to get that thing in place with all that stuff to play with. 

Now to fix the plumbing and get the pool back in service so I can work on the second stage.

Well, it wasn't as easy as I made it sound. There simply wasn't enough room between the existing fittings to just put in a pipe with a couple of couplers on each end. 


The arrow shows one spot that might have worked, but it was covered in glue and the surface was pitted pretty bad. I decided to replace the entire piece from the motor to the union up on top. That didn't seem too bad, but I would have to order the Hayward motor union part. It seems that Hayward is true to form in that they make everything custom to them. The motor coupler on the Hayward is different from a union that you can buy at Home Depot; it's different from a Pentair. It doesn't match anything one would expect it to. No, it has to be made special. 

The price of the real Hayward replacement was over three times an aftermarket equivalent. So I got the less expensive (cheap!) one, and after waiting a day (Amazon Prime) for the part and then getting some common fittings, I went to work. 

I had to replace the top union and all the fittings down to and including the special Hayward motor connection. So I spent a couple of hours lining things up and glueing them together. It really wasn't a huge amount of work; most of it was measuring pipe and cutting it. I got it all back together and gave the entire assembly an extra half hour before testing it for leaks. I turned on the motor in low speed and got it all primed up and working; everything looked fine. So I kicked it to high speed.

And it blew up.

The aftermarket (cheap) Hayward replacement fitting literally blew apart. Water shot up in a 2" fountain and soaked me and everything around me. In a real rush, I shut off the motor and looked at the damage. This is the part that failed:


No, the pipe didn't leak at the joint, nor did the union leak, The cener part actually blew out of the collar that holds the pipe to the motor and seals the connection. These things are two pieces, a female pipe connection with a flange that the collar pulls tight to a rubber washer on the motor fitting.



The centerpiece that connects to the pipe from the motor literally blew right through the collar and allowed that 2" stream of water to shoot right up in the air. Over time, I did a post-mortem on it. There were two factors that led to the failure. First, there was almost a 1.5 mm gap between the top of the collar and the pipe, where the original Hayward had less than a millimeter. Second, the plastic was softer and a tiny bit pliant instead of hard as a rock like the Hayward original. This is called 'durometer' if you want to look it up.


It's really hard to see in the picture because of the color and wear marks, but feeling the gap and the softer plastic, the problem became obvious. So, when the pressure increased, the plastic flexed a bit, and the larger opening allowed the entire female part of the fitting to shoot right through the hole in the collar. Sigh... Now, what to do about it? Well, the obvious choice was to just get a real Hayward fitting and bite the bullet. 

This time I decided to put a union in the middle of my vertical run so I could dismantle the plumbing a little better and not have so many fittings to buy if something else happened. It was a good idea in theory. When I repeated the same test of running it on low, then switching to high, the Hayward fitting (real one this time) held up and didn't leak. I thought I was home free until I noticed a leak at the top of the new union. Glued fittings don't leave any room for error; you can't take them apart and fix them, but I was sick of messing with this. So, out came the J B Weld Water Weld.


If you've never used this stuff, it's great for this kind of thing. It can set up underwater and is actually sticky enough to hold things in place. I use it a lot because plastic fittings in the sun deteriorate over time and sometimes leak. This stuff can fix that. I let the pool run on high speed for a few hours to prove it would hold together.

So, the temporary plumbing repair was done. I could test it a bit more to get comfortable and then start on the new concrete slab for the equipment. Since I wasn't totally confident that everything was perfect and wanted to hedge my bet a bit, I turned off the pool automation and left everything for the next morning when the area would be in the shade. 

The next morning, I went out near the equipment and turned on the pool motor... nothing. Walked over to the equipment, and the motor was not running at all. I checked the power; it was on. So, I tried it again and got that tell-tale buzz from the motor before it shut off. The most likely culprit was the capacitor. Off I went to get more tools for the pile by the gate, took the cap off, and checked it with a multimeter. That thing was a pure open circuit; something inside had actually broken. 

Of course none of the local stores had one in stock, but Amazon Prime came through the next day before sundown, and I got it installed and tested. Although I had to wear gloves because by the time the part arrived, the area had been in the sun for a couple of hours. 

Finally, I was done with this simple, easy repair job ... at least the easy part.

Wednesday, June 17, 2026

Chasing a Moving Target.

One thing I didn't have a problem with when I first got into home monitoring and control was the software changing underneath me. I fully realize that software changes over time and that we need to adapt if we want to keep up with the industry, but MONTHLY? REALLY??

Home Assistant has a monthly release schedule, and many of their releases cause changes in the various add-ons and integrations. Dashboards you spent a week getting "just right" change. New features don't work the way you expected. Plus, each of those custom items (especially cards) has its own updates that change the way they work. It makes one (me especially) reluctant to update anything once we get it working. But, for me, the real annoyance is changes to our toolset to create new things.

Espressif (the folks that created the ESP32 series) is especially harrowing to people like me that build their own stuff to control and monitor things. Their libraries change often, and code we compiled and worked with yesterday fails to compile when we update to get the latest new capability or bug fix. I had that happen too often. Then, you have to hunt for the release documentation and hope you find a clue to fixing the source that worked yesterday.

Between the tools and underlying system changing as we work on things and then waiting for bugs to be fixed, it's hard not to just stick with whatever works right now and simply ignore any changes because there's usually some teeth-grinding involved in using the 'latest' of anything. I've seen users complain that a lot more emphasis should be put on making things work than on piling feature on top of feature that most of us won't even use. 

Such was the case with my little Xiao ESP32C6 Zigbee temperature and contact sensor that was actively measuring the air temperature and watching the septic float. I installed a new release of ESPHome, and suddenly my cool little CYDs wouldn't work. Seems they changed some names of things I used. 

This was a royal pain chasing down which things changed to what. I just gave up and turned the task over to an AI. It prowled through my code, looked at the new errors, and gave me the new names I needed to put it. That trick saved me a ton of time prowling through forums loaded with ads and chasing my tail to get what I needed.

Remember this trick when you run into the same problem.

However, I still hold with not letting it write code for me. Especially when you have something that involves a lot of details. What happens to me is that I tell it what I want to do, and it does well until we're chasing a bug; then the conversation gets so long that the AI starts to confuse what worked and what didn't. It seems to get trapped in a loop where it simply confuses itself and can't recover. 

I'm all for using whatever help I can get putting something together, and would proudly use AI to overcome syntax errors I just can't see or get a new way to shift some bits around to meet some obscure spec, but be really careful doing it. In a couple of instances it told me to remove files that were causing problems. DON'T do that. 

If you do want to see just how well it does with code, be sure to back up everything in sight just to be sure it doesn't convince you that this is the best way to go and you delete a week's work.

And, as some of you probably noticed, I'm anthropomorphizing it already. Currently, I consider it a quirky research assistant of indeterminate sex. It's a co-worker that makes mistakes and gets lost in detail but is great at gathering information from obscure sites and putting it in words that I can understand. I can see a real danger though.

It's really good at finding things and telling me where to look for answers; how will that threaten future workers that aggregate data and present it in things like newsletters of new ideas and processes? Will we need humans to organize ideas and specifications for use? There are a huge number of people out there that are preaching the future of AI, and the Terminator movies didn't help us base our fears, real or imagined, on reality. People are already claiming it helps them with the stock market.

That kind of thing is for people that are far better than I at predicting the future of a new technology; I just want to use it as it applies to me. It saved me lots of time making the changes I inherited from the ESPHome codebase "update."