Add readme and stub out requirements.txt.

This commit is contained in:
mattbk 2023-04-05 22:43:35 -05:00
parent 392c2afb6c
commit 133690efc4
3 changed files with 54 additions and 2 deletions

47
README.md Normal file
View File

@ -0,0 +1,47 @@
# 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
1. Run direwolf with logging to CSV on by using `-l`. (`-L` not yet implemented).
1. Install requirements using `pip install -r requirements.txt`.
2. Run `app.py` with either a Python call or gunicorn (or some other WSGI server).
You can use screen to detach the session.
- Default URL is http://127.0.0.1:5000
3. Access the API from whatever other system you want.
## Endpoints:
-`/packets` - gives the most recent packets, with the fields from the Dire Wolf
User Guide.
Example of an object packet sent by W1CDN-1 and digipeated by K0UND-2:
```
{
"chan": 0,
"utime": 1680566406,
"isotime": "2023-04-04T00:00:06Z",
"source": "W1CDN-1",
"heard": "K0UND-2",
"level": "113(71/42)",
"error": 0,
"dti": ";",
"name": "147.390GF",
"symbol": "/r",
"latitude": 47.924167,
"longitude": -97.009667,
"speed": 0.0,
"course": 0.0,
"altitude": 0.0,
"frequency": 147.39,
"offset": 600.0,
"tone": 0.0,
"system": "DireWolf, WB2OSZ",
"status": 0,
"telemetry": 0.0,
"comment": " https://www.wa0jxt.org/"
},
```

5
app.py
View File

@ -2,11 +2,12 @@ from flask import Flask
from flask_restful import Resource, Api, reqparse
from datetime import date, timedelta
import configparser
# TODO Can we do it without pandas and numpy?
import pandas as pd
import numpy as np
import ast
import kiss
import glob
import json
app = Flask(__name__)
api = Api(app)
@ -29,6 +30,7 @@ def read_logs(log_folder):
for file in file_list:
file1 = pd.read_csv(file)
list_stacked = pd.concat([list_stacked, file1])
# TODO Can we do this without numpy?
list_stacked.replace(np.nan, 0, inplace=True)
#print(list_stacked.head())
@ -50,7 +52,6 @@ class Packets(Resource):
def get(self):
data = read_logs(log_folder) # re-reads the log files every time
data = data.to_dict(orient = 'records') # convert dataframe to dictionary
#data = data.to_json(orient='records')
return {'data': data}, 200 # return data and 200 OK code
# Read config

4
requirements.txt Normal file
View File

@ -0,0 +1,4 @@
flask
flask_restful
pandas
numpy