Introduction: Pi_signage - Digital Signage Managed by Email

About: I am a retired Telecoms Manager. I have been into computing since the 1960s, operating computers with punch cards, programming them and doing systems analysis. I have experience with UNIX (and now Linux), a va…

I needed something that could display information on an existing screen in our church. I wanted it to be as easily managed as possible as it is likely to be maintained by people with little or no knowledge of the computing device used.

I defined a "Digital Signage" system to be one where a slide presentation displays a number of informative pages on a continuous loop. So that is my target for the design I came up with.

The goals I used for this project were:

  1. As low a cost as possible. After all our church does not have vast amounts of money to spend on items like this on a regular basis.
  2. Creation of the information pages to be kept as simple as possible. After all a Digital Signage system is a screen displaying a presentation with pages of information.
  3. Use the internet to deliver the presentation and do the system maintenance. This is achieved by emailing a command to the system. After all, sending an email is in everybody's skill set these days.
  4. Daily status message to be send to the System Administrator to detect problems and see how the system is performing. This too is kept to an absolute minimum.
  5. Provide some security whereby only authorised email addresses can send instructions.

As I did not find anything on the internet that came close to these goals, I decided to create it myself.

As a retired Telecoms Manager for a large IT company I have expertise with Unix (and now Linux), programming and systems design. I also know a bit of Python programming and have been playing with Raspberry Pi for quite some time.

Thanks to the internet, I found many examples in Python for handling email messages, etc. etc. So there were enough resources abound to help me with my design.

The project I designed consists of Shell scripts, Python programs, configuration files and some data files. I use CRON and AutoStart features in the operating system to manage the system.

I created documentation for the System, the scripts, programs etc. and a "User Manual" for those who are going to produce the presentations and who are going to manage the system.

For the presentation itself I decided that Google Slides is the preferred method, while allowing PowerPoint and LibreOffice Impress presentations. This version can handle these three presentation methods. In the future this may be expanded.

Supplies

The hardware I used is the following:

Raspberry Pi 4 with 2Gb memory and 128Gb uSD card

Operating System software from the Raspberry Pi site

Power supply, HDMI micro to full size converter cable and a nice case for the Pi

Existing video screen and video distribution system in our church (see main picture)

I also used:

ENERGENiE remote controlled power sockets (aerial must be soldered onto the i/f board)

Digital Signage Software

The software is available from my Github repository by clicking here

Screen, keyboard and mouse are required for setting up the Raspberry Pi. I followed the instructions on the Raspberry Pi website to download the O/S and to set-up the Pi.

In my implementation I use the ENERGENiE power sockets to turn the screen on and off. It turns out that our church screen displays a set of screen saver pictures when no HDMI signal is found. These cannot be removed or bypassed. In a church environment, during a service, this is not wanted. So, turning the mains power on/off to the screen was the solution. You may have to experiment a bit with this..

Step 1: Setup the Raspberry Pi

I am assuming that anyone wishing to install and use this Digital Signage software knows how to set-up and use a Raspberry Pi.

My documentation that comes with the software includes installation instructions. I suggest that you follow them.

First we need to set-up the Raspberry Pi. If you need help, go to the Raspberry Pi website here. This will tell you exactly what to do. Make sure you enter the device name, WiFi SSIDand password so that when the Pi boots up, it connects to your network.

Follow the instructions to install the operating system, have it update itself and that it boots up to the desktop. This should also verify that the Pi has access to the World Wide Web.

Using the Raspberry Pi configuration utility (in menu option "Preferences"), ensure that you enable SSH and VNC. That allows you to access the Raspberry Pi remotely from your computer. It is also useful when the Pi is installed in it's permanent place if you need direct access to the device itself.

Verify that you can access the Raspberry Pi remotely via SSH or VNC. This will help in the installation of the software.

Step 2: Download and Extract the Software

Download the software onto the Raspberry Pi from Github by clicking here.

I suggest you create the following as the working folder for all the files and where you are going to configure the software: ~/Documents/pi_signage.

Using the File Manager, extract all the files into this working folder.

You should now have all the scripts and programs in the working folder and the documentation in the sub-folder "documentation".

Step 3: Start the Installation

I suggest you now read the "System Documentation" for this project. It explains how it all works and how to install it. The "User Manual" shows what skillsets are required to produce presentations and to manage the installation.

Appendix D in the "System Documentation" shows the steps to take to install the software. I suggest you follow these steps in the order they are listed.

There are a number of Linux utilities and Python modules that will have to be installed. The full list of these is in the installation instructions. Each one has an instruction on how to install it..

You will need to set-up an email account for your installation. Make sure that you get the password for the email account provided by using the "apps" feature. This is a secure method of logging into the email account and avoids the "Two Factor Authentication" the main password requires.

The final version of the software should be run from a "production" folder. I use the folder "~/Production/pi_signage" for my installation. All AutoStart and CRON entries refer to the production folder scripts and programs.

Only change programs and scripts in the working folder. I like to keep the production files separate and only update them by using the "Makefile" provided..

There are two configuration files to be edited. They are ".env" for the secret email information and "signage.conf" for the common installation constants. The instructions in the document explain what each file contains and what may need to be changed.

Step 4: Test the Installation

Now that everything is configured it is time to test the installation.

Make sure the "DEBUG" parameter in the ".env" file is set to "True" so that the scripts and programs will write debug messages to the main log file which by default is "pi_signage.log".

I suggest the following tests:

  • Start the check_read_email.sh and test that it opens the email link and that it checks for emails in the INBOX. Send an email to the installation email address. Check that the email is read.
  • Create a test message to send as an email from the installation. Or run the "daily_status.sh" script to send a status message. Check the log to see if there were any errors.
  • Using Google Slides, create a test slide show and, following the instructions in the "User Manual", email the URL to the installation. Check that the email is being read and that the presentation starts.
  • If all the above are working, install the project into the production folders and configure the CRONTAB and AUTOSTART facilities so that the presentation and email checking are started at boot-up and at regular timings. The rest of the CRONTAB entries depend heavily on the implementation of this project.

If it is all working, make sure that you update the production files by using the "Makefile". Don't forget to set the DEBUG flag to "False" before updating the files to the Production folder otherwise the log file will be pretty full.

Step 5: Now It Is Running

I have no doubt that anyone implementing this software has suggestions on how to improve it, change it, etc.

I am very open to any suggestions and you are also free to use the scripts and programs to suit your own needs.

Happy Digital Signing!