本文へスキップ
バージョン: 3.5.x

00. デバイス一覧

HTTP REST API を通じて、接続されているすべてのHaply 検出します。WebSocket は不要です。ランタイムが起動しており、ハードウェアを検出できているかを確認するための簡単な動作確認テストです。

学習内容:

  • クエリの実行 GET /devices Inverse3、VerseGrip、およびWireless VerseGripデバイスを一覧表示する
  • JSONレスポンスからデバイスIDを読み取り、デバイスタイプごとにグループ化する
  • セッションセレクタを使用して、デバイスの生座標とセッションのアプリケーション空間ビューを切り替える

ワークフロー

  1. 送信 GET http://localhost:10001/devices.
  2. JSONレスポンスを解析する — 3つの最上位の配列: inverse3, verse_grip, wireless_verse_grip.
  3. デバイスIDをタイプごとにグループ分けして出力します。配列が空の場合は、そのタイプのデバイスが検出されていないことを意味します。
  4. もし……なら セッションセレクタ は次のように付加されます ?session=<selector>、応答はそのセッションのデバイスにフィルタリングされ、座標はそのアプリケーション空間に変換されます(基底、マウント、ワークスペースが適用されます)。Pythonのサンプルでは、これをCLI引数として公開しています。一方、C++のサンプルでは、セレクタを指定せずにクエリを実行します。

パラメータ

パラメータデフォルト目的
サービスのURLhttp://localhost:10001HTTPのベースURL
エンドポイント/devicesデバイス検出エンドポイント
セッションセレクタ(なし)?session=:0, ?session=:-1, ?session=:my_profile:0 — 参照 セレクタ. PythonのサンプルではCLI引数として公開されています。

キーコード

このPythonサンプルでは、セッションセレクタをCLI引数として指定できるようにしています。これを指定しない場合、デバイスは生のデバイス空間座標で返されますが、指定すると、選択されたセッションにフィルタリングされ、アプリケーション空間に変換されます。

def main():
session = sys.argv[1] if len(sys.argv) > 1 else 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"))

出典: Python·C++·C++ Glaze

関連項目: JSONの規約·セレクタ·セッション