---
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`؛
- مدیریت اطلاعات مرجع درباره انواع آرشیو؛
- تحلیل داده‌ها بر اساس نوع آرشیو.
