Skip to main content

Python client for the Zendo motion-tracking WebSocket stream.

Project description

zendo-sdk (Python)

PyPI Python versions

Python client for the Zendo motion-tracking WebSocket stream. Connect to a running Zendo instance and get typed quaternion and landmark events — no byte-parsing, no port hunting.

The package is a thin layer over the Rust zendo-sdk crate (via PyO3), so decoding and the connection lifecycle are handled in Rust. It imports as zendo.

Install

pip install zendo-sdk

Wheels are published for Linux (x86_64, aarch64), macOS (Apple Silicon and Intel), and Windows (x86_64), on CPython 3.10 and newer.

Quickstart

The client is synchronous and blocking: iterating it waits for the next frame. This keeps it ergonomic in notebooks and scripts.

import zendo

with zendo.connect() as client:          # auto-discovers the port (5432-5435)
    print(f"connected on port {client.port}")
    for event in client:
        match event:
            case zendo.BodyQuaternions(frame):
                print("hips:", frame.hips.w, frame.hips.x, frame.hips.y, frame.hips.z)
            case zendo.BodyLandmarks(frame):
                print("nose:", frame.nose.x, frame.nose.y, frame.nose.z)
            case zendo.HandQuaternions(side, frame):
                print(side, "wrist:", frame.wrist.w)
            case zendo.HandLandmarks(side, frame):
                print(side, "thumb tip:", frame.thumb_tip.x, frame.thumb_tip.confidence)

Without structural pattern matching:

import zendo

with zendo.connect() as client:
    for event in client:
        if isinstance(event, zendo.BodyQuaternions):
            print(event.frame.hips)

Connecting

Function Behaviour
zendo.connect() Scans ports 5432-5435 on 127.0.0.1, connects to the first Zendo found.
zendo.connect_at(port) Connects to an explicit port on 127.0.0.1.
zendo.connect_url(url) Connects to an explicit ws://host:port URL.

To reach a Zendo on another machine, copy the address from Zendo's Settings: zendo.connect_url("ws://192.168.1.42:5432"). The stream is plain ws:// — unencrypted and unauthenticated — so only use it on a trusted network.

All three accept reconnect=True to transparently re-establish a dropped connection with exponential backoff:

client = zendo.connect(reconnect=True, base_delay_ms=250, max_retries=10)

Types

Events are immutable dataclasses. Frames expose one attribute per joint or landmark — frame.hips, frame.left_wrist, frame.thumb_tip — each a Quaternion (w, x, y, z) or Landmark (x, y, z, confidence). Frames are also iterable: for name, value in frame: ....

The package ships type information (py.typed) and is checked with ty and linted with ruff.

Offline decoding

zendo.decode_frame(data: bytes) decodes a single raw protocol frame into a typed event — handy for replaying captures or testing.

License

Licensed under either of Apache-2.0 or MIT at your option.

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

zendo_sdk-0.1.3.tar.gz (56.8 kB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

zendo_sdk-0.1.3-cp310-abi3-win_amd64.whl (395.7 kB view details)

Uploaded CPython 3.10+Windows x86-64

zendo_sdk-0.1.3-cp310-abi3-musllinux_1_2_x86_64.whl (765.7 kB view details)

Uploaded CPython 3.10+musllinux: musl 1.2+ x86-64

zendo_sdk-0.1.3-cp310-abi3-manylinux_2_28_x86_64.whl (560.4 kB view details)

Uploaded CPython 3.10+manylinux: glibc 2.28+ x86-64

zendo_sdk-0.1.3-cp310-abi3-manylinux_2_28_aarch64.whl (560.9 kB view details)

Uploaded CPython 3.10+manylinux: glibc 2.28+ ARM64

zendo_sdk-0.1.3-cp310-abi3-macosx_11_0_arm64.whl (499.0 kB view details)

Uploaded CPython 3.10+macOS 11.0+ ARM64

zendo_sdk-0.1.3-cp310-abi3-macosx_10_12_x86_64.whl (504.4 kB view details)

Uploaded CPython 3.10+macOS 10.12+ x86-64

File details

Details for the file zendo_sdk-0.1.3.tar.gz.

File metadata

  • Download URL: zendo_sdk-0.1.3.tar.gz
  • Upload date:
  • Size: 56.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for zendo_sdk-0.1.3.tar.gz
Algorithm Hash digest
SHA256 0edf901322aca297ca3015a28d3271ee23fb0eca0d8048adefa80277276878fb
MD5 79e348eb6f9a10d9026f66c3863c97b6
BLAKE2b-256 23f4f0a252109f70f392ca0bd52cbf2cc15f1e664366ee139cbcf9a6261a6553

See more details on using hashes here.

Provenance

The following attestation bundles were made for zendo_sdk-0.1.3.tar.gz:

Publisher: publish-sdk.yml on akina-health/zendo

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file zendo_sdk-0.1.3-cp310-abi3-win_amd64.whl.

File metadata

  • Download URL: zendo_sdk-0.1.3-cp310-abi3-win_amd64.whl
  • Upload date:
  • Size: 395.7 kB
  • Tags: CPython 3.10+, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for zendo_sdk-0.1.3-cp310-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 e6cfa1fff85903c41af394d27c784dc25d42239bf894245ab30e4d39758a0d52
MD5 dc1237069d1b6c2080c01060deba4b94
BLAKE2b-256 53e4ff1bef588d869bea6c1482296e8fff10ac1d8c3c266bb6e4f4b6b15332cf

See more details on using hashes here.

Provenance

The following attestation bundles were made for zendo_sdk-0.1.3-cp310-abi3-win_amd64.whl:

Publisher: publish-sdk.yml on akina-health/zendo

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file zendo_sdk-0.1.3-cp310-abi3-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for zendo_sdk-0.1.3-cp310-abi3-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 a465d8f11327ab50dc24e0a882d624952c5beded25c71f0320eac058dc220d8d
MD5 25131f1fffca070de1bf4ad247bed510
BLAKE2b-256 31d1973a75f4f88649e36504c6f451520fe27c02db6880ecd5556f7b12113453

See more details on using hashes here.

Provenance

The following attestation bundles were made for zendo_sdk-0.1.3-cp310-abi3-musllinux_1_2_x86_64.whl:

Publisher: publish-sdk.yml on akina-health/zendo

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file zendo_sdk-0.1.3-cp310-abi3-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for zendo_sdk-0.1.3-cp310-abi3-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 f8e41151c80c950319697c2523e174f0a06b5f47207e08e51d1c6e51c37eaae0
MD5 e3c47540ea892c879055cb55dceb0995
BLAKE2b-256 6a2edf73110cdde97f307c1eaf00c2a85e2d8995f0fc23775ffe2dd9d0ca02f3

See more details on using hashes here.

Provenance

The following attestation bundles were made for zendo_sdk-0.1.3-cp310-abi3-manylinux_2_28_x86_64.whl:

Publisher: publish-sdk.yml on akina-health/zendo

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file zendo_sdk-0.1.3-cp310-abi3-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for zendo_sdk-0.1.3-cp310-abi3-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 bbe75d62cd8f4d6e4d12d18a39721f1a953fbc0dc50d6828a9cde8dbbb0cf039
MD5 3e382f0f515bf2c1a5cc9a56a32d3f6c
BLAKE2b-256 2e9385c163fa38a930655775d3375b624cec8278acd7558dcd0f9b3d07a37eb7

See more details on using hashes here.

Provenance

The following attestation bundles were made for zendo_sdk-0.1.3-cp310-abi3-manylinux_2_28_aarch64.whl:

Publisher: publish-sdk.yml on akina-health/zendo

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file zendo_sdk-0.1.3-cp310-abi3-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for zendo_sdk-0.1.3-cp310-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 d31db670fc1855a01dff921c4bdf55d94ac3723d37e7253320285ab8674329d7
MD5 86617da5c615a43fa89eb979ea13b7df
BLAKE2b-256 5e357d0d3c842f67e0a4187fe6a9d39fc5750e8dcfdf12694ac00752f1b1fecb

See more details on using hashes here.

Provenance

The following attestation bundles were made for zendo_sdk-0.1.3-cp310-abi3-macosx_11_0_arm64.whl:

Publisher: publish-sdk.yml on akina-health/zendo

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file zendo_sdk-0.1.3-cp310-abi3-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for zendo_sdk-0.1.3-cp310-abi3-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 0e193088223873d887294ef57ef5156738865690dc2133bdb4e3624e55ec87c1
MD5 36d54bb96c2cc96e07df8a876e5fb27d
BLAKE2b-256 37326170e6541bf01b807469e26af07ce4611358b5282adcbfa191ce4e68fd7f

See more details on using hashes here.

Provenance

The following attestation bundles were made for zendo_sdk-0.1.3-cp310-abi3-macosx_10_12_x86_64.whl:

Publisher: publish-sdk.yml on akina-health/zendo

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

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