Dati di Telemetria

Timeseries APIs

Timeseries APIs vengono utilizzate principalmente quando si desidera ottenere, per un determinato tipo di dati, un andamento dettagliato, che consenta di eseguire analisi e rappresentazioni in tempo reale, per una finestra temporale personalizzata.

Questa tipologia di APIs è sempre strutturata come segue:

Il path, che permette di puntare alle risorse desiderate, richiede sempre i seguenti parametri:

  • {power,frequency,wind,temperature,voltage,current,energy,kpis}: }: il tipo di risorsa a cui puntare. Questo parametro non specifica i dati effettivi che si vuole ottenere, ma la categoria generale a cui appartengono i dati desiderati (per favore si noti che una chiamata API accetta solo una categoria alla volta, al momento non è possibile effettuare chiamate BULK);
  • {entityID}: può essere un EID di impianto o dispositivo. Nel primo caso, il valore ottenuto tiene conto dell’aggregazione di tutti i dispositivi, per i quali tale valore esiste, a livello di impianto; nel secondo caso, il valore ottenuto riferito al singolo dispositivo di interesse;
  • {dataType}: rappresenta i dati effettivi da ottenere. I dataTypes disponibili variano in base alle risorse indicate, una descrizione dettagliata è disponibile direttamente su OpenAPIs Swagger;
  • {valuetype}: rappresenta il tipo di criterio di aggregazione con cui vengono richiesti i dati da ottenere.

Le queries, che consentono di filtrare i dati di interesse, richiedono sempre i seguenti parametri:

  • {sampleSize}: definisce la frequenza di campionamento con cui ottenere i dati. Più lunga è la frequenza di campionamento, minore è la lunghezza dell’array di dati ottenuto in risposta (un sampleTime uguale a Min5 avrà più campioni nell’array di risposta rispetto ad un sampleTime uguale a Min15);
  • {startDate}: il limite inferiore che permette di definire l’inizio della finestra temporale di interesse. Il suo formato è sempre YYYYMMGG (eg: 20220321);
  • {endDate}: il limite superiore che permette di definire l’inizio della finestra temporale di interesse. Il suo formato è sempre YYYYMMGG (eg: 20220322) e deve essere temporalmente successivo alla {startDate};
  • {timezone}: permette di guidare la chiamata API ad un corretto recupero dei dati in base al fuso orario richiesto. Le scelta del fuso orario ha effetto sugli epochs forniti nell’array di risposta.

Una chiamata a serie temporali di solito fornisce un array di valori come risposta.
La lunghezza dell’array dipende direttamente dal valore di {sampleSize} e dalla finestra temporale definita dai parametri {startDate} ed {endDate}. Una volta definita una finestra temporale di riferimento, il valore {sampleSize} suddividerà quella finestra più o meno frequentemente modificando di conseguenza la lunghezza dell’array in risposta: maggiore è il valore di {sampleSize}, più la finestra temporale avrà minor numero sezioni, risultando quindi in meno elementi nell’array di risposta.
Vale la pena guardare un esempio diretto per spiegare meglio questi concetti.

Il principio sulla presenza/assenza di determinati campi negli elementi di risposta di una timeseries API (espresso nelle ultime righe dell’esempio sopra) è di fondamentale importanza: non si applica solo nel caso di campioni futuri, ma anche e soprattutto nel caso di completa assenza di dati su Aurora Vision. Questo permette di dare coerenza alle risposte ottenute dalle APIs di telemetria, perché quando è presente il parametro value, significa che quel valore esiste effettivamente su Aurora Vision altrimenti non sarebbe presente.

Come avveniva per le chiamate aggregate, anche per le chiamate timeseries il parametro {valuetype} è di grande importanza perché varia in base alla categoria di risorse, quindi di {dataType}, da ottenere ed è anche influenzato dal {sampleSize}.

Per un {dataType} appartenente alla categoria {power,frequency,wind,temperature,voltage,current,kpis}, il {valueType} può assumere 3 differenti valori:

  • Maximum: restituisce il valore massimo trovato tra tutti i campioni presenti in ogni intervallo di tempo, determinato dal valore di {sampleSize}, per la finestra temporale definita da {startDate} ed {endDate}, per il {dataType} richiesto;
  • Minimum: restituisce il valore minimo trovato tra tutti i campioni presenti in ogni intervallo di tempo, determinato dal valore di {sampleSize}, per la finestra temporale definita da {startDate} ed {endDate}, per il {dataType} richiesto;
  • Average: restituisce il valore medio tra tutti i campioni presenti in ogni intervallo di tempo, determinato dal valore di {sampleSize}, per la finestra temporale definita da {startDate} ed {endDate}, per il {dataType} richiesto;

NOTA: per la categoria kpis , le considerazioni di cui sopra sono valide solo se vengono chiamati Power-Based KPIs. Per maggiori informazioni, fare riferimento ad OpenAPIs Swagger.


Diamo uno sguardo ad alcuni casi d’uso, in cui consideriamo un impianto ( entityID: 12345678 ) con un unico dispositivo inverter registrato ( entityID : 87654321 ):

Per un {dataType} appartenente alla categorie {energy,kpis}, il {valueType} può assumere due differenti valori:

  • Cumulative: restituisce l’ultimo valore cumulativo disponibile all’interno di ogni intervallo di tempo, determinato dal valore di {sampleSize}, per la finestra temporale definita da {startDate} ed {endDate}, per il {dataType} richiesto;
  • Delta: restituisce il differenza tra l’ultimo ed il primo valore cumulativo disponibile all’interno di ogni intervallo di tempo, determinato dal valore di {sampleSize}, per la finestra temporale definita da {startDate} ed {endDate}, per il {dataType}richiesto;

NOTA: per la categoria kpis , le considerazioni di cui sopra sono valide solo se vengono chiamati Energy-Based KPIs. Per maggiori informazioni, fare riferimento ad OpenAPIs Swagger.


Diamo uno sguardo ad alcuni casi d’uso, in cui consideriamo un impianto ( entityID: 12345678 ) con un unico dispositivo inverter registrato ( entityID : 87654321 ):