Com connectar qualsevol sismògraf SeedLink a ZejfSeis

 

Programari Seedlink_ZejfSeis. Un dimoni lleuger en C que transmet dades en temps real des d'un servidor SeedLink al programari de visualització ZejfSeis, descodificant registres MiniSEED al format del protocol ZejfSeis.

 

Com connectar qualsevol sismògraf SeedLink a ZejfSeis

Com connectar qualsevol sismògraf SeedLink a ZejfSeis
Temps de lectura: 4 minuts

Si alguna vegada t'has sumergit en el món de la sismologia casolana o de codi obert, sabràs que un dels majors reptes no és només capturar el tremolor de la terra, sinó visualitzar aquestes dades de forma clara, intuïtiva i en temps real.

Aquí és on brilla ZejfSeis, un programari de visualització extraordinari que processa senyals sísmics amb una facilitat sorprenent. Tot i això, el projecte original va néixer amb una limitación important: va ser dissenyat específicament per funcionar amb un maquinari molt concret (Arduino i els xips ADS1256/1263) mitjançant un protocol de comunicació propi. El problema? Que es quedava completament aïllat de SeedLink, l'estàndard absolut i indiscutible de la sismologia professional a nivell mundial.

Per resoldre aquesta manca de compatibilitat i unir el millor de tots dos mons, acaba de néixer Seedlink_ZejfSeis V.1.0.0.

El pont tècnic: De la sismologia professional a la teva pantalla

Seedlink_ZejfSeis és un dimoni lleuger escrit en C que actua com un "traductor" en temps real. Es connecta com a client a qualsevol servidor SeedLink remot, rep i descodifica els registres MiniSEED estàndard del sector i, de forma instantània, els retransmet utilitzant el protocol natiu de ZejfSeis.

┌─────────────────────┐        Protocol SeedLink        ┌───────────────────┐
│  Servidor SeedLink  │ ◄─────────────────────────────► │  seedlink_zejf    │
│  (Qualsevol font)   │      MiniSEED (v2/v3)           │    (El Pont)      │
└─────────────────────┘                                 └────────┬──────────┘
                                                                 │ Protocol ZejfSeis
                                                                 │ (TCP, port 6222)
                                                        ┌────────▼──────────┐
                                                        │  Client ZejfSeis  │
                                                        │  (Visualització)  │
                                                        └───────────────────┘

Gràcies a aquest enfocament, ja no necessites el maquinari exacte per al qual es va desenvolupar ZejfSeis. Ara pots gaudir dels seus potents gràfics i eines de documentació visual utilitzant qualsevol sismògraf o xarxa basada en SeedLink.

Característiques principals del projecte

Per assegurar que el flux de dades sigui constant i no interfereixi amb el rendiment del sistema, el programari s'ha dissenyat sota una arquitectura robusta i eficient:

  • Rendiment ultralleuger en C: Desenvolupat sobre un entorn multifil natiu (POSIX threads) per garantir una latència mínima en el lliurament de les ones sísmiques.

  • Descodificació estàndard: Integra la biblioteca oficial libmseed (versió >= 3.x) per analitzar registres MiniSEED v2 i v3 sense immutar-se.

  • Consum d'emmagatzematge zero: Respon de forma intel·ligent a les peticions de dades històriques dels clients amb blocs buits. Tot el processament ocorre en memòria viva; no requereix espai al disc.

  • Suport multi-client massiu: Capaç d'alimentar fins a 32 clients ZejfSeis de forma simultània a partir d'una única font SeedLink.

  • Resiliència de xarxa: Compta amb un sistema de reconexió automàtica de 5 segons si el servidor SeedLink remot experimenta microtalls, a més d'enviar heartbeats dinàmics cada 2 segons per evitar la congelació dels sockets de lectura.

  • Configuració externa via JSON: Oblida't de recompilar el codi cada vegada que vulguis canviar d'estació. Els paràmetres com el host, port, xarxa, estació i canal es gestionen còmodament des d'un fitxer ranges.json.

Preparat per a producció i entorns segurs

Un detall crític que diferencia aquest projecte d'altres desenvolupaments casolans és el seu enfocament en la seguretat i l'estabilitat de desplegament. En exposar un servei en xarxa, la resiliència és fonamental. Per això, el projecte documenta i integra directrius d'enduriment d'infraestructura:

Ús de Nginx com a Proxy Invers: En lloc d'exposar directament el binari en C a internet, es proposa l'ús de Nginx en mode stream (TCP). Això permet mitigar atacs DoS limitant les connexions simultànies per IP (limit_conn) i aïllar el servei perquè escolti exclusivament en entorn local (127.0.0.1).

Addicionalment, s'inclou una capa de mitigació contra abusos automatitzats mitjançant Fail2ban. En analitzar els registres (logs) generats per Nginx, el sistema és capaç de detectar clients que ciclen connexions de manera anòmala o escanejos maliciosos, bloquejant-los temporalmente mitjançant regles de tallafocs (firewall) a nivell de sistema operatiu.

Conclusió: Democratitzant l'accés a les dades sísmiques

El vertader valor de Seedlink_ZejfSeis rau en l'accessibilitat. En trencar l'ecosistema tancat de protocols, qualsevol entusiasta de la sismologia, estació educativa o node de xarxes de monitoratge ciutadà (com el projecte EqCitizen) pot aprofitar el potencial de la interfície de ZejfSeis.

El projecte ja ha estat testejat amb èxit en entorns Linux sota Ubuntu 24.04.4 LTS. Si vols desplegar-lo al teu propi servidor o revisar el codi font, pots trobar tota la documentació tècnica, els passos de compilació i els exemples de configuració al seu repositori de GitHub.

https://github.com/vivesweb/Seedlink_ZejfSeis





Altres entrades de bloc relacionades: