This project is a Python plugin for the APRSD server daemon written by Craig Lamparter. The plugin provides integration with Slack, allowing APRS messages and location data to be forwarded to Slack channels.
The plugin includes three main components:
- Location Plugin - Reports APRS location data to Slack channels with weather information
- Message Plugin - Forwards APRS messages to Slack channels
- Notify Plugin - Sends notifications when watched callsigns appear on APRS
- Python 3.11+
- APRSD - APRS daemon server
- Slack Bot Token and Signing Secret (see setup instructions below)
Install the plugin using pip:
pip install aprsd-slack-pluginOr install from source:
git clone https://github.com/hemna/aprsd-slack-plugin.git
cd aprsd-slack-plugin
pip install -e .Before configuring the plugin, you need to create a Slack bot application:
-
Go to api.slack.com and create a new app
-
A good guide for creating the app, tokens, and permissions can be found at: https://api.slack.com/start/building/bolt-python
-
You will need:
- Signing Secret: Found in "Basic Information" β "App Credentials"
- Bot User OAuth Token: Found in "OAuth & Permissions" β "OAuth Tokens for Your Team" β "Bot User OAuth Access Token"
-
Required Bot Token Scopes:
chat:write- To post messages to channelschannels:read(optional) - To read channel information
-
Install the app/bot into your workspace
Add the following section to your APRSD configuration file (typically ~/.config/aprsd/aprsd.conf or ~/.config/aprsd/aprsd.yml):
aprsd_slack_plugin:
signing_secret: "your_slack_signing_secret_here"
bot_token: "xoxb-your-bot-token-here"
channels:
- "#general"
- "#aprs"
- "#hamradio"[aprsd_slack_plugin]
signing_secret = your_slack_signing_secret_here
bot_token = xoxb-your-bot-token-here
channels = #general,#aprs,#hamradiosigning_secret(required): Your Slack app's signing secret from the App Credentials pagebot_token(required): Your Slack bot's OAuth token (starts withxoxb-)channels(required): List of Slack channel names (with or without#prefix) where messages will be posted
Once configured, the plugin will automatically integrate with APRSD. The plugins respond to specific APRS message commands:
The Location Plugin responds to messages starting with L or l and reports the location of a callsign to Slack.
Command Format:
L [callsign]
Examples:
-
Get your own location:
L -
Get location for a specific callsign:
L N0CALL
Slack Output: The plugin will post a formatted message to your configured Slack channels with:
- Callsign with link to aprs.fi
- Location description (from weather.gov if in US)
- Map link to aprs.fi
- Altitude in feet
- Time since last update
Example Slack Message:
APRSD - Slack Location Plugin
π N0CALL - Location
Location: Downtown Denver, CO
Map Location: http://aprs.fi/...
Altitude: 5280 ft
Time: 2.3 h ago
The Message Plugin forwards APRS messages to Slack channels.
Command Format:
s <message>
slack <message>
Examples:
-
Send a simple message:
s Hello from APRS! -
Send a longer message:
slack Testing the Slack integration
Slack Output: The plugin will post a message showing the callsign and message content:
APRSD - Slack Message Plugin
π‘ N0CALL says s Hello from APRS!
The Notify Plugin automatically sends notifications when callsigns on your watchlist appear on APRS.
Setup: Add callsigns to your APRSD watchlist configuration. When those callsigns appear on APRS, the plugin will automatically notify your Slack channels.
Slack Output:
APRSD - Slack Notification Plugin
π‘ N0CALL - Is now on APRS
APRS Message:
L
Slack Output:
APRSD - Slack Location Plugin
π N0CALL - Location
Location: Mountain View, CA
Map Location: http://aprs.fi/#!mt=roadmap&z=15&lat=37.4056&lng=-122.0775
Altitude: 150 ft
Time: 0.5 h ago
APRS Message:
L W1AW
Slack Output:
APRSD - Slack Location Plugin
π W1AW - Location
Location: Newington, CT
Map Location: http://aprs.fi/#!mt=roadmap&z=15&lat=41.6875&lng=-72.7278
Altitude: 200 ft
Time: 1.2 h ago
APRS Message:
s Just finished a QSO on 2m!
Slack Output:
APRSD - Slack Message Plugin
π‘ N0CALL says s Just finished a QSO on 2m!
When a callsign on your watchlist appears on APRS, you'll automatically receive:
Slack Output:
APRSD - Slack Notification Plugin
π‘ W1AW - Is now on APRS
- Check that the plugin is enabled in your APRSD configuration
- Verify your Slack credentials are correct:
signing_secretmatches your app's signing secretbot_tokenis valid and starts withxoxb-
- Ensure the bot is installed in your Slack workspace
- Check APRSD logs for error messages
- Verify the channel names are correct (case-sensitive)
- Ensure the bot has been invited to the channels (if they're private)
- Check that the bot has
chat:writescope - Verify the bot token hasn't expired
- Ensure you have an
aprs_fi.apiKeyconfigured in APRSD - Check that the callsign exists on aprs.fi
- Verify network connectivity to aprs.fi and weather.gov
toxOr run specific test environments:
tox -e py311 # Run Python 3.11 tests
tox -e lint # Run linting with ruff
tox -e type-check # Run type checking with mypyThis project uses:
Licensed under the Apache License, Version 2.0. See LICENSE.txt for details.
Contributions are welcome! Please feel free to submit a Pull Request.
For issues and questions:
- GitHub Issues: https://github.com/hemna/aprsd-slack-plugin/issues
- APRSD - The APRS daemon this plugin extends