A unofficial package for Airthings Wave communication.
Project description
Summary
This is an unofficial Airthings Wave library designed to provide software developers a more developer-friendly library for BTLE handling for Airthings Wave devices. This library wouldn't be possible without the documentation and scripts available by Airthings. I hope to continue making updates through Airthings continued open-source contributions.
This library uses bleak
as a dependency instead of bluepy
for platform
cross-compatibility and support for asynchronous operation.
This project is currently in alpha state.
Goals
These are the goals for this project, in no particular order:
- Support platform cross-compatibility. Windows, Mac and Linux.
- Support WavePlus, Wave (Version 2) and Wave Mini devices.
- Support operation across multiple devices asynchronously.
- Code testing, linting, type hinting, formatting and coverage reporting.
- Discover all Wave devices or inherit WaveDevice class for sensor readings.
- Add battery life support.
- Implement reconnection logic for BTLE client.
- Support other devices like Wave (Version 1) and more.
Requirements
In Ubuntu Linux, make sure you have libglib2.0-dev
and bluez
installed:
sudo apt-get install libglib2.0-dev bluez -y
In theory, other platforms (Windows, Mac) are supported by using bleak
as a dependency, but open a ticket if you run into any issues.
Installation
You can install the library by running:
pip install wave-reader
Example Usage
There are various concrete examples available in the examples
directory. This includes
CLI interaction and other scnearios that demonstrate API usage.
import asyncio
from wave_reader import discover_devices
if __name__ == "__main__":
# Event loop to run asynchronous tasks.
loop = asyncio.get_event_loop()
# Scan for BTLE Wave devices.
devices = loop.run_until_complete(discover_devices())
# Get sensor readings from available wave devices.
for device in devices:
sensor_readings = loop.run_until_complete(device.get_sensor_values())
print(sensor_readings)
# >>> DeviceSensors (humidity: 32.5, radon_sta: 116, radon_lta: 113 ...
Testing
You can run the entire test suite by running tox
. It will run flake8
, isort
and pytest
.
If you'd like to just run unit tests, running pytest ./tests
is sufficient.
Special Thanks
I'd like to thank Airthings for their open-source work and commitment to air quality. Radon and other air pollutants often go unnoticed, so knowledge (really) is power here.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for wave_reader-0.0.3-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 3ee6c1ede300e2fc339e5119e03082af41da6aa2bae919be5929de63dcf86a8c |
|
MD5 | 985ff7f8435ea45d9e2ec64f64927a91 |
|
BLAKE2b-256 | f6f51eec3e5c5d51da1d5cef60b12202b41ab2996dc2260c57531151389386db |