Zum Hauptinhalt springen
Version: 3.5.x

00. Geräteliste

Erkennt alle verbundenen Haply über die HTTP-REST-API – kein WebSocket erforderlich. Ein einfacher Funktionstest, um zu überprüfen, ob die Laufzeitumgebung läuft und Hardware erkennt.

Was Sie lernen werden:

  • Abfragen GET /devices um die Geräte Inverse3, VerseGrip und Wireless VerseGrip aufzulisten
  • Auslesen der Geräte-IDs aus der JSON-Antwort, gruppiert nach Gerätetyp
  • Verwendung eines Sitzungsselektors zum Wechseln zwischen den Rohkoordinaten des Geräts und der Ansicht im Anwendungsraum einer Sitzung

Arbeitsablauf

  1. Senden GET http://localhost:10001/devices.
  2. Die JSON-Antwort analysieren – drei Arrays auf oberster Ebene: inverse3, verse_grip, wireless_verse_grip.
  3. Gib die Geräte-IDs nach Typ gruppiert aus. Leere Arrays bedeuten, dass kein Gerät dieses Typs erkannt wurde.
  4. Wenn ein Sitzungsauswahl wird angehängt als ?session=<selector>Die Antwort wird auf die Geräte dieser Sitzung gefiltert, und die Koordinaten werden in den Anwendungsraum dieser Sitzung umgewandelt (Basis, Mount, Arbeitsbereich angewendet). Das Python-Beispiel stellt dies als CLI-Argument bereit; die C++-Beispiele führen die Abfrage ohne Selektor durch.

Parameter

ParameterStandardZweck
URL des Diensteshttp://localhost:10001HTTP-Basis-URL
Endpunkt/devicesEndpunkt für die Geräteerkennung
Sitzungsauswahl(keine)?session=:0, ?session=:-1, ?session=:my_profile:0 — siehe Auswahlkriterien. Wird im Python-Beispiel als CLI-Argument bereitgestellt.

Schlüsselcode

Das Python-Beispiel stellt den Sitzungsselektor als CLI-Argument bereit. Ohne dieses Argument werden Geräte in rohen Koordinaten des Geräteraums zurückgegeben; mit diesem Argument werden sie auf die ausgewählte Sitzung gefiltert und in den Anwendungsraum konvertiert.

def main():
session = sys.argv[1] if len(sys.argv) > 1 else 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"))

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

Siehe auch: JSON-Konventionen · Selektoren · Sitzungen