Cómo conectar cualquier sismógrafo SeedLink a ZejfSeis

 

Software Seedlink_ZejfSeis. Un demonio ligero en C que transmite datos en tiempo real desde un servidor SeedLink al software de visualización ZejfSeis, decodificando registros MiniSEED al formato del protocolo ZejfSeis.

 

Cómo conectar cualquier sismógrafo SeedLink a ZejfSeis

Cómo conectar cualquier sismógrafo SeedLink a ZejfSeis
Tiempo de lectura: 4 minutos

Si alguna vez te has sumergido en el mundo de la sismología casera o de código abierto, sabrás que uno de los mayores desafíos no es solo capturar el temblor de la tierra, sino visualizar esos datos de forma clara, intuitiva y en tiempo real.

Ahí es donde brilla ZejfSeis, un software de visualización extraordinario que procesa señales sísmicas con una facilidad pasmosa. Sin embargo, el proyecto original nació con una limitación importante: fue diseñado específicamente para funcionar con hardware muy concreto (Arduino y los chips ADS1256/1263) mediante un protocolo de comunicación propio. ¿El problema? Que se quedaba completamente aislado de SeedLink, el estándar absoluto e indiscutible de la sismología profesional a nivel mundial.

Para resolver esta falta de compatibilidad y unir lo mejor de ambos mundos, acaba de nacer Seedlink_ZejfSeis V.1.0.0.

El puente técnico: De la sismología profesional a tu pantalla

Seedlink_ZejfSeis es un demonio ligero escrito en C que actúa como un "traductor" en tiempo real. Se conecta como cliente a cualquier servidor SeedLink remoto, recibe y decodifica los registros MiniSEED estándar del sector y, de forma instantánea, los retransmite usando el protocolo nativo de ZejfSeis.

┌─────────────────────┐        Protocolo SeedLink       ┌───────────────────┐
│  Servidor SeedLink  │ ◄─────────────────────────────► │  seedlink_zejf    │
│  (Cualquier fuente) │      MiniSEED (v2/v3)           │   (El Puente)     │
└─────────────────────┘                                 └────────┬──────────┘
                                                                 │ Protocolo ZejfSeis
                                                                 │ (TCP, puerto 6222)
                                                        ┌────────▼──────────┐
                                                        │  Cliente ZejfSeis │
                                                        │  (Visualización)  │
                                                        └───────────────────┘

Gracias a este enfoque, ya no necesitas el hardware exacto para el que se desarrolló ZejfSeis. Ahora puedes disfrutar de sus potentes gráficos y herramientas de documentación visual utilizando cualquier sismógrafo o red basada en SeedLink.

Características principales del proyecto

Para asegurar que el flujo de datos sea constante y no interfiera con el rendimiento del sistema, el software se ha diseñado bajo una arquitectura robusta y eficiente:

  • Rendimiento ultraligero en C: Desarrollado sobre un entorno multihilo nativo (POSIX threads) para garantizar latencia mínima en la entrega de las ondas sísmicas.

  • Decodificación estándar: Integra la biblioteca oficial libmseed (versión >= 3.x) para parsear registros MiniSEED v2 y v3 sin despeinarse.

  • Consumo de almacenamiento cero: Responde de forma inteligente a las peticiones de datos históricos de los clientes con bloques vacíos. Todo el procesamiento ocurre en memoria viva; no requiere espacio en disco.

  • Soporte multi-cliente masivo: Capaz de alimentar hasta a 32 clientes ZejfSeis de forma simultánea a partir de una única fuente SeedLink.

  • Resiliencia de red: Cuenta con un sistema de reconexión automática de 5 segundos si el servidor SeedLink remoto experimenta microcortes, además de enviar heartbeats dinámicos cada 2 segundos para evitar la congelación de los sockets de lectura.

  • Configuración externa vía JSON: Olvídate de recompilar el código cada vez que quieras cambiar de estación. Los parámetros como el host, puerto, red, estación y canal se gestionan cómodamente desde un archivo ranges.json.

Preparado para producción y entornos seguros

Un detalle crítico que diferencia a este proyecto de otros desarrollos caseros es su enfoque en la seguridad y la estabilidad de despliegue. Al exponer un servicio en red, la resiliencia es fundamental. Por ello, el proyecto documenta e integra directrices de endurecimiento de infraestructura:

Uso de Nginx como Proxy Inverso: En lugar de exponer directamente el binario en C a internet, se propone el uso de Nginx en modo stream (TCP). Esto permite mitigar ataques DoS limitando las conexiones simultáneas por IP (limit_conn) y aislar el servicio para que escuche exclusivamente en entorno local (127.0.0.1).

Adicionalmente, se incluye una capa de mitigación contra abusos automatizados mediante Fail2ban. Al analizar los logs generados por Nginx, el sistema es capaz de detectar clientes que ciclan conexiones de manera anómala o escaneos maliciosos, bloqueándolos temporalmente mediante reglas de firewall a nivel de sistema operativo.

Conclusión: Democratizando el acceso a los datos sísmicos

El verdadero valor de Seedlink_ZejfSeis radica en la accesibilidad. Al romper el ecosistema cerrado de protocolos, cualquier entusiasta de la sismología, estación educativa o nodo de redes de monitoreo ciudadano (como el proyecto EqCitizen) puede aprovechar el potencial de la interfaz de ZejfSeis.

El proyecto ya ha sido testeado con éxito en entornos Linux bajo Ubuntu 24.04.4 LTS. Si quieres desplegarlo en tu propio servidor o revisar el código fuente, puedes encontrar toda la documentación técnica, los pasos de compilación y los ejemplos de configuración en su repositorio de GitHub.

https://github.com/vivesweb/Seedlink_ZejfSeis





Otras entradas de blog relacionadas: