The 4 finalisation steps have been completed -
- Actuator arm, see photo, this is now attached, and allows full articulation of the arm down to the button - it's lined up spot on, thereby justifying the use of CAD drawings and roughing out existing kit inside the CAD software. I didn't bother putting a spring loaded pusher element on the end, rather settling on a softly rounded touch point - I thought about applying some rubber for grip but this is completely unnecessary - I don't think there's any real benefit using a spring, as the Servo was finely controlled not to crush the switch down too hard.
- Develop software stack - talk about this later in another build log.
- As for securely attaching it to the heating controller - this is where I fouled up a little and excluded some quite important details from the CAD drawings and design stage (further design discipline needed!) - it all needed to be secured from behind so the arm can press against the button and isn't just lifting itself off the button. I ended up roughing out some clear acrylic stolen from an old computer monitor, the diffusion screen I think (not pictured because it's a travesty of a mount). It was very (badly) roughly cut to the size of both the timeswitch and heating controller, width wise, and the full height. I only then realised that all the wires from the timeswitch need to come out the back to the boiler. So I hacked a hole in the acrylic. This worked out okay because it also gives the timeswitch a nice base, a gap for the wires to protrude, and the wires (being secured to a plastic back plate that's supposed to be screwed to the wall) hold the timer in position nicely, at least stopping the unit from sliding downwards. I also screwed the heating controller box to the Acrylic, thereby preventing any movement of the black box, allowing the arm to press without moving.
- Fine tuning was done by hand by tweaking the Servo reach in the python code.

So it has been in operation now for a few weeks, has so far worked flawlessly. I'm actually really happy with it, it's amazing having the ability to wake up to a cold house and turn the heating on via a tablet or a phone whilst still in bed, then waiting a bit for the house to warm up - a real boon - likewise when returning home and I don't have the timer schedule on, I can turn the heating on without having to go all the way to my boiler cabinet. Nice!
For whatever reason my WiFi isn't all that stable, sometimes dying after many weeks / months of normal operation, requiring a reset of the broadband router. There has been one or two instances of this happening during the testing phase, and the Pi Zero has successfully reconnected when I've needed to reset the router, and it has done so without intervention, which is great. I've also not needed to reset the Pi for any reason.
All in all, very rewarding in build and in practicality!
.
.
.
I have expansion plans. Scope creep if you will. I realised it'd be great to know if the boiler was on or off - I can't hear that the heating is on most of the time so I won't know if the house will begin to cool down after the boost mode expires. I could get the Pi to count up 1, 2 or 3 hours but this is the 21st century, lazy!
See that white LED on the timeswitch above, that is only on when the heating is on. I have plans to implement a simple light sensor using an LDR and a capacitor (no ADC necessary). This is for the next log as it's not done yet, meanwhile here's a sneak peek inside Fusion360 for the design of this element -
And here's the (already tested on another Pi) circuit diagram -
The astute reader will realise this is an RC (divider?) circuit that the Pi uses to charge up, then measures the discharge time of the cap - due to the varying resistance (light levels), the discharge time will change, and is detectable in software.
I'm getting ahead of myself.....
Discussions
Become a Hackaday.io Member
Create an account to leave a comment. Already have an account? Log In.