Skip to main content

A powerful CLI and web interface for Meshtastic mesh networking devices

Project description

MeshConsole

A web-based monitoring and control dashboard for Meshtastic mesh networks.

PyPI m9wav.uk


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.py instead of meshconsole.

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 packets
  • meshtastic_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) or ls /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.ini under [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

meshconsole-2.2.1.tar.gz (41.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

meshconsole-2.2.1-py3-none-any.whl (42.9 kB view details)

Uploaded Python 3

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

Hashes for meshconsole-2.2.1.tar.gz
Algorithm Hash digest
SHA256 77d41087339a17e2330ea23be7e79839a5f919ef20b63cd3f2d0a2c6e6e4ca36
MD5 6eb043b2b4febd2dc8b1b50d35dd9168
BLAKE2b-256 a2de7735f6fea00a88f599245679b1e0bff4d8c3e4f0d40a1a7df9e0f37ac1d9

See more details on using hashes here.

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

Hashes for meshconsole-2.2.1-py3-none-any.whl
Algorithm Hash digest
SHA256 fbc3779e764116ef02b4e4eb28ac416d917b23ea00a10cc2aa890c595b4c9a02
MD5 1d4739463da09966d92c1cb7418e6baf
BLAKE2b-256 175d485443a24bc7e4d3c564fb10453378feeb8eec2cd7c51ab34dc70ec2d5a1

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page