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:
1 parent
d6fcabcb4c
commit
7176f62dae
8 files changed
+644
-270
No files matched your search
@@ -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`
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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 |
|
||||
| ------------------------ | ------- | ------ | ----- | ----- | ------ | --------------- | --- | --- |
|
||||
|
||||
@@ -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
@@ -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:
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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
Reference in new issue
Block a user