diff --git a/mesh_bot.py b/mesh_bot.py index e079566..32373ac 100755 --- a/mesh_bot.py +++ b/mesh_bot.py @@ -495,8 +495,9 @@ def handleLemonade(message, nodeID, deviceID): if highScore != 0: if highScore['userID'] != 0: nodeName = get_name_from_number(highScore['userID']) - if nodeName.isnumeric() and interface2_enabled: - nodeName = get_name_from_number(highScore['userID'], 'long', 2) + if nodeName.isnumeric() and multiple_interface: + logger.debug(f"System: TODO is multiple interface fix mention this please nodeName: {nodeName}") + #nodeName = get_name_from_number(highScore['userID'], 'long', 2) msg += f" HighScore🥇{nodeName} 💰{round(highScore['cash'], 2)}k " msg += start_lemonade(nodeID=nodeID, message=message, celsius=False) @@ -535,8 +536,9 @@ def handleBlackJack(message, nodeID, deviceID): if highScore != 0: if highScore['nodeID'] != 0: nodeName = get_name_from_number(highScore['nodeID']) - if nodeName.isnumeric() and interface2_enabled: - nodeName = get_name_from_number(highScore['nodeID'], 'long', 2) + if nodeName.isnumeric() and multiple_interface: + logger.debug(f"System: TODO is multiple interface fix mention this please nodeName: {nodeName}") + #nodeName = get_name_from_number(highScore['nodeID'], 'long', 2) msg += f" HighScore🥇{nodeName} with {highScore['highScore']} chips. " time.sleep(responseDelay + 1) # short answers with long replies can cause message collision added wait return msg @@ -570,8 +572,9 @@ def handleVideoPoker(message, nodeID, deviceID): if highScore != 0: if highScore['nodeID'] != 0: nodeName = get_name_from_number(highScore['nodeID']) - if nodeName.isnumeric() and interface2_enabled: - nodeName = get_name_from_number(highScore['nodeID'], 'long', 2) + if nodeName.isnumeric() and multiple_interface: + logger.debug(f"System: TODO is multiple interface fix mention this please nodeName: {nodeName}") + #nodeName = get_name_from_number(highScore['nodeID'], 'long', 2) msg += f" HighScore🥇{nodeName} with {highScore['highScore']} coins. " if last_cmd != "" and nodeID != 0: @@ -1002,23 +1005,38 @@ def onReceive(packet, interface): # set the value for the incomming interface if rxType == 'SerialInterface': rxInterface = interface.__dict__.get('devPath', 'unknown') - if port1 in rxInterface: - rxNode = 1 - elif interface2_enabled and port2 in rxInterface: - rxNode = 2 + if port1 in rxInterface: rxNode = 1 + elif multiple_interface and port2 in rxInterface: rxNode = 2 + elif multiple_interface and port3 in rxInterface: rxNode = 3 + elif multiple_interface and port4 in rxInterface: rxNode = 4 + elif multiple_interface and port5 in rxInterface: rxNode = 5 + elif multiple_interface and port6 in rxInterface: rxNode = 6 + elif multiple_interface and port7 in rxInterface: rxNode = 7 + elif multiple_interface and port8 in rxInterface: rxNode = 8 + elif multiple_interface and port9 in rxInterface: rxNode = 9 if rxType == 'TCPInterface': rxHost = interface.__dict__.get('hostname', 'unknown') - if hostname1 in rxHost and interface1_type == 'tcp': - rxNode = 1 - elif interface2_enabled and hostname2 in rxHost and interface2_type == 'tcp': - rxNode = 2 + if hostname1 in rxHost and interface1_type == 'tcp': rxNode = 1 + elif multiple_interface and hostname2 in rxHost and interface2_type == 'tcp': rxNode = 2 + elif multiple_interface and hostname3 in rxHost and interface3_type == 'tcp': rxNode = 3 + elif multiple_interface and hostname4 in rxHost and interface4_type == 'tcp': rxNode = 4 + elif multiple_interface and hostname5 in rxHost and interface5_type == 'tcp': rxNode = 5 + elif multiple_interface and hostname6 in rxHost and interface6_type == 'tcp': rxNode = 6 + elif multiple_interface and hostname7 in rxHost and interface7_type == 'tcp': rxNode = 7 + elif multiple_interface and hostname8 in rxHost and interface8_type == 'tcp': rxNode = 8 + elif multiple_interface and hostname9 in rxHost and interface9_type == 'tcp': rxNode = 9 if rxType == 'BLEInterface': - if interface1_type == 'ble': - rxNode = 1 - elif interface2_enabled and interface2_type == 'ble': - rxNode = 2 + if interface1_type == 'ble': rxNode = 1 + elif multiple_interface and interface2_type == 'ble': rxNode = 2 + elif multiple_interface and interface3_type == 'ble': rxNode = 3 + elif multiple_interface and interface4_type == 'ble': rxNode = 4 + elif multiple_interface and interface5_type == 'ble': rxNode = 5 + elif multiple_interface and interface6_type == 'ble': rxNode = 6 + elif multiple_interface and interface7_type == 'ble': rxNode = 7 + elif multiple_interface and interface8_type == 'ble': rxNode = 8 + elif multiple_interface and interface9_type == 'ble': rxNode = 9 # check if the packet has a channel flag use it if packet.get('channel'): @@ -1210,18 +1228,17 @@ def onReceive(packet, interface): msgLogger.info(f"Device:{rxNode} Channel:{channel_number} | {get_name_from_number(message_from_id, 'long', rxNode)} | " + message_string.replace('\n', '-nl-')) # repeat the message on the other device - if repeater_enabled and interface2_enabled: + if repeater_enabled and multiple_interface: # wait a responseDelay to avoid message collision from lora-ack. time.sleep(responseDelay) rMsg = (f"{message_string} From:{get_name_from_number(message_from_id, 'short', rxNode)}") # if channel found in the repeater list repeat the message if str(channel_number) in repeater_channels: - if rxNode == 1: - logger.debug(f"Repeating message on Device2 Channel:{channel_number}") - send_message(rMsg, channel_number, 0, 2) - elif rxNode == 2: - logger.debug(f"Repeating message on Device1 Channel:{channel_number}") - send_message(rMsg, channel_number, 0, 1) + for i in range(1, 10): + if globals().get(f'interface{i}_enabled', False) and i != rxNode: + logger.debug(f"Repeating message on Device{i} Channel:{channel_number}") + send_message(rMsg, channel_number, 0, i) + time.sleep(responseDelay) else: # Evaluate non TEXT_MESSAGE_APP packets consumeMetadata(packet, rxNode) @@ -1279,7 +1296,7 @@ async def start_rx(): logger.debug(f"System: Store and Forward Enabled using limit: {storeFlimit}") if useDMForResponse: logger.debug(f"System: Respond by DM only") - if repeater_enabled and interface2_enabled: + if repeater_enabled and multiple_interface: logger.debug(f"System: Repeater Enabled for Channels: {repeater_channels}") if radio_detection_enabled: logger.debug(f"System: Radio Detection Enabled using rigctld at {rigControlServerAddress} brodcasting to channels: {sigWatchBroadcastCh} for {get_freq_common_name(get_hamlib('f'))}") diff --git a/modules/system.py b/modules/system.py index b838b5f..29d9571 100644 --- a/modules/system.py +++ b/modules/system.py @@ -283,13 +283,15 @@ def get_num_from_short_name(short_name, nodeInt=1): return node['num'] else: # TODO check the other interface - if interface2_enabled: - interface = interface2 if nodeInt == 1 else interface1 # check the other interface - for node in interface.nodes.values(): - if short_name == node['user']['shortName']: - return node['num'] - elif str(short_name.lower()) == node['user']['shortName'].lower(): - return node['num'] + if multiple_interface: + for int in range(1, 10): + if globals().get(f'interface{int}_enabled') and int != nodeInt: + other_interface = globals().get(f'interface{int}') + for node in other_interface.nodes.values(): + if short_name == node['user']['shortName']: + return node['num'] + elif str(short_name.lower()) == node['user']['shortName'].lower(): + return node['num'] return 0 def get_node_list(nodeInt=1): @@ -321,13 +323,14 @@ def get_node_list(nodeInt=1): #print (f"Node List: {node_list1[:5]}\n") node_list1.sort(key=lambda x: x[1] if x[1] is not None else 0, reverse=True) #print (f"Node List: {node_list1[:5]}\n") - if interface2_enabled: + if multiple_interface: + logger.debug(f"System: FIX ME line 327 Multiple Interface Node List") node_list2.sort(key=lambda x: x[1] if x[1] is not None else 0, reverse=True) except Exception as e: logger.error(f"System: Error sorting node list: {e}") logger.debug(f"Node List1: {node_list1[:5]}\n") - if interface2_enabled: - logger.debug(f"Node List2: {node_list2[:5]}\n") + if multiple_interface: + logger.debug(f"FIX ME MULTI INTERFACE Node List2: {node_list2[:5]}\n") node_list = ERROR_FETCHING_DATA try: @@ -733,9 +736,10 @@ def exit_handler(): try: interface1.close() logger.debug(f"System: Interface1 Closed") - if interface2_enabled: - interface2.close() - logger.debug(f"System: Interface2 Closed") + for i in range(1, 10): + if globals().get(f'interface{i}_enabled'): + globals()[f'interface{i}'].close() + logger.debug(f"System: Interface{i} Closed") except Exception as e: logger.error(f"System: closing: {e}") if bbs_enabled: @@ -931,9 +935,6 @@ def get_sysinfo(nodeID=0, deviceID=1): # replace Telemetry with Int in string stats = stats.replace("Telemetry", "Int") sysinfo += f"📊{stats}" - if interface2_enabled: - sysinfo += f"📊{stats}" - return sysinfo async def BroadcastScheduler(): @@ -958,15 +959,21 @@ async def handleSignalWatcher(): for ch in sigWatchBroadcastCh: if antiSpam and ch != publicChannel: send_message(msg, int(ch), 0, 1) - if interface2_enabled: - send_message(msg, int(ch), 0, 2) + if multiple_interface: + for i in range(1, 10): + if globals().get(f'interface{i}_enabled'): + send_message(msg, int(ch), 0, i) + time.sleep(responseDelay) else: logger.warning(f"System: antiSpam prevented Alert from Hamlib {msg}") else: if antiSpam and sigWatchBroadcastCh != publicChannel: send_message(msg, int(sigWatchBroadcastCh), 0, 1) - if interface2_enabled: - send_message(msg, int(sigWatchBroadcastCh), 0, 2) + if multiple_interface: + for i in range(1, 10): + if globals().get(f'interface{i}_enabled'): + send_message(msg, int(sigWatchBroadcastCh), 0, i) + time.sleep(responseDelay) else: logger.warning(f"System: antiSpam prevented Alert from Hamlib {msg}") @@ -989,15 +996,21 @@ async def handleFileWatcher(): for ch in file_monitor_broadcastCh: if antiSpam and ch != publicChannel: send_message(msg, int(ch), 0, 1) - if interface2_enabled: - send_message(msg, int(ch), 0, 2) + if multiple_interface: + for i in range(1, 10): + if globals().get(f'interface{i}_enabled'): + send_message(msg, int(ch), 0, i) + time.sleep(responseDelay) else: logger.warning(f"System: antiSpam prevented Alert from FileWatcher") else: if antiSpam and file_monitor_broadcastCh != publicChannel: send_message(msg, int(file_monitor_broadcastCh), 0, 1) - if interface2_enabled: - send_message(msg, int(file_monitor_broadcastCh), 0, 2) + if multiple_interface: + for i in range(1, 10): + if globals().get(f'interface{i}_enabled'): + send_message(msg, int(file_monitor_broadcastCh), 0, i) + time.sleep(responseDelay) else: logger.warning(f"System: antiSpam prevented Alert from FileWatcher")