Preskočiť na obsah

Stiahnutie historických údajov

Historické údaje každého zariadenia sú v textových súboroch (datalogoch) na serveri zariadenia. Každý súbor pokrýva jeden deň, jeden mesiac alebo celú históriu. Potrebujete oprávnenie na čítanie zariadenia.

Na export bez kódu použite správy z aplikácie. Pozrite vaše údaje.

  1. Nájdite server zariadenia. Zavolajte get_device_info.php a prečítajte pole device_server. Pozrite REST API.
  2. Nájdite poradie stĺpcov. Zavolajte get_device_definitions.php?family_id=<family> a prečítajte readings a output_names.
  3. Vypočítajte úroveň a číslo súboru (bin) pre obdobie, ktoré chcete.
  4. Stiahnite každý súbor zo servera zariadenia.
  5. Spojte riadky, zoraďte ich podľa časovej značky a doplňte prázdne polia.
Terminal window
curl --compressed \
-H "Authorization: Bearer-API YOUR_API_KEY" \
"https://DEVICE_SERVER/datalogs.php?serialno=e11:123&id=0.20740&ver=2"

Nahraďte DEVICE_SERVER hodnotou poľa device_server zariadenia.

Parameter Hodnota
serialno Sériové číslo zariadenia
id <level>.<bin>, napríklad 0.20740
ver 2

Na overenie pošlite hlavičku Authorization: Bearer-API YOUR_API_KEY alebo Authorization: Bearer YOUR_ACCESS_TOKEN.

Server môže poslať súbor komprimovaný (gzip alebo br). Voľba curl --compressed ho rozbalí.

Kód HTTP Význam
200 Súbor ako text/plain
400 Nesprávne serialno alebo id
403 Nemáte oprávnenie na čítanie zariadenia
404 Pre tento súbor nie sú žiadne údaje

Všetky výpočty používajú UTC.

Úroveň Jeden súbor na Výpočet bin Príklad
0 Deň floor(unix_seconds / 86400) 14. október 2026 = 0.20740
1 Mesiac (year - 1970) * 12 + (month - 1) Október 2026 = 1.681
2 Celá história Vždy m 2.m

Úroveň 0 má všetky riadky dňa. Úroveň 1 má približne jeden riadok na deň. Úroveň 2 má približne jeden riadok na mesiac.

Aplikácia používa úroveň 0 pre obdobia do 7 dní a úroveň 1 pre obdobia do 5 mesiacov. Pre dlhšie obdobia používa 2.m.

Každý riadok je jedno meranie. Polia sú oddelené znakom ;.

timestamp;reading1;reading2;...;readingN;output1;...;outputM
  • timestamp sú sekundy unix (UTC). Môže mať desatinné miesta.
  • Potom nasledujú merania v poradí readings rodiny.
  • Potom nasledujú výstupy v poradí output_names.
  • Prázdne pole znamená, že sa hodnota nezmenila. Použite poslednú hodnotu z predchádzajúceho riadku.
  • Hodnota 2147483648 znamená, že meranie chýba.
  • Riadky nie sú vždy zoradené. Zoraďte ich podľa timestamp.

Zariadenie rodiny e11 má readings = ["T", "GI", "GIC", "GI2", "GI2C"] a nemá výstupy.

1791936198.977;2120;1;0;1;0
Pole Hodnota Význam
timestamp 1791936198.977 Čas merania
T 2120 21,20 °C, pretože prevod T je divide_by_100
GI 1 Stav prvého vstupu
GIC 0 Počítadlo prvého vstupu
GI2 1 Stav druhého vstupu
GI2C 0 Počítadlo druhého vstupu

Prevody a jednotky nájdete v slovníku readings definícií. Pozrite REST API.

Tento príklad stiahne posledné 3 dni zariadenia.

Terminal window
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

Server MCP má nástroj get_device_history. Prijíma tie isté úrovne a biny.

Chat s podporou