Messaggi Client → Server

Formato dei messaggi

Ogni messaggio è un oggetto JSON con una sola chiave di primo livello che identifica il comando. Il valore è un oggetto la cui struttura dipende dal comando.

Tutte le chiavi dei comandi client sono in MAIUSCOLO (es. DU, SV, SA, GC).


Indice dei comandi

ChiaveDescrizione
DURichiedere il dump completo
XXHeartbeat / keepalive
LOConnessione
ILCambiare la lingua
SVInviare il valore di un singolo elemento
SAInviare tutti i valori degli elementi
I1Clic su preicon1 di proprietà
I2Clic su preicon2 di proprietà
I3Clic su posticon1 di proprietà
I4Clic su posticon2 di proprietà
J1Clic su preicon di elemento
J2Clic su posticon di elemento
PLCaricare un profilo
PSSalvare un profilo
GCCreare una riga di griglia
GUAggiornare una riga di griglia
GDEliminare una riga di griglia
GFSelezionare una riga di griglia
GHSpostare in alto una riga di griglia
GBSpostare in basso una riga di griglia
MLCaricare un modulo
MKScaricare un modulo
YAAvviare il server INDI integrato
YZArrestare il server INDI integrato
YLCaricare un driver INDI
YRRicaricare un driver INDI
YSArrestare un driver INDI

Tutti i messaggi destinati a un modulo o una proprietà usano il seguente involucro:

{
  "COMANDO": {
    "m": {
      "NomeDelModulo": {
        "p": {
          "nomeDellaProprietà": { ... }
        }
      }
    }
  }
}

dove m indica modules e p indica properties.


Gestione della sessione

DU — Richiedere il dump completo

Deve essere inviato immediatamente dopo la connessione. Il server risponde con un messaggio d contenente tutti i moduli.

{ "DU": { "language": "it" } }
CampoDescrizione
languageLingua preferita per le etichette tradotte ("en", "it", ecc.)

XX — Heartbeat

Da inviare ogni 30 secondi per mantenere attiva la connessione. Il server risponde con xx.

{ "XX": {} }

LO — Connessione

Richiesto quando il server ha il controllo degli accessi attivato (grant-client vale "-1" nella risposta dump).

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

IL — Cambiare la lingua

Modifica la lingua delle etichette tradotte senza riconnettersi.

{ "IL": { "language": "it" } }

Aggiornamento dei valori di proprietà

SV — Inviare il valore di un singolo elemento

Da usare quando directedit è true sull’elemento — invia immediatamente il valore di un singolo elemento.

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

e contiene una sola coppia nomeElemento: valore.


SA — Inviare tutti i valori degli elementi

Usato per inviare tutti gli elementi editabili di una proprietà in una volta (es. da un form). Usato anche quando directedit è false.

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

Azioni sulle icone

Le icone di proprietà (preicon / posticon) attivano azioni backend come il salvataggio di un profilo, il caricamento di un profilo o l’avvio di un processo. Gli eventi di clic vengono inviati tramite i seguenti comandi.

I1 — Clic su preicon1 di proprietà

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

I2 — Clic su preicon2 di proprietà

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

I3 — Clic su posticon1 di proprietà

Stessa struttura di I1 / I2.

I4 — Clic su posticon2 di proprietà

Stessa struttura di I1 / I2.


J1 — Clic su preicon di elemento

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

J2 — Clic su posticon di elemento

Stessa struttura di J1.


Gestione dei profili

PL — Caricare un profilo

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

Il server risponde con un messaggio fl (profilo caricato) poi invia i valori delle proprietà aggiornati.


PS — Salvare un profilo

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

Il server risponde con un messaggio fs (profilo salvato).


Operazioni sulle griglie

I comandi di griglia sono destinati a una proprietà specifica all’interno di un modulo. Tutti usano l’involucro m / p.

GC — Creare una riga di griglia

Aggiunge una nuova riga alla griglia con i valori degli elementi forniti.

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

Il server risponde con un messaggio gc che confirma l’indice della nuova riga.


GU — Aggiornare una riga di griglia

Aggiorna una riga specifica (indice a base zero i) con nuovi valori degli elementi.

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

GD — Eliminare una riga di griglia

Elimina la riga all’indice i (base zero).

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

GF — Selezionare una riga di griglia

Chiede al server di caricare una riga della griglia negli elementi editabili della proprietà (usato quando si clicca su una riga per modificarla).

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

GH — Spostare in alto una riga di griglia

Sposta la riga all’indice i di una posizione verso l’alto.

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

GB — Spostare in basso una riga di griglia

Sposta la riga all’indice i di una posizione verso il basso.

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

Ciclo di vita dei moduli

ML — Caricare un modulo

Chiede al server di caricare dinamicamente un modulo.

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

MK — Scaricare un modulo

Chiede al server di scaricare un modulo in esecuzione.

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

Controllo del server INDI integrato

Questi comandi sono disponibili solo quando il server dispone di un’istanza INDI integrata.

ComandoDescrizione
YAAvviare il server INDI integrato
YZArrestare il server INDI integrato
YLCaricare un driver INDI
YRRicaricare un driver INDI
YSArrestare un driver INDI

Riepilogo del controllo degli accessi

Valore grant serverComandi autorizzati
grant-client: "1"Tutti i comandi
grant-client: "0"Solo DU, LO, IL
grant-client: "-1"Solo LO (autenticazione richiesta)

I comandi inviati senza diritti sufficienti vengono silenziosamente ignorati dal server.