Chapter 4 Sensors in WildlifeSystems
The WildlifeSystems platform comes with support for some popular existing environmental sensors, although there are many on the market and the range available is subject to constant change. The modular nature of WildlifeSystems allows for new sensors to be easily integrated if the need arises.
WildlifeSystems takes an abstracted approach to sensors. Interface modules are provided for each sensor, which can be used to read the sensor data into a standard format.
As many physical packages contain multiple sensors (e.g. the supported BME680 can monitor temperature, humidity, air pressure and air quality) there is a conceptual difference between a “device” and the one or more sensors on a device.
4.1 Devices included in the base system
The Raspberry Pi does not come with environmental sensors, however there are several onboard sensors that are used to monitor the operation of the hardware, to prevent crucial components from overheating, including the temperature of the CPU and GPU chips. WildlifeSystems provides access to these sensors through the sensor-onboard
package, as well as providing some software sensors that report the free memory and free SD storage available. These can be useful for detecting and resolving possible issues on a sensor node before a serious problem arises.
4.2 Installing sensor support
Support for sensors is installed as part of the node installation process, however it is possible to install the sensor-control
abstraction layer onto any Raspberry Pi system using the command below.
wget -O - https://raw.githubusercontent.com/Wildlife-Systems/sensor-control/main/install | sudo bash
This will install the sensor-control
and sensor-onboard
scripts into the system, as well as installing a small of number of supporting packages if they are not already installed.
4.3 Reading data from a device
The sensor read command, sr
, can be used to list the available devices on a given sensor.
The sensor read command, sr
, can also be used to read data from a named sensor. Not specifying a sensor is equivalent to reading all sensors on that device (i.e. using the wildcard”*“).
This will give a JSON string listing information about each sensor (or just the specified sensor), and the current reading. This information can be presented in a more human readable form by piping the output to the program jq
, a command line JSON processor.
4.4 The sensor reading process
The sensor reading process in WildlifeSystems has five steps.
The
sr
command identifies which device script to route the request to.The sensor script calls the
sc-prototype
script to obtain a template (“prototype”) of the JSON request.The sensor script accesses the relevant sensor(s) and populates the values in a template for each sensor reading, before returning a JSON array of populated readings to
sr
.The
sr
script populates additional information for each reading, providing thenode_id
and atimestamp
for each.sr
returns the finalised JSON array to the user.