diff --git a/mesh_bot.py b/mesh_bot.py index 02b21db..7a2cbe8 100755 --- a/mesh_bot.py +++ b/mesh_bot.py @@ -53,7 +53,7 @@ def auto_response(message, snr, rssi, hop, message_from_id, channel_number, devi elif "cmd" in message.lower() or "cmd?" in message.lower(): bot_response = help_message elif "sun" in message.lower(): - location = get_node_location(message_from_id, deviceID) + location = get_node_location(message_from_id, deviceID, channel_number) bot_response = get_sun(str(location[0]),str(location[1])) elif "hfcond" in message.lower(): bot_response = hf_band_conditions() @@ -71,15 +71,15 @@ def auto_response(message, snr, rssi, hop, message_from_id, channel_number, devi if interface2_enabled: bot_response += " P2:" + str(chutil2) + "%" elif "whereami" in message.lower(): - location = get_node_location(message_from_id, deviceID) + location = get_node_location(message_from_id, deviceID, channel_number) where = where_am_i(str(location[0]),str(location[1])) bot_response = where elif "tide" in message.lower(): - location = get_node_location(message_from_id, deviceID) + location = get_node_location(message_from_id, deviceID, channel_number) tide = get_tide(str(location[0]),str(location[1])) bot_response = tide elif "moon" in message.lower(): - location = get_node_location(message_from_id, deviceID) + location = get_node_location(message_from_id, deviceID, channel_number) moon = get_moon(str(location[0]),str(location[1])) bot_response = moon elif "wxalert" in message.lower() or "wxa" in message.lower(): @@ -230,9 +230,13 @@ def onReceive(packet, interface): hop_away = 0 if packet.get('hopLimit'): hop_limit = packet.get('hopLimit', 0) + else: + hop_limit = 0 if packet.get('hopStart'): hop_start = packet.get('hopStart', 0) + else: + hop_start = 0 if hop_start == hop_limit: hop = "Direct" @@ -264,7 +268,7 @@ def onReceive(packet, interface): # respond with welcome message on DM logger.warning(f"Device:{rxNode} Ignoring DM: {message_string} From: {get_name_from_number(message_from_id, 'long', rxNode)}") send_message(welcome_message, channel_number, message_from_id, rxNode) - msgLogger.info(f"{get_name_from_number(message_from_id, 'long', rxNode)} | {message_string}") + msgLogger.info(f"Device:{rxNode} Channel:{channel_number} | {get_name_from_number(message_from_id, 'long', rxNode)} | {message_string}") else: # message is on a channel if messageTrap(message_string): @@ -313,12 +317,12 @@ def onReceive(packet, interface): elif rxNode == 2: logger.debug(f"Repeating message on Device1 Channel:{channel_number}") send_message(rMsg, channel_number, 0, 1) - msgLogger.info(f"{get_name_from_number(message_from_id, 'long', rxNode)} | {message_string}") + msgLogger.info(f"Device:{rxNode} Channel:{channel_number} | {get_name_from_number(message_from_id, 'long', rxNode)} | {message_string}") else: # nothing to do for us - logger.info(f"Ignoring incoming Device:{rxNode} Channel:{channel_number} " + CustomFormatter.green + "Message:" + CustomFormatter.white +\ + logger.info(f"Device:{rxNode} Channel:{channel_number} " + CustomFormatter.green + "Ignoring Message:" + CustomFormatter.white +\ f" {message_string} " + CustomFormatter.purple + "From:" + CustomFormatter.white + f" {get_name_from_number(message_from_id)}") - msgLogger.info(f"{get_name_from_number(message_from_id, 'long', rxNode)} | {message_string}") + msgLogger.info(f"Device:{rxNode} Channel:{channel_number} | {get_name_from_number(message_from_id, 'long', rxNode)} | {message_string}") except KeyError as e: logger.critical(f"System: Error processing packet: {e} Device:{rxNode}") print(packet) # print the packet for debugging diff --git a/modules/system.py b/modules/system.py index ac1ad1a..0e4a319 100644 --- a/modules/system.py +++ b/modules/system.py @@ -192,9 +192,15 @@ def get_node_list(nodeInt=1): logger.warning(f"System: No nodes found") return ERROR_FETCHING_DATA - node_list1.sort(key=lambda x: x[1], reverse=True) - #print (f"Node List: {node_list1[:5]}\n") - node_list2.sort(key=lambda x: x[1], reverse=True) + try: + #print (f"Node List: {node_list1[:5]}\n") + node_list1.sort(key=lambda x: x[1], reverse=True) + #print (f"Node List: {node_list1[:5]}\n") + node_list2.sort(key=lambda x: x[1], reverse=True) + except Exception as e: + logger.error(f"System: Error sorting node list: {e}") + print (f"Node List1: {node_list1[:5]}\n") + print (f"Node List2: {node_list2[:5]}\n") # make a nice list for the user for x in node_list1[:SITREP_NODE_COUNT]: @@ -208,7 +214,7 @@ def get_node_list(nodeInt=1): return node_list -def get_node_location(number, nodeInt=1): +def get_node_location(number, nodeInt=1, channel=0): # Get the location of a node by its number from nodeDB on device latitude = latitudeValue longitude = longitudeValue @@ -228,7 +234,17 @@ def get_node_location(number, nodeInt=1): return position else: logger.warning(f"System: No location data for {number} using default location") - #interface1.sendPosition(destinationId=number, wantResponse=True, channelIndex=0) + + # request location data + try: + logger.debug(f"System: Requesting location data for {number}") + if nodeInt == 1: + interface1.sendPosition(destinationId=number, wantResponse=False, channelIndex=channel) + if nodeInt == 2: + interface2.sendPosition(destinationId=number, wantResponse=False, channelIndex=channel) + except Exception as e: + logger.error(f"System: Error requesting location data for {number}. Error: {e}") + return position else: logger.warning(f"System: No nodes found") @@ -291,7 +307,7 @@ def send_message(message, ch, nodeid=0, nodeInt=1): interface2.sendText(text=m, channelIndex=ch) else: # Send to DM - logger.info(f"Device:{nodeInt} " + CustomFormatter.red + "Sending Multi-Chunk Message: " + CustomFormatter.white + f"{m}" + CustomFormatter.purple +\ + logger.info(f"Device:{nodeInt} " + CustomFormatter.red + "Sending Multi-Chunk DM: " + CustomFormatter.white + f"{m}" + CustomFormatter.purple +\ " To: " + CustomFormatter.white + f"{get_name_from_number(nodeid, 'long', nodeInt)}") if nodeInt == 1: interface1.sendText(text=m, channelIndex=ch, destinationId=nodeid) @@ -307,7 +323,7 @@ def send_message(message, ch, nodeid=0, nodeInt=1): interface2.sendText(text=message, channelIndex=ch) else: # Send to DM - logger.info(f"Device:{nodeInt} " + CustomFormatter.red + "Sending: " + CustomFormatter.white + f"{message}" + CustomFormatter.purple +\ + logger.info(f"Device:{nodeInt} " + CustomFormatter.red + "Sending DM: " + CustomFormatter.white + f"{message}" + CustomFormatter.purple +\ " To: " + CustomFormatter.white + f"{get_name_from_number(nodeid, 'long', nodeInt)}") if nodeInt == 1: interface1.sendText(text=message, channelIndex=ch, destinationId=nodeid) diff --git a/pong_bot.py b/pong_bot.py index 265a919..9f8b32e 100755 --- a/pong_bot.py +++ b/pong_bot.py @@ -151,7 +151,7 @@ def onReceive(packet, interface): # respond with welcome message on DM logger.warning(f"Device:{rxNode} Ignoring DM: {message_string} From: {get_name_from_number(message_from_id, 'long', rxNode)}") send_message(welcome_message, channel_number, message_from_id, rxNode) - msgLogger.info(f"{get_name_from_number(message_from_id, 'long', rxNode)} | {message_string}") + msgLogger.info(f"Device:{rxNode} Channel:{channel_number} | {get_name_from_number(message_from_id, 'long', rxNode)} | {message_string}") else: # message is on a channel if messageTrap(message_string): @@ -202,9 +202,9 @@ def onReceive(packet, interface): send_message(rMsg, channel_number, 0, 1) else: # nothing to do for us - logger.info(f"Ignoring incoming Device:{rxNode} Channel:{channel_number} " + CustomFormatter.green + "Message:" + CustomFormatter.white +\ + logger.info(f"Ignoring Device:{rxNode} Channel:{channel_number} " + CustomFormatter.green + "Message:" + CustomFormatter.white +\ f" {message_string} " + CustomFormatter.purple + "From:" + CustomFormatter.white + f" {get_name_from_number(message_from_id)}") - msgLogger.info(f"{get_name_from_number(message_from_id, 'long', rxNode)} | {message_string}") + msgLogger.info(f"Device:{rxNode} Channel:{channel_number} | {get_name_from_number(message_from_id, 'long', rxNode)} | {message_string}") except KeyError as e: logger.critical(f"System: Error processing packet: {e} Device:{rxNode}") print(packet) # print the packet for debugging