Skip to main content

Connect to your Vanomof S3/X3 bike

Project description

pymoof

ReadTheDocs PyPI version Tests

Connect to your Vanmoof S3 and X3 through bluetooth.

Installation

Install python 3.7+, then use pip to install pymoof. pip install pymoof

Usage

pymoof was tested to work on MacOS 12.1, Ubuntu 20.04.3 LTS, and a Raspberry Pi 3 b+ running Raspberry Pi OS (32-bit) / 2021-10-30.

from pymoof.clients.sx3 import SX3Client
import bleak

...

device = ...
encryption_key = ...
user_key_id = ...

async with bleak.BleakClient(device) as bleak_client:
	client = SX3Client(bleak_client, encryption_key, user_key_id)
	await client.authenticate()

You must have an instantiated bleak client that is connected to the bike. See pymoof.tools.discover_bike to determine which device is your bike and pymoof.tools.retrieve_encryption_key to connect to Vanmoof servers to get your encryption key.

See example.py for additional usage.

Contributing

Contributions are welcome and encouraged! Every bit helps and credit will be given.

Ways you can help:

Reporting Bugs

You can report bugs through the github issue tracker: https://github.com/quantsini/pymoof/issues

Useful information to include when reporting bugs:

  • Version of pymoof
  • The operating system where pymoof was used
  • What Vanmoof bike was used
  • Detailed steps on reproducing an issue

Help with reverse engineering

Vanmoof bikes communicate through Bluetooth Low Energy. I've tried my best to get all the BLE GATT UUIDs, however, some reverse engineering is needed to figure out what the payloads represent. I suggest using a packet sniffer like wireshark to analyze data from the official Vanmoof app and the bike.

Writing Documentation

Good documentation is always good!

Getting Started with Development

You want to contribute? Awesome! Here are some steps to get you up and running. This project uses Poetry for package and dependency management and tox for tests.

  1. Create a fork of the pymoof github repo.
  2. Clone it locally:
git clone git@github.com:<your username>/pymoof.git
  1. Get the latest version of poetry, a package and dependency management tool.
  2. Install dependencies
poetry install
  1. Activate your shell. This should put you in a virtualenv that allows you to run tests.
poetry shell
  1. You should now be able to run tests and make modifications. You can run tests by running tox under poetry
poetry run tox
  1. Go forth and make great changes!

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pymoof-0.0.6.tar.gz (9.6 kB view details)

Uploaded Source

Built Distribution

pymoof-0.0.6-py3-none-any.whl (9.5 kB view details)

Uploaded Python 3

File details

Details for the file pymoof-0.0.6.tar.gz.

File metadata

  • Download URL: pymoof-0.0.6.tar.gz
  • Upload date:
  • Size: 9.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.1.13 CPython/3.10.2 Darwin/21.3.0

File hashes

Hashes for pymoof-0.0.6.tar.gz
Algorithm Hash digest
SHA256 82d81e18df00d7716efc9122123b78061afaa76fa73851833194d9005b149a43
MD5 6a25772359ea5e28eb7807ac54a30da9
BLAKE2b-256 b1ebd7a2ccc60a538e5139cd1da8af2e5c340a66f739ed37f4450c0875a3d9ad

See more details on using hashes here.

File details

Details for the file pymoof-0.0.6-py3-none-any.whl.

File metadata

  • Download URL: pymoof-0.0.6-py3-none-any.whl
  • Upload date:
  • Size: 9.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.1.13 CPython/3.10.2 Darwin/21.3.0

File hashes

Hashes for pymoof-0.0.6-py3-none-any.whl
Algorithm Hash digest
SHA256 b7381129968ba5f2c957adfd52282eeb4762e9338df33f98f8a8b3e7d7ce9f11
MD5 3692711e36c5c63161607916779e516a
BLAKE2b-256 d7dacabf62685fe33a5a7c023f4665496584ede28024e80ee9cc48ad1641b449

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page