mirror of
https://github.com/meshcore-dev/MeshCore.git
synced 2026-11-04 08:17:33 +00:00
deploy: 81dbae592f
This commit is contained in:
1 parent
cb364b0549
commit
f52d36d81a
10 files changed
+342
-80
No files matched your search
+10
-6
@@ -3436,7 +3436,7 @@
|
||||
- <code>sf</code>: Spreading factor (5-12)
|
||||
- <code>cr</code>: Coding rate (5-8)</p>
|
||||
<p><strong>Set by build flag:</strong> <code>LORA_FREQ</code>, <code>LORA_BW</code>, <code>LORA_SF</code>, <code>LORA_CR</code></p>
|
||||
<p><strong>Default:</strong> <code>869.525,250,11,5</code></p>
|
||||
<p><strong>Default:</strong> <code>869.618,62.5,8,5</code></p>
|
||||
<p><strong>Note:</strong> Requires reboot to apply</p>
|
||||
<hr />
|
||||
<h4 id="view-or-change-this-nodes-transmit-power">View or change this node's transmit power</h4>
|
||||
@@ -3466,7 +3466,7 @@
|
||||
- <code>set freq <frequency></code></p>
|
||||
<p><strong>Parameters:</strong>
|
||||
- <code>frequency</code>: Frequency in MHz</p>
|
||||
<p><strong>Default:</strong> <code>869.525</code></p>
|
||||
<p><strong>Default:</strong> <code>869.618</code></p>
|
||||
<p><strong>Note:</strong> Requires reboot to apply
|
||||
<strong>Serial Only:</strong> <code>set freq <frequency></code></p>
|
||||
<hr />
|
||||
@@ -3651,7 +3651,7 @@
|
||||
- <code>set direct.txdelay <value></code></p>
|
||||
<p><strong>Parameters:</strong>
|
||||
- <code>value</code>: Direct transmit delay factor (0-2)</p>
|
||||
<p><strong>Default:</strong> <code>0.2</code></p>
|
||||
<p><strong>Default:</strong> <code>0.3</code> (Repeater) - <code>0.2</code> (Room Server, Sensor)</p>
|
||||
<p><strong>Note:</strong> Same collision-avoidance random window as <code>txdelay</code>, but applied to direct (non-flood, routed) traffic. The default is lower because direct packets are addressed to a specific next hop, so far fewer nodes compete to retransmit them.</p>
|
||||
<hr />
|
||||
<h4 id="experimental-view-or-change-the-processing-delay-for-received-traffic">[Experimental] View or change the processing delay for received traffic</h4>
|
||||
@@ -3717,7 +3717,7 @@
|
||||
- <code>get agc.reset.interval</code>
|
||||
- <code>set agc.reset.interval <value></code></p>
|
||||
<p><strong>Parameters:</strong>
|
||||
- <code>value</code>: Interval in seconds rounded down to a multiple of 4 (17 becomes 16). 0 to disable.</p>
|
||||
- <code>value</code>: Interval in seconds, 0-1020, rounded down to a multiple of 4 (17 becomes 16). 0 to disable.</p>
|
||||
<p><strong>Default:</strong> <code>0.0</code></p>
|
||||
<hr />
|
||||
<h4 id="enable-or-disable-multi-acks-support">Enable or disable Multi-Acks support</h4>
|
||||
@@ -3734,7 +3734,7 @@
|
||||
- <code>set flood.advert.interval <hours></code></p>
|
||||
<p><strong>Parameters:</strong>
|
||||
- <code>hours</code>: Interval in hours (3-168)</p>
|
||||
<p><strong>Default:</strong> <code>12</code> (Repeater) - <code>0</code> (Sensor)</p>
|
||||
<p><strong>Default:</strong> <code>47</code> (Repeater, Room Server) - <code>0</code>, disabled (Sensor)</p>
|
||||
<hr />
|
||||
<h4 id="view-or-change-the-zero-hop-advert-interval">View or change the zero-hop advert interval</h4>
|
||||
<p><strong>Usage:</strong>
|
||||
@@ -3742,7 +3742,11 @@
|
||||
- <code>set advert.interval <minutes></code></p>
|
||||
<p><strong>Parameters:</strong>
|
||||
- <code>minutes</code>: Interval in minutes rounded down to the nearest multiple of 2 (61 becomes 60) (60-240)</p>
|
||||
<p><strong>Default:</strong> <code>0</code></p>
|
||||
<p><strong>Default:</strong> <code>2</code> on a factory-fresh node, then <code>0</code> (disabled) once configured.</p>
|
||||
<p><strong>Note:</strong> A new install ships with a 2 minute zero-hop advert interval. Saving
|
||||
any setting resets an interval below the 60 minute minimum to <code>0</code>, on the
|
||||
assumption that the node has now been deliberately configured. To keep zero-hop
|
||||
adverts running, set an explicit value in the 60-240 range.</p>
|
||||
<hr />
|
||||
<h4 id="limit-the-number-of-hops-for-a-flood-message">Limit the number of hops for a flood message</h4>
|
||||
<p><strong>Usage:</strong>
|
||||
|
||||
@@ -2023,7 +2023,7 @@ Byte 1: 0x03
|
||||
<p><strong>Purpose</strong>: Retrieve information about a specific channel.</p>
|
||||
<p><strong>Command Format</strong>:</p>
|
||||
<pre><code>Byte 0: 0x1F
|
||||
Byte 1: Channel Index (0-7)
|
||||
Byte 1: Channel Index (0 .. max_channels-1)
|
||||
</code></pre>
|
||||
<p><strong>Example</strong> (get channel 1):</p>
|
||||
<pre><code>1F 01
|
||||
@@ -2034,21 +2034,35 @@ Byte 1: Channel Index (0-7)
|
||||
<p><strong>Purpose</strong>: Create or update a channel on the device.</p>
|
||||
<p><strong>Command Format</strong>:</p>
|
||||
<pre><code>Byte 0: 0x20
|
||||
Byte 1: Channel Index (0-7)
|
||||
Byte 1: Channel Index (0 .. max_channels-1)
|
||||
Bytes 2-33: Channel Name (32 bytes, UTF-8, null-padded)
|
||||
Bytes 34-49: Secret (16 bytes)
|
||||
</code></pre>
|
||||
<p><strong>Total Length</strong>: 50 bytes</p>
|
||||
<p><strong>Channel Index</strong>:
|
||||
- Index 0: Reserved for public channels (no secret)
|
||||
- Indices 1-7: Available for private channels</p>
|
||||
- Valid range is <code>0</code> to <code>max_channels - 1</code>. Read <code>max_channels</code> from byte 3 of
|
||||
the <code>PACKET_DEVICE_INFO</code> response; do not assume 8. Builds ship with
|
||||
<code>MAX_GROUP_CHANNELS</code> set to 1, 8 or 40 depending on the board.
|
||||
- Index 0: pre-populated by the firmware with the built-in "Public" channel.
|
||||
It can be overwritten like any other slot.
|
||||
- An out-of-range index is rejected with <code>PACKET_ERROR</code> / <code>ERR_CODE_NOT_FOUND</code>.</p>
|
||||
<p><strong>Channel Name</strong>:
|
||||
- UTF-8 encoded
|
||||
- Maximum 32 bytes
|
||||
- Padded with null bytes (0x00) if shorter</p>
|
||||
<p><strong>Secret Field</strong> (16 bytes):
|
||||
- For <strong>private channels</strong>: 16-byte secret
|
||||
- For <strong>public channels</strong>: All zeros (0x00)</p>
|
||||
- Always a real 16-byte key; the firmware derives the channel hash from
|
||||
<code>SHA256(secret)</code> (<code>BaseChatMesh.cpp:936-942</code>). There is no "no secret" form.
|
||||
- Do <strong>not</strong> write an all-zero secret. <code>SHA256</code> over 16 zero bytes is a fixed,
|
||||
globally identical value, so a zero-secret channel is a well-known channel
|
||||
with an all-zero AES key that any node can read — not a private one. The
|
||||
firmware skips <em>unnamed</em> slots when matching inbound group traffic for
|
||||
exactly this reason (<code>BaseChatMesh.cpp:392-401</code>), but a slot that has been
|
||||
given a name and a zero secret is not skipped, and will absorb null-key
|
||||
group traffic from any node on the mesh.
|
||||
- The built-in public channel uses the well-known key
|
||||
<code>izOH6cXN6mrJ5e26oRXNcg==</code> (base64), i.e.
|
||||
<code>8b3387e9c5cdea6ac9e5edbaa115cd72</code> in hex.</p>
|
||||
<p><strong>Example</strong> (create channel "YourChannelName" at index 1 with secret):</p>
|
||||
<pre><code>20 01 53 4D 53 00 00 ... (name padded to 32 bytes)
|
||||
[16 bytes of secret]
|
||||
@@ -2061,7 +2075,7 @@ Bytes 34-49: Secret (16 bytes)
|
||||
<p><strong>Command Format</strong>:</p>
|
||||
<pre><code>Byte 0: 0x03
|
||||
Byte 1: 0x00
|
||||
Byte 2: Channel Index (0-7)
|
||||
Byte 2: Channel Index (0 .. max_channels-1)
|
||||
Bytes 3-6: Timestamp (32-bit little-endian Unix timestamp, seconds)
|
||||
Bytes 7+: Message Text (UTF-8, variable length)
|
||||
</code></pre>
|
||||
@@ -2075,7 +2089,7 @@ Bytes 7+: Message Text (UTF-8, variable length)
|
||||
<p><strong>Purpose</strong>: Send a binary datagram to a channel. Unlike channel text messages, datagrams carry no built-in sender identity and no timestamp — applications needing either must encode them inside the binary payload.</p>
|
||||
<p><strong>Command Format</strong>:</p>
|
||||
<pre><code>Byte 0: 0x3E
|
||||
Byte 1: Channel Index (0-7)
|
||||
Byte 1: Channel Index (0 .. max_channels-1)
|
||||
Byte 2: Path Length (0xFF = flood, otherwise actual path length)
|
||||
Bytes 3 .. 2+path_len: Path (omitted when path_len == 0xFF)
|
||||
Next 2 bytes (little-endian): Data Type (`data_type`, uint16)
|
||||
@@ -2089,12 +2103,22 @@ Remaining bytes: Binary payload (variable length)
|
||||
- <code>0xFFFF</code> (<code>DATA_TYPE_DEV</code>) is the developer namespace for experimenting and developing apps.
|
||||
- Values <code>0x0001</code>–<code>0xFFFE</code> are available for registered application/community namespaces. See the <a href="#registered-data_type-values">Registered data_type values</a> table below.</p>
|
||||
<p><strong>Limits</strong>:
|
||||
- Maximum payload length is <code>MAX_CHANNEL_DATA_LENGTH = MAX_FRAME_SIZE - 9 = 163</code> bytes.
|
||||
- Larger payloads are rejected with <code>PACKET_ERROR</code> (<code>ERR_CODE_ILLEGAL_ARG</code>).</p>
|
||||
- Maximum payload length is <strong>165</strong> bytes — <code>MAX_GROUP_DATA_LENGTH =
|
||||
MAX_PACKET_PAYLOAD - CIPHER_BLOCK_SIZE - 3</code> (<code>src/MeshCore.h:21</code>). This is the
|
||||
radio-side limit and the one clients should enforce.
|
||||
- Two different bounds are checked, and they do not agree. The host-frame check
|
||||
uses the larger <code>MAX_CHANNEL_DATA_LENGTH = MAX_FRAME_SIZE - 9 = 167</code>
|
||||
(<code>companion_radio/MyMesh.cpp:1265</code>); the radio-side check uses 165
|
||||
(<code>BaseChatMesh.cpp:544</code>).
|
||||
- Payloads <strong>above 167</strong> are rejected with <code>ERR_CODE_ILLEGAL_ARG</code> (6).
|
||||
- Payloads of <strong>166 or 167</strong> pass the frame check, then fail the radio-side
|
||||
check and return <code>ERR_CODE_TABLE_FULL</code> (3). Despite that code's usual
|
||||
meaning, such a send can never succeed — do not retry it. Keep payloads at
|
||||
165 bytes or fewer and this case cannot arise.</p>
|
||||
<p><strong>Response</strong>: <code>PACKET_OK</code> (0x00) on success, or <code>PACKET_ERROR</code> (0x01) with one of:
|
||||
- <code>ERR_CODE_NOT_FOUND</code> (2) — unknown <code>channel_idx</code>
|
||||
- <code>ERR_CODE_ILLEGAL_ARG</code> (6) — invalid <code>path_len</code>, reserved <code>data_type</code> (<code>0x0000</code>), or payload larger than <code>MAX_CHANNEL_DATA_LENGTH</code>
|
||||
- <code>ERR_CODE_TABLE_FULL</code> (3) — outbound send queue is full; retry later</p>
|
||||
- <code>ERR_CODE_ILLEGAL_ARG</code> (6) — invalid <code>path_len</code>, reserved <code>data_type</code> (<code>0x0000</code>), or payload larger than <code>MAX_CHANNEL_DATA_LENGTH</code> (167)
|
||||
- <code>ERR_CODE_TABLE_FULL</code> (3) — outbound send queue is full (retry later), <strong>or</strong> a payload of 166-167 bytes that exceeds the radio-side limit (permanent; see Limits above)</p>
|
||||
<p><strong>Inbound datagrams</strong> are delivered to the host via <code>RESP_CODE_CHANNEL_DATA_RECV</code> (0x1B); see <a href="#receive-channel-data-datagram">Receive Channel Data Datagram</a>.</p>
|
||||
<h4 id="registered-data_type-values">Registered <code>data_type</code> values</h4>
|
||||
<p><code>data_type</code> is an <strong>application identifier</strong>, not a payload-format identifier. Each registered value identifies an application that owns its own internal payload schemas. The firmware does not inspect payload contents — <code>data_type</code> is transported opaquely.</p>
|
||||
@@ -2142,7 +2166,7 @@ Remaining bytes: Binary payload (variable length)
|
||||
<pre><code>Byte 0: 0x1B (packet type)
|
||||
Byte 1: SNR (signed int8, scaled ×4 — divide by 4.0 to recover dB)
|
||||
Bytes 2-3: Reserved (clients MUST ignore)
|
||||
Byte 4: Channel Index (0-7)
|
||||
Byte 4: Channel Index (0 .. max_channels-1)
|
||||
Byte 5: Path Length (actual path length when flooded, otherwise 0xFF for direct)
|
||||
Bytes 6-7: Data Type (uint16 little-endian)
|
||||
Byte 8: Data Length
|
||||
@@ -2347,7 +2371,7 @@ Bytes 20+: Message Text (UTF-8)
|
||||
<h3 id="channel-message-format">Channel Message Format</h3>
|
||||
<p><strong>Standard Format</strong> (<code>PACKET_CHANNEL_MSG_RECV</code>, 0x08):</p>
|
||||
<pre><code>Byte 0: 0x08 (packet type)
|
||||
Byte 1: Channel Index (0-7)
|
||||
Byte 1: Channel Index (0 .. max_channels-1)
|
||||
Byte 2: Path Length
|
||||
Byte 3: Text Type
|
||||
Bytes 4-7: Timestamp (32-bit little-endian)
|
||||
@@ -2357,7 +2381,7 @@ Bytes 8+: Message Text (UTF-8)
|
||||
<pre><code>Byte 0: 0x11 (packet type)
|
||||
Byte 1: SNR (signed byte, multiplied by 4)
|
||||
Bytes 2-3: Reserved
|
||||
Byte 4: Channel Index (0-7)
|
||||
Byte 4: Channel Index (0 .. max_channels-1)
|
||||
Byte 5: Path Length
|
||||
Byte 6: Text Type
|
||||
Bytes 7-10: Timestamp (32-bit little-endian)
|
||||
|
||||
+9
-9
@@ -2989,17 +2989,17 @@ sudo apt install python3-venv
|
||||
</code></pre>
|
||||
<p>Mac: python3 should be already installed.</p>
|
||||
<p>Then it should be the same for all platforms:</p>
|
||||
<pre><code>python3 -m venv meshcore
|
||||
cd meshcore && source bin/activate
|
||||
<pre><code>python3 -m venv meshcore-venv
|
||||
cd meshcore-venv && source bin/activate
|
||||
pip install -U platformio
|
||||
git clone https://github.com/ripplebiz/MeshCore.git
|
||||
cd MeshCore
|
||||
git clone https://github.com/meshcore-dev/meshcore.git
|
||||
cd meshcore
|
||||
</code></pre>
|
||||
<p>open platformio.ini and in <code>[arduino_base]</code> edit the <code>LORA_FREQ=867.5</code>
|
||||
save, then run:</p>
|
||||
<pre><code>pio run -e RAK_4631_Repeater
|
||||
<p>open platformio.ini and in <code>[arduino_base]</code> edit <code>LORA_FREQ</code> (it defaults to
|
||||
<code>869.618</code>) to the frequency for your region, save, then run:</p>
|
||||
<pre><code>pio run -e RAK_4631_repeater
|
||||
</code></pre>
|
||||
<p>then you'll find <code>firmware.zip</code> in <code>.pio/build/RAK_4631_Repeater</code></p>
|
||||
<p>then you'll find <code>firmware.zip</code> in <code>.pio/build/RAK_4631_repeater</code></p>
|
||||
<h3 id="510-q-are-there-other-meshcore-related-open-source-projects">5.10. Q: Are there other MeshCore related open source projects?</h3>
|
||||
<p><strong>A:</strong> <a href="https://liamcottle.net">Liam Cottle</a>'s MeshCore web client and MeshCore JavaScript library are open source under MIT license.</p>
|
||||
<p>Web client: <a href="https://github.com/liamcottle/meshcore-web">https://github.com/liamcottle/meshcore-web</a>
|
||||
@@ -3030,7 +3030,7 @@ Below are the instructions to flash firmware onto a supported LoRa device using
|
||||
<li>Download the firmware file from <a href="https://flasher.meshcore.io">https://flasher.meshcore.io</a>.<ul>
|
||||
<li>Go to the website in a browser and find the section that has the firmware you need.</li>
|
||||
<li>Click the Download button, right-click on the file you need, for example:<ul>
|
||||
<li><code>Heltec_V3_companion_radio_ble-v1.7.1-165fb33.bin</code><ul>
|
||||
<li><code>Heltec_v3_companion_radio_ble-v1.7.1-165fb33.bin</code><ul>
|
||||
<li>Non-merged bin keeps the existing Bluetooth pairing database.</li>
|
||||
</ul>
|
||||
</li>
|
||||
|
||||
@@ -1488,9 +1488,16 @@
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<p>On boards without power management enabled, all commands except <code>get pwrmgt.support</code> return:</p>
|
||||
<p>On boards without power management enabled, <code>get pwrmgt.source</code> and
|
||||
<code>get pwrmgt.bootmv</code> return:</p>
|
||||
<pre><code>ERROR: Power management not supported
|
||||
</code></pre>
|
||||
<p><code>get pwrmgt.support</code> returns <code>unsupported</code>. <code>get pwrmgt.bootreason</code> is not
|
||||
compiled out at all and answers on every board: <code>getResetReason()</code> and
|
||||
<code>getShutdownReason()</code> are virtuals on the base board class, so a board that
|
||||
does not override them reports <code>Not available</code> rather than an error. ESP32
|
||||
boards override the reset half with <code>esp_reset_reason()</code>, so they return a real
|
||||
reset reason and <code>Not available</code> for the shutdown reason.</p>
|
||||
<h2 id="debug-output">Debug Output</h2>
|
||||
<p>When <code>MESH_DEBUG=1</code> is enabled, the power management module outputs:</p>
|
||||
<pre><code>DEBUG: PWRMGT: Reset = Wake from LPCOMP (0x20000); Shutdown = Low Voltage (0x4C)
|
||||
|
||||
@@ -692,6 +692,11 @@
|
||||
<td>william@housedillon.com - https://housedillon.com/blog/lora-e5-with-seeed-fusion</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>0140</td>
|
||||
<td>Nelos</td>
|
||||
<td>support@nelos.app — https://nelos.app</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>FF00 - FFFF</td>
|
||||
<td>-reserved for testing/dev-</td>
|
||||
<td></td>
|
||||
|
||||
+244
-30
@@ -605,17 +605,6 @@
|
||||
</span>
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#get-telemetry-data" class="md-nav__link">
|
||||
<span class="md-ellipsis">
|
||||
|
||||
Get telemetry data
|
||||
|
||||
</span>
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
<li class="md-nav__item">
|
||||
@@ -638,6 +627,28 @@
|
||||
</span>
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#subscribe-to-telemetry-push-sensor-nodes" class="md-nav__link">
|
||||
<span class="md-ellipsis">
|
||||
|
||||
Subscribe to Telemetry push - (Sensor nodes)
|
||||
|
||||
</span>
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#unsubscribe-from-telemetry-push-sensor-nodes" class="md-nav__link">
|
||||
<span class="md-ellipsis">
|
||||
|
||||
Unsubscribe from Telemetry push - (Sensor nodes)
|
||||
|
||||
</span>
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
<li class="md-nav__item">
|
||||
@@ -1068,17 +1079,6 @@
|
||||
</span>
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#get-telemetry-data" class="md-nav__link">
|
||||
<span class="md-ellipsis">
|
||||
|
||||
Get telemetry data
|
||||
|
||||
</span>
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
<li class="md-nav__item">
|
||||
@@ -1101,6 +1101,28 @@
|
||||
</span>
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#subscribe-to-telemetry-push-sensor-nodes" class="md-nav__link">
|
||||
<span class="md-ellipsis">
|
||||
|
||||
Subscribe to Telemetry push - (Sensor nodes)
|
||||
|
||||
</span>
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#unsubscribe-from-telemetry-push-sensor-nodes" class="md-nav__link">
|
||||
<span class="md-ellipsis">
|
||||
|
||||
Unsubscribe from Telemetry push - (Sensor nodes)
|
||||
|
||||
</span>
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
<li class="md-nav__item">
|
||||
@@ -1586,6 +1608,11 @@
|
||||
<td>sender time (unix timestamp)</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>req type</td>
|
||||
<td>1</td>
|
||||
<td>request sub type</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>request data</td>
|
||||
<td>rest of payload</td>
|
||||
<td>application-defined request payload body</td>
|
||||
@@ -1610,7 +1637,37 @@
|
||||
<tr>
|
||||
<td><code>0x02</code></td>
|
||||
<td>keepalive</td>
|
||||
<td>keep-alive request used for maintained connections</td>
|
||||
<td>(deprecated)</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>0x03</code></td>
|
||||
<td>get telemetry</td>
|
||||
<td>request node telemetry</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>0x04</code></td>
|
||||
<td>get min/max/avg</td>
|
||||
<td>get sensor node stats on time series data</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>0x05</code></td>
|
||||
<td>get acl</td>
|
||||
<td>node ACL query</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>0x06</code></td>
|
||||
<td>get neighbors</td>
|
||||
<td>node neighbors query</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>0x08</code></td>
|
||||
<td>subscribe</td>
|
||||
<td>subscribe to telemetry push</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>0x09</code></td>
|
||||
<td>ubsubscribe</td>
|
||||
<td>unsubscribe from telemetry push</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
@@ -1636,14 +1693,166 @@
|
||||
<li>Number posted (?)</li>
|
||||
<li>Number of post pushes (?)</li>
|
||||
</ul>
|
||||
<h4 id="get-telemetry-data">Get telemetry data</h4>
|
||||
<p>Not defined in <code>BaseChatMesh</code>. Sensor- and application-specific request payloads may be implemented by higher-level firmware.</p>
|
||||
<h4 id="get-telemetry">Get Telemetry</h4>
|
||||
<p>Not defined in <code>BaseChatMesh</code>.</p>
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Field</th>
|
||||
<th>Size (bytes)</th>
|
||||
<th>Description</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>timestamp</td>
|
||||
<td>4</td>
|
||||
<td>sender time (unix timestamp)</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>req type</td>
|
||||
<td>1</td>
|
||||
<td>0x03 (request sub type)</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>permission mask</td>
|
||||
<td>1</td>
|
||||
<td>bitwise inverse mask to AND to permissions (0 = get ALL telem values)</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<h4 id="get-minmaxave-sensor-nodes">Get Min/Max/Ave (Sensor nodes)</h4>
|
||||
<p>Not defined in <code>BaseChatMesh</code>.</p>
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Field</th>
|
||||
<th>Size (bytes)</th>
|
||||
<th>Description</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>timestamp</td>
|
||||
<td>4</td>
|
||||
<td>sender time (unix timestamp)</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>req type</td>
|
||||
<td>1</td>
|
||||
<td>0x04 (request sub type)</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>start</td>
|
||||
<td>4</td>
|
||||
<td>starting time, seconds ago</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>end</td>
|
||||
<td>4</td>
|
||||
<td>ending time, seconds ago</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>reserved</td>
|
||||
<td>2</td>
|
||||
<td>should be zeroes</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<h4 id="subscribe-to-telemetry-push-sensor-nodes">Subscribe to Telemetry push - (Sensor nodes)</h4>
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Field</th>
|
||||
<th>Size (bytes)</th>
|
||||
<th>Description</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>timestamp</td>
|
||||
<td>4</td>
|
||||
<td>sender time (unix timestamp)</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>req type</td>
|
||||
<td>1</td>
|
||||
<td>0x08 (request sub type)</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>push tag</td>
|
||||
<td>4</td>
|
||||
<td>32-bit tag to be used in telemetry push _REPLY payloads</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>timeout secs</td>
|
||||
<td>2</td>
|
||||
<td>subscription timeout (seconds)</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>reserved</td>
|
||||
<td>1</td>
|
||||
<td>should be zero</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>min deltas len</td>
|
||||
<td>1</td>
|
||||
<td>byte length of LPP encoded min_deltas</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>min deltas</td>
|
||||
<td>(variable)</td>
|
||||
<td>LPP encoded min_deltas</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<h4 id="unsubscribe-from-telemetry-push-sensor-nodes">Unsubscribe from Telemetry push - (Sensor nodes)</h4>
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Field</th>
|
||||
<th>Size (bytes)</th>
|
||||
<th>Description</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>timestamp</td>
|
||||
<td>4</td>
|
||||
<td>sender time (unix timestamp)</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>req type</td>
|
||||
<td>1</td>
|
||||
<td>0x09 (request sub type)</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<h4 id="get-access-list">Get Access List</h4>
|
||||
<p>Not defined in <code>BaseChatMesh</code>.</p>
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Field</th>
|
||||
<th>Size (bytes)</th>
|
||||
<th>Description</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>timestamp</td>
|
||||
<td>4</td>
|
||||
<td>sender time (unix timestamp)</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>req type</td>
|
||||
<td>1</td>
|
||||
<td>0x05 (request sub type)</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>reserved</td>
|
||||
<td>2</td>
|
||||
<td>should be zeroes</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<h4 id="get-neighbors">Get Neighbors</h4>
|
||||
<p>Not defined in <code>BaseChatMesh</code>.</p>
|
||||
<h4 id="get-owner-info">Get Owner Info</h4>
|
||||
@@ -1710,14 +1919,19 @@
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>0x01</code></td>
|
||||
<td>CLI command</td>
|
||||
<td>the command text of the message</td>
|
||||
<td>CLI data</td>
|
||||
<td>CLI command OR reply text</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>0x02</code></td>
|
||||
<td>signed plain text message</td>
|
||||
<td>first four bytes is sender pubkey prefix, followed by plain text message</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>0x03</code></td>
|
||||
<td>CLI command</td>
|
||||
<td>(since v1.18+) CLI command text (explicit)</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<h2 id="anonymous-request">Anonymous request</h2>
|
||||
|
||||
@@ -1 +1 @@
|
||||
{"config":{"lang":["en"],"separator":"[\\s\\-]+","pipeline":["stopWordFilter"],"fields":{"title":{"boost":1000.0},"text":{"boost":1.0},"tags":{"boost":1000000.0}}},"docs":[{"location":"","title":"Introduction","text":"<p>Welcome to the MeshCore documentation.</p> <p>Below are a few quick start guides.</p> <ul> <li>Frequently Asked Questions</li> <li>CLI Commands</li> <li>Companion Protocol</li> <li>Packet Format</li> <li>QR Codes</li> </ul> <p>If you find a mistake in any of our documentation, or find something is missing, please feel free to open a pull request for us to review.</p> <ul> <li>Documentation Source</li> </ul>"},{"location":"cli_commands/","title":"CLI Commands","text":"<p>This document provides an overview of CLI commands that can be sent to MeshCore Repeaters, Room Servers and Sensors.</p>"},{"location":"cli_commands/#navigation","title":"Navigation","text":"<ul> <li>Operational</li> <li>Neighbors</li> <li>Statistics</li> <li>Logging</li> <li>Information</li> <li>Configuration</li> <li>Radio</li> <li>System</li> <li>Routing</li> <li>ACL</li> <li>Region Management<ul> <li>Region Examples</li> </ul> </li> <li>GPS</li> <li>Sensors</li> <li>Bridge</li> <li>Ethernet</li> </ul>"},{"location":"cli_commands/#operational","title":"Operational","text":""},{"location":"cli_commands/#reboot-the-node","title":"Reboot the node","text":"<p>Usage: - <code>reboot</code></p> <p>Note: No reply is sent.</p>"},{"location":"cli_commands/#power-off-the-node","title":"Power-off the node","text":"<p>Usage: - <code>poweroff</code>, or - <code>shutdown</code></p> <p>Note: No reply is sent.</p>"},{"location":"cli_commands/#reset-the-clock-and-reboot","title":"Reset the clock and reboot","text":"<p>Usage: - <code>clkreboot</code></p> <p>Note: No reply is sent.</p>"},{"location":"cli_commands/#sync-the-clock-with-the-remote-device","title":"Sync the clock with the remote device","text":"<p>Usage: - <code>clock sync</code></p>"},{"location":"cli_commands/#display-current-time-in-utc","title":"Display current time in UTC","text":"<p>Usage: - <code>clock</code></p>"},{"location":"cli_commands/#set-the-time-to-a-specific-timestamp","title":"Set the time to a specific timestamp","text":"<p>Usage: - <code>time <epoch_seconds></code></p> <p>Parameters: - <code>epoch_seconds</code>: Unix epoch time</p>"},{"location":"cli_commands/#send-a-flood-advert","title":"Send a flood advert","text":"<p>Usage: - <code>advert</code></p>"},{"location":"cli_commands/#send-a-zero-hop-advert","title":"Send a zero-hop advert","text":"<p>Usage: - <code>advert.zerohop</code></p>"},{"location":"cli_commands/#start-an-over-the-air-ota-firmware-update","title":"Start an Over-The-Air (OTA) firmware update","text":"<p>Usage: - <code>start ota</code></p>"},{"location":"cli_commands/#erasefactory-reset","title":"Erase/Factory Reset","text":"<p>Usage: - <code>erase</code></p> <p>Serial Only: Yes</p> <p>Warning: This is destructive!</p>"},{"location":"cli_commands/#neighbors-repeater-only","title":"Neighbors (Repeater Only)","text":""},{"location":"cli_commands/#list-nearby-neighbors","title":"List nearby neighbors","text":"<p>Usage: - <code>neighbors</code></p> <p>Note: The output of this command is limited to the 8 most recent adverts.</p> <p>Note: Each line is encoded as <code>{pubkey-prefix}:{timestamp}:{snr*4}</code></p>"},{"location":"cli_commands/#remove-a-neighbor","title":"Remove a neighbor","text":"<p>Usage: - <code>neighbor.remove <pubkey_prefix></code></p> <p>Parameters: - <code>pubkey_prefix</code>: The public key of the node to remove from the neighbors list. This can be a short prefix or the full key. All neighbors matching the provided prefix will be removed.</p> <p>Note: You can remove all neighbors by sending a space character as the prefix. The space indicates an empty prefix, which matches all existing neighbors.</p>"},{"location":"cli_commands/#discover-zero-hop-neighbors","title":"Discover zero hop neighbors","text":"<p>Usage: - <code>discover.neighbors</code></p>"},{"location":"cli_commands/#statistics","title":"Statistics","text":""},{"location":"cli_commands/#clear-stats","title":"Clear Stats","text":"<p>Usage: <code>clear stats</code></p>"},{"location":"cli_commands/#system-stats-battery-uptime-queue-length-and-debug-flags","title":"System Stats - Battery, Uptime, Queue Length and Debug Flags","text":"<p>Usage: - <code>stats-core</code></p> <p>Serial Only: Yes</p>"},{"location":"cli_commands/#radio-stats-noise-floor-last-rssisnr-airtime-receive-errors","title":"Radio Stats - Noise floor, Last RSSI/SNR, Airtime, Receive errors","text":"<p>Usage: <code>stats-radio</code></p> <p>Serial Only: Yes</p>"},{"location":"cli_commands/#packet-stats-packet-counters-received-sent","title":"Packet stats - Packet counters: Received, Sent","text":"<p>Usage: <code>stats-packets</code></p> <p>Serial Only: Yes</p>"},{"location":"cli_commands/#logging","title":"Logging","text":""},{"location":"cli_commands/#begin-capture-of-rx-loLine truncated
|
||||
{"config":{"lang":["en"],"separator":"[\\s\\-]+","pipeline":["stopWordFilter"],"fields":{"title":{"boost":1000.0},"text":{"boost":1.0},"tags":{"boost":1000000.0}}},"docs":[{"location":"","title":"Introduction","text":"<p>Welcome to the MeshCore documentation.</p> <p>Below are a few quick start guides.</p> <ul> <li>Frequently Asked Questions</li> <li>CLI Commands</li> <li>Companion Protocol</li> <li>Packet Format</li> <li>QR Codes</li> </ul> <p>If you find a mistake in any of our documentation, or find something is missing, please feel free to open a pull request for us to review.</p> <ul> <li>Documentation Source</li> </ul>"},{"location":"cli_commands/","title":"CLI Commands","text":"<p>This document provides an overview of CLI commands that can be sent to MeshCore Repeaters, Room Servers and Sensors.</p>"},{"location":"cli_commands/#navigation","title":"Navigation","text":"<ul> <li>Operational</li> <li>Neighbors</li> <li>Statistics</li> <li>Logging</li> <li>Information</li> <li>Configuration</li> <li>Radio</li> <li>System</li> <li>Routing</li> <li>ACL</li> <li>Region Management<ul> <li>Region Examples</li> </ul> </li> <li>GPS</li> <li>Sensors</li> <li>Bridge</li> <li>Ethernet</li> </ul>"},{"location":"cli_commands/#operational","title":"Operational","text":""},{"location":"cli_commands/#reboot-the-node","title":"Reboot the node","text":"<p>Usage: - <code>reboot</code></p> <p>Note: No reply is sent.</p>"},{"location":"cli_commands/#power-off-the-node","title":"Power-off the node","text":"<p>Usage: - <code>poweroff</code>, or - <code>shutdown</code></p> <p>Note: No reply is sent.</p>"},{"location":"cli_commands/#reset-the-clock-and-reboot","title":"Reset the clock and reboot","text":"<p>Usage: - <code>clkreboot</code></p> <p>Note: No reply is sent.</p>"},{"location":"cli_commands/#sync-the-clock-with-the-remote-device","title":"Sync the clock with the remote device","text":"<p>Usage: - <code>clock sync</code></p>"},{"location":"cli_commands/#display-current-time-in-utc","title":"Display current time in UTC","text":"<p>Usage: - <code>clock</code></p>"},{"location":"cli_commands/#set-the-time-to-a-specific-timestamp","title":"Set the time to a specific timestamp","text":"<p>Usage: - <code>time <epoch_seconds></code></p> <p>Parameters: - <code>epoch_seconds</code>: Unix epoch time</p>"},{"location":"cli_commands/#send-a-flood-advert","title":"Send a flood advert","text":"<p>Usage: - <code>advert</code></p>"},{"location":"cli_commands/#send-a-zero-hop-advert","title":"Send a zero-hop advert","text":"<p>Usage: - <code>advert.zerohop</code></p>"},{"location":"cli_commands/#start-an-over-the-air-ota-firmware-update","title":"Start an Over-The-Air (OTA) firmware update","text":"<p>Usage: - <code>start ota</code></p>"},{"location":"cli_commands/#erasefactory-reset","title":"Erase/Factory Reset","text":"<p>Usage: - <code>erase</code></p> <p>Serial Only: Yes</p> <p>Warning: This is destructive!</p>"},{"location":"cli_commands/#neighbors-repeater-only","title":"Neighbors (Repeater Only)","text":""},{"location":"cli_commands/#list-nearby-neighbors","title":"List nearby neighbors","text":"<p>Usage: - <code>neighbors</code></p> <p>Note: The output of this command is limited to the 8 most recent adverts.</p> <p>Note: Each line is encoded as <code>{pubkey-prefix}:{timestamp}:{snr*4}</code></p>"},{"location":"cli_commands/#remove-a-neighbor","title":"Remove a neighbor","text":"<p>Usage: - <code>neighbor.remove <pubkey_prefix></code></p> <p>Parameters: - <code>pubkey_prefix</code>: The public key of the node to remove from the neighbors list. This can be a short prefix or the full key. All neighbors matching the provided prefix will be removed.</p> <p>Note: You can remove all neighbors by sending a space character as the prefix. The space indicates an empty prefix, which matches all existing neighbors.</p>"},{"location":"cli_commands/#discover-zero-hop-neighbors","title":"Discover zero hop neighbors","text":"<p>Usage: - <code>discover.neighbors</code></p>"},{"location":"cli_commands/#statistics","title":"Statistics","text":""},{"location":"cli_commands/#clear-stats","title":"Clear Stats","text":"<p>Usage: <code>clear stats</code></p>"},{"location":"cli_commands/#system-stats-battery-uptime-queue-length-and-debug-flags","title":"System Stats - Battery, Uptime, Queue Length and Debug Flags","text":"<p>Usage: - <code>stats-core</code></p> <p>Serial Only: Yes</p>"},{"location":"cli_commands/#radio-stats-noise-floor-last-rssisnr-airtime-receive-errors","title":"Radio Stats - Noise floor, Last RSSI/SNR, Airtime, Receive errors","text":"<p>Usage: <code>stats-radio</code></p> <p>Serial Only: Yes</p>"},{"location":"cli_commands/#packet-stats-packet-counters-received-sent","title":"Packet stats - Packet counters: Received, Sent","text":"<p>Usage: <code>stats-packets</code></p> <p>Serial Only: Yes</p>"},{"location":"cli_commands/#logging","title":"Logging","text":""},{"location":"cli_commands/#begin-capture-of-rx-loLine truncated
|
||||
+14
-14
@@ -2,58 +2,58 @@
|
||||
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
|
||||
<url>
|
||||
<loc>https://meshcore-dev.github.io/meshcore/</loc>
|
||||
<lastmod>2026-09-30</lastmod>
|
||||
<lastmod>2026-10-15</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://meshcore-dev.github.io/meshcore/cli_commands/</loc>
|
||||
<lastmod>2026-09-30</lastmod>
|
||||
<lastmod>2026-10-15</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://meshcore-dev.github.io/meshcore/companion_protocol/</loc>
|
||||
<lastmod>2026-09-30</lastmod>
|
||||
<lastmod>2026-10-15</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://meshcore-dev.github.io/meshcore/docs/</loc>
|
||||
<lastmod>2026-09-30</lastmod>
|
||||
<lastmod>2026-10-15</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://meshcore-dev.github.io/meshcore/faq/</loc>
|
||||
<lastmod>2026-09-30</lastmod>
|
||||
<lastmod>2026-10-15</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://meshcore-dev.github.io/meshcore/kiss_modem_protocol/</loc>
|
||||
<lastmod>2026-09-30</lastmod>
|
||||
<lastmod>2026-10-15</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://meshcore-dev.github.io/meshcore/nrf52_power_management/</loc>
|
||||
<lastmod>2026-09-30</lastmod>
|
||||
<lastmod>2026-10-15</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://meshcore-dev.github.io/meshcore/number_allocations/</loc>
|
||||
<lastmod>2026-09-30</lastmod>
|
||||
<lastmod>2026-10-15</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://meshcore-dev.github.io/meshcore/packet_format/</loc>
|
||||
<lastmod>2026-09-30</lastmod>
|
||||
<lastmod>2026-10-15</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://meshcore-dev.github.io/meshcore/payloads/</loc>
|
||||
<lastmod>2026-09-30</lastmod>
|
||||
<lastmod>2026-10-15</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://meshcore-dev.github.io/meshcore/qr_codes/</loc>
|
||||
<lastmod>2026-09-30</lastmod>
|
||||
<lastmod>2026-10-15</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://meshcore-dev.github.io/meshcore/radio_presets/</loc>
|
||||
<lastmod>2026-09-30</lastmod>
|
||||
<lastmod>2026-10-15</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://meshcore-dev.github.io/meshcore/stats_binary_frames/</loc>
|
||||
<lastmod>2026-09-30</lastmod>
|
||||
<lastmod>2026-10-15</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://meshcore-dev.github.io/meshcore/terminal_chat_cli/</loc>
|
||||
<lastmod>2026-09-30</lastmod>
|
||||
<lastmod>2026-10-15</lastmod>
|
||||
</url>
|
||||
</urlset>
|
||||
Binary file not shown.
@@ -665,12 +665,17 @@
|
||||
<pre><code>set lon {longitude}
|
||||
</code></pre>
|
||||
<p>Sets your advertisement map longitude. (decimal degrees)</p>
|
||||
<pre><code>set dutycycle {percent}
|
||||
</code></pre>
|
||||
<p>Sets the transmit duty cycle limit (1-100%). Example: <code>set dutycycle 10</code> for 10%.</p>
|
||||
<pre><code>set af {air-time-factor}
|
||||
</code></pre>
|
||||
<p>Sets the transmit air-time-factor. Deprecated — use <code>set dutycycle</code> instead.</p>
|
||||
<p>Sets the transmit air-time-factor.</p>
|
||||
<blockquote>
|
||||
<p><strong>Note:</strong> <code>set dutycycle</code> is <em>not</em> available in Terminal Chat. Every other
|
||||
firmware — Repeater, Room Server, Sensor and Companion Radio — routes its
|
||||
<code>set</code>/<code>get</code> commands through the shared radio prefs handler and does support
|
||||
it (see <a href="../cli_commands/">CLI Commands</a>). Terminal Chat is the sole
|
||||
exception: it has its own inline <code>set</code> handler covering only the six options
|
||||
listed above.</p>
|
||||
</blockquote>
|
||||
<pre><code>time {epoch-secs}
|
||||
</code></pre>
|
||||
<p>Set the device clock using UNIX epoch seconds. Example: time 1738242833</p>
|
||||
@@ -707,6 +712,9 @@
|
||||
<pre><code>public {text}
|
||||
</code></pre>
|
||||
<p>Sends the text message to the built-in 'public' group channel</p>
|
||||
<pre><code>help
|
||||
</code></pre>
|
||||
<p>Lists the available commands.</p>
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in new issue
Block a user