Cómo Construir un Diario de a Bordo con Node-RED y SQLite: Una Aventura Técnica

Cómo Construir un Diario de a Bordo con Node-RED y SQLite: Una Aventura Técnica

¿Alguna vez has querido llevar un registro detallado de tus travesías náuticas? ¡Nosotros también! Y lo mejor es que lo hemos hecho combinando herramientas modernas como Node-RED , SQLite y una Raspberry Pi 4 . En este artículo, te contamos paso a paso cómo creamos un sistema completo para gestionar entradas de navegación, desde el hardware hasta el software. ¡Prepárate para zarpar hacia el mundo del desarrollo!

1. El Hardware: La Brújula Digital

El corazón de nuestro proyecto es una Raspberry Pi 4 , un pequeño pero poderoso dispositivo que actúa como el cerebro del sistema. Con su bajo consumo de energía y capacidad para ejecutar aplicaciones web, es perfecta para proyectos embarcados como este.

Características Clave:

  • Sistema Operativo: Raspberry Pi OS (basado en Debian), ligero y optimizado para la RPi.
  • Conectividad: Wi-Fi y Bluetooth integrados para comunicarse con otros dispositivos.
  • Base de Datos: Usamos SQLite3 , una base de datos embebida ideal para proyectos pequeños o medianos.

2. El Software: Node-RED al Rescate

Node-RED es una herramienta visual de programación basada en flujos. Es perfecta para conectar APIs, bases de datos y sensores sin necesidad de escribir mucho código. Aquí te mostramos cómo lo usamos:

Flujos Principales:

Recepción de Datos NMEA:
  • Conectamos un receptor GPS mediante TCP para recibir mensajes NMEA.
  • Procesamos estos datos para extraer información clave como posición, velocidad y rumbo.
API RESTful:
Creamos endpoints para gestionar las entradas del diario:
  • /api/add-entry: Añadir nuevas entradas.
  • /api/edit-entry: Modificar entradas existentes.
  • /api/delete-entries: Eliminar una o varias entradas.
  • /api/entries: Listar entradas con filtros y paginación.
Interfaz Web:
Usamos HTML, CSS y JavaScript para crear una interfaz amigable donde:
  • Ver todas las entradas.
  • Filtrar por tipo (manual/automático) y rango de fechas.
  • Añadir, editar o eliminar entradas.

3. Base de Datos: SQLite3, Ligera y Potente

La base de datos es el ancla de nuestro sistema. Usamos SQLite3 para almacenar todas las entradas del diario. Aquí tienes un vistazo a la tabla principal:

CREATE TABLE entradas (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    estado_navegacion TEXT,
    categoria TEXT,
    ocurrio_hace TEXT,
    estado_mar TEXT,
    visibilidad TEXT,
    nubosidad INTEGER,
    mensaje TEXT,
    posicion TEXT,
    velocidad REAL,
    rumbo REAL,
    tipo_entrada TEXT,
    fecha DATETIME DEFAULT CURRENT_TIMESTAMP
);
Ventajas de SQLite:
  • No requiere un servidor separado.
  • Ideal para proyectos pequeños o medianos.
  • Compatible con Node-RED gracias al nodo node-red-node-sqlite.

4. Estructura de Archivos: Todo en su Lugar

Aquí tienes un árbol de la estructura de archivos que usamos. Es simple pero efectiva para mantener el proyecto organizado.

/Diario/
├── frontend/
│   ├── index.html          # Página principal: lista de entradas
│   ├── add-entry.html      # Formulario para añadir/editar entradas
│   ├── edit-entry.html     # Formulario para editar entradas
│   └── css/
│       └── styles.css      # Estilos personalizados
├── static/
│   ├── assets/
│   │   └── bootstrap.min.css # Bootstrap para diseño responsive
│   └── js/
│       ├── main.js         # Scripts generales
│       ├── list-entries.js # Lógica para listar entradas
│       └── add-entry.js    # Lógica para añadir/editar entradas
└── diario.db               # Base de datos SQLite

5. Funcionalidades Destacadas

Filtros y Paginación

  • Filtra las entradas por tipo (manual/automático) y rango de fechas.
  • Usa paginación para manejar grandes volúmenes de datos.
Entradas Automáticas
Gracias al receptor GPS, podemos registrar automáticamente datos como posición, velocidad y rumbo.
Interfaz Intuitiva
  • Diseño limpio y responsivo con Bootstrap.
  • Campos deshabilitados o de solo lectura claramente diferenciados.

6. Reflexiones Finales

Este proyecto es un ejemplo perfecto de cómo combinar hardware y software para resolver problemas reales. Con una Raspberry Pi 4 , Node-RED y SQLite , creamos un sistema robusto y escalable que puede adaptarse a diferentes necesidades.

¿Qué sigue?

  • Migrar a una base de datos más robusta como PostgreSQL si el proyecto crece.
  • Añadir gráficos para visualizar datos históricos.
  • Integrar sensores adicionales para medir temperatura, humedad, etc.

Entrada Anterior