本文へスキップ
バージョン: 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のサンプルでは、これを --session SELECTOR CLI引数(以下の形式を受け付けます :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 ワイルドカードに対応) — 参照 セレクタ. 暴露されたとして --session SELECTOR Pythonのサンプルでは(同じフラグとして チュートリアル 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の規約·セレクタ·セッション