{"id":57,"date":"2026-01-06T20:38:09","date_gmt":"2026-01-06T20:38:09","guid":{"rendered":"https:\/\/michaelwinchester.com\/mesh-plug\/?p=57"},"modified":"2026-01-06T20:38:10","modified_gmt":"2026-01-06T20:38:10","slug":"getting-connected-to-mesh-plug","status":"publish","type":"post","link":"https:\/\/michaelwinchester.com\/mesh-plug\/2026\/01\/06\/getting-connected-to-mesh-plug\/","title":{"rendered":"Getting Connected to Mesh-Plug!"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\">Overview<\/h2>\n\n\n\n<p>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.<\/p>\n\n\n\n<p>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.<\/p>\n\n\n\n<p>This guide reflects the <strong>current Mesh-Plug architecture<\/strong>, including auto-configured brokers, WebSocket support, NodeDB handling, and optional archival features.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Skills and Tools You Should Be Comfortable With<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Recommended knowledge<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Basic WordPress administration<\/strong>; installing plugins, navigating settings pages, and inserting shortcodes<\/li>\n\n\n\n<li><strong>Networking fundamentals<\/strong>; domains, ports, LAN vs public access<\/li>\n\n\n\n<li><strong>IoT data flow concepts<\/strong>; devices publish data, applications subscribe to it<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Helpful but optional<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Command-line usage (macOS, Linux, or Windows PowerShell)<\/li>\n\n\n\n<li>Familiarity with Mosquitto or another MQTT broker<\/li>\n\n\n\n<li>Experience with Meshtastic CLI for node configuration<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Software and Hardware Requirements<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Required<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>One or more <strong>Meshtastic devices<\/strong> (ESP32, T-Beam, Heltec, etc.) running current firmware<\/li>\n\n\n\n<li><strong>Mesh-Plug<\/strong> installed and activated on a WordPress site<\/li>\n\n\n\n<li>An <strong>MQTT broker<\/strong>, either:\n<ul class=\"wp-block-list\">\n<li>Automatically managed or proxied; or<\/li>\n\n\n\n<li>Self-hosted (Mosquitto, EMQX, HiveMQ, Adafruit IO)<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Optional but useful<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Meshtastic CLI (<code>pip install meshtastic<\/code>)<\/li>\n\n\n\n<li>MQTT Explorer or similar client for diagnostics<\/li>\n<\/ul>\n\n\n\n<p>Once these pieces are in place, your mesh can bridge from radio to web without custom code.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">What MQTT Does in Mesh-Plug<\/h2>\n\n\n\n<p>MQTT uses a publish\/subscribe model:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Meshtastic nodes <strong>publish<\/strong> data such as telemetry, GPS, and messages to topics<\/li>\n\n\n\n<li>Mesh-Plug <strong>subscribes<\/strong> to those topics and renders the data inside WordPress<\/li>\n<\/ul>\n\n\n\n<p>Mesh-Plug handles:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>WebSocket connections<\/li>\n\n\n\n<li>Topic subscriptions<\/li>\n\n\n\n<li>Message decoding and normalization<\/li>\n\n\n\n<li>Optional NodeDB and message archiving<\/li>\n<\/ul>\n\n\n\n<p>Your WordPress site effectively becomes a live dashboard for your mesh.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Step 1: Choose Your MQTT Connection Mode<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Option A: Auto (Recommended)<\/h3>\n\n\n\n<p>This is the default and preferred setup for most users.<\/p>\n\n\n\n<p>Mesh-Plug can automatically resolve and connect to an MQTT broker using your site\u2019s domain, typically via WebSockets and a reverse proxy or tunnel.<\/p>\n\n\n\n<p><strong>Typical configuration<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Mode: <code>MQTT<\/code><\/li>\n\n\n\n<li>Broker URL: <code>auto<\/code><\/li>\n\n\n\n<li>Client ID: auto-generated<\/li>\n\n\n\n<li>Topic: <code>msh\/#<\/code><\/li>\n\n\n\n<li>Authentication: none, unless your broker requires it<\/li>\n<\/ul>\n\n\n\n<p>Mesh-Plug will attempt to connect using:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>ws:\/\/yourdomain.com:9001<\/code> for HTTP; or<\/li>\n\n\n\n<li><code>wss:\/\/yourdomain.com\/mqtt<\/code> for HTTPS environments<\/li>\n<\/ul>\n\n\n\n<p>No code edits are required. Once enabled, Mesh-Plug subscribes and begins listening immediately.<\/p>\n\n\n\n<p>This mode is ideal for:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Local brokers behind a tunnel<\/li>\n\n\n\n<li>Managed MQTT services<\/li>\n\n\n\n<li>Quick demos and production dashboards<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\">Option B: Manual \/ Advanced Configuration<\/h3>\n\n\n\n<p>Use this option if you are running a dedicated broker, require authentication, or manage multiple feeds.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Broker setup example (Mosquitto)<\/h4>\n\n\n\n<p>Verify your broker is working:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># Terminal 1\nmosquitto_sub -h 127.0.0.1 -t \"test\/topic\" -v\n\n# Terminal 2\nmosquitto_pub -h 127.0.0.1 -t \"test\/topic\" -m \"Hello MQTT\"\n<\/code><\/pre>\n\n\n\n<p>If the message appears, the broker is running correctly.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Configure your Meshtastic node<\/h4>\n\n\n\n<pre class=\"wp-block-code\"><code>meshtastic --port \/dev\/cu.usbmodemXXXX \\\n  --set mqtt.enabled true \\\n  --set mqtt.address 192.168.0.110 \\\n  --set mqtt.username mqttuser \\\n  --set mqtt.password 'YourPasswordHere' \\\n  --set mqtt.json_enabled true \\\n  --set mqtt.tls_enabled false\n\nmeshtastic --reboot\n<\/code><\/pre>\n\n\n\n<p>Replace the address and credentials as needed.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Verify live data<\/h4>\n\n\n\n<pre class=\"wp-block-code\"><code>mosquitto_sub -h 127.0.0.1 \\\n  -u mqttuser \\\n  -P 'YourPasswordHere' \\\n  -t 'msh\/#' -v\n<\/code><\/pre>\n\n\n\n<p>You should see structured JSON packets from active nodes.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Step 2: Connect Mesh-Plug to the Broker<\/h2>\n\n\n\n<p>Navigate to:<\/p>\n\n\n\n<p><strong>WordPress \u2192 Settings \u2192 Mesh-Plug<\/strong><\/p>\n\n\n\n<p>Configure the following fields:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Setting<\/th><th>Auto Mode<\/th><th>Advanced Mode<\/th><\/tr><\/thead><tbody><tr><td>Mode<\/td><td>MQTT<\/td><td>MQTT<\/td><\/tr><tr><td>Broker URL<\/td><td><code>auto<\/code><\/td><td><code>wss:\/\/broker.example.com:9001\/mqtt<\/code><\/td><\/tr><tr><td>Client ID<\/td><td>Auto<\/td><td>Custom<\/td><\/tr><tr><td>Topic<\/td><td><code>msh\/#<\/code><\/td><td>Custom<\/td><\/tr><tr><td>Username \/ Password<\/td><td>Optional<\/td><td>Required if broker enforces auth<\/td><\/tr><tr><td>TLS<\/td><td>Auto<\/td><td>Enable for <code>wss:\/\/<\/code><\/td><\/tr><tr><td>NodeDB<\/td><td>Optional<\/td><td>Optional<\/td><\/tr><tr><td>Archive<\/td><td>Optional<\/td><td>Optional<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p>Save settings and reload the dashboard.<\/p>\n\n\n\n<p>Once messages are flowing, Mesh-Plug begins populating node and telemetry data automatically.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Step 3: Displaying MQTT Data on Your Site<\/h2>\n\n\n\n<p>Mesh-Plug exposes data via shortcodes.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Basic example<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>&#91;mesh_plug_display topic=\"msh\/#\"]\n<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Common display formats<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>format=\"log\"<\/code>; live message stream<\/li>\n\n\n\n<li><code>format=\"map\"<\/code>; node locations if GPS data exists<\/li>\n\n\n\n<li><code>format=\"nodes\"<\/code>; NodeDB summary<\/li>\n\n\n\n<li><code>format=\"chart\"<\/code>; telemetry graphs (archive required)<\/li>\n<\/ul>\n\n\n\n<p>Shortcodes can be placed in pages, posts, widgets, or custom templates.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Step 4: Troubleshooting<\/h2>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Issue<\/th><th>What to Check<\/th><\/tr><\/thead><tbody><tr><td>No data visible<\/td><td>Confirm broker connection in Mesh-Plug logs<\/td><\/tr><tr><td>Connection errors<\/td><td>Verify broker URL, port, and protocol<\/td><\/tr><tr><td>Auth failures<\/td><td>Test credentials with MQTT Explorer<\/td><\/tr><tr><td>Topic mismatch<\/td><td>Ensure node and plugin use same prefix<\/td><\/tr><tr><td>Nodes missing<\/td><td>Wait for first transmission; NodeDB builds dynamically<\/td><\/tr><tr><td>Disconnects<\/td><td>Increase keepalive or review broker limits<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Step 5: Going Further<\/h2>\n\n\n\n<p>Once your baseline setup is working, Mesh-Plug supports:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Multiple broker subscriptions<\/li>\n\n\n\n<li>NodeDB enrichment and persistence<\/li>\n\n\n\n<li>Telemetry charts and historical analysis<\/li>\n\n\n\n<li>Message archiving in WordPress<\/li>\n\n\n\n<li>Alerting and automation hooks<\/li>\n\n\n\n<li>TLS, ACLs, and hardened production brokers<\/li>\n<\/ul>\n\n\n\n<p>These features can be layered in gradually without reworking your base configuration.<\/p>\n\n\n\n<p>These features can be layered in gradually without reworking your base configuration.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Final Notes<\/h2>\n\n\n\n<p>Mesh-Plug is designed to scale from a single demo node to full mesh monitoring systems.<\/p>\n\n\n\n<p>Start with <strong>auto mode<\/strong> for speed and reliability; move to <strong>manual broker control<\/strong> when you need advanced routing, authentication, or data retention.<\/p>\n\n\n\n<p>Within minutes, your WordPress site can become a live interface for off-grid networks; powered by MQTT, driven by Meshtastic, and fully web-accessible.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>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 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-57","post","type-post","status-publish","format-standard","hentry","category-mesh-plug"],"_links":{"self":[{"href":"https:\/\/michaelwinchester.com\/mesh-plug\/wp-json\/wp\/v2\/posts\/57","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/michaelwinchester.com\/mesh-plug\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/michaelwinchester.com\/mesh-plug\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/michaelwinchester.com\/mesh-plug\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/michaelwinchester.com\/mesh-plug\/wp-json\/wp\/v2\/comments?post=57"}],"version-history":[{"count":3,"href":"https:\/\/michaelwinchester.com\/mesh-plug\/wp-json\/wp\/v2\/posts\/57\/revisions"}],"predecessor-version":[{"id":109,"href":"https:\/\/michaelwinchester.com\/mesh-plug\/wp-json\/wp\/v2\/posts\/57\/revisions\/109"}],"wp:attachment":[{"href":"https:\/\/michaelwinchester.com\/mesh-plug\/wp-json\/wp\/v2\/media?parent=57"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/michaelwinchester.com\/mesh-plug\/wp-json\/wp\/v2\/categories?post=57"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/michaelwinchester.com\/mesh-plug\/wp-json\/wp\/v2\/tags?post=57"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}