Salta ai contenuti

Scaricare i dati storici

I dati storici di ogni dispositivo sono in file di testo (datalog) sul suo server dei dispositivi. Ogni file copre un giorno, un mese o l’intero storico. Ha bisogno del permesso di lettura sul dispositivo.

Per un’esportazione senza codice, usi i report dell’app. Veda i Suoi dati.

  1. Trovi il server del dispositivo. Chiami get_device_info.php e legga il campo device_server. Veda l’API REST.
  2. Trovi l’ordine delle colonne. Chiami get_device_definitions.php?family_id=<famiglia> e legga readings e output_names.
  3. Calcoli il livello e il numero del file (bin) per il periodo che desidera.
  4. Scarichi ogni file dal server del dispositivo.
  5. Unisca le righe, le ordini per timestamp e compili i campi vuoti.
Finestra del terminale
curl --compressed \
-H "Authorization: Bearer-API YOUR_API_KEY" \
"https://DEVICE_SERVER/datalogs.php?serialno=e11:123&id=0.20740&ver=2"

Sostituisca DEVICE_SERVER con il valore del campo device_server del dispositivo.

Parametro Valore
serialno Il numero di serie del dispositivo
id <livello>.<bin>, per esempio 0.20740
ver 2

Per l’autenticazione, invii l’header Authorization: Bearer-API YOUR_API_KEY oppure Authorization: Bearer YOUR_ACCESS_TOKEN.

Il server può inviare il file compresso (gzip o br). L’opzione --compressed di curl lo decomprime.

Codice HTTP Significato
200 Il file, come text/plain
400 serialno o id errato
403 Non ha il permesso di lettura sul dispositivo
404 Non ci sono dati per questo file

Tutti i calcoli usano UTC.

Livello Un file per Calcolo del bin Esempio
0 Giorno floor(unix_seconds / 86400) 14 ottobre 2026 = 0.20740
1 Mese (year - 1970) * 12 + (month - 1) Ottobre 2026 = 1.681
2 Intero storico Sempre m 2.m

Il livello 0 ha tutte le righe del giorno. Il livello 1 ha circa una riga al giorno. Il livello 2 ha circa una riga al mese.

L’app usa il livello 0 per periodi fino a 7 giorni e il livello 1 per periodi fino a 5 mesi. Per periodi più lunghi usa 2.m.

Ogni riga è una misurazione. I campi sono separati da ;.

timestamp;reading1;reading2;...;readingN;output1;...;outputM
  • Il timestamp è in secondi unix (UTC). Può avere decimali.
  • Poi vengono le misurazioni, nell’ordine di readings della famiglia.
  • Poi vengono le uscite, nell’ordine di output_names.
  • Un campo vuoto indica che il valore non è cambiato. Usi l’ultimo valore di una riga precedente.
  • Il valore 2147483648 indica che la misurazione manca.
  • Le righe non sono sempre ordinate. Le ordini per timestamp.

Un dispositivo della famiglia e11 ha readings = ["T", "GI", "GIC", "GI2", "GI2C"] e nessuna uscita.

1791936198.977;2120;1;0;1;0
Campo Valore Significato
timestamp 1791936198.977 Ora della misurazione
T 2120 21.20 °C, perché la conversione di T è divide_by_100
GI 1 Stato del primo ingresso
GIC 0 Contatore del primo ingresso
GI2 1 Stato del secondo ingresso
GI2C 0 Contatore del secondo ingresso

Trova le conversioni e le unità nel dizionario readings delle definizioni. Veda l’API REST.

Questo esempio scarica gli ultimi 3 giorni di un dispositivo.

Finestra del terminale
SERVER=DEVICE_SERVER
SN=e11:123
TODAY=$(( $(date -u +%s) / 86400 ))
for BIN in $(seq $((TODAY - 2)) $TODAY); do
curl -s --compressed \
-H "Authorization: Bearer-API YOUR_API_KEY" \
"https://$SERVER/datalogs.php?serialno=$SN&id=0.$BIN&ver=2"
done | sort -t';' -k1,1n

Il server MCP ha lo strumento get_device_history. Accetta gli stessi livelli e bin.

Chat con l'assistenza