Перейти до вмісту

Завантаження історичних даних

Історичні дані кожного пристрою зберігаються в текстових файлах (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). Параметр 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 дні пристрою.

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. Він приймає ті самі рівні і bin.

Чат із підтримкою