Go to file
Hemna d09a66006b Created plugin.py for Command Plugins
This patch adds the new APRSD Command Plugin architecture.
All Comand plugins must implement the same object API, which includes
plugin object is subclass of APRSDPluginBase
version attribute
command_regex attribute
command method

When an APRS command is detected, then the regex is run against
the command.  If the command_regex matches, then the plugin's
command() method will be called.   If the command() method returns
a string, then that string is sent as a reply to the APRS caller.

A new aprs.yml config section is added to support selecting
which plugins to enable.

If you want all plugins enabled, then omit "enabled_plugins" entirely
from the aprs section of the config.

To load custom plugins:
1) create a directory with an __init__.py file
2) Add a plugin.py file that contains your plugin

Look at the exmaples directory for an example plugin.
2020-12-13 20:57:30 -05:00
.github/workflows Refactor networking and commands 2020-12-11 19:29:18 -05:00
aprsd Created plugin.py for Command Plugins 2020-12-13 20:57:30 -05:00
build Refactor networking and commands 2020-12-11 19:29:18 -05:00
examples/plugins Created plugin.py for Command Plugins 2020-12-13 20:57:30 -05:00
tests Update tox environment to fix formatting python errors 2020-12-11 08:47:56 -05:00
tools Added tox support 2019-05-15 20:12:59 +00:00
.gitignore First stab at migrating this to a pytpi repo 2018-11-21 13:56:29 -08:00
Dockerfile Refactor networking and commands 2020-12-11 19:29:18 -05:00
INSTALL.txt Update INSTALL.txt 2020-12-09 08:05:08 -08:00
MANIFEST.in First stab at migrating this to a pytpi repo 2018-11-21 13:56:29 -08:00
README.md Update README.md 2019-12-17 06:28:16 -08:00
dev-requirements.in Update tox environment to fix formatting python errors 2020-12-11 08:47:56 -05:00
dev-requirements.txt Update tox environment to fix formatting python errors 2020-12-11 08:47:56 -05:00
docker-compose.yml Created plugin.py for Command Plugins 2020-12-13 20:57:30 -05:00
requirements.txt Created plugin.py for Command Plugins 2020-12-13 20:57:30 -05:00
setup.cfg Fixed all pep8 errors and some py3 errors 2020-12-04 16:46:34 -05:00
setup.py Update tox environment to fix formatting python errors 2020-12-11 08:47:56 -05:00
test-requirements-py2.txt Update tox environment to fix formatting python errors 2020-12-11 08:47:56 -05:00
test-requirements.txt Initial conversion to click 2020-12-09 09:47:37 -05:00
tox.ini Created plugin.py for Command Plugins 2020-12-13 20:57:30 -05:00

README.md

aprsd

Listen on amateur radio aprs-is network for messages and respond to them. You must have an amateur radio callsign to use this software. Put your callsign in the "USER" variable and update your aprs-is password in "PASS". You must also have an imap email account available for polling.

Current messages this will respond to:

APRS messages:
   l(ocation) [callsign]  = descriptive current location of your radio
                            8 Miles E Auburn CA 1673' 39.92150,-120.93950 0.1h ago
   w(eather)              = weather forecast for your radio's current position
                            58F(58F/46F) Partly Cloudy. Tonight, Heavy Rain.
   t(ime)                 = respond with the current time
   f(ortune)              = respond with a short fortune
   -email_addr email text = send an email, say "mapme" to send a current position/map
   -2                     = resend the last 2 emails from your imap inbox to this radio
   p(ing)                 = respond with Pong!/time
   anything else          = respond with usage

Meanwhile this code will monitor a single imap mailbox and forward email to your BASECALLSIGN over the air. Only radios using the BASECALLSIGN are allowed to send email, so consider this security risk before using this (or Amatuer radio in general). Email is single user at this time.

There are additional parameters in the code (sorry), so be sure to set your email server, and associated logins, passwords. search for "yourdomain", "password". Search for "shortcuts" to setup email aliases as well.

Installation:

pip install aprsd

Example usage:

aprsd -h

Example output:

SEND EMAIL (radio to smtp server)

Received message______________
Raw         : KM6XXX>APY400,WIDE1-1,qAO,KM6XXX-1::KM6XXX-9 :-user@host.com test new shortcuts global, radio to pc{29
From        : KM6XXX
Message     : -user@host.com test new shortcuts global, radio to pc
Msg number  : 29

Sending Email_________________
To          : user@host.com
Subject     : KM6XXX
Body        : test new shortcuts global, radio to pc

Sending ack __________________ Tx(3)
Raw         : KM6XXX-9>APRS::KM6XXX   :ack29
To          : KM6XXX   
Ack number  : 29

RECEIVE EMAIL (imap server to radio)

Sending message_______________ 6(Tx3)
Raw         : KM6XXX-9>APRS::KM6XXX   :-somebody@gmail.com email from internet to radio{6
To          : KM6XXX   
Message     : -somebody@gmail.com email from internet to radio

Received message______________
Raw         : KM6XXX>APY400,WIDE1-1,qAO,KM6XXX-1::KM6XXX-9 :ack6
From        : KM6XXX
Message     : ack6
Msg number  : 0

WEATHER

Received message______________                                                                                                                    
Raw         : KM6XXX>APY400,WIDE1-1,qAO,KM6XXX-1::KM6XXX-9 :weather{27                                                                                 
From        : KM6XXX                                                                                                                                   
Message     : weather                                                                                                                                  
Msg number  : 27                                                                                                                                       

Sending message_______________ 6(Tx3)                                                                                                                     
Raw         : KM6XXX-9>APRS::KM6XXX   :58F(58F/46F) Partly cloudy. Tonight, Heavy Rain.{6                                                                    
To          : KM6XXX                                                                                                                                          
Message     : 58F(58F/46F) Party Cloudy. Tonight, Heavy Rain.                                                                                                   

Sending ack __________________ Tx(3)                                                                                                                          
Raw         : KM6XXX-9>APRS::KM6XXX   :ack27                                                                                                                  
To          : KM6XXX                                                                                                                                             
Ack number  : 27   

Received message______________
Raw         : KM6XXX>APY400,WIDE1-1,qAO,KM6XXX-1::KM6XXX-9 :ack6
From        : KM6XXX
Message     : ack6
Msg number  : 0

LOCATION

Received message______________
Raw         : KM6XXX>APY400,WIDE1-1,qAO,KM6XXX-1::KM6XXX-9 :location{28
From        : KM6XXX
Message     : location
Msg number  : 28

Sending message_______________ 7(Tx3)
Raw         : KM6XXX-9>APRS::KM6XXX   :8 Miles NE Auburn CA 1673' 39.91150,-120.93450 0.1h ago{7
To          : KM6XXX   
Message     : 8 Miles E Auburn CA 1673' 38.91150,-120.93450 0.1h ago

Sending ack __________________ Tx(3)
Raw         : KM6XXX-9>APRS::KM6XXX   :ack28
To          : KM6XXX   
Ack number  : 28

Received message______________
Raw         : KM6XXX>APY400,WIDE1-1,qAO,KM6XXX-1::KM6XXX-9 :ack7
From        : KM6XXX
Message     : ack7
Msg number  : 0

AND... ping, fortune, time.....