Wie man ein beliebiges SeedLink-Seismometer mit ZejfSeis verbindet
Software Seedlink_ZejfSeis. Ein schlanker C-Daemon, der Echtzeitdaten von einem SeedLink-Server an die ZejfSeis-Visualisierungssoftware streamt und dabei MiniSEED-Datensätze in das ZejfSeis-Protokollformat dekodiert.
Wenn Sie jemals in die Welt der Amateur- oder Open-Source-Seismologie eingetaucht sind, wissen Sie, dass eine der größten Herausforderungen nicht nur das Erfassen der Erderschütterungen ist, sondern diese Daten klar, intuitiv und in Echtzeit zu visualisieren.
Hier glänzt ZejfSeis – eine außergewöhnliche Visualisierungssoftware, die seismische Signale mit erstaunlicher Leichtigkeit verarbeitet. Das ursprüngliche Projekt hatte jedoch eine erhebliche Einschränkung: Es wurde speziell für eine sehr spezifische Hardware (Arduino und die Chips ADS1256/1263) über ein eigenes, maßgeschneidertes Kommunikationsprotokoll entwickelt. Das Problem? Es blieb völlig isoliert von SeedLink, dem absoluten und unbestrittenen Industriestandard in der professionellen Seismologie weltweit.
Um diese mangelnde Kompatibilität zu beheben und das Beste aus beiden Welten zusammenzubringen, wurde gerade Seedlink_ZejfSeis V.1.0.0 ins Leben gerufen.
Die technische Brücke: Von der professionellen Seismologie auf Ihren Bildschirm
Seedlink_ZejfSeis ist ein leichtgewichtiger, in C geschriebener Daemon, der als Echtzeit-„Übersetzer“ fungiert. Er verbindet sich als Client mit einem beliebigen entfernten SeedLink-Server, empfängt und dekodiert MiniSEED-Datensätze nach Industriestandard und leitet sie sofort im nativen ZejfSeis-Protokollformat weiter.
┌─────────────────────┐ SeedLink v2 ┌───────────────────┐
│ Entfernter SeedLink │ ◄──────────────────────────► │ seedlink_zejf │
│ Server │ HELLO/STATION/SELECT/ │ (dieses Programm)│
│ (z. B. EqCitizen) │ DATA/END → MiniSEED v2 │ │
└─────────────────────┘ └────────┬──────────┘
│ ZejfSeis-Protokoll
│ (TCP, Port 6222)
┌────────▼──────────┐
│ ZejfSeis-Client │
│ (Java, Desktop) │
└───────────────────┘
Dank dieses Ansatzes benötigen Sie nicht mehr genau die Hardware, für die ZejfSeis ursprünglich entwickelt wurde. Jetzt können Sie die leistungsstarken Grafik- und visuellen Dokumentationswerkzeuge mit jedem SeedLink-basierten Seismographen oder Netzwerk nutzen.
Hauptmerkmale des Projekts
Um sicherzustellen, dass der Datenfluss konstant bleibt und die Systemleistung nicht beeinträchtigt wird, wurde die Software unter einer robusten und effizienten Architektur entwickelt:
-
Ultraleichte Performance in C: Entwickelt in einer nativen Multi-Threaded-Umgebung (POSIX-Threads), um eine minimale Latenz bei der Bereitstellung seismischer Wellen zu garantieren.
-
Standard-Dekodierung: Integriert die offizielle
libmseed-Bibliothek (Version >= 3.x), um MiniSEED-v2- und v3-Datensätze mühelos zu parsen. -
Null Speicherverbrauch: Reagiert intelligent auf historische Datenanfragen von Clients mit leeren Blöcken. Die gesamte Verarbeitung findet im Live-Arbeitsspeicher statt; es wird absolut kein Festplattenspeicher benötigt.
-
Massive Multi-Client-Unterstützung: Kann bis zu 32 ZejfSeis-Clients gleichzeitig aus einer einzigen SeedLink-Quelle speisen.
-
Netzwerk-Resilienz: Verfügt über ein automatisches 5-Sekunden-Wiederverbindungssystem, falls der entfernte SeedLink-Server Mikrausfälle erleidet, und sendet proaktiv alle 2 Sekunden dynamische Heartbeats, um clientseitige Lese-Timeouts der Sockets zu verhindern.
-
Externe Konfiguration über JSON: Vergessen Sie das Neukompilieren des Codes bei jedem Stationswechsel. Parameter wie Host, Port, Netzwerk, Station und Kanal lassen sich einfach über eine
ranges.json-Datei verwalten.
Bereit für Produktion und sichere Umgebungen
Ein kritisches Detail, das dieses Projekt von anderen Hobby-Entwicklungen unterscheidet, ist der starke Fokus auf Sicherheit und Bereitstellungsstabilität. Wenn man einen Dienst über ein Netzwerk bereitstellt, ist Resilienz von grundlegender Bedeutung. Daher dokumentiert und integriert das Projekt von Anfang an Richtlinien zur Härtung der Infrastruktur:
Nginx als Reverse Proxy nutzen: Anstatt den nativen Port des C-Binaries direkt dem öffentlichen Internet auszusetzen, wird die Verwendung von Nginx im TCP-
stream-Modus dringend empfohlen. Dies hilft, Missbrauch und DoS-Angriffe zu reduzieren, indem die gleichzeitigen Verbindungen pro IP beschränkt werden (limit_conn), und isoliert den C-Dienst so, dass er ausschließlich auf der lokalen Umgebung (127.0.0.1) lauscht.
Zusätzlich ist eine Schutzschicht gegen automatisierten Missbrauch mittels Fail2ban enthalten. Durch die Überwachung der von Nginx generierten Verbindungsprotokolle (Logs) kann das System Clients erkennen, die Verbindungen abnormal zyklisch aufbauen oder böswillige Brute-Force-Scans durchführen, und diese vorübergehend über Firewall-Regeln auf Betriebssystemebene blockieren.
Fazit: Demokratisierung des Zugangs zu seismischen Daten
Der wahre Wert von Seedlink_ZejfSeis liegt in seiner Zugänglichkeit. Durch das Aufbrechen eines geschlossenen Ökosystems maßgeschneiderter Protokolle kann jeder Seismologie-Enthusiast, jede Bildungsstation oder jeder Knotenpunkt eines Bürger-Überwachungsnetzwerks (wie das Projekt EqCitizen) das volle Potenzial der ZejfSeis-Benutzeroberfläche nutzen.
Das Projekt wurde bereits erfolgreich in Linux-Umgebungen unter Ubuntu 24.04.4 LTS getestet. Wenn Sie es auf Ihrem eigenen Server bereitstellen oder den Quellcode überprüfen möchten, finden Sie die gesamte technische Dokumentation, die Kompilierungsschritte und die Konfigurationsbeispiele wortwörtlich in der Datei seedlink_zejf_README.md innerhalb des Repositories.
https://github.com/vivesweb/Seedlink_ZejfSeis