Read sensor data from Airthings Wave using Raspberry Pi
The Raspberry Pi is a tiny and affordable computer that you can use for fun practical projects. This guide will show how to read sensor data from the Airthings Wave using a Raspberry Pi 3 Model B over Bluetooth Low Energy (BLE). The available sensor data are temperature, humidity, running average 24-hour radon concentration and running long-term average radon concentration.
Airthings Wave is a smart radon detector with quick and accurate results on your smartphone. Additionally, you can simply wave in front of the detector to get a visual indication of your radon levels.
Setup Raspberry Pi
The first step is to setup the Raspberry Pi with Raspbian. An installation guide for Raspbian can be found on the Raspberry Pi website. In short: download the Raspbian image and write it to a micro SD card.
To continue, you need access to the Raspberry Pi using either a monitor and keyboard, or by connecting through WiFi or ethernet from another computer. The latter option does not require an external screen or keyboard and is called “headless” setup. To access a headless setup, you must first activate SSH on the Pi. This can be done by creating a file named ssh in the boot partition of the SD card. Connect to the Pi using SSH from a command line interface (terminal):
$ ssh firstname.lastname@example.org
The default password for the “pi” user is “raspberry”.
Install the BLE Python wrapper
The next step is to install the bluepy Python library for talking to the BLE stack. For the current released version for Python 2.7:
To read the sensor data from the Airthings Wave, you need the BLE address of the device. If your device is paired and connected to a phone, you may need to turn off bluetooth on your phone while using these scripts.
Next, make sure the BLE interface is turned on:
pi@raspberrypi:~$ bluetoothctl [bluetooth]# power on
To verify this, look for “Powered: yes” after issuing the following command:
Exit the bluetoothctl with
Download the two Python scripts by doing the following:
Run the Python script “find_wave.py” to find the BLE address of your device:
pi@raspberrypi:~ $ sudo python find_wave.py
The output will display all Airthings devices within range. The BLE address is on the form “xx:xx:xx:xx:xx:xx” and the serial number (SN) should match the SN number on the backside of your Wave. Exit the script using “Ctrl + c”. If you have many devices, you may run the command with a filter to find your BLE address:
where xx:xx:xx:xx:xx:xx is the BLE address you found using “find_wave.py”. The sensor data should now be printed. Exit the script using “Ctrl + c”.
The “find_wave.py” is using advertising data from the Wave to find its BLE address. Only one unit can be connected to the Wave at a time. This means that these scripts only can read the Wave data while your phone is not connected to the Wave, and vice versa.
The radon measurements are given in Bq/m3 and the maximum value that can be read by the script is 16383 Bq/m3. Note that the first radon measurements are only available one hour after the batteries have been inserted. The radon long term measurements are averaged from the batteries are inserted up to one year.
This guide has been tested with Raspberry Pi 3 Model B, Raspbian Stretch (November 2017), bluepy 1.1.4 and Python 2.7.13.