I have always adored Christmas lights. Ever since I got my first set (back when they came in sets of only 20 or 40 tiny incandescent lamps; my first set was a 20, coloured, shadeless) I've done some sort of decorating for Christmas with them. All the way through university (I had tolerant housemates) through renting (tolerant flatmates) and now to the family house (tolerant wife) I have covered wherever I happen to be living with hundreds - nay, thousands - of little bundles of sparkle.
Once I bought a house I went even further. With no-one to stop me attaching lights to anywhere I could, in recent years I've been honing the rig, adding sets here or there, changing which set goes where.. in recent years I've run out of trees and bits of the house to take fairy lights so I've branched out to colour-changing LED lighting.
I've not gone as far as some people. Everyone's probably seen the mad house on YouTube who syncs a whole display including fireworks to music. Looks great - but a little hard to justify running at that level for all of December. Besides, my wife is definitely not that tolerant.
I've kept my display fairly straightforward, but still the result is quite spectacular, even if I do say so myself. Here's 2024's look:
This post looks at what goes on behind the scenes to bring this to life. Oh, and scroll to the end of this page for the big turn-on video.
The Lights (fairy lights)
My fairy lights have been purchased over the years from a myriad of suppliers. I started my collection back in the days before you could pick up cheap low voltage LED sets off Amazon. Back then, the only way to have decent, safe, outdoor lights was to spend reasonable money on professional sets. Which is what I did, and they still work today. Huge, thick rubber cable is common to these - they're the sort of lights that the council uses to decorate the town centre. Sets like this are connectable, where each string of lights has a socket on the end of it to which you connect the next set. It makes lighting up a roof, or a tree, much easier.
The 'icicle' lights around the house roof line are from Idolight.
The lights up the big tree and the cascade down the railings are from Konstsmide.
If you were to be in the market for these, suppliers like ChristmastimeUK and Christmas Direct are good places to start.
At a much lower cost - yet looking almost as good - these days it's easy to find low voltage stuff from Amazon or the garden centre. I don't go near the cheapest junk off Amazon (seriously, it's not worth the fire risk) but sticking to trusted brands feels fine to me. I have a number of such sets from Premier. I remember Premier fairy lights when I was a child, they've been going for decades and if you look at the selection of lights at most garden centres, chances are you'll find Premier products. They're good.
Their SuperBright series is decent, not expensive, and comes in very long strings great for large shrubs in the garden. My largest shrub has two sets of 1500 SuperBrights on it. They do require a lot of care when rigging, as the tiny thin wire can easily be ripped by large branches. But in terms of overall value for money, they're much more sensible than the big pro stuff, for most (of even my) purposes.
The Lights (sculptures)
I have a small number of sculptures, but not much to mention. You can see the set of robins in the foreground of the above photo. This is one area I'd like to expand upon in future, but the bigger sculptures are expensive (hundreds of pounds for a large reindeer, for example), always sell out so are never in the sales, are hard to store and even harder to find places to put them in the display.
The Lights (LED colour-changing)
Having run out of places to put fairy lights I needed something more. Taking inspiration from the plethora of Christmas light trails that have started cropping up at stately gardens recently - which use LED stage lighting fixtures instead of just fairy lights - I added some LED parcans to uplight the large tree in the garden. Full disclosure: Stage/event lighting is a side-job of mine so I've used this kit professionally.
They looked stunning, so fast-forward to 2024 and I've got a number of LED parcans and batons lighting up the tree and house. The better fixtures are from Thomann, are IP-rated for outdoor use, made of heavy metal with exterior grade cabling. They're rock solid and really bright. But, even though they're very much at the consumer end of pro lighting kit, are expensive.
To supplement these on the cheap I also have a some much lower quality LED PARs from eBay. They're not even IP-rated so I have to wrap them in clear plastic bags.. I will replace these in time with 'proper' ones.
The Control
Stage lighting is commonly controlled by a protocol called DMX. I won't go into details here other than to say you need a controller (e.g. a lighting desk), which sends a digital signal down a cable that loops through each fixture. Every fixture has a unique address so the lighting desk can send it unique commands. Simple!
When I got my first fixtures I wrote a simple little DMX controller myself that could fade colours up and down. Getting more fixtures, and incorporating control of my LED batons (which operate as four individual cells, each independently controllable) meant that this year I needed to upgrade my lighting control.
I use an Avolites T2 dongle for this purpose. Avolites are a manufacture of moving light control consoles used widely in the industry. The dongle versions of them allow for their software to run on a standard PC and output DMX via a USB port. I know the consoles from my stage lighting side-job (hence having a dongle already), and importantly - as we'll see later - their software has a web API for remote control. PC-wise I have a small Intel NUC I picked up off eBay.
Their software, called Titan, presents with a lovely large array of buttons and sliders.
So, thanks to Avolites and my little NUC PC, I have a professional lighting desk to create the DMX control signal to send to all my lighting fixtures. Nice.
The Control of non-DMX lights
The LED stage lighting fixtures take in power and DMX data, the data then tells the fixture whether it should be on, off, bright, dim, what colour etc. You simply give it power and data.
Fairy lights aren't that smart. They can't handle DMX data, indeed all you can do is give them power, or not. So I needed a way of converting from DMX data to a "power/no-power" scenario. A DMX-controlled relay (switch).
Fortunately these are easily available, and I picked up some super cheap ones on AliExpress:
Each one of these does three independent channels of control so I spread a few of them around the rig to let me control sets individually. In practice I just turn them all on at one, but nice to have the level of control to do sets one-at-a-time if I wanted.
The Programming
My new lighting desk afforded me a new avenue of control. I can program in effects where colours slowly change, where colours sweep across the house, where colours alternate between fixtures. There's almost a limitless number of options even in a really simple rig like mine.
In October I set up the rig in the living room and spent a couple of days programming. I didn't know exactly what it would look like when rigged on the house, but by lining the fixtures up in the positions in which they would eventually be rigged I could approximate it. And, programming in the warm was infinitely better than it would have been to program from the driveway.
The pre-programming sessions worked well. I created an hour-long set of different looks and effects then made it loop indefinitely, changing look once every five minutes.
I needed a little fine-tuning once the rig was up, which involved balancing the laptop (VNC'd to the PC inside that ran the lighting desk) on the car in the driveway.
The Wiring
Wiring comprised three parts:
Power to the "always on" parts, i.e. the LED fixtures and the DMX relays
DMX looping through all the active fixtures and relays
Various wiring for the fairy lights
Power Wiring
All outdoor connections happen in weather proof junction boxes. Sometimes these were too small to take all the connections so I had to deploy secondary boxes in the same location. The boxes I use have 5 cable holes, where this wasn't enough I added additional ones using IP-rated cable glands.
Power Supply
All power was wired back to the garage.
To optimise wiring it ended up connected to two 13A outlets on which I had power monitoring relays (I use the MyLocalBytes Power Monitoring Smart Plugs). This gave me the option of totally killing power to the outdoor rig, and also lets me sum the power used for interest.
All power cabling is a minimum 1.0mm2, 1.25mm2 where possible. The lengths aren't crazy, it's probably 30m to the furthest set of lights once the cable route around the garden is taken into account. But keeping the cable as beefy as possible will improve trip times in a fault situation.
I have a dedicated RCD-protected spur from the consumer unit for the Christmas lighting, so any trips caused by water getting in wouldn't kill power to anything in the house. Yes, before you ask, it was genuinely installed for Christmas lights.
The interesting observation is that the whole outdoor rig uses between 300 and 400W, depending on the combination of colours displayed on the LED fixtures.
DMX Wiring
The DMX cable loops around the lighting fixtures in turn. All runs use specific DMX cable (which has a 120 ohm impedance) and 3-pin XLR connectors. Where the cable connects to the Thomann IP-rated fixtures, which use special connectors, I had a variety of jump cables to convert between the connector types.
At the end of the run I fitted a terminator, which is recommended to stop reflections on the cable and helps keep the DMX working nicely. In practice, with a rig this small, I probably didn't need this but it didn't hurt to have it.
Each fixture also has a unique DMX address, shown in the diagram.
I tried to use cables of more or less the right length, to avoid having to hide coils of excess around the place. Keeping it as short as possible also helps for DMX reliability.
Fairy Light Wiring
This always ends up a bit of a mess because most sets need little low-voltage transformers, and invariably they're all different sizes and shapes. Getting them all connected neatly to 4-way extension cables in the waterproof boxes requires a fair bit of wrangling and is a major reason why I need quite so many boxes in the first place.
The Switch On
Enter the VIPs! Or rather, the children. I have a special box I made for this purpose which holds two large illuminated push-buttons. The children have to press both together (one button each) for it to engage, this is to prevent either one of them pressing their button prematurely in the countdown.
The box just contains the switches and button LEDs connected back by a long umbilical cable to the GPIO interface of a Raspberry Pi in the garage. I intentionally didn't want any wireless to the box itself as the driveway isn't blessed with a strong WiFi signal, and in any case the box would need power. Easier to just run a long length of 8-core alarm cable and put the Pi inside.
I wrote a little Python script to interact between the physical buttons and Home Assistant. Essentially when the buttons are pressed (together), the script sends a "switch on" message via MQTT to Home Assistant, which in turn switches on all the lights. I wanted the act of pressing the buttons to really engage the lights, rather than it relying on me in the background coordinating a button on my phone with the children's action on the button.
A toggle switch on the box puts the unit into "test" mode, where it fires a dummy event in Home Assistant that serves to check everything is working, but doesn't turn on any actual lights.
The Automation - Home Assistant
At the heart of the system lies Home Assistant. All it's doing is turning the lights on and off, really, but there are a couple of points worth noting.
A Quick note about the indoor lights
There's not that much to be said about the indoor Christmas lights. I use a bunch of WiFi switches running Tasmota around the house, all Sonoff devices but of a few different types as size/shapes/availability-at-time-of-purchase dictates. These are then all arranged by Home Assistant Group helpers into functional groups, e.g. "windows", "sitting room" etc.
Parent Controls
I created Input Boolean Helpers to give me a virtual toggle switch for each of four functions of Christmas light:
Outside
Windows
Sitting Room
Stairs
This reflects how we like the lights controlled. For example, the outside and window lights are fully automated by time but the sitting room lights are fully manual.
These virtual parents don't actually do anything themselves. User buttons operate the toggles and show their status, also their status is used to inhibit various functions e.g. the PIR-operated floodlights on the driveway don't come on if the Christmas lights are lit.
They are the single point of truth for the different parts of the Christmas light system.
Automations
To actually make the lights happen, I use Automations to perform actions based on the status of the parents.
For example, if the Windows parent switches ON, the Automation will turn on all the WiFi switches operating lights in the windows.
Some Automations can be inhibited, too. For example there's a toggle that stops the stairs light switches being triggered if the stair lights aren't rigged. This is because the stairs lights nick a WiFi switch from something else for the Christmas season, and setting a togle switch to change behaviour is easier and neater than rewriting Home Assistant Automations.
Automating the Lighting Desk
The lighting desk has a REST API that easily allows control by a third-party system. Home Assistant has a quick REST API control, of course. So I created a super simple REST API entity that calls the correct API in the lighting desk to recall the pre-programmed cue list, or to switch all the lights off.
rest_command:
dmx_lights_on:
url: 'http://172.16.1.4:4430/titan/script/Playbacks/FirePlaybackAtLevel?titanId={{titan_id}}&level=1.0&bool=false'
method: get
dmx_lights_off:
url: 'http://172.16.1.4:4430/titan/cript/Playbacks/KillPlayback?titanId={{titan_id}}'
method: get
dmx_lights_all_off:
url: 'http://172.16.1.4:4430/titan/script/Playbacks/KillAllPlaybacks'
method: get
The variable {titan_id} has to be ascertained by another API call during setup, and coded into Home Assistant when I add this REST command to a button or Automation.
The Switch On Video
Also giving you a little tour of what the rig looks like. Note my neighbour's house is almost as mad. Mine is the house on the left. Between the two of us we create an exceptional display in the street. People genuinely stop on the pavement, or slow down in their cars as they pass.
Rig Timetable
September: Go over cabling plans, ensuring I have the right number of waterproof boxes, lengths of DMX cable, etc.
October: Programming sessions in the living room, also checking that the DMX control of all the different fixtures works as I expect it to.
November: Rigging. It takes a good couple of days to rig everything outside (plus one for inside). The outdoor rig is also weather-dependent, so starting early in November means I can lose a day or two to inclement weather and not end up needing to be up ladders in the dark on November 30th.
December: Lights on! We actually turned them on after dark on November 30th as we decided we couldn't wait.
January: We strictly turn the lights off after New Year's. Although it takes me some days to de-rig everything afterwards, lights aren't lit after we head to bed after midnight.
Bootnote
Now, what to do differently in 2025?
Comments