From b86aba7bcccccf1dc274b987ef067d49a5a9b90f Mon Sep 17 00:00:00 2001 From: Joakim Svensson Date: Sun, 26 Apr 2026 17:23:01 +0200 Subject: [PATCH] first commit --- README.md~ | 104 ----------------------------------------------------- 1 file changed, 104 deletions(-) delete mode 100644 README.md~ diff --git a/README.md~ b/README.md~ deleted file mode 100644 index 21f923c..0000000 --- a/README.md~ +++ /dev/null @@ -1,104 +0,0 @@ -# aprs-collector - -``` -[Shack-LAN] [DMZ] -Direwolf AGW:8000 - ??? -agw_forwarder.py ??????POST/Bearer????????? FastAPI :8080/ingest/rf ????????? TimescaleDB - ??? - rotate.aprs2.net??? (APRS-IS, outbound) -``` - ---- - -## DMZ ??? snabbstart - -```bash -cp .env.example .env - -# Generera en API-nyckel -python3 -c "import secrets; print(secrets.token_hex(32))" -# Klistra in i .env som API_KEY - -docker compose up -d -docker compose logs -f collector -``` - -S??tt en reverse proxy (Caddy/nginx) framf??r port 8080 om du vill ha TLS. - ---- - -## Shack ??? agw-forwarder - -Kopiera mappen `agw-forwarder/` till Direwolf-datorn. - -```bash -pip3 install requests - -export AGW_HOST=localhost -export AGW_PORT=8000 -export COLLECTOR_URL=http://:8080 -export API_KEY= -export STATION_CALL=SA6ANW-1 - -python3 agw_forwarder.py -``` - -### K??r som systemd-tj??nst - -```bash -# Redigera agw-forwarder.service ??? fyll i COLLECTOR_URL och API_KEY -sudo cp agw-forwarder.service /etc/systemd/system/ -sudo systemctl daemon-reload -sudo systemctl enable --now agw-forwarder -journalctl -u agw-forwarder -f -``` - ---- - -## Resiliens - -Forwardern har en intern k?? (2000 frames). Om DMZ ??r tillf??lligt on??bar buffras -frames i minnet och skickas n??r anslutningen ??terkommer. Vid omstart av forwardern -f??rsvinner buffrade frames ??? tillr??ckligt f??r de flesta avbrott. - ---- - -## API - -| Endpoint | Metod | Auth | Beskrivning | -|---|---|---|---| -| `/ingest/rf` | POST | Bearer | RF-frame fr??n forwarder | -| `/health` | GET | ??? | Liveness check | - -Swagger UI: `http://:8080/docs` - ---- - -## Nyttiga queries - -```sql --- Direkt-h??rda stationer senaste 7 dagarna -SELECT ts, src_call, lat, lon, path -FROM rf_frames -WHERE heard_direct = TRUE - AND ts > NOW() - INTERVAL '7 days' -ORDER BY ts DESC; - --- Digis som h??rts senaste 30 min (= "online") -SELECT src_call, MAX(ts) AS last_seen, COUNT(*) AS frames -FROM rf_frames -WHERE ts > NOW() - INTERVAL '30 minutes' -GROUP BY src_call -ORDER BY last_seen DESC; - --- T??ckningspunkter per rutn??tscell -SELECT - ROUND(lat::numeric, 2) AS grid_lat, - ROUND(lon::numeric, 2) AS grid_lon, - COUNT(*) AS hits -FROM rf_frames -WHERE heard_direct = TRUE - AND lat IS NOT NULL -GROUP BY grid_lat, grid_lon; -```