From 6d93fab49537978cc0b3bc1b47b6d294f36b32a0 Mon Sep 17 00:00:00 2001 From: GUVWAF <78759985+GUVWAF@users.noreply.github.com> Date: Fri, 1 Sep 2023 21:35:57 +0200 Subject: [PATCH] Add neighbor IDs to MQTT JSON (#2756) * Add neighbor IDs to JSON * Limit #neighbors to what we can actually save * Put neighbor IDs in an array * Add SNR to neighbors in nested objects --- src/modules/NeighborInfoModule.cpp | 2 +- src/mqtt/MQTT.cpp | 12 +++++++++++- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/src/modules/NeighborInfoModule.cpp b/src/modules/NeighborInfoModule.cpp index a5bb671f0..d6fb572a9 100644 --- a/src/modules/NeighborInfoModule.cpp +++ b/src/modules/NeighborInfoModule.cpp @@ -277,7 +277,7 @@ meshtastic_Neighbor *NeighborInfoModule::getOrCreateNeighbor(NodeNum originalSen } // otherwise, allocate one and assign data to it // TODO: max memory for the database should take neighbors into account, but currently doesn't - if (*numNeighbors < MAX_NUM_NODES) { + if (*numNeighbors < MAX_NUM_NEIGHBORS) { (*numNeighbors)++; } meshtastic_Neighbor *new_nbr = &neighbors[((*numNeighbors) - 1)]; diff --git a/src/mqtt/MQTT.cpp b/src/mqtt/MQTT.cpp index 7a1861756..7ff85d148 100644 --- a/src/mqtt/MQTT.cpp +++ b/src/mqtt/MQTT.cpp @@ -656,8 +656,18 @@ std::string MQTT::meshPacketToJson(meshtastic_MeshPacket *mp) &scratch)) { decoded = &scratch; msgPayload["node_id"] = new JSONValue((uint)decoded->node_id); + msgPayload["node_broadcast_interval_secs"] = new JSONValue((uint)decoded->node_broadcast_interval_secs); + msgPayload["last_sent_by_id"] = new JSONValue((uint)decoded->last_sent_by_id); msgPayload["neighbors_count"] = new JSONValue(decoded->neighbors_count); - msgPayload["neighbors"] = new JSONValue(decoded->neighbors); + JSONArray neighbors; + for (uint8_t i = 0; i < decoded->neighbors_count; i++) { + JSONObject neighborObj; + neighborObj["node_id"] = new JSONValue((uint)decoded->neighbors[i].node_id); + neighborObj["snr"] = new JSONValue((int)decoded->neighbors[i].snr); + neighbors.push_back(new JSONValue(neighborObj)); + } + msgPayload["neighbors"] = new JSONValue(neighbors); + jsonObj["payload"] = new JSONValue(msgPayload); } else { LOG_ERROR("Error decoding protobuf for neighborinfo message!\n"); }