Перейти к содержимому

Загрузка исторических данных

Исторические данные каждого устройства находятся в текстовых файлах (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 и заполните пустые поля.
Окно терминала
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). Параметр curl --compressed распаковывает его.

Код 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 дня устройства.

Окно терминала
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.

Чат с поддержкой