From 4226201423d7c41336811adae2014d45ab04e63e Mon Sep 17 00:00:00 2001 From: Ian McEwen Date: Thu, 18 Apr 2024 12:14:16 -0700 Subject: [PATCH] Don't export null altitude, but support importing null lat/lon/alt as 0s. Fixes #548 --- meshtastic/__main__.py | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/meshtastic/__main__.py b/meshtastic/__main__.py index 7c178f2..0ef16be 100644 --- a/meshtastic/__main__.py +++ b/meshtastic/__main__.py @@ -564,15 +564,15 @@ def onConnected(interface): localConfig = interface.localNode.localConfig if "alt" in configuration["location"]: - alt = int(configuration["location"]["alt"]) + alt = int(configuration["location"]["alt"] or 0) localConfig.position.fixed_position = True print(f"Fixing altitude at {alt} meters") if "lat" in configuration["location"]: - lat = float(configuration["location"]["lat"]) + lat = float(configuration["location"]["lat"] or 0) localConfig.position.fixed_position = True print(f"Fixing latitude at {lat} degrees") if "lon" in configuration["location"]: - lon = float(configuration["location"]["lon"]) + lon = float(configuration["location"]["lon"] or 0) localConfig.position.fixed_position = True print(f"Fixing longitude at {lon} degrees") print("Setting device position") @@ -901,8 +901,11 @@ def export_config(interface): configObj["channelUrl"] = channel_url else: configObj["channel_url"] = channel_url - if lat or lon or alt: - configObj["location"] = {"lat": lat, "lon": lon, "alt": alt} + # lat and lon don't make much sense without the other (so fill with 0s), and alt isn't meaningful without both + if lat or lon: + configObj["location"] = {"lat": lat or float(0), "lon": lon or float(0)} + if alt: + configObj["location"]["alt"] = alt config = MessageToDict(interface.localNode.localConfig) if config: