Hoe je elke SeedLink-seismograaf met ZejfSeis verbindt
Software Seedlink_ZejfSeis. Een lichtgewicht C-daemon die realtimegegevens van een SeedLink-server streamt naar de ZejfSeis-visualisatiesoftware, waarbij MiniSEED-records worden gedecodeerd naar het ZejfSeis-protocolformaat.
Als je je ooit hebt verdiept in de wereld van de amateur- of open-source seismologie, dan weet je dat een van de grootste uitdagingen niet alleen het vastleggen van de trillingen van de aarde is, maar om deze gegevens helder, intuïtief en in real-time te visualiseren.
Dit is waar ZejfSeis uitblinkt – buitengewone visualisatiesoftware die seismische signalen met verbazingwekkend gemak verwerkt. Het oorspronkelijke project had echter een aanzienlijke beperking: het was specifiek ontworpen om te werken met zeer specifieke hardware (Arduino en de ADS1256/1263-chips) via een eigen, op maat gemaakt communicatieprotocol. Het probleem? Het bleef volledig geïsoleerd van SeedLink, de absolute en onbetwiste industriestandaard in de professionele seismologie wereldwijd.
Om dit gebrek aan compatibiliteit op te lossen en het beste van twee werelden samen te brengen, is zojuist Seedlink_ZejfSeis V.1.0.0 geboren.
De technische brug: Van professionele seismologie naar jouw scherm
Seedlink_ZejfSeis is een lichtgewicht daemon geschreven in C die fungeert als een real-time "vertaler". Het maakt als client verbinding met een externe SeedLink-server, ontvangt en decodeert MiniSEED-records volgens de industriestandaard, en zendt deze onmiddellijk opnieuw uit in het native ZejfSeis-protocolformaat.
โโโโโโโโโโโโโโโโโโโโโโโ SeedLink v2 โโโโโโโโโโโโโโโโโโโโโ
โ Externe SeedLink โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโบ โ seedlink_zejf โ
โ Server โ HELLO/STATION/SELECT/ โ (dit programma) โ
โ (bijv. EqCitizen) โ DATA/END → MiniSEED v2 โ โ
โโโโโโโโโโโโโโโโโโโโโโโ โโโโโโโโโโฌโโโโโโโโโโโ
โ ZejfSeis-protocol
โ (TCP, poort 6222)
โโโโโโโโโโผโโโโโโโโโโโ
โ ZejfSeis-client โ
โ (Java, desktop) โ
โโโโโโโโโโโโโโโโโโโโโ
Dankzij deze aanpak heb je niet langer de exacte hardware nodig waarvoor ZejfSeis oorspronkelijk is ontwikkeld. Nu kun je genieten van de krachtige grafieken en visuele documentatietools met elke op SeedLink gebaseerde seismograaf of netwerk.
Belangrijkste kenmerken van het project
Om ervoor te zorgen dat de datastroom constant blijft und de systeemprestaties niet nadelig worden beïnvloed, is de software ontworpen met een robuuste en efficiënte architectuur:
-
Ultralichte prestaties in C: Ontwikkeld in een native multi-threaded omgeving (POSIX-threads) om een minimale latentie te garanderen bij het leveren van seismische golven.
-
Standaard decodering: Integreert de officiële
libmseed-bibliotheek (versie >= 3.x) om MiniSEED v2- en v3-records moeiteloos te parsen. -
Nul opslagverbruik: Reageert intelligent op verzoeken om historische gegevens van clients met lege blokken. Alle verwerking vindt volledig plaats in het live werkgeheugen; er is absoluut geen schijfruimte vereist.
-
Massale multi-client ondersteuning: In staat om tot 32 ZejfSeis-clients tegelijkertijd te voeden vanuit een enkele SeedLink-bron.
-
Netwerkveerkracht: Beschikt over een automatisch herverbindingssysteem van 5 seconden als de externe SeedLink-server micro-onderbrekingen ervaart, naast het proactief verzenden van dynamische heartbeats elke 2 seconden om client-side socket lees-timeouts te voorkomen.
-
Externe configuratie via JSON: Vergeet het hercompileren van de code telkens wanneer je van station wilt wisselen. Parameters zoals host, poort, netwerk, station en kanaal zijn eenvoudig te beheren vanuit een
ranges.json-bestand.
Klaar voor productie en veilige omgevingen
Een kritiek detail dat dit project onderscheidt van andere hobby-ontwikkelingen is de sterke focus op veiligheid en stabiliteit bij de implementatie. Wanneer je een dienst via een netwerk aanbiedt, is veerkracht fundamenteel. Daarom documenteert en integreert het project vanaf het begin richtlijnen voor het harden (hardening) van de infrastructuur:
Nginx gebruiken als Reverse Proxy: In plaats van de native poort van de C-binary rechtstreeks aan het openbare internet bloot te stellen, wordt het ten zeerste aanbevolen om Nginx in TCP
stream-modus te gebruiken. Dit helpt misbruik en DoS-aanvallen te verminderen door het aantal gelijktijdige verbindingen per IP te beperken (limit_conn) en isoleert de C-dienst zodat deze exclusief luistert op de lokale omgeving (127.0.0.1).
Bovendien is een beschermingslaag tegen geautomatiseerd misbruik inbegrepen met behulp van Fail2ban. Door de verbindingslogs te monitoren die door Nginx worden gegenereerd, kan het systeem clients detecteren die verbindingen op een abnormaal cyclische manier openen of kwaadaardige brute-force scans uitvoeren, en deze tijdelijk blokkeren via firewallregels op besturingssysteemniveau.
Conclusie: Democratisering van de toegang tot seismische gegevens
De echte waarde van Seedlink_ZejfSeis ligt in de toegankelijkheid. Door een gesloten ecosysteem van aangepaste protocollen open te breken, kan elke seismologieliefhebber, elk educatief station of elk knooppunt in netwerken voor burgerbemonitoring (zoals het project EqCitizen) ten volle profiteren van de ZejfSeis-interface.
Het project is al met succes getest in Linux-omgevingen onder Ubuntu 24.04.4 LTS. Als je het op je eigen server wilt implementeren of de broncode wilt bekijken, vind je alle technische documentatie, compilatiestappen en configuratievoorbeelden woordelijk in het bestand seedlink_zejf_README.md binnen de repository.
https://github.com/vivesweb/Seedlink_ZejfSeis