Getting Connected to Mesh-Plug!

Overview

Mesh-Plug connects your Meshtastic network to WordPress using MQTT; a lightweight, event-driven messaging protocol designed for low-power and intermittent devices. Once connected, your site can receive, visualize, and optionally archive mesh telemetry, messages, and node metadata in near real time.

You do not need to be an IoT engineer to use Mesh-Plug; however, a basic understanding of networking and WordPress administration will make setup smoother.

This guide reflects the current Mesh-Plug architecture, including auto-configured brokers, WebSocket support, NodeDB handling, and optional archival features.


Skills and Tools You Should Be Comfortable With

Recommended knowledge

  • Basic WordPress administration; installing plugins, navigating settings pages, and inserting shortcodes
  • Networking fundamentals; domains, ports, LAN vs public access
  • IoT data flow concepts; devices publish data, applications subscribe to it

Helpful but optional

  • Command-line usage (macOS, Linux, or Windows PowerShell)
  • Familiarity with Mosquitto or another MQTT broker
  • Experience with Meshtastic CLI for node configuration

Software and Hardware Requirements

Required

  • One or more Meshtastic devices (ESP32, T-Beam, Heltec, etc.) running current firmware
  • Mesh-Plug installed and activated on a WordPress site
  • An MQTT broker, either:
    • Automatically managed or proxied; or
    • Self-hosted (Mosquitto, EMQX, HiveMQ, Adafruit IO)

Optional but useful

  • Meshtastic CLI (pip install meshtastic)
  • MQTT Explorer or similar client for diagnostics

Once these pieces are in place, your mesh can bridge from radio to web without custom code.


What MQTT Does in Mesh-Plug

MQTT uses a publish/subscribe model:

  • Meshtastic nodes publish data such as telemetry, GPS, and messages to topics
  • Mesh-Plug subscribes to those topics and renders the data inside WordPress

Mesh-Plug handles:

  • WebSocket connections
  • Topic subscriptions
  • Message decoding and normalization
  • Optional NodeDB and message archiving

Your WordPress site effectively becomes a live dashboard for your mesh.


Step 1: Choose Your MQTT Connection Mode

Option A: Auto (Recommended)

This is the default and preferred setup for most users.

Mesh-Plug can automatically resolve and connect to an MQTT broker using your site’s domain, typically via WebSockets and a reverse proxy or tunnel.

Typical configuration

  • Mode: MQTT
  • Broker URL: auto
  • Client ID: auto-generated
  • Topic: msh/#
  • Authentication: none, unless your broker requires it

Mesh-Plug will attempt to connect using:

  • ws://yourdomain.com:9001 for HTTP; or
  • wss://yourdomain.com/mqtt for HTTPS environments

No code edits are required. Once enabled, Mesh-Plug subscribes and begins listening immediately.

This mode is ideal for:

  • Local brokers behind a tunnel
  • Managed MQTT services
  • Quick demos and production dashboards

Option B: Manual / Advanced Configuration

Use this option if you are running a dedicated broker, require authentication, or manage multiple feeds.

Broker setup example (Mosquitto)

Verify your broker is working:

# Terminal 1
mosquitto_sub -h 127.0.0.1 -t "test/topic" -v

# Terminal 2
mosquitto_pub -h 127.0.0.1 -t "test/topic" -m "Hello MQTT"

If the message appears, the broker is running correctly.

Configure your Meshtastic node

meshtastic --port /dev/cu.usbmodemXXXX \
  --set mqtt.enabled true \
  --set mqtt.address 192.168.0.110 \
  --set mqtt.username mqttuser \
  --set mqtt.password 'YourPasswordHere' \
  --set mqtt.json_enabled true \
  --set mqtt.tls_enabled false

meshtastic --reboot

Replace the address and credentials as needed.

Verify live data

mosquitto_sub -h 127.0.0.1 \
  -u mqttuser \
  -P 'YourPasswordHere' \
  -t 'msh/#' -v

You should see structured JSON packets from active nodes.


Step 2: Connect Mesh-Plug to the Broker

Navigate to:

WordPress → Settings → Mesh-Plug

Configure the following fields:

SettingAuto ModeAdvanced Mode
ModeMQTTMQTT
Broker URLautowss://broker.example.com:9001/mqtt
Client IDAutoCustom
Topicmsh/#Custom
Username / PasswordOptionalRequired if broker enforces auth
TLSAutoEnable for wss://
NodeDBOptionalOptional
ArchiveOptionalOptional

Save settings and reload the dashboard.

Once messages are flowing, Mesh-Plug begins populating node and telemetry data automatically.


Step 3: Displaying MQTT Data on Your Site

Mesh-Plug exposes data via shortcodes.

Basic example

[mesh_plug_display topic="msh/#"]

Common display formats

  • format="log"; live message stream
  • format="map"; node locations if GPS data exists
  • format="nodes"; NodeDB summary
  • format="chart"; telemetry graphs (archive required)

Shortcodes can be placed in pages, posts, widgets, or custom templates.


Step 4: Troubleshooting

IssueWhat to Check
No data visibleConfirm broker connection in Mesh-Plug logs
Connection errorsVerify broker URL, port, and protocol
Auth failuresTest credentials with MQTT Explorer
Topic mismatchEnsure node and plugin use same prefix
Nodes missingWait for first transmission; NodeDB builds dynamically
DisconnectsIncrease keepalive or review broker limits

Step 5: Going Further

Once your baseline setup is working, Mesh-Plug supports:

  • Multiple broker subscriptions
  • NodeDB enrichment and persistence
  • Telemetry charts and historical analysis
  • Message archiving in WordPress
  • Alerting and automation hooks
  • TLS, ACLs, and hardened production brokers

These features can be layered in gradually without reworking your base configuration.

These features can be layered in gradually without reworking your base configuration.


Final Notes

Mesh-Plug is designed to scale from a single demo node to full mesh monitoring systems.

Start with auto mode for speed and reliability; move to manual broker control when you need advanced routing, authentication, or data retention.

Within minutes, your WordPress site can become a live interface for off-grid networks; powered by MQTT, driven by Meshtastic, and fully web-accessible.


Comments

Leave a Reply

Your email address will not be published. Required fields are marked *