---
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`;
- керування довідковою інформацією про типи архівів;
- аналіз даних за типом архіву.
