Comment connecter n'importe quel sismographe SeedLink à ZejfSeis
Logiciel Seedlink_ZejfSeis. Un démon léger en C qui transmet des données en temps réel d'un serveur SeedLink vers le logiciel de visualisation ZejfSeis, en décodant les enregistrements MiniSEED au format du protocole ZejfSeis.
Si vous vous êtes déjà plongé dans le monde de la sismologie amateur ou open-source, vous savez que l'un des plus grands défis n'est pas seulement de capturer les vibrations de la terre, mais de visualiser ces données de manière claire, intuitive et en temps réel.
C'est là que brille ZejfSeis, un logiciel de visualisation extraordinaire qui traite les signaux sismiques avec une facilité déconcertante. Cependant, le projet original est né avec une limitation importante : il a été spécifiquement conçu pour fonctionner avec un matériel très précis (Arduino et les puces ADS1256/1263) via son propre protocole de communication personnalisé. Le problème ? Il restait complètement isolé de SeedLink, la norme absolue et incontestable de l'industrie en sismologie professionnelle à l'échelle mondiale.
Pour résoudre ce manque de compatibilité et réunir le meilleur des deux mondes, Seedlink_ZejfSeis V.1.0.0 vient de voir le jour.
Le pont technique : De la sismologie professionnelle à votre écran
Seedlink_ZejfSeis est un démon léger écrit en C qui agit comme un « traducteur » en temps réel. Il se connecte en tant que client à n'importe quel serveur SeedLink distant, reçoit et décode les enregistrements MiniSEED conformes aux standards de l'industrie, et les rediffuse instantanément au format du protocole natif de ZejfSeis.
┌─────────────────────┐ SeedLink v2 ┌───────────────────┐
│ Serveur SeedLink │ ◄──────────────────────────► │ seedlink_zejf │
│ distant │ HELLO/STATION/SELECT/ │ (ce programme) │
│ (ex. EqCitizen) │ DATA/END → MiniSEED v2 │ │
└─────────────────────┘ └────────┬──────────┘
│ Protocole ZejfSeis
│ (TCP, port 6222)
┌────────▼──────────┐
│ Client ZejfSeis │
│ (Java, bureau) │
└───────────────────┘
Grâce à cette approche, vous n'avez plus besoin du matériel exact pour lequel ZejfSeis a été initialement développé. Vous pouvez désormais profiter de ses puissants graphiques et de ses outils de documentation visuelle en utilisant n'importe quel sismographe ou réseau basé sur SeedLink.
Caractéristiques principales du projet
Pour garantir que le flux de données reste constant et n'interfère pas avec les performances du système, le logiciel a été conçu selon une architecture robuste et efficace :
-
Performances ultralégères en C : Développé dans un environnement multithread natif (POSIX threads) afin de garantir une latence minimale dans la transmission des ondes sismiques.
-
Décodage standardisé : Intègre la bibliothèque officielle
libmseed(version >= 3.x) pour analyser les enregistrements MiniSEED v2 et v3 sans effort. -
Consommation de stockage nulle : Répond intelligemment aux demandes de données historiques des clients par des blocs vides. Tout le traitement s'effectue entièrement en mémoire vive ; aucun espace disque n'est requis.
-
Support multi-client massif : Capable d'alimenter jusqu'à 32 clients ZejfSeis simultanément à partir d'une seule source SeedLink.
-
Résilience réseau : Dispose d'un système de reconnexion automatique après 5 secondes si le serveur SeedLink distant subit des micro-coupures, en plus d'envoyer de manière proactive des heartbeats (battements de cœur) dynamiques toutes les 2 secondes pour éviter le dépassement de délai (timeout) de lecture des sockets côté client.
-
Configuration externe via JSON : Oubliez la recompilation du code à chaque fois que vous souhaitez changer de station. Les paramètres tels que l'hôte, le port, le réseau, la station et le canal sont facilement gérés depuis un fichier
ranges.json.
Prêt pour la production et les environnements sécurisés
Un détail critique qui distingue ce projet d'autres développements amateurs est son attention rigoureuse portée à la sécurité et à la stabilité du déploiement. Lors de l'exposition de n'importe quel service sur un réseau, la résilience est fondamentale. Par conséquent, le projet documente et intègre des directives de durcissement (hardening) de l'infrastructure dès le départ :
Utilisation de Nginx comme proxy inversé : Plutôt que d'exposer directement le port natif du binaire en C au réseau public Internet, l'utilisation de Nginx en mode
stream(TCP) est fortement recommandée. Cela permet d'atténuer les abus et les attaques DoS en limitant les connexions simultanées par IP (limit_conn) et isole le service en C pour qu'il écoute exclusivement sur l'environnement local (127.0.0.1).
De plus, une couche de mitigation contre les abus automatisés est incluse en utilisant Fail2ban. En surveillant les journaux de connexion (logs) générés par Nginx, le système peut détecter les clients qui enchaînent les connexions de manière anormale ou effectuent des scans de force brute malveillants, les bloquant temporairement via des règles de pare-feu (firewall) au niveau du système d'exploitation.
Conclusion : Démocratiser l'accès aux données sismiques
La véritable valeur de Seedlink_ZejfSeis réside dans son accessibilité. En ouvrant un écosystème fermé de protocoles personnalisés, tout passionné de sismologie, station éducative ou nœud de réseau de surveillance citoyenne (comme le projet EqCitizen) peut exploiter le plein potentiel de l'interface ZejfSeis.
Le projet a déjà été testé avec succès dans des environnements Linux sous Ubuntu 24.04.4 LTS. Si vous souhaitez le déployer sur votre propre serveur ou examiner le code source, vous trouverez toute la documentation technique, les étapes de compilation et les exemples de configuration textuellement dans le fichier seedlink_zejf_README.md au sein du dépôt.
https://github.com/vivesweb/Seedlink_ZejfSeis