From bbfca38d3451713973045dcc55435e06ba107279 Mon Sep 17 00:00:00 2001 From: MarekWo Date: Mon, 6 Apr 2026 19:26:42 +0200 Subject: [PATCH] fix: use adv_lat/adv_lon keys for device coordinates Device info from meshcore uses adv_lat/adv_lon, not lat/lon. Fixed in get_param, set_param (lat/lon individually), and the new /api/device/config endpoint. Co-Authored-By: Claude Opus 4.6 --- app/device_manager.py | 6 +++--- app/routes/api.py | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/app/device_manager.py b/app/device_manager.py index c959443..db7b0ff 100644 --- a/app/device_manager.py +++ b/app/device_manager.py @@ -2873,7 +2873,7 @@ class DeviceManager: elif param == 'tx': return {'success': True, 'data': {'tx': info.get('tx_power', '?')}} elif param in ('coords', 'lat', 'lon'): - return {'success': True, 'data': {'lat': info.get('lat', 0), 'lon': info.get('lon', 0)}} + return {'success': True, 'data': {'lat': info.get('adv_lat', 0), 'lon': info.get('adv_lon', 0)}} elif param == 'bat': bat = self.get_battery() return {'success': True, 'data': bat or {}} @@ -2928,12 +2928,12 @@ class DeviceManager: return {'success': True, 'message': f'Coords set to: {lat}, {lon}'} elif param == 'lat': info = self.get_device_info() - lon = info.get('lon', 0) + lon = info.get('adv_lon', 0) self.execute(self.mc.commands.set_coords(float(value), lon), timeout=5) return {'success': True, 'message': f'Lat set to: {value}'} elif param == 'lon': info = self.get_device_info() - lat = info.get('lat', 0) + lat = info.get('adv_lat', 0) self.execute(self.mc.commands.set_coords(lat, float(value)), timeout=5) return {'success': True, 'message': f'Lon set to: {value}'} elif param == 'radio': diff --git a/app/routes/api.py b/app/routes/api.py index 7d7d7e6..515155a 100644 --- a/app/routes/api.py +++ b/app/routes/api.py @@ -1135,8 +1135,8 @@ def get_device_config(): 'success': True, 'config': { 'name': info.get('name', info.get('adv_name', '')), - 'lat': info.get('lat', 0), - 'lon': info.get('lon', 0), + 'lat': info.get('adv_lat', 0), + 'lon': info.get('adv_lon', 0), 'advert_loc_policy': info.get('adv_loc_policy', 0), 'radio_freq': info.get('radio_freq', 0), 'radio_bw': info.get('radio_bw', 0),