fix Lheard/Sitrep

This commit is contained in:
SpudGunMan
2024-07-26 00:37:26 -07:00
parent 553cdeb82b
commit 9e07448319
2 changed files with 41 additions and 48 deletions
+3 -1
View File
@@ -64,7 +64,9 @@ def auto_response(message, snr, rssi, hop, message_from_id, channel_number, devi
elif "solar" in message.lower():
bot_response = drap_xray_conditions() + "\n" + solar_conditions()
elif "lheard" in message.lower() or "sitrep" in message.lower():
bot_response = "Last heard:\n" + str(get_node_list(deviceID))
bot_response = "Last heard:\n" + str(get_node_list(1))
if interface2_enabled:
bot_response += "\nPort2:\n" + str(get_node_list(2))
elif "whereami" in message.lower():
location = get_node_location(message_from_id, deviceID)
where = where_am_i(str(location[0]),str(location[1]))
+38 -47
View File
@@ -90,9 +90,9 @@ def log_timestamp():
def decimal_to_hex(decimal_number):
return f"!{decimal_number:08x}"
def get_name_from_number(number, type='long', RXnodeId=1):
def get_name_from_number(number, type='long', nodeInt=1):
name = ""
if RXnodeId == 1:
if nodeInt == 1:
for node in interface1.nodes.values():
if number == node['num']:
if type == 'long':
@@ -104,10 +104,10 @@ def get_name_from_number(number, type='long', RXnodeId=1):
else:
pass
else:
name = str(decimal_to_hex(number)) # If long name not found, use the ID as string
name = str(decimal_to_hex(number)) # If name not found, use the ID as string
return name
if RXnodeId == 2:
if nodeInt == 2:
for node in interface2.nodes.values():
if number == node['num']:
if type == 'long':
@@ -119,41 +119,32 @@ def get_name_from_number(number, type='long', RXnodeId=1):
else:
pass
else:
name = str(decimal_to_hex(number))
name = str(decimal_to_hex(number)) # If name not found, use the ID as string
return name
return number
def get_node_list(nodeInt=1):
if interface1.nodes:
node_list = []
short_node_list = []
for node in interface1.nodes.values():
# ignore own
if node['num'] != myNodeNum2 or node['num'] != myNodeNum:
node_name = get_name_from_number(node['num'], 'long', nodeInt)
snr = node.get('snr', 0)
# Get a list of nodes on the device
node_list = []
short_node_list = []
if nodeInt == 1:
if interface1.nodes:
for node in interface1.nodes.values():
# ignore own
if node['num'] != myNodeNum2 or node['num'] != myNodeNum:
node_name = get_name_from_number(node['num'], 'long', nodeInt)
snr = node.get('snr', 0)
# issue where lastHeard is not always present
last_heard = node.get('lastHeard', 0)
# make a list of nodes with last heard time and SNR
item = (node_name, last_heard, snr)
node_list.append(item)
node_list.sort(key=lambda x: x[1], reverse=True)
#print (f"Node List: {node_list[:5]}\n")
# make a nice list for the user
for x in node_list[:5]:
short_node_list.append(f"{x[0]} SNR:{x[2]}")
node1_list = "\n".join(short_node_list)
node1 = (f"Port1:\n{node1_list}")
if interface2_enabled:
node_list = []
short_node_list = []
# issue where lastHeard is not always present
last_heard = node.get('lastHeard', 0)
# make a list of nodes with last heard time and SNR
item = (node_name, last_heard, snr)
node_list.append(item)
else:
print (f"{log_timestamp()} System: No nodes found")
return ERROR_FETCHING_DATA
if nodeInt == 2:
if interface2.nodes:
for node in interface2.nodes.values():
# ignore own
@@ -167,20 +158,20 @@ def get_node_list(nodeInt=1):
# make a list of nodes with last heard time and SNR
item = (node_name, last_heard, snr)
node_list.append(item)
node_list.sort(key=lambda x: x[1], reverse=True)
#print (f"Node List: {node_list[:5]}\n")
# make a nice list for the user
for x in node_list[:5]:
short_node_list.append(f"{x[0]} SNR:{x[2]}")
node2_list = "\n".join(short_node_list)
node2 = (f"\n Port2:\n{node2_list}")
else:
node2 = ""
else:
print (f"{log_timestamp()} System: No nodes found")
return ERROR_FETCHING_DATA
return node1 + node2
node_list.sort(key=lambda x: x[1], reverse=True)
#print (f"Node List: {node_list[:5]}\n")
# make a nice list for the user
for x in node_list[:5]:
short_node_list.append(f"{x[0]} SNR:{x[2]}")
node1_list = "\n".join(short_node_list)
return node1_list
def get_node_location(number, nodeInt=1):
# Get the location of a node by its number from nodeDB on device