Template MQTT

Configurazione template MQTT

Selezionando il tipo di dispositivo MQTT fra i tipi di template disponibili, vengono visualizzati i campi necessari per la comunicazione e la creazione di dispositivi.

I topic di un dispositivo (e template) MQTT si distinguono in: 

  • Topic sul quale pubblicare per inviare dati, dove il client dovrà pubblicare i dati affinché vengano ricevuti e processati da Databoom
  • Topic sul quale si ricevono informazioni da Databoom, dove il client potrà sottoscriversi per ricevere informazioni da Databoom

Il campo Progetti permette di inserire una o più stringhe che andranno a costituire le radici dei topic. Inserendo più progetti si avranno quindi più topic per la pubblicazione e più topic per la sottoscrizione.

I topic dei template MQTT seguono la struttura <progetto>/<valore unico arbitrario>/<topic>

Il valore unico arbitrario è un valore scelto a piacere dall'utente per identificare in maniera univoca il dispositivo in quanto verrà utilizzato per comporre, insieme all'ambito utente visualizzabile nel profilo personale, il ClientId da impostare nel proprio client MQTT, che avrà quindi la struttura <ambito utente>-<valore unico arbitrario>

Il valore unico arbitrario verrà inoltre utilizzato, insieme al token del template, come token e descrizione del dispositivo generato seguendo la struttura <token template>-<valore unico arbitrario>

Si considerino, ad esempio, MQTTTest come progetto, data come topic di pubblicazione e info come topic di sottoscrizione, verranno visualizzati nella sezione sottostante i topic così formati:

  • MQTTTest/<valore unico arbitrario>/data
  • MQTTTest/<valore unico arbitrario>/info

Trasmettere ad un template

Una volta configurati tutti i campi di un template, è possibile iniziare la comunicazione e quindi la generazione di dispositivi.

Per l'autenticazione al broker MQTT è necessario utilizzare come password un OAuth token generato in Databoom con permessi di Pubblicazione Creazione

  • Nel menù laterale Impostazioni -> Credenziali, cliccare il pulsante Aggiungi OAuth nel riquadro Chiavi OAuth
  • Per garantire una sicurezza ottimale, si consiglia di generare un OAuth token diverso per ogni istanza del template che si vuole configurare

Il formato dei dati da inoltrare al topic di pubblicazione (nell'esempio MQTTTest/<valore unico arbitrario>/data) è il seguente:

{
    "type": "data",
    "message":  [
      {
        "template": "<token template MQTT>",
        "date": "2018-04-12T15:00:00.000Z",
        "signals": [
          {
            "name": "<token segnale 1>",
            "value": <valore segnale 1>
          },
          {
            "name": "<token segnale 2>",
            "value": <valore segnale 2>
          }
        ]
      }
    ]
}

Il <token template MQTT> è disponibile nel riquadro informazioni all'interno del dispositivo.

Il campo date non è obbligatorio, se non viene inserito viene memorizzata la data al momento della ricezione.

I token dei segnali, nell'esempio <token segnale 1> e <token segnale 2>, possono essere copiati direttamente dalla pagina del dispositivo cliccando l'icona di copia all'interno dell'etichetta corrispondente.

La pubblicazione di questi dati comporta:

  • Se precedentemente non è avvenuta alcuna comunicazione:
    • la generazione di un nuovo dispositivo con token <token template MQTT>-<valore unico arbitrario>. Il dispositivo verrà popolato con gli stessi segnali associati al template (nuovi segnali con lo stesso token), indipendentemente dal fatto che vengano inviati o meno loro valori. I segnali saranno già validati e pronti a comunicare. Se in signals vengono inseriti segnali non previsti dal template, vengono creati nel nuovo dispositivo in attesa di validazione
  • Se precedentemente sono già avvenute comunicazioni:
    • l'aggiornamento del dispositivo <token template MQTT>-<valore unico arbitrario> con i valori in signals. Se al template è stato associato un nuovo segnale, viene creato anche nel dispositivo

message è un array, è pertanto possibile creare/comunicare con più dispositivi a pubblicazione, a patto che facciano riferimento a template diversi.

Funzione di trasformazione per dati pubblicati

Nel caso non sia possibile personalizzare il contenuto dei dati da inoltrare nel formato compatibile con Databoom (formato del punto precedente), è possibile specificare, nella pagina di modifica dei singoli segnali, una funzione di trasformazione per elaborare il payload inoltrato e renderlo interpretabile dalla piattaforma.

La funzione deve ritornare uno o più valori (array []) nel formato:

{
    'date': <DATA>,
    'value': <VALORE>
}

o

{
    'value': <VALORE>
}

o

<VALORE>

Nel caso si utilizzi un array, è possibile utilizzare formati diversi per le diverse componenti.

Nell'esempio si può notare la funzione doIt 

function doIt(payload) {    
return { 'date': new Date(), 'value': (payload[1].charCodeAt(0) - 97)
}; }

Il parametro payload permette di accedere ai dati pubblicati e di elaborarli in modo da restituirli nel formato compatibile. Nell'esempio il valore viene ricavato sottraendo 97 al codice del primo carattere della prima componente del payload.

Altre domande? Invia una richiesta

0 Commenti

Accedi per aggiungere un commento.