mirror of
https://github.com/meshtastic/Meshtastic-Android.git
synced 2026-10-03 00:54:34 -04:00
3 lines
52 KiB
HTML
3 lines
52 KiB
HTML
<!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>Обнаружение | Meshtastic Android</title> <meta name="generator" content="Jekyll v4.4.1" /> <meta property="og:title" content="Обнаружение" /> <meta property="og:locale" content="ru_rRU" /> <meta name="description" content="Исследуйте свою mesh-сеть — сканер локального обнаружения mesh-сети, трассировка путей, карты соседей и инструменты обнаружения нодов." /> <meta name="twitter:description" property="og:description" content="Исследуйте свою mesh-сеть — сканер локального обнаружения mesh-сети, трассировка путей, карты соседей и инструменты обнаружения нодов." /> <link rel="canonical" href="/Meshtastic-Android/ru-rRU/user/discovery.html" /> <meta property="og:url" content="/Meshtastic-Android/ru-rRU/user/discovery.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="Обнаружение" /> <script type="application/ld+json"> {"@context":"https://schema.org","@type":"WebPage","description":"Исследуйте свою mesh-сеть — сканер локального обнаружения mesh-сети, трассировка путей, карты соседей и инструменты обнаружения нодов.","headline":"Обнаружение","url":"/Meshtastic-Android/ru-rRU/user/discovery.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/discovery" lang="en">English</a></li> <li><a href="/Meshtastic-Android/ar-rSA/user/discovery" lang="ar-rSA" dir="rtl">العربية</a></li> <li><a href="/Meshtastic-Android/be-rBY/user/discovery" lang="be-rBY" >Беларуская</a></li> <li><a href="/Meshtastic-Android/bg-rBG/user/discovery" lang="bg-rBG" >Български</a></li> <li><a href="/Meshtastic-Android/ca-rES/user/discovery" lang="ca-rES" >Català</a></li> <li><a href="/Meshtastic-Android/cs-rCZ/user/discovery" lang="cs-rCZ" >Čeština</a></li> <li><a href="/Meshtastic-Android/de-rDE/user/discovery" lang="de-rDE" >Deutsch</a></li> <li><a href="/Meshtastic-Android/el-rGR/user/discovery" lang="el-rGR" >Ελληνικά</a></li> <li><a href="/Meshtastic-Android/es-rES/user/discovery" lang="es-rES" >Español</a></li> <li><a href="/Meshtastic-Android/et-rEE/user/discovery" lang="et-rEE" >Eesti</a></li> <li><a href="/Meshtastic-Android/fi-rFI/user/discovery" lang="fi-rFI" >Suomi</a></li> <li><a href="/Meshtastic-Android/fr-rFR/user/discovery" lang="fr-rFR" >Français</a></li> <li><a href="/Meshtastic-Android/ga-rIE/user/discovery" lang="ga-rIE" >Gaeilge</a></li> <li><a href="/Meshtastic-Android/gl-rES/user/discovery" lang="gl-rES" >Galego</a></li> <li><a href="/Meshtastic-Android/iw-rIL/user/discovery" lang="iw-rIL" dir="rtl">עברית</a></li> <li><a href="/Meshtastic-Android/hr-rHR/user/discovery" lang="hr-rHR" >Hrvatski</a></li> <li><a href="/Meshtastic-Android/ht-rHT/user/discovery" lang="ht-rHT" >Kreyòl Ayisyen</a></li> <li><a href="/Meshtastic-Android/hu-rHU/user/discovery" lang="hu-rHU" >Magyar</a></li> <li><a href="/Meshtastic-Android/is-rIS/user/discovery" lang="is-rIS" >Íslenska</a></li> <li><a href="/Meshtastic-Android/it-rIT/user/discovery" lang="it-rIT" >Italiano</a></li> <li><a href="/Meshtastic-Android/ja-rJP/user/discovery" lang="ja-rJP" >日本語</a></li> <li><a href="/Meshtastic-Android/ko-rKR/user/discovery" lang="ko-rKR" >한국어</a></li> <li><a href="/Meshtastic-Android/lt-rLT/user/discovery" lang="lt-rLT" >Lietuvių</a></li> <li><a href="/Meshtastic-Android/nl-rNL/user/discovery" lang="nl-rNL" >Nederlands</a></li> <li><a href="/Meshtastic-Android/no-rNO/user/discovery" lang="no-rNO" >Norsk</a></li> <li><a href="/Meshtastic-Android/pl-rPL/user/discovery" lang="pl-rPL" >Polski</a></li> <li><a href="/Meshtastic-Android/pt-rBR/user/discovery" lang="pt-rBR" >Português (Brasil)</a></li> <li><a href="/Meshtastic-Android/pt-rPT/user/discovery" lang="pt-rPT" >Português</a></li> <li><a href="/Meshtastic-Android/ro-rRO/user/discovery" lang="ro-rRO" >Română</a></li> <li><a href="/Meshtastic-Android/sk-rSK/user/discovery" lang="sk-rSK" >Slovenčina</a></li> <li><a href="/Meshtastic-Android/sl-rSI/user/discovery" lang="sl-rSI" >Slovenščina</a></li> <li><a href="/Meshtastic-Android/sq-rAL/user/discovery" lang="sq-rAL" >Shqip</a></li> <li><a href="/Meshtastic-Android/sr-rLatn/user/discovery" lang="sr-rLatn" >Српски (Latinica)</a></li> <li><a href="/Meshtastic-Android/srp/user/discovery" lang="srp" >Српски (Ћирилица)</a></li> <li><a href="/Meshtastic-Android/sv-rSE/user/discovery" lang="sv-rSE" >Svenska</a></li> <li><a href="/Meshtastic-Android/tr-rTR/user/discovery" lang="tr-rTR" >Türkçe</a></li> <li><a href="/Meshtastic-Android/uk-rUA/user/discovery" lang="uk-rUA" >Українська</a></li> <li><a href="/Meshtastic-Android/zh-rCN/user/discovery" lang="zh-rCN" >中文 (简体)</a></li> <li><a href="/Meshtastic-Android/zh-rTW/user/discovery" 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"><span>Обнаружение</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/discovery">View in English</a> </p> </div> <div lang="ru-rRU"> <h1 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> Обнаружение </h1> <p>Инструменты обнаружения помогают понять, <strong>как</strong> твоя mesh-сетевая структура соединена — какие ноды могут слышать друг друга, по каким путям проходят сообщения и где существуют узкие места или слабые звенья.</p> <p>Приложение предлагает два дополнительных подхода:</p> <ul> <li><strong>Локальное обнаружение mesh-сети (сканер)</strong> — автоматический режим, который по очереди перебирает на твоём подключённом радио разные пресеты LoRa, слушает каждый и определяет, какой пресет лучше всего работает в твоём местоположении.</li> <li><strong>Ручное исследование</strong> — трассировка, информация о соседях и список нод, которые ты можешь использовать в любое время для изучения конкретных путей и топологии.</li> </ul><hr /> <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>Локальное обнаружение mesh-сети — это специализированный режим сканирования, который помогает найти лучший пресет LoRa-модема для твоего местоположения и увидеть, какие ноды активны на каждом пресете. Он циклически переключает твоё подключённое радио между одним или несколькими выбранными тобою пресетами, слушает (или “задерживается”) на каждом заданное время для сбора пакетов, затем анализирует и ранжирует результаты.</p> <p>Открой это через <strong>Настройки → Дополнительно → Локальное обнаружение сети</strong>. В приложении для ПК у него есть собственный пункт <strong>Настройки → Локальное обнаружение сети</strong>.</p> <blockquote> <p>⚠️ <strong>Примечание</strong>: Обнаружение временно изменяет настройки LoRa твоего радио во время сканирования, а затем восстанавливает исходную конфигурацию после завершения. Твоё устройство должно быть подключено для запуска сканирования.</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>Перед началом, настройте эти параметры:</p> <div class="table-wrapper"><table> <thead> <tr> <th>Управление</th> <th>Описание</th> </tr> </thead> <tbody> <tr> <td><strong>Выбор пресета LoRa</strong></td> <td>Выберите один или несколько пресетов для сканирования. Обнаружение по очереди задерживается на каждом выбранном пресете.</td> </tr> <tr> <td><strong>Время задержки</strong></td> <td>Время прослушки каждого пресета. Выбери один из вариантов: 1, 5, 15, 30, 45, 60, 90, 120 или 180 минут. Более долгое время задержки собирает больше пакетов и даёт более чёткую картину, но занимает больше времени.</td> </tr> <tr> <td><strong>Не выключать экран</strong></td> <td>Дополнительный переключатель, который не даёт экрану гаснуть во время длительного сканирования.</td> </tr> </tbody> </table></div> <p>Кнопка <strong>Старт</strong> остаётся неактивной — с объяснением причины — пока сканирование не может быть запущено. Распространённые причины, почему она отключена:</p> <ul> <li>Устройство <strong>не подключено</strong>.</li> <li><strong>Не выбраны пресеты</strong> для сканирования.</li> <li>Выбранный пресет использует частоту <strong>2,4 ГГц</strong>, которую ваше оборудование не поддерживает.</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> <p>Во время сканирования “Обнаружение” показывает текущий этап:</p> <div class="table-wrapper"><table> <thead> <tr> <th>Этап</th> <th>Что происходит</th> </tr> </thead> <tbody> <tr> <td><strong>Подготовка</strong></td> <td>Сохранение твоей текущей конфигурации и подготовка к сканированию.</td> </tr> <tr> <td><strong>Переключение на <preset></strong></td> <td>Переключение радио на следующий пресет для тестирования.</td> </tr> <tr> <td><strong>Переподключение</strong></td> <td>Восстановление соединения после смены пресета.</td> </tr> <tr> <td><strong>Прослушивание</strong></td> <td>Прослушивание текущего пресета для сбора пакетов с обратным отсчётом до следующего шага.</td> </tr> <tr> <td><strong>Анализ</strong></td> <td>Обработка собранных пакетов и ранжирование пресетов.</td> </tr> <tr> <td><strong>Восстановление</strong></td> <td>Возврат твоей исходной конфигурации LoRa.</td> </tr> </tbody> </table></div> <p><img src="../../assets/screenshots/discovery_dwell_progress.png" alt="Обратный отсчёт времени прослушивания, показывающий оставшееся время на текущем пресете" /></p> <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>По завершении сканирования “Обнаружение” показывает карточку результатов для каждого протестированного пресета, а также общую сводку.</p> <p><img src="../../assets/screenshots/discovery_preset_result.png" alt="Карточка результатов по пресету с рейтингом и собранными метриками" /></p> <p>Метрики включают:</p> <div class="table-wrapper"><table> <thead> <tr> <th>Метрическая</th> <th>Что для тебя это значит</th> </tr> </thead> <tbody> <tr> <td>Состояние радиоэфира</td> <td>Общее качество радиообстановки на этом пресете.</td> </tr> <tr> <td>Использование канала</td> <td>Насколько загруженным был эфир во время прослушивания.</td> </tr> <tr> <td>Время вещания</td> <td>Наблюдаемое время передачи.</td> </tr> <tr> <td>Прямые и ретранслированные ноды</td> <td>Сколько mesh-нод было услышано напрямую, а сколько через ретранслятор.</td> </tr> <tr> <td>Повреждённые / повторные пакеты</td> <td>Количество повреждённых и повторных пакетов, указывающее на перегрузку или помехи.</td> </tr> </tbody> </table></div> <p>Дополнительные функции, доступные из результатов:</p> <ul> <li><strong>История сканирования</strong> — сохранённые сеансы, которые ты можешь просмотреть снова; просматривайте или удаляйте прошлые сканирования.</li> <li><strong>Карта обнаружения</strong> — карта нод, найденных во время сканирования.</li> <li><strong>Экспорт отчёта</strong> — экспортируйте отчёт в формате PDF на Android или в виде текста на других платформах.</li> </ul> <blockquote> <p>💡 <strong>Совет:</strong> На Android “Обнаружение” может создавать на устройстве сводку твоих результатов с помощью ИИ (Gemini Nano). Если модель на устройстве недоступна, вместо неё используется алгоритмическая сводка — так что ты всегда получаешь читаемую интерпретацию сканирования.</p> </blockquote><hr /> <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>Маяк mesh-сети позволяет нодам приглашать другие устройства присоединиться к своей сети. Нода-маяк периодически передаёт приглашение, при необходимости указывая канал, регион и пресет модема, которое ближайшие устройства могут услышать ещё до того, как получат общую конфигурацию.</p> <p>Настройте его в разделе <strong>Настройки → Конфигурация модулей → Маяк mesh-сети</strong>:</p> <ul> <li><strong>Слушать маяки</strong> — принимать приглашения, передаваемые другими нодами.</li> <li><strong>Передавать маяк</strong> — отправлять собственное приглашение через заданный интервал с необязательным сообщением и предлагаемым каналом.</li> </ul> <p>Полученные приглашения отображаются в виде карточек <strong>“Приглашения mesh-сети”</strong> на экране <strong>“Обнаружение”</strong>. На каждой карточке показано сообщение отправителя, а также предлагаемые канал, регион, пресет и качество сигнала, и доступны следующие действия:</p> <ul> <li><strong>Присоединиться</strong> — переключиться на предлагаемый канал и пресет (перенастраивает радио и перезагружает его). Если предложение совпадает с вашим текущим частотным слотом, действие <strong>“Добавить канал”</strong> добавляет его без перезагрузки.</li> <li><strong>Обнаружить</strong> — запустить сканирование «Обнаружения» с предложенным пресетом, чтобы ты мог изучить эту сеть перед присоединением (отображается, только если маяк передаёт пресет).</li> <li><strong>Отклонить</strong> — проигнорировать приглашение.</li> </ul> <p>Каналы, объявленные маяками, также отображаются в настройках сканирования как <strong>Каналы маяков</strong> — выберите один, чтобы включить его в число целей сканирования.</p><hr /> <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> <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> <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> <ol> <li>Перейди в <strong>Ноды</strong> и коснись ноды, которую ты хочешь отследить.</li> <li>На экране деталей ноды нажми <strong>Трассировка</strong>.</li> <li>Приложение отправляет запрос трассировки и ожидает ответа.</li> <li>Результаты отображают каждую ноду по порядку с качеством сигнала на каждом этапе.</li> </ol> <h3 id="чтение-результатов-1"> <a href="#чтение-результатов-1" class="anchor-heading" aria-labelledby="чтение-результатов-1"><svg viewBox="0 0 16 16" aria-hidden="true"><use xlink:href="#svg-link"></use></svg></a> Чтение результатов </h3> <p>Результат трассировки выглядит так:</p> <div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>Ты → Нода A (SNR: 8.5, RSSI: -95) → Нода B (SNR: 5.2, RSSI: -108) → Цель
|
|
</code></pre></div></div> <p>Каждый хоп представляет собой ретранслирующую ноду, которая переслала сообщение. Значения SNR и RSSI на каждой ноде говорят о качестве соединения на этом конкретном участке.</p> <div class="table-wrapper"><table> <thead> <tr> <th>На что обращать внимание</th> <th>Что это значит</th> </tr> </thead> <tbody> <tr> <td>Все хопы показывают хороший SNR (≥ −7 дБ, зелёный цвет)</td> <td>Здоровый путь — сообщения идут без сбоев</td> </tr> <tr> <td>Один хоп показывает плохой SNR (< −15 дБ, красный цвет)</td> <td>Слабое звено — этот сегмент ретрансляции хрупкий</td> </tr> <tr> <td>Много хопов (4+)</td> <td>Длинный путь — подумай о перемещении ноды для его сокращения</td> </tr> <tr> <td>Другой путь при повторе</td> <td>Сеть адаптируется — существуют несколько маршрутов (это хорошо!)</td> </tr> </tbody> </table></div> <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> <ul> <li><strong>'’Маршрут не найден’‘</strong> — Целевая нода может быть оффлайн, находиться вне зоны действия или на другом канале. Проверь, что обе ноды имеют хотя бы один канал с одинаковым ключом шифрования.</li> <li><strong>Время ожидания трассировки истекло</strong> — путь может быть слишком длинным (превышен лимит хопов) или нода ретрансляции перегружена. Попробуй увеличить лимит хопов в <strong>Настройки → Конфигурация LoRa</strong>.</li> <li><strong>Асимметричные маршруты</strong> — трассировка от A→B может проходить по другому пути, чем B→A. Это нормально — распространение радиоволн не всегда симметрично.</li> </ul><hr /> <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>Модуль информации о соседях позволяет каждой ноде передавать список нод, которые она может <strong>слышать напрямую</strong> (на расстоянии одного хопа). Когда несколько нод делятся своими списками соседей, ты можешь составить карту топологии всей mesh-сети.</p> <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> <ol> <li>Перейдите в <strong>Настройки → Конфигурация модуля → Информация о соседях</strong>.</li> <li>Включение модуля</li> <li>Установите интервал передачи (по умолчанию: 900 секунд / 15 минут).</li> </ol> <p>После включения твоя нода периодически передаёт свою таблицу соседей. Другие ноды с включённым модулем информации о соседях делают то же самое.</p> <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>.</li> <li>Каждая запись о соседе показывает ноду, которая была услышана напрямую, и качество её сигнала.</li> <li>Объединяйте данные о соседях от нескольких нод, чтобы понять полную топологию mesh-сети.</li> </ul> <blockquote> <p>⚠️ <strong>Примечание:</strong> Информация о соседях увеличивает использование эфирного времени, поскольку каждая включённая нода периодически передаёт свой список соседей. В загруженных mesh-сетях с большим количеством нод рассмотрите более длинные интервалы передачи (3600 секунд или более), чтобы избежать перегрузки.</p> </blockquote><hr /> <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> <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>, чтобы увидеть вверху списка ноды, активные в последнее время.</li> <li>Включите <strong>“Включая неизвестные”</strong>, чтобы увидеть ноды, которые появились в mesh-сети, но ещё не передали информацию о пользователе — часто это недавно включённые устройства.</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>Сортируйте по «Хопам», чтобы видеть, какие ноды доступны напрямую (0 хопов), а какие — через ретрансляцию.</li> <li>Сортируйте по <strong>“Расстоянию”</strong>, чтобы найти близлежащие ноды и убедиться, что они доступны.</li> <li>Используйте <strong>“Исключить MQTT”</strong>, чтобы сосредоточиться на нодах, доступных по радио (а не через интернет-мост).</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>, чтобы увидеть ноды Router, Router Late и Client Base.</li> <li>Проверьте качество их сигнала и время последнего приёма, чтобы убедиться, что твои ноды инфраструктуры работают исправно.</li> </ul> <p>См. раздел <a href="Nodes">Ноды</a> для получения полной информации о параметрах фильтрации и сортировки.</p><hr /> <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><strong>Начните с трассировки</strong> — она даёт тебе немедленную, пригодную для использования информацию о конкретном пути.</li> <li><strong>Включите информацию о соседях на ключевых нодах</strong> — особенно на роутерах и ретрансляторах, чтобы составить картину магистральной сети.</li> <li><strong>Проверьте карту</strong> — расположение нод на <a href="map-and-waypoints">Карте</a> в сочетании с данными о сигнале помогает тебе понять, почему одни соединения сильные, а другие слабые.</li> <li><strong>Сравнивайте сигнал с течением времени</strong> — используйте руководство по <a href="signal-meter">Измерителю сигнала</a> для правильной интерпретации значений SNR и RSSI.</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 © 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>
|