Загрузка исторических данных
Исторические данные каждого устройства находятся в текстовых файлах (datalogs) на сервере устройства. Каждый файл охватывает один день, один месяц или всю историю. Вам нужно право чтения на устройство.
Для экспорта без кода используйте отчёты приложения. См. Ваши данные.
Порядок действий
Заголовок раздела «Порядок действий»- Найдите сервер устройства. Вызовите
get_device_info.phpи прочитайте полеdevice_server. См. REST API. - Найдите порядок столбцов. Вызовите
get_device_definitions.php?family_id=<family>и прочитайтеreadingsиoutput_names. - Рассчитайте уровень и номер файла (bin) для нужного Вам периода.
- Загрузите каждый файл с сервера устройства.
- Объедините строки, отсортируйте их по 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;...;outputMtimestampэто секунды 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.
Пример для shell
Заголовок раздела «Пример для shell»Этот пример загружает последние 3 дня устройства.
SERVER=DEVICE_SERVERSN=e11:123TODAY=$(( $(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.

