Comunicare con Thingsboard: HTTP

Cominciamo ad esaminare le diverse modalità di comunicazione con Thingsboard.

Nella versione CE sono supportati i protocolli: HTTP, MQTT e CoAP.

Partiamo da HTTP.

In estrema sintesi per pubblicare i nostri dati sulla piattaforma dovremo contattare la URL

http(s)://host:port/api/v1/$ACCESS_TOKEN/telemetry

dove

  • host:port sono l’ip e il numero di porta del server su cui gira TB
  • $ACCESS_TOKEN è il token associato al dispositivo registrato sulla piattaforma

Di default si utilizza il formato JSON per cui i dati da spedire dovranno rispettare il seguente formato

{"key1":"value1", "key2":"value2"} (oggetto JSON)

oppure

[{"key1":"value1"}, {"key2":"value2"}] (array JSON)

Poichè ad ogni dato dovrà essere associato un timestamp in questo caso sarà il server ad occuparsene.

Se invece si desidera inviarne uno (ad esempio perchè il server si trova in cloud su un diverso fuso orario) dovrà essere specificato nel payload in questo modo

{"ts":1451649600512, "values":{"key1":"value1", "key2":"value2"}}

Vediamo un esempio pratico.

Per prima cosa ci serve l’ACCESS_KEY del dispositivo, un codice univoco che crea un’associazione tra il device fisico e il corrispondente virtuale.

Per semplicità utilizzeremo uno dei dispositivi di test già precaricati a cui invieremo dei dati da riga di comando simulando il processo reale.

In seguito faremo un esempio più concreto con tanto di procedura di registrazione.

Quindi accediamo a TB utilizzando l’utenza customer con le seguenti credenziali customer@thingsboard.org / customer.

Per ulteriori dettagli si rimanda a questo post.

Selezioniamo l’opzione “Visualizza Dispositivi”

thingsboard-accesso-device

per ottenere la lista dei device registrati.

thingsboard-lista-device

Prendiamo il primo denominato “Test Device A1” e visualizziamo le sue credenziali. Il token di accesso é “A1_TEST_TOKEN”.

access-token

A questo punto possiamo simulare l’invio dei dati sfruttando il tool cURL.

Creiamo un file data.json ed inseriamo la seguente stringa

{"key1":"value1", "key2":true, "key3": 3.0, "key4": 4}

Si tratta di un tipico oggetto JSON contenente 4 elementi con tutti i tipi supportati: nell’ordine string, boolean, float e integer.

Quindi digitiamo da riga di comando

curl -v -X POST -d @data.json http://localhost:9090/api/v1/A1_TEST_TOKEN/telemetry --header "Content-Type:application/json"

thingsboard-curl

Una serie di informazioni ci confermano che l’operazione è andata a buon fine.

Ritorniamo su TB e visualizziamo l’ultima telemetria dove sono riportati i valori appena trasmessi.

thingsboard-telemetria

Davvero niente di più semplice. E’ chiaro che in un ambiente di produzione il dispositivo fisico dovrà essere in grado di spedire autonomamente i dati comunicando attraverso HTTP(S).

Lo vedremo sul campo con Arduino.

Per ora è tutto. La prossima volta ci occuperemo del protocollo MQTT.

Lascia una risposta

L'indirizzo email non verrà pubblicato. I campi obbligatori sono contrassegnati *

Utilizzando il sito, accetti l'invio dei cookies da parte nostra. Maggiori informazioni

Questo sito utilizza i cookies per fornire la migliore esperienza di navigazione possibile. Continuando ad utilizzarlo senza modificare le impostazioni o cliccando su "Accetta" acconsenti al loro utilizzo.

Chiudi