Real-time Acquisition
Continuous 100 SPS sampling with CRC-32 checksum validation for every packet.
The RPI-Seism daemon is the central nervous system of the project. It is a high-performance, multi-threaded Python application designed to acquire, process, store, and broadcast triaxial seismic data in real-time.
The daemon acts as the bridge between raw hardware signals and high-level data analysis tools. It manages the high-speed RS-422 serial stream from the MCU and distributes it to specialized processing threads.
Real-time Acquisition
Continuous 100 SPS sampling with CRC-32 checksum validation for every packet.
Standardized Storage
Writes to SDS (SeisComP Data Structure) in MiniSEED format with automatic midnight splits.
Live Streaming
Websocket server (ws://8765) broadcasting 4× decimated (25 Hz) filtered data.
Smart Alerts
Integrated STA/LTA trigger engine with Apprise support (Telegram, Email, etc.).
Installation
Clone the repo and sync dependencies using uv:
git clone https://github.com/rpi-seism/rpi-seism-daemon.gitcd rpi-seism-daemonuv syncInitial Configuration
Running the daemon for the first time generates a default config.yml:
mkdir -p datauv run rpi-seismnano data/config.ymlDeployment
uv run rpi-seismThe daemon utilizes five concurrent threads to ensure no data loss during heavy I/O operations:
| Thread | Responsibility | Output |
|---|---|---|
| Reader | Serial parsing & CRC validation | Internal Queues |
| MSeedWriter | SDS Archival (MiniSEED) | /data/archive/ |
| WSSender | Decimation & Live Broadcast | ws://port:8765 |
| Trigger | STA/LTA Event Detection | Earthquake Event |
| Notifier | Alert Delivery (Apprise) | Telegram/Email |
YEAR/NET/STA/CHAN.D/.