From aaca4b5cb4807c066f68c0801eb1d58dca964706 Mon Sep 17 00:00:00 2001 From: SpudGunMan Date: Wed, 7 Aug 2024 11:52:29 -0700 Subject: [PATCH 1/8] Update system.py --- modules/system.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/modules/system.py b/modules/system.py index b2406c2..5115d76 100644 --- a/modules/system.py +++ b/modules/system.py @@ -293,7 +293,8 @@ def send_message(message, ch, nodeid=0, nodeInt=1): else: # message is less than MESSAGE_CHUNK_SIZE characters if nodeid == 0: # Send to channel - logger.info(f"Device:{nodeInt} Channel:{ch} " + CustomFormatter.red + "Sending: " + CustomFormatter.white + f"{message}") + logger.info(f"Device:{nodeInt} Channel:{ch} " + CustomFormatter.red + "Sending: " + 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) if nodeInt == 2: From cda29f7b1683961566779d08e7727dfc207b645e Mon Sep 17 00:00:00 2001 From: SpudGunMan Date: Wed, 7 Aug 2024 11:55:54 -0700 Subject: [PATCH 2/8] enhance file log --- mesh_bot.py | 6 +++--- pong_bot.py | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/mesh_bot.py b/mesh_bot.py index 1945010..4f6e9a9 100755 --- a/mesh_bot.py +++ b/mesh_bot.py @@ -259,7 +259,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): @@ -308,12 +308,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 +\ 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/pong_bot.py b/pong_bot.py index 265a919..d1c2209 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): @@ -204,7 +204,7 @@ def onReceive(packet, interface): # nothing to do for us logger.info(f"Ignoring incoming 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 From b26d0d9f9d417ff1ca233d47a3eb6358cfe20f62 Mon Sep 17 00:00:00 2001 From: SpudGunMan Date: Wed, 7 Aug 2024 12:02:32 -0700 Subject: [PATCH 3/8] fixes --- modules/system.py | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/modules/system.py b/modules/system.py index 5115d76..7a43a7a 100644 --- a/modules/system.py +++ b/modules/system.py @@ -284,7 +284,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) @@ -293,15 +293,14 @@ def send_message(message, ch, nodeid=0, nodeInt=1): else: # message is less than MESSAGE_CHUNK_SIZE characters if nodeid == 0: # Send to channel - logger.info(f"Device:{nodeInt} Channel:{ch} " + CustomFormatter.red + "Sending: " + CustomFormatter.white + f"{message}" + CustomFormatter.purple +\ - " To: " + CustomFormatter.white + f"{get_name_from_number(nodeid, 'long', nodeInt)}") + logger.info(f"Device:{nodeInt} Channel:{ch}" + CustomFormatter.red + "Sending: " + CustomFormatter.white + f"{message}") if nodeInt == 1: interface1.sendText(text=message, channelIndex=ch) if nodeInt == 2: 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) From 6eeba2fdbed8524d97b912a290ca464de8cf6cbe Mon Sep 17 00:00:00 2001 From: SpudGunMan Date: Wed, 7 Aug 2024 12:03:16 -0700 Subject: [PATCH 4/8] space --- modules/system.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/system.py b/modules/system.py index 7a43a7a..7ad9e57 100644 --- a/modules/system.py +++ b/modules/system.py @@ -293,7 +293,7 @@ def send_message(message, ch, nodeid=0, nodeInt=1): else: # message is less than MESSAGE_CHUNK_SIZE characters if nodeid == 0: # Send to channel - logger.info(f"Device:{nodeInt} Channel:{ch}" + CustomFormatter.red + "Sending: " + CustomFormatter.white + f"{message}") + logger.info(f"Device:{nodeInt} Channel:{ch} " + CustomFormatter.red + "Sending: " + CustomFormatter.white + f"{message}") if nodeInt == 1: interface1.sendText(text=message, channelIndex=ch) if nodeInt == 2: From ab48622d234ab8f73a69eabe834120ec4ff5d1f9 Mon Sep 17 00:00:00 2001 From: SpudGunMan Date: Wed, 7 Aug 2024 12:05:17 -0700 Subject: [PATCH 5/8] cleanup --- mesh_bot.py | 2 +- pong_bot.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/mesh_bot.py b/mesh_bot.py index 4f6e9a9..a20eae1 100755 --- a/mesh_bot.py +++ b/mesh_bot.py @@ -311,7 +311,7 @@ def onReceive(packet, interface): 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"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"Device:{rxNode} Channel:{channel_number} | {get_name_from_number(message_from_id, 'long', rxNode)} | {message_string}") except KeyError as e: diff --git a/pong_bot.py b/pong_bot.py index d1c2209..9f8b32e 100755 --- a/pong_bot.py +++ b/pong_bot.py @@ -202,7 +202,7 @@ 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"Device:{rxNode} Channel:{channel_number} | {get_name_from_number(message_from_id, 'long', rxNode)} | {message_string}") except KeyError as e: From 8a7b858edb33520b1bc5e6fe0c470e8f8c222e51 Mon Sep 17 00:00:00 2001 From: SpudGunMan Date: Wed, 7 Aug 2024 12:35:01 -0700 Subject: [PATCH 6/8] enhanceRequestLocation --- mesh_bot.py | 16 ++++++++-------- modules/system.py | 14 ++++++++++++-- 2 files changed, 20 insertions(+), 10 deletions(-) diff --git a/mesh_bot.py b/mesh_bot.py index a20eae1..29e7892 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,31 +71,31 @@ 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(): - location = get_node_location(message_from_id, deviceID) + location = get_node_location(message_from_id, deviceID, channel_number) weatherAlert = getActiveWeatherAlertsDetail(str(location[0]),str(location[1])) bot_response = weatherAlert elif "wxa" in message.lower(): - location = get_node_location(message_from_id, deviceID) + location = get_node_location(message_from_id, deviceID, channel_number) weatherAlert = getWeatherAlerts(str(location[0]),str(location[1])) bot_response = weatherAlert elif "wxc" in message.lower(): - location = get_node_location(message_from_id, deviceID) + location = get_node_location(message_from_id, deviceID, channel_number) weather = get_weather(str(location[0]),str(location[1]),1) bot_response = weather elif "wx" in message.lower(): - location = get_node_location(message_from_id, deviceID) + location = get_node_location(message_from_id, deviceID, channel_number) weather = get_weather(str(location[0]),str(location[1])) bot_response = weather elif "joke" in message.lower(): diff --git a/modules/system.py b/modules/system.py index 7ad9e57..7d56483 100644 --- a/modules/system.py +++ b/modules/system.py @@ -201,7 +201,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 @@ -221,7 +221,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") From cd8a5bafcf179cbccf588397573564106540acf6 Mon Sep 17 00:00:00 2001 From: SpudGunMan Date: Wed, 7 Aug 2024 12:38:34 -0700 Subject: [PATCH 7/8] cleanup --- mesh_bot.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mesh_bot.py b/mesh_bot.py index 29e7892..d857737 100755 --- a/mesh_bot.py +++ b/mesh_bot.py @@ -311,7 +311,7 @@ def onReceive(packet, interface): 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 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"Device:{rxNode} Channel:{channel_number} | {get_name_from_number(message_from_id, 'long', rxNode)} | {message_string}") except KeyError as e: From 9de72a26d009e7bb4ddf1193997f2bacac6f4d18 Mon Sep 17 00:00:00 2001 From: SpudGunMan Date: Wed, 7 Aug 2024 15:48:23 -0700 Subject: [PATCH 8/8] bugfix issue mentioned https://github.com/SpudGunMan/meshing-around/issues/31 --- mesh_bot.py | 4 ++++ modules/system.py | 12 +++++++++--- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/mesh_bot.py b/mesh_bot.py index d857737..d251055 100755 --- a/mesh_bot.py +++ b/mesh_bot.py @@ -225,9 +225,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" diff --git a/modules/system.py b/modules/system.py index 7d56483..433ba5f 100644 --- a/modules/system.py +++ b/modules/system.py @@ -185,9 +185,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]: