Vai al contenuto

Guida a ThingsBoard

Questa guida accompagna i laboratori 3 – La piattaforma IoT ThingsBoard e 4 – Progetta il tuo dispositivo IoT. Non serve leggerla tutta: quando nella lezione trovate un passaggio che non vi è chiaro, venite qui e cercate la sezione giusta.

Come si leggono le immagini:

  • i riquadri rossi mostrano dove cliccare o che cosa guardare;
  • i numeri nei cerchi rossi sono l'ordine dei clic (1, poi 2, poi 3…);
  • cliccate un'immagine per vederla a grandezza piena.

Le schermate vengono dalla stessa versione di ThingsBoard di ServerLab (4.3), con un account di prova: "Giulia Rossi" e i token che vedete sono solo esempi. Nel vostro spazio ci saranno il vostro nome e i vostri dispositivi.

In questa guida

  1. Entrare in ThingsBoard
  2. Creare un dispositivo
  3. Il pannello del dispositivo: token, telemetria, attributi
  4. Creare una dashboard e il primo widget
  5. Altri widget: grafico, tabella allarmi, terminale dei comandi
  6. Usare la dashboard: finestra temporale e modifiche
  7. Le regole di allarme
  8. Gli allarmi: dove compaiono e cosa farne
  9. Mandare un comando al dispositivo (RPC)
  10. Le parole di ThingsBoard
  11. Per il docente

1. Entrare in ThingsBoard

Dai PC del laboratorio di robotica aprite il browser all'indirizzo http://192.168.104.117:8080.

La pagina di accesso di ThingsBoard
1 la vostra email (es. giulia.rossi@5a.lab), 2 la password che vi ha dato il docente, 3 Accedi.

Password dimenticata? Il collegamento sotto il pulsante non funziona: ThingsBoard proverebbe a mandarvi un'email, ma a scuola le email non partono. Chiedete al docente: vi dà una password nuova in un minuto, e i vostri dispositivi e dashboard restano.

Dopo l'accesso si apre la Home. Le parti che userete sono solo tre, nel menu a sinistra:

La home di ThingsBoard dopo l'accesso
1 Allarmi, 2 Dashboard, 3 Entità (dentro ci sono i Dispositivi). In alto a destra 4 c'è il vostro nome, con scritto Amministratore tenant: siete gli amministratori del vostro spazio.

Che cosa c'è nella Home

Nella Home non si costruisce niente, ma è un buon riassunto del vostro lavoro:

  • Inizia (a destra): la lista dei passi base, crea dispositivo, connetti dispositivo, crea dashboard, configura regole di allarme, crea allarme. Ogni passo fatto riceve la spunta: è un modo veloce per vedere a che punto siete. L'ultimo passo, crea cliente e condividi dashboard, nei laboratori non serve.
  • Dispositivi e Allarmi: i contatori. Un dispositivo Inattivo vuol dire che lo script non sta mandando dati.
  • Dashboard → Ultima visualizzazione: riapre con un clic l'ultima dashboard usata.
  • Attività: il grafico di quello che è successo negli ultimi 30 giorni.

Il resto (i modelli dell'IoT Hub, i link alla documentazione in inglese, Utilizzo con i limiti dello spazio, il QR per l'app mobile) si può ignorare.

Ognuno ha uno spazio tutto suo (in ThingsBoard si chiama tenant): i compagni non vedono i vostri dispositivi e voi non vedete i loro. Potete quindi provare tutto senza paura di rompere il lavoro di qualcun altro.

Qualche scritta resta in inglese anche con l'interfaccia in italiano (i nomi dei widget, alcune notifiche, i titoli delle colonne di certe tabelle): è normale.

2. Creare un dispositivo

Un dispositivo è il "gemello" in ThingsBoard di un oggetto vero (o del vostro script Python): riceve le sue misure e gli manda i comandi. Menu Entità → Dispositivi.

L'elenco dei dispositivi
1 Il pulsante + apre il menu per aggiungere un dispositivo. Nella colonna Stato si vede se il dispositivo è Attivo (sta mandando dati) o Inattivo.
Il menu del pulsante più
2 Scegliete Aggiungi nuovo dispositivo. Le altre due voci (importare da file, IoT Hub) non servono.
La finestra Aggiungi nuovo dispositivo
1 Il nome (es. cisterna o sensore-aula): è l'unico campo obbligatorio. Etichetta è facoltativa: è un nome più leggibile che compare nelle dashboard. Il profilo lasciatelo default. Poi 2 Aggiungi.

Subito dopo, ThingsBoard apre una finestra per "verificare la connettività":

La finestra Verifichiamo la connettività
Mostra un comando di prova per mandare un dato con curl, già con il token del dispositivo. Non serve: chiudetela con Chiudi. Lo Stato resta Inattivo finché il dispositivo non manda il primo dato.
Il nuovo dispositivo nell'elenco
Il dispositivo è nell'elenco, ancora Inattivo. Sulla destra della riga ci sono le azioni rapide (condividere, assegnare, credenziali, eliminare): per ora non servono.

3. Il pannello del dispositivo

Cliccate sul nome del dispositivo: a destra si apre il suo pannello, con diverse schede in alto (Dettagli, Attributi, Ultima telemetria, Campi calcolati, Regole allarme… con le frecce < > si vedono le altre).

Il token

La scheda Dettagli del dispositivo
1 Copia token di accesso copia il token: è quello da incollare nella riga TOKEN dello script Python. 2 Gestisci credenziali mostra il token e permette di cambiarlo.

Il token è la "password" del dispositivo: chi lo conosce può mandare dati a nome suo. Per questo ogni dispositivo ha il suo, e non va condiviso.

La finestra Credenziali del dispositivo
Il tipo di credenziali è Access token (lasciatelo così: X.509 e MQTT Basic sono altri sistemi, più complessi). Se il token è finito nelle mani sbagliate, qui si può cambiare: poi va ricopiato nello script.

Ultima telemetria: i dati che arrivano

La scheda Ultima telemetria
1 In Ultima telemetria c'è l'ultimo valore di ogni dato mandato dal dispositivo: la chiave (il nome, es. livello) e il valore. La tabella si aggiorna da sola.

È il primo posto da guardare quando "non funziona niente":

  • se la tabella è vuota, il dispositivo non sta mandando dati (lo script è fermo, o il token è sbagliato);
  • se c'è un dato ma con un nome diverso da quello che vi aspettate (Livello invece di livello), è quello il nome da usare nei widget e negli allarmi: ThingsBoard distingue maiuscole e minuscole.

Le chiavi non si creano a mano: compaiono da sole appena lo script manda un dato nuovo. Il cestino a destra cancella una chiave (con tutti i suoi valori).

Attributi: le informazioni "fisse"

La scheda Attributi del dispositivo
1 La scheda Attributi. 2 Il menu Ambito: gli attributi client sono quelli che manda il dispositivo (qui l'aula, il piano e il tipo di sensore). Gli attributi server e condivisi li scrive invece chi usa ThingsBoard.

Differenza tra i due tipi di dati:

Telemetria Attributi
Che cosa sono misure che cambiano nel tempo informazioni che cambiano poco o mai
Esempi temperatura, livello, CO₂ aula, piano, modello del sensore
Storico ThingsBoard tiene tutti i valori (servono per i grafici) conta solo l'ultimo valore
Topic MQTT v1/devices/me/telemetry v1/devices/me/attributes

4. Creare una dashboard e il primo widget

Una dashboard è una pagina con dei widget: indicatori, grafici, tabelle, pulsanti. Ogni widget legge i dati di un dispositivo. Menu Dashboard.

L'elenco delle dashboard, ancora vuoto
1 Il pulsante + (Aggiungi dashboard).
Il menu del pulsante più nelle dashboard
2 Crea nuova dashboard.
La finestra Aggiungi dashboard
3 Il titolo (es. Cisterna del cortile), poi 4 Aggiungi. Gli altri campi non servono.

La dashboard nuova si apre già in modalità modifica, vuota:

Una dashboard vuota in modalità modifica
5 Aggiungi nuovo widget. In alto a destra ci sono Salva e Annulla: ricordatevi di salvare alla fine!

I widget sono divisi in raccolte (in inglese bundles). Si può scorrere l'elenco o cercare per nome:

Le raccolte di widget
In alto la casella di ricerca. 6 La raccolta Liquid level contiene i serbatoi che si riempiono e si svuotano.
I widget della raccolta Liquid level
7 Scegliete la forma del serbatoio, per esempio Vertical cylinder tank. Ogni raccolta funziona così: cliccate sul widget che vi piace.

Si apre la configurazione del widget. Questo è il passaggio più importante:

La configurazione del widget appena scelto
8 Il dispositivo da cui il widget legge i dati (cisterna). 9 La chiave dati: il widget propone una chiave di esempio (qui fuelLevel) che il nostro dispositivo non manda.

Il widget mostra N/A? È quasi sempre questo: è rimasta la chiave di esempio. Cliccate la x sulla chiave per toglierla, poi cliccate nel campo vuoto: compare l'elenco delle chiavi che il dispositivo manda davvero (le stesse di Ultima telemetria). Sceglietene una.

La configurazione con la chiave giusta
10 Ora la chiave è livello. 11 Il Titolo della scheda è il testo che compare in alto nel widget: scriveteci qualcosa di chiaro. Poi 12 Aggiungi.
Il primo widget nella dashboard
Il widget è nella dashboard. Si può spostare trascinandolo e ridimensionare dall'angolo in basso a destra. Poi 13 Salva.
La dashboard salvata
La dashboard salvata, in modalità visualizzazione: i dati si aggiornano da soli. Per cambiare qualcosa si torna in modifica con il pulsante Modalità modifica (la matita in alto a destra).

5. Altri widget

Per aggiungerne altri: Modalità modifica → Aggiungi widget.

La dashboard in modalità modifica
1 Aggiungi widget, in alto. Quando avete finito, Salva.

I widget più utili nei laboratori:

Per… Raccolta Widget
un numero grande, con il suo nome Cards Value card
una lancetta (temperatura, velocità) Analogue gauges o Digital gauges un indicatore a scelta
un serbatoio che si riempie Liquid level un tank a scelta
l'andamento nel tempo Charts Time series chart
l'elenco degli allarmi Alarm widgets Alarms table
mandare comandi al dispositivo Control widgets RPC debug terminal (o un interruttore)

Il grafico nel tempo

La configurazione del widget Time series chart
Il grafico (raccolta Charts → Time series chart): dispositivo e 4 chiave come prima. Attenzione alle colonne della serie: Etichetta è Temperature e Unità è °C di esempio. Cambiatele (es. etichetta Livello, unità %), altrimenti il grafico del livello dirà "Temperature °C".

In alto, Usa la finestra temporale della dashboard: il grafico mostra il periodo scelto per tutta la dashboard (vedi la sezione 6).

La tabella degli allarmi

La configurazione del widget Alarms table
Raccolta Alarm widgets → Alarms table. 2 Il dispositivo di cui mostrare gli allarmi. Il Filtro sceglie quali allarmi far vedere (attivi, ripristinati, confermati…): lasciatelo vuoto per vederli tutti. Poi 3 Aggiungi.

Il terminale dei comandi

La configurazione del widget RPC debug terminal
Raccolta Control widgets → RPC debug terminal. Qui non c'è una chiave: serve solo 2 il dispositivo di destinazione, quello che riceverà i comandi.
La dashboard con tre widget
La dashboard con tre widget: il serbatoio, la tabella degli allarmi e il terminale (in nero). Trascinateli e ridimensionateli come preferite, poi Salva.

6. Usare la dashboard

La finestra temporale

Il menu della finestra temporale
Cliccando sull'orologio in alto (Tempo reale – ultimo 1 ora) si sceglie il periodo da mostrare. Tempo reale = gli ultimi minuti/ore, aggiornati di continuo; Cronologia = un periodo fisso del passato (es. ieri dalle 8 alle 14). Con Aggregazione si possono mostrare le medie invece di tutti i valori. Poi Aggiorna.

Se il grafico è vuoto ma i dati arrivano, spesso la finestra è troppo corta (o troppo lunga e i punti sono schiacciati): provate con ultimi 15 minuti o ultima ora.

Modificare un widget già fatto

Un widget in modalità modifica
In Modalità modifica, passando con il mouse su un widget compaiono in alto a destra le sue icone: 1 la matita riapre la configurazione (per cambiare chiave, titolo, colori), le altre servono a scaricarlo o toglierlo. Alla fine 2 Salva.

7. Le regole di allarme

Un allarme scatta quando un dato supera una soglia: per esempio quando il livello della cisterna scende sotto il 20 %. A decidere non è lo script, ma una regola su ThingsBoard: così la soglia si cambia senza toccare il dispositivo.

Una regola ha tre parti:

1. ARGOMENTI          quali dati guardare
   livello
       │
       ▼
2. ATTIVAZIONE        quando scatta, e quanto è grave
   livello < 20   →   Avviso
       │
       ▼
3. CANCELLAZIONE      quando si chiude da sola
   livello > 20

Sul pannello del dispositivo, scheda Regole allarme:

La scheda Regole allarme, ancora vuota
1 Il pulsante +.
Il menu del pulsante più nelle regole
2 Crea nuova regola allarme.

Il nome e gli argomenti

La finestra Regola allarme appena aperta
1 Il tipo di allarme: è il nome che comparirà nell'elenco degli allarmi (es. Cisterna quasi vuota). 2 Aggiungi argomento: l'argomento è il dato su cui si basa la regola.
La finestra Impostazioni argomento
Tipo entità: Entità corrente (il dispositivo stesso). Tipo di argomento: Ultima telemetria. 3 La chiave da guardare e 4 il nome dell'argomento, che userete nella condizione: per non confondervi, dategli lo stesso nome della chiave.
Il menu delle chiavi
Cliccando nel campo della chiave compare l'elenco delle chiavi che il dispositivo manda: sceglietela da qui, così non si sbaglia a scrivere. Poi Aggiungi.

La condizione di attivazione

La regola con l'argomento aggiunto
L'argomento livello è nella lista. Ora 5 Aggiungi condizione di attivazione.
La condizione di attivazione
6 La gravità: Critico, Maggiore, Minore, Avviso o Indeterminato (per la cisterna basta Avviso). 7 Aggiungi condizione: è qui che si scrive la soglia. Pianificazione (sempre attiva, o solo in certi orari) lasciatela com'è.
L'editor della condizione
La modalità Semplice basta per quasi tutto. 8 Aggiungi filtro argomento. In basso, Tipo: Semplice = scatta subito; Durata = solo se la condizione resta vera per un certo tempo (es. 1 minuto); Ripetizione = solo dopo un certo numero di letture di fila.
La finestra Aggiungi filtro argomento
9 L'argomento (livello), 10 il tipo di valore (Numerico), 11 l'operazione (minore di) e 12 il valore della soglia (20). Fonte del valore resta Statico. Poi Aggiungi.
L'anteprima della condizione
In Anteprima filtro si legge la condizione "in italiano": livello minore di 20. Se è giusta, 13 Salva.

La condizione di cancellazione

È facoltativa, ma comoda: senza, l'allarme resta "attivo" anche dopo che il problema è risolto.

La regola con la condizione di attivazione
Scorrete in basso: 14 Aggiungi condizione di cancellazione. Si scrive come quella di attivazione, con la condizione opposta.
La regola completa
15 La condizione di cancellazione: livello maggiore di 20 (quando la cisterna viene riempita, l'allarme si chiude da solo). Poi 16 Aggiungi per salvare la regola.
La regola nell'elenco
La regola è nell'elenco. Con le icone a destra si può modificare (matita), copiare, esportare o eliminare (cestino).

L'allarme non scatta mai? Controllate in Ultima telemetria che il valore abbia superato davvero la soglia, e che la chiave dell'argomento sia scritta identica. La regola guarda solo i dati che arrivano dopo il salvataggio.

8. Gli allarmi

Quando la condizione è vera, l'allarme compare in tre posti.

Il menu Allarmi con un allarme attivo
1 Nel menu Allarmi: l'elenco con l'ora, il dispositivo (Originatore), il tipo, la gravità e lo stato. Con il filtro in alto (Filter: Active) si scelgono quali vedere.
Il pannello delle notifiche
Nella campanella in alto a destra (il numero rosso dice quante notifiche nuove ci sono): New alarm 'Cisterna quasi vuota'. Le notifiche sono in inglese.
La dashboard con l'allarme nella tabella
E nella tabella degli allarmi della dashboard, se l'avete aggiunta. Intanto il serbatoio mostra la cisterna vuota (0 %).

Con i tre puntini ··· nella colonna Dettagli si apre la scheda dell'allarme:

La finestra Dettagli allarme
3 Conferma: "ho visto l'allarme, me ne occupo". 4 Ripristina: chiude l'allarme a mano. Nella casella Attività si possono scrivere commenti.

Un allarme ha quindi due "interruttori", e lo stato li dice tutti e due:

Stato Cosa vuol dire
Attivo non confermato il problema c'è e nessuno l'ha ancora visto
Attivo confermato il problema c'è, qualcuno se ne sta occupando
Ripristinato non confermato il problema è passato (da solo o chiuso a mano), ma nessuno l'aveva confermato
Ripristinato confermato tutto risolto

9. Mandare un comando al dispositivo (RPC)

RPC (Remote Procedure Call) vuol dire chiedere al dispositivo di fare qualcosa: accendere la ventola, riempire la cisterna. Lo script deve essere in ascolto sul topic v1/devices/me/rpc/request/+ (come nei kit dei laboratori 3 e 4).

Il terminale RPC con un comando scritto
1 Cliccate nel RPC debug terminal, scrivete il nome del comando (es. riempi) e premete Invio.
La risposta del dispositivo nel terminale
Sotto compare la risposta del dispositivo: {"pompa":"accesa"}. Se dopo qualche secondo compare un errore di timeout, lo script non è in ascolto (è fermo, o non ha fatto subscribe).
La dashboard dopo il comando
Qualche secondo dopo: la cisterna si è riempita (80 %) e l'allarme nella tabella è passato a Ripristinato, grazie alla condizione di cancellazione.

Scrivete help nel terminale per vedere come si usa.

10. Le parole di ThingsBoard

Parola Cosa vuol dire
Tenant lo spazio di ognuno: i suoi dispositivi, dashboard e allarmi. Voi ne siete l'amministratore
Entità qualsiasi "cosa" in ThingsBoard: dispositivi, asset (es. un edificio), clienti…
Dispositivo l'oggetto che manda i dati (il vostro script)
Token di accesso la password del dispositivo, da mettere nello script
Telemetria le misure che cambiano nel tempo (con lo storico)
Attributi le informazioni fisse (solo l'ultimo valore)
Chiave il nome di un dato: livello, co2
Dashboard / widget la pagina / un riquadro della pagina
Regola allarme quando far scattare un allarme e quando chiuderlo
Gravità quanto è grave un allarme: da Critico ad Avviso
RPC un comando mandato dalla piattaforma al dispositivo

11. Per il docente

Il docente entra con l'account di amministratore di sistema, che vede gli spazi di tutti gli studenti (ma non i loro dati, finché non "entra" nello spazio).

L'elenco dei tenant visto dall'amministratore di sistema
1 Menu Tenant: uno spazio per studente, con il nome della classe davanti (es. 5A - Rossi Giulia). Cliccando sull'icona con la persona si vedono gli utenti dello spazio.
Gli amministratori di un tenant
Lo studente è l'amministratore del suo spazio. 2 L'icona con la freccia apre lo spazio dello studente come se foste lui: utile per aiutarlo senza chiedergli la password.
I dettagli dell'utente studente
La stessa cosa dal pannello dell'utente: 3 Accedi come amministratore tenant. Disabilita account utente blocca l'accesso (per esempio durante una verifica). Non c'è un pulsante per cambiare la password: si usa lo script.

Gli account si creano, si eliminano e si reimpostano con lo script crea_account.py dei materiali del docente (istruzioni in ISTRUZIONI.md):

sudo python3 crea_account.py --da-serverlab 5B_2026 --con-dispositivo   # account di una classe
python3 crea_account.py --classe 5B --nuova-password abcd@5b.lab         # password dimenticata
python3 crea_account.py --classe 5B --elimina                            # fine anno