mirror of
https://github.com/dz0ny/meshcore-sar.git
synced 2026-07-17 00:21:50 +00:00
0dd408e60d4064b7de7271dddc6bfcf60d80ebf1
MeshCore SAR
Flutter app for Search and Rescue operations over a MeshCore mesh radio network via Bluetooth Low Energy.
Features
- Messaging — send/receive messages to contacts and channels
- Contacts — track team members, repeaters, and rooms with live telemetry
- SAR Markers — drop emoji-coded location pins (person found, fire, staging area) via chat messages
- Map — view team positions and markers on OpenStreetMap / topo / satellite; tiles cached for offline use
- Location tracking — periodic GPS updates broadcast to the mesh
- Packet log — inspect raw BLE frames for debugging
BLE Protocol
MeshCore SAR is powered by the meshcore_client package:
github.com/dz0ny/meshcore_client
The client handles BLE connection management, command queueing, and binary frame parsing/building, and is extracted so you can build custom tools, integrations, and apps on top of MeshCore.
Requirements
- Flutter 3.19+ / Dart 3.3+
- Physical device with Bluetooth (BLE does not work on simulators)
- iOS 13+ or Android SDK 21+
Build
flutter pub get
flutter run # debug
flutter build apk --release # Android
flutter build ios --release # iOS
GitHub Actions artifacts
Every push runs the Build And Upload Release Assets workflow and uploads build artifacts for:
- Android (
.apk) - Linux (
.tar.gz) - macOS (
.dmg) - Windows (
.zip)
How to download them:
- Open the repository on GitHub.
- Go to Actions.
- Open a workflow run named
Build And Upload Release Assets. - In the run summary, scroll to Artifacts.
- Download the artifact you need (
release-android,release-linux,release-macos,release-windows).
For published releases, the same files are also attached to the GitHub Release page.
iOS signing
open ios/Runner.xcworkspace
# Select team in Signing & Capabilities, then run from Xcode
Clean rebuild
flutter clean && flutter pub get
cd ios && pod deintegrate && pod install && cd ..
Permissions
| Platform | Permissions |
|---|---|
| iOS | Bluetooth, Location (when in use) |
| Android | BLUETOOTH_SCAN, BLUETOOTH_CONNECT, ACCESS_FINE_LOCATION, INTERNET |
SAR Marker format
S:<emoji>:<lat>,<lon>
Examples: S:🧑:46.0569,14.5058 · S:🔥:46.057,14.506 · S:🏕️:46.0571,14.506
Architecture
lib/
├── models/ — data types (re-exported from meshcore_client)
├── providers/ — state management (Provider pattern)
├── screens/ — top-level pages
├── services/ — location tracking, SSE bridge, tile cache
└── widgets/ — reusable UI components
Languages
Dart
97.1%
TypeScript
1.2%
C++
0.5%
CMake
0.4%
Shell
0.2%
Other
0.3%