Zum Haupttext springen

00. Geräteliste

Sucht alle über die HTTP-REST-API verbundenen Haply -Geräte – auch ohne WebSocket. Dies ist ein einfacher Smoke-Test, um zu überprüfen, ob die Laufzeitumgebung läuft und die Hardware erkannt wird.

Lerninhalte:

  • GET /devicesAufruf von Inverse3, VerseGrip, Abfrage der Liste der drahtlosen VerseGrip-Geräte
  • Aus der JSON-Antwort die Geräte-ID auslesen und nach Gerätetyp gruppieren
  • Mit dem Sitzungsselektorzwischen den Rohkoordinaten des Geräts und der Ansicht im Anwendungsraum der Sitzung wechseln

Workflow​

  1. GET http://localhost:10001/devices Ich sende die Anfrage.
  2. Die JSON-Antwort wird geparst – es gibt drei Arrays auf oberster Ebene: inverse3, verse_grip, wireless_verse_grip.
  3. Die Geräte-IDs werden nach Typ gruppiert und ausgegeben. Ist das Array leer, wurden keine Geräte dieses Typs erkannt.
  4. Sitzungsauswahl를 ?session=<selector> Was das Format betrifft, so werden die Antworten auf die Geräte der jeweiligen Sitzung gefiltert und die Koordinaten in den Anwendungsraum der Sitzung (unter Berücksichtigung von Basis, Mount und Arbeitsbereich) umgewandelt. Das Python-Beispiel veranschaulicht dies --session SELECTOR Wird über die Befehlszeile bereitgestellt (:profile:instance, #id, :-1, :0, … zulässig). Dieses Flag und der Hilfetext lauten Tutorial 08 (HTTP-Fernkonfiguration)Da es sich um dasselbe handelt wie das dort verwendete, können Sie den hier gefundenen Selektor unverändert dort einfügen. Das C++-Beispiel führt die Abfrage ohne Selektor durch.

Parameter​

ParameterStandardwertVerwendungszweck
Service-URLhttp://localhost:10001HTTP-Standard-URL
Endpunkt/devicesEndpunkt für die Gerätesuche
Sitzungsauswahl(keine)?session=:0, ?session=:-1, ?session=:my_profile:0, ?session=co.haply.hub::*:0 (Unterstützung für Glob-Wildcards) — Selektor Hinweis: Im Python-Beispiel --session SELECTORwird angezeigt (Tutorial 08(dasselbe Flag).

Kerncode​

Das Python-Beispiel verwendet den Session-Selektor --session SELECTOR wird als „argparse“-Argument bereitgestellt. Fehlt dieses Argument, wird das Gerät in den Rohkoordinaten des Geräteraums zurückgegeben; wird das Argument angegeben, wird das Ergebnis auf das Gerät der ausgewählten Sitzung gefiltert und in den Anwendungsraum umgewandelt. Der Hilfetext lautet Tutorial 08 (HTTP-Fernkonfiguration)Da dies identisch ist, können Sie den hier gefundenen Selektor dort unverändert einfügen.

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"))
Im SDK-Installationsprogramm enthalten

Das Tutorial 00 ist zusammen mit dem SDK lokal installiert – im Installationsverzeichnis des Dienstes unter tutorials/00-haply-inverse-device-list/Bitte sehen Sie dort nach.

Quelle: Python · C++ · C++ Glaze

Verwandte Dokumente: JSON-Konventionen · Selektoren · Sitzungen