Text-based menus and information pages

Pi Sensor Python Example

For the final project, I want to show Raspberry Pi sensor data in a Whiptail message box. My setup uses a low-cost DHT11 temperature and humidity sensor (about $3-$10), but the more accurate DHT22 module could also be used. These sensors have a three-pin configuration with power, ground, and signal connections.

The Python library for both the DHT11 and DHT22 sensors is installed by:

pip install Adafruit-DHT

A Python wrapper library offers all the Bash Whiptail functionality. Note that this library requires that the basic Whiptail utility be installed as a prerequisite. To install the Python library, enter:

pip install whiptail-dialogs

Once the DHT and Whiptail libraries are loaded, you can create some lightweight projects that connect the sensor data with text interfaces.

The example in Listing 3 imports the Adafruit_DHT and Whiptail libraries (lines 5 and 6) and then reads the DHT11 sensor on pin 4 (line 9). The humidity and temperature values are put into a message string (line 12) that is shown in a Whiptail message box (line 15).

Listing 3

Python DHT11 Sensor Project

 

An alternative approach to the Python Whiptail library is to write all the code in a Bash script and then call Python in command-line mode. The Python command-line option -c executes a string of Python statements; for example:

$ python3 -c "a=4;b=5;print(f'{a}+{b}={a+b}')"
4+5=9

The Bash script in Listing 4 calls Python to return the sensor data as a Bash variable (msg; lines 8-15). Python imports the DHT library (line 11), reads the sensor (line 12), and then prints the results as a string (line 13). The Bash variable (msg) is then shown in a Whiptail message box (line 18).

Listing 4

Bash DHT11 Sensor Project

 

Bash and Python scripts each have their own benefits and drawbacks, but the end result produces the same text interface. Figure 5 shows the Raspberry Pi hardware and the sensor data in a Whiptail message box interface.

Figure 5: Raspberry Pi sensor project.

Summary

Whiptail, preinstalled on Raspbian, is a simple tool for creating text-based interfaces. If you need more functionality, take a look at the Dialog [3] utility, which supports all the Whiptail features and about a dozen more presentation boxes. Two of the features I especially liked about Dialog are inline custom colors and the ability to refresh pages with a time-out parameter.

The Author

You can investigate more neat projects by Pete Metcalfe and his daughters at https://funprojects.blog.

Buy this article as PDF

Express-Checkout as PDF
Price $2.95
(incl. VAT)

Buy Linux Magazine

SINGLE ISSUES
 
SUBSCRIPTIONS
 
TABLET & SMARTPHONE APPS
Get it on Google Play

US / Canada

Get it on Google Play

UK / Australia

Related content

  • Julia on the Pi

    Create GUIs and a web app that connects to sensors.

  • Xonsh

    Create lightweight Raspberry Pi scripts with Xonsh, a Python shell that lets you write scripts in Python with Bash commands mixed in.

  • Bash Web Server

    With one line of Bash code, you can create a Bash web server for quickly viewing the output from Bash scripts and commands.

  • Gnuplot

    Use Gnuplot with command-line utilities.

  • Go on the Rasp Pi

    We show you how to create a Go web app that controls Raspberry Pi I/O.

comments powered by Disqus
Subscribe to our Linux Newsletters
Find Linux and Open Source Jobs
Subscribe to our ADMIN Newsletters

Support Our Work

Linux Magazine content is made possible with support from readers like you. Please consider contributing when you’ve found an article to be beneficial.

Learn More

News