Gadget Panda
One Python host. Three toys. Infinite maker projects.
IDEA → CODE → PROTOTYPE → COMMUNITY
Open-source runtime for makers who want raw sensors and real control — not a locked wellness app.
pip install 'gadgetpanda[ui]'
Devices
| Device | Link | You get | |
|---|---|---|---|
| 1 | RING503PANDA | Bluetooth LE | PPG · IMU · HR/HRV · temp · SpO₂ · sport/health · battery |
| 2 | SoftDog (X1) | Bluetooth LE | Actions · move/hold · program queue · web remote |
| 3 | FLOW-UFO | Wi‑Fi UDP + RTSP | Stick loop · takeoff/land · FPV remote · Wi‑Fi helpers |
| Ring UI | Dog UI | Drone UI |
|---|---|---|
:8765 |
:8766 |
:8767 |
gadgetpanda ring ui --demo
gadgetpanda dog ui --demo
gadgetpanda drone ui --demo
Why Gadget Panda
- Host-side Python — scan, connect, stream, and command from a laptop or Pi
- Realtime UIs — included with
[ui](black / red / gold) - Fine-grained APIs — callbacks, CLI shells, optional MQTT
- MIT — fork it, ship it, teach with it
Quick start — Ring
import asyncio
from gadgetpanda import Ring
async def main():
ring = await Ring.find()
ring.on("heart_rate", lambda s: print("HR", s.bpm))
ring.on("imu", lambda samples: print(samples[0] if samples else ""))
ring.on("ppg", lambda samples: print("ppg", len(samples)))
async with ring:
await ring.set_raw_enabled(True)
await asyncio.Event().wait()
asyncio.run(main())
gadgetpanda ring scan
gadgetpanda ring live
gadgetpanda ring ppg
gadgetpanda ring ui --mode ppg
Modes: all · BLE HR · PPG+HR · vitals · motion · activity
Docs: concept · protocol
SoftDog
gadgetpanda dog scan
gadgetpanda dog connect <addr> --shell
gadgetpanda dog action <addr> sit_down
gadgetpanda dog ui <addr> # React remote @ :8766
gadgetpanda dog ui --demo
from gadgetpanda.dog import Dog, Action, Move
async with Dog(address) as dog:
await dog.action(Action.SIT_DOWN)
await dog.hold_move(Move.FORWARD, seconds=1.0)
await dog.run_program([Action.JUMP, Move.TURN_LEFT, Action.VOICE])
Docs: dog concept · dog protocol
FLOW-UFO
gadgetpanda drone wifi join "FLOW-UFO-xxxx"
gadgetpanda drone scan
gadgetpanda drone ui --wifi "FLOW-UFO-xxxx" --model flow
gadgetpanda drone ui --demo
from gadgetpanda.drone import Drone
async with Drone("192.168.1.1", model="flow") as drone:
await drone.command("takeoff")
await drone.hold_stick("forward", seconds=1.5)
await drone.command("land")
FPV remote: http://127.0.0.1:8767 (needs craft Wi‑Fi + ffmpeg via [ui])
Docs: drone concept · drone protocol
Install
pip install gadgetpanda # core (BLE + drone protocol)
pip install 'gadgetpanda[ui]' # dashboards + FPV
pip install 'gadgetpanda[mqtt]' # MQTT bridge
From source:
git clone https://github.com/gadgetpanda/gadgetpanda.git
cd gadgetpanda
python3 -m venv .venv && source .venv/bin/activate
pip install -e ".[ui,dev]"
Needs: Python 3.11+ · real BLE / Wi‑Fi hardware
Docker (Linux): host network + BlueZ — docs/docker.md
CLI map
| Namespace | Highlights |
|---|---|
gadgetpanda ring … |
scan live ppg hr test user restore ui |
gadgetpanda dog … |
scan connect action move ui |
gadgetpanda drone … |
wifi scan connect stick cmd ui |
gadgetpanda license … |
optional soft entitlements |
Soft license (optional)
Honor-system feature keys. Soft by default — no key means open.
See docs/license.md.
gadgetpanda license features
gadgetpanda license activate gp_live_…
gadgetpanda license status
MIT · Small ideas. Bigger possibilities.
Metadata
Release files for gadgetpanda 0.1.4
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| gadgetpanda-0.1.4.tar.gz | 535.8 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| gadgetpanda-0.1.4-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 1.0 MB
Release files / gadgetpanda-0.1.4.tar.gz
| Download URL | gadgetpanda-0.1.4.tar.gz |
|---|---|
| Size | 535.8 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
83a9628e521891188b1afc63e6a221e43ab6f316f8bbeaeb81bb6f9eaba25621
|
|
BLAKE2b-256 checksum How to use checksums |
dbc24f5fbc1a5c4d085463ddc735e270a75cd126a1fd132c85b878d1cced7368
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.14.6
|
Release files / gadgetpanda-0.1.4-py3-none-any.whl
| Download URL | gadgetpanda-0.1.4-py3-none-any.whl |
|---|---|
| Size | 513.8 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
ab2f2000f2aa0cfa4118f21adace8fff7b50c6c55dd6f8a7efbdfe3883c6ebff
|
|
BLAKE2b-256 checksum How to use checksums |
5f175c8fae41fa77935391695ebaac233525b5611cc31212b106bde65913d020
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.14.6
|