---
title: 'Descripción general de los módulos básicos'
section: 'Concepts'
weight: 1
related:
  - basic-modules/advantages
  - architecture/abstract-data-layer
  - basic-modules
  - equipment/equipment-types
---

En la Plataforma IIoT, los datos se organizan en forma de tablas, que pueden clasificarse según los principales módulos de representación de datos.

Estos módulos describen cómo encajan entre sí las mediciones en bruto, los dispositivos que las producen, las sesiones de comunicación durante las cuales se recopilan y los datos de referencia que las categorizan. Las tablas siguientes detallan los campos clave de cada módulo y las claves foráneas que los relacionan.

## Archivos de datos

Los archivos de datos almacenan información histórica como las métricas de los dispositivos IoT, los datos de los equipos y otras mediciones. La tabla principal para almacenar los datos de archivo es `channel_data`.

| Campo             | Tipo                             | Descripción                                               |
| ----------------- | -------------------------------- | --------------------------------------------------------- |
| `id`              | `bigint`                         | Identificador único del registro (clave primaria).        |
| `equipment_id`    | `bigint`                         | Referencia al equipo (`equipment.id`).                    |
| `seance_id`       | `bigint`                         | Referencia a la sesión (`seances.id`).                    |
| `channel_id`      | `bigint`                         | Referencia al canal (`channels.id`).                      |
| `unit_id`         | `bigint`                         | Referencia a la unidad de medida (`units.id`).            |
| `archive_type_id` | `integer`                        | Referencia al tipo de archivo (`referenceparameters.id`). |
| `event_time`      | `integer`                        | Hora del evento (p. ej., marca de tiempo).                |
| `value`           | `character varying(100)`         | Valor recibido del canal.                                 |
| `created_at`      | `timestamp(6) without time zone` | Hora en que se creó el registro.                          |
| `updated_at`      | `timestamp(6) without time zone` | Hora de la última actualización del registro.             |

Esta tabla almacena los datos recibidos de los canales del equipo y asocia cada registro con equipos, sesiones, canales y unidades mediante claves foráneas. Esto permite clasificar los datos según los atributos indicados para su posterior análisis y procesamiento.

- `equipment_id` hace referencia a la tabla `equipment`.
- `seance_id` hace referencia a la tabla `seances`.
- `channel_id` hace referencia a la tabla `channels`.
- `unit_id` hace referencia a la tabla `units`.
- `archive_type_id` hace referencia a la tabla `referenceparameters`.

## Equipos de medición

La tabla `equipment` almacena información sobre los equipos utilizados en el sistema. Este módulo es fundamental para gestionar los datos asociados a los dispositivos físicos, como contadores, sensores, controladores y otros tipos de equipos.

| Campo               | Tipo                             | Descripción                                        |
| ------------------- | -------------------------------- | -------------------------------------------------- |
| `id`                | `bigint`                         | Identificador único del registro (clave primaria). |
| `equipment_type_id` | `bigint`                         | Referencia al tipo de equipo.                      |
| `serial_number`     | `character varying(25)`          | Número de serie del equipo.                        |
| `manufacture_date`  | `timestamp(6) without time zone` | Fecha de fabricación del equipo.                   |
| `installation_date` | `timestamp(6) without time zone` | Fecha de instalación del equipo.                   |
| `program_version`   | `character varying(100)`         | Versión del software del equipo.                   |
| `created_at`        | `timestamp(6) without time zone` | Hora en que se creó el registro.                   |
| `updated_at`        | `timestamp(6) without time zone` | Hora de la última actualización del registro.      |

La tabla `equipment`:

- almacena los datos básicos del equipo, como el número de serie y las fechas de fabricación e instalación;
- utiliza el campo `program_version` para realizar el seguimiento de la versión del software instalado en el equipo;
- utiliza los campos `created_at` y `updated_at` para realizar el seguimiento de los cambios en los datos del equipo;
- está vinculada con otras tablas, como `equipment_types`, `channel_data` y `channels`, mediante claves foráneas;
- permite añadir, actualizar y recuperar información sobre los equipos del sistema.

El módulo de representación de datos basado en la tabla `equipment` permite gestionar de forma eficiente la información de los equipos del sistema.

Proporciona:

- el almacenamiento de los datos básicos del equipo;
- la gestión de las versiones del software;
- la comunicación con otras entidades del sistema.

## Sesiones de comunicación

La tabla `seances` almacena información sobre las sesiones de comunicación y la actividad de los equipos. Las sesiones representan periodos de actividad durante los cuales se intercambian datos entre el equipo y el sistema. Este módulo es fundamental para gestionar y analizar los datos asociados a las sesiones de comunicación.

Veamos este módulo con más detalle.

| Campo          | Tipo                             | Descripción                                        |
| -------------- | -------------------------------- | -------------------------------------------------- |
| `id`           | `bigint`                         | Identificador único del registro (clave primaria). |
| `telemetry_id` | `bigint`                         | Referencia a la telemetría (`telemetry.id`).       |
| `event_time`   | `integer`                        | Hora del evento.                                   |
| `evtid`        | `smallint`                       | Identificador del evento.                          |
| `trycnt`       | `smallint`                       | Número de intentos.                                |
| `tryfl`        | `character varying(12)`          | Marca del intento.                                 |
| `state`        | `smallint`                       | Estado de la sesión.                               |
| `btm`          | `integer`                        | Carga de la batería.                               |
| `rssi`         | `integer`                        | Intensidad de la señal (si se utiliza).            |
| `created_at`   | `timestamp(6) without time zone` | Hora en que se creó el registro.                   |
| `updated_at`   | `timestamp(6) without time zone` | Hora de la última actualización del registro.      |

El módulo `seances` se utiliza para:

- almacenar información sobre las sesiones de comunicación y el funcionamiento del equipo;
- gestionar los datos relacionados con las sesiones (por ejemplo, la hora del evento, el estado de la sesión, la intensidad de la señal y la carga de la batería);
- analizar las sesiones para detectar problemas u optimizar el rendimiento del sistema;
- la gestión del estado de la sesión: el campo `state` permite supervisar el estado de la sesión (por ejemplo, correcta, con error, etc.);
- el análisis de las sesiones: los campos `duration_session` y `session_traffic` permiten analizar la duración y el volumen del tráfico de la sesión;
- el seguimiento de los cambios: los campos `created_at` y `updated_at` permiten realizar el seguimiento de los cambios en los datos de la sesión.

## Tipos de archivo

El atributo `archive_type_id` categoriza los datos de la tabla `channel_data` por tipo de archivo. Esto permite organizar los datos en distintas categorías, como horarios, diarios, mensuales, situaciones anómalas y otros tipos de archivo. La tabla `referenceparameters` almacena la información de referencia sobre los tipos de archivo.

Este módulo se basa en la relación entre las tablas `channel_data` y `referenceparameters`.

| Campo               | Tipo                             | Descripción                                              |
| ------------------- | -------------------------------- | -------------------------------------------------------- |
| `id`                | `bigint`                         | Identificador único del registro (clave primaria).       |
| `name`              | `character varying(30)`          | Nombre del tipo de archivo.                              |
| `varname`           | `character varying(30)`          | Nombre corto de variable para el tipo de archivo.        |
| `description`       | `character varying(100)`         | Descripción del tipo de archivo.                         |
| `parent_id`         | `integer`                        | Referencia al parámetro padre (jerarquía).               |
| `referencemodel_id` | `integer`                        | Referencia al modelo del directorio.                     |
| `created_at`        | `timestamp(6) without time zone` | Hora en que se creó el registro.                         |
| `updated_at`        | `timestamp(6) without time zone` | Hora de la última actualización del registro.            |
| `deleted_at`        | `timestamp(6) without time zone` | Hora en que se eliminó el registro (eliminación lógica). |

El campo `archive_type_id` de la tabla `channel_data` permite categorizar los datos por tipo de archivo.

Por ejemplo:

```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'],
    ...
  ]
]
```

Si es necesario, estos archivos pueden organizarse en grupos:

- datos actuales (`current_state`): lecturas en el momento de la sesión de comunicación;
- datos agregados (`hourly`, `daily`, `monthly`): lecturas resumidas correspondientes a un determinado periodo de tiempo;
- eventos y situaciones anómalas (`nesht`, `event`): registros de cambios o sucesos significativos en el sistema. Pueden estar relacionados con los equipos, los usuarios o factores externos;
- estado de la válvula (`valve`): el estado y el control de la válvula del contador, si la hubiera;
- acciones de control (`update_app`, `send_sms`, `send_json`): registros de los comandos o acciones ejecutados para controlar el sistema o el equipo;
- etcétera.

El módulo de representación de datos `archive_type_id` permite categorizar de forma eficiente los datos en tipos de archivo y gestionar la información de referencia. Proporciona:

- la clasificación de los datos de la tabla `channel_data`;
- la gestión de la información de referencia sobre los tipos de archivo;
- el análisis de los datos por tipo de archivo.
