A powerful CLI and web interface for Meshtastic mesh networking devices
Project description
A web-based monitoring and control dashboard for Meshtastic mesh networks.
Installation
pip install meshconsole
Or install from source:
git clone https://github.com/m9wav/MeshConsole.git
cd MeshConsole
pip install -r requirements.txt
So I got really into Meshtastic after picking up a couple of LoRa radios and wanted a way to monitor my mesh network from my computer. The official app is fine but I wanted something I could leave running on a server, log everything to a database, and maybe poke at later.
This started as a quick script and... well, it grew. Now it's got a web UI and everything. Figured I'd clean it up and share it.
What it does
- Connects to your Meshtastic device over USB or TCP/IP (WiFi)
- Logs all packets to a SQLite database
- Shows a live web dashboard with all the node activity
- Lets you send messages and run traceroutes from the web UI
- Exports your data to JSON/CSV if you want to analyze it elsewhere
- Auto-reconnects if the connection drops
The web interface shows positions on a map, telemetry data (battery, signal strength, etc), and you can see message history. Pretty handy for debugging mesh issues.
Setup
pip install -r requirements.txt
cp config.example.ini config.ini
Edit config.ini with your setup. The main thing is picking USB or TCP:
[Device]
# "usb" for plugged-in device, "tcp" for network
connection_type = usb
# Only needed for TCP mode
ip = 192.168.1.100
# Usually leave blank for auto-detect, but you can specify
# serial_port = /dev/cu.usbserial-0001
If you're using TCP, your device needs to have WiFi enabled and you need to know its IP.
Quick Start
USB Connection (device plugged in)
# Start web dashboard with USB-connected device
meshconsole listen --usb --web
# Specify serial port explicitly
meshconsole listen --usb --port /dev/ttyUSB0 --web
# macOS example
meshconsole listen --usb --port /dev/cu.usbserial-0001 --web
TCP/IP Connection (WiFi-enabled device)
# Start web dashboard with network-connected device
meshconsole listen --ip 192.168.1.100 --web
Then open http://localhost:5055 in your browser.
Other Commands
# Listen without web interface (CLI output only)
meshconsole listen --usb --verbose
# List nodes your device knows about
meshconsole nodes --usb
# Send a message
meshconsole send --usb --dest !12345678 --message "hey there"
# Traceroute to a node
meshconsole traceroute --usb --dest !12345678
Note: If installed from source, use
python3 meshconsole.pyinstead ofmeshconsole.
The web dashboard
When you run with --web, you get a dashboard at port 5055. It shows:
- Live packet feed (updates automatically)
- Node list with signal info
- Map with positions (if nodes are reporting GPS)
- Stats about your network
There's a password for sending messages/traceroutes so you can leave the dashboard open without worrying about someone messing with your network. Set it in config.ini under [Security]. Leave auth_password blank if you don't care.
Files
After running for a while you'll have:
meshtastic_messages.db- SQLite database with all your packetsmeshtastic_tool.log- Logs (rotates automatically)
The database is useful if you want to do your own analysis. The packets table has everything including the full raw packet data as JSON.
Exporting data
python3 meshconsole.py export --format json
python3 meshconsole.py export --format csv
Spits out meshtastic_data.json or meshtastic_data.csv.
Troubleshooting
Can't connect via USB:
- Make sure you have the right drivers (CP2102/CH340/etc)
- Check
ls /dev/cu.usb*(Mac) orls /dev/ttyUSB*(Linux) to see if the device shows up - Try specifying the port explicitly with
--port
Can't connect via TCP:
- Make sure WiFi is enabled on your Meshtastic device
- Check you can ping the IP
- The device uses port 4403 by default
Web interface not loading:
- Check if port 5055 is already in use
- Try a different port in
config.iniunder[Web]
Seeing your own messages in the log:
- Shouldn't happen - the tool auto-detects your local node and filters it out
- If it's not working, check the logs for the detected node ID
Dependencies
- meshtastic
- flask
- flask-cors
- protobuf
- pypubsub
All in requirements.txt.
License
MIT. Do whatever you want with it.
Built by M9WAV. If you find bugs or have ideas, feel free to open an issue.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file meshconsole-2.2.1.tar.gz.
File metadata
- Download URL: meshconsole-2.2.1.tar.gz
- Upload date:
- Size: 41.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
77d41087339a17e2330ea23be7e79839a5f919ef20b63cd3f2d0a2c6e6e4ca36
|
|
| MD5 |
6eb043b2b4febd2dc8b1b50d35dd9168
|
|
| BLAKE2b-256 |
a2de7735f6fea00a88f599245679b1e0bff4d8c3e4f0d40a1a7df9e0f37ac1d9
|
File details
Details for the file meshconsole-2.2.1-py3-none-any.whl.
File metadata
- Download URL: meshconsole-2.2.1-py3-none-any.whl
- Upload date:
- Size: 42.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
fbc3779e764116ef02b4e4eb28ac416d917b23ea00a10cc2aa890c595b4c9a02
|
|
| MD5 |
1d4739463da09966d92c1cb7418e6baf
|
|
| BLAKE2b-256 |
175d485443a24bc7e4d3c564fb10453378feeb8eec2cd7c51ab34dc70ec2d5a1
|