mirror of
https://github.com/craigerl/aprsd.git
synced 2026-01-23 14:05:41 -05:00
467 lines
14 KiB
ReStructuredText
467 lines
14 KiB
ReStructuredText
Built-in APRSD Plugins
|
|
======================
|
|
|
|
APRSD comes with several built-in plugins that provide various functionality out of the box.
|
|
These plugins are automatically available when you install APRSD and can be enabled or disabled
|
|
through the configuration file.
|
|
|
|
Message Command Plugins
|
|
------------------------
|
|
|
|
These plugins respond to APRS messages sent to your APRSD callsign.
|
|
|
|
PingPlugin
|
|
~~~~~~~~~~
|
|
|
|
**Command:** ``ping``, ``p``, or ``p`` followed by a space
|
|
|
|
**Description:** Responds with "Pong!" and the current time.
|
|
|
|
**Usage:** Send a message containing "ping" to your APRSD callsign.
|
|
|
|
**Example:**
|
|
::
|
|
|
|
You: ping
|
|
APRSD: Pong! 14:30:05
|
|
|
|
**Configuration:** No configuration required.
|
|
|
|
**Plugin Path:** ``aprsd.plugins.ping.PingPlugin``
|
|
|
|
|
|
FortunePlugin
|
|
~~~~~~~~~~~~~
|
|
|
|
**Command:** ``fortune``, ``f``, or ``f`` followed by a space
|
|
|
|
**Description:** Returns a random fortune cookie message using the system's ``fortune`` command.
|
|
|
|
**Usage:** Send a message containing "fortune" to your APRSD callsign.
|
|
|
|
**Requirements:** Requires the ``fortune`` command to be installed on the system. The plugin
|
|
will automatically search common installation paths and disable itself if not found.
|
|
|
|
**Example:**
|
|
::
|
|
|
|
You: fortune
|
|
APRSD: A journey of a thousand miles begins with a single step.
|
|
|
|
**Configuration:** No configuration required.
|
|
|
|
**Plugin Path:** ``aprsd.plugins.fortune.FortunePlugin``
|
|
|
|
|
|
TimePlugin
|
|
~~~~~~~~~~
|
|
|
|
**Command:** ``time``, ``t``, or ``t`` followed by a space
|
|
|
|
**Description:** Returns the current local time of the APRSD server in a human-readable format
|
|
(fuzzy time) with timezone information.
|
|
|
|
**Usage:** Send a message containing "time" to your APRSD callsign.
|
|
|
|
**Example:**
|
|
::
|
|
|
|
You: time
|
|
APRSD: half past two (14:30 PDT)
|
|
|
|
**Configuration:** No configuration required. Uses the system's local timezone.
|
|
|
|
**Plugin Path:** ``aprsd.plugins.time.TimePlugin``
|
|
|
|
|
|
VersionPlugin
|
|
~~~~~~~~~~~~~
|
|
|
|
**Command:** ``version``, ``v``, or ``v`` followed by a space
|
|
|
|
**Description:** Returns the APRSD version number and server uptime.
|
|
|
|
**Usage:** Send a message containing "version" to your APRSD callsign.
|
|
|
|
**Example:**
|
|
::
|
|
|
|
You: version
|
|
APRSD: APRSD ver:4.2.4 uptime:2 days, 5:30:15
|
|
|
|
**Configuration:** No configuration required.
|
|
|
|
**Plugin Path:** ``aprsd.plugins.version.VersionPlugin``
|
|
|
|
|
|
USWeatherPlugin
|
|
~~~~~~~~~~~~~~~
|
|
|
|
**Command:** ``weather``, ``w``, or ``W`` (w or W at start of message)
|
|
|
|
**Description:** Provides weather information for locations within the United States only.
|
|
Uses the forecast.weather.gov API to fetch weather data based on the GPS beacon location
|
|
of the calling callsign (or optionally a specified callsign).
|
|
|
|
**Usage:**
|
|
::
|
|
|
|
You: weather
|
|
APRSD: 72F(68F/75F) Partly cloudy. Tonight, Clear.
|
|
|
|
You: weather WB4BOR
|
|
APRSD: 65F(60F/70F) Sunny. Tonight, Partly cloudy.
|
|
|
|
**Requirements:** Requires an ``aprs_fi.apiKey`` configuration option.
|
|
|
|
**Configuration:**
|
|
- ``aprs_fi.apiKey`` - API key from aprs.fi account
|
|
|
|
**Note:** This plugin does not require an API key for the weather service itself, only
|
|
for aprs.fi to get the GPS location.
|
|
|
|
**Plugin Path:** ``aprsd.plugins.weather.USWeatherPlugin``
|
|
|
|
|
|
USMetarPlugin
|
|
~~~~~~~~~~~~~
|
|
|
|
**Command:** ``metar``, ``m``, ``M``, or ``m`` followed by a space (m or M at start of message)
|
|
|
|
**Description:** Provides METAR (Meteorological Aerodrome Report) weather reports for
|
|
stations within the United States only. Uses the forecast.weather.gov API.
|
|
|
|
**Usage:**
|
|
::
|
|
|
|
You: metar
|
|
APRSD: KORD 101451Z 28010KT 10SM FEW250 22/12 A3001
|
|
|
|
You: metar KORD
|
|
APRSD: KORD 101451Z 28010KT 10SM FEW250 22/12 A3001
|
|
|
|
**Requirements:** Requires an ``aprs_fi.apiKey`` configuration option (when querying
|
|
by callsign location).
|
|
|
|
**Configuration:**
|
|
- ``aprs_fi.apiKey`` - API key from aprs.fi account
|
|
|
|
**Note:** When specifying a station identifier directly (e.g., "metar KORD"), the
|
|
aprs.fi API key is not required.
|
|
|
|
**Plugin Path:** ``aprsd.plugins.weather.USMetarPlugin``
|
|
|
|
|
|
HelpPlugin
|
|
~~~~~~~~~~
|
|
|
|
**Command:** ``help``, ``h``, or ``H`` (h or H at start of message)
|
|
|
|
**Description:** Provides help information about available plugins. Can list all available
|
|
plugins or provide specific help for a named plugin.
|
|
|
|
**Usage:**
|
|
::
|
|
|
|
You: help
|
|
APRSD: Send APRS MSG of 'help' or 'help <plugin>'
|
|
plugins: fortune ping time version weather
|
|
|
|
You: help weather
|
|
APRSD: openweathermap: Send ^[wW] to get weather from your location
|
|
openweathermap: Send ^[wW] <callsign> to get weather from <callsign>
|
|
|
|
**Configuration:** Can be disabled by setting ``load_help_plugin = false`` in the configuration.
|
|
|
|
**Plugin Path:** ``aprsd.plugin.HelpPlugin``
|
|
|
|
|
|
WatchList Plugins
|
|
-----------------
|
|
|
|
These plugins monitor APRS traffic and can send notifications based on watch list criteria.
|
|
|
|
NotifySeenPlugin
|
|
~~~~~~~~~~~~~~~~
|
|
|
|
**Type:** WatchList Plugin
|
|
|
|
**Description:** Monitors callsigns in the watch list and sends a notification message when
|
|
a callsign that hasn't been seen recently (based on the configured age limit) appears on
|
|
the APRS network.
|
|
|
|
**How it works:**
|
|
- Tracks callsigns configured in the watch list
|
|
- Monitors all incoming APRS packets
|
|
- When a callsign in the watch list is seen and hasn't been seen recently (exceeds
|
|
the age limit), sends a notification message to the configured alert callsign
|
|
|
|
**Configuration:**
|
|
- ``watch_list.enabled`` - Must be set to ``true``
|
|
- ``watch_list.callsigns`` - List of callsigns to watch for
|
|
- ``watch_list.alert_callsign`` - Callsign to send notifications to
|
|
- ``watch_list.alert_time_seconds`` - Time threshold in seconds (default: 3600)
|
|
|
|
**Example Notification:**
|
|
::
|
|
|
|
APRSD -> WB4BOR: KM6LYW was just seen by type:'BeaconPacket'
|
|
|
|
**Plugin Path:** ``aprsd.plugins.notify.NotifySeenPlugin``
|
|
|
|
|
|
Enabling Built-in Plugins
|
|
--------------------------
|
|
|
|
Built-in plugins are enabled through the ``enabled_plugins`` configuration option in your
|
|
APRSD configuration file. List the full Python path to each plugin class you want to enable.
|
|
|
|
**Example Configuration:**
|
|
::
|
|
|
|
[DEFAULT]
|
|
enabled_plugins = aprsd.plugins.fortune.FortunePlugin,aprsd.plugins.ping.PingPlugin,aprsd.plugins.time.TimePlugin,aprsd.plugins.weather.USWeatherPlugin,aprsd.plugins.version.VersionPlugin,aprsd.plugins.notify.NotifySeenPlugin
|
|
|
|
**Note:** The HelpPlugin is enabled by default and does not need to be listed in
|
|
``enabled_plugins``. It can be disabled by setting ``load_help_plugin = false``.
|
|
|
|
**Note:** Some plugins may require additional configuration (API keys, etc.) and will
|
|
automatically disable themselves if required configuration is missing.
|
|
|
|
**Note:** Weather plugins may use the same command patterns. Only one weather plugin should
|
|
be enabled at a time to avoid conflicts. Similarly, only one METAR plugin should be enabled
|
|
at a time.
|
|
|
|
|
|
Listing Available Plugins
|
|
--------------------------
|
|
|
|
You can see all available built-in plugins, along with their descriptions and command patterns,
|
|
by running:
|
|
|
|
.. code-block:: shell
|
|
|
|
aprsd list-plugins
|
|
|
|
This command will show:
|
|
- Built-in plugins included with APRSD
|
|
- Available plugins on PyPI that can be installed
|
|
- Currently installed third-party plugins
|
|
|
|
|
|
Finding External Plugins and Extensions
|
|
=========================================
|
|
|
|
APRSD supports external plugins and extensions that extend the functionality beyond the
|
|
built-in plugins. These are distributed as separate Python packages that follow a specific
|
|
naming convention.
|
|
|
|
Naming Convention
|
|
-----------------
|
|
|
|
All external APRSD plugins and extensions follow a consistent naming scheme:
|
|
|
|
* **Plugins:** ``aprsd-<name>-plugin``
|
|
* **Extensions:** ``aprsd-<name>-extension``
|
|
|
|
For example:
|
|
* ``aprsd-email-plugin`` - A plugin for email functionality
|
|
* ``aprsd-admin-extension`` - An extension for web administration
|
|
|
|
Finding Plugins and Extensions
|
|
-------------------------------
|
|
|
|
PyPI (Python Package Index)
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
You can find all available APRSD plugins and extensions on PyPI:
|
|
|
|
* **Search for plugins:** https://pypi.org/search/?q=aprsd+-plugin
|
|
* **Search for extensions:** https://pypi.org/search/?q=aprsd+-extension
|
|
* **General APRSD search:** https://pypi.org/search/?q=aprsd
|
|
|
|
The ``aprsd list-plugins`` command also shows available plugins and extensions from PyPI
|
|
along with installation status.
|
|
|
|
GitHub
|
|
~~~~~~
|
|
|
|
Many APRSD plugins and extensions are hosted on GitHub under the `hemna organization`_:
|
|
|
|
* **Organization:** https://github.com/hemna/
|
|
* **Search for plugins:** https://github.com/orgs/hemna/repositories?q=aprsd-plugin
|
|
* **Search for extensions:** https://github.com/orgs/hemna/repositories?q=aprsd-extension
|
|
|
|
Installing External Plugins and Extensions
|
|
-------------------------------------------
|
|
|
|
To install an external plugin or extension, use pip:
|
|
|
|
.. code-block:: shell
|
|
|
|
pip install aprsd-<name>-plugin
|
|
# or
|
|
pip install aprsd-<name>-extension
|
|
|
|
After installation, the plugin or extension will be automatically discovered by APRSD.
|
|
You may need to add it to your ``enabled_plugins`` configuration or configure it according
|
|
to its documentation.
|
|
|
|
Available External Plugins
|
|
---------------------------
|
|
|
|
The following external plugins are available:
|
|
|
|
Email Plugin
|
|
~~~~~~~~~~~~
|
|
|
|
* **PyPI:** https://pypi.org/project/aprsd-email-plugin/
|
|
* **GitHub:** https://github.com/hemna/aprsd-email-plugin
|
|
* **Description:** Send and receive email via APRS messages.
|
|
|
|
Location Plugin
|
|
~~~~~~~~~~~~~~~
|
|
|
|
* **PyPI:** https://pypi.org/project/aprsd-location-plugin/
|
|
* **GitHub:** https://github.com/hemna/aprsd-location-plugin
|
|
* **Description:** Get the latest GPS location of a callsign.
|
|
|
|
Location Data Plugin
|
|
~~~~~~~~~~~~~~~~~~~~
|
|
|
|
* **PyPI:** https://pypi.org/project/aprsd-locationdata-plugin/
|
|
* **GitHub:** https://github.com/hemna/aprsd-locationdata-plugin
|
|
* **Description:** Get detailed GPS location data for a callsign.
|
|
|
|
DigiPi Plugin
|
|
~~~~~~~~~~~~~
|
|
|
|
* **PyPI:** https://pypi.org/project/aprsd-digipi-plugin/
|
|
* **GitHub:** https://github.com/hemna/aprsd-digipi-plugin
|
|
* **Description:** Look for DigiPi beacon packets and provide DigiPi-specific functionality.
|
|
|
|
W3W Plugin
|
|
~~~~~~~~~~
|
|
|
|
* **PyPI:** https://pypi.org/project/aprsd-w3w-plugin/
|
|
* **GitHub:** https://github.com/hemna/aprsd-w3w-plugin
|
|
* **Description:** Get What3Words (w3w) coordinates for a location.
|
|
|
|
MQTT Plugin
|
|
~~~~~~~~~~~
|
|
|
|
* **PyPI:** https://pypi.org/project/aprsd-mqtt-plugin/
|
|
* **GitHub:** https://github.com/hemna/aprsd-mqtt-plugin
|
|
* **Description:** Send APRS packets to an MQTT topic for integration with IoT systems.
|
|
|
|
Telegram Plugin
|
|
~~~~~~~~~~~~~~~
|
|
|
|
* **PyPI:** https://pypi.org/project/aprsd-telegram-plugin/
|
|
* **GitHub:** https://github.com/hemna/aprsd-telegram-plugin
|
|
* **Description:** Send and receive messages via Telegram.
|
|
|
|
Borat Plugin
|
|
~~~~~~~~~~~~
|
|
|
|
* **PyPI:** https://pypi.org/project/aprsd-borat-plugin/
|
|
* **GitHub:** https://github.com/hemna/aprsd-borat-plugin
|
|
* **Description:** Get random Borat quotes via APRS messages.
|
|
|
|
WXNow Plugin
|
|
~~~~~~~~~~~~
|
|
|
|
* **PyPI:** https://pypi.org/project/aprsd-wxnow-plugin/
|
|
* **GitHub:** https://github.com/hemna/aprsd-wxnow-plugin
|
|
* **Description:** Get weather reports from the closest N weather stations.
|
|
|
|
WeeWX Plugin
|
|
~~~~~~~~~~~~
|
|
|
|
* **PyPI:** https://pypi.org/project/aprsd-weewx-plugin/
|
|
* **GitHub:** https://github.com/hemna/aprsd-weewx-plugin
|
|
* **Description:** Get weather data from your WeeWX weather station.
|
|
|
|
Slack Plugin
|
|
~~~~~~~~~~~~
|
|
|
|
* **PyPI:** https://pypi.org/project/aprsd-slack-plugin/
|
|
* **GitHub:** https://github.com/hemna/aprsd-slack-plugin
|
|
* **Description:** Send and receive messages to/from a Slack channel.
|
|
|
|
Sentry Plugin
|
|
~~~~~~~~~~~~~
|
|
|
|
* **PyPI:** https://pypi.org/project/aprsd-sentry-plugin/
|
|
* **GitHub:** https://github.com/hemna/aprsd-sentry-plugin
|
|
* **Description:** Integration with Sentry for error tracking and monitoring.
|
|
|
|
Repeat Plugins
|
|
~~~~~~~~~~~~~~
|
|
|
|
* **PyPI:** https://pypi.org/project/aprsd-repeat-plugins/
|
|
* **GitHub:** https://github.com/hemna/aprsd-repeat-plugins
|
|
* **Description:** Plugins for the REPEAT service - get nearest Ham radio repeaters.
|
|
|
|
Twitter Plugin
|
|
~~~~~~~~~~~~~~
|
|
|
|
* **PyPI:** https://pypi.org/project/aprsd-twitter-plugin/
|
|
* **GitHub:** https://github.com/hemna/aprsd-twitter-plugin
|
|
* **Description:** Make tweets from your Ham Radio via APRS messages.
|
|
|
|
Time OpenCage Plugin
|
|
~~~~~~~~~~~~~~~~~
|
|
|
|
* **PyPI:** https://pypi.org/project/aprsd-timeopencage-plugin/
|
|
* **GitHub:** https://github.com/hemna/aprsd-timeopencage-plugin
|
|
* **Description:** Get local time for a callsign using OpenCage geocoding.
|
|
|
|
Stock Plugin
|
|
~~~~~~~~~~~~
|
|
|
|
* **PyPI:** https://pypi.org/project/aprsd-stock-plugin/
|
|
* **GitHub:** https://github.com/hemna/aprsd-stock-plugin
|
|
* **Description:** Get stock quotes from your Ham radio via APRS messages.
|
|
|
|
Available External Extensions
|
|
-----------------------------
|
|
|
|
The following external extensions are available:
|
|
|
|
Admin Extension
|
|
~~~~~~~~~~~~~~~
|
|
|
|
* **PyPI:** https://pypi.org/project/aprsd-admin-extension/
|
|
* **GitHub:** https://github.com/hemna/aprsd-admin-extension
|
|
* **Description:** Web-based administration interface for APRSD with real-time status,
|
|
configuration management, and monitoring capabilities.
|
|
|
|
WebChat Extension
|
|
~~~~~~~~~~~~~~~~~
|
|
|
|
* **PyPI:** https://pypi.org/project/aprsd-webchat-extension/
|
|
* **GitHub:** https://github.com/hemna/aprsd-webchat-extension
|
|
* **Description:** Web-based APRS messaging interface that allows you to send and receive
|
|
APRS messages through a browser.
|
|
|
|
Rich CLI Extension
|
|
~~~~~~~~~~~~~~~~~~
|
|
|
|
* **PyPI:** https://pypi.org/project/aprsd-rich-cli-extension/
|
|
* **GitHub:** https://github.com/hemna/aprsd-rich-cli-extension
|
|
* **Description:** Enhanced Textual-based rich CLI versions of APRSD commands with improved
|
|
user interface and interactivity.
|
|
|
|
IRC Extension
|
|
~~~~~~~~~~~~~
|
|
|
|
* **PyPI:** https://pypi.org/project/aprsd-irc-extension/
|
|
* **GitHub:** https://github.com/hemna/aprsd-irc-extension
|
|
* **Description:** IRC-like server command for APRS, providing an IRC-style interface to
|
|
the APRS network.
|
|
|
|
.. _hemna organization: https://github.com/hemna
|
|
|
|
.. include:: links.rst
|