feat: retain multi-channel voltage telemetry
This commit is contained in:
1 parent
ad1ff3f03e
commit
131bbafc67
17 files changed
+1603
-138
No files matched your search
+49
-18
@@ -2,11 +2,13 @@
|
||||
|
||||
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.
|
||||
repeater's scheduled temperature, battery-voltage, or external I2C-voltage
|
||||
snapshot. The decoder also accepts the payload hex without its MeshCore packet
|
||||
header and the Base64 pages returned by repeater or room-server CLI commands.
|
||||
Decoding happens entirely in this browser; pasted data is not uploaded or sent
|
||||
anywhere.
|
||||
|
||||
The **Repeater ID** in the result is the first eight bytes of the sending
|
||||
The **Source ID** in a raw-packet 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.
|
||||
@@ -37,10 +39,13 @@ set telemetry.tx schedule off
|
||||
send telemetry.tx now
|
||||
```
|
||||
|
||||
The `send telemetry.tx now` command queues one `TTB1` temperature packet and
|
||||
one `TVB1` voltage packet containing all currently available samples, up to 165
|
||||
per packet. There is no temperature-only CLI command. The command requires at
|
||||
least one collected sample and works even when the automatic schedule is off.
|
||||
The `send telemetry.tx now` command queues one `TTB1` temperature packet, one
|
||||
`TVB1` battery-voltage packet, and `IVB1` chunks for every connected I2C voltage
|
||||
channel. `TTB1` and `TVB1` carry up to 165 samples. Each `IVB1` carries 64, so a
|
||||
full 192-point/four-day channel takes three packets. Channels whose retained
|
||||
history is entirely zero are treated as disconnected and are not sent. The
|
||||
command requires at least one collected base sample and works even when the
|
||||
automatic schedule is off.
|
||||
|
||||
## Decode a packet
|
||||
|
||||
@@ -49,6 +54,8 @@ least one collected sample and works even when the automatic schedule is off.
|
||||
<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>
|
||||
<button type="button" data-telemetry-example="packetExternalVoltage">I2C voltage packet</button>
|
||||
<button type="button" data-telemetry-example="externalVoltage">I2C voltage CLI page</button>
|
||||
</div>
|
||||
|
||||
<label for="telemetry-reply-input">Raw packet or payload hex</label>
|
||||
@@ -62,8 +69,9 @@ least one collected sample and works even when the automatic schedule is off.
|
||||
></textarea>
|
||||
<p class="telemetry-tool-help" id="telemetry-input-help">
|
||||
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.
|
||||
JSON field are accepted. CLI Base64 replies are also auto-detected. Paste
|
||||
multiple compatible packet or reply lines together to merge them by
|
||||
timestamp before downloading one CSV. Press Ctrl/Command+Enter to decode.
|
||||
</p>
|
||||
|
||||
<div class="telemetry-actions">
|
||||
@@ -112,9 +120,15 @@ finds and validates the payload automatically.
|
||||
3E00545642311122334455667788800092651E000800010264C8FEFFDC
|
||||
```
|
||||
|
||||
Both examples identify the source as repeater ID `1122334455667788`.
|
||||
### External I2C voltage
|
||||
|
||||
## Legacy CLI replies
|
||||
```text
|
||||
3E00495642311122334455667788800092651E00020800000004019026927109C427107FFF
|
||||
```
|
||||
|
||||
All three examples identify the source as `1122334455667788`.
|
||||
|
||||
## CLI history pages
|
||||
|
||||
The same page continues to decode the padded Base64 returned by these
|
||||
administrator commands:
|
||||
@@ -123,6 +137,7 @@ administrator commands:
|
||||
|---|---|---|---|
|
||||
| MCU temperature | `get telemetry.temp` | `get telemetry.temp 2` | 48 (24 hours) |
|
||||
| Battery voltage | `get telemetry.volt` | `get telemetry.volt 3` | 48 (24 hours) |
|
||||
| I2C voltage | `get telemetry.volt.i2c 2` | `get telemetry.volt.i2c 2 4` | 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
|
||||
@@ -133,17 +148,34 @@ get telemetry.volt 1
|
||||
> EkDUcWoeMAAB5+bl5eTj4uLh4ODf3t7d3Nvb2tnZ2NfX1tXU1NPS0tHQ0M/Ozc3My8vKycnI/w==
|
||||
```
|
||||
|
||||
Run `get telemetry.volt.i2c` without a channel first to list connected
|
||||
channels. For each channel, collect pages `1` through `4`. Paste all four reply
|
||||
lines into the decoder at once; it merges their timestamps into one 192-point,
|
||||
four-day table and downloads them as one CSV. The same merging works for the
|
||||
three `IVB1` analyzer packets from a full channel. Inputs must have the same
|
||||
telemetry type, source, LPP channel, and sample interval.
|
||||
|
||||
An INA3221 exposes its three enabled hardware inputs as three consecutive LPP
|
||||
channels. When it is the only external sensor these are normally `2`, `3`, and
|
||||
`4`, in hardware-input order. Other sensors can shift the numbers, so copy the
|
||||
IDs reported by `get telemetry.volt.i2c` rather than assuming them.
|
||||
|
||||
## 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.
|
||||
- `TTB1` means a raw temperature snapshot, `TVB1` a raw battery-voltage
|
||||
snapshot, and `IVB1` a packed external I2C-voltage chunk. 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
|
||||
missing and out-of-range states.
|
||||
- External I2C voltage uses a 15-bit code at `0.02 V` resolution. Code `0` is
|
||||
missing/disconnected; codes `1` through `32767` cover `0.02 V` through
|
||||
`655.34 V`. The LPP channel remains part of every page and raw chunk so
|
||||
multiple monitor inputs cannot be mixed accidentally.
|
||||
- GPS positions are reconstructed from signed 10-meter differentials. A zero
|
||||
differential after the page origin is inherently ambiguous: it can represent
|
||||
an unchanged fix, movement below the encoded resolution, or no fix. The table
|
||||
@@ -152,9 +184,8 @@ get telemetry.volt 1
|
||||
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.
|
||||
never puts GPS in RAW_CUSTOM packets. Location data therefore must come from a
|
||||
CLI Base64 page rather than analyzer hex.
|
||||
|
||||
For the byte-level layouts, see
|
||||
[Read repeater telemetry history](cli_commands.md#read-repeater-telemetry-history).
|
||||
Reference in new issue
Block a user