Since there are many weather services that provide an API
for fetching weather, and some don't work in other countries,
this patch adds a new service abstraction for weather.
the user configures which weather service they want to use in the config
file, then that service is loaded at start time, and the weather plugin
uses the WeatherService object to fetch the weather for a lat,lon combo.
The WeatherService itself calls the configured service object that
fetches and returns the weather. There is only 1 weather service
in this patch, which is the same as it used to be. calling
forecast.weather.gov, which is a US government API.
This patch adds a new CLI app called aprsd-dev. arpsd-dev is
used specifically for developing plugins. It allows you to run a
plugin directly without the need to run aprsd server.
This patch also adds the Weather Metar plugin called WxPlugin.
You can use it to fetch METAR from the nearest station for a callsign
or from a known METAR station id. Call WxPlugin with a message of
'wx' for closest metar station or 'wx KAUN' for metar at KAUN wx station
This patch re-enables some log.debug messages for email, to ensure
we can see emailthread is running correctly. Also adds a timestamp
to the query pending messages, so radios don't think it's a duplicate
message.
This patch adds a new add_config_comments() function in utils.py
that allows you to insert a comment string in a raw_yaml string
that's already been created from the yaml.dump() call.
This patch adds the login failure checking for the
send-message command as well as a new command line option
--no-ack. The new option enables sending the message directly
to aprs-is servers and then exiting immediately. It doesn't wait
for an ack to come back.
This patch adds the new required aprs.fi api key. This key is used
by 2 of the core plugins, locationPlugin and weatherPlugin.
You must set the apiKey in the config, or aprsd won't start.
This patch adds a check for a failed login to ARPS due to
LoginError. This accounts for bad accounts or username/password
failures. aprsd server will exit immediately upon failed login now.
This patch updates the restart_delayed method to accept the count of
messages to restart as well as the most_recent flag that sorts the
messages based on most recent first. If you want the oldest first,
then pass in False
This patch moves all of the plugins out of plugin.py
into their own separate plugins/<plugin>.py file. This
makes it easier to maintain each plugin.
NOTE: You will have to update your ~/.config/aprsd/aprsd.yml
to change the python location path for each plugin enabled.
For example:
OLD:
enabled_plugins:
- aprsd.plugin.EmailPlugin
TO NEW
enabled_plugins:
- aprsd.plugins.email.EmailPlugin