So about 5 years ago I started considering if my skills with the Arduino platform were strong enough to consider having my hottub into an IoT device.

Now I’ve tinkered with electronics much of my life, a friend once joked “It’s not a party till Will’s got his soldering iron out” in reference to my tendency to have brought some LED creation to many a house party. That said, I’m much more skilled in software than electronics, so taking on the total blackbox challenge of how the hot tub control unit and the topside panel communicate felt beyond me.

Some years on and now in a different house with a different hottub, the idea surfaces again, though this time with a greater motivation than simply a having the tub ready for my return home after extended trip away; Now the motivation is that my energy supplier have a tariff where the rate changes every 30 minutes and I want to only heat the tub when the price is right.

I search and find that newer hot tubs from the same manufacturer do now come with WiFi control via mobile app and this has been reverse engineered. Not only this, but they have also then discovered the top panels communicate with RS485 and that the very expensive WiFi adapter is actually just a glorified RS485 to TCP/IP bridge, so by reverse engineering the app they also understand the internal communication bus.

Excited my this discovery I start testing the different connector on my own controller from the previous generation. The good news is that I discover this also uses RS485, the bad news is that the protocol is totally different.

Now had I been alone, I might have given up, but thanks to helpful assistance of other users with different controllers I got enough assistance to start the reverse engineering process. As this was a very new area for me to be working in I tried to be as open as possible with my progress in the hope that others might be able to offer advice and support, which some did.

I then gained my first user who had the same control unit as me so he started testing my code and making a few discoveries of his own. Quite some time later a new developer discovered my research. They clearly were more familiar with the electronics side, but armed with my research tha they were able to develop their own code to not only read the status of the tub but also fully replicate the control provided my the topside panel with a combination of code running on an ESP32 and an iOS app.

While they have not chosen to Open Source their own work fully, they were able to share sufficient code and information to allow me to also send control commands.

I have now achieved my aim of not only checking on the state of the hot tub from the comfort of the sofa, but now it moves between eco mode and full running based on the energy price right now. While all my electricity is 100% green, the tub only heats when the price is lowest, which is also when the total UK energy mix is also greenest, so I’m not triggering gas peaker plant usage by those not on s green tariff either.

I haven’t automated this bit yet, but sometimes the price actually goes negative so it would make sense to also raise the target temperature to the maximum 40C so that I’m paid to heat during that overnight period and won’t then need any suplimentary heating during the day - it can drift back down to 38.5C

None of this would have been possible without both the freely available tools like the excellent Home Assistant, but also the fundamental mindset of the Open Source community and it’s desire to share knowledge and the work they produce for the benefit of all.