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