Come comunicare con Databoom utilizzando MQTTBox o MQTTLens

E' possibile collegarsi al broker MQTT di Databoom utilizzando utility online quali MQTTBox o MQTTLens.

Per la configurazione di un dispositivo MQTT in Databoom leggi anche: MQTT

 

Prima di iniziare

Per potersi collegare al broker MQTT è necessario annotare da Databoom:

  • il proprio username;
    • nell'esempio verrà utilizzato lo username databoom
  • il proprio ambito utente (dal profilo personale);
    • nell'esempio verrà utilizzato l'ambito aFk1
  • un token OAuth (Impostazioni 🡺 Credenziali 🡺 Chiavi OAuth/Aggiungi OAuth);
    • nell'esempio verrà utilizzato un token fittizio kQHpPRPtiJcPa7FQCFaKUrnRABx2Fe/TnzzzkZD9R9M=
  • il token del proprio dispositivo (dalla pagina di dettaglio del dispositivo);
    • nell'esempio verrà utilizzato il token fittizio 0ewpu6ewmj
  • topic per la pubblicazione/sottoscrizione del proprio dispositivo (dalla pagina di dettaglio del dispositivo);
    • nell'esempio verranno utilizzati i topic fittizi:
    • MQTT/0ewpu6ewmj/data per la pubblicazione
    • MQTT/0ewpu6ewmj/info per la sottoscrizione

TIP! E' consigliabile generare un token OAuth diverso per ogni client utilizzato per una maggiore sicurezza.

 

Struttura parametri da inoltrare

I parametri da inviare devono essere in formato JSON, in particolare si segue la struttura:

{
"type": "data",
"message": { "device": "<token dispositivo>", "date": "<data>", "signals" : [ { "name": "<token segnale>", "value": <valore segnale> } ] }
}

device è il token del proprio dispositivo mentre date è la data della rilevazione. I segnali vanno inseriti nell'array signals, sono costituiti dal campo name che costituisce il token del segnale, e value il suo valore.

Se si vuole aggiornare un segnale già presente nel proprio dispositivo su Databoom, name dovrà corrispondere al token esistente. Se il segnale non è presente in Databoom, verrà inserito utilizzando name come token. Il valore dovrà pertanto essere univoco all'interno del dispositivo.

Coi valori dell'esempio avremo quindi:

{
 "type": "data",
 "message": {
     "device": "0ewpu6ewmj",
     "date": "2018-04-13T09:00:00+02:00",
     "signals" : [
       {
         "name": "MQTT_signal",
         "value": 123  
       }
     ]
   }
}

 

MQTTBox

I campi necessari per la creazione di un client MQTT sono:

  • MQTT Client Name, un nome a piacere per identificare il proprio client nell'applicazione;
  • MQTT Client Id, formato dall'ambito utente e dal token del dispositivo con la struttura <ambito utente>-<token dispositivo>;
    • Il Client Id d'esempio è aFk1-0ewpu6ewmj
  • Protocol, è consentito l'utilizzo di mqtt / tcp o mqtts / tls;
  • Host, l'indirizzo del broker di Databoom mqtt.databoom.com e la porta utilizzata (1883 nel caso di tcp,  8883 nel caso di tls);
  • Username, il nome utente;
    • Lo username di esempio è databoom
  • Password, un token OAuth generato dall'utente;
    • il token di esempio è kQHpPRPtiJcPa7FQCFaKUrnRABx2Fe/TnzzzkZD9R9M=
  • Append timestamp to MQTT client id dev'essere deselezionato.

Una volta stabilita la connessione con il broker è possibile pubblicare dei dati oppure sottoscriversi al topic per supervisionare gli eventi del dispositivo.

Il topic per la pubblicazione è costituito da <progetto>/<token dispositivo>/<topic>, ed è visualizzato nella pagina di dettaglio del dispositivo. Il formato dei dati da inoltrare è un JSON contenente il token del dispositivo e i segnali con i loro valori, come riportato in capo all'articolo.  

  • Con i dati dell'esempio il topic sarà: MQTT/0ewpu6ewmj/data

Il topic per la sottoscrizione è costituito da <progetto>/<token dispositivo>/<topic>, ed è visualizzato nella pagina di dettaglio del dispositivo. Sottoscrivendosi a dispositivo verranno visualizzati tutti gli eventi, come ad esempio la conferma di ricezione dei dati pubblicati.

  • Con i dati dell'esempio il topic sarà: MQTT/0ewpu6ewmj/info

Pubblicando sul topic dati è anche possibile creare allarmi ed eventi seguendo rispettivamente i formati:

{
    "type": "alarm",
    "message":  {
      "dateOn": "2018-04-13T09:00:00+02:00",
      "description": "Questo e' un test di allarme da mqtt",
      "note": "Testo piu' verboso per allarme da mqtt",
      "status": "ON",
      "ack": "NACK"
    }
}
{
    "type": "event",
    "message":  {
        "description": "Evento da mqtt su segnale di dispositivo",
      "from": "2018-04-13T09:00:00+02:00",
      "to": "2018-04-13T10:00:00+02:00",
        "link": {
            "device": "<token dispositivo>",
            "signal": "<token segnale>"
        },
      "tags": [
        "mqtt"
      ]
    }
}

Con i dati dell'esempio avremo:

{
    "type": "alarm",
    "message":  {
      "dateOn": "2018-04-13T09:00:00+02:00",
      "description": "Questo e' un test di allarme da mqtt",
      "note": "Testo piu' verboso per allarme da mqtt",
      "status": "ON",
      "ack": "NACK"
    }
}
{
    "type": "event",
    "message":  {
        "description": "Evento da mqtt su segnale di dispositivo",
      "from": "2018-04-13T09:00:00+02:00",
      "to": "2018-04-13T10:00:00+02:00",
        "link": {
            "device": "0ewpu6ewmj",
            "signal": "MQTT_signal"
        },
      "tags": [
        "mqtt"
      ]
    }
}

 

MQTTLens

I campi necessari per la creazione di un client MQTT sono:

  • Connection Name, un nome a piacere per identificare il proprio client nell'applicazione;
  • Hostname, selezionare tcp e inserire l'indirizzo del broker MQTT di Databoom mqtt.databoom.com;
  • Port, la porta del broker è 1883;
  • Client ID, formato dall'ambito utente e dal token del dispositivo con la struttura <ambito utente>-<token dispositivo>;
    • Il Client Id d'esempio è aFk1-0ewpu6ewmj
  • Username, il nome utente;
    • Lo username di esempio è databoom
  • Password, un token OAuth generato dall'utente.
    • il token di esempio è kQHpPRPtiJcPa7FQCFaKUrnRABx2Fe/TnzzzkZD9R9M=

Una volta stabilita la connessione con il broker è possibile pubblicare dei dati oppure sottoscriversi al topic per supervisionare gli eventi del dispositivo.

Il topic per la pubblicazione è costituito da <progetto>/<token dispositivo>/<topic>, ed è visualizzato nella pagina di dettaglio del dispositivo. Il formato dei dati da inoltrare è un JSON contenente il token del dispositivo e i segnali con i loro valori, come riportato in capo all'articolo.  E' possibile sottoscriversi allo stesso canale per visualizzare i dati pubblicati.

  • Con i dati dell'esempio il topic sarà: MQTT/0ewpu6ewmj/data

Il topic per la sottoscrizione è costituito da <progetto>/<token dispositivo>/<topic>, ed è visualizzato nella pagina di dettaglio del dispositivo. Sottoscrivendosi a dispositivo verranno visualizzati tutti gli eventi, come ad esempio la conferma di ricezione dei dati pubblicati.

  • Con i dati dell'esempio il topic sarà: MQTT/0ewpu6ewmj/info

Pubblicando sul topic dati è anche possibile creare allarmi ed eventi seguendo rispettivamente i formati:

{
    "type": "alarm",
    "message":  {
      "dateOn": "2018-04-13T09:00:00+02:00",
      "description": "Questo e' un test di allarme da mqtt",
      "note": "Testo piu' verboso per allarme da mqtt",
      "status": "ON",
      "ack": "NACK"
    }
}
{
    "type": "event",
    "message":  {
        "description": "Evento da mqtt su segnale di dispositivo",
      "from": "2018-04-13T09:00:00+02:00",
      "to": "2018-04-13T10:00:00+02:00",
        "link": {
            "device": "<token dispositivo>",
            "signal": "<token segnale>"
        },
      "tags": [
        "mqtt"
      ]
    }
}

Con i dati dell'esempio avremo:

{
    "type": "alarm",
    "message":  {
      "dateOn": "2018-04-13T09:00:00+02:00",
      "description": "Questo e' un test di allarme da mqtt",
      "note": "Testo piu' verboso per allarme da mqtt",
      "status": "ON",
      "ack": "NACK"
    }
}
{
    "type": "event",
    "message":  {
        "description": "Evento da mqtt su segnale di dispositivo",
      "from": "2018-04-13T09:00:00+02:00",
      "to": "2018-04-13T10:00:00+02:00",
        "link": {
            "device": "0ewpu6ewmj",
            "signal": "MQTT_signal"
        },
      "tags": [
        "mqtt"
      ]
    }
}
Altre domande? Invia una richiesta

0 Commenti

Accedi per aggiungere un commento.