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 Airthing's 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.
- Add other interfaces like MQTT, AMQP 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.1-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | e72a42d826f1e29a5ca1a16cfcba2dc15f03baea8d606aac89da48a7653fc59d |
|
MD5 | f39637a1e3e3c30dbb03684f9718a596 |
|
BLAKE2b-256 | cb6b8e6623c15e107e31008c25872e1475d681a06cb4ac19c5b63d16582e0bbb |