- Renamed various documentation files to use lowercase for improved consistency, including `WEB_VIEWER.md`, `DOCKER.md`, and `PATH_COMMAND_CONFIG.md`. - Updated references in `config.ini.example`, `docker-setup.sh`, `README.md`, and multiple documentation files to reflect the new file names. - Removed obsolete documentation files related to the Discord Bridge, Map Uploader, Packet Capture, and Weather Service, streamlining the documentation structure.
4.2 KiB
Map Uploader Service
Uploads node advertisements to map.meshcore.dev for network visualization.
Quick Start
- Configure Bot - Edit
config.ini:
[MapUploader]
enabled = true
- Restart Bot - The service starts automatically and uploads node adverts with GPS coordinates
Configuration
Basic Settings
[MapUploader]
enabled = true # Enable map uploader
api_url = https://map.meshcore.dev/api/v1/uploader/node # API endpoint
min_reupload_interval = 3600 # Minimum seconds between re-uploads (1 hour)
verbose = false # Detailed debug logging
Private Key (Optional)
The service needs your device's private key to sign uploads. It will automatically fetch the key from your device if supported.
Manual Configuration:
private_key_path = /path/to/private_key.txt
How It Works
- Listens for ADVERT packets on the mesh network
- Verifies packet signature using Ed25519
- Filters invalid packets:
- Missing GPS coordinates (lat/lon)
- Coordinates exactly 0.0 (invalid)
- CHAT adverts (only nodes are uploaded)
- Duplicate/replay attacks
- Uploads valid node adverts to the map with your radio parameters
- Prevents spam - Only re-uploads the same node after
min_reupload_interval
What Gets Uploaded
Node Types Uploaded
- Repeaters
- Room servers
- Sensors
- Other non-CHAT adverts with GPS coordinates
Data Included
{
"params": {
"freq": 915000000,
"cr": 8,
"sf": 9,
"bw": 250000
},
"links": ["meshcore://DEADBEEF..."]
}
What's NOT Uploaded
- CHAT adverts (companion devices)
- Nodes without GPS coordinates
- Nodes with invalid coordinates (0.0, 0.0)
- Duplicate packets (same node within
min_reupload_interval)
Signature Verification
All uploads are signed with your device's private key to ensure authenticity:
- Ed25519 signature proves you received the packet
- Radio parameters show your device config
- Raw packet data allows independent verification
Security: Map operators can verify uploads came from legitimate devices.
Troubleshooting
Service Not Starting
Check logs:
tail -f meshcore_bot.log | grep MapUploader
Common issues:
enabled = falsein config- Missing dependencies:
pip install aiohttp cryptography - No private key available
No Uploads Happening
- Check for adverts - Service only uploads when it receives ADVERT packets
- Verify coordinates - Nodes must have valid GPS coordinates
- Check signature - Service logs "signature verification failed" for invalid packets
- Check interval - Same node won't re-upload within
min_reupload_interval
Private Key Errors
Error: "Could not obtain private key"
Solutions:
- Ensure your device firmware supports private key export
- Manually provide key via
private_key_path - Check file permissions if using file path
Advanced
Memory Management
The service tracks seen adverts to prevent duplicates. Old entries are automatically cleaned:
- Hourly cleanup removes entries older than
2 × min_reupload_interval - Safety limit: Keeps only 5000 most recent entries if dictionary grows beyond 10,000
Radio Parameters
Your device's radio settings are included in all uploads:
- freq: Frequency in Hz
- cr: Coding rate
- sf: Spreading factor
- bw: Bandwidth in Hz
Packet Format
Uploads use the meshcore:// URI scheme with hex-encoded raw packet data for verification.
FAQ
Q: Will this upload my location? A: No. Only node adverts (repeaters, sensors) with GPS coordinates are uploaded. CHAT adverts are never uploaded.
Q: How often does it upload?
A: Only when new node adverts are received. Same node won't re-upload within min_reupload_interval (default: 1 hour).
Q: What if my device doesn't support private key export?
A: You'll need to manually provide the private key via private_key_path.
Q: Can I use a different map server?
A: Yes, change api_url to point to your own map.meshcore.dev instance.
Q: Does it upload all packets? A: No. Only ADVERT packets from nodes with valid GPS coordinates.