Files
LoraMapTester/server/README.md
T

3.5 KiB

LoraTester Server

Единый HTTP-сервер для телеметрии LoRa, GPS устройств, истории статистики, треков и чата.

Быстрый старт

cd server
python -m venv .venv
.venv\Scripts\activate   # Windows
pip install -r requirements.txt
python flask_app.py

Откройте http://localhost:7634

Переменные окружения

Переменная По умолчанию
LORATESTER_HOST 0.0.0.0
LORATESTER_PORT 7634
LORATESTER_DB ./loratester.db
LORATESTER_TELEMETRY_LIMIT 5000 (записей истории на устройство)
LORATESTER_TRACK_POINTS_LIMIT 10000 (точек на один трек)

Деплой (grigowashere.ru:7634)

cd /srv/storage/disk2/services/LoraTester
pip install -r requirements.txt
# один путь БД для всех воркеров:
export LORATESTER_DB=/srv/storage/disk2/services/LoraTester/loratester.db
uvicorn fastapi_app:app --host 0.0.0.0 --port 7634

После обновления кода обязательно перезапустите сервис. При старте выполняются миграции SQLite (devices, telemetry.meta, таблицы tracks).

Проверка:

curl http://127.0.0.1:7634/api/health

Ожидается "db_ok": true, "schema_version": 3.

Если БД создана вручную и схема битая (no such table: devices / no such column: t.meta):

  1. Остановить сервис
  2. cp loratester.db loratester.db.bak
  3. Удалить loratester.db (или оставить бэкап и дать миграциям дописать колонки после рестарта с новым кодом)
  4. Запустить снова — init_db() создаст полную схему

API

Телеметрия (только Android, заголовок X-Lora-Client: android)

  • POST /api/telemetry{device_id, lat?, lon?, rssi?, meta?, fields?, role?, ts?}
  • GET /api/devices — последнее состояние устройств
  • GET /api/telemetry?device_id=&limit=&since=&until=&role= — история (без raw_frame)
  • GET /api/stats/history?device_id= — то же, alias

Треки (запись с Android)

  • POST /api/tracks/start{device_id}{track_id}
  • POST /api/tracks/{id}/points{points: [{ts, lat, lon, altitude_gps?, rssi?, role?, meta?}]}
  • POST /api/tracks/{id}/finish
  • GET /api/tracks?device_id=
  • GET /api/tracks/{id} — метаданные + точки (высота terrain через Open-Meteo)

Прочее

  • POST /api/chat{device_id, text}
  • GET /api/chat?since=0
  • GET /api/health{ok, db_ok, schema_version, database_path}

FastAPI (прод)

uvicorn fastapi_app:app --host 0.0.0.0 --port 7634

Flask (flask_app.py) — тот же API для локальной разработки.

Тесты

cd server
pip install httpx pytest
python -m pytest tests/ -v

Android

URL: http://grigowashere.ru:7634. На карте: Начать/Остановить трекинг пути — точки с GPS, статистикой приёма и высотой (Open-Meteo на сервере). Вкладка Статистика — история с сервера.

Telnet: 127.0.0.1:2727 — мост COM→telnet на устройстве.