generated from Grigo/AndroidTemplate
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):
- Остановить сервис
cp loratester.db loratester.db.bak- Удалить
loratester.db(или оставить бэкап и дать миграциям дописать колонки после рестарта с новым кодом) - Запустить снова —
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}/finishGET /api/tracks?device_id=GET /api/tracks/{id}— метаданные + точки (высота terrain через Open-Meteo)
Прочее
POST /api/chat—{device_id, text}GET /api/chat?since=0GET /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 на устройстве.