Come comunicare con Databoom utilizzando MQTT.fx

E' possibile collegarsi al broker MQTT di Databoom utilizzando MQTT.fx.

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:
      • databoomtest
  • il proprio ambito utente (dal profilo personale);
    • nell'esempio verrà utilizzato l'ambito:
      • V9Gg
  • 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:
      •  0kvt8awd1v
  • topic per la pubblicazione/sottoscrizione del proprio dispositivo (dalla pagina di dettaglio del dispositivo);
    • nell'esempio verranno utilizzati i topic fittizi:
      • MQTTfx/0kvt8awd1v/data per la pubblicazione
      • MQTTfx/0kvt8awd1v/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. Il campo date può essere omesso, in tal caso verrà utilizzata la data di ricezione del valore.

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": "0kvt8awd1v",
         "date": "2020-03-05T14:50:00+01:00",
         "signals" : [
           {
             "name": "MQTT_signal",
             "value": 123  
           }
         ]
       }
    }
    

 


 

MQTT.fx

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

  • Profile Name, un nome a piacere per identificare il proprio client nell'applicazione;
  • Profile Type, va selezionato MQTT Broker;
  • Broker Address, l'indirizzo del broker di Databoom mqtt.databoom.com;
  • Broker Port, la porta utilizzata 1883;
  • Client ID, formato dall'ambito utente e dal token del dispositivo con la struttura <ambito utente>-<token dispositivo>;
    • Il Client Id d'esempio è:
      •  V9Gg-0kvt8awd1v
  • User Credentials
    • Username, il nome utente;
      • Lo username di esempio è:
        • databoomtest
    • Password, un token OAuth generato dall'utente;
      • il token di esempio è:
        •  kQHpPRPtiJcPa7FQCFaKUrnRABx2Fe/TnzzzkZD9R9M=

E' inoltre possibile autenticarsi attraverso l'utilizzo dei certificati, generati alla creazione di un dispositivo MQTT in Databoom:

  • Broker Address va impostato a mqttcert.databoom.com;
  • Broker Port è 8883;
  • SSL / TLS
    • Selezionare Enable SSL/TLS 
    • Protocol va impostato a TLSv1.2
    • Self signed certificates
      • Nei campi CA file, Client certificate file, Client key file vanno caricati i file certificati scaricati dal dispositivo in Databoom

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à: 
    • MQTTfx/0kvt8awd1v/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à:
    • MQTTfx/0kvt8awd1v/info

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

{
    "type": "alarm",
    "message":  {
      "dateOn": "2020-03-05T14:50:00+01:00",
      "description": "Questo e' un test di allarme da mqtt",
      "comment": "Testo piu' verboso per allarme da mqtt",
      "status": "ON",
      "ack": "NACK"
    }
}
{
    "type": "event",
    "message":  {
        "description": "Evento da mqtt su segnale di dispositivo",
      "from": "2020-03-05T14:50:00+01:00",
      "to": "2020-03-05T16:50:00+01:00",
        "link": {
            "device": "<token dispositivo>",
            "signal": "<token segnale>"
        },
      "tags": [
        "mqtt"
      ]
    }
}
  • Con i dati dell'esempio avremo:

    {
        "type": "alarm",
        "message":  {
          "dateOn": "2020-03-05T14:50:00+01:00",
          "description": "Questo e' un test di allarme da mqtt",
          "comment": "Testo piu' verboso per allarme da mqtt",
          "status": "ON",
          "ack": "NACK"
        }
    }
    {
        "type": "event",
        "message":  {
            "description": "Evento da mqtt su segnale di dispositivo",
          "from": "2020-03-05T14:50:00+01:00",
          "to": "2020-03-05T16:50:00+01:00",
            "link": {
                "device": "0kvt8awd1v",
                "signal": "MQTT_signal"
            },
          "tags": [
            "mqtt"
          ]
        }
    }
Altre domande? Invia una richiesta

0 Commenti

Accedi per aggiungere un commento.