Senior citizen-friendly video telephony system with a Raspberry Pi
Push of a Button
A video telephony system with huge user benefits does not have to be complex. This project starts a phone call with just a single button press and switches channels automatically on a TV.
The coronavirus pandemic has the world in its grasp. With social distancing and family dispersion, many people are not able to see their grandchildren. Even a cellphone is too complicated for some senior citizens, and they may not want to have anything to do with PCs. One alternative could be an Internet-enabled baby monitor with a return channel, but it won't have video. Besides, grandma and grandpa don't want to be monitored, and you don't want the baby monitor to alert you every time your grandparents walk past the device.
With no simple video phone to be found thus far, the question is whether the Raspberry Pi comes to the rescue and whether it can be built without any advanced Raspberry Pi knowledge. In this article, I look at a video telephony solution based on the Jitsi [1] open source video conferencing solution that is useful for even the least computer savvy seniors (see the "Jitsi and WebRTC" box). One button turns everything on and just as easily turns everything off again. Ultimately, the Raspberry Pi needs to be able to do three things: switch the TV to HDMI, send email, and, of course, start the video call.
Jitsi and WebRTC
Today, many multimedia applications such as audio or video calls no longer require separate programs such as Skype. The free WebRTC [2] standard enables modern web browsers to send voice, video, and data directly from user to user – and without a central server instance. Jitsi is based on WebRTC and, as an open source solution, does not even require authentication. It is enough to open a Jitsi meeting on a website [3] and send an invitation to the conversation in the form of a URL over email or chat to the desired call partners. This straightforward approach makes Jitsi Meet an ideal candidate for a senior-friendly video chat solution.
Hardware and Preparations
The setup of the automated video conferencing system is based on a Raspberry Pi 3B+ with a case and a power supply, on which the latest version of the Raspberry Pi OS "Buster" is installed and Internet access is configured. To be able to control a TV by CEC (Consumer Electronics Control), you also need an HDMI cable that meets at least HDMI standard 1.3 (high speed). Also pay attention to the quality of the power supply. Because the webcam is powered by the Raspberry Pi over USB, the power supply needs to output 2.5A or more. Only testing can determine whether the power source will do, because even if the label on the adapter claims the right kind of performance, it might not necessarily achieve it in practice.
Ultimately, the shopping list includes a simple push button with two matching connecting cables that will later serve as an on/off switch. For the button, I drilled a hole into the case. If your expectations for the webcam are not too high, all of the components together will set you back something south of $100. The Raspberry Pi 3 would be overtaxed with very high resolutions, anyway, so a very simple webcam is absolutely fine (Figure 1). In the test, I worked with a no-name camera from my lab treasure trove. Although it has a microphone, it does not work as a USB audio device, so I needed an additional USB sound card with analog audio input. Alternatively, I tested a more modern webcam from Logitech.
After setting up and configuring the video chat solution, the Pi does not need any input devices. For the initial setup, however, connecting an external keyboard and mouse makes work easier. You should also enable SSH access with the raspi-config
configuration tool. In this way you can connect to the system over the network and, for example, install updates, even when the keyboard has been removed from the Raspberry Pi.
On the software side, the Chromium browser and the important x11-xserver-utils component are usually already included by default in the current Raspberry Pi OS. However, if you are building the system on an older Raspbian version, you might still need to install the chromium-browser and x11-xserver-utils packages:
$ sudo apt update && sudo apt full-upgrade $ sudo apt install chromium-browser x11-xserver-utils
The first line updates the system before you start the installation.
Dispatching Email
For the system to be able to send email on its own, you don't necessarily have to set up a complex mail server (or more precisely, MTA, Mail Transfer Agent) such as Sendmail or Postfix – that would be over the top. It is easier to integrate an existing email account with a web mailer (e.g., AOL Mail, Gmail, Outlook.com, Yahoo! Mail). The email client's task is handled by the msmtp
[4] command-line program. You can import all the necessary components with:
$ sudo apt install rdate msmtp msmtp-mta mailutils
For the configuration you then have to create three text files. In the following example, I will be using the services of the German portal Web.de; however, you can use any other email provider that operates an SMTP server. The server addresses, ports, and access data are usually explained by the services in the depths of their documentation. To set up the email tool for your web mailer, open the text editor with
sudo nano /etc/msmtprc
copy the content from Listing 1, and paste it into this file.
Listing 1
/etc/msmtprc
# default values defaults auth on tls on tls_trust_file /etc/ssl/certs/ca-certificates.crt # web.de account <john.doe>@web.de host smtp.web.de port 587 from <john.doe>@web.de user <john.doe>@web.de password <SecretPassword> account default: <john.doe>@web.de aliases /etc/aliases
Of course, you do need to adjust the email address and password to match the service you use. Save the change by pressing Ctrl+O and Enter and return to the command line by pressing Ctrl+X. Remember this procedure: In the following instructions you will need to edit and save more text files in Nano. Note that the password (here, <SecretPassword>) is open and unencrypted in this file. To prevent every user on the system from gaining access to the credentials, use the
sudo chmod 600 /etc/msmtprc
command to change the file permissions.
In the next step, assign the sender, in this case the root user, the email account just configured as the sender. To do this, create the /etc/aliases
file in Nano the same way as before and enter the customized contents:
root: <john.doe>@web.de default: <john.doe>@web.de
Finally, to make sure that the system uses msmtp
as the email program, the line
set sendmail="/usr/bin/msmtp -t"
in the /etc/mail.rc
file defines it as the alternative to sendmail
.
TV Remote Control
To avoid your grandparents having to fiddle with the remote control, you now want the system to turn on the TV and switch to the correct HDMI input automatically – and switch back to the normal cable TV tuner after hanging up. For this, the Raspberry Pi and TV communicate with each other by CEC on the HDMI cable. You can install the necessary software from the cec-utils package. Then scan for CEC-capable devices (Listing 2).
Listing 2
TV Remote Control by CEC
$ sudo apt install cec-utils $ echo 'scan' | cec-client -s -d 1 opening a connection to the CEC adapter... requesting CEC bus information ... CEC bus information =================== device #0: TV address: 0.0.0.0 active source: no vendor: LG osd string: TV CEC version: 1.3a power status: unknown language: eng [...]
Typically, the TV advertises itself as device #0 and the Raspberry Pi as device #1. If only the Raspberry Pi appears in the list (vendor: "Pulse Eight"), CEC is probably not enabled on the TV.
Depending on the manufacturer, the name for the CEC technology differs: LG refers to it as SimpLink, Sony uses the term BRAVIA Sync, and Samsung says Anynet+. An overview of common manufacturer designations can be found on Wikipedia [5].
If it still doesn't work, you need to take a closer look at the HDMI cable. If it is not a high-speed cable, the communication channel to the TV is usually missing.
Buy this article as PDF
(incl. VAT)