feat(mqtt): add packet counters to status; complete and reorganize MQTT bridge variants

MQTT status payload:
- Add packets_sent and packets_received (cumulative radio TX/RX totals)
  to the status `stats` object, aligning with the Waev/MeshMapper schema.

Variants (variants/eastmesh_mqtt -> variants/eastmesh):
- Rename the variant folder to variants/eastmesh.
- Add the remaining *_repeater_observer_mqtt_bridge envs (2 -> 36), one
  per observer board.
- Regroup envs by board (observer -> espnow -> mqtt_bridge) and add
  per-vendor section banners.

Docs & release notes:
- Update folder path references in README, AGENTS, and boards docs.
- Add observer-eastmesh and observer-eastmesh-bridge-espnow 2026.6.6
  release notes.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
Jared DohrmanandClaude Opus 4.8 committed 2026-06-27 22:09:31 +10:00
1 parent d6fcabcb4c
commit 7176f62dae
8 files changed
+644 -270

No files matched your search

+1 -1
View File
@@ -114,7 +114,7 @@ uv run pio run -e T_Beam_S3_Supreme_SX1262_repeater_observer -t upload --upload-
- `eastmesh-build.sh` — EastMesh build wrapper
- `build.sh` — upstream MeshCore build wrapper retained for merge hygiene
- `platformio.ini`
- `variants/eastmesh_mqtt/platformio.ini`
- `variants/eastmesh/platformio.ini`
- `examples/simple_repeater/MyMesh.cpp`
- `src/helpers/mqtt/MQTTUplink.cpp`
- `eastmesh-docs/*.md`
+1 -1
View File
@@ -125,7 +125,7 @@ uv run --group docs zensical build
- Python tooling and docs dependencies
- [`platformio.ini`](./platformio.ini)
- root PlatformIO config and ESP32 helper scripts
- [`variants/eastmesh_mqtt/platformio.ini`](./variants/eastmesh_mqtt/platformio.ini)
- [`variants/eastmesh/platformio.ini`](./variants/eastmesh/platformio.ini)
- shared EastMesh observer env definitions
- [`examples/simple_repeater/MyMesh.cpp`](./examples/simple_repeater/MyMesh.cpp)
- repeater CLI wiring, MQTT command surface, and web allowlist integration
+1 -1
View File
@@ -109,7 +109,7 @@ If you are deciding between otherwise similar boards, these target-level setting
## `repeater_observer` Boards
This table includes all observer targets currently defined in `variants/eastmesh_mqtt/platformio.ini`.
This table includes all observer targets currently defined in `variants/eastmesh/platformio.ini`.
| Target | MCU | RAM | PSRAM | Flash | LoRa | Display | GPS | SD |
| ------------------------ | ------- | ------ | ----- | ----- | ------ | --------------- | --- | --- |
+2
View File
@@ -3015,6 +3015,8 @@ void MyMesh::loop() {
mqtt_status.tx_air_secs = static_cast<uint32_t>(getTotalAirTime() / 1000);
mqtt_status.rx_air_secs = static_cast<uint32_t>(getReceiveAirTime() / 1000);
mqtt_status.recv_errors = radio_driver.getPacketsRecvErrors();
mqtt_status.packets_sent = radio_driver.getPacketsSent();
mqtt_status.packets_received = radio_driver.getPacketsRecv();
mqtt_status.radio_freq = _prefs.freq;
mqtt_status.radio_bw = _prefs.bw;
mqtt_status.radio_sf = _prefs.sf;
+25 -1
View File
@@ -266,6 +266,18 @@ releases:
text: "Documented the Waev broker in the README and custom CLI guides."
breaking_changes: []
- track: observer-eastmesh
version: "2026.6.6"
tag: "observer-eastmesh-v2026.6.6"
date: "2026-06-27"
previous_version: "2026.6.5"
summary: "Adds cumulative packet counters to the MQTT status payload so brokers receive radio TX/RX totals."
changes:
- type: added
area: mqtt
text: "Added `packets_sent` and `packets_received` counters to the MQTT `status` payload `stats` object, reporting cumulative radio TX/RX packet totals to align with the Waev/MeshMapper status schema."
breaking_changes: []
- track: observer-eastmesh-bridge-espnow
version: "2026.5.1"
tag: "observer-eastmesh-bridge-espnow-v2026.5.1"
@@ -443,10 +455,22 @@ releases:
text: "Documented the Waev broker in the README and custom CLI guides."
breaking_changes: []
- track: observer-eastmesh-bridge-espnow
version: "2026.6.6"
tag: "observer-eastmesh-bridge-espnow-v2026.6.6"
date: "2026-06-27"
previous_version: "2026.6.5"
summary: "Adds cumulative packet counters to the MQTT status payload so brokers receive radio TX/RX totals."
changes:
- type: added
area: mqtt
text: "Added `packets_sent` and `packets_received` counters to the MQTT `status` payload `stats` object, reporting cumulative radio TX/RX packet totals to align with the Waev/MeshMapper status schema."
breaking_changes: []
- track: observer-eastmesh-bridge-mqtt
version: "2026.7.0"
tag: "observer-eastmesh-bridge-mqtt-v2026.7.0"
date: "2026-06-24"
date: "2026-07-01"
previous_version: null
summary: "Introduces the observer-eastmesh-bridge-mqtt release track with bidirectional MQTT mesh bridging and web-panel peer broker configuration."
changes:
+5 -2
View File
@@ -669,13 +669,16 @@ int MQTTUplink::buildStatusJson(char* buffer, size_t buffer_size, bool online) c
"{\"status\":\"%s\",\"timestamp\":\"%s\",\"origin\":\"%s\",\"origin_id\":\"%s\","
"\"model\":\"%s\",\"firmware_version\":\"%s\",\"radio\":\"%s\",\"client_version\":\"%s\","
"\"repeat\":\"%s\",\"stats\":{\"battery_mv\":%d,\"uptime_secs\":%lu,\"errors\":%u,\"queue_len\":%u,"
"\"noise_floor\":%d,\"tx_air_secs\":%lu,\"rx_air_secs\":%lu,\"recv_errors\":%lu}}",
"\"noise_floor\":%d,\"tx_air_secs\":%lu,\"rx_air_secs\":%lu,\"recv_errors\":%lu,"
"\"packets_sent\":%lu,\"packets_received\":%lu}}",
online ? "online" : "offline", ts, origin, _device_id, model, FIRMWARE_VERSION, radio_info, client_version,
_last_status.repeat_enabled ? "on" : "off", _last_status.battery_mv,
static_cast<unsigned long>(_last_status.uptime_secs), _last_status.error_flags, _last_status.queue_len,
_last_status.noise_floor, static_cast<unsigned long>(_last_status.tx_air_secs),
static_cast<unsigned long>(_last_status.rx_air_secs),
static_cast<unsigned long>(_last_status.recv_errors));
static_cast<unsigned long>(_last_status.recv_errors),
static_cast<unsigned long>(_last_status.packets_sent),
static_cast<unsigned long>(_last_status.packets_received));
}
int MQTTUplink::buildPacketJson(char* buffer, size_t buffer_size, const mesh::Packet& packet, bool is_tx, int rssi,
+2
View File
@@ -22,6 +22,8 @@ struct MQTTStatusSnapshot {
uint32_t tx_air_secs;
uint32_t rx_air_secs;
uint32_t recv_errors;
uint32_t packets_sent;
uint32_t packets_received;
float radio_freq;
float radio_bw;
uint8_t radio_sf;
File diff suppressed because it is too large. Load diff