본문으로 이동

00. 기기 목록

WebSocket 없이 HTTP REST API를 통해 연결된 모든 Haply 기기를 확인해 보세요. 실행 환경이 정상적으로 작동하고 하드웨어를 감지하는지 확인하기 위한 기본 테스트입니다.

이 강좌에서 배우게 될 내용:

  • 심문하다 GET /devices Inverse3, VerseGrip 및 무선 VerseGrip 기기를 확인하려면
  • JSON 응답에서 기기 유형별로 분류된 기기 식별자를 확인합니다.
  • 세션 선택기를 사용하여 기기의 원시 좌표와 세션의 애플리케이션 공간 보기 간을 전환하기

진행 과정​

  1. 보내기 GET http://localhost:10001/devices.
  2. JSON 응답 분석 — 최상위 레벨의 세 가지 테이블: 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 규칙 · 선택자 · 세션