Skip to content

Repository files navigation

LoRa Tracker

LoRa Tracker is a low-power GNSS tracking system with battery-powered tracker firmware, a Wi-Fi/MQTT gateway, a SQLite history service, a browser/Android app and a deterministic cross-component simulator. Optional keyless repeaters extend encrypted history traffic and receiver ACKs across bounded multi-hop paths.

Release status

The repository is suitable for development and controlled field trials, but is not approved for unattended production deployment. LoRa telemetry/ACKs now use per-tracker AES-256-GCM and device management requires an owner-key- authenticated custom BLE or local HTTP session. Gateway ACKs require an authenticated packet and successful MQTT hand-off; the SQLite archiver is optional and all transmitters enforce the supported Germany radio profile. Remaining release blockers include signed firmware with ESP32 secure boot, a power-loss-safe tracker queue, key custody/rotation and hardware-in-the-loop qualification. See production readiness and security.

Components

Component Purpose
components/tracker-firmware GNSS acquisition, motion-aware sleep, offline history and LoRa transport
components/gateway-firmware Multi-tracker LoRa reception, ACKs, deduplication and MQTT routing
components/repeater-firmware Keyless bounded forwarding of encrypted history and ACK frames
components/archiver Validated MQTT ingestion, SQLite retention and paginated history
components/web-app Shared MQTT-over-WebSocket PWA and Android application
components/firmware-core Portable C++ policies shared by firmware and WebAssembly
components/firmware-simulator Native embedded contract tests
components/simulator-web Interactive deterministic WASM network lab

Only the current protocol and JSON schemas are accepted. Older packet, history, point and request schemas are deliberately rejected.

Quick start

Run the brokerless system and embedded contract simulation:

cd components/archiver
python -m lora_tracker_archiver.simulator \
  --trackers 2 --points 12 --service-suite --embedded-suite

Build and serve the interactive WASM Network Lab:

cd components/simulator-web
npm ci
npm run build
npx playwright install chromium
npm run test:browser
python3 -m http.server 8080 -d app

Build every firmware target with the pinned PlatformIO toolchain:

pio run -d components/tracker-firmware -e heltec_wifi_lora_32_v2
pio run -d components/tracker-firmware -e heltec_wireless_tracker
pio run -d components/gateway-firmware -e heltec_wifi_lora_32_v2
pio run -d components/repeater-firmware -e heltec_wifi_lora_32_v2
pio run -d components/repeater-firmware -e heltec_wireless_tracker

Copy secrets.example.h to git-ignored secrets.h for tracker and gateway source builds; the repeater has no factory secret header. Generic devices are claimed with a 256-bit app-generated owner key after erased first boot; no PIN, password, bond, or OTA-only secret is generated. Provision the gateway broker's PEM root CA through the authenticated setup API or a per-device factory build. Plain MQTT is disabled by default.

Documentation

The complete reader-facing documentation is rendered on GitHub Pages.

The browser Network Lab uses the production C++ policy core compiled to WebAssembly. It visualizes trackers, repeaters, receivers, obstacles, RF link budgets, collisions, day/night conditions, MQTT archival and gateway ACK paths. The separate brokerless suite continues to execute production archiver and embedded contracts. Both are engineering evidence rather than RF, power, infrastructure or regulatory qualification; see simulation coverage.

Default namespace

New installations publish below lora-tracker/v1. Device IDs are canonical lowercase identifiers; routing uses the derived 64-bit public device hash. The hash is not a secret or an authentication credential.

About

No description, website, or topics provided.

Resources

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages