Skip to main content
Version : 3.5.x

Haply Inverse SDK

Le Haply Inverse SDK est une interface WebSocket + HTTP indépendante du langage permettant de communiquer avec les appareils Haply — l’ Inverse3, Inverse3x, Minverse, VerseGrip et Wireless VerseGrip. Il fonctionne comme un service local qui gère la détection des appareils, la communication série, la surveillance de la sécurité et la diffusion de l'état — votre application n'a donc qu'à communiquer en JSON via un socket.

Ses fonctionnalités sont les suivantes

  • Détection et gestion des appareils — répertorie et configure automatiquement Haply connectés via une API REST HTTP.
  • Diffusion en temps réel de l'état des appareils — transmet l'état des appareils à la fréquence des commandes haptiques (plusieurs kHz) via WebSockets.
  • Traitement des commandes — exécute les commandes de force et de position avec une grande précision pour offrir un retour haptique précis.
  • Fonctionnement en arrière-plan — s'exécute en tant que service local, assurant la disponibilité des appareils sans intervention de l'utilisateur.

Installer avec le Haply

Le moyen le plus simple de commencer est le Haply , une application de bureau qui vous permet d'installer, d'exécuter, de configurer, de tester et de surveiller vos Haply . Elle maintient le micrologiciel à jour, intègre le service Inverse et fournit des démos afin que vous puissiez vérifier votre matériel avant d'écrire la moindre ligne de code.

Hub Haply

Hub Haply

Télécharger la dernière version du Haply Hub

Téléchargez et installez le Hub, branchez votre appareil, et le Hub vous guidera tout au long des mises à jour du micrologiciel. Une fois installé, le service Inverse s'exécute automatiquement en arrière-plan dès que le Hub est ouvert.

Vous préférez une installation autonome ?

Vous pouvez également installer une version spécifique du service Inverse en tant que service système (Windows) ou démon (Linux / macOS) sans passer par le Hub. Consultez la section « Exécution du service » pour obtenir le lien vers le programme d'installation et les instructions.

Exemple rapide

Connectez-vous au service, lisez la position du curseur du premier Inverse3, puis envoyez un message de maintien de connexion sans charge afin que le service continue à diffuser des trames d'état :

import asyncio, json, websockets

async def main():
# Connect to the Haply Inverse service WebSocket
async with websockets.connect("ws://localhost:10001") as ws:
# Read the first state frame to discover the device id
first_state = json.loads(await ws.recv())
device_id = first_state["inverse3"][0]["device_id"]

# Build a zero-force keepalive command targeting that device
keepalive = {"inverse3": [{
"device_id": device_id,
"commands": {"set_cursor_force": {"vector": {"x": 0, "y": 0, "z": 0}}}
}]}

# Realtime loop: one send per tick, then read the resulting state
while True:
await ws.send(json.dumps(keepalive))
state = json.loads(await ws.recv())
pos = state["inverse3"][0]["state"]["cursor_position"]
print(f"pos: {pos}")

asyncio.run(main())
avertissement

Modifiez les valeurs de force avec précaution. Des valeurs de force élevées appliquées brusquement peuvent endommager l'appareil ou entraîner un comportement inattendu.

info

Consultez la page « Conventions JSON » pour connaître les règles relatives à l'enveloppe du message, aux ports et au type de contenu.

Autres exemples

Pour des tutoriels complets sur Python, C++ (nlohmann) et C++ (Glaze) — traitant du retour de force, du contrôle de position, des configurations multi-périphériques, de la configuration des supports et des bases, ainsi que de la diffusion d'événements —, consultez la page Tutoriels.