Hot Tub Time Machine

Now if only it could make me travel around in time.

I needed a clock at my hot tub so I could see what time it was and I played around with just hanging a clock on the wall outside but what fun is that? BORING! So I came up with the idea to install it inside the house on the back side of the window blind valance. I ran into some trouble… still having a tiny bit… but got it installed and working pretty nicely. Changing out a single outlet to a double tomorrow so I can plug the microwave and the wall wart into the same outlet inside the cabinet. I posted a video of the project on my channel:


The issues I am fighting right now are related to MQTT broker dropping everything still. Trying the code that changes the name every time it reconnects next. I know… should have tried that awhile back. One of my servers stays connected for a day or so. The other drops the connection after 20 minutes or less. It is being repurposed…the POS.

1 Like

Another cool project …keep em coming !!!

Interesting that you had trouble with the NeoPixels + ESP32. I had trouble early on with them, but now days I haven’t had any issues.

This the library I normally use:

I have a string of 300 that I’ve been playing with that are in my project queue:

That is the same library I am using. The issues that seem to be pervasive are 1) when the strip is powered up, the first pixel is always lit green. Nothing you do will change it. That wasn’t really an issue for me really as it just told me it was powered up and ok. Number 2) however was a problem. The example code in the Arduino IDE doesn’t have the case states and it doesn’t have any kind of termination of the animation. I wanted it to run on a timer and then stop. It would stop but nothing would clear the pixels. If you tried to restart it, the pixel states were corrupted and had to be powered off to reset (as described by someone far smarter than me that was dealing with the same issues). For some reason I don’t claim to understand, it doesn’t do it on an Arduino board. I had to add the blanking line…0,0,0… to the code and adjust my flash iterations number to make it so the timer off and the blanking line were together and it stopped while the pixels were off but it restarts jut fine. Would just lock up on the ESP32. The current configuration works fine though it’s probably overkill. But I have all sorts of stuff I want to add to those boards in the future so it is acceptable.

The state machine makes sense though as a button press cycles it back to the off state and it is still technically “running” data to the Neopixels as it didn’t just shut down the communication… it’s just telling it to not light anything. I can see how that could be modified to do what i was shooting for but with only 2 states… the animation I wanted and a dark state. It’s all good.

I have never used… or even looked at for that matter… platform I/O. Is that your go-to IDE?

I can’t find it, but I’m sure @jon has a video on this topic. The ESP32 will drive that line at 3.3v and that’s technically out of spec. I’ve always gotten away with it with most of my projects, but maybe this is what your tripping over.

He had a cheat method of adding a single NeoPixel (or FreePixel from his store :wink: ) and putting in a diode to drop the voltage by half a volt on the first one. Then powering the rest with the regular 5volts and passing the data line through.

The pixels hold the state of what they were sent, so technically if you don’t introduce any static on the line you can unplug the data line and they’ll persist until power off. For turning them off I just send black (0,0,0) to them all, then show. But there looks to be a .clear() function now.

PlatformIO is a build tool chain, because managing software dependencies is a barrier for me doing a thing (I’m a maintainer on KSP-CKAN because managing mods by hand also irks me :joy:). I climbed the learning curve after accidentally flashing an ESP8266 embedded in a wall for the third time in one afternoon as the Arduino IDE picks the first device available and that happened to be one advertising OTA and not the one I was flashing non a non OTA to, that was conveniently not plugged in :roll_eyes: - My regular IDE is VIM with lots of plugins :smile:

I do recall seeing something about the 3.3v drive issue now that you mention it.

I did see the .clear and tried that as well. But I think by the time the .clear was given, the data line was already locked up. The timer expiring just kills the output so sending a .clear and .show nets nothing. It’s all good. It works fine on the Uno and I send it a 0,0,0 as the last color in the animation to clear the display and when it gets shut down, it stays dark. It restarts perfectly when commanded.

Aaaannndd the driveway alarm side of the system…

Driveway Alarm Video