跳至主要内容

00. 设备列表

通过 HTTP REST API 发现所有已连接的Haply 设备——无需 WebSocket。这是一个简单的初步测试,用于确认运行时已启动且能够检测到硬件。

您将学到:

  • 查询 GET /devices 列出Inverse3、VerseGrip 和无线 VerseGrip 设备
  • 从 JSON 响应中读取设备 ID,并按设备类型进行分组
  • 使用会话选择器在原始设备坐标系与会话的应用空间视图之间切换

工作流程​

  1. 发送 GET http://localhost:10001/devices。
  2. 解析 JSON 响应——包含三个顶级数组:inverse3、verse_grip、wireless_verse_grip。
  3. 按类型打印设备 ID。如果某个数组为空,则表示未检测到该类型的设备。
  4. 如果以 ?session=<selector> 形式补充会话选择器,响应中将仅筛选出该会话中的设备,并将坐标转换为其应用空间(已应用 basis、mount、workspace 变换)。Python 示例如下: --session SELECTOR 该功能通过命令行参数的形式提供(支持 :profile:instance、#id、:-1、:0、…)——与教程 08(HTTP 远程配置)使用的参数相同,帮助文本也一致,因此在此处找到的选择器可以直接复制粘贴到那里。C++ 示例在查询时不使用选择器。

参数​

参数默认值用途
服务 URLhttp://localhost:10001HTTP 基础 URL
端点/devices设备发现端点
会话选择器(无)?session=:0、?session=:-1、?session=:my_profile:0、?session=co.haply.hub::*:0(支持 glob 通配符)——参见选择器。在 Python 示例中以 --session SELECTOR 以……的形式提供(与教程 08(相同的参数)。

关键代码​

Python 示例将会话选择器作为 --session SELECTOR 由 argparse 参数提供。若未指定该参数,设备将以原始设备空间坐标返回;指定后,设备将被过滤至所选会话并转换为应用空间。帮助文本与教程 08(HTTP 远程配置)一致,因此在此处找到的选择器可直接粘贴到那里。

def parse_args():
parser = argparse.ArgumentParser(
description="List connected Haply Inverse devices via the HTTP API.")
parser.add_argument(
"--session", type=str, default="",
help=(
"Session selector. Formats:\n"
" :profile:instance by profile name (e.g. ':my_profile:0')\n"
" pattern:instance glob wildcard in profile (e.g. 'co.haply.hub::*:0')\n"
" '*' matches any sequence, '?' one character\n"
" #session_id by numeric id (e.g. '#42' — quote in shells to escape '#')\n"
" :-1 the last active session\n"
" :0 the first session"
))
return parser.parse_args()

def main():
args = parse_args()
session = args.session or None

url = f"{BASE_URL}/devices"
if session:
url += f"?session={session}"
print(f"Querying devices for session '{session}' (application space)\n")
else:
print("Querying all detected devices (device space)\n")

r = requests.get(url, timeout=3)
r.raise_for_status()
data = r.json()

print_devices("Inverse3", data.get("inverse3"))
print_devices("Wired Verse Grip", data.get("verse_grip"))
print_devices("Wireless Verse Grip", data.get("wireless_verse_grip"))
随 SDK 安装程序一同提供

教程 00 也随 SDK 一起安装在本地——请在服务安装目录下查找 tutorials/00-haply-inverse-device-list/。

源代码: Python·C++·C++ Glaze

相关内容: JSON 规范·选择器·会话