Messages Client → Serveur

Format des messages

Chaque message est un objet JSON avec une seule clé de premier niveau identifiant la commande. La valeur est un objet dont la structure dépend de la commande.

Toutes les clés de commandes client sont en MAJUSCULES (ex. DU, SV, SA, GC).


Index des commandes

CléDescription
DUDemander le dump complet
XXHeartbeat / keepalive
LOConnexion
ILChanger la langue
SVEnvoyer la valeur d’un seul élément
SAEnvoyer toutes les valeurs d’éléments
I1Clic sur preicon1 de propriété
I2Clic sur preicon2 de propriété
I3Clic sur posticon1 de propriété
I4Clic sur posticon2 de propriété
J1Clic sur preicon d’élément
J2Clic sur posticon d’élément
PLCharger un profil
PSSauvegarder un profil
GCCréer une ligne de grille
GUMettre à jour une ligne de grille
GDSupprimer une ligne de grille
GFSélectionner une ligne de grille
GHMonter une ligne de grille
GBDescendre une ligne de grille
MLCharger un module
MKDécharger un module
YADémarrer le serveur INDI embarqué
YZArrêter le serveur INDI embarqué
YLCharger un driver INDI
YRRecharger un driver INDI
YSArrêter un driver INDI

Tous les messages ciblant un module ou une propriété utilisent l’enveloppe suivante :

{
  "COMMANDE": {
    "m": {
      "NomDuModule": {
        "p": {
          "nomDeLaPropriété": { ... }
        }
      }
    }
  }
}

m désigne modules et p désigne properties.


Gestion de session

DU — Demander le dump complet

Doit être envoyé immédiatement après la connexion. Le serveur répond avec un message d contenant tous les modules.

{ "DU": { "language": "fr" } }
ChampDescription
languageLangue préférée pour les libellés traduits ("en", "fr", etc.)

XX — Heartbeat

À envoyer toutes les 30 secondes pour maintenir la connexion active. Le serveur répond avec xx.

{ "XX": {} }

LO — Connexion

Requis lorsque le serveur a le contrôle d’accès activé (grant-client vaut "-1" dans la réponse dump).

{
  "LO": {
    "user": "username",
    "pw": "password",
    "language": "fr"
  }
}

IL — Changer la langue

Modifie la langue des libellés traduits sans se reconnecter.

{ "IL": { "language": "fr" } }

Mise à jour des valeurs de propriété

SV — Envoyer la valeur d’un seul élément

À utiliser lorsque directedit est true sur l’élément — envoie immédiatement la valeur d’un seul élément.

{
  "SV": {
    "m": {
      "Focus": {
        "p": {
          "parameters": {
            "e": {
              "iterations": 7
            }
          }
        }
      }
    }
  }
}

e contient une seule paire nomÉlément: valeur.


SA — Envoyer toutes les valeurs d’éléments

Utilisé pour soumettre tous les éléments éditables d’une propriété en une fois (ex. depuis un formulaire). Également utilisé lorsque directedit est false.

{
  "SA": {
    "m": {
      "Focus": {
        "p": {
          "parameters": {
            "e": {
              "iterations": 7,
              "exposure": 3.5,
              "active": true
            }
          }
        }
      }
    }
  }
}

Actions sur les icônes

Les icônes de propriété (preicon / posticon) déclenchent des actions backend telles que la sauvegarde d’un profil, le chargement d’un profil ou le lancement d’un processus. Les événements de clic sont envoyés via les commandes suivantes.

I1 — Clic sur preicon1 de propriété

{
  "I1": {
    "m": {
      "Focus": {
        "p": {
          "saveprofile": {}
        }
      }
    }
  }
}

I2 — Clic sur preicon2 de propriété

{
  "I2": {
    "m": {
      "Focus": {
        "p": {
          "loadprofile": {}
        }
      }
    }
  }
}

I3 — Clic sur posticon1 de propriété

Même structure que I1 / I2.

I4 — Clic sur posticon2 de propriété

Même structure que I1 / I2.


J1 — Clic sur preicon d’élément

{
  "J1": {
    "m": {
      "Focus": {
        "p": {
          "devices": {
            "e": {
              "myDevice": {}
            }
          }
        }
      }
    }
  }
}

J2 — Clic sur posticon d’élément

Même structure que J1.


Gestion des profils

PL — Charger un profil

{
  "PL": {
    "m": {
      "Focus": {
        "profile": "myProfile"
      }
    }
  }
}

Le serveur répond avec un message fl (profil chargé) puis envoie les valeurs de propriétés mises à jour.


PS — Sauvegarder un profil

{
  "PS": {
    "m": {
      "Focus": {
        "profile": "myProfile"
      }
    }
  }
}

Le serveur répond avec un message fs (profil sauvegardé).


Opérations sur les grilles

Les commandes de grille ciblent une propriété spécifique au sein d’un module. Toutes utilisent l’enveloppe m / p.

GC — Créer une ligne de grille

Ajoute une nouvelle ligne à la grille avec les valeurs d’éléments fournies.

{
  "GC": {
    "m": {
      "Sequencer": {
        "p": {
          "sequence": {
            "e": {
              "target": "M31",
              "exposure": 120,
              "count": 10
            }
          }
        }
      }
    }
  }
}

Le serveur répond avec un message gc confirmant l’index de la nouvelle ligne.


GU — Mettre à jour une ligne de grille

Met à jour une ligne spécifique (index base zéro i) avec de nouvelles valeurs d’éléments.

{
  "GU": {
    "m": {
      "Sequencer": {
        "p": {
          "sequence": {
            "i": 1,
            "e": {
              "target": "M42",
              "exposure": 60
            }
          }
        }
      }
    }
  }
}

GD — Supprimer une ligne de grille

Supprime la ligne à l’index i (base zéro).

{
  "GD": {
    "m": {
      "Sequencer": {
        "p": {
          "sequence": {
            "i": 0
          }
        }
      }
    }
  }
}

GF — Sélectionner une ligne de grille

Demande au serveur de charger une ligne de la grille dans les éléments éditables de la propriété (utilisé lors du clic sur une ligne pour l’éditer).

{
  "GF": {
    "m": {
      "Sequencer": {
        "p": {
          "sequence": {
            "i": 2
          }
        }
      }
    }
  }
}

GH — Monter une ligne de grille

Déplace la ligne à l’index i d’une position vers le haut.

{
  "GH": {
    "m": {
      "Sequencer": {
        "p": {
          "sequence": {
            "i": 3
          }
        }
      }
    }
  }
}

GB — Descendre une ligne de grille

Déplace la ligne à l’index i d’une position vers le bas.

{
  "GB": {
    "m": {
      "Sequencer": {
        "p": {
          "sequence": {
            "i": 2
          }
        }
      }
    }
  }
}

Cycle de vie des modules

ML — Charger un module

Demande au serveur de charger dynamiquement un module.

{
  "ML": {
    "m": {
      "ModuleName": {}
    }
  }
}

MK — Décharger un module

Demande au serveur de décharger un module en cours d’exécution.

{
  "MK": {
    "m": {
      "ModuleName": {}
    }
  }
}

Contrôle du serveur INDI embarqué

Ces commandes ne sont disponibles que lorsque le serveur dispose d’une instance INDI embarquée.

CommandeDescription
YADémarrer le serveur INDI embarqué
YZArrêter le serveur INDI embarqué
YLCharger un driver INDI
YRRecharger un driver INDI
YSArrêter un driver INDI

Récapitulatif du contrôle d’accès

Valeur grant serveurCommandes autorisées
grant-client: "1"Toutes les commandes
grant-client: "0"DU, LO, IL uniquement
grant-client: "-1"LO uniquement (authentification requise)

Les commandes envoyées sans droits suffisants sont silencieusement ignorées par le serveur.