面向 DG-LAB 4 APP 的 Python 异步 SDK,仅支持 WebSocket V4 协议。参考:
- dglab-kit:官方 TypeScript SDK 与 V4 协议说明。
- dglab-websocket-server: 官方 WebSocket relay Server 实现。
核心包是 dglab_kit,提供:
DglabSocket:连接官方或自部署 relay。DglabServer:在当前进程运行内置 WebSocket Server,让 APP 直接接入。V4Client:表示一个已连接的 APP。DglabDevice:表示 APP 暴露的设备,并提供强度、波形和任务控制。- APP、设备和状态变更事件。
- 郊狼与负鼠内置波形。
.
├── src/dglab_kit/ # 核心 SDK
├── examples/ # 可运行示例
├── tests/ # 协议与集成测试
├── docs/ # 中文 API 文档
├── LICENSE
└── pyproject.toml
安装核心 SDK:
python -m pip install .开发安装:
python -m pip install -e ".[dev]"安装 PySide6 Demo 依赖:
python -m pip install -e ".[ui]"python examples/demo_ui.pyGUI 支持官方 relay、自定义 relay 和内置 Server,并展示 APP、设备状态以及郊狼 A/B 通道控制。
import asyncio
from dglab_kit import DglabSocket
async def main() -> None:
socket = DglabSocket("wss://trex.dungeon-lab.cn/v4")
result = await socket.connect()
print("target_id:", result["target_id"])
socket.on(
"device_instances",
lambda devices, client_id: print(client_id, devices),
)
await asyncio.Event().wait()
asyncio.run(main())import asyncio
from dglab_kit import DglabServer
async def main() -> None:
async with DglabServer(
host="0.0.0.0",
port=8765,
public_url="ws://192.168.1.10:8765",
) as server:
print(server.pairing_url)
await asyncio.Event().wait()
asyncio.run(main())ruff check .
ruff format --check .
mypy
pytest本项目使用 GPL-3.0 许可。
