mirror of
https://github.com/zjs81/meshcore-open.git
synced 2026-06-14 22:55:12 +10:00
add obtainium badge
allow users to easily add app to obtainium https://apps.obtainium.imranr.dev
This commit is contained in:
@@ -6,6 +6,10 @@ Open-source Flutter client for MeshCore LoRa mesh networking devices.
|
|||||||
|
|
||||||
MeshCore Open is a cross-platform mobile application for communicating with MeshCore LoRa mesh network devices via Bluetooth Low Energy (BLE). The app enables long-range, off-grid communication through peer-to-peer messaging, public channels, and mesh networking capabilities.
|
MeshCore Open is a cross-platform mobile application for communicating with MeshCore LoRa mesh network devices via Bluetooth Low Energy (BLE). The app enables long-range, off-grid communication through peer-to-peer messaging, public channels, and mesh networking capabilities.
|
||||||
|
|
||||||
|
<a href="http://apps.obtainium.imranr.dev/redirect.html?r=obtainium://add/https://github.com/zjs81/meshcore-open">
|
||||||
|
<img src="assets/badges/badge_obtainium.png" height="80" align="center" alt="Get it on Obtainium"/>
|
||||||
|
</a>
|
||||||
|
|
||||||
## Screenshots
|
## Screenshots
|
||||||
|
|
||||||
<table>
|
<table>
|
||||||
@@ -21,6 +25,7 @@ MeshCore Open is a cross-platform mobile application for communicating with Mesh
|
|||||||
## Features
|
## Features
|
||||||
|
|
||||||
### Core Functionality
|
### Core Functionality
|
||||||
|
|
||||||
- **Direct Messaging**: Private encrypted conversations with individual contacts
|
- **Direct Messaging**: Private encrypted conversations with individual contacts
|
||||||
- **Public Channels**: Broadcast messages to channel subscribers on the mesh network
|
- **Public Channels**: Broadcast messages to channel subscribers on the mesh network
|
||||||
- **Contact Management**: Organize contacts, track last seen times, and manage conversation history
|
- **Contact Management**: Organize contacts, track last seen times, and manage conversation history
|
||||||
@@ -29,6 +34,7 @@ MeshCore Open is a cross-platform mobile application for communicating with Mesh
|
|||||||
- **Message Replies**: Thread conversations with inline reply functionality
|
- **Message Replies**: Thread conversations with inline reply functionality
|
||||||
|
|
||||||
### Mesh Network
|
### Mesh Network
|
||||||
|
|
||||||
- **Path Visualization**: View routing paths and signal quality for each contact
|
- **Path Visualization**: View routing paths and signal quality for each contact
|
||||||
- **Route Management**: Manual path overriding and automatic route rotation
|
- **Route Management**: Manual path overriding and automatic route rotation
|
||||||
- **Signal Metrics**: Real-time SNR (Signal-to-Noise Ratio) tracking
|
- **Signal Metrics**: Real-time SNR (Signal-to-Noise Ratio) tracking
|
||||||
@@ -36,6 +42,7 @@ MeshCore Open is a cross-platform mobile application for communicating with Mesh
|
|||||||
- **Repeater Support**: Connect to and manage repeater nodes for extended range
|
- **Repeater Support**: Connect to and manage repeater nodes for extended range
|
||||||
|
|
||||||
### Map & Location
|
### Map & Location
|
||||||
|
|
||||||
- **Live Map View**: Real-time visualization of mesh network nodes on an interactive map
|
- **Live Map View**: Real-time visualization of mesh network nodes on an interactive map
|
||||||
- **Node Filtering**: Filter by node type (chat, repeater, sensor) and time range
|
- **Node Filtering**: Filter by node type (chat, repeater, sensor) and time range
|
||||||
- **Location Sharing**: Share GPS coordinates and custom markers with contacts
|
- **Location Sharing**: Share GPS coordinates and custom markers with contacts
|
||||||
@@ -43,12 +50,14 @@ MeshCore Open is a cross-platform mobile application for communicating with Mesh
|
|||||||
- **MGRS Coordinates**: Support for Military Grid Reference System coordinate format
|
- **MGRS Coordinates**: Support for Military Grid Reference System coordinate format
|
||||||
|
|
||||||
### Device Management
|
### Device Management
|
||||||
|
|
||||||
- **BLE Connection**: Scan and connect to MeshCore devices via Bluetooth
|
- **BLE Connection**: Scan and connect to MeshCore devices via Bluetooth
|
||||||
- **Device Settings**: Configure radio parameters, power settings, and network options
|
- **Device Settings**: Configure radio parameters, power settings, and network options
|
||||||
- **Battery Monitoring**: Real-time battery status with chemistry-specific voltage curves
|
- **Battery Monitoring**: Real-time battery status with chemistry-specific voltage curves
|
||||||
- **Firmware Updates**: Over-the-air firmware updates via BLE (coming soon)
|
- **Firmware Updates**: Over-the-air firmware updates via BLE (coming soon)
|
||||||
|
|
||||||
### Repeater Hub
|
### Repeater Hub
|
||||||
|
|
||||||
- **CLI Access**: Full command-line interface to repeater nodes
|
- **CLI Access**: Full command-line interface to repeater nodes
|
||||||
- **Settings Management**: Configure repeater behavior, power limits, and network settings
|
- **Settings Management**: Configure repeater behavior, power limits, and network settings
|
||||||
- **Statistics Dashboard**: View repeater traffic, connected clients, and system health
|
- **Statistics Dashboard**: View repeater traffic, connected clients, and system health
|
||||||
@@ -57,6 +66,7 @@ MeshCore Open is a cross-platform mobile application for communicating with Mesh
|
|||||||
## Technical Details
|
## Technical Details
|
||||||
|
|
||||||
### Architecture
|
### Architecture
|
||||||
|
|
||||||
- **Framework**: Flutter 3.38.5 / Dart 3.10.4
|
- **Framework**: Flutter 3.38.5 / Dart 3.10.4
|
||||||
- **State Management**: Provider pattern with ChangeNotifier
|
- **State Management**: Provider pattern with ChangeNotifier
|
||||||
- **BLE Protocol**: Nordic UART Service (NUS) over Bluetooth Low Energy
|
- **BLE Protocol**: Nordic UART Service (NUS) over Bluetooth Low Energy
|
||||||
@@ -64,11 +74,13 @@ MeshCore Open is a cross-platform mobile application for communicating with Mesh
|
|||||||
- **Encryption**: End-to-end encryption for private messages using the MeshCore protocol
|
- **Encryption**: End-to-end encryption for private messages using the MeshCore protocol
|
||||||
|
|
||||||
### Platform Support
|
### Platform Support
|
||||||
|
|
||||||
- ✅ **Android**: Full support (API 21+)
|
- ✅ **Android**: Full support (API 21+)
|
||||||
- ✅ **iOS**: Full support (iOS 12+)
|
- ✅ **iOS**: Full support (iOS 12+)
|
||||||
- 🚧 **Desktop**: Limited support (macOS/Linux/Windows)
|
- 🚧 **Desktop**: Limited support (macOS/Linux/Windows)
|
||||||
|
|
||||||
### Dependencies
|
### Dependencies
|
||||||
|
|
||||||
| Package | Purpose |
|
| Package | Purpose |
|
||||||
|---------|---------|
|
|---------|---------|
|
||||||
| flutter_blue_plus | Bluetooth Low Energy communication |
|
| flutter_blue_plus | Bluetooth Low Energy communication |
|
||||||
@@ -84,6 +96,7 @@ MeshCore Open is a cross-platform mobile application for communicating with Mesh
|
|||||||
## Getting Started
|
## Getting Started
|
||||||
|
|
||||||
### Prerequisites
|
### Prerequisites
|
||||||
|
|
||||||
- Flutter SDK 3.38.5 or later
|
- Flutter SDK 3.38.5 or later
|
||||||
- Android Studio / Xcode (for mobile development)
|
- Android Studio / Xcode (for mobile development)
|
||||||
- A MeshCore-compatible LoRa device
|
- A MeshCore-compatible LoRa device
|
||||||
@@ -91,17 +104,20 @@ MeshCore Open is a cross-platform mobile application for communicating with Mesh
|
|||||||
### Installation
|
### Installation
|
||||||
|
|
||||||
1. **Clone the repository**
|
1. **Clone the repository**
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
git clone https://github.com/zjs81/meshcore-open.git
|
git clone https://github.com/zjs81/meshcore-open.git
|
||||||
cd meshcore-open
|
cd meshcore-open
|
||||||
```
|
```
|
||||||
|
|
||||||
2. **Install dependencies**
|
2. **Install dependencies**
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
flutter pub get
|
flutter pub get
|
||||||
```
|
```
|
||||||
|
|
||||||
3. **Run the app**
|
3. **Run the app**
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
flutter run
|
flutter run
|
||||||
```
|
```
|
||||||
@@ -109,11 +125,13 @@ MeshCore Open is a cross-platform mobile application for communicating with Mesh
|
|||||||
### Building for Release
|
### Building for Release
|
||||||
|
|
||||||
**Android APK:**
|
**Android APK:**
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
flutter build apk --release
|
flutter build apk --release
|
||||||
```
|
```
|
||||||
|
|
||||||
**iOS:**
|
**iOS:**
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
flutter build ios --release
|
flutter build ios --release
|
||||||
```
|
```
|
||||||
@@ -152,25 +170,30 @@ lib/
|
|||||||
## BLE Protocol
|
## BLE Protocol
|
||||||
|
|
||||||
### Nordic UART Service (NUS)
|
### Nordic UART Service (NUS)
|
||||||
|
|
||||||
- **Service UUID**: `6e400001-b5a3-f393-e0a9-e50e24dcca9e`
|
- **Service UUID**: `6e400001-b5a3-f393-e0a9-e50e24dcca9e`
|
||||||
- **RX Characteristic**: `6e400002-b5a3-f393-e0a9-e50e24dcca9e` (Write to device)
|
- **RX Characteristic**: `6e400002-b5a3-f393-e0a9-e50e24dcca9e` (Write to device)
|
||||||
- **TX Characteristic**: `6e400003-b5a3-f393-e0a9-e50e24dcca9e` (Notify from device)
|
- **TX Characteristic**: `6e400003-b5a3-f393-e0a9-e50e24dcca9e` (Notify from device)
|
||||||
|
|
||||||
### Device Discovery
|
### Device Discovery
|
||||||
|
|
||||||
Devices are discovered by scanning for BLE advertisements with the name prefix `MeshCore-`
|
Devices are discovered by scanning for BLE advertisements with the name prefix `MeshCore-`
|
||||||
|
|
||||||
### Message Format
|
### Message Format
|
||||||
|
|
||||||
Messages are transmitted as binary frames using a custom protocol optimized for LoRa transmission. See `meshcore_protocol.dart` for frame structure definitions.
|
Messages are transmitted as binary frames using a custom protocol optimized for LoRa transmission. See `meshcore_protocol.dart` for frame structure definitions.
|
||||||
|
|
||||||
## Configuration
|
## Configuration
|
||||||
|
|
||||||
### App Settings
|
### App Settings
|
||||||
|
|
||||||
- **Theme**: System default, light, or dark mode
|
- **Theme**: System default, light, or dark mode
|
||||||
- **Notifications**: Configurable for messages, channels, and node advertisements
|
- **Notifications**: Configurable for messages, channels, and node advertisements
|
||||||
- **Battery Chemistry**: Support for NMC, LiFePO4, and LiPo battery types
|
- **Battery Chemistry**: Support for NMC, LiFePO4, and LiPo battery types
|
||||||
- **Message Retry**: Automatic retry with configurable path clearing
|
- **Message Retry**: Automatic retry with configurable path clearing
|
||||||
|
|
||||||
### Device Settings
|
### Device Settings
|
||||||
|
|
||||||
- **Radio Power**: Transmit power adjustment (10-30 dBm)
|
- **Radio Power**: Transmit power adjustment (10-30 dBm)
|
||||||
- **Frequency**: LoRa frequency configuration
|
- **Frequency**: LoRa frequency configuration
|
||||||
- **Bandwidth**: Channel bandwidth selection
|
- **Bandwidth**: Channel bandwidth selection
|
||||||
@@ -182,22 +205,23 @@ Messages are transmitted as binary frames using a custom protocol optimized for
|
|||||||
This is an open-source project. Contributions are welcome!
|
This is an open-source project. Contributions are welcome!
|
||||||
|
|
||||||
### Development Guidelines
|
### Development Guidelines
|
||||||
|
|
||||||
- Follow the Flutter style guide
|
- Follow the Flutter style guide
|
||||||
- Use Material 3 design components
|
- Use Material 3 design components
|
||||||
- Write clear commit messages
|
- Write clear commit messages
|
||||||
- Test on both Android and iOS before submitting PRs
|
- Test on both Android and iOS before submitting PRs
|
||||||
|
|
||||||
### Code Style
|
### Code Style
|
||||||
|
|
||||||
- Prefer `StatelessWidget` with `Consumer` for reactive UI
|
- Prefer `StatelessWidget` with `Consumer` for reactive UI
|
||||||
- Use `const` constructors where possible
|
- Use `const` constructors where possible
|
||||||
- Keep functions small and focused
|
- Keep functions small and focused
|
||||||
- Avoid premature abstractions
|
- Avoid premature abstractions
|
||||||
|
|
||||||
|
|
||||||
## Support
|
## Support
|
||||||
|
|
||||||
For issues, questions, or feature requests, please open an issue on GitHub:
|
For issues, questions, or feature requests, please open an issue on GitHub:
|
||||||
https://github.com/zjs81/meshcore-open/issues
|
<https://github.com/zjs81/meshcore-open/issues>
|
||||||
|
|
||||||
## Donate
|
## Donate
|
||||||
|
|
||||||
|
|||||||
Binary file not shown.
|
After Width: | Height: | Size: 21 KiB |
Reference in New Issue
Block a user