---
title: 'Обзор базовых модулей'
section: 'Concepts'
weight: 1
related:
  - basic-modules/advantages
  - architecture/abstract-data-layer
  - basic-modules
  - equipment/equipment-types
---

В IIoT Платформе данные организованы в виде таблиц, которые можно классифицировать по основным модулям представления данных.

Эти модули описывают, как соотносятся друг с другом необработанные измерения, устройства, которые их формируют, сеансы связи, в ходе которых они собираются, и справочные данные, которые их категоризируют. В таблицах ниже подробно описаны ключевые поля каждого модуля и внешние ключи, которые их связывают.

## Архивы данных

Архивы данных хранят историческую информацию, такую как метрики IoT-устройств, данные оборудования и другие измерения. Основная таблица для хранения архивных данных — `channel_data`.

| Поле              | Тип                              | Описание                                          |
| ----------------- | -------------------------------- | ------------------------------------------------- |
| `id`              | `bigint`                         | Уникальный идентификатор записи (первичный ключ). |
| `equipment_id`    | `bigint`                         | Ссылка на оборудование (`equipment.id`).          |
| `seance_id`       | `bigint`                         | Ссылка на сеанс (`seances.id`).                   |
| `channel_id`      | `bigint`                         | Ссылка на канал (`channels.id`).                  |
| `unit_id`         | `bigint`                         | Ссылка на единицу измерения (`units.id`).         |
| `archive_type_id` | `integer`                        | Ссылка на тип архива (`referenceparameters.id`).  |
| `event_time`      | `integer`                        | Время события (например, временная метка).        |
| `value`           | `character varying(100)`         | Значение, полученное из канала.                   |
| `created_at`      | `timestamp(6) without time zone` | Время создания записи.                            |
| `updated_at`      | `timestamp(6) without time zone` | Время последнего обновления записи.               |

Эта таблица хранит данные, полученные из каналов оборудования, и связывает каждую запись с оборудованием, сеансами, каналами и единицами измерения через внешние ключи. Это позволяет классифицировать данные по указанным атрибутам для дальнейшего анализа и обработки.

- `equipment_id` ссылается на таблицу `equipment`.
- `seance_id` ссылается на таблицу `seances`.
- `channel_id` ссылается на таблицу `channels`.
- `unit_id` ссылается на таблицу `units`.
- `archive_type_id` ссылается на таблицу `referenceparameters`.

## Узлы учёта

Таблица `equipment` хранит информацию об оборудовании, используемом в системе. Этот модуль является ключевым для управления данными, связанными с физическими устройствами, такими как счётчики, датчики, контроллеры и другие типы оборудования.

| Поле                | Тип                              | Описание                                          |
| ------------------- | -------------------------------- | ------------------------------------------------- |
| `id`                | `bigint`                         | Уникальный идентификатор записи (первичный ключ). |
| `equipment_type_id` | `bigint`                         | Ссылка на тип оборудования.                       |
| `serial_number`     | `character varying(25)`          | Серийный номер оборудования.                      |
| `manufacture_date`  | `timestamp(6) without time zone` | Дата изготовления оборудования.                   |
| `installation_date` | `timestamp(6) without time zone` | Дата установки оборудования.                      |
| `program_version`   | `character varying(100)`         | Версия программного обеспечения оборудования.     |
| `created_at`        | `timestamp(6) without time zone` | Время создания записи.                            |
| `updated_at`        | `timestamp(6) without time zone` | Время последнего обновления записи.               |

Таблица `equipment`:

- хранит основные данные об оборудовании, такие как серийный номер и даты изготовления и установки;
- использует поле `program_version` для отслеживания версии программного обеспечения, установленного на оборудовании;
- использует поля `created_at` и `updated_at` для отслеживания изменений в данных оборудования;
- связана с другими таблицами, такими как `equipment_types`, `channel_data` и `channels`, через внешние ключи;
- позволяет добавлять, обновлять и получать информацию об оборудовании в системе.

Модуль представления данных на основе таблицы `equipment` обеспечивает эффективное управление информацией об оборудовании в системе.

Он предоставляет:

- хранение основных данных об оборудовании;
- управление версиями программного обеспечения;
- связь с другими сущностями системы.

## Сеансы связи

Таблица `seances` хранит информацию о сеансах связи и активности оборудования. Сеансы представляют собой периоды активности, в течение которых происходит обмен данными между оборудованием и системой. Этот модуль является ключевым для управления и анализа данных, связанных с сеансами связи.

Рассмотрим этот модуль подробнее.

| Поле           | Тип                              | Описание                                          |
| -------------- | -------------------------------- | ------------------------------------------------- |
| `id`           | `bigint`                         | Уникальный идентификатор записи (первичный ключ). |
| `telemetry_id` | `bigint`                         | Ссылка на телеметрию (`telemetry.id`).            |
| `event_time`   | `integer`                        | Время события.                                    |
| `evtid`        | `smallint`                       | Идентификатор события.                            |
| `trycnt`       | `smallint`                       | Количество попыток.                               |
| `tryfl`        | `character varying(12)`          | Флаг попытки.                                     |
| `state`        | `smallint`                       | Статус сеанса.                                    |
| `btm`          | `integer`                        | Заряд батареи.                                    |
| `rssi`         | `integer`                        | Уровень сигнала (если используется).              |
| `created_at`   | `timestamp(6) without time zone` | Время создания записи.                            |
| `updated_at`   | `timestamp(6) without time zone` | Время последнего обновления записи.               |

Модуль `seances` используется для:

- хранения информации о сеансах связи и работе оборудования;
- управления данными, связанными с сеансом (например, время события, статус сеанса, уровень сигнала и заряд батареи);
- анализа сеансов для выявления проблем или оптимизации производительности системы;
- управления статусом сеанса: поле `state` позволяет отслеживать статус сеанса (например, успешный, ошибка и так далее);
- анализа сеансов: поля `duration_session` и `session_traffic` позволяют анализировать продолжительность и объём трафика сеанса;
- отслеживания изменений: поля `created_at` и `updated_at` позволяют отслеживать изменения в данных сеанса.

## Типы архивов

Атрибут `archive_type_id` категоризирует данные в таблице `channel_data` по типу архива. Это позволяет организовывать данные по различным категориям, таким как часовые, суточные, месячные, нештатные ситуации и другие типы архивов. Таблица `referenceparameters` хранит справочную информацию о типах архивов.

Этот модуль построен на связи между таблицами `channel_data` и `referenceparameters`.

| Поле                | Тип                              | Описание                                          |
| ------------------- | -------------------------------- | ------------------------------------------------- |
| `id`                | `bigint`                         | Уникальный идентификатор записи (первичный ключ). |
| `name`              | `character varying(30)`          | Название типа архива.                             |
| `varname`           | `character varying(30)`          | Короткое имя переменной для типа архива.          |
| `description`       | `character varying(100)`         | Описание типа архива.                             |
| `parent_id`         | `integer`                        | Ссылка на родительский параметр (иерархия).       |
| `referencemodel_id` | `integer`                        | Ссылка на модель справочника.                     |
| `created_at`        | `timestamp(6) without time zone` | Время создания записи.                            |
| `updated_at`        | `timestamp(6) without time zone` | Время последнего обновления записи.               |
| `deleted_at`        | `timestamp(6) without time zone` | Время удаления записи (мягкое удаление).          |

Поле `archive_type_id` в таблице `channel_data` позволяет категоризировать данные по типу архива.

Например:

```ruby
[ 'Archive types', 'archive_types', 'Archive types (hourly, daily, monthly)',
  [
    ['Hourly readings archive', 'hourly'],
    ['Daily readings archive', 'daily'],
    ['Monthly readings archive', 'monthly'],
    ['Emergency situations archive', 'nesht'],
    ['Events archive', 'event'],
    ['Valve status', 'valve'],
    ['Current state', 'current_state'],
    ['Updated firmware', 'update_app'],
    ['Send SMS', 'send_sms'],
    ['Send JSON', 'send_json'],
    ...
  ]
]
```

При необходимости эти архивы можно объединять в группы:

- текущие данные (`current_state`) — показания на момент сеанса связи;
- агрегированные данные (`hourly`, `daily`, `monthly`) — сводные показания за определённый период времени;
- события и нештатные ситуации (`nesht`, `event`) — записи о значимых изменениях или происшествиях в системе. Они могут быть связаны с оборудованием, пользователями или внешними факторами;
- статус клапана (`valve`) — состояние и управление клапаном счётчика, если он есть;
- управляющие воздействия (`update_app`, `send_sms`, `send_json`) — записи о командах или действиях, выполненных для управления системой или оборудованием;
- и так далее.

Модуль представления данных `archive_type_id` позволяет эффективно категоризировать данные по типам архивов и управлять справочной информацией. Он предоставляет:

- классификацию данных в таблице `channel_data`;
- управление справочной информацией о типах архивов;
- анализ данных по типам архивов.
