Hot Tub: ESP8266 IoT Temp Monitor and NeoPixel Lighting
Finally got our free hot tub hooked up. Well, not so “free”. Hot tubs are never free unless you have all the electrical and other bits already. Anyway, I wanted to add some remote temperature monitoring as well as jazz up the lighting a bit. Given Winters can get pretty cold here in Canada, I wanted to get notified if the temp falls below a threshold as frozen pipes in a hot tub pretty much spell disaster. Blynk is my go-to app of choice. If you haven’t heard of Blynk, you are missing out on the biggest thing since slice bread for IoT!
These days my go-to controller is the NodeMCU Mini ESP8266. I hooked it up to a DS18B20 temperature probe and an Adafruit NeoPixel Jewel. Currently this system is completely isolated from the hot tub controller – I didn’t want to mess with something I didn’t understand as it’s an older tub and the controller boards are hard to come by. I also don’t mess with high voltage. This is not a big deal and simply means that you can’t turn on the hot tub lights by the switch located in the hot tub. Which is moot given I just use my phone to set the lights and they are on a timer anyway. You can also check out how this is integrated into my WIoT-2 master unit.
The sketch is pretty straight forward. It monitors the temperature and sends readings every 2 minutes to my master Blynk app where the data is plotted on a History Graph which shows the temperature over time. There are also triggers that to send a notification to my phone & watch when the temperature falls below 60F. This is particularly important during the winter when the temperature can fall well below 0C in our Canadian winters. Don’t want to be dealing with a frozen hot tub! My Blynk app is multi-tabbed and allows me to control and monitor this unit, my garage door status device, my WIoT2 device as well as other future devices.
The Blynk app has the following features:
- Plot the tub temperature over time in degrees F.
- Button to allow me to turn the NeoPixel ring on / off – triggers white.
- ZeRGB widget which allows me to set mood lighting to whatever colour I want.
- Dropdown to allow for a bunch of different “light shows”.
Components:
- NodeMCU Mini ESP8266.
- DS18B20
- Adafruit NeoPixel Jewel.
Sketch:
“…hot tub light controller won’t do anything itself s I have swapped…” Looks like you may have meant “…itself, so I have…”
Fixed! Good catch.
It appears that the code that you posted is messed up. When I copied it into Arduino IDE, it pasted it all on one line and it tried to comment everything out.
Hmm.. Seems to be an error between the keyboard and chair I think.. 😉 Kidding aside, it works fine for me. Click link, copy all code from window, paste in IDE. If you are still having issues, I suggest you first copy it to a good text editor – Notepad++, then to Arduino
Hi, did you just hang the sensor over the side and into the tub? I was thinking about how I could do this more elegantly but haven’t come up with anything other that using a threaded sensor (if this sensor can even be found threaded) and a female boss attached to piping somehow. Go Canada!
Yup… Ghetto approach. Just ran the wire up and under the cover into the tub.. Been working fine for a few years now. Given the chemicals, the sensor and wire have held up quite well being in there 24×7. I suspect it would probably be better for just the sensor tip to be exposed to the water however. I expect at some point the glue that seals the tip and the silicon sleeve will fail.