---
title: 'نظرة عامة على الوحدات الأساسية'
section: 'Concepts'
weight: 1
related:
  - basic-modules/advantages
  - architecture/abstract-data-layer
  - basic-modules
  - equipment/equipment-types
---

في منصة IIoT، تُنظَّم البيانات على هيئة جداول يمكن تصنيفها وفقًا لوحدات تمثيل البيانات الرئيسية.

تصف هذه الوحدات كيفية تكامل القياسات الخام، والأجهزة التي تنتجها، وجلسات الاتصال التي تُجمَع خلالها، والبيانات المرجعية التي تصنّفها جميعًا. توضّح الجداول أدناه الحقول الأساسية لكل وحدة والمفاتيح الخارجية التي تربط بينها.

## أرشيفات البيانات

تخزّن أرشيفات البيانات معلوماتٍ تاريخية مثل مقاييس أجهزة إنترنت الأشياء وبيانات المعدات وغيرها من القياسات. الجدول الرئيسي لتخزين بيانات الأرشيف هو `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`؛
- إدارة المعلومات المرجعية عن أنواع الأرشيف؛
- تحليل البيانات حسب نوع الأرشيف.
