From d54d8f58dd348da7e97cd870e9b33061d0b15655 Mon Sep 17 00:00:00 2001 From: MarekWo Date: Tue, 24 Mar 2026 14:17:42 +0100 Subject: [PATCH] fix(console): fix node_discover display using correct payload fields The DISCOVER_RESPONSE payload uses 'pubkey' and 'node_type', not 'public_key'/'name'/'adv_name'. Now shows pubkey prefix, resolved contact name, node type, SNR, and RSSI. Also rename CLI->COM type. Co-Authored-By: Claude Opus 4.6 --- app/device_manager.py | 2 +- app/main.py | 24 +++++++++++++++++++++--- 2 files changed, 22 insertions(+), 4 deletions(-) diff --git a/app/device_manager.py b/app/device_manager.py index f37a398..d58ca38 100644 --- a/app/device_manager.py +++ b/app/device_manager.py @@ -2335,7 +2335,7 @@ class DeviceManager: from meshcore.events import EventType types = 0xFF # all types if type_filter: - type_map = {'cli': 1, 'rep': 2, 'room': 3, 'sensor': 4, 'sens': 4} + type_map = {'com': 1, 'rep': 2, 'room': 3, 'sensor': 4, 'sens': 4} t = type_map.get(type_filter.lower()) if t: types = t diff --git a/app/main.py b/app/main.py index 210f6d8..024bdcc 100644 --- a/app/main.py +++ b/app/main.py @@ -1104,12 +1104,30 @@ def _execute_console_command(args: list) -> str: data = result['data'] if not data: return "No nodes discovered" + type_names = ["NONE", "COM", "REP", "ROOM", "SENS"] lines = [f"Discovered nodes ({len(data)}):"] for node in data: if isinstance(node, dict): - name = node.get('adv_name', node.get('name', '?')) - pk = node.get('public_key', '')[:12] - lines.append(f" {name} ({pk}...)") + pk = node.get('pubkey', '') + # Try to resolve name from contacts + name = None + if pk and device_manager.mc: + try: + contact = device_manager.mc.get_contact_by_key_prefix(pk) + if contact: + name = contact.get('adv_name', '') + except Exception: + pass + if name: + label = f"{pk[:6]} {name}" + else: + label = pk[:16] or '?' + nt = node.get('node_type', 0) + type_str = type_names[nt] if nt < len(type_names) else f"t:{nt}" + snr_in = node.get('SNR_in', 0) + snr = node.get('SNR', 0) + rssi = node.get('RSSI', 0) + lines.append(f" {label:28} {type_str:>4} SNR: {snr_in:6.2f}->{snr:6.2f} RSSI: {rssi}") else: lines.append(f" {node}") return "\n".join(lines)