In 2018, we added the ability for viewers to supply their first name via text message and have it included in the display. The name immediately displays on the small grid under the display and then every 10 minutes or so, a 1 minute sequence is displayed where 13 names are included on the 18' X 8' grid. Here are two videos.
How it works
We use the Twilo service to convert inbound text messages to API calls on our web server.
Our web server (apache + python) to accept the message from Twilo.
If the name isn't in the white list, a text message is sent to the admin and the originator of the message is notified that the name needs reviewed.
For valid names, a MQTT message is generated and sent to both the Clock VM and the xLights VM box where it will be added to a local queue.
the CLock VM is running a custom C++ program. This program is written to always drain the queue of names before doing any other greetings / graphics.
The xLights VM is a Ubuntu vm running a python process. The name will just be added to the queue of the python process. The current queue is always published by the python program every 20 seconds so that the web server knows the current status.
In fpp, the sequence is set up so that a sequence called "WISH_Names.seq" is played approximately every 10 minutes. When the song before "Wish_names.seq" starts to play, a MQTT message is sent from the the FPP that is consumed by the python process on the xLights VM.
the xLights VM, having received a signal that it is time for the next batch of names, will take the next 13 names from the queue, and generate a new xLights .xml file. It does this by loading a template file that has %NAME_1%, %NAME_2%, ... , %NAME_C% and just doing a simple replace.
Once the .xml file has been generated, the python process runs xLights -r WISH_Names.xml to generate the .seq file.
As soon as the .seq file is generated, the python process uses sftp to overwrite the previous Wish_names.seq file on the fpp server.
At this point, since this is the next sequence in the play list, it will play. The only trick is to make sure that the previous song is long enough for the entire sequence to complete (gen xml, gen .seq, sftp file). On my hardware and with my sequence, I need about 50 seconds.
The source code is avaiable if you are interested.
The web server also contains and admin page that allows us to remotely monitor the queue. We can remove or add new names the queue (without going thought he name validation.) . This will just generate the same MQTT messages that are consumed by the xLights VM and CLock VM machines. Most of the time, we use this to "add" any valid names that were incorrectly blocks by the name filter. Because of this, we have a one click "add" button that is displayed against anything that doesn't pass the filter.