templates | ||
.gitignore | ||
api_app.py | ||
api_waitress.py | ||
config_default.ini | ||
constants.py | ||
init_db.py | ||
kiss_and_db.py | ||
README.md | ||
requirements.txt | ||
schema.sql | ||
start-aprs_api.sh | ||
test_async.py | ||
test_db.py |
README
I got tired of APRS-IS websites not showing me all the paths that packets take, only the shortest path to IS. So this is a Python 3 tool that turns direwolf logs into a REST API in JSON format.
Setup
- Run direwolf with logging to CSV on by using
-l
. (-L
not yet implemented). - Install requirements using
pip install -r requirements.txt
. - Set up database file with
python init_db.py
. - Run
app.py
with either a Python call or a real WSGI server. You can use screen to detach the session.- Default URL is http://127.0.0.1:5001
- Example
waitress
andscreen
scripts are included, seeapi_waitress.py
andstart-aprs_api.sh
- Access the API from whatever other system you want.
Endpoints:
-/packets
- gives the most recent packets, sorted descending by time received.
- argument n
will return a specific number of packets, default 10. E.g.,
https://digi.w1cdn.net/aprs_api/packets?n=1
returns one packet.
- argument from
will return packets from the named station-SSID (no wildcards).
E.g., https://digi.w1cdn.net/aprs_api/packets?n=1&from=W1CDN-1
returns
one packet from W1CDN-1.
Example of an object packet sent by W1CDN-1 and digipeated by K0UND-2:
{
"id": 1,
"addresse": null,
"alive": null,
"altitude": null,
"comment": "Leave a message to say hi!",
"course": null,
"created": "2023-04-16 15:04:03",
"format": "uncompressed",
"frame": null,
"from": "W1CDN-2",
"gpsfixstatus": null,
"latitude": 47.94133333333333,
"longitude": -97.02683333333333,
"mbits": null,
"messagecapable": 1,
"message_text": null,
"mtype": null,
"object_format": null,
"object_name": null,
"path": "['K0UND-2', 'WIDE2-2']",
"phg": null,
"phg_dir": null,
"phg_gain": null,
"phg_height": null,
"phg_power": null,
"phg_range": null,
"posambiguity": 0,
"raw": "W1CDN-2>APQTH1,K0UND-2,WIDE2-2:@150321h4756.48N/09701.61W-Leave a message to say hi!",
"raw_timestamp": "150321h",
"speed": null,
"station_call": "W1CDN-1",
"station_lat": 47.9415,
"station_lon": -97.027,
"status": null,
"symbol": "-",
"symbol_table": "/",
"telemetry": null,
"timestamp": 1681657401,
"to": "APQTH1",
"tEQNS": null,
"tPARM": null,
"tUNIT": null,
"via": "",
"weather": null,
"wx_raw_timestamp": null
}
Contributing
If you want to contribute, please get in touch with me on Mastodon at https://mastodon.radio/@W1CDN.