メインコンテンツへ移動

00. 機器一覧

REST HTTP API 経由で接続されたすべての「Haply 」デバイスを確認しましょう。WebSocket は不要です。実行環境が正常に動作しており、ハードウェアを検出できているかを確認するための基本的なテストです。

このコースで学べる内容:

  • 尋問する GET /devices Inverse3 、VerseGrip、およびワイヤレスVerseGripの製品一覧を表示するには
  • JSONレスポンス内のデバイス識別子を、デバイスタイプごとにグループ分けして読み取る
  • セッションセレクターを使用して、デバイスの生座標とセッションのアプリケーション空間ビューを切り替える

進行​

  1. 送信 GET http://localhost:10001/devices.
  2. JSONのレスポンスを分析する — 3つのトップレベルテーブル: inverse3, verse_grip, wireless_verse_grip.
  3. デバイスの識別子をタイプ別にグループ化して表示します。表が空の場合は、そのタイプのデバイスが検出されていないことを意味します。
  4. もし……なら セッションセレクター は、以下の形式で追加されます ?session=<selector>, 応答はこのセッションで使用されているデバイスに基づいてフィルタリングされ、座標はその適用空間(適用された基底、マッピング、および作業空間)に変換されます。Pythonの例では、これをCLI引数の形式で公開しています。 --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 (対応しているワイルドカード) — 参照 セレクター. 以下の形式で公開 --session SELECTOR Pythonの例では(同じ指標として チュートリアル 08).

キーコード​

このPythonの例では、セッションセレクタがargparseの引数として公開されています --session SELECTOR. これを指定しない場合、データはデバイスの空間における生座標で返されます。指定した場合は、選択されたセッションに基づいてフィルタリングされ、アプリケーション空間に変換されます。ヘルプテキストは、 チュートリアル 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規約·セレクタ·セッション