Пређи на садржај

Преузимање историјских података

Историјски подаци сваког уређаја су у текстуалним датотекама (datalogs) на серверу уређаја. Свака датотека покрива један дан, један месец или целу историју. Потребна вам је дозвола за читање на уређају.

За извоз без кода користите извештаје апликације. Погледајте Ваши подаци (чување, извоз, брисање).

  1. Пронађите сервер уређаја. Позовите get_device_info.php и прочитајте поље device_server. Погледајте REST API.
  2. Пронађите редослед колона. Позовите get_device_definitions.php?family_id=<family> и прочитајте readings и output_names.
  3. Израчунајте ниво и број датотеке (bin) за период који желите.
  4. Преузмите сваку датотеку са сервера уређаја.
  5. Спојите редове, сортирајте их по времену (timestamp) и попуните празна поља.
Terminal window
curl --compressed \
-H "Authorization: Bearer-API YOUR_API_KEY" \
"https://DEVICE_SERVER/datalogs.php?serialno=e11:123&id=0.20740&ver=2"

Замените DEVICE_SERVER вредношћу поља device_server уређаја.

Параметар Вредност
serialno Серијски број уређаја
id <level>.<bin>, на пример 0.20740
ver 2

За аутентификацију пошаљите заглавље Authorization: Bearer-API YOUR_API_KEY или Authorization: Bearer YOUR_ACCESS_TOKEN.

Сервер може да пошаље датотеку компримовану (gzip или br). Опција --compressed програма curl је декомпримује.

HTTP кôд Значење
200 Датотека, као text/plain
400 Погрешан serialno или id
403 Немате дозволу за читање на уређају
404 Нема података за ову датотеку

Нивои и бројеви датотека

Одељак „Нивои и бројеви датотека“

Сви прорачуни користе UTC.

Ниво Једна датотека за Прорачун броја (bin) Пример
0 Дан floor(unix_seconds / 86400) 14. октобар 2026 = 0.20740
1 Месец (year - 1970) * 12 + (month - 1) Октобар 2026 = 1.681
2 Цела историја Увек m 2.m

Ниво 0 има све редове дана. Ниво 1 има око један ред по дану. Ниво 2 има око један ред по месецу.

Апликација користи ниво 0 за периоде до 7 дана и ниво 1 за периоде до 5 месеци. За дуже периоде користи 2.m.

Сваки ред је једно мерење. Поља су одвојена знаком ;.

timestamp;reading1;reading2;...;readingN;output1;...;outputM
  • timestamp је у unix секундама (UTC). Може да има децимале.
  • Затим долазе очитавања, по редоследу readings породице.
  • Затим долазе излази, по редоследу output_names.
  • Празно поље значи да се вредност није променила. Користите последњу вредност из ранијег реда.
  • Вредност 2147483648 значи да очитавање недостаје.
  • Редови нису увек сортирани. Сортирајте их по timestamp.

Уређај породице e11 има readings = ["T", "GI", "GIC", "GI2", "GI2C"] и нема излазе.

1791936198.977;2120;1;0;1;0
Поље Вредност Значење
timestamp 1791936198.977 Време мерења
T 2120 21.20 °C, јер је конверзија за T једнака divide_by_100
GI 1 Стање првог улаза
GIC 0 Бројач првог улаза
GI2 1 Стање другог улаза
GI2C 0 Бројач другог улаза

Конверзије и јединице налазите у речнику readings у дефиницијама. Погледајте REST API.

Овај пример преузима последња 3 дана уређаја.

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 сервер има алат get_device_history. Прихвата исте нивое и бројеве датотека.

Ћаскање са подршком