Add readme and stub out requirements.txt.
This commit is contained in:
parent
392c2afb6c
commit
133690efc4
47
README.md
Normal file
47
README.md
Normal 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
5
app.py
|
@ -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
4
requirements.txt
Normal file
|
@ -0,0 +1,4 @@
|
|||
flask
|
||||
flask_restful
|
||||
pandas
|
||||
numpy
|
Loading…
Reference in New Issue
Block a user