mirror of
https://github.com/mikecarper/MeshCore.git
synced 2026-09-17 05:14:21 +00:00
Decode raw telemetry packets
This commit is contained in:
+52
-49
@@ -1,55 +1,37 @@
|
||||
# Telemetry history decoder
|
||||
# Telemetry decoder
|
||||
|
||||
Decode the Base64 reply from MeshCore repeater telemetry commands into a
|
||||
timestamped table. Decoding happens entirely in this browser; the pasted reply
|
||||
is not uploaded or sent anywhere.
|
||||
Paste raw hexadecimal packet data copied from the
|
||||
[Let's Mesh packet analyzer](https://analyzer.letsmesh.net/packets) to decode a
|
||||
repeater's scheduled temperature or battery-voltage snapshot. The decoder also
|
||||
accepts the payload hex without its MeshCore packet header. Decoding happens
|
||||
entirely in this browser; pasted data is not uploaded or sent anywhere.
|
||||
|
||||
## Commands to run
|
||||
The **Repeater ID** in the result is the first eight bytes of the sending
|
||||
repeater's public key. Match that 16-character hex value against the public-key
|
||||
prefix recorded for your repeaters. It comes from the telemetry payload itself,
|
||||
so it is available even when only the payload was copied.
|
||||
|
||||
Run one of these commands in a local serial CLI or a remote administrator CLI
|
||||
session, then copy the complete reply beginning with `> ` into the decoder.
|
||||
|
||||
| Data | Newest page | Older-page example | Samples per page |
|
||||
|---|---|---|---|
|
||||
| MCU temperature | `get telemetry.temp` | `get telemetry.temp 2` | 48 (24 hours) |
|
||||
| Battery voltage | `get telemetry.volt` | `get telemetry.volt 3` | 48 (24 hours) |
|
||||
| GPS position | `get telemetry.gps` | `get telemetry.gps 2` | 24 (12 hours) |
|
||||
|
||||
Page `1` is always the newest. Temperature and voltage support pages `1`-`7`.
|
||||
GPS normally supports pages `1`-`6`; its configured retention can be changed
|
||||
from one through 30 days:
|
||||
|
||||
```text
|
||||
set telemetry.gps 7
|
||||
get telemetry.gps 1
|
||||
get telemetry.gps 14
|
||||
```
|
||||
|
||||
The GPS setter reports the number of days and pages the device could actually
|
||||
allocate. Telemetry history is boot-local, so a freshly rebooted repeater may
|
||||
reply that its history is empty.
|
||||
|
||||
## Decode a reply
|
||||
## Decode a packet
|
||||
|
||||
<div class="telemetry-tool" data-telemetry-decoder>
|
||||
<div class="telemetry-examples" aria-label="Load an example reply">
|
||||
<strong>Try an example:</strong>
|
||||
<button type="button" data-telemetry-example="temperature">Temperature</button>
|
||||
<button type="button" data-telemetry-example="voltage">Voltage</button>
|
||||
<button type="button" data-telemetry-example="gps">GPS</button>
|
||||
<strong>Try an analyzer example:</strong>
|
||||
<button type="button" data-telemetry-example="packetTemperature">Temperature packet</button>
|
||||
<button type="button" data-telemetry-example="packetVoltage">Voltage packet</button>
|
||||
</div>
|
||||
|
||||
<label for="telemetry-reply-input">CLI reply or Base64 payload</label>
|
||||
<label for="telemetry-reply-input">Raw packet or payload hex</label>
|
||||
<textarea
|
||||
id="telemetry-reply-input"
|
||||
data-role="input"
|
||||
spellcheck="false"
|
||||
autocomplete="off"
|
||||
placeholder="> paste the Base64 telemetry reply here"
|
||||
placeholder="Paste hexadecimal Raw Data from the analyzer packet page"
|
||||
aria-describedby="telemetry-input-help"
|
||||
></textarea>
|
||||
<p class="telemetry-tool-help" id="telemetry-input-help">
|
||||
Paste either the complete <code>> ...</code> response or Base64 alone.
|
||||
Spaces, line breaks, colons, dashes, a leading <code>0x</code>, and a quoted
|
||||
JSON field are accepted. Legacy CLI Base64 replies are also auto-detected.
|
||||
Press Ctrl/Command+Enter to decode.
|
||||
</p>
|
||||
|
||||
@@ -80,37 +62,53 @@ reply that its history is empty.
|
||||
</section>
|
||||
</div>
|
||||
|
||||
## Example calls and replies
|
||||
## Analyzer hex examples
|
||||
|
||||
The buttons above load these synthetic but protocol-valid examples. Real
|
||||
responses have the same `> ` prefix and are auto-detected from payload type
|
||||
`0x11`, `0x12`, or `0x13`.
|
||||
The buttons load synthetic, protocol-valid zero-hop RAW_CUSTOM packets. A real
|
||||
scheduled snapshot normally has 165 samples and is much longer. Routed packets
|
||||
also contain path bytes before the `TTB1` or `TVB1` payload magic; the decoder
|
||||
finds and validates the payload automatically.
|
||||
|
||||
### Temperature
|
||||
|
||||
```text
|
||||
get telemetry.temp
|
||||
> EUDUcWoeMAVZVVVVUVVVVVXVVQACTJlSwEyZMmTJkuXKkyZEeNFARIcOFChQoUOHDiRY0aPI/ypUuXMmTA==
|
||||
3E00545442311122334455667788800092651E0008000102354A4E5082
|
||||
```
|
||||
|
||||
### Battery voltage
|
||||
|
||||
```text
|
||||
3E00545642311122334455667788800092651E000800010264C8FEFFDC
|
||||
```
|
||||
|
||||
Both examples identify the source as repeater ID `1122334455667788`.
|
||||
|
||||
## Legacy CLI replies
|
||||
|
||||
The same page continues to decode the padded Base64 returned by these
|
||||
administrator commands:
|
||||
|
||||
| Data | Newest page | Older-page example | Samples per page |
|
||||
|---|---|---|---|
|
||||
| MCU temperature | `get telemetry.temp` | `get telemetry.temp 2` | 48 (24 hours) |
|
||||
| Battery voltage | `get telemetry.volt` | `get telemetry.volt 3` | 48 (24 hours) |
|
||||
| GPS position | `get telemetry.gps` | `get telemetry.gps 2` | 24 (12 hours) |
|
||||
|
||||
Paste either the complete reply beginning with `> ` or Base64 alone. For
|
||||
example:
|
||||
|
||||
```text
|
||||
get telemetry.volt 1
|
||||
> EkDUcWoeMAAB5+bl5eTj4uLh4ODf3t7d3Nvb2tnZ2NfX1tXU1NPS0tHQ0M/Ozc3My8vKycnI/w==
|
||||
```
|
||||
|
||||
### GPS
|
||||
|
||||
```text
|
||||
get telemetry.gps 1
|
||||
> EwB9cmoeGIChAxwAR0i3AgAAAAAAAAAAAAAAAAKAAAAAAIAAAAD/9ABAAX/+AAgAYAAAB//wAD/+gAAAA/+wAP/8ABwAEAEABgAAAA//gAX/7AAv/3/8AAf/oAF//QAYACAAgAc=
|
||||
```
|
||||
|
||||
## Reading the table
|
||||
|
||||
- Timestamps default to UTC. Select **Show browser-local time** to convert
|
||||
them for display and CSV export.
|
||||
- `TTB1` means a raw temperature snapshot and `TVB1` means a raw voltage
|
||||
snapshot. The input summary also reports the MeshCore route and path-hop
|
||||
count when a complete packet was pasted.
|
||||
- Temperature preserves exact whole degrees from `-50 C` through `+77 C`, plus
|
||||
missing, below-range, and above-range states.
|
||||
- Voltage preserves hundredths of a volt from `1.88 V` through `4.40 V`, plus
|
||||
@@ -122,5 +120,10 @@ get telemetry.gps 1
|
||||
- A GPS clipping warning means at least one movement exceeded the differential
|
||||
range, so positions after that point can be less accurate.
|
||||
|
||||
GPS history remains available through the administrator CLI, but `telemetry.tx`
|
||||
never puts GPS in RAW_CUSTOM packets. Therefore analyzer hex decoding supports
|
||||
only temperature and voltage; location data cannot be recovered through this
|
||||
page.
|
||||
|
||||
For the byte-level layouts, see
|
||||
[Read repeater telemetry history](cli_commands.md#read-repeater-telemetry-history).
|
||||
|
||||
Reference in New Issue
Block a user