How It Works

High level overview of how the show behind the show is set up

It’s kind of crazy, right? There is a lot going on behind the scenes to bring you all the fun. You can read below to see how it all comes together or just go back to watching the lights blink and be happy knowing that getting it to work is not your problem!

There are a few ways to interact with the show or monitor what is going on in case issues arrise. Interacting with the show allows you to pick a song, turn on the outdoor speakers, make it snow, and change the colors of some of the props in the display. At the same time, we are able to monitor what is going on behind the scenes to see if there is anything that needs to be fixed or adjusted.

Interacting with the show

Visiting our website will give you the ability to do certain things right from your phone or computer. You are able to pick a song to play, make it snow and more!

Requesting a song: We use WordPress to build our website where all the interactions take place. When you select a song from our site, the request is sent from your device over to Remote Falcon where the request is captured. Remote Falcon then tells our primary show controller to play that song! Easy peasy!

Making it Snow : When you click the button to make it snow a number of things happen in the background for it to work. The flow is similar for the speakers and for changing the prop colors:

  • WordPress calls a webhook that talks to HomeAssistant
  • HomeAssistant responds to the webhook by sending data to a specific MQTT Topic on the Mosquitto MQTT Broker
  • At the same time, Node-RED is listening for something to be sent to that topic. When it sees that HomeAssistant has done so it runs some logic to see if we should turn on the snow (see the image below)
  • If the logic checks out, Node-RED will tell HomeAssistant to send a zwave or zigbee command to turn on the snow machine and the light that makes the snow visible in the dark
  • If the logic fails one of the checks then nothing hapens. In other words, you can click the button all day long, but it will not turn on the snow machine. The Node-RED logic flow is shown below
Node-RED flow to turn on the snow machine

The logic flow above it starts with the purple MQTT Topic that is being watched. The first check sees if we manually disabled the snow (bad weather, out of snow fluid, etc). The next check sees if it was triggered in the last 10 minutes (we do this so that the snow machine is not constantly going on and off to use up all the fluid). The logic then checks to see if it is during the allowed time of 6PM to 9PM. If all of these pass, Node-RED tells HomeAssistant to turn on the snow and lights. A delay is then set for each device (15 and 30 seconds) after which Node-RED tells HomeAssistant to turn the devices off.

We have simialr flows and logic used to turn on the outdoor speakers and to change the colors on various props in the display.

How do the lights, music and projector all stay in sync?

The entire show runs on Rasberry Pi computers that are in various garages, boxes, and trees. Each song is a sequence that is programmed with the music in sofware called xLights. It takes many hours to program each song, and we get to listen to each song over and over and over and over and ahhhhhh!!!!

Ok, back to the controllers. All of the Raspberry Pi computers stay in sync from the primary controller which runs Falcon Player open source software. This controller sends data to all the pixels on our house, sends signals down the street for all the remote houses, sends timing signals to the other Rasberry Pi computers, and it even sends signals for the light up wands. It is very busy during the show.

The other Raspberry Pi computers recieve timing signals and run lights or matrix displays such as the projector in the window. A view of how it all connects is shown below:

Connections between the primary controller and the various other devices

How does the show work all the way down the street?

Well, it is not exactly magic, but sometimes it feels that way! We have AMAZING neighbors who put up with our craziness. In order to get the signal down the street in both directions we use Ubiquity long-range antennas. Those extend our network from end-to-end and allow us to connect our busbeechristmas controllers to their trees and houses. It basically blankets the street in a WiFi network. Each tree has a custom built board, and anyone with lights on their house use a custom built wireless adapter.

Each tree has one of our custom built 4-channel boards
Each house with lights has a custom built wireless adapter in use on their Light-O-Rama controller

What can you monitor behind the scenes?

We use a few applications to monitor things going on with the show. HomeAssistant not only does a lot to control the show, but it also lets us have a dashboard to see what is going on. We can turn things on and off (such as disabling snow for bad weather), and also see how many times the interactive features are being used (to see if we want to add more in the future).

We can also log into every controller up and down the street to see if there are issues. We have a website dashboard with direct links to everything which allows us to make changes or fix problems.

Mattermost is like the application Slack. We us it for messaging from the various show controllers so that they can report any issues. We get notifications when things turn on and off as well as when things are not doing as expected – such as the show is running but the power is not on to the lights (clearly that would not be good).

The great thing about the montoring is that it allows us to be out and about without having to be worried about the lights. We know that everything is running as expected or we can shut things off if there is bad weather.

Wait, I have more questions!!

Great!! We have other details on specific controllers and software on our Behind The Scenes Page. And we would love to hear from you with your questions and comments. Use our Contact Page to send us a message or fill out our Guestbook to let us know you were here!