Files
Meshtastic-Android/ja-rJP/user/mqtt.html
T

3 lines
40 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!DOCTYPE html> <html lang="en-US"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=Edge"> <link rel="stylesheet" href="/Meshtastic-Android/assets/css/just-the-docs-default.css"> <link rel="stylesheet" href="/Meshtastic-Android/assets/css/just-the-docs-head-nav.css" id="jtd-head-nav-stylesheet"> <style id="jtd-nav-activation"> .site-nav ul li a { background-image: none; } </style> <script src="/Meshtastic-Android/assets/js/vendor/lunr.min.js"></script> <script src="/Meshtastic-Android/assets/js/just-the-docs.js"></script> <meta name="viewport" content="width=device-width, initial-scale=1"> <!-- Begin Jekyll SEO tag v2.9.0 --> <title>MQTT | Meshtastic Android</title> <meta name="generator" content="Jekyll v4.4.1" /> <meta property="og:title" content="MQTT" /> <meta property="og:locale" content="ja_rJP" /> <meta name="description" content="メッシュをインターネットに橋渡しします。MQTT サーバーの設定、暗号化の各レイヤー、マップ報告について説明します。" /> <meta name="twitter:description" property="og:description" content="メッシュをインターネットに橋渡しします。MQTT サーバーの設定、暗号化の各レイヤー、マップ報告について説明します。" /> <link rel="canonical" href="/Meshtastic-Android/ja-rJP/user/mqtt.html" /> <meta property="og:url" content="/Meshtastic-Android/ja-rJP/user/mqtt.html" /> <meta property="og:site_name" content="Meshtastic Android" /> <meta property="og:type" content="website" /> <meta name="twitter:card" content="summary" /> <meta name="twitter:title" content="MQTT" /> <script type="application/ld+json"> {"@context":"https://schema.org","@type":"WebPage","description":"メッシュをインターネットに橋渡しします。MQTT サーバーの設定、暗号化の各レイヤー、マップ報告について説明します。","headline":"MQTT","url":"/Meshtastic-Android/ja-rJP/user/mqtt.html"}</script> <!-- End Jekyll SEO tag --> <!-- Inter font from Google Fonts --> <link rel="preconnect" href="https://fonts.googleapis.com"> <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin> <link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&family=JetBrains+Mono:wght@400;500&display=swap" rel="stylesheet"> <style> /* M3-inspired typography */ :root { --font-sans: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', system-ui, sans-serif; --font-mono: 'JetBrains Mono', 'Fira Code', 'Cascadia Code', ui-monospace, monospace; } body, .site-title, .search-input { font-family: var(--font-sans) !important; } code, pre, .highlight { font-family: var(--font-mono) !important; font-size: 0.875em; } /* M3 surface elevation & rounding */ .main-content table { border-radius: 12px; overflow: hidden; } .main-content blockquote { border-radius: 12px; padding: 1rem 1.25rem; border-left-width: 4px; } .main-content pre { border-radius: 12px; } .main-content code { border-radius: 6px; padding: 0.15em 0.4em; } /* Smooth transitions for theme switching */ body, .side-bar, .main, .main-content, .site-header, .search-input, .search-results, a { transition: background-color 0.2s ease, color 0.2s ease, border-color 0.2s ease; } /* Theme toggle button styling */ .theme-toggle { background: none; border: 1px solid var(--border-color, #D5D6E0); border-radius: 20px; padding: 6px 12px; cursor: pointer; font-family: var(--font-sans); font-size: 0.75rem; font-weight: 500; display: inline-flex; align-items: center; gap: 6px; color: inherit; margin: 0 auto; transition: background-color 0.2s ease, border-color 0.2s ease; } .theme-toggle:hover { background-color: rgba(128, 128, 128, 0.1); } .theme-toggle-wrap { text-align: center; padding: 12px 0 4px; } /* Heading weight refinement */ h1, h2, h3, h4, h5, h6 { font-weight: 600; letter-spacing: -0.01em; } h1 { font-weight: 700; letter-spacing: -0.02em; } /* Smooth anchor scroll */ html { scroll-behavior: smooth; } /* Language switcher */ .language-switcher { display: inline-block; position: relative; margin-left: 8px; } .language-switcher-btn { cursor: pointer; font-size: 0.8rem; font-weight: 500; font-family: var(--font-sans); list-style: none; padding: 4px 10px; border: 1px solid var(--border-color, #D5D6E0); border-radius: 16px; display: inline-flex; align-items: center; gap: 4px; transition: background-color 0.2s ease; } .language-switcher-btn:hover { background-color: rgba(128, 128, 128, 0.1); } .language-switcher[open] .language-switcher-list { display: block; } .language-switcher-list { position: absolute; top: 100%; right: 0; left: auto; z-index: 100; list-style: none; padding: 8px 0; margin: 4px 0 0; min-width: 140px; background: var(--body-background-color, #fff); border: 1px solid var(--border-color, #D5D6E0); border-radius: 12px; box-shadow: 0 4px 12px rgba(0,0,0,0.1); } .language-switcher-list li { padding: 0; } .language-switcher-list a { display: block; padding: 6px 16px; text-decoration: none; font-size: 0.85rem; color: inherit; } .language-switcher-list a:hover { background-color: rgba(103, 234, 148, 0.15); } /* Version switcher (shares the language-switcher dropdown styling) */ .version-switcher { margin-left: 8px; } .version-switcher[hidden] { display: none; } /* Link out to the upstream meshtastic.org docs */ .upstream-docs-link { display: inline-flex; align-items: center; margin-left: 8px; padding: 4px 10px; border: 1px solid var(--border-color, #D5D6E0); border-radius: 16px; font-size: 0.8rem; font-weight: 500; font-family: var(--font-sans); text-decoration: none; color: inherit; transition: background-color 0.2s ease; } .upstream-docs-link:hover { background-color: rgba(128, 128, 128, 0.1); } </style> <script> // Respect OS preference on first visit, then remember user choice (function() { var stored = localStorage.getItem('jtd-theme'); if (stored) return; // will be applied by jtd.setTheme below if (window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches) { localStorage.setItem('jtd-theme', 'meshtastic-dark'); } })(); </script> </head> <body> <a class="skip-to-main" href="#main-content">Skip to main content</a> <svg xmlns="http://www.w3.org/2000/svg" class="d-none"> <symbol id="svg-link" viewBox="0 0 24 24"> <title>Link</title> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-link"> <path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"></path><path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"></path> </svg> </symbol> <symbol id="svg-menu" viewBox="0 0 24 24"> <title>Menu</title> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-menu"> <line x1="3" y1="12" x2="21" y2="12"></line><line x1="3" y1="6" x2="21" y2="6"></line><line x1="3" y1="18" x2="21" y2="18"></line> </svg> </symbol> <symbol id="svg-arrow-right" viewBox="0 0 24 24"> <title>Expand</title> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-chevron-right"> <polyline points="9 18 15 12 9 6"></polyline> </svg> </symbol> <!-- Feather. MIT License: https://github.com/feathericons/feather/blob/master/LICENSE --> <symbol id="svg-external-link" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-external-link"> <title id="svg-external-link-title">(external link)</title> <path d="M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6"></path><polyline points="15 3 21 3 21 9"></polyline><line x1="10" y1="14" x2="21" y2="3"></line> </symbol> <symbol id="svg-doc" viewBox="0 0 24 24"> <title>Document</title> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-file"> <path d="M13 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V9z"></path><polyline points="13 2 13 9 20 9"></polyline> </svg> </symbol> <symbol id="svg-search" viewBox="0 0 24 24"> <title>Search</title> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-search"> <circle cx="11" cy="11" r="8"></circle><line x1="21" y1="21" x2="16.65" y2="16.65"></line> </svg> </symbol> <!-- Bootstrap Icons. MIT License: https://github.com/twbs/icons/blob/main/LICENSE.md --> <symbol id="svg-copy" viewBox="0 0 16 16"> <title>Copy</title> <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-clipboard" viewBox="0 0 16 16"> <path d="M4 1.5H3a2 2 0 0 0-2 2V14a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V3.5a2 2 0 0 0-2-2h-1v1h1a1 1 0 0 1 1 1V14a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1V3.5a1 1 0 0 1 1-1h1v-1z"/> <path d="M9.5 1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-3a.5.5 0 0 1-.5-.5v-1a.5.5 0 0 1 .5-.5h3zm-3-1A1.5 1.5 0 0 0 5 1.5v1A1.5 1.5 0 0 0 6.5 4h3A1.5 1.5 0 0 0 11 2.5v-1A1.5 1.5 0 0 0 9.5 0h-3z"/> </svg> </symbol> <symbol id="svg-copied" viewBox="0 0 16 16"> <title>Copied</title> <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-clipboard-check-fill" viewBox="0 0 16 16"> <path d="M6.5 0A1.5 1.5 0 0 0 5 1.5v1A1.5 1.5 0 0 0 6.5 4h3A1.5 1.5 0 0 0 11 2.5v-1A1.5 1.5 0 0 0 9.5 0h-3Zm3 1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-3a.5.5 0 0 1-.5-.5v-1a.5.5 0 0 1 .5-.5h3Z"/> <path d="M4 1.5H3a2 2 0 0 0-2 2V14a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V3.5a2 2 0 0 0-2-2h-1v1A2.5 2.5 0 0 1 9.5 5h-3A2.5 2.5 0 0 1 4 2.5v-1Zm6.854 7.354-3 3a.5.5 0 0 1-.708 0l-1.5-1.5a.5.5 0 0 1 .708-.708L7.5 10.793l2.646-2.647a.5.5 0 0 1 .708.708Z"/> </svg> </symbol> </svg> <header class="side-bar"> <div class="site-header"> <a href="/Meshtastic-Android/" class="site-title lh-tight"> Meshtastic Android </a> <button id="menu-button" class="site-button btn-reset" aria-label="Menu" aria-expanded="false"> <svg viewBox="0 0 24 24" class="icon" aria-hidden="true"><use xlink:href="#svg-menu"></use></svg> </button> </div> <nav aria-label="Main" id="site-nav" class="site-nav"> <ul class="nav-list"><li class="nav-list-item"><a href="/Meshtastic-Android/en/" class="nav-list-link">Home</a></li><li class="nav-list-item"><button class="nav-list-expander btn-reset" aria-label="User Guide submenu" aria-expanded="false"> <svg viewBox="0 0 24 24" aria-hidden="true"><use xlink:href="#svg-arrow-right"></use></svg> </button><a href="/Meshtastic-Android/en/user.html" class="nav-list-link">User Guide</a><ul class="nav-list"><li class="nav-list-item"><a href="/Meshtastic-Android/en/user/onboarding.html" class="nav-list-link">Getting Started</a></li><li class="nav-list-item"><a href="/Meshtastic-Android/en/user/connections.html" class="nav-list-link">Connections</a></li><li class="nav-list-item"><a href="/Meshtastic-Android/en/user/messages-and-channels.html" class="nav-list-link">Messages & Channels</a></li><li class="nav-list-item"><a href="/Meshtastic-Android/en/user/nodes.html" class="nav-list-link">Nodes</a></li><li class="nav-list-item"><a href="/Meshtastic-Android/en/user/node-metrics.html" class="nav-list-link">Node Metrics</a></li><li class="nav-list-item"><a href="/Meshtastic-Android/en/user/map-and-waypoints.html" class="nav-list-link">Map & Waypoints</a></li><li class="nav-list-item"><a href="/Meshtastic-Android/en/user/settings-radio-user.html" class="nav-list-link">Settings — Radio & User</a></li><li class="nav-list-item"><a href="/Meshtastic-Android/en/user/settings-module-admin.html" class="nav-list-link">Settings — Modules & Admin</a></li><li class="nav-list-item"><a href="/Meshtastic-Android/en/user/telemetry-and-sensors.html" class="nav-list-link">Telemetry & Sensors</a></li><li class="nav-list-item"><a href="/Meshtastic-Android/en/user/tak.html" class="nav-list-link">TAK Integration</a></li><li class="nav-list-item"><a href="/Meshtastic-Android/en/user/mqtt.html" class="nav-list-link">MQTT</a></li><li class="nav-list-item"><a href="/Meshtastic-Android/en/user/discovery.html" class="nav-list-link">Discovery</a></li><li class="nav-list-item"><a href="/Meshtastic-Android/en/user/firmware.html" class="nav-list-link">Firmware Updates</a></li><li class="nav-list-item"><a href="/Meshtastic-Android/en/user/desktop.html" class="nav-list-link">Desktop App</a></li><li class="nav-list-item"><a href="/Meshtastic-Android/en/user/signal-meter.html" class="nav-list-link">How the Meshtastic Signal Meter Works</a></li><li class="nav-list-item"><a href="/Meshtastic-Android/en/user/units-and-locale.html" class="nav-list-link">Units, Measurement & Locale</a></li><li class="nav-list-item"><a href="/Meshtastic-Android/en/user/translate.html" class="nav-list-link">Translate the App</a></li><li class="nav-list-item"><a href="/Meshtastic-Android/en/user/android-auto.html" class="nav-list-link">Android Auto</a></li><li class="nav-list-item"><a href="/Meshtastic-Android/en/user/app-functions.html" class="nav-list-link">App Functions</a></li><li class="nav-list-item"><a href="/Meshtastic-Android/en/user/widget.html" class="nav-list-link">Home Screen Widget</a></li><li class="nav-list-item"><a href="/Meshtastic-Android/en/user/help-and-docs.html" class="nav-list-link">Help & In-App Docs</a></li><li class="nav-list-item"><a href="/Meshtastic-Android/en/user/debug-logs.html" class="nav-list-link">Debug Logs</a></li></ul></li><li class="nav-list-item"><button class="nav-list-expander btn-reset" aria-label="Developer Guide submenu" aria-expanded="false"> <svg viewBox="0 0 24 24" aria-hidden="true"><use xlink:href="#svg-arrow-right"></use></svg> </button><a href="/Meshtastic-Android/en/developer.html" class="nav-list-link">Developer Guide</a><ul class="nav-list"><li class="nav-list-item"><a href="/Meshtastic-Android/en/developer/architecture.html" class="nav-list-link">Architecture</a></li><li class="nav-list-item"><a href="/Meshtastic-Android/en/developer/codebase.html" class="nav-list-link">Codebase</a></li><li class="nav-list-item"><a href="/Meshtastic-Android/en/developer/adding-a-feature-module.html" class="nav-list-link">Adding a Feature Module</a></li><li class="nav-list-item"><a href="/Meshtastic-Android/en/developer/navigation-and-deep-links.html" class="nav-list-link">Navigation & Deep Links</a></li><li class="nav-list-item"><a href="/Meshtastic-Android/en/developer/transport.html" class="nav-list-link">Transport</a></li><li class="nav-list-item"><a href="/Meshtastic-Android/en/developer/persistence.html" class="nav-list-link">Persistence</a></li><li class="nav-list-item"><a href="/Meshtastic-Android/en/developer/testing.html" class="nav-list-link">Testing</a></li><li class="nav-list-item"><a href="/Meshtastic-Android/en/developer/contributing.html" class="nav-list-link">Contributing</a></li><li class="nav-list-item"><a href="/Meshtastic-Android/en/developer/measurement.html" class="nav-list-link">Measurement & Formatting</a></li><li class="nav-list-item"><a href="/Meshtastic-Android/en/developer/test-builds.html" class="nav-list-link">Test Builds & Obtainium</a></li></ul></li></ul> </nav> <div class="d-md-block d-sm-none"> <div class="site-footer"> This site uses <a href="https://github.com/just-the-docs/just-the-docs">Just the Docs</a>, a documentation theme for Jekyll. </div> </div> </header> <div class="main" id="top"> <div id="main-header" class="main-header"> <div class="search" role="search"> <div class="search-input-wrap"> <input type="text" id="search-input" class="search-input" tabindex="0" placeholder="Search Meshtastic Android" autocomplete="off"> <label for="search-input" class="search-label"> <span class="sr-only">Search Meshtastic Android</span> <svg viewBox="0 0 24 24" class="search-icon" aria-hidden="true"><use xlink:href="#svg-search"></use></svg> </label> </div> <div id="search-results" class="search-results"></div> </div> <div class="theme-toggle-wrap"> <button class="theme-toggle" id="theme-toggle" aria-label="Toggle dark mode" title="Toggle light/dark theme" onclick="toggleMeshtasticTheme()"> <span id="theme-icon">🌙</span> <span id="theme-label">Dark</span> </button> <details class="language-switcher version-switcher" id="version-switcher" aria-label="Documentation version" hidden> <summary class="language-switcher-btn" title="Switch documentation version"> 🏷️ <span id="version-current"></span> </summary> <ul class="language-switcher-list" id="version-switcher-list"></ul> </details> <script> (function() { var baseurl = '/Meshtastic-Android'; var root = baseurl; var channel = 'latest'; // /main/, /vX.Y.Z/ or a prerelease snapshot like /v2.8.0-open.1/. var match = baseurl.match(/^(.*)\/(main|v\d+\.\d+\.\d+(?:-(?:open|closed)\.\d+)?)$/); if (match) { root = match[1]; channel = match[2]; } fetch(root + '/versions.json') .then(function(res) { return res.ok ? res.json() : Promise.reject(); }) .then(function(data) { var switcher = document.getElementById('version-switcher'); var list = document.getElementById('version-switcher-list'); var current = document.getElementById('version-current'); if (!switcher || !list || !current) return; // Keep the reader on the same page when switching channels; a page // that doesn't exist in the target version lands on the 404 page. var relativePath = location.pathname.slice(baseurl.length) + location.hash; var entries = []; if (data.latest) { entries.push({ id: 'latest', label: 'latest (v' + data.latest + ')', base: root }); } // Prereleases are documented ahead of general availability, so the track // is always spelled out — a reader must not mistake a closed-testing // snapshot for a shipped release. (data.prereleases || []).forEach(function(p) { entries.push({ id: p.dir, label: p.dir.replace(/^v/, 'v') + ' — ' + p.track + ' testing', base: root + '/' + p.dir }); }); if (data.hasMain) { entries.push({ id: 'main', label: 'main (unreleased snapshot)', base: root + '/main' }); } (data.versions || []).forEach(function(v) { entries.push({ id: 'v' + v, label: 'v' + v, base: root + '/v' + v }); }); var currentEntry = entries.filter(function(e) { return e.id === channel; })[0]; current.textContent = currentEntry ? currentEntry.label : channel; var others = entries.filter(function(e) { return e.id !== channel; }); if (others.length === 0) return; others.forEach(function(e) { var li = document.createElement('li'); var a = document.createElement('a'); a.href = e.base + relativePath; a.textContent = e.label; li.appendChild(a); list.appendChild(li); }); switcher.hidden = false; }) .catch(function() { /* no manifest (local build) — leave switcher hidden */ }); })(); </script> <details class="language-switcher" aria-label="Language options"> <summary class="language-switcher-btn" title="View in another language"> 🌐 <span class="lang-current">日本語</span> </summary> <ul class="language-switcher-list"> <li><a href="/Meshtastic-Android/en/user/mqtt" lang="en">English</a></li> <li><a href="/Meshtastic-Android/ar-rSA/user/mqtt" lang="ar-rSA" dir="rtl">العربية</a></li> <li><a href="/Meshtastic-Android/be-rBY/user/mqtt" lang="be-rBY" >Беларуская</a></li> <li><a href="/Meshtastic-Android/bg-rBG/user/mqtt" lang="bg-rBG" >Български</a></li> <li><a href="/Meshtastic-Android/ca-rES/user/mqtt" lang="ca-rES" >Català</a></li> <li><a href="/Meshtastic-Android/cs-rCZ/user/mqtt" lang="cs-rCZ" >Čeština</a></li> <li><a href="/Meshtastic-Android/de-rDE/user/mqtt" lang="de-rDE" >Deutsch</a></li> <li><a href="/Meshtastic-Android/el-rGR/user/mqtt" lang="el-rGR" >Ελληνικά</a></li> <li><a href="/Meshtastic-Android/es-rES/user/mqtt" lang="es-rES" >Español</a></li> <li><a href="/Meshtastic-Android/et-rEE/user/mqtt" lang="et-rEE" >Eesti</a></li> <li><a href="/Meshtastic-Android/fi-rFI/user/mqtt" lang="fi-rFI" >Suomi</a></li> <li><a href="/Meshtastic-Android/fr-rFR/user/mqtt" lang="fr-rFR" >Français</a></li> <li><a href="/Meshtastic-Android/ga-rIE/user/mqtt" lang="ga-rIE" >Gaeilge</a></li> <li><a href="/Meshtastic-Android/gl-rES/user/mqtt" lang="gl-rES" >Galego</a></li> <li><a href="/Meshtastic-Android/iw-rIL/user/mqtt" lang="iw-rIL" dir="rtl">עברית</a></li> <li><a href="/Meshtastic-Android/hr-rHR/user/mqtt" lang="hr-rHR" >Hrvatski</a></li> <li><a href="/Meshtastic-Android/ht-rHT/user/mqtt" lang="ht-rHT" >Kreyòl Ayisyen</a></li> <li><a href="/Meshtastic-Android/hu-rHU/user/mqtt" lang="hu-rHU" >Magyar</a></li> <li><a href="/Meshtastic-Android/is-rIS/user/mqtt" lang="is-rIS" >Íslenska</a></li> <li><a href="/Meshtastic-Android/it-rIT/user/mqtt" lang="it-rIT" >Italiano</a></li> <li><a href="/Meshtastic-Android/ko-rKR/user/mqtt" lang="ko-rKR" >한국어</a></li> <li><a href="/Meshtastic-Android/lt-rLT/user/mqtt" lang="lt-rLT" >Lietuvių</a></li> <li><a href="/Meshtastic-Android/nl-rNL/user/mqtt" lang="nl-rNL" >Nederlands</a></li> <li><a href="/Meshtastic-Android/no-rNO/user/mqtt" lang="no-rNO" >Norsk</a></li> <li><a href="/Meshtastic-Android/pl-rPL/user/mqtt" lang="pl-rPL" >Polski</a></li> <li><a href="/Meshtastic-Android/pt-rBR/user/mqtt" lang="pt-rBR" >Português (Brasil)</a></li> <li><a href="/Meshtastic-Android/pt-rPT/user/mqtt" lang="pt-rPT" >Português</a></li> <li><a href="/Meshtastic-Android/ro-rRO/user/mqtt" lang="ro-rRO" >Română</a></li> <li><a href="/Meshtastic-Android/ru-rRU/user/mqtt" lang="ru-rRU" >Русский</a></li> <li><a href="/Meshtastic-Android/sk-rSK/user/mqtt" lang="sk-rSK" >Slovenčina</a></li> <li><a href="/Meshtastic-Android/sl-rSI/user/mqtt" lang="sl-rSI" >Slovenščina</a></li> <li><a href="/Meshtastic-Android/sq-rAL/user/mqtt" lang="sq-rAL" >Shqip</a></li> <li><a href="/Meshtastic-Android/sr-rLatn/user/mqtt" lang="sr-rLatn" >Српски (Latinica)</a></li> <li><a href="/Meshtastic-Android/srp/user/mqtt" lang="srp" >Српски (Ћирилица)</a></li> <li><a href="/Meshtastic-Android/sv-rSE/user/mqtt" lang="sv-rSE" >Svenska</a></li> <li><a href="/Meshtastic-Android/tr-rTR/user/mqtt" lang="tr-rTR" >Türkçe</a></li> <li><a href="/Meshtastic-Android/uk-rUA/user/mqtt" lang="uk-rUA" >Українська</a></li> <li><a href="/Meshtastic-Android/zh-rCN/user/mqtt" lang="zh-rCN" >中文 (简体)</a></li> <li><a href="/Meshtastic-Android/zh-rTW/user/mqtt" lang="zh-rTW" >中文 (繁體)</a></li> </ul> </details> <a class="upstream-docs-link" href="https://meshtastic.org/docs/" title="Official Meshtastic documentation (meshtastic.org)">Meshtastic Docs ↗</a> </div> <script> function toggleMeshtasticTheme() { var current = localStorage.getItem('jtd-theme') || 'meshtastic'; var next = (current === 'meshtastic-dark') ? 'meshtastic' : 'meshtastic-dark'; if (typeof jtd !== 'undefined' && typeof jtd.setTheme === 'function') { jtd.setTheme(next); } localStorage.setItem('jtd-theme', next); var icon = document.getElementById('theme-icon'); var label = document.getElementById('theme-label'); if (icon && label) { icon.textContent = (next === 'meshtastic-dark') ? '☀️' : '🌙'; label.textContent = (next === 'meshtastic-dark') ? 'Light' : 'Dark'; } } // Apply stored/OS theme on page load (function() { var theme = localStorage.getItem('jtd-theme') || 'meshtastic'; // Sync toggle label immediately var icon = document.getElementById('theme-icon'); var label = document.getElementById('theme-label'); if (icon && label) { icon.textContent = (theme === 'meshtastic-dark') ? '☀️' : '🌙'; label.textContent = (theme === 'meshtastic-dark') ? 'Light' : 'Dark'; } // Apply theme once jtd is ready function tryApply() { if (typeof jtd !== 'undefined' && typeof jtd.setTheme === 'function') { jtd.setTheme(theme); } else { setTimeout(tryApply, 50); } } tryApply(); })(); </script> </div> <div class="main-content-wrap"> <nav aria-label="Breadcrumb" class="breadcrumb-nav"> <ol class="breadcrumb-nav-list"> <li class="breadcrumb-nav-list-item"><a href="/Meshtastic-Android/en/user.html">User Guide</a></li> <li class="breadcrumb-nav-list-item"><span>MQTT</span></li> </ol> </nav> <div id="main-content" class="main-content"> <main> <div class="locale-page-banner" > <p class="locale-notice"> 🌐 <strong>日本語</strong> — Community translation <a href="/Meshtastic-Android/en/user/mqtt">View in English</a> </p> </div> <div lang="ja-rJP"> <h1 id="mqtt"> <a href="#mqtt" class="anchor-heading" aria-labelledby="mqtt"><svg viewBox="0 0 16 16" aria-hidden="true"><use xlink:href="#svg-link"></use></svg></a> MQTT </h1> <p>MQTT は、Meshtastic のメッシュネットワークをインターネットに橋渡しし、無線の到達範囲を超えた長距離通信を可能にします。</p> <h2 id="概要"> <a href="#概要" class="anchor-heading" aria-labelledby="概要"><svg viewBox="0 0 16 16" aria-hidden="true"><use xlink:href="#svg-link"></use></svg></a> 概要 </h2> <p>MQTT モジュールは、ノードを MQTT サーバーに接続し、次のことを可能にします:</p> <ul> <li>インターネット経由で、物理的に異なるメッシュ上のノードにメッセージを届ける</li> <li>ホームオートメーションや監視システムとの連携</li> <li>ノードの位置を公開の Meshtastic マップに公開する</li> <li>ログ記録や通知のためのカスタムデータパイプライン</li> </ul> <h2 id="仕組み"> <a href="#仕組み" class="anchor-heading" aria-labelledby="仕組み"><svg viewBox="0 0 16 16" aria-hidden="true"><use xlink:href="#svg-link"></use></svg></a> 仕組み </h2> <div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>[自分のノード] → 無線 → [WiFi 付きゲートウェイノード] → MQTT サーバー → [リモートゲートウェイ] → 無線 → [リモートノード]
</code></pre></div></div> <p>インターネットに接続されたゲートウェイノード(WiFi または Ethernet)が、メッシュのメッセージを MQTT トピックに公開します。 同じトピックを購読しているリモートのゲートウェイが、それらのメッセージを自分のローカルメッシュに取り込みます。</p> <h2 id="設定"> <a href="#設定" class="anchor-heading" aria-labelledby="設定"><svg viewBox="0 0 16 16" aria-hidden="true"><use xlink:href="#svg-link"></use></svg></a> 設定 </h2> <h3 id="mqtt-を有効にする"> <a href="#mqtt-を有効にする" class="anchor-heading" aria-labelledby="mqtt-を有効にする"><svg viewBox="0 0 16 16" aria-hidden="true"><use xlink:href="#svg-link"></use></svg></a> MQTT を有効にする </h3> <ol> <li>「<strong>設定 → モジュール設定 → MQTT</strong>」に移動します。</li> <li>MQTT モジュールを有効にします。</li> <li>サーバーへの接続を設定します:</li> </ol> <p><img src="../../assets/screenshots/settings_switch.png" alt="MQTT のトグルスイッチ" /></p> <div class="table-wrapper"><table> <thead> <tr> <th>設定項目</th> <th>説明</th> <th>デフォルト</th> </tr> </thead> <tbody> <tr> <td>サーバーアドレス</td> <td>MQTT サーバーのホスト名</td> <td>mqtt.meshtastic.org</td> </tr> <tr> <td>ユーザー名</td> <td>サーバーの認証</td> <td>meshdev</td> </tr> <tr> <td>パスワード</td> <td>サーバーの認証</td> <td>large4cats</td> </tr> <tr> <td>ルートトピック</td> <td>メッセージのベーストピック</td> <td>msh</td> </tr> <tr> <td>暗号化</td> <td>MQTT ペイロードを暗号化</td> <td>有効</td> </tr> <tr> <td><del>JSON 出力</del></td> <td>⚠️ <strong>非推奨</strong>:JSON パケットのサポートはファームウェアから削除されました。このフィールドは無視されます</td> <td>無効</td> </tr> <tr> <td>TLS</td> <td>サーバーへのセキュアな接続</td> <td>無効</td> </tr> <tr> <td>マップ報告</td> <td>公開マップに位置を報告</td> <td>無効</td> </tr> </tbody> </table></div> <h3 id="このスマートフォンでの-mqtt-プロキシ"> <a href="#このスマートフォンでの-mqtt-プロキシ" class="anchor-heading" aria-labelledby="このスマートフォンでの-mqtt-プロキシ"><svg viewBox="0 0 16 16" aria-hidden="true"><use xlink:href="#svg-link"></use></svg></a> このスマートフォンでの MQTT プロキシ </h3> <p>ノード自体がインターネットに接続できない場合、接続中のスマートフォンを MQTT ゲートウェイとして使えます。モジュール設定で「<strong>MQTT</strong>」と「<strong>クライアントへのプロキシを有効化</strong>」を有効にすると、アプリがスマートフォンのインターネット接続を通じて、無線機とサーバーの間で MQTT の通信を中継します。</p> <p>MQTT 設定画面の上部にある「<strong>このスマートフォンでの MQTT プロキシ</strong>」トグルは、この中継が現在動作しているかどうかを示し、デバイスの MQTT 設定を編集して保存し直すことなく、すぐに停止(または再開)できます。</p> <h3 id="デフォルトの-meshtastic-サーバー"> <a href="#デフォルトの-meshtastic-サーバー" class="anchor-heading" aria-labelledby="デフォルトの-meshtastic-サーバー"><svg viewBox="0 0 16 16" aria-hidden="true"><use xlink:href="#svg-link"></use></svg></a> デフォルトの Meshtastic サーバー </h3> <p>コミュニティが <code class="language-plaintext highlighter-rouge">mqtt.meshtastic.org</code> で公開サーバーを運用しています。 これは一般的な利用やテストを目的としています。</p> <blockquote> <p>ℹ️ <strong>注意:</strong> <code class="language-plaintext highlighter-rouge">mqtt.meshtastic.org</code> への接続は、TLS のトグルがオフでも常に TLS(ポート 8883)を使用します。 それ以外のサーバーでは、TLS は有効にした場合にのみ使用されます(TLS ありはポート 8883、なしは 1883)。</p> </blockquote> <blockquote> <p>🔒 <strong>プライバシー:</strong> 公開サーバー上のメッセージは、購読している誰もが読めます。 プライベートな通信には、必ずチャンネルの暗号化を使用してください。</p> </blockquote> <h3 id="プライベートサーバー"> <a href="#プライベートサーバー" class="anchor-heading" aria-labelledby="プライベートサーバー"><svg viewBox="0 0 16 16" aria-hidden="true"><use xlink:href="#svg-link"></use></svg></a> プライベートサーバー </h3> <p>プライバシーと制御を高めるために、独自の MQTT サーバーを運用できます:</p> <ul> <li>Mosquitto(軽量、オープンソース)</li> <li>HiveMQ</li> <li>EMQX</li> </ul> <p>適切な認証情報を設定して、ノードがプライベートサーバーに接続するよう構成します。</p> <h2 id="マップ報告"> <a href="#マップ報告" class="anchor-heading" aria-labelledby="マップ報告"><svg viewBox="0 0 16 16" aria-hidden="true"><use xlink:href="#svg-link"></use></svg></a> マップ報告 </h2> <p>マップ報告を有効にすると、ノードは自分の位置を Meshtastic のコミュニティマップに公開します:</p> <ul> <li><a href="https://meshmap.net">meshmap.net</a> や、同様のコミュニティマップサービスで表示されます</li> <li>共有されるのは位置とノード情報のみです</li> <li>位置を公開したくない場合は、これを無効にしてください</li> </ul> <h2 id="アップリンクとダウンリンク"> <a href="#アップリンクとダウンリンク" class="anchor-heading" aria-labelledby="アップリンクとダウンリンク"><svg viewBox="0 0 16 16" aria-hidden="true"><use xlink:href="#svg-link"></use></svg></a> アップリンクとダウンリンク </h2> <div class="table-wrapper"><table> <thead> <tr> <th>方向</th> <th>説明</th> </tr> </thead> <tbody> <tr> <td><strong>アップリンク</strong></td> <td>メッシュ → MQTT サーバーへのメッセージ</td> </tr> <tr> <td><strong>ダウンリンク</strong></td> <td>MQTT サーバー → メッシュへのメッセージ</td> </tr> </tbody> </table></div> <p>メッセージの流れと電波利用時間を制御するため、どの方向を有効にするかをチャンネルごとに設定します。</p> <h2 id="メッセージ形式"> <a href="#メッセージ形式" class="anchor-heading" aria-labelledby="メッセージ形式"><svg viewBox="0 0 16 16" aria-hidden="true"><use xlink:href="#svg-link"></use></svg></a> メッセージ形式 </h2> <p>MQTT は protobuf のメッセージ形式を使用します:</p> <div class="table-wrapper"><table> <thead> <tr> <th>形式</th> <th>説明</th> <th>用途</th> </tr> </thead> <tbody> <tr> <td><strong>Protobuf</strong></td> <td>バイナリの Meshtastic protobuf エンコード</td> <td>ノード間のメッシュ橋渡し</td> </tr> </tbody> </table></div> <blockquote> <p>⚠️ <strong>注意:</strong> JSON 出力のサポートはファームウェアから削除されました。 <code class="language-plaintext highlighter-rouge">json_enabled</code> の設定は、以前との互換性のためにアプリ上には表示されますが、現在のファームウェアバージョンには影響しません。</p> </blockquote> <h2 id="暗号化とプライバシー"> <a href="#暗号化とプライバシー" class="anchor-heading" aria-labelledby="暗号化とプライバシー"><svg viewBox="0 0 16 16" aria-hidden="true"><use xlink:href="#svg-link"></use></svg></a> 暗号化とプライバシー </h2> <p>階層化された暗号化モデルを理解する:</p> <ol> <li><strong>チャンネルの暗号化</strong>は、MQTT の<em>前に</em>メッシュ上で行われます。 チャンネルに PSK が設定されている場合、MQTT ペイロードはすでに暗号化されています。サーバーや購読者には暗号文しか見えません。</li> <li><strong>MQTT の暗号化</strong>(モジュールの設定)は、サーバーへの転送のために追加の暗号化レイヤーを加えます。 これはメタデータやルーティング情報を保護します。</li> <li><strong>TLS</strong> はサーバーへの TCP 接続自体を暗号化し、ネットワークレベルの盗聴を防ぎます。</li> </ol> <blockquote> <p>🔒 <strong>重要:</strong> デフォルトの公開チャンネルは、よく知られた鍵を使用しています。 デフォルトチャンネルで MQTT 経由で送信されるメッセージは、実質的に<strong>暗号化されていません</strong>。誰でも解読できます。 プライベートな通信には、必ずカスタムの PSK を使用してください。</p> </blockquote> <h2 id="ベストプラクティス"> <a href="#ベストプラクティス" class="anchor-heading" aria-labelledby="ベストプラクティス"><svg viewBox="0 0 16 16" aria-hidden="true"><use xlink:href="#svg-link"></use></svg></a> ベストプラクティス </h2> <ul> <li>MQTT に橋渡しするチャンネルでは、チャンネルレベルの暗号化(PSK)を使用します</li> <li>インターネットに接続できないノードでは MQTT を有効にしないでください(バッファリングしてメモリを浪費します)</li> <li>機密性の高い運用にはプライベートサーバーを使用します</li> <li>混雑した MQTT トピックからメッセージをダウンリンクする際は、電波利用時間に注意してください。ダウンリンクされたメッセージはすべて、ローカルメッシュの無線の電波利用時間を消費します</li> <li>メッセージを送り返さず、リモートでメッシュを監視するだけでよい場合は、アップリンクのみを有効にすることを検討してください</li> </ul> <h2 id="トラブルシューティング"> <a href="#トラブルシューティング" class="anchor-heading" aria-labelledby="トラブルシューティング"><svg viewBox="0 0 16 16" aria-hidden="true"><use xlink:href="#svg-link"></use></svg></a> トラブルシューティング </h2> <h3 id="mqtt-が接続できない"> <a href="#mqtt-が接続できない" class="anchor-heading" aria-labelledby="mqtt-が接続できない"><svg viewBox="0 0 16 16" aria-hidden="true"><use xlink:href="#svg-link"></use></svg></a> MQTT が接続できない </h3> <ul> <li><strong>WiFi を確認:</strong> ゲートウェイノードには、有効なインターネット接続(WiFi または Ethernet)が必要です。 MQTT は LoRa の無線リンク自体では動作しません。</li> <li><strong>認証情報を確認:</strong> ユーザー名やパスワードが正しくないと、ほとんどのサーバーでは何も表示されずに失敗します。 末尾のスペースがないか、よく確認してください。</li> <li><strong>ファイアウォール:</strong> ポート 1883(MQTT)または 8883(MQTT+TLS)が開いている必要があります。 一部のネットワークは、標準外のポートをブロックします。</li> <li><strong>DNS 解決:</strong> カスタムのサーバーホスト名を使う場合は、ノードがそれを解決できるか確認してください。 サーバーの IP アドレスを直接試してみてください。</li> </ul> <h3 id="メッセージが橋渡しされない"> <a href="#メッセージが橋渡しされない" class="anchor-heading" aria-labelledby="メッセージが橋渡しされない"><svg viewBox="0 0 16 16" aria-hidden="true"><use xlink:href="#svg-link"></use></svg></a> メッセージが橋渡しされない </h3> <ul> <li><strong>アップリンク/ダウンリンクの設定を確認:</strong> アップリンクのみが有効な場合、メッセージはメッシュから MQTT へ流れますが、戻ってきません。 受信側のゲートウェイでダウンリンクを有効にしてください。</li> <li><strong>チャンネルの不一致:</strong> 両方のゲートウェイが、同じ PSK を持つ同じチャンネルを共有している必要があります。 不一致の場合、メッセージは異なる鍵で暗号化され、判読できないデータとして表示されます。</li> <li><strong>トピックの不一致:</strong> 両方のゲートウェイが同じルートトピックを使用しているか確認してください。 デフォルトの <code class="language-plaintext highlighter-rouge">msh</code> は公開サーバーで機能します。</li> </ul> <h2 id="関連トピック"> <a href="#関連トピック" class="anchor-heading" aria-labelledby="関連トピック"><svg viewBox="0 0 16 16" aria-hidden="true"><use xlink:href="#svg-link"></use></svg></a> 関連トピック </h2> <ul> <li><a href="settings-module-admin">設定:モジュールと管理</a>:MQTT モジュールの設定リファレンス</li> <li><a href="messages-and-channels">メッセージとチャンネル</a>:チャンネルの暗号化と PSK の設定</li> <li><a href="https://meshtastic.org/docs/software/integrations/mqtt">MQTT 連携ガイド</a>:meshtastic.org にある詳細な MQTT ドキュメント</li> </ul><hr /> </div> <style> .locale-page-banner { background: rgba(103, 234, 148, 0.1); border: 1px solid rgba(103, 234, 148, 0.3); border-radius: 12px; padding: 10px 16px; margin-bottom: 1.5rem; font-size: 0.85rem; } .locale-notice a { margin-left: 12px; font-weight: 500; } </style> </main> <hr> <footer> <footer class="site-footer"> Copyright &copy; 2026 Meshtastic LLC. Distributed under the <a href="https://www.gnu.org/licenses/gpl-3.0.html">GPL v3 License.</a> </footer> <div class="d-sm-block d-md-none"> <div class="mt-4 fs-2"> This site uses <a href="https://github.com/just-the-docs/just-the-docs">Just the Docs</a>, a documentation theme for Jekyll. </div> </div> </footer> </div> </div> <div class="search-overlay"></div> </div> </body> </html>