---
title: 'Überblick über die Basismodule'
section: 'Concepts'
weight: 1
related:
  - basic-modules/advantages
  - architecture/abstract-data-layer
  - basic-modules
  - equipment/equipment-types
---

In der IIoT-Plattform werden Daten als Tabellen organisiert, die sich anhand der zentralen Module der Datendarstellung klassifizieren lassen.

Diese Module beschreiben, wie Rohmesswerte, die Geräte, die sie erzeugen, die Kommunikationssitzungen, in denen sie erfasst werden, sowie die Referenzdaten, die sie kategorisieren, zusammenspielen. Die nachstehenden Tabellen führen die wichtigsten Felder jedes Moduls und die Fremdschlüssel auf, die sie miteinander verknüpfen.

## Datenarchive

Datenarchive speichern historische Informationen wie Kennwerte von IoT-Geräten, Anlagendaten und weitere Messwerte. Die zentrale Tabelle zur Speicherung von Archivdaten ist `channel_data`.

| Feld              | Typ                              | Beschreibung                                          |
| ----------------- | -------------------------------- | ----------------------------------------------------- |
| `id`              | `bigint`                         | Eindeutige Datensatzkennung (Primärschlüssel).        |
| `equipment_id`    | `bigint`                         | Verweis auf die Anlage (`equipment.id`).              |
| `seance_id`       | `bigint`                         | Verweis auf die Sitzung (`seances.id`).               |
| `channel_id`      | `bigint`                         | Verweis auf den Kanal (`channels.id`).                |
| `unit_id`         | `bigint`                         | Verweis auf die Maßeinheit (`units.id`).              |
| `archive_type_id` | `integer`                        | Verweis auf den Archivtyp (`referenceparameters.id`). |
| `event_time`      | `integer`                        | Zeitpunkt des Ereignisses (z. B. Zeitstempel).        |
| `value`           | `character varying(100)`         | Der vom Kanal empfangene Wert.                        |
| `created_at`      | `timestamp(6) without time zone` | Zeitpunkt, zu dem der Datensatz erstellt wurde.       |
| `updated_at`      | `timestamp(6) without time zone` | Zeitpunkt der letzten Aktualisierung des Datensatzes. |

Diese Tabelle speichert die von den Anlagenkanälen empfangenen Daten und verknüpft jeden Datensatz über Fremdschlüssel mit Anlage, Sitzungen, Kanälen und Einheiten. Dadurch lassen sich die Daten nach den angegebenen Merkmalen klassifizieren und für die weitere Analyse und Verarbeitung aufbereiten.

- `equipment_id` verweist auf die Tabelle `equipment`.
- `seance_id` verweist auf die Tabelle `seances`.
- `channel_id` verweist auf die Tabelle `channels`.
- `unit_id` verweist auf die Tabelle `units`.
- `archive_type_id` verweist auf die Tabelle `referenceparameters`.

## Messgeräte

Die Tabelle `equipment` speichert Informationen über die im System eingesetzten Anlagen. Dieses Modul ist zentral für die Verwaltung der Daten, die mit physischen Geräten wie Zählern, Sensoren, Steuerungen und anderen Anlagentypen verbunden sind.

| Feld                | Typ                              | Beschreibung                                          |
| ------------------- | -------------------------------- | ----------------------------------------------------- |
| `id`                | `bigint`                         | Eindeutige Kennung des Datensatzes (Primärschlüssel). |
| `equipment_type_id` | `bigint`                         | Verweis auf den Anlagentyp.                           |
| `serial_number`     | `character varying(25)`          | Seriennummer der Anlage.                              |
| `manufacture_date`  | `timestamp(6) without time zone` | Herstellungsdatum der Anlage.                         |
| `installation_date` | `timestamp(6) without time zone` | Installationsdatum der Anlage.                        |
| `program_version`   | `character varying(100)`         | Softwareversion der Anlage.                           |
| `created_at`        | `timestamp(6) without time zone` | Zeitpunkt, zu dem der Datensatz erstellt wurde.       |
| `updated_at`        | `timestamp(6) without time zone` | Zeitpunkt der letzten Aktualisierung des Datensatzes. |

Die Tabelle `equipment`:

- speichert grundlegende Daten zur Anlage, etwa die Seriennummer sowie Herstellungs- und Installationsdatum;
- nutzt das Feld `program_version`, um die Version der auf der Anlage installierten Software nachzuverfolgen;
- nutzt die Felder `created_at` und `updated_at`, um Änderungen an den Anlagendaten nachzuverfolgen;
- ist über Fremdschlüssel mit anderen Tabellen wie `equipment_types`, `channel_data` und `channels` verknüpft;
- ermöglicht es, Informationen über Anlagen im System hinzuzufügen, zu aktualisieren und abzurufen.

Das auf der Tabelle `equipment` basierende Modul zur Datendarstellung ermöglicht eine effiziente Verwaltung der Anlageninformationen im System.

Es bietet:

- die Speicherung grundlegender Anlagendaten;
- die Verwaltung der Softwareversionen;
- die Kommunikation mit anderen Entitäten im System.

## Kommunikationssitzungen

Die Tabelle `seances` speichert Informationen über Kommunikationssitzungen und die Aktivität der Anlagen. Sitzungen stellen Aktivitätszeiträume dar, in denen Daten zwischen der Anlage und dem System ausgetauscht werden. Dieses Modul ist zentral für die Verwaltung und Analyse der mit Kommunikationssitzungen verbundenen Daten.

Betrachten wir dieses Modul genauer.

| Feld           | Typ                              | Beschreibung                                          |
| -------------- | -------------------------------- | ----------------------------------------------------- |
| `id`           | `bigint`                         | Eindeutige Kennung des Datensatzes (Primärschlüssel). |
| `telemetry_id` | `bigint`                         | Verweis auf die Telemetrie (`telemetry.id`).          |
| `event_time`   | `integer`                        | Zeitpunkt des Ereignisses.                            |
| `evtid`        | `smallint`                       | Kennung des Ereignisses.                              |
| `trycnt`       | `smallint`                       | Anzahl der Versuche.                                  |
| `tryfl`        | `character varying(12)`          | Kennzeichen des Versuchs.                             |
| `state`        | `smallint`                       | Status der Sitzung.                                   |
| `btm`          | `integer`                        | Akkuladung.                                           |
| `rssi`         | `integer`                        | Signalstärke (falls verwendet).                       |
| `created_at`   | `timestamp(6) without time zone` | Zeitpunkt, zu dem der Datensatz erstellt wurde.       |
| `updated_at`   | `timestamp(6) without time zone` | Zeitpunkt der letzten Aktualisierung des Datensatzes. |

Das Modul `seances` wird verwendet für:

- die Speicherung von Informationen über Kommunikationssitzungen und den Betrieb der Anlagen;
- die Verwaltung sitzungsbezogener Daten (zum Beispiel Ereigniszeitpunkt, Sitzungsstatus, Signalstärke und Akkuladung);
- die Analyse von Sitzungen zur Erkennung von Problemen oder zur Optimierung der Systemleistung;
- die Verwaltung des Sitzungsstatus: Das Feld `state` ermöglicht die Überwachung des Sitzungsstatus (zum Beispiel erfolgreich, Fehler usw.);
- die Sitzungsanalyse: Die Felder `duration_session` und `session_traffic` ermöglichen die Analyse von Dauer und Umfang des Sitzungsdatenverkehrs;
- die Nachverfolgung von Änderungen: Die Felder `created_at` und `updated_at` ermöglichen das Nachverfolgen von Änderungen an den Sitzungsdaten.

## Archivtypen

Das Attribut `archive_type_id` kategorisiert die Daten in der Tabelle `channel_data` nach Archivtyp. Dadurch lassen sich Daten in verschiedene Kategorien einteilen, etwa stündlich, täglich, monatlich, Störungssituationen und weitere Archivtypen. Die Tabelle `referenceparameters` speichert Referenzinformationen über die Archivtypen.

Dieses Modul beruht auf der Beziehung zwischen den Tabellen `channel_data` und `referenceparameters`.

| Feld                | Typ                              | Beschreibung                                                  |
| ------------------- | -------------------------------- | ------------------------------------------------------------- |
| `id`                | `bigint`                         | Eindeutige Kennung des Datensatzes (Primärschlüssel).         |
| `name`              | `character varying(30)`          | Bezeichnung des Archivtyps.                                   |
| `varname`           | `character varying(30)`          | Kurzer Variablenname für den Archivtyp.                       |
| `description`       | `character varying(100)`         | Beschreibung des Archivtyps.                                  |
| `parent_id`         | `integer`                        | Verweis auf den übergeordneten Parameter (Hierarchie).        |
| `referencemodel_id` | `integer`                        | Verweis auf das Verzeichnismodell.                            |
| `created_at`        | `timestamp(6) without time zone` | Zeitpunkt, zu dem der Datensatz erstellt wurde.               |
| `updated_at`        | `timestamp(6) without time zone` | Zeitpunkt der letzten Aktualisierung des Datensatzes.         |
| `deleted_at`        | `timestamp(6) without time zone` | Zeitpunkt, zu dem der Datensatz gelöscht wurde (Soft Delete). |

Das Feld `archive_type_id` in der Tabelle `channel_data` ermöglicht die Kategorisierung der Daten nach Archivtyp.

Zum Beispiel:

```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'],
    ...
  ]
]
```

Bei Bedarf lassen sich diese Archive in Gruppen organisieren:

- aktuelle Daten (`current_state`) — Messwerte zum Zeitpunkt der Kommunikationssitzung;
- aggregierte Daten (`hourly`, `daily`, `monthly`) — zusammengefasste Messwerte über einen bestimmten Zeitraum;
- Ereignisse und Störungssituationen (`nesht`, `event`) — Aufzeichnungen bedeutsamer Änderungen oder Vorkommnisse im System. Sie können mit Anlagen, Benutzern oder externen Faktoren zusammenhängen;
- Ventilstatus (`valve`) — Zustand und Steuerung des Zählerventils, sofern vorhanden;
- Steuerungsaktionen (`update_app`, `send_sms`, `send_json`) — Aufzeichnungen von Befehlen oder Aktionen, die zur Steuerung des Systems oder der Anlage ausgeführt werden;
- und so weiter.

Das Datendarstellungsmodul `archive_type_id` ermöglicht es, Daten effizient nach Archivtypen zu kategorisieren und Referenzinformationen zu verwalten. Es bietet:

- die Klassifizierung der Daten in der Tabelle `channel_data`;
- die Verwaltung von Referenzinformationen über die Archivtypen;
- die Analyse der Daten nach Archivtyp.
