This year we decided to add some extra holiday magic for visitors to our show. For the past few years we have had a scavenger hunt, but this year we decided to add some special elf magic for those who get all the questions right. When a visitor gets all the questions right, they are emailed a link. Clicking on the link will queue up a special sequence just for them. Check out the example below:
The first step in everything was moving the scavenger hunt from a manual process where visitors would send us an email with their answers to a Microsoft Form. This allows us to digitally collect the answers.
We then use Power Automate to automatically grade their form submissions. It goes through each question and checks if they had the right answer. At the end it does an evaluation if they got all the answers correct. If they missed answers, it automatically sends an email with the questions they missed. If they get all the answers correct, it sends an email with a link to click next time they come and visit the show.
When they come back and visit, the link they click calls an API on a Python script running in Azure Functions. The script returns a webpage that first geo-locates the visitor to make sure they are actually at the show.
Once they have been verified that they are within a radius around the light show, the script adds a command to an Azure blob database up to trigger the Scavenger Hunt and stores their name. This is where the power of ShowMon, our Q-SYS control system takes over.
Q-SYS automatically checks every 10s with the Azure Function script for commands. When it recieves a Scavenger Hunt command with a name it starts building the Scavenger Hunt sequence.
The first step in assembling the sequence is to utilize Azure Foundry Tools for Text to Speech. Q-SYS sends an API call with the message to translate into an audio file. Azure returns back a wav file which we store locally on the Core.
Once the audio file has sucessfully been downloaded, Q-SYS sets a MQTT topic to true to alert Falcon Pi Player that it has a Scavenger Hunt winner and is ready to go.
When the show reaches the top of the playlist, the first thing FPP does is check the MQTT topic. If it sees that the topic is false, it skips over the scavenger hunt and goes straight into the show intro sequence. If it sees the topic is true, then it sends a HTTP command to ShowMon to start the TTS audio and starts playing the Scavenger Hunt sequence. Once its finished, the MQTT topic gets set back to false and the show continues on like normal.