Pereiti prie turinio

Istorinių duomenų atsisiuntimas

Kiekvieno įrenginio istoriniai duomenys yra tekstiniuose failuose (datalogs) jo įrenginio serveryje. Kiekvienas failas apima vieną dieną, vieną mėnesį arba visą istoriją. Jums reikia įrenginio skaitymo teisės.

Eksportui be kodo naudokite programėlės ataskaitas. Žr. Jūsų duomenys.

  1. Raskite įrenginio serverį. Iškvieskite get_device_info.php ir perskaitykite lauką device_server. Žr. REST API.
  2. Raskite stulpelių tvarką. Iškvieskite get_device_definitions.php?family_id=<family> ir perskaitykite readings ir output_names.
  3. Apskaičiuokite lygį ir failo numerį (bin) norimam laikotarpiui.
  4. Atsisiųskite kiekvieną failą iš įrenginio serverio.
  5. Sujunkite eilutes, surūšiuokite jas pagal laiko žymą ir užpildykite tuščius laukus.
Terminal window
curl --compressed \
-H "Authorization: Bearer-API YOUR_API_KEY" \
"https://DEVICE_SERVER/datalogs.php?serialno=e11:123&id=0.20740&ver=2"

Pakeiskite DEVICE_SERVER įrenginio lauko device_server reikšme.

Parametras Reikšmė
serialno Įrenginio serijos numeris
id <level>.<bin>, pavyzdžiui, 0.20740
ver 2

Autentifikavimui siųskite antraštę Authorization: Bearer-API YOUR_API_KEY arba Authorization: Bearer YOUR_ACCESS_TOKEN.

Serveris gali siųsti suspaustą failą (gzip arba br). curl parinktis --compressed jį išskleidžia.

HTTP kodas Reikšmė
200 Failas kaip text/plain
400 Neteisingas serialno arba id
403 Neturite įrenginio skaitymo teisės
404 Šiam failui duomenų nėra

Visi skaičiavimai naudoja UTC.

Lygis Vienas failas Bin skaičiavimas Pavyzdys
0 Dienai floor(unix_seconds / 86400) 2026 m. spalio 14 d. = 0.20740
1 Mėnesiui (year - 1970) * 12 + (month - 1) 2026 m. spalis = 1.681
2 Visai istorijai Visada m 2.m

Lygis 0 turi visas dienos eilutes. Lygis 1 turi maždaug vieną eilutę per dieną. Lygis 2 turi maždaug vieną eilutę per mėnesį.

Programėlė naudoja lygį 0 laikotarpiams iki 7 dienų ir lygį 1 laikotarpiams iki 5 mėnesių. Ilgesniems laikotarpiams ji naudoja 2.m.

Kiekviena eilutė yra vienas matavimas. Laukai atskirti ;.

timestamp;reading1;reading2;...;readingN;output1;...;outputM
  • timestamp yra unix sekundės (UTC). Jis gali turėti dešimtainių skaitmenų.
  • Toliau eina rodmenys šeimos readings tvarka.
  • Toliau eina išvestys output_names tvarka.
  • Tuščias laukas reiškia, kad reikšmė nepasikeitė. Naudokite paskutinę reikšmę iš ankstesnės eilutės.
  • Reikšmė 2147483648 reiškia, kad rodmens nėra.
  • Eilutės ne visada surūšiuotos. Surūšiuokite jas pagal timestamp.

Šeimos e11 įrenginys turi readings = ["T", "GI", "GIC", "GI2", "GI2C"] ir neturi išvesčių.

1791936198.977;2120;1;0;1;0
Laukas Reikšmė Prasmė
timestamp 1791936198.977 Matavimo laikas
T 2120 21.20 °C, nes T konvertavimas yra divide_by_100
GI 1 Pirmosios įvesties būsena
GIC 0 Pirmosios įvesties skaitiklis
GI2 1 Antrosios įvesties būsena
GI2C 0 Antrosios įvesties skaitiklis

Konvertavimus ir vienetus rasite apibrėžčių žodyne readings. Žr. REST API.

Šis pavyzdys atsisiunčia paskutines 3 įrenginio dienas.

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

MCP serveris turi įrankį get_device_history. Jis priima tuos pačius lygius ir bin.

Pokalbis su pagalba