Created by: Liam Cottle
Forked by: Tilen Komel
A map of all Meshtastic nodes heard via MQTT.
My version of the map is available at https://map.meshnet.si
- An mqtt client is persistently connected to
mqtt.meshnet.si
and subscribed to thesi/#
topic. - All messages received are attempted to be decoded as ServiceEnvelope packets.
- If a packet is encrypted, it attempts to decrypt it with the default
AQ==
key. - If a packet can't be decoded as a
ServiceEnvelope
, it is ignored. NODEINFO_APP
packets add a node to the database.POSITION_APP
packets update the position of a node in the database.NEIGHBORINFO_APP
packets log neighbours heard by a node to the database.TELEMETRY_APP
packets update battery and voltage metrics for a node in the database.TRACEROUTE_APP
packets log all trace routes performed by a node to the database.MAP_REPORT_APP
packets are stored in the database, but are not widely adopted, so are not used yet.- The database is a MySQL server, and a nodejs express server is running an API to serve data to the map interface.
- Connects to mqtt.meshtastic.org to collect nodes and metrics.
- Shows nodes on the map if they have reported a valid position.
- Search bar to find nodes by ID, Hex ID, Short Name and Long Name.
- Hover over nodes on the map to see basic information and a preview image.
- Click nodes on the map to show a sidebar with more info such as telemetry graphs and traceroutes.
- Ability to share a direct link to a node. The map will auto navigate to it.
- Device list. To see which hardware models are most popular.
- Mobile optimised layout.
- Settings available to hide nodes from the map if they haven't been updated in a while.
- Real-Time message UI to view
TEXT_MESSAGE_APP
packets as they come in. - View position history of a node between a selectable time range.
- "Neighbours" map layer. Shows blue connection lines between nodes that heard the other node.
- This information is taken from the
NEIGHBORINFO_APP
. - Some neighbour lines are clearly wrong.
- Meshtastic firmware older than v2.3.2 reports MQTT nodes as Neighbours.
- This was fixed in meshtastic/firmware/#3457, but adoption will likely be slow...
- This information is taken from the
Clone the project repo:
git clone https://github.com/KomelT/meshtastic-map
cd meshtastic-map
Build Docker images:
docker compose -f docker-compose.dev.yaml build
Update environment variables:
nano docker-compose.yaml
ENV lists:
Run:
docker compose -f docker-compose.dev.yaml up
Clone the project repo:
git clone https://github.com/KomelT/meshtastic-map
cd meshtastic-map
Build Docker images:
docker compose build
Update environment variables:
nano docker-compose.yaml
ENV lists:
Run:
docker compose up
You can just git pull
or pull new image from Docekr Hub. Migrations will handle DB update.
If you have a feature request, or find a bug, please open an issue here on GitHub.
MIT
This project is not affiliated with or endorsed by the Meshtastic project. The Meshtastic logo is the trademark of Meshtastic LLC.
THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.