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
| Chiave | Descrizione |
|---|---|
DU | Richiedere il dump completo |
XX | Heartbeat / keepalive |
LO | Connessione |
IL | Cambiare la lingua |
SV | Inviare il valore di un singolo elemento |
SA | Inviare tutti i valori degli elementi |
I1 | Clic su preicon1 di proprietà |
I2 | Clic su preicon2 di proprietà |
I3 | Clic su posticon1 di proprietà |
I4 | Clic su posticon2 di proprietà |
J1 | Clic su preicon di elemento |
J2 | Clic su posticon di elemento |
PL | Caricare un profilo |
PS | Salvare un profilo |
GC | Creare una riga di griglia |
GU | Aggiornare una riga di griglia |
GD | Eliminare una riga di griglia |
GF | Selezionare una riga di griglia |
GH | Spostare in alto una riga di griglia |
GB | Spostare in basso una riga di griglia |
ML | Caricare un modulo |
MK | Scaricare un modulo |
YA | Avviare il server INDI integrato |
YZ | Arrestare il server INDI integrato |
YL | Caricare un driver INDI |
YR | Ricaricare un driver INDI |
YS | Arrestare 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" } }| Campo | Descrizione |
|---|---|
language | Lingua 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.
| Comando | Descrizione |
|---|---|
YA | Avviare il server INDI integrato |
YZ | Arrestare il server INDI integrato |
YL | Caricare un driver INDI |
YR | Ricaricare un driver INDI |
YS | Arrestare un driver INDI |
Riepilogo del controllo degli accessi
| Valore grant server | Comandi 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.