Mensajes Cliente → Servidor
Formato de los mensajes
Cada mensaje es un objeto JSON con una única clave de primer nivel que identifica el comando. El valor es un objeto cuya estructura depende del comando.
Todas las claves de comandos de cliente están en MAYÚSCULAS (ej. DU, SV, SA, GC).
Índice de comandos
| Clave | Descripción |
|---|---|
DU | Solicitar el dump completo |
XX | Heartbeat / keepalive |
LO | Conexión |
IL | Cambiar el idioma |
SV | Enviar el valor de un solo elemento |
SA | Enviar todos los valores de elementos |
I1 | Clic en preicon1 de propiedad |
I2 | Clic en preicon2 de propiedad |
I3 | Clic en posticon1 de propiedad |
I4 | Clic en posticon2 de propiedad |
J1 | Clic en preicon de elemento |
J2 | Clic en posticon de elemento |
PL | Cargar un perfil |
PS | Guardar un perfil |
GC | Crear una línea de cuadrícula |
GU | Actualizar una línea de cuadrícula |
GD | Eliminar una línea de cuadrícula |
GF | Seleccionar una línea de cuadrícula |
GH | Subir una línea de cuadrícula |
GB | Bajar una línea de cuadrícula |
ML | Cargar un módulo |
MK | Descargar un módulo |
YA | Iniciar el servidor INDI embebido |
YZ | Detener el servidor INDI embebido |
YL | Cargar un driver INDI |
YR | Recargar un driver INDI |
YS | Detener un driver INDI |
Todos los mensajes dirigidos a un módulo o a una propiedad usan la siguiente envoltura:
{
"COMANDO": {
"m": {
"NombreDelModulo": {
"p": {
"nombreDeLaPropiedad": { ... }
}
}
}
}
}donde m designa modules y p designa properties.
Gestión de sesión
DU — Solicitar el dump completo
Debe enviarse inmediatamente tras la conexión. El servidor responde con un mensaje d que contiene todos los módulos.
{ "DU": { "language": "es" } }| Campo | Descripción |
|---|---|
language | Idioma preferido para las etiquetas traducidas ("en", "fr", etc.) |
XX — Heartbeat
Enviar cada 30 segundos para mantener la conexión activa. El servidor responde con xx.
{ "XX": {} }LO — Conexión
Requerido cuando el servidor tiene activado el control de acceso (grant-client vale "-1" en la respuesta dump).
{
"LO": {
"user": "username",
"pw": "password",
"language": "es"
}
}IL — Cambiar el idioma
Modifica el idioma de las etiquetas traducidas sin reconectar.
{ "IL": { "language": "es" } }Actualización de los valores de propiedad
SV — Enviar el valor de un solo elemento
A usar cuando directedit es true en el elemento — envía inmediatamente el valor de un solo elemento.
{
"SV": {
"m": {
"Focus": {
"p": {
"parameters": {
"e": {
"iterations": 7
}
}
}
}
}
}
}e contiene un único par nombreElemento: valor.
SA — Enviar todos los valores de elementos
Usado para enviar todos los elementos editables de una propiedad de una vez (ej. desde un formulario). También usado cuando directedit es false.
{
"SA": {
"m": {
"Focus": {
"p": {
"parameters": {
"e": {
"iterations": 7,
"exposure": 3.5,
"active": true
}
}
}
}
}
}
}Acciones sobre los iconos
Los iconos de propiedad (preicon / posticon) desencadenan acciones de backend como el guardado de un perfil, la carga de un perfil o el lanzamiento de un proceso. Los eventos de clic se envían mediante los siguientes comandos.
I1 — Clic en preicon1 de propiedad
{
"I1": {
"m": {
"Focus": {
"p": {
"saveprofile": {}
}
}
}
}
}I2 — Clic en preicon2 de propiedad
{
"I2": {
"m": {
"Focus": {
"p": {
"loadprofile": {}
}
}
}
}
}I3 — Clic en posticon1 de propiedad
Misma estructura que I1 / I2.
I4 — Clic en posticon2 de propiedad
Misma estructura que I1 / I2.
J1 — Clic en preicon de elemento
{
"J1": {
"m": {
"Focus": {
"p": {
"devices": {
"e": {
"myDevice": {}
}
}
}
}
}
}
}J2 — Clic en posticon de elemento
Misma estructura que J1.
Gestión de perfiles
PL — Cargar un perfil
{
"PL": {
"m": {
"Focus": {
"profile": "myProfile"
}
}
}
}El servidor responde con un mensaje fl (perfil cargado) y luego envía los valores de propiedades actualizados.
PS — Guardar un perfil
{
"PS": {
"m": {
"Focus": {
"profile": "myProfile"
}
}
}
}El servidor responde con un mensaje fs (perfil guardado).
Operaciones sobre cuadrículas
Los comandos de cuadrícula apuntan a una propiedad específica dentro de un módulo. Todos usan la envoltura m / p.
GC — Crear una línea de cuadrícula
Añade una nueva línea a la cuadrícula con los valores de elementos proporcionados.
{
"GC": {
"m": {
"Sequencer": {
"p": {
"sequence": {
"e": {
"target": "M31",
"exposure": 120,
"count": 10
}
}
}
}
}
}
}El servidor responde con un mensaje gc confirmando el índice de la nueva línea.
GU — Actualizar una línea de cuadrícula
Actualiza una línea específica (índice base cero i) con nuevos valores de elementos.
{
"GU": {
"m": {
"Sequencer": {
"p": {
"sequence": {
"i": 1,
"e": {
"target": "M42",
"exposure": 60
}
}
}
}
}
}
}GD — Eliminar una línea de cuadrícula
Elimina la línea en el índice i (base cero).
{
"GD": {
"m": {
"Sequencer": {
"p": {
"sequence": {
"i": 0
}
}
}
}
}
}GF — Seleccionar una línea de cuadrícula
Solicita al servidor que cargue una línea de la cuadrícula en los elementos editables de la propiedad (usado al hacer clic en una línea para editarla).
{
"GF": {
"m": {
"Sequencer": {
"p": {
"sequence": {
"i": 2
}
}
}
}
}
}GH — Subir una línea de cuadrícula
Desplaza la línea en el índice i una posición hacia arriba.
{
"GH": {
"m": {
"Sequencer": {
"p": {
"sequence": {
"i": 3
}
}
}
}
}
}GB — Bajar una línea de cuadrícula
Desplaza la línea en el índice i una posición hacia abajo.
{
"GB": {
"m": {
"Sequencer": {
"p": {
"sequence": {
"i": 2
}
}
}
}
}
}Ciclo de vida de los módulos
ML — Cargar un módulo
Solicita al servidor cargar dinámicamente un módulo.
{
"ML": {
"m": {
"ModuleName": {}
}
}
}MK — Descargar un módulo
Solicita al servidor descargar un módulo en ejecución.
{
"MK": {
"m": {
"ModuleName": {}
}
}
}Control del servidor INDI embebido
Estos comandos solo están disponibles cuando el servidor dispone de una instancia INDI embebida.
| Comando | Descripción |
|---|---|
YA | Iniciar el servidor INDI embebido |
YZ | Detener el servidor INDI embebido |
YL | Cargar un driver INDI |
YR | Recargar un driver INDI |
YS | Detener un driver INDI |
Resumen del control de acceso
| Valor grant servidor | Comandos permitidos |
|---|---|
grant-client: "1" | Todos los comandos |
grant-client: "0" | Solo DU, LO, IL |
grant-client: "-1" | Solo LO (autenticación requerida) |
Los comandos enviados sin permisos suficientes son ignorados silenciosamente por el servidor.