Resumen Detallado del Proceso de Gestión de Alarmas de SignalK con Node-RED

Resumen Detallado del Proceso de Gestión de Alarmas de SignalK con Node-RED

Este proyecto describe cómo gestionar y visualizar alarmas generadas por el sistema SignalK en un entorno náutico, utilizando Node-RED como plataforma central para procesar las notificaciones. La solución incluye la visualización en una tablet Android antigua y la emisión de sonidos para alertas críticas.


1. Objetivo del Sistema

El objetivo principal es:

  • Recibir notificaciones desde SignalK.
  • Procesarlas para determinar su severidad (normal, advertencia, alarma, emergencia).
  • Visualizarlas en una interfaz gráfica en una tablet Android.
  • Emitir sonidos específicos según el tipo de alarma.
  • Permitir al usuario marcar las notificaciones como "leídas" o "resueltas".

2. Componentes Principales

2.1. Hardware

  • Tablet Android: Se utiliza como interfaz de usuario para mostrar las notificaciones y permitir interacción.
  • Raspberry Pi (opcional): Puede ser el dispositivo que ejecuta Node-RED si no se usa un servidor remoto.

2.2. Software

  • SignalK: Sistema de monitoreo utilizado para generar y enviar notificaciones basadas en datos del barco (voltaje, temperatura, etc.).
  • Node-RED: Plataforma de programación visual para procesar y gestionar las notificaciones.
  • Node-RED Dashboard 2.0: Para crear interfaces gráficas interactivas.
  • Plugin PlaySound: Para reproducir archivos de audio como alertas.
  • Festival TTS: Para leer mensajes en voz alta (si está instalado en el sistema).

3. Flujo de Trabajo

3.1. Recepción de Notificaciones

Nodo signalk-notification:

  • Este nodo recibe todas las notificaciones generadas por SignalK.
  • Las notificaciones pueden tener diferentes estados: normal, alert, warn, alarm, emergency.

Subflujo Gestionar Array Notificaciones:

  • Este subflujo gestiona un array global (flow.matrizNotificaciones) donde se almacenan las notificaciones activas.
  • Si una notificación ya existe en el array, se actualiza. Si es nueva, se añade.
  • Si una notificación cambia a estado normal, se elimina del array.

3.2. Procesamiento de Notificaciones

3.2.1. Filtrado por Estado

Un nodo switch filtra las notificaciones según su estado:

  • Estado no normal: Se procesan para emitir sonidos y mostrarlas en la interfaz.
  • Estado normal: Solo se actualizan en la lista de notificaciones y se eliminan del array.

3.2.2. Emisión de Sonidos

El subflujo Emitir Sonido Adecuado o Detener maneja la reproducción de sonidos según el tipo de alarma:

  • Alerta: Reproduce un sonido suave.
  • Advertencia: Reproduce un sonido moderado.
  • Alarma: Reproduce un sonido fuerte.
  • Emergencia: Reproduce un sonido crítico.
  • Stop: Detiene todos los sonidos activos.

3.2.3. Lectura en Voz Alta

Un nodo exec utiliza el comando festival --tts para leer el mensaje de la notificación en voz alta.
Esto es útil para asegurarse de que el operador esté siempre informado, incluso si no está mirando la pantalla.


3.3. Visualización en la Tablet

3.3.1. Tabla de Notificaciones

Un nodo ui-table muestra una lista de hasta 25 notificaciones recientes.
Cada fila incluye:

  • Ruta: Identificador único de la notificación.
  • Descripción: Mensaje asociado a la notificación.
  • Estado: Indicador visual para mostrar si la notificación ha sido leída.

3.3.2. Notificaciones Emergentes

Un nodo ui-notification muestra notificaciones emergentes cuando llega una nueva alarma.
El usuario puede interactuar con estas notificaciones:

  • Botón "Recibido": Confirma que la notificación ha sido vista.
  • Botón "Solucionado": Cambia el estado de la notificación a normal y la elimina del array.

3.4. Actualización de Estado en SignalK

Cuando el usuario marca una notificación como "leída" o "solucionada":

  • Se envía una señal al nodo signalk-send-notification para actualizar el estado en SignalK.
  • La notificación se elimina del array global (flow.matrizNotificaciones).

4. Implementación Detallada

4.1. Configuración Inicial

Instalar Node-RED:

  • Asegúrate de tener Node-RED instalado en tu Raspberry Pi o servidor.
  • Instala los paquetes necesarios: node-red-dashboard, node-red-contrib-play-sound, etc.

Configurar SignalK:

  • Configura SignalK para generar notificaciones basadas en tus sensores (por ejemplo, voltaje medio de baterías).

Preparar la Tablet:

  • Instala la aplicación Node-RED Dashboard en la tablet Android.
  • Conecta la tablet al mismo red WiFi que el servidor Node-RED.

4.2. Flujo en Node-RED

4.2.1. Nodo signalk-notification

  • Configura este nodo para recibir todas las notificaciones de SignalK.
  • Define reglas para filtrar notificaciones específicas si es necesario.

4.2.2. Subflujo Gestionar Array Notificaciones

  • Crea un subflujo para gestionar el array global de notificaciones.
  • Usa nodos function para:
    • Crear o actualizar el array.
    • Eliminar notificaciones resueltas.

4.2.3. Subflujo Emitir Sonido Adecuado o Detener

  • Crea un subflujo para reproducir sonidos según el tipo de alarma.
  • Usa nodos PlaySound para cargar archivos de audio específicos.

4.2.4. Nodo ui-table

  • Configura este nodo para mostrar la tabla de notificaciones.
  • Personaliza las columnas para mostrar información relevante (ruta, descripción, estado).

4.2.5. Nodo ui-notification

  • Configura este nodo para mostrar notificaciones emergentes.
  • Agrega botones para interactuar con las notificaciones:
    • "Recibido": Confirma la notificación.
    • "Solucionado": Resuelve la notificación.

4.2.6. Nodo exec

  • Configura este nodo para utilizar festival --tts y leer los mensajes en voz alta.
  • Asegúrate de que el sistema tenga instalado y configurado Festival con soporte para español.

4.3. Optimización

Debounce para Repeticiones:

  • Implementa un mecanismo de debounce para evitar repeticiones molestas de alarmas.
  • Permite que las notificaciones con estado normal pasen siempre sin aplicar el debounce.

Limpieza Automática:

  • Programa la eliminación automática de entradas viejas en el array global para mantenerlo limpio.

5. Resultados Esperados

  • Visualización Clara: Todas las notificaciones se muestran en una interfaz intuitiva en la tablet.
  • Sonidos Personalizados: Cada tipo de alarma tiene un sonido específico para facilitar la identificación.
  • Interacción Simples: El usuario puede marcar notificaciones como leídas o solucionadas con un solo clic.
  • Actualización en Tiempo Real: Las notificaciones se actualizan automáticamente en SignalK y en la interfaz de la tablet.

6. Conclusiones

Este sistema proporciona una solución robusta y personalizable para gestionar alarmas en un entorno náutico. Al combinar SignalK con Node-RED, se logra una integración fluida entre sensores, notificaciones y interfaces de usuario. La utilización de una tablet Android antigua como interfaz agrega valor al proyecto al darle un nuevo propósito a un dispositivo que de otro modo estaría inactivo.

Entrada Anterior Siguiente Entrada