Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
127 changes: 124 additions & 3 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,130 @@

All notable changes to this project will be documented in this file.

The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## [1.0.0] - 2025-12-17

### 🎉 First Stable Release

We're excited to announce the first stable release of MeshCore GOME WarDriver! This web application has been successfully tested by users on both Android and iOS platforms for wardriving with Meshtastic devices in the Ottawa (YOW) region.

### ✨ Features

#### Core Functionality
- **Web Bluetooth Integration**: Seamless connection to MeshCore Companion devices via Web BLE
- **Automated Wardriving**: Send location pings to the `#wardriving` channel to build coverage maps
- **GPS Tracking**: High-accuracy GPS positioning with real-time location updates
- **Session Logging**: Track all pings sent during your wardriving session

#### Ping Modes
- **Manual Mode**: Send individual pings on demand with the "Send Ping" button
- **Auto Mode**: Continuous automated pinging with configurable intervals:
- 15 seconds
- 30 seconds (default)
- 60 seconds

#### Power Configuration
- Configurable radio power settings for accurate coverage mapping:
- N/A (default)
- 0.3w
- 0.6w
- 1.0w

#### User Interface
- **Live GPS Display**: Real-time GPS coordinates with accuracy metrics
- **Embedded Coverage Map**: Interactive map view powered by MeshMapper that automatically refreshes after each ping
- **Connection Status**: Clear visual feedback for Bluetooth connection and channel status
- **Session Ping Log**: Scrollable history of all pings sent during the current session
- **Responsive Design**: Mobile-optimized interface using Tailwind CSS
- **Dark Theme**: Easy-on-the-eyes dark mode interface

#### GPS Enhancements
- **High Accuracy Mode**: Requests precise GPS coordinates for improved location accuracy
- **Continuous Watch**: GPS watch functionality keeps location data fresh
- **Smart Refresh**: Coverage map automatically updates 5 seconds after each ping
- **Location Age Display**: Shows how recent your GPS fix is
- **Accuracy Indicator**: Displays GPS accuracy in meters

#### Power Management
- **Wake Lock Support**: Keeps the screen on during auto ping mode to maintain GPS accuracy
- **Bluefy Compatibility**: Special handling for Bluefy browser on iOS to prevent screen dimming

### 📱 Platform Support

#### Android
- ✅ **Fully Tested**: Works reliably with Chrome and other Chromium-based browsers
- ✅ **High Accuracy GPS**: Utilizes Android's high-accuracy location services
- ✅ **Wake Lock**: Native wake lock support keeps screen active during auto mode
- ⚠️ **Important**: Requires Location and Bluetooth permissions enabled
- ⚠️ **Note**: Keep the app in the foreground with screen on and unlocked for best results

#### iOS
- ✅ **Fully Tested**: Confirmed working via Bluefy browser
- ✅ **Bluefy Integration**: Special screen dim prevention for Bluefy browser
- ❌ **Safari Not Supported**: Safari does not support Web Bluetooth API
- 📱 **Recommended Browser**: [Bluefy - Web BLE Browser](https://apps.apple.com/us/app/bluefy-web-ble-browser/id1492822055)

### 🗺️ Regional Configuration

This application is specifically configured for the Ottawa (YOW) region:
- Coverage data sent to [MeshMapper YOW](https://yow.meshmapper.net)
- Integrated with [Ottawa Mesh](https://ottawamesh.ca) network
- Embedded map shows YOW coverage zones and repeaters

### 🔧 Technical Details

#### Web Technologies
- Progressive Web App (PWA) ready with manifest
- Web Bluetooth API for device communication
- Geolocation API with high accuracy mode
- Screen Wake Lock API for power management
- Leaflet.js for map visualization

#### Meshtastic Integration
- Connects via MeshCore Companion BLE interface
- Sends location data in MapperBot format: `@[MapperBot]<LAT LON>[ <power> ]`
- Uses encrypted channel communication with wardriving key
- Automatic device time synchronization

### 📋 Requirements

- **Browser**: Chromium-based browser on Android, or Bluefy on iOS
- **Device**: Meshtastic device with MeshCore Companion firmware
- **Permissions**:
- Bluetooth access
- High-accuracy location services
- **Network**: Must have `#wardriving` channel configured on your Meshtastic device

### 🙏 Acknowledgments

- **Original Project**: Forked from [kallanreed/mesh-map](https://github.com/kallanreed/mesh-map)
- **Modified By**: MrAlders0n for Ottawa Mesh integration
- **Map Integration**: @CSP-Tom for embed functionality improvements
- **Community**: Ottawa Mesh community and all beta testers

### 📝 Known Limitations

- Safari browser not supported (Web Bluetooth API limitation)
- App must remain in foreground for reliable operation
- Screen must stay on and unlocked during auto mode
- Regional limitation: Currently optimized for Ottawa (YOW) region only

### 🔗 Resources

- **Coverage Map**: [Ottawa Mesh Coverage](https://ottawamesh.ca/deployment/coverage/)
- **Community**: [Ottawa Mesh](https://ottawamesh.ca)
- **MeshMapper**: [YOW MeshMapper](https://yow.meshmapper.net)

---

## [Unreleased]

### Changed
### Planned
- Additional region support
- Offline mode capabilities
- Enhanced session statistics
- Export ping history

- **GPS Accuracy**: The app now requests precise GPS coordinates to avoid the issue that was discovered with Chrome on Android. The GPS logic has also been reworked to be more accurate.
- **Embedded Map**: The map is now embedded in the app and will refresh to the current GPS location 3 seconds after the ping is sent, ensuring the coverage zone is updated by then. Thanks @CSP-Tom for making the embed changes required to make this happen.
[1.0.0]: https://github.com/MrAlders0n/MeshCore-GOME-WarDriver/releases/tag/v1.0.0
164 changes: 164 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,164 @@
# MeshCore GOME WarDriver

[![Version](https://img.shields.io/badge/version-1.0.0-blue.svg)](https://github.com/MrAlders0n/MeshCore-GOME-WarDriver/releases/tag/v1.0.0)
[![License](https://img.shields.io/badge/license-Unlicense-green.svg)](LICENSE)
[![Platform](https://img.shields.io/badge/platform-Android%20%7C%20iOS-orange.svg)](#platform-support)

A browser-based Progressive Web App for wardriving with Meshtastic devices. Connect via Bluetooth, send GPS pings, and build coverage maps for the Ottawa (YOW) mesh network.

🎉 **First Stable Release** - Successfully tested on Android and iOS!

---

## 🚀 Quick Start

### For Android Users
1. Open **Chrome** browser
2. Visit the wardriving app URL
3. Enable **Bluetooth** and **Location** permissions
4. Click **Connect** and select your Meshtastic device
5. Start pinging! 📡

### For iOS Users
1. Install [**Bluefy**](https://apps.apple.com/us/app/bluefy-web-ble-browser/id1492822055) from the App Store (free)
2. Open the wardriving app in Bluefy
3. Enable **Bluetooth** and **Location** permissions
4. Click **Connect** and select your Meshtastic device
5. Start pinging! 📡

> ⚠️ **Note**: Safari does not support Web Bluetooth and will not work.

---

## ✨ Features

### 📍 GPS Tracking
- **High-accuracy positioning** for precise coverage mapping
- **Real-time location updates** with continuous GPS watch
- **Accuracy display** shows GPS precision in meters
- **Location age indicator** keeps you informed

### 🤖 Ping Modes
- **Manual Mode**: Send pings on demand
- **Auto Mode**: Continuous pinging at 15s, 30s, or 60s intervals
- **Wake Lock**: Keeps screen on during auto mode for GPS accuracy

### 🗺️ Live Coverage Map
- **Embedded MeshMapper** integration
- **Auto-refresh** after each ping (5-second delay)
- **Interactive view** of coverage zones and repeaters

### 📡 Power Configuration
Configure radio power for accurate coverage data:
- N/A (default)
- 0.3w, 0.6w, 1.0w

### 📊 Session Tracking
- Scrollable **ping history log**
- **Timestamps and coordinates** for every ping
- Track your wardriving session in real-time

---

## 📱 Platform Support

| Platform | Browser | Status |
|----------|---------|--------|
| **Android** | Chrome / Chromium | ✅ Fully Tested |
| **iOS** | Bluefy | ✅ Fully Tested |
| **iOS** | Safari | ❌ Not Supported |

### Android Requirements
- Chrome or Chromium-based browser
- Bluetooth and Location permissions enabled
- High-accuracy location mode recommended

### iOS Requirements
- [Bluefy browser](https://apps.apple.com/us/app/bluefy-web-ble-browser/id1492822055) (free)
- Bluetooth and Location permissions enabled
- Keep app in foreground with screen on

---

## 🗺️ Ottawa (YOW) Region

This application is configured for the **Ottawa Mesh** network:

- **Coverage Maps**: [yow.meshmapper.net](https://yow.meshmapper.net)
- **Community**: [ottawamesh.ca](https://ottawamesh.ca)
- **Coverage Info**: [Ottawa Mesh Coverage](https://ottawamesh.ca/deployment/coverage/)

Pings are sent to the `#wardriving` channel to build community coverage maps.

---

## 🔧 Technical Stack

- **Web Bluetooth API** - BLE device communication
- **Geolocation API** - High-accuracy GPS tracking
- **Screen Wake Lock API** - Power management
- **Leaflet.js** - Interactive mapping
- **Tailwind CSS** - Responsive UI design
- **PWA Ready** - Progressive Web App manifest

---

## 📋 Requirements

### Meshtastic Device
- Meshtastic device with **MeshCore Companion** firmware
- **#wardriving channel** configured on your device

### Browser
- **Android**: Chrome or Chromium-based browser
- **iOS**: Bluefy browser (Safari not supported)

### Permissions
- ✅ Bluetooth access
- ✅ High-accuracy location services
- ✅ Keep app in foreground during use

---

## 📖 Documentation

- **[Release Notes](RELEASE_NOTES.md)** - Full v1.0.0 release details
- **[Changelog](CHANGELOG.md)** - Version history and changes
- **[License](LICENSE)** - Public Domain (Unlicense)

---

## 🙏 Credits

This project is a fork and adaptation:

- **Original Project**: [kallanreed/mesh-map](https://github.com/kallanreed/mesh-map) by Kyle Reed
- **Modified By**: [MrAlders0n](https://github.com/MrAlders0n) for Ottawa Mesh
- **Map Integration**: @CSP-Tom for embed functionality
- **Powered By**: [MeshMapper.net](https://meshmapper.net)
- **Community**: Ottawa Mesh and all beta testers

---

## 🤝 Contributing

Found a bug? Have a feature request?

- **Issues**: [GitHub Issues](https://github.com/MrAlders0n/MeshCore-GOME-WarDriver/issues)
- **Community**: [Ottawa Mesh](https://ottawamesh.ca)

---

## 📄 License

This software is released into the **public domain** under the [Unlicense](LICENSE).

You are free to copy, modify, publish, use, compile, sell, or distribute this software, either in source code form or as a compiled binary, for any purpose, commercial or non-commercial, and by any means.

---

## 🚗📡 Happy Wardriving!

Help build the Ottawa Mesh coverage maps and grow the Meshtastic network! 🌐

**Start wardriving today and contribute to the community coverage database!**
Loading
Loading