Skip to main content

Wave by Genki

Wave is a unique smart ring manufactured and maintained by Genki. This repository contains the official Python API interface for Wave, arguably the easiest way to work with data from motion sensors in Python.

The API provides access to Wave's onboard sensor data, as well as processed motion data using proprietary algorithms in an accessible form factor.

For more details, please refer to the technical documentation.

Wave

Installation

This package has been tested with python 3.8 on both macOS and Linux. Installation is straight forward.

python -m pip install genki-wave

Note that bluez is a requirement on Linux-based systems.

Setting up the Wave ring

Make sure you've installed the latest firmware on your Wave by following these instructions.

To turn Wave on press the middle button, to turn it off hold the top and bottom buttons down for one second.

Refer to the technical documentation for a detailed overview of how to use and interface with the API.

Quickstart

General

Turn Wave on and make sure it is not connected. To find the Bluetooth address of the nearest Wave, run the following

from genki_wave.discover import run_discover_bluetooth

run_discover_bluetooth()

And the following example uses a callback that prints out which button has been pressed, along with the sensor reading every 5 seconds.

from genki_wave.asyncio_runner import run_asyncio_bluetooth
from genki_wave.callbacks import ButtonAndDataPrint

callbacks = [ButtonAndDataPrint(print_data_every_n_seconds=5)]
ble_address = ""  # Address of the Wave ring, found in the previous step
run_asyncio_bluetooth(callbacks, ble_address)

Further examples are in the examples folder.

MIDI

The simples way to start is connecting Wave as a BLE MIDI device and running examples/run_midi.py. This example only depends on pygame and allows you to receive data from Wave in standalone mode.

Known issues

  • bleak the Python Bluetooth library, can only connect to devices that are not connected to the computer. After pairing Wave to a Linux machine Wave tends to connect automatically quite aggressively and cannot be accessed via bleak. One solution is to use bluetoothctl to disconnect before pairing with genki-wave.
  • Wave needs to be off and disconnected before receiving any data via the serial port.
  • There is an error when you have Wave connected via Bluetooth and use asyncio to receive data. If you kill the program, e.g., with a keyboard interrupt, Wave stays connected and has an invalid state. For the time being you can hold the top button for a few seconds to properly exit the program.

Metadata

Release files for genki-wave 0.5.3

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for genki-wave 0.5.3
File Size Uploaded Provenance Actions
genki-wave-0.5.3.tar.gz 21.2 kB Without provenance Details for genki-wave-0.5.3.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for genki-wave 0.5.3
File Interpreter ABI Platform Actions
genki_wave-0.5.3-py3-none-any.whl Python 3 none any Details for genki_wave-0.5.3-py3-none-any.whl

Total release size: 45.9 kB

Release files / genki-wave-0.5.3.tar.gz

Download URL genki-wave-0.5.3.tar.gz
Size 21.2 kB
Tags Source
SHA-256 checksum
How to use checksums
995ffb1ed88612875281be2e116c44983cb61eac6955ce7a14bc1317aa59f2ab
BLAKE2b-256 checksum
How to use checksums
602e72230163b02b4398b852703e858ee1d840efb3785ee554b7283fffd6faca
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.9.12

Release files / genki_wave-0.5.3-py3-none-any.whl

Download URL genki_wave-0.5.3-py3-none-any.whl
Size 24.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
6ab6a6381085777d01865eeef555e3f548c65d393b2c9897bd438e0257d1ccc5
BLAKE2b-256 checksum
How to use checksums
9b27207329be17b84b8eeee0993e0425d29785f0318cae515cb92f6b127b61e2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.9.12

Security for genki-wave 0.5.3

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page