주요 내용으로 이동

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(동일한 매개변수).

핵심 코드​

이 파이썬 예제에서는 세션 선택기를 --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 규약 · 선택자 · 세션