From bca0a0ff5fdf054643abc9c45a037de2e5e4d529 Mon Sep 17 00:00:00 2001 From: SpudGunMan Date: Wed, 19 Jun 2024 14:21:30 -0700 Subject: [PATCH 01/22] Update solarconditions.py --- solarconditions.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/solarconditions.py b/solarconditions.py index 64fc713..4b03b23 100644 --- a/solarconditions.py +++ b/solarconditions.py @@ -55,8 +55,12 @@ def drap_xray_conditions(): xray_flux += "error fetching" return xray_flux -def get_sunrise_sunset(): - sun = Sun(LATITUDE, LONGITUDE) +def get_sunrise_sunset(lat=0, lon=0): + if lat != 0 and lon != 0: + sun = Sun(lat, lon) + else: + sun = Sun(LATITUDE, LONGITUDE) + to_zone = tz.tzlocal() today_sr = sun.get_sunrise_time(datetime.now()) today_ss = sun.get_sunset_time(datetime.now()) From 9622a1e8b8293ed70fef3eaf5a80de0e73445ca8 Mon Sep 17 00:00:00 2001 From: SpudGunMan Date: Wed, 19 Jun 2024 14:21:32 -0700 Subject: [PATCH 02/22] Update mesh-bot.py --- mesh-bot.py | 24 +++++++++++++++++------- 1 file changed, 17 insertions(+), 7 deletions(-) diff --git a/mesh-bot.py b/mesh-bot.py index 41306af..ab394f9 100644 --- a/mesh-bot.py +++ b/mesh-bot.py @@ -30,7 +30,7 @@ except Exception as e: print(f"System: Critical Error script abort. {e}") exit() -def auto_response(message,snr,rssi,hop): +def auto_response(message,snr,rssi,hop,message_from_id): #Auto response to messages if "ping" in message.lower(): #Check if the user added @foo to the message @@ -65,12 +65,12 @@ def auto_response(message,snr,rssi,hop): elif "help" in message.lower(): bot_response = help_message elif "sun" in message.lower(): - suntime = get_sunrise_sunset() + suntime = get_sunrise_sunset(get_node_location(message_from_id)) bot_response = "Sunrise: " + suntime[0] + "\nSunset: " + suntime[1] elif "hfcond" in message.lower(): bot_response = hf_band_conditions() elif "solar" in message.lower(): - bot_response = drap_xray_conditions() + "\n" + solar_conditions() + bot_response = drap_xray_conditions() + "\n" + solar_conditions(get_node_location) elif "lheard" in message.lower(): bot_response = "Last 5 nodes heard: " + str(get_node_list()) else: @@ -132,20 +132,20 @@ def onReceive(packet, interface): if messageTrap(message_string): print(f"{log_timestamp()} Received DM: {message_string} on Channel: {channel_number} From: {get_name_from_number(message_from_id)}") # respond with a direct message - send_message(auto_response(message_string,snr,rssi,hop),channel_number,message_from_id) + send_message(auto_response(message_string,snr,rssi,hop,message_from_id),channel_number,message_from_id) else: #respond with welcome message print(f"{log_timestamp()} Ignoring DM: {message_string} From: {get_name_from_number(message_from_id)}") - send_message(welcome_message,channel_number,message_from_id) + send_message(welcome_message,channel_number,message_from_id,message_from_id) else: if messageTrap(message_string): print(f"{log_timestamp()} Received On Channel {channel_number}: {message_string} From: {get_name_from_number(message_from_id)}") if RESPOND_BY_DM_ONLY: # respond to channel message via direct message to keep the channel clean - send_message(auto_response(message_string,snr,rssi,hop),channel_number,message_from_id) + send_message(auto_response(message_string,snr,rssi,hop,message_from_id),channel_number,message_from_id) else: # or respond to channel message on the channel itself - send_message(auto_response(message_string,snr,rssi),channel_number,0) + send_message(auto_response(message_string,snr,rssi,message_from_id),channel_number,0) else: print(f"{log_timestamp()} System: Ignoring incoming channel {channel_number}: {message_string} From: {get_name_from_number(message_from_id)}") @@ -205,6 +205,16 @@ def get_node_list(): else: node_list.append("Nothing heard") return node_list + +def get_node_location(number): + for node in interface.nodes.values(): + if number == node['num']: + if 'latitudeI' in node: + lat = node['latitudeI'] + lon = node['longitudeI'] + position = (lat,lon) + return position + return "No location data" def send_message(message,ch,nodeid): if nodeid == 0: From e4c83b0b2a920a2699c43aa7a798a2dca2f098f5 Mon Sep 17 00:00:00 2001 From: SpudGunMan Date: Wed, 19 Jun 2024 14:26:49 -0700 Subject: [PATCH 03/22] Update mesh-bot.py --- mesh-bot.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/mesh-bot.py b/mesh-bot.py index ab394f9..59c7830 100644 --- a/mesh-bot.py +++ b/mesh-bot.py @@ -65,12 +65,16 @@ def auto_response(message,snr,rssi,hop,message_from_id): elif "help" in message.lower(): bot_response = help_message elif "sun" in message.lower(): - suntime = get_sunrise_sunset(get_node_location(message_from_id)) + location = get_node_location(message_from_id) + lat = location[0] + lon = location[1] + print (f"Using Reported Location: {location}") + suntime = get_sunrise_sunset(lat,lon) bot_response = "Sunrise: " + suntime[0] + "\nSunset: " + suntime[1] elif "hfcond" in message.lower(): bot_response = hf_band_conditions() elif "solar" in message.lower(): - bot_response = drap_xray_conditions() + "\n" + solar_conditions(get_node_location) + bot_response = drap_xray_conditions() + "\n" + solar_conditions() elif "lheard" in message.lower(): bot_response = "Last 5 nodes heard: " + str(get_node_list()) else: From dfd873da005313369a40b56f5ff9314bdcd17a97 Mon Sep 17 00:00:00 2001 From: SpudGunMan Date: Wed, 19 Jun 2024 14:28:27 -0700 Subject: [PATCH 04/22] Update mesh-bot.py --- mesh-bot.py | 1 + 1 file changed, 1 insertion(+) diff --git a/mesh-bot.py b/mesh-bot.py index 59c7830..e5ca90e 100644 --- a/mesh-bot.py +++ b/mesh-bot.py @@ -211,6 +211,7 @@ def get_node_list(): return node_list def get_node_location(number): + print (f"Looking for location of {get_name_from_number(number)}") for node in interface.nodes.values(): if number == node['num']: if 'latitudeI' in node: From 5ba199bd17208a75559a2d562bcac6d9b9e75a04 Mon Sep 17 00:00:00 2001 From: SpudGunMan Date: Wed, 19 Jun 2024 14:31:27 -0700 Subject: [PATCH 05/22] Update mesh-bot.py --- mesh-bot.py | 22 ++++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/mesh-bot.py b/mesh-bot.py index e5ca90e..5582990 100644 --- a/mesh-bot.py +++ b/mesh-bot.py @@ -212,14 +212,20 @@ def get_node_list(): def get_node_location(number): print (f"Looking for location of {get_name_from_number(number)}") - for node in interface.nodes.values(): - if number == node['num']: - if 'latitudeI' in node: - lat = node['latitudeI'] - lon = node['longitudeI'] - position = (lat,lon) - return position - return "No location data" + if interface.nodes: + for node in interface.nodes.values(): + if number == node['num']: + if 'latitudeI' in node: + lat = node['latitudeI'] + lon = node['longitudeI'] + position = (lat,lon) + print (f"{log_timestamp()} System: Found location data for {number}") + return position + else: + print (f"{log_timestamp()} System: No location data for {number}") + return "0,0" + else: + return "0,0" def send_message(message,ch,nodeid): if nodeid == 0: From 3587c9df370102e0cb2370982c4d3be3887ce82d Mon Sep 17 00:00:00 2001 From: SpudGunMan Date: Wed, 19 Jun 2024 14:33:01 -0700 Subject: [PATCH 06/22] Update mesh-bot.py --- mesh-bot.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/mesh-bot.py b/mesh-bot.py index 5582990..dedc420 100644 --- a/mesh-bot.py +++ b/mesh-bot.py @@ -215,6 +215,7 @@ def get_node_location(number): if interface.nodes: for node in interface.nodes.values(): if number == node['num']: + print (node) if 'latitudeI' in node: lat = node['latitudeI'] lon = node['longitudeI'] @@ -223,9 +224,9 @@ def get_node_location(number): return position else: print (f"{log_timestamp()} System: No location data for {number}") - return "0,0" + return [0,0] else: - return "0,0" + return [0,0] def send_message(message,ch,nodeid): if nodeid == 0: From 53040e83b850f05df664ac05a37bc41f68b88036 Mon Sep 17 00:00:00 2001 From: SpudGunMan Date: Wed, 19 Jun 2024 14:33:58 -0700 Subject: [PATCH 07/22] Update mesh-bot.py --- mesh-bot.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mesh-bot.py b/mesh-bot.py index dedc420..f34315c 100644 --- a/mesh-bot.py +++ b/mesh-bot.py @@ -217,8 +217,8 @@ def get_node_location(number): if number == node['num']: print (node) if 'latitudeI' in node: - lat = node['latitudeI'] - lon = node['longitudeI'] + lat = node['latitude'] + lon = node['longitude'] position = (lat,lon) print (f"{log_timestamp()} System: Found location data for {number}") return position From ec18fc3e3309f4d4da4ff55ea135f9b3b814fec6 Mon Sep 17 00:00:00 2001 From: SpudGunMan Date: Wed, 19 Jun 2024 14:35:30 -0700 Subject: [PATCH 08/22] Update mesh-bot.py --- mesh-bot.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mesh-bot.py b/mesh-bot.py index f34315c..a988e7a 100644 --- a/mesh-bot.py +++ b/mesh-bot.py @@ -216,7 +216,7 @@ def get_node_location(number): for node in interface.nodes.values(): if number == node['num']: print (node) - if 'latitudeI' in node: + if 'latitude' in node: lat = node['latitude'] lon = node['longitude'] position = (lat,lon) From 1381e79df518648e43fb3529d7d6dd7a7f9cf7ad Mon Sep 17 00:00:00 2001 From: SpudGunMan Date: Wed, 19 Jun 2024 14:37:39 -0700 Subject: [PATCH 09/22] Update mesh-bot.py --- mesh-bot.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mesh-bot.py b/mesh-bot.py index a988e7a..4294ba0 100644 --- a/mesh-bot.py +++ b/mesh-bot.py @@ -217,8 +217,8 @@ def get_node_location(number): if number == node['num']: print (node) if 'latitude' in node: - lat = node['latitude'] - lon = node['longitude'] + lat = node['position']['latitude'] + lon = node['position']['longitude'] position = (lat,lon) print (f"{log_timestamp()} System: Found location data for {number}") return position From b85b7cecbb8356a9021bddf0835bec519508ecd8 Mon Sep 17 00:00:00 2001 From: SpudGunMan Date: Wed, 19 Jun 2024 14:39:24 -0700 Subject: [PATCH 10/22] Update mesh-bot.py --- mesh-bot.py | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/mesh-bot.py b/mesh-bot.py index 4294ba0..73b4898 100644 --- a/mesh-bot.py +++ b/mesh-bot.py @@ -216,10 +216,11 @@ def get_node_location(number): for node in interface.nodes.values(): if number == node['num']: print (node) - if 'latitude' in node: - lat = node['position']['latitude'] - lon = node['position']['longitude'] - position = (lat,lon) + if 'position' in node: + print (node['position']) + #lat = node['position']['latitude'] + #lon = node['position']['longitude'] + #position = (lat,lon) print (f"{log_timestamp()} System: Found location data for {number}") return position else: From f109472c40ce13c687c5ae794a7eca19149da0c0 Mon Sep 17 00:00:00 2001 From: SpudGunMan Date: Wed, 19 Jun 2024 14:42:05 -0700 Subject: [PATCH 11/22] Update mesh-bot.py --- mesh-bot.py | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/mesh-bot.py b/mesh-bot.py index 73b4898..80cfbbd 100644 --- a/mesh-bot.py +++ b/mesh-bot.py @@ -215,13 +215,10 @@ def get_node_location(number): if interface.nodes: for node in interface.nodes.values(): if number == node['num']: - print (node) if 'position' in node: - print (node['position']) - #lat = node['position']['latitude'] - #lon = node['position']['longitude'] - #position = (lat,lon) - print (f"{log_timestamp()} System: Found location data for {number}") + for data in node['position']: + position = [data['latitude'],data['longitude']] + print (f"{log_timestamp()} System: Using location data for {number}") return position else: print (f"{log_timestamp()} System: No location data for {number}") From 9fca8755614890dc75f2528e149d7c2b4cf85eb4 Mon Sep 17 00:00:00 2001 From: SpudGunMan Date: Wed, 19 Jun 2024 14:43:04 -0700 Subject: [PATCH 12/22] Update mesh-bot.py --- mesh-bot.py | 1 + 1 file changed, 1 insertion(+) diff --git a/mesh-bot.py b/mesh-bot.py index 80cfbbd..130afb6 100644 --- a/mesh-bot.py +++ b/mesh-bot.py @@ -216,6 +216,7 @@ def get_node_location(number): for node in interface.nodes.values(): if number == node['num']: if 'position' in node: + print (node['position']) for data in node['position']: position = [data['latitude'],data['longitude']] print (f"{log_timestamp()} System: Using location data for {number}") From 7abf1120b73db68d42f37827ec1df42adf07828b Mon Sep 17 00:00:00 2001 From: SpudGunMan Date: Wed, 19 Jun 2024 14:44:20 -0700 Subject: [PATCH 13/22] Update mesh-bot.py --- mesh-bot.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mesh-bot.py b/mesh-bot.py index 130afb6..74de522 100644 --- a/mesh-bot.py +++ b/mesh-bot.py @@ -218,7 +218,7 @@ def get_node_location(number): if 'position' in node: print (node['position']) for data in node['position']: - position = [data['latitude'],data['longitude']] + print (data) print (f"{log_timestamp()} System: Using location data for {number}") return position else: From e129ca1c1db0ed52025a5939565d3753197b7041 Mon Sep 17 00:00:00 2001 From: SpudGunMan Date: Wed, 19 Jun 2024 14:45:07 -0700 Subject: [PATCH 14/22] Update mesh-bot.py --- mesh-bot.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/mesh-bot.py b/mesh-bot.py index 74de522..4d55dda 100644 --- a/mesh-bot.py +++ b/mesh-bot.py @@ -218,7 +218,8 @@ def get_node_location(number): if 'position' in node: print (node['position']) for data in node['position']: - print (data) + print (data['latitude']) + print (data['longitude']) print (f"{log_timestamp()} System: Using location data for {number}") return position else: From 496ac85949ddfa03d6297bfe0d0b735a2482be13 Mon Sep 17 00:00:00 2001 From: SpudGunMan Date: Wed, 19 Jun 2024 14:46:11 -0700 Subject: [PATCH 15/22] Update mesh-bot.py --- mesh-bot.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mesh-bot.py b/mesh-bot.py index 4d55dda..59a01cd 100644 --- a/mesh-bot.py +++ b/mesh-bot.py @@ -216,11 +216,11 @@ def get_node_location(number): for node in interface.nodes.values(): if number == node['num']: if 'position' in node: - print (node['position']) for data in node['position']: print (data['latitude']) print (data['longitude']) print (f"{log_timestamp()} System: Using location data for {number}") + position = [1,1] return position else: print (f"{log_timestamp()} System: No location data for {number}") From c671c007983bddc55667b14f5de1c2da58e70626 Mon Sep 17 00:00:00 2001 From: SpudGunMan Date: Wed, 19 Jun 2024 14:50:32 -0700 Subject: [PATCH 16/22] Update mesh-bot.py --- mesh-bot.py | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/mesh-bot.py b/mesh-bot.py index 59a01cd..f9dad81 100644 --- a/mesh-bot.py +++ b/mesh-bot.py @@ -217,10 +217,9 @@ def get_node_location(number): if number == node['num']: if 'position' in node: for data in node['position']: - print (data['latitude']) - print (data['longitude']) + print (f"DEBUG: {data}") print (f"{log_timestamp()} System: Using location data for {number}") - position = [1,1] + position = [0,0] return position else: print (f"{log_timestamp()} System: No location data for {number}") From d0fa9d833807cd3b4f77db9f8ebb42db1fa22040 Mon Sep 17 00:00:00 2001 From: SpudGunMan Date: Wed, 19 Jun 2024 14:52:49 -0700 Subject: [PATCH 17/22] Update mesh-bot.py --- mesh-bot.py | 1 + 1 file changed, 1 insertion(+) diff --git a/mesh-bot.py b/mesh-bot.py index f9dad81..15bf38c 100644 --- a/mesh-bot.py +++ b/mesh-bot.py @@ -216,6 +216,7 @@ def get_node_location(number): for node in interface.nodes.values(): if number == node['num']: if 'position' in node: + print (f"DEBUG: {node['position']}") for data in node['position']: print (f"DEBUG: {data}") print (f"{log_timestamp()} System: Using location data for {number}") From e77ea6d83cc11da97dd37da8807e705ff98a69ed Mon Sep 17 00:00:00 2001 From: SpudGunMan Date: Wed, 19 Jun 2024 14:56:24 -0700 Subject: [PATCH 18/22] Update mesh-bot.py --- mesh-bot.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/mesh-bot.py b/mesh-bot.py index 15bf38c..f89d9d3 100644 --- a/mesh-bot.py +++ b/mesh-bot.py @@ -217,9 +217,10 @@ def get_node_location(number): if number == node['num']: if 'position' in node: print (f"DEBUG: {node['position']}") - for data in node['position']: - print (f"DEBUG: {data}") - print (f"{log_timestamp()} System: Using location data for {number}") + latitude = node['position']['latitude'] + longitude = node['position']['longitude'] + print (f"location data for {number} is {latitude},{longitude}") + #position = [latitude,longitude] position = [0,0] return position else: From d953a35a5a661d94048eaa2a8f09e1e7308d32b4 Mon Sep 17 00:00:00 2001 From: SpudGunMan Date: Wed, 19 Jun 2024 14:57:42 -0700 Subject: [PATCH 19/22] Update mesh-bot.py --- mesh-bot.py | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/mesh-bot.py b/mesh-bot.py index f89d9d3..d4b7e61 100644 --- a/mesh-bot.py +++ b/mesh-bot.py @@ -219,9 +219,8 @@ def get_node_location(number): print (f"DEBUG: {node['position']}") latitude = node['position']['latitude'] longitude = node['position']['longitude'] - print (f"location data for {number} is {latitude},{longitude}") - #position = [latitude,longitude] - position = [0,0] + print (f"System: location data for {number} is {latitude},{longitude}") + position = [latitude,longitude] return position else: print (f"{log_timestamp()} System: No location data for {number}") From c54ab7d06341f75a77db85fc8d9ae91e8bc279db Mon Sep 17 00:00:00 2001 From: SpudGunMan Date: Wed, 19 Jun 2024 14:57:55 -0700 Subject: [PATCH 20/22] Update mesh-bot.py --- mesh-bot.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mesh-bot.py b/mesh-bot.py index d4b7e61..6839b75 100644 --- a/mesh-bot.py +++ b/mesh-bot.py @@ -216,7 +216,7 @@ def get_node_location(number): for node in interface.nodes.values(): if number == node['num']: if 'position' in node: - print (f"DEBUG: {node['position']}") + #print (f"DEBUG: {node['position']}") latitude = node['position']['latitude'] longitude = node['position']['longitude'] print (f"System: location data for {number} is {latitude},{longitude}") From d6aedc171b4c9077910e7a0ba86b4587b08e04bb Mon Sep 17 00:00:00 2001 From: SpudGunMan Date: Wed, 19 Jun 2024 14:59:51 -0700 Subject: [PATCH 21/22] Update mesh-bot.py --- mesh-bot.py | 1 - 1 file changed, 1 deletion(-) diff --git a/mesh-bot.py b/mesh-bot.py index 6839b75..939cf42 100644 --- a/mesh-bot.py +++ b/mesh-bot.py @@ -216,7 +216,6 @@ def get_node_location(number): for node in interface.nodes.values(): if number == node['num']: if 'position' in node: - #print (f"DEBUG: {node['position']}") latitude = node['position']['latitude'] longitude = node['position']['longitude'] print (f"System: location data for {number} is {latitude},{longitude}") From 1394203787f6c587660881862bbdcc7ea8393bf5 Mon Sep 17 00:00:00 2001 From: SpudGunMan Date: Wed, 19 Jun 2024 14:59:54 -0700 Subject: [PATCH 22/22] Update README.md --- README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 5049bd8..b124942 100644 --- a/README.md +++ b/README.md @@ -17,6 +17,7 @@ other features - Various solar details - `sun` returns the sunrise and set for the day + - uses the locaton of the node if known - `solar` gives an idea of the x-ray flux - `hfcond` returns a table of HF solar conditions @@ -33,7 +34,7 @@ It is recomended to leave this setting as default `True` to keep the channel cle ``` RESPOND_BY_DM_ONLY = True # Set to True to respond messages via DM only (keeps the channel clean) ``` - Solar Data needs the LAT LONG for your area on the [solarconditions.py](solarconditions.py) + Solar Data needs the LAT LONG for your area on the [solarconditions.py](solarconditions.py) used for when node has no location in the db ``` LATITUDE = 48.50 LONGITUDE = -123.0