bg

Модуль Парсер данных HTTP для программ-логгеров

Последняя версия: 5.0.1 build 1126. November 28, 2025.

Этот модуль-парсер HTTP данных интегрируется с Advanced TCP/IP Data Logger или Data Logger Suite, чтобы обеспечить базовые функции HTTP-сервера и преобразование входящих HTTP-запросов в структурированные разобранные данные для экспорта. Он анализирует строки заголовка и тела запроса, извлекает значения с помощью нескольких методов обработки (парсинга) данных, выполняет преобразование типов данных, применяет фильтры и при необходимости возвращает HTTP-ответы. Используйте этот модуль, когда нужно собирать телеметрию, состояние устройств или данные форм напрямую от HTTP-клиентов без развертывания полноценного веб-сервера или написания пользовательских скриптов.

Парсер проверяет входящие пакеты в формате HTTP и извлекает поля из заголовка и из строки запроса в теле сообщения. Модуль поддерживает методы GET и POST и автоматически определяет версию протокола. Для каждой извлеченной переменной можно задать тип данных (string, integer, float, boolean, datetime и другие), значение по умолчанию и дополнительные правила парсинга. Обратите внимание, что multipart/mixed тела POST не поддерживаются.

Скачать  | PDF руководство

Следующий пример показывает типичный HTTP-запрос, который получает модуль, и то, как значения могут быть сопоставлены.

Пример входящего HTTP-запроса:

GET /js/some.js?sensor=Temp&sensor_id=1&value=23.6 HTTP/1.1
Host: 127.0.0.1:10000
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; rv:1.8.1.17) Gecko/20080829 Firefox/2.0.0.17
Accept: */*
Accept-Language: q=0.8,en-us;q=0.5,en;q=0.3
Accept-Charset: windows-1250,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive

Из этого запроса можно извлечь переменные, такие как sensor_id и value. По желанию можно также извлечь другие элементы заголовка как строки (например, Host, RequestPath, User-Agent).

Поддерживаемые методы извлечения данных

  • Поле заголовка HTTP - например, укажите имя элемента "Referer" и тип string. Парсер вернет полный URL реферера или значение по умолчанию, если поле отсутствует.
  • Поле строки запроса - для данных формы POST, например "sensor=Temp&value=23.6", задайте элемент "value" как float, чтобы экспортировать числовое значение.
  • Фиксированная позиция - извлекает метод или путь запроса из первой строки запроса. Пример: позиция 1..3 вернет "GET".
  • Разделитель - используйте разделитель ": " для разбиения записей заголовка. Пример извлекает значение "User-Agent".
  • Регулярное выражение - захватывает подвыражения для сложных случаев. Пример регулярного выражения для ISO даты в теле: (\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}) для извлечения метки времени в DATE_TIME_STAMP.
  • По умолчанию или Нет - создают фиксированные переменные, которые всегда содержат константу или null для использования в плагинах экспорта данных.

Параметры ответа

Модуль может не отправлять ответ или возвращать структурированные HTTP-ответы. Типы ответов включают Отключено, 403, 404, Текст, Из файла, Из папки. Используйте "Из папки" для обслуживания статического содержимого, хранящегося в указанной папке. При отправке файлов установите тип содержимого в Автоопределение, чтобы сопоставлять тип MIME с расширением файла. Если запрошенный файл отсутствует, модуль вернет 404.

Примеры ответов:

  • Вернуть простое текстовое подтверждение принятой телеметрии: HTTP/1.1 200 OK с телом "OK".
  • Вернуть 403 для неавторизованных клиентов на основе фильтра по IP или заголовку.
  • Вернуть содержимое файла: парсер возвращает содержимое указанного пользователем файла.

Примеры интеграции с Advanced TCP/IP Data Logger

Пример 1: Устройство отправляет телеметрию через HTTP POST как application/x-www-form-urlencoded (сырые данные):

POST /upload HTTP/1.1
Host: 192.168.1.100:8080
Content-Type: application/x-www-form-urlencoded
Content-Length: 29

sensor=Temp&value=23.6&ts=2025-11-21 08:00:00

Правила парсинга:

  • Поле строки запроса "sensor" → тип string → значение "Temp"
  • Поле строки запроса "value" → тип float → значение 23.6
  • Поле строки запроса "ts" → тип datetime → конвертировать в DATE_TIME_STAMP = "2025-11-21 08:00:00"

Пример экспорта (модуль экспорта в CSV):

DATE_TIME_STAMP,sensor,value
2025-11-21 08:00:00,Temp,23.6

Пример 2: Простой GET-запрос, используемый устройствами для отчета о состоянии:

Incoming (raw):
GET /status?uptime=3600&load=0.12 HTTP/1.1
Host: 10.0.0.5:10000
User-Agent: Device/1.2

Правила парсинга:

RequestPath → Фиксированное значение = /status
uptime → Поле строки запроса → integer = 3600
load → Поле строки запроса → float = 0.12

Ключевые особенности

  • Разбор строки запроса HTTP, заголовков и полей в теле запроса.
  • Несколько методов парсинга: фиксированная позиция, разделитель, regex, поле запроса.
  • Преобразование текста в другие форматы данных (например, date, time, string, float).
  • Контроль размера запроса и таймаут для защиты сервера.
  • Настраиваемые HTTP-ответы: Отключено, 403, 404, Текст, Файл или Папка.
  • Возможность экспортировать полный заголовок или выбранные разобранные переменные.

Краткое резюме

HTTP parser предоставляет простой и легкий способ принимать, разбирать и экспортировать HTTP-данные внутри Advanced TCP/IP Data Logger или Data Logger Suite с настраиваемыми методами разбора данных и режимами ответа.

Скачать  | PDF руководство

Как включить модуль

На рисунке ниже вы можете увидеть, как включить данных модуль в настройках программы на странице "Модули".

Выбор модуля

Рис.1. Выбор модуля.

Как настроить модуль

На рисунке ниже показан пример настроек модуля. Вы можете ознакомиться с файлом справки по ссылке выше, для получения более подробной информации.

Настройка модуля

Рис.2. Настройка модуля.