Protocolli e dati

Dati IoT: marche temporali, qualità e lacune

Definisci i dati IoT: identità, unità, ora di origine, qualità, limiti di obsolescenza, rollover, interruzioni e prove di messa in servizio.

Un Gateway perde il collegamento verso l'esterno alle 09:00 e lo recupera alle 12:00. Invia quindi le letture conservate durante le tre ore. Se la piattaforma ricevente mantiene la marca temporale originale di ogni lettura, il grafico riempie la lacuna. Se invece assegna a ogni lettura l'ora di arrivo, tre ore di energia finiscono in un solo intervallo di 15 minuti. Con un carico medio di 40 kW si tratta di 120 kWh in 15 minuti, e il rapporto sulla domanda mostra un picco di 480 kW mai avvenuto.

Ogni valore dell'esempio era reale. Era sbagliata soltanto l'ora, e un dashboard in tempo reale non lo mostrava.

Ogni osservazione deve rispondere a quattro domande. Quale grandezza è stata osservata e dove? Quando si è verificata la condizione? Il valore è valido e abbastanza recente per questo uso? Quale catena di misura e di elaborazione lo ha prodotto? Fatturazione, protezione, funzioni di sicurezza e rendicontazione normativa aggiungono i propri requisiti di apparecchiature, approvazione, incertezza e verifica a quanto segue.

Modelli delle osservazioni in SSN e SensorThings

L'ontologia Semantic Sensor Network del W3C (SOSA/SSN) definisce un'osservazione come un atto di osservare, di norma per stimare o determinare il valore di una proprietà di un'entità d'interesse. Tiene separati proprietà, risultato, sensore, procedura, tempo del fenomeno e tempo del risultato. Specifica inoltre che il tempo del fenomeno non coincide necessariamente con quello del risultato.

L'API OGC SensorThings usa un modello simile per i servizi web dei sensori. Un'Observation appartiene a un Datastream e contiene risultato, tempo del fenomeno, tempo del risultato, qualità, periodo di validità e parametri.

Non occorre adottare uno dei due modelli. Qualunque sia lo schema, conserva significato, tempo dell'osservazione, qualità e provenienza in campi distinti.

Il record minimo di un'osservazione

Campo o relazioneDomanda a cui rispondeProblema se manca
Identità di sito, risorsa e puntoQuale oggetto fisico e quale canale l'hanno prodotto?Valori di sorgenti diverse vengono uniti o confrontati erroneamente
Grandezza osservataSi tratta di potenza attiva, energia cumulativa, temperatura o stato?Un numero non ha significato ingegneristico stabile
Valore e unitàQuali grandezza e unità sono state riportate?W, kW e MW, oppure °C e °F, vengono confusi senza avviso
Tempo del fenomeno o della sorgenteQuando si è verificata la condizione misurata?Dati vecchi e conservati sembrano attuali
Tempo del risultato o di acquisizioneQuando è stato prodotto o ricevuto qui il risultato?Ritardo di trasporto e riproduzione non sono diagnosticabili
Qualità o statoIl valore è valido, incerto, non valido, obsoleto, sostituito o indisponibile?Dati non validi sembrano attendibili
Identità di procedura e configurazioneQuali intervallo, scala, firmware, taratura e calcolo erano applicati?Una modifica di configurazione sembra un cambiamento fisico
Sequenza o identità stabile dell'eventoQuesta osservazione è già stata elaborata?I nuovi tentativi creano duplicati o energia conteggiata due volte

Questo è un record del registro di energia di un quadro trifase che invia dati ai confini di intervalli di 15 minuti. È la lettura delle 09:45 durante l'interruzione descritta sopra, consegnata dopo il ripristino del collegamento:

JSON
{
  "site": "plant-02",
  "asset": "db-3-compressor-house",
  "point": "db-3/energy-active-total",
  "property": "active energy, cumulative register",
  "value": 184213.4,
  "unit": "kWh",
  "observed_at": "2026-09-14T09:45:00Z",
  "received_at": "2026-09-14T12:02:41Z",
  "quality": "good",
  "config_revision": "point-list r7",
  "sequence": 88412
}

Le due ore differiscono di 2 ore e 17 minuti. La differenza indica al destinatario che la lettura è stata trattenuta durante un'interruzione e non rappresenta il carico attuale. Il numero di sequenza consente di scartare una seconda copia della stessa lettura.

Non tutte le sorgenti possono compilare ogni campo. Registra i campi che una sorgente non può fornire e non inventare precisione. Per esempio, un sensore Zigbee di terze parti riporta un valore senza marca temporale: il Gateway gli assegna l'ora di arrivo. È un'ora di arrivo e come tale va indicata nell'elenco dei punti.

Definire il punto di misura

Definire prima la misura

Parti dal misurando, cioè la grandezza che intendi misurare. «Temperatura» non basta se la decisione dipende dalla temperatura dell'aria in un luogo definito, della superficie di un tubo, di un liquido in immersione o da una media fra stanze.

Annota intervallo, incertezza richiesta in tutto l'intervallo, tempo di risposta e condizioni d'installazione. Annota decisione, allarme o calcolo che usa il valore. Poi descrivi cosa accade se il valore è sbagliato, assente o in ritardo. Questa voce determina il limite di obsolescenza e, in seguito, il comportamento dell'allarme.

La classe di accuratezza di un componente non dà le prestazioni della catena installata. Secondo la politica NIST sulla riferibilità metrologica, la riferibilità è una proprietà del risultato di misura. Una catena documentata di tarature la sostiene e ogni taratura contribuisce all'incertezza. Un solo strumento tarato non rende riferibili tutti i risultati successivi. Per l'elettricità, la guida alla misura elettrica di alta accuratezza distingue classe del contatore, incertezza dell'intera catena e approvazione legale. Per una termoresistenza, il calcolatore Pt100 e Pt1000 fornisce curva standard e limite della classe di tolleranza. Aggiungi gli effetti di trasmettitore, cablaggio e installazione.

Rendere tracciabili scalatura e conversioni

Un registro grezzo o ingresso analogico può richiedere decodifica con segno, ordine delle parole, rapporto TA o TV, scalatura lineare o una curva non lineare prima di diventare un valore ingegneristico. Conserva i parametri o la revisione della configurazione applicata. Un ordine delle parole errato può produrre un numero plausibile: decodifica manualmente un valore grezzo. La guida alla messa in servizio Modbus contiene un esempio.

Per un punto calcolato, conserva anche identità dei punti di ingresso, formula e revisione, e unità prima e dopo la conversione. Registra la regola di allineamento temporale e il comportamento della formula con un ingresso non valido, mancante o obsoleto. Indica ogni sostituzione, limitazione o correzione manuale nel risultato.

Non sostituire un valore non valido con zero. Zero è una lettura valida per un motore fermo o un serbatoio vuoto e porta a una decisione operativa diversa da «sconosciuto».

Distinguere tempo dell'osservazione e tempo di arrivo

Una lettura porta l'ora in cui valeva la condizione e l'ora in cui ogni sistema l'ha ricevuta. Le due si separano quando i dati sono accumulati e inviati in seguito. Marche temporali della telemetria, ora della sorgente e ora di arrivo spiega quale ora conservare, UTC e ora legale, e come verificare l'invio differito sul sito.

Le garanzie di trasporto terminano a ogni passaggio

MQTT 5.0 definisce tre livelli di qualità del servizio fra un mittente e un destinatario: al massimo una volta, almeno una volta ed esattamente una volta. Prevede anche scadenza dei messaggi e stato della sessione. La guida a MQTT su TLS tratta identità del broker, autenticazione del client e accesso ai topic.

Niente di questo dimostra che la misura fisica fosse corretta o che ogni campione sia diventato un messaggio. Non prova che il payload abbia punto, unità e marca temporale corretti, che il passaggio d'integrazione successivo mantenga la stessa garanzia o che il destinatario abbia memorizzato una sola copia. Un messaggio retained è l'ultimo pubblicato sul suo topic e può essere vecchio di ore o giorni.

Dai a ogni osservazione un'identità stabile. Per un punto misurato, identità del punto e ora dell'osservazione di solito bastano. Rendi idempotenti le scritture, affinché un lotto ritrasmesso non venga contato due volte. Prova disconnessione e reinvio sul sito. Non dedurre il comportamento dal nome del protocollo.

Rendere visibili qualità e attualità

Un destinatario deve distinguere un valore attuale da uno tardivo, obsoleto, sostituito o mancante. Mappa deliberatamente gli stati di qualità di ogni sorgente nel tuo modello. Telemetria obsoleta, mancante e non valida descrive questi stati, come scegliere un limite di obsolescenza e come mostrarlo accanto al valore.

Aggregare partendo dai dati grezzi

Ogni grandezza richiede una funzione di aggregazione propria. Potenza media di un intervallo, domanda massima, ultimo stato noto, conteggio allarmi e differenza di un registro cumulativo sono cose diverse. Registra i confini degli intervalli e il fuso orario. Registra se ogni intervallo è etichettato dall'inizio o dalla fine, la regola di completezza minima e come i dati tardivi correggono un intervallo chiuso. Indica se ogni risultato è misurato, aggregato, stimato o sostituito.

Non fare mai la media di un registro energetico cumulativo. Calcola la differenza fra le letture ai confini dell'intervallo. Non sommare letture di potenza istantanea senza moltiplicare ciascuna per il tempo che rappresenta.

Ritorno a zero per superamento del limite e azzeramento del contatore producono entrambi una differenza negativa, ma richiedono trattamenti diversi. Un registro Wh a 32 bit ritorna da 4.294.967.295 a 0. Con una media di 40 kW impiega circa 12 anni, quindi pochi sistemi provano questo caso prima che avvenga.

Alle 23:45 il registro indica 4.294.960.296 Wh. Alle 00:00 indica 3.000 Wh. Se c'è stato un ritorno a zero per superamento del limite, l'energia dell'intervallo è (4.294.967.296 − 4.294.960.296) + 3.000 = 10.000 Wh. Sono 10 kWh in 15 minuti, equivalenti a una domanda media di 40 kW:

Ora il contatore viene sostituito. L'ultima lettura del vecchio è 1.250.400 Wh e la prima del nuovo è 3 Wh. La stessa formula per il ritorno a zero darebbe 4.293.716.899 Wh, circa 4,3 GWh in 15 minuti.

Accetta un ritorno a zero solo se l'energia implicata è possibile nell'intervallo. Un'alimentazione da 100 kW può fornire al massimo 25 kWh in 15 minuti. Un risultato maggiore indica un azzeramento. Chiudi quell'intervallo come incompleto, avvia un nuovo valore iniziale e registra l'evento. Su un monitor elettrico ZEM-6x come lo ZEM-65, Edge mostra il punto di ritorno a zero del registro, in kWh, come impostazione di sola lettura. I registri kWh di ogni fase sono scrivibili e un tecnico può preimpostarli. Registra ogni preimpostazione come azzeramento.

Conserva il registro cumulativo accanto ai valori d'intervallo. Dopo una lacuna nella telemetria, la differenza del registro recupera l'energia totale della lacuna, ma non il profilo di potenza al suo interno.

Campionamento, invio e aggiornamento del dashboard

«Dati ogni minuto» può indicare cinque cose: il sensore campiona una volta al minuto; il contatore campiona più spesso e calcola una media di un minuto; un dispositivo pubblica il valore più recente una volta al minuto; una piattaforma memorizza un'aggregazione di un minuto; oppure il dashboard si aggiorna ogni minuto, pur mostrando un punto che cambia a un altro ritmo. Indica ogni frequenza che conta nell'elenco dei punti.

I sensori Zigbee EpiSensor mostrano la differenza. Possono inviare dati ai confini dei minuti dell'orologio, a intervalli fissi in secondi oppure al cambiamento del valore.

La frequenza ha un costo. Un punto che invia ogni 10 s produce 8.640 messaggi al giorno; ogni 60 s ne produce 1.440. Mille punti con un invio al minuto producono 1,44 milioni di punti al giorno prima dei filtri. In un sensore a batteria, ogni invio consuma anche tempo radio ed energia. Verifica quale intervallo di invio assume la stima di autonomia nel datasheet.

UsoIntervallo tipicoEvidenza da conservare
Ripartizione energetica e fatturazionePeriodo di regolazione o tariffario, di solito 15 o 30 min, più registro cumulativoConfini, completezza, azzeramenti del registro ed eventuali stime
Andamento operativo1 min per la potenza, da 5 a 15 min per la temperatura di una stanzaFrequenza della sorgente, aggregazione e aggiornamento del display
AllarmeRitardo di rilevamento più limite di obsolescenza entro il tempo di risposta consentitoSoglia, permanenza, banda morta, limite di obsolescenza e ritardo di notifica
Gestione della domandaBen all'interno della finestra di domanda, per esempio 1 min in una finestra di 15 o 30 min, per lasciare tempo d'interventoDefinizione della finestra, frequenza di aggiornamento, logica della soglia ed evidenza dei comandi
Monitoraggio delle condizioniAndamenti di corrente o temperatura ogni minuto per un degrado lento. Gli spettri di vibrazione richiedono campionamento a kHz su uno strumento dedicatoBanda del sensore, metodo di campionamento, calcolo degli indicatori e riferimento
Qualità dell'energia, protezione o sicurezzaStrumenti e metodi qualificati per la funzione, per esempio IEC 61000-4-30 per la qualità dell'energiaNorma applicabile, configurazione dello strumento, temporizzazione degli eventi ed evidenza di accettazione

Per capire cosa rivelano corrente e potenza sulle condizioni delle apparecchiature, leggi la guida al monitoraggio delle condizioni dai dati elettrici.

Prove di messa in servizio che rivelano dati errati

Esegui ogni prova sul percorso completo, dal sensore alla piattaforma ricevente. Scrivi il risultato atteso prima della prova.

  1. Collega ogni punto visualizzato a dispositivo fisico, canale ed etichetta della risorsa.
  2. Applica almeno due valori noti, uno dei quali diverso da zero, e verifica ogni conversione. Per un canale TA, confronta la corrente in Edge e nella piattaforma con la lettura di una pinza amperometrica tarata sullo stesso conduttore.
  3. Controlla polarità, convenzione dei segni per importazione ed esportazione e associazione delle fasi. Un TA invertito dà potenza importata negativa su quella fase. Correggilo sul TA o nell'impostazione della direzione del TA della singola fase nel contatore, e registra quale modifica hai fatto.
  4. Confronta gli orologi della sorgente e del destinatario. Trattieni poi i dati per un tempo noto e verifica che le due marche temporali restino distinte.
  5. Scollega o invalida la sorgente. L'applicazione deve indicare dato non valido o indisponibile, non zero.
  6. Interrompi gli aggiornamenti senza cancellare l'ultimo valore. Il punto deve diventare obsoleto al limite concordato.
  7. Interrompi il collegamento in uscita per un tempo definito, per esempio 30 minuti. Osserva crescere la coda. Ricollega e verifica ordine, marche temporali e completezza dei dati reinviati nel destinatario.
  8. Reinvia un record o ripeti una consegna. Un destinatario idempotente non deve contarlo due volte.
  9. Riavvia a turno sensore, Gateway, broker e piattaforma. Verifica il recupero di identità, configurazione, orologio e consegna.
  10. Confronta un intervallo chiuso con le letture della sorgente, includendo un confine d'intervallo, un valore mancante e un azzeramento del contatore.
  11. Modifica un intervallo o una revisione di formula approvati. La modifica deve comparire nella provenienza senza cambiare il significato dei dati precedenti.
  12. Confronta le misure importanti con un riferimento indipendente in condizioni di carico rappresentative.

Il verbale di accettazione indica apparecchiatura, configurazione, riferimento, ora della prova, risultato atteso, risultato osservato e persona che l'ha approvato.

Problemi di dati osservati sul campo

SintomoPossibile causaCome individuarlo
Potenza importata negativa su una faseTA invertito o installato sulla fase errataSegno della potenza di ciascuna fase rispetto al carico noto e fattore di potenza molto diverso dall'atteso
Valori 1.000 volte troppo grandi o troppo piccoliW indicati come kW oppure fattore di scala mancanteConfronto con il display del contatore o con una pinza amperometrica durante la messa in servizio
Valori enormi o quasi nulli dopo una modifica della mappa dei registriOrdine delle parole o tipo di dato erratoDecodifica manuale di un registro grezzo
Un'ora mancante a marzo e ripetuta a ottobreIntervalli indicizzati sull'ora localeConteggio degli intervalli per giorno locale: 92, 96 o 100
Una lacuna seguita da molte letture con la stessa oraDati reinviati marcati con l'ora di arrivoOra di ricezione meno ora di osservazione, per ogni lettura
Letture datate anni nel passato o nel futuroOrologio del dispositivo o Gateway non impostato dopo un'interruzione dell'alimentazioneOra di osservazione fuori da un intervallo plausibile intorno all'ora di ricezione
Linea piatta all'ultimo valoreSorgente ferma mentre il display conserva l'ultimo valoreStato di obsolescenza ed età dell'osservazione più recente
Salto energetico di vari GWh in un intervalloAzzeramento interpretato come ritorno a zero per superamento del limiteLimite sull'energia massima possibile nell'intervallo

Controllare la qualità dei dati durante l'esercizio

La messa in servizio prova uno stato in un giorno. L'esercizio deve rilevare quando quello stato cambia. Per ogni punto, confronta osservazioni attese e ricevute e controlla l'età dell'osservazione valida più recente. Conta letture tardive, fuori ordine, duplicate, non valide, incerte, sostituite e fuori intervallo. Controlla scostamento degli orologi, profondità della coda ed età del dato più vecchio in attesa. Registra le modifiche rifiutate a schema, unità o identità e riconcilia i totali d'intervallo con il registro cumulativo.

Imposta allarmi su soglie pertinenti all'uso, per esempio osservazione più recente oltre il limite di obsolescenza, dato più vecchio in coda oltre un'ora oppure scostamento dell'orologio oltre 5 s per dati ogni minuto.

Definisci il denominatore prima di dichiarare la disponibilità. «Disponibilità dei dati del 99,9%» non significa nulla senza punti attesi, programma di invio, esclusioni, regola di qualità e trattamento dei dati tardivi. Per un punto con invio ogni minuto, il 99,9% su 30 giorni consente comunque 43 letture mancanti.

ISO/IEC 25012 offre un modello generale della qualità dei dati strutturati. Comprende 15 caratteristiche, divise fra una prospettiva intrinseca e una dipendente dal sistema; ISO l'ha riesaminato e confermato nel 2025. Fornisce il vocabolario. Il progetto deve comunque trasformare le caratteristiche pertinenti in requisiti misurabili.

Dati dei sensori con EpiSensor

I dispositivi EpiSensor, per esempio i monitor elettrici ZEM e i sensori di temperatura e umidità ZHT, inviano dati via Zigbee a un Gateway ZGW-20. Il Gateway esegue EpiSensor Edge, che conserva lo storico locale (30 giorni per impostazione predefinita), esegue calcoli e regole e inoltra i dati ad altre piattaforme.

Le letture dei dispositivi Zigbee EpiSensor arrivano a Edge con una marca temporale su ogni punto dati, che Edge conserva. Edge assegna invece a un valore di un dispositivo Zigbee di terze parti l'ora del Gateway al momento dell'arrivo. Edge scarta un punto dati con marca temporale non valida e registra un avviso.

Edge calcola la qualità per ogni sensore su una finestra di 15 minuti. Per un sensore con frequenza fissa, la qualità è la percentuale dei punti attesi. Un sensore con invio ogni minuto ha 15 punti attesi nella finestra: se ne arrivano 13, la qualità è 87%. Per un sensore che invia ai cambiamenti o meno spesso di ogni 15 minuti, Edge indica invece il numero dei punti ricevuti. Leggi il tipo di indicatore prima di confrontare due sensori.

Quando una destinazione supportata non è disponibile, Edge trasferisce i dati non consegnati in una coda su disco. Alcune integrazioni gestiscono invece autonomamente i nuovi tentativi, quindi verifica la guida dell'integrazione. Edge controlla la destinazione ogni minuto e reinvia la coda quando torna disponibile. Le letture reinviate mantengono le marche temporali originali. Non attivano nuovamente calcoli o automazione locali. Per MQTT, Edge considera completa una consegna quando il broker conferma la pubblicazione. Un lotto può arrivare due volte se la destinazione lo ha ricevuto prima che Edge registrasse il completamento, quindi il destinatario deve eliminare i duplicati. I dati in attesa di reinvio non hanno limite di età: una lunga interruzione fa crescere la coda. Dimensiona lo spazio libero del Gateway per l'interruzione più lunga prevista.

In Edge, ogni lettura porta un ID del sensore, un ID di esportazione composto dal numero di serie del dispositivo e dall'ID del sensore, una marca temporale e un valore. Unità, scalatura e qualità provengono dalla configurazione del dispositivo. Concorda nell'elenco dei punti come la piattaforma ricevente li ottenga. Concorda anche quale livello applica la scalatura, come la qualità di Edge corrisponde al modello della piattaforma e cosa fanno allarmi e controllo quando un ingresso diventa obsoleto.

Una volta definito l'elenco dei punti, passa all'architettura di memorizzazione dei dati IoT per scegliere dove collocare ogni archivio.

Domande frequenti

Quali dati deve contenere un record di un sensore IoT?

Identità di sito, risorsa e punto, grandezza osservata, valore e unità, ora a cui si applica la misura, ora di ricezione e stato di qualità. Fatturazione, ripartizione dei consumi e liquidazione dei servizi di demand response richiedono anche scala, taratura e revisione del calcolo che hanno prodotto il valore.

Qual è la differenza fra marca temporale della sorgente e di acquisizione?

La marca della sorgente indica quando valeva la condizione misurata; quella di acquisizione quando un altro sistema ha ricevuto o memorizzato il record. Differiscono per accumulo, nuovi tentativi ed errori dell’orologio. Sostituire la prima con la seconda fa apparire attuali dati vecchi.

Il livello di servizio MQTT garantisce dati dei sensori completi?

No. Il livello di servizio MQTT riguarda la consegna fra un mittente e un destinatario. Non dimostra che il sensore abbia misurato correttamente o che ogni campione sia diventato un messaggio, né che l’applicazione successiva l’abbia memorizzato una volta sola o che payload, unità e ora siano corretti.

Come si sceglie l’intervallo di invio dei dati IoT?

Parti dalla variazione più rapida che l’applicazione deve rilevare e dal periodo di regolazione o calcolo. Verifica poi ritardo di rilevamento consentito, capacità di dispositivo e rete e spazio di memorizzazione. Campionamento, calcolo, pubblicazione e aggiornamento del dashboard hanno frequenze separate: scegli ciascuna deliberatamente.

Il valore zero è uguale a un dato mancante o obsoleto?

No. Zero può essere una misura valida. Mancante significa che non è arrivato alcun valore nell’intervallo atteso. Obsoleto significa che l’ultimo valore supera il limite di attualità per l’uso previsto. Conserva e mostra separatamente i tre stati.