From 0f918ebccdb06c7eb53df3dae009a33fa646c0c1 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Tue, 28 Oct 2025 19:05:36 +0000 Subject: [PATCH] Add documentation for WSJT-X and JS8Call integration Co-authored-by: SpudGunMan <12676665+SpudGunMan@users.noreply.github.com> --- README.md | 2 + modules/README.md | 93 ++++++++++++++++++++++++++++++++++++++++++++++- 2 files changed, 94 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index b7cecee..a22552d 100644 --- a/README.md +++ b/README.md @@ -56,6 +56,8 @@ Mesh Bot is a feature-rich Python bot designed to enhance your [Meshtastic](http - **SNR RF Activity Alerts**: Monitor radio frequencies and receive alerts when high SNR (Signal-to-Noise Ratio) activity is detected. - **Hamlib Integration**: Use Hamlib (rigctld) to monitor the S meter on a connected radio. - **Speech-to-Text Broadcasting**: Convert received audio to text using [Vosk](https://alphacephei.com/vosk/models) and broadcast it to the mesh. +- **WSJT-X Integration**: Monitor WSJT-X (FT8, FT4, WSPR, etc.) decode messages and forward them to the mesh network with optional callsign filtering. +- **JS8Call Integration**: Monitor JS8Call messages and forward them to the mesh network with optional callsign filtering. ### Check-In / Check-Out & Asset Tracking - **Asset Tracking**: Maintain a check-in/check-out list for nodes or assets—ideal for accountability of people and equipment (e.g., Radio-Net, FEMA, trailhead groups). diff --git a/modules/README.md b/modules/README.md index f1a0632..980dbc3 100644 --- a/modules/README.md +++ b/modules/README.md @@ -218,11 +218,77 @@ Configure in `[fileMon]` section of `config.ini`. ## Radio Monitoring +The Radio Monitoring module provides several ways to integrate amateur radio software with the mesh network. + +### Hamlib Integration + | Command | Description | |--------------|-----------------------------------------------| | `radio` | Monitor radio SNR via Hamlib | -Configure in `[radioMon]` section of `config.ini`. +Monitors signal strength (S-meter) from a connected radio via Hamlib's `rigctld` daemon. When the signal exceeds a configured threshold, it broadcasts an alert to the mesh network with frequency and signal strength information. + +### WSJT-X Integration + +Monitors WSJT-X decode messages (FT8, FT4, WSPR, etc.) via UDP and forwards them to the mesh network. You can optionally filter by specific callsigns. + +**Features:** +- Listens to WSJT-X UDP broadcasts (default port 2237) +- Decodes WSJT-X protocol messages +- Filters by watched callsigns (or monitors all if no filter is set) +- Forwards decode messages with SNR information to configured mesh channels + +**Example Output:** +``` +WSJT-X FT8: CQ K7MHI CN87 (+12dB) +``` + +### JS8Call Integration + +Monitors JS8Call messages via TCP API and forwards them to the mesh network. You can optionally filter by specific callsigns. + +**Features:** +- Connects to JS8Call TCP API (default port 2442) +- Listens for directed and activity messages +- Filters by watched callsigns (or monitors all if no filter is set) +- Forwards messages with SNR information to configured mesh channels + +**Example Output:** +``` +JS8Call from W1ABC: HELLO WORLD (+8dB) +``` + +### Configuration + +Configure all radio monitoring features in the `[radioMon]` section of `config.ini`: + +```ini +[radioMon] +# Hamlib monitoring +enabled = False +rigControlServerAddress = localhost:4532 +signalDetectionThreshold = -10 + +# WSJT-X monitoring +wsjtxDetectionEnabled = False +wsjtxUdpServerAddress = 127.0.0.1:2237 +wsjtxWatchedCallsigns = K7MHI,W1AW + +# JS8Call monitoring +js8callDetectionEnabled = False +js8callServerAddress = 127.0.0.1:2442 +js8callWatchedCallsigns = K7MHI,W1AW + +# Broadcast settings (shared by all radio monitoring) +sigWatchBroadcastCh = 2 +sigWatchBroadcastInterface = 1 +``` + +**Configuration Notes:** +- Leave `wsjtxWatchedCallsigns` or `js8callWatchedCallsigns` empty to monitor all callsigns +- Callsigns are comma-separated, case-insensitive +- Both services can run simultaneously +- Messages are broadcast to the same channels as Hamlib alerts --- @@ -794,8 +860,11 @@ The bot will automatically extract and truncate content to fit Meshtastic's mess ### Radio Monitoring A module allowing a Hamlib compatible radio to connect to the bot. When functioning, it will message the configured channel with a message of in use. **Requires hamlib/rigctld to be running as a service.** +Additionally, the module supports monitoring WSJT-X and JS8Call for amateur radio digital modes. + ```ini [radioMon] +# Hamlib monitoring enabled = True rigControlServerAddress = localhost:4532 sigWatchBroadcastCh = 2 # channel to broadcast to can be 2,3 @@ -803,8 +872,30 @@ signalDetectionThreshold = -10 # minimum SNR as reported by radio via hamlib signalHoldTime = 10 # hold time for high SNR signalCooldown = 5 # the following are combined to reset the monitor signalCycleLimit = 5 + +# WSJT-X monitoring (FT8, FT4, WSPR, etc.) +# Monitors WSJT-X UDP broadcasts and forwards decode messages to mesh +wsjtxDetectionEnabled = False +wsjtxUdpServerAddress = 127.0.0.1:2237 # UDP address and port where WSJT-X broadcasts +wsjtxWatchedCallsigns = # Comma-separated list of callsigns to watch (empty = all) + +# JS8Call monitoring +# Connects to JS8Call TCP API and forwards messages to mesh +js8callDetectionEnabled = False +js8callServerAddress = 127.0.0.1:2442 # TCP address and port where JS8Call API listens +js8callWatchedCallsigns = # Comma-separated list of callsigns to watch (empty = all) + +# Broadcast settings (shared by Hamlib, WSJT-X, and JS8Call) +sigWatchBroadcastInterface = 1 ``` +**Setup Notes:** +- **WSJT-X**: Enable UDP Server in WSJT-X settings (File → Settings → Reporting → Enable UDP Server) +- **JS8Call**: Enable TCP Server in JS8Call settings (File → Settings → Reporting → Enable TCP Server API) +- Both services can run simultaneously +- Leave callsign filters empty to monitor all activity +- Callsigns are case-insensitive and comma-separated (e.g., `K7MHI,W1AW`) + ### File Monitoring Some dev notes for ideas of use