---
title: 'Pregled osnovnih modula'
section: 'Concepts'
weight: 1
related:
  - basic-modules/advantages
  - architecture/abstract-data-layer
  - basic-modules
  - equipment/equipment-types
---

U podsistemu Data Platform podaci su organizovani u tabele koje mogu da se razvrstaju prema glavnim modulima predstavljanja podataka.

Ovi moduli opisuju kako se u jednu celinu uklapaju neobrađeni merni podaci, uređaji koji ih generišu, komunikacione sesije tokom kojih se prikupljaju i šifarnici po kojima se razvrstavaju. Tabele u nastavku detaljno prikazuju ključna polja svakog modula i strane ključeve koji ih povezuju.

## Arhive podataka

Arhive podataka čuvaju istorijske informacije, kao što su pokazatelji IoT uređaja, podaci o opremi i druga merenja. Glavna tabela za čuvanje arhivskih podataka je `channel_data`.

| Polje             | Tip                              | Opis                                                |
| ----------------- | -------------------------------- | --------------------------------------------------- |
| `id`              | `bigint`                         | Jedinstveni identifikator zapisa (primarni ključ).  |
| `equipment_id`    | `bigint`                         | Referenca na opremu (`equipment.id`).               |
| `seance_id`       | `bigint`                         | Referenca na sesiju (`seances.id`).                 |
| `channel_id`      | `bigint`                         | Referenca na kanal (`channels.id`).                 |
| `unit_id`         | `bigint`                         | Referenca na jedinicu mere (`units.id`).            |
| `archive_type_id` | `integer`                        | Referenca na tip arhive (`referenceparameters.id`). |
| `event_time`      | `integer`                        | Vreme događaja (npr. vremenska oznaka).             |
| `value`           | `character varying(100)`         | Vrednost primljena sa kanala.                       |
| `created_at`      | `timestamp(6) without time zone` | Vreme kreiranja zapisa.                             |
| `updated_at`      | `timestamp(6) without time zone` | Vreme poslednjeg ažuriranja zapisa.                 |

Ova tabela čuva podatke primljene sa kanala opreme i preko stranih ključeva povezuje svaki zapis sa opremom, sesijom, kanalom i jedinicom mere. Zahvaljujući tome, podaci mogu da se klasifikuju po navedenim atributima radi dalje analize i obrade.

- `equipment_id` upućuje na tabelu `equipment`.
- `seance_id` upućuje na tabelu `seances`.
- `channel_id` upućuje na tabelu `channels`.
- `unit_id` upućuje na tabelu `units`.
- `archive_type_id` upućuje na tabelu `referenceparameters`.

## Merna mesta

Tabela `equipment` čuva informacije o opremi koja se koristi u sistemu. Ovaj modul je ključan za upravljanje podacima povezanim sa fizičkim uređajima, kao što su merila, senzori, kontroleri i drugi tipovi opreme.

| Polje               | Tip                              | Opis                                               |
| ------------------- | -------------------------------- | -------------------------------------------------- |
| `id`                | `bigint`                         | Jedinstveni identifikator zapisa (primarni ključ). |
| `equipment_type_id` | `bigint`                         | Referenca na tip opreme.                           |
| `serial_number`     | `character varying(25)`          | Serijski broj opreme.                              |
| `manufacture_date`  | `timestamp(6) without time zone` | Datum proizvodnje opreme.                          |
| `installation_date` | `timestamp(6) without time zone` | Datum ugradnje opreme.                             |
| `program_version`   | `character varying(100)`         | Verzija softvera opreme.                           |
| `created_at`        | `timestamp(6) without time zone` | Vreme kreiranja zapisa.                            |
| `updated_at`        | `timestamp(6) without time zone` | Vreme poslednjeg ažuriranja zapisa.                |

Tabela `equipment`:

- čuva osnovne podatke o opremi, kao što su serijski broj i datumi proizvodnje i ugradnje;
- pomoću polja `program_version` prati verziju softvera instaliranog na opremi;
- pomoću polja `created_at` i `updated_at` prati izmene podataka o opremi;
- povezana je preko stranih ključeva sa drugim tabelama, kao što su `equipment_types`, `channel_data` i `channels`;
- omogućava da dodajete, ažurirate i preuzimate informacije o opremi u sistemu.

Modul predstavljanja podataka zasnovan na tabeli `equipment` omogućava efikasno upravljanje informacijama o opremi u sistemu.

Modul obezbeđuje:

- čuvanje osnovnih podataka o opremi;
- upravljanje verzijama softvera;
- vezu sa drugim entitetima u sistemu.

## Komunikacione sesije

Tabela `seances` čuva informacije o komunikacionim sesijama i aktivnosti opreme. Sesije su periodi aktivnosti tokom kojih oprema i sistem razmenjuju podatke. Ovaj modul je ključan za upravljanje podacima povezanim sa komunikacionim sesijama i za njihovu analizu.

Pogledajmo ovaj modul detaljnije.

| Polje          | Tip                              | Opis                                               |
| -------------- | -------------------------------- | -------------------------------------------------- |
| `id`           | `bigint`                         | Jedinstveni identifikator zapisa (primarni ključ). |
| `telemetry_id` | `bigint`                         | Referenca na telemetriju (`telemetry.id`).         |
| `event_time`   | `integer`                        | Vreme događaja.                                    |
| `evtid`        | `smallint`                       | Identifikator događaja.                            |
| `trycnt`       | `smallint`                       | Broj pokušaja.                                     |
| `tryfl`        | `character varying(12)`          | Indikator pokušaja.                                |
| `state`        | `smallint`                       | Status sesije.                                     |
| `btm`          | `integer`                        | Napunjenost baterije.                              |
| `rssi`         | `integer`                        | Jačina signala (ako se koristi).                   |
| `created_at`   | `timestamp(6) without time zone` | Vreme kreiranja zapisa.                            |
| `updated_at`   | `timestamp(6) without time zone` | Vreme poslednjeg ažuriranja zapisa.                |

Modul `seances` se koristi za:

- čuvanje informacija o komunikacionim sesijama i radu opreme;
- upravljanje podacima povezanim sa sesijama (na primer, vreme događaja, status sesije, jačina signala i napunjenost baterije);
- analizu sesija radi otkrivanja problema ili optimizacije performansi sistema;
- upravljanje statusom sesije: polje `state` omogućava da pratite status sesije (na primer, uspešno, greška itd.);
- analizu sesija: polja `duration_session` i `session_traffic` omogućavaju da analizirate trajanje sesije i obim njenog saobraćaja;
- praćenje izmena: polja `created_at` i `updated_at` omogućavaju da pratite izmene podataka o sesijama.

## Tipovi arhiva

Atribut `archive_type_id` razvrstava podatke u tabeli `channel_data` po tipu arhive. Tako podaci mogu da se organizuju u različite kategorije, kao što su satne, dnevne i mesečne arhive, nenormalni režimi rada i drugi tipovi arhiva. Tabela `referenceparameters` čuva šifarnik tipova arhiva.

Ovaj modul se zasniva na vezi između tabela `channel_data` i `referenceparameters`.

| Polje               | Tip                              | Opis                                               |
| ------------------- | -------------------------------- | -------------------------------------------------- |
| `id`                | `bigint`                         | Jedinstveni identifikator zapisa (primarni ključ). |
| `name`              | `character varying(30)`          | Naziv tipa arhive.                                 |
| `varname`           | `character varying(30)`          | Kratko ime promenljive za tip arhive.              |
| `description`       | `character varying(100)`         | Opis tipa arhive.                                  |
| `parent_id`         | `integer`                        | Referenca na nadređeni parametar (hijerarhija).    |
| `referencemodel_id` | `integer`                        | Referenca na model šifarnika.                      |
| `created_at`        | `timestamp(6) without time zone` | Vreme kreiranja zapisa.                            |
| `updated_at`        | `timestamp(6) without time zone` | Vreme poslednjeg ažuriranja zapisa.                |
| `deleted_at`        | `timestamp(6) without time zone` | Vreme logičkog brisanja zapisa (soft delete).      |

Polje `archive_type_id` u tabeli `channel_data` omogućava da razvrstate podatke po tipu arhive.

Na primer:

```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'],
    ...
  ]
]
```

Po potrebi ove arhive mogu da se organizuju u grupe:

- trenutni podaci (`current_state`) – očitavanja u trenutku komunikacione sesije;
- agregirani podaci (`hourly`, `daily`, `monthly`) – zbirna očitavanja za određeni vremenski period;
- događaji i nenormalni režimi rada (`nesht`, `event`) – zapisi o značajnim promenama ili pojavama u sistemu. Mogu da se odnose na opremu, korisnike ili spoljne faktore;
- status ventila (`valve`) – stanje ventila merila, ako postoji, i upravljanje njime;
- upravljačke radnje (`update_app`, `send_sms`, `send_json`) – zapisi o komandama ili radnjama izvršenim radi upravljanja sistemom ili opremom;
- i tako dalje.

Modul predstavljanja podataka `archive_type_id` omogućava da efikasno razvrstate podatke po tipovima arhiva i upravljate šifarnikom. On obezbeđuje:

- klasifikaciju podataka u tabeli `channel_data`;
- upravljanje šifarnikom tipova arhiva;
- analizu podataka po tipu arhive.
