---
title: 'Panoramica dei moduli di base'
section: 'Concepts'
weight: 1
related:
  - basic-modules/advantages
  - architecture/abstract-data-layer
  - basic-modules
  - equipment/equipment-types
---

Nella Piattaforma IIoT i dati sono organizzati sotto forma di tabelle, classificabili in base ai principali moduli di rappresentazione dei dati.

Questi moduli descrivono come si integrano tra loro le misure grezze, i dispositivi che le producono, le sessioni di comunicazione durante le quali vengono raccolte e i dati di riferimento che le categorizzano. Le tabelle riportate di seguito illustrano in dettaglio i campi principali di ciascun modulo e le chiavi esterne che li collegano.

## Archivi dati

Gli archivi dati conservano le informazioni storiche, quali le metriche dei dispositivi IoT, i dati delle apparecchiature e altre misure. La tabella principale per l'archiviazione dei dati di archivio è `channel_data`.

| Campo             | Tipo                             | Descrizione                                                 |
| ----------------- | -------------------------------- | ----------------------------------------------------------- |
| `id`              | `bigint`                         | Identificatore univoco del record (chiave primaria).        |
| `equipment_id`    | `bigint`                         | Riferimento all'apparecchiatura (`equipment.id`).           |
| `seance_id`       | `bigint`                         | Riferimento alla sessione (`seances.id`).                   |
| `channel_id`      | `bigint`                         | Riferimento al canale (`channels.id`).                      |
| `unit_id`         | `bigint`                         | Riferimento all'unità di misura (`units.id`).               |
| `archive_type_id` | `integer`                        | Riferimento al tipo di archivio (`referenceparameters.id`). |
| `event_time`      | `integer`                        | Orario dell'evento (ad es. timestamp).                      |
| `value`           | `character varying(100)`         | Valore ricevuto dal canale.                                 |
| `created_at`      | `timestamp(6) without time zone` | Orario di creazione del record.                             |
| `updated_at`      | `timestamp(6) without time zone` | Orario dell'ultimo aggiornamento del record.                |

Questa tabella conserva i dati ricevuti dai canali delle apparecchiature e associa ciascun record alle apparecchiature, alle sessioni, ai canali e alle unità tramite chiavi esterne. Ciò consente di classificare i dati in base agli attributi specificati per la successiva analisi ed elaborazione.

- `equipment_id` fa riferimento alla tabella `equipment`.
- `seance_id` fa riferimento alla tabella `seances`.
- `channel_id` fa riferimento alla tabella `channels`.
- `unit_id` fa riferimento alla tabella `units`.
- `archive_type_id` fa riferimento alla tabella `referenceparameters`.

## Unità di misura

La tabella `equipment` conserva le informazioni sulle apparecchiature utilizzate nel sistema. Questo modulo è essenziale per la gestione dei dati associati ai dispositivi fisici, quali contatori, sensori, controllori e altri tipi di apparecchiature.

| Campo               | Tipo                             | Descrizione                                          |
| ------------------- | -------------------------------- | ---------------------------------------------------- |
| `id`                | `bigint`                         | Identificatore univoco del record (chiave primaria). |
| `equipment_type_id` | `bigint`                         | Riferimento al tipo di apparecchiatura.              |
| `serial_number`     | `character varying(25)`          | Numero di serie dell'apparecchiatura.                |
| `manufacture_date`  | `timestamp(6) without time zone` | Data di fabbricazione dell'apparecchiatura.          |
| `installation_date` | `timestamp(6) without time zone` | Data di installazione dell'apparecchiatura.          |
| `program_version`   | `character varying(100)`         | Versione del software dell'apparecchiatura.          |
| `created_at`        | `timestamp(6) without time zone` | Orario di creazione del record.                      |
| `updated_at`        | `timestamp(6) without time zone` | Orario dell'ultimo aggiornamento del record.         |

La tabella `equipment`:

- conserva i dati di base sull'apparecchiatura, quali il numero di serie e le date di fabbricazione e di installazione;
- utilizza il campo `program_version` per tracciare la versione del software installato sull'apparecchiatura;
- utilizza i campi `created_at` e `updated_at` per tracciare le modifiche ai dati dell'apparecchiatura;
- è collegata ad altre tabelle, quali `equipment_types`, `channel_data` e `channels`, tramite chiavi esterne;
- consente di aggiungere, aggiornare e recuperare le informazioni sulle apparecchiature presenti nel sistema.

Il modulo di rappresentazione dei dati basato sulla tabella `equipment` consente una gestione efficiente delle informazioni sulle apparecchiature nel sistema.

Garantisce:

- l'archiviazione dei dati di base delle apparecchiature;
- la gestione delle versioni del software;
- la comunicazione con le altre entità del sistema.

## Sessioni di comunicazione

La tabella `seances` conserva le informazioni sulle sessioni di comunicazione e sull'attività delle apparecchiature. Le sessioni rappresentano i periodi di attività durante i quali avviene lo scambio di dati tra le apparecchiature e il sistema. Questo modulo è essenziale per la gestione e l'analisi dei dati associati alle sessioni di comunicazione.

Esaminiamo più da vicino questo modulo.

| Campo          | Tipo                             | Descrizione                                          |
| -------------- | -------------------------------- | ---------------------------------------------------- |
| `id`           | `bigint`                         | Identificatore univoco del record (chiave primaria). |
| `telemetry_id` | `bigint`                         | Riferimento alla telemetria (`telemetry.id`).        |
| `event_time`   | `integer`                        | Orario dell'evento.                                  |
| `evtid`        | `smallint`                       | Identificatore dell'evento.                          |
| `trycnt`       | `smallint`                       | Numero di tentativi.                                 |
| `tryfl`        | `character varying(12)`          | Flag del tentativo.                                  |
| `state`        | `smallint`                       | Stato della sessione.                                |
| `btm`          | `integer`                        | Carica della batteria.                               |
| `rssi`         | `integer`                        | Intensità del segnale (se utilizzato).               |
| `created_at`   | `timestamp(6) without time zone` | Orario di creazione del record.                      |
| `updated_at`   | `timestamp(6) without time zone` | Orario dell'ultimo aggiornamento del record.         |

Il modulo `seances` viene utilizzato per:

- conservare le informazioni sulle sessioni di comunicazione e sul funzionamento delle apparecchiature;
- gestire i dati relativi alle sessioni (ad esempio, orario dell'evento, stato della sessione, intensità del segnale e carica della batteria);
- analizzare le sessioni per individuare problemi o ottimizzare le prestazioni del sistema;
- gestire lo stato della sessione: il campo `state` consente di monitorare lo stato della sessione (ad esempio, riuscita, errore e così via);
- analizzare le sessioni: i campi `duration_session` e `session_traffic` consentono di analizzare la durata e il volume del traffico della sessione;
- tracciare le modifiche: i campi `created_at` e `updated_at` consentono di tracciare le modifiche ai dati della sessione.

## Tipi di archivio

L'attributo `archive_type_id` categorizza i dati nella tabella `channel_data` in base al tipo di archivio. Ciò consente di organizzare i dati in diverse categorie, quali archivi orari, giornalieri, mensili, situazioni anomale e altri tipi di archivio. La tabella `referenceparameters` conserva le informazioni di riferimento sui tipi di archivio.

Questo modulo si fonda sulla relazione tra le tabelle `channel_data` e `referenceparameters`.

| Campo               | Tipo                             | Descrizione                                          |
| ------------------- | -------------------------------- | ---------------------------------------------------- |
| `id`                | `bigint`                         | Identificatore univoco del record (chiave primaria). |
| `name`              | `character varying(30)`          | Nome del tipo di archivio.                           |
| `varname`           | `character varying(30)`          | Nome breve della variabile per il tipo di archivio.  |
| `description`       | `character varying(100)`         | Descrizione del tipo di archivio.                    |
| `parent_id`         | `integer`                        | Riferimento al parametro padre (gerarchia).          |
| `referencemodel_id` | `integer`                        | Riferimento al modello di directory.                 |
| `created_at`        | `timestamp(6) without time zone` | Orario di creazione del record.                      |
| `updated_at`        | `timestamp(6) without time zone` | Orario dell'ultimo aggiornamento del record.         |
| `deleted_at`        | `timestamp(6) without time zone` | Orario di eliminazione del record (soft delete).     |

Il campo `archive_type_id` nella tabella `channel_data` consente di categorizzare i dati in base al tipo di archivio.

Ad esempio:

```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'],
    ...
  ]
]
```

Se necessario, questi archivi possono essere organizzati in gruppi:

- dati correnti (`current_state`) — letture al momento della sessione di comunicazione;
- dati aggregati (`hourly`, `daily`, `monthly`) — letture riepilogative relative a un determinato periodo di tempo;
- eventi e situazioni anomale (`nesht`, `event`) — registrazioni di cambiamenti o accadimenti significativi nel sistema. Possono essere correlati alle apparecchiature, agli utenti o a fattori esterni;
- stato della valvola (`valve`) — lo stato e il controllo della valvola del contatore, se presente;
- azioni di controllo (`update_app`, `send_sms`, `send_json`) — registrazioni di comandi o azioni eseguiti per il controllo del sistema o delle apparecchiature;
- e così via.

Il modulo di rappresentazione dei dati `archive_type_id` consente di categorizzare in modo efficiente i dati nei tipi di archivio e di gestire le informazioni di riferimento. Garantisce:

- la classificazione dei dati nella tabella `channel_data`;
- la gestione delle informazioni di riferimento sui tipi di archivio;
- l'analisi dei dati per tipo di archivio.
