Към съдържанието

Изтегляне на исторически данни

Историческите данни на всяко устройство са в текстови файлове (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. Обединете редовете, сортирайте ги по време и попълнете празните полета.
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. Той приема същите нива и bins.

Чат с поддръжката