From 990ea4f4e48756030c0aab5a567696dae8835f84 Mon Sep 17 00:00:00 2001 From: SpudGunMan Date: Fri, 24 Oct 2025 21:57:16 -0700 Subject: [PATCH] leaderboard fix messages --- modules/system.py | 27 ++++++++++++++++----------- 1 file changed, 16 insertions(+), 11 deletions(-) diff --git a/modules/system.py b/modules/system.py index f876dcb..00bb120 100644 --- a/modules/system.py +++ b/modules/system.py @@ -1392,17 +1392,6 @@ def consumeMetadata(packet, rxNode=0, channel=-1): # if not a bot ID track it if nodeID != globals().get(f'myNodeNum{rxNode}') and nodeID != 0: - # consider Meta for most messages leaderboard - if packet_type == 'TEXT_MESSAGE_APP': - node_message_count = meshLeaderboard.get('nodeMessageCounts', {}) - node_message_count[nodeID] = node_message_count.get(nodeID, 0) + 1 - meshLeaderboard['nodeTMessageCounts'] = node_message_count - - if node_message_count[nodeID] > meshLeaderboard['mostTMessages']['value']: - meshLeaderboard['mostTMessages']['value'] = node_message_count[nodeID] - meshLeaderboard['mostTMessages']['nodeID'] = nodeID - meshLeaderboard['mostTMessages']['timestamp'] = time.time() - # consider Meta for highest and weakest DBm if packet.get('rxSnr') is not None: dbm = packet['rxSnr'] @@ -1410,6 +1399,14 @@ def consumeMetadata(packet, rxNode=0, channel=-1): meshLeaderboard['highestDBm'] = {'nodeID': nodeID, 'value': dbm, 'timestamp': time.time()} if dbm < meshLeaderboard['weakestDBm']['value']: meshLeaderboard['weakestDBm'] = {'nodeID': nodeID, 'value': dbm, 'timestamp': time.time()} + + # if TEXT_MESSAGE consider Meta for most Messages leaderboard + if packet_type == 'TEXT_MESSAGE': + message_count = meshLeaderboard.get('nodeMessageCounts', {}) + message_count[nodeID] = message_count.get(nodeID, 0) + 1 + meshLeaderboard['nodeMessageCounts'] = message_count + if message_count[nodeID] > meshLeaderboard['mostMessages']['value']: + meshLeaderboard['mostMessages'] = {'nodeID': nodeID, 'value': message_count[nodeID], 'timestamp': time.time()} except Exception as e: logger.debug(f"System: Metadata decode error: Device: {rxNode} Channel: {channel} {e} packet {packet}") @@ -1419,6 +1416,14 @@ def consumeMetadata(packet, rxNode=0, channel=-1): if debugMetadata and 'TELEMETRY_APP' not in metadataFilter: print(f"DEBUG TELEMETRY_APP: {packet}\n\n") telemetry_packet = packet['decoded']['telemetry'] + # consider Meta for most Tmessages leaderboard + if nodeID != globals().get(f'myNodeNum{rxNode}') and nodeID != 0: + if telemetry_packet.get('tMessageCount') is not None: + tmessage_count = meshLeaderboard.get('nodeTMessageCounts', {}) + tmessage_count[nodeID] = tmessage_count.get(nodeID, 0) + telemetry_packet['tMessageCount'] + meshLeaderboard['nodeTMessageCounts'] = tmessage_count + if tmessage_count[nodeID] > meshLeaderboard['mostTMessages']['value']: + meshLeaderboard['mostTMessages'] = {'nodeID': nodeID, 'value': tmessage_count[nodeID], 'timestamp': time.time()} # Track lowest battery 🪫 if telemetry_packet.get('deviceMetrics'): deviceMetrics = telemetry_packet['deviceMetrics']