본문으로 바로 가기

00. 장치 목록

HTTP REST API를 통해 연결된 모든 Haply 디바이스를 검색합니다 — WebSocket 없이도 가능합니다. 이는 런타임이 실행 중이며 하드웨어를 감지하고 있는지 확인하는 간단한 스모크 테스트입니다.

학습 내용:

  • GET /devicesInverse3, 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 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 (글롭 와일드카드 지원) — 선택기 참고. 파이썬 예제에서 --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 규칙 · 선택자 · 세션