メインコンテンツへスキップ

00. 機器一覧

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

学習内容:

  • 検索 GET /devices Inverse3、VerseGrip、およびワイヤレスVerseGripデバイスを一覧表示します
  • JSON レスポンスからデバイス ID を読み取り、デバイスタイプごとにグループ分けする
  • セッションセレクターを使用して、原点座標系とセッションのアプリケーション空間ビューを切り替える

ワークフロー​

  1. 送信 GET http://localhost:10001/devices。
  2. JSONレスポンスの解析――3つの最上位の配列が含まれています: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 規約·セレクタ·セッション