@@ -564,15 +564,15 @@ def onConnected(interface):
564564 localConfig = interface .localNode .localConfig
565565
566566 if "alt" in configuration ["location" ]:
567- alt = int (configuration ["location" ]["alt" ])
567+ alt = int (configuration ["location" ]["alt" ] or 0 )
568568 localConfig .position .fixed_position = True
569569 print (f"Fixing altitude at { alt } meters" )
570570 if "lat" in configuration ["location" ]:
571- lat = float (configuration ["location" ]["lat" ])
571+ lat = float (configuration ["location" ]["lat" ] or 0 )
572572 localConfig .position .fixed_position = True
573573 print (f"Fixing latitude at { lat } degrees" )
574574 if "lon" in configuration ["location" ]:
575- lon = float (configuration ["location" ]["lon" ])
575+ lon = float (configuration ["location" ]["lon" ] or 0 )
576576 localConfig .position .fixed_position = True
577577 print (f"Fixing longitude at { lon } degrees" )
578578 print ("Setting device position" )
@@ -901,8 +901,11 @@ def export_config(interface):
901901 configObj ["channelUrl" ] = channel_url
902902 else :
903903 configObj ["channel_url" ] = channel_url
904- if lat or lon or alt :
905- configObj ["location" ] = {"lat" : lat , "lon" : lon , "alt" : alt }
904+ # lat and lon don't make much sense without the other (so fill with 0s), and alt isn't meaningful without both
905+ if lat or lon :
906+ configObj ["location" ] = {"lat" : lat or float (0 ), "lon" : lon or float (0 )}
907+ if alt :
908+ configObj ["location" ]["alt" ] = alt
906909
907910 config = MessageToDict (interface .localNode .localConfig )
908911 if config :
0 commit comments