Skip to main content

Телеметрия и хранение данных

MQTT-мониторинг

Платформа Стрикс реализует трёхуровневую модель хранения телеметрии, обеспечивающую баланс между детализацией данных, скоростью доступа и стоимостью хранения.

Трёхуровневая модель хранения

УровеньХранилищеДетализацияRetentionНазначение
LiveBaSyx OperationalData~1 Гц, последнее значениеТекущееДашборды, SCADA, мониторинг
ИсторияClickHouseraw / 1 мин / 1 час7 / 90 / 730 днейТренды, отчёты, аналитика
Сырой сигналS3/MinIO (Parquet)25+ кГцПо политикеВибродиагностика, спектральный анализ

Поток данных

Датчик/ПЛК --> MQTT-брокер --> telemetry-writer --> ClickHouse (история)
|
+--> data-bridge --> BaSyx OperationalData (live)

OPC UA / Modbus / REST --> data-bridge --> BaSyx OperationalData
КомпонентНазначениеИнтервал
data-bridgeЗапись последнего значения в BaSyx OperationalDataПо событию (~1 Гц)
telemetry-writerПакетная запись в ClickHouse с буферизациейFlush каждые 5 сек
retention-cleanupУдаление устаревших данных по StoragePolicy1 раз в час

MQTT-транспорт

Структура топика

liman/{project}/{deviceId}/telemetry

Примеры:

  • liman/nzif/ball-mill-101/telemetry
  • liman/irs/larus-inv459/telemetry

Формат сообщения

{
"timestamp": "2026-03-27T10:15:00.123Z",
"temperature_bearing_de": 42.3,
"vibration_rms_de": 2.1,
"motor_current": 245.5
}

Подключение

СредаАдресПротокол
Разработкаws://localhost:9001MQTT over WebSocket
Продуктивwss://{host}/ws/mqttMQTT over WebSocket (TLS)

TelemetryConfig -- настройка на оборудование

Субмодель TelemetryConfig (семантический ID: https://liman-tech.ru/sm/TelemetryConfig/1/0) размещается на AAS-оболочке оборудования и определяет параметры сбора телеметрии.

СвойствоТипОписаниеПример
EnabledbooleanСбор телеметрии включёнtrue
PeriodMsintПериод опроса в миллисекундах5000
AggregationMethodstringМетод агрегации (avg, min, max, last)avg
RetentionOverrideDaysintПереопределение retention для raw-данных30
ThrottleModestringРежим throttling (none, deadband, rate-limit)deadband
ParametersSMC[]Список параметров с индивидуальными настройкамисм. ниже

Параметры телеметрии

Parameters/
+-- Temperature/
| +-- SourceKey: "temperature_bearing_de"
| +-- Unit: "degC"
| +-- Period: 5000
| +-- DeadbandValue: 0.5
| +-- DisplayName: [ru: "Температура ПШ", en: "DE Bearing Temp"]
+-- Vibration/
| +-- SourceKey: "vibration_rms_de"
| +-- Unit: "mm/s"
| +-- Period: 1000
| +-- DeadbandValue: 0.1
+-- Current/
+-- SourceKey: "motor_current"
+-- Unit: "A"
+-- Period: 5000

StoragePolicy -- политика хранения

Субмодель StoragePolicy (семантический ID: https://liman-tech.ru/sm/StoragePolicy/1/0) размещается на facility-оболочке и задаёт политику хранения для всего проекта.

СвойствоТипОписаниеПо умолчанию
RawRetentionDaysintХранение raw-данных7
AggRetentionDaysintХранение 1-мин агрегации90
ArchiveRetentionDaysintХранение 1-час агрегации730
ThrottlingEnabledbooleanГлобальный throttlingtrue
DefaultDeadbandfloatПорог deadband по умолчанию0.5
OverridesSMC[]Переопределения по типам оборудования--

Каскад конфигурации

Настройки хранения и сбора данных определяются каскадно -- от общего к частному:

StoragePolicy (предприятие)          <-- политика по умолчанию
|
+-- Overrides[MatchEquipmentType] <-- переопределение по типу оборудования
| Пример: для pump -> RawRetentionDays: 14
|
+-- TelemetryConfig (оборудование) <-- переопределение на уровне единицы
|
+-- Parameters[].Period <-- переопределение на уровне параметра
Пример: Vibration.Period: 1000 мс (остальные 5000 мс)
tip

Retention можно настраивать гранулярно: для критичного оборудования (мельницы, насосы) хранить raw-данные 30 дней, а для вспомогательного (конвейеры, задвижки) -- 3 дня. Это значительно экономит дисковое пространство.

Протоколы источников данных

Платформа принимает данные из различных источников через субмодель InterfaceMapping (IDTA 02027):

ПротоколОписаниеТипичное применение
MQTTПубликация в топик, JSON payloadIoT-контроллеры (Larus), edge-устройства
OPC UAЧтение NodeId с OPC-сервераSCADA-системы, ПЛК (Siemens, ABB)
Modbus TCPЧтение регистров по адресуЧастотные преобразователи, счётчики
REST APIHTTP GET + JSONPathВнешние системы, API производителей

Таблицы ClickHouse

Данные в ClickHouse хранятся в трёх таблицах с автоматической агрегацией через материализованные представления:

ТаблицаДетализацияRetentionАгрегация
telemetry_rawКаждое значение7 дней--
telemetry_1min1 минута90 днейavg, min, max, count
telemetry_1hour1 час2 годаavg, min, max, count

Агрегация выполняется материализованными представлениями ClickHouse автоматически при вставке данных в telemetry_raw. Удаление устаревших данных выполняет сервис retention-cleanup по расписанию (1 раз в час) согласно StoragePolicy.

info

Для высокочастотных сигналов (вибрация 25+ кГц) raw-данные записываются в S3/MinIO в формате Apache Parquet с привязкой через субмодель TimeSeries (IDTA 02008). Это позволяет хранить терабайты данных вибросигналов с минимальной стоимостью.

Визуализация телеметрии

Компонент TelemetryHistoryChart автоматически выбирает таблицу по масштабу просмотра:

МасштабИсточникТочек на графике
Последний часtelemetry_raw~3600
Последние суткиtelemetry_1min~1440
Последний месяцtelemetry_1hour~720
Последний годtelemetry_1hour~8760

Поддерживается наложение нескольких параметров, масштабирование по оси времени и экспорт данных в CSV.