Événements et surveillance
Le service diffuse les événements système via un WebSocket en lecture seule dédié sur le port 10020. Les événements signalent les déclenchements de sécurité, les connexions d'appareils, les avertissements de batterie, les changements du cycle de vie des sessions et les anomalies de fréquence de contrôle.
URL par défaut : ws://localhost:10020
Structure de l'événement JSON
{
"name": "device-safety-triggered",
"category": "device",
"level": "warning",
"data": { "device_family": "inverse", "device_id": "049D", … },
"message": "FOD stage changed: guard -> hard"
}
| Champ | Type | Description |
|---|---|---|
name | string | Identifiant stable de l'événement (à utiliser pour le filtrage ou le basculement) |
category | string | device, session, system |
level | string | info, notice, warning, error, critical, panic |
data | object | Charge utile propre à l'événement |
message | string | Description lisible par un humain |
Types d'événements
Événements liés aux appareils
| Nom | Niveau | Quand |
|---|---|---|
device-connected | info | Un nouvel appareil est détecté et prêt |
device-disconnected | warning | Un appareil a été perdu (débranché ou délai dépassé) |
device-battery-low | warning | Batterie de VerseGrip sans fil sous le seuil |
device-battery-critical | error | Batterie de VerseGrip sans fil à un niveau critique |
device-sleep | info | Passage de VerseGrip sans fil en mode veille |
device-busy | warning | L'appareil est utilisé par une autre session |
device-connection-loop | warning | Cycles répétés de connexion et de déconnexion détectés sur un port |
Événements de sécurité
| Nom | Niveau | Quand |
|---|---|---|
device-safety-triggered | variable | Notification de sécurité émise par le micrologiciel (voir ci-dessous) |
device-calibration-failed | warning | Étalonnage Inkwell déclenché, mais le stylet n'est pas utilisable |
Sous-types de device-safety-triggered
Le champ safety_type des données de l'événement indique ce qui s'est passé :
safety_type | Niveau | Signification |
|---|---|---|
ebrake_triggered | error | Frein d'urgence engagé — appareil verrouillé |
ebrake_released | notice | Frein d'urgence relâché |
fod_stage_changed | warning / info | L'étape de sécurité FOD a franchi la limite entre risque faible et risque élevé |
stall_detected | warning | Calage moteur détecté |
stability_ceiling | warning | Plafond de stabilité atteint |
Raisons de device-calibration-failed
reason | Signification |
|---|---|
pen_not_connected | Aucun verse grip n'est connecté |
pen_asleep | Le verse grip sans fil est appairé, mais en mode veille |
pen_not_attached | Le verse grip est prêt, mais le capteur à effet Hall est sous le seuil |
Événements de session
| Nom | Niveau | Quand |
|---|---|---|
session-started | notice | Une session WebSocket a été créée |
session-stopped | notice | Une session WebSocket a été fermée |
device-low-control-rate | warning | La fréquence de contrôle de la session est passée sous le seuil recommandé |
device-critical-control-rate | error | La fréquence de contrôle est tombée à un niveau critique |
Événements système
| Nom | Niveau | Quand |
|---|---|---|
system-rate-report | info | Rapport périodique de la fréquence des cycles de la boucle principale |
Écouter les événements
Utilisez le tutoriel sur les événements pour obtenir un écouteur Python prêt à l'emploi, avec filtrage par niveau, par motifs de noms et par exclusions :
# All events
python 10-haply-inverse-events.py
# Only warnings and above
python 10-haply-inverse-events.py --level warning
# Only device events
python 10-haply-inverse-events.py --name "device-*"
# Exclude battery noise
python 10-haply-inverse-events.py --exclude "*battery*"