diff --git a/config.template b/config.template index 85d4bcd..996cc42 100644 --- a/config.template +++ b/config.template @@ -32,6 +32,8 @@ motd = Thanks for using MeshBOT! Have a good day! welcome_message = MeshBot, here for you like a friend who is not. Try sending: ping @foo or, cmd # enable or disable the Joke module DadJokes = True +# enable or disable the Solar module +spaceWeather = True # StoreForward Enabled and Limits StoreForward = True StoreLimit = 3 @@ -42,6 +44,8 @@ URL_TIMEOUT = 10 # logging to file of the non Bot messages LogMessagesToFile = False # detect anyone close to the bot + +[Sentry] SentryEnabled = True # radius in meters to detect someone close to the bot SentryRadius = 100 @@ -73,10 +77,6 @@ UseMeteoWxAPI = False # Default to metric units rather than imperial useMetric = False -# solar module -[solar] -enabled = True - # repeater module [repeater] enabled = False diff --git a/mesh_bot.py b/mesh_bot.py index ae1c4b5..b1bae7f 100755 --- a/mesh_bot.py +++ b/mesh_bot.py @@ -26,11 +26,11 @@ def auto_response(message, snr, rssi, hop, message_from_id, channel_number, devi elif "pong" in message.lower(): bot_response = "🏓PING!!" elif "motd" in message.lower(): + global MOTD #check if the user wants to set the motd by using $ if "$" in message: motd = message.split("$")[1] - global MOTD - MOTD = motd + MOTD = motd.rstrip() bot_response = "MOTD Set to: " + MOTD else: bot_response = MOTD @@ -358,6 +358,8 @@ async def start_rx(): logger.debug(f"System: Location Telemetry Enabled using NOAA API") if dad_jokes_enabled: logger.debug(f"System: Dad Jokes Enabled!") + if motd_enabled: + logger.debug(f"System: MOTD Enabled using {MOTD}") if sentry_enabled: logger.debug(f"System: Sentry Mode Enabled") if store_forward_enabled: diff --git a/modules/settings.py b/modules/settings.py index a79ef43..cac55ac 100644 --- a/modules/settings.py +++ b/modules/settings.py @@ -40,6 +40,26 @@ if config.sections() == []: config.write(open(config_file, 'w')) print (f"System: Config file created, check {config_file} or review the config.template") +if 'sentry' not in config: + config['Sentry'] = {'SentryEnabled': 'True', 'SentryChannel': '2', 'SentryHoldoff': '9', 'sentryIgnoreList': '', 'SentryRadius': '100'} + config.write(open(config_file, 'w')) + +if 'location' not in config: + config['location'] = {'enabled': 'True', 'lat': '48.50', 'lon': '-123.0', 'UseMeteoWxAPI': 'False', 'useMetric': 'False', 'NOAAforecastDuration': '4', 'NOAAalertCount': '2', 'NOAAalertsEnabled': 'True'} + config.write(open(config_file, 'w')) + +if 'bbs' not in config: + config['bbs'] = {'enabled': 'False', 'bbsdb': 'bbsdb.pkl', 'bbs_ban_list': '', 'bbs_admin_list': ''} + config.write(open(config_file, 'w')) + +if 'repeater' not in config: + config['repeater'] = {'enabled': 'False', 'repeater_channels': ''} + config.write(open(config_file, 'w')) + +if 'radioMon' not in config: + config['radioMon'] = {'enabled': 'False', 'rigControlServerAddress': 'localhost:4532', 'sigWatchBrodcastCh': '2', 'signalDetectionThreshold': '-10', 'signalHoldTime': '10', 'signalCooldown': '5', 'signalCycleLimit': '5'} + config.write(open(config_file, 'w')) + # interface1 settings interface1_type = config['interface'].get('type', 'serial') port1 = config['interface'].get('port', '') @@ -58,36 +78,42 @@ else: # variables try: - storeFlimit = config['general'].getint('StoreLimit', 3) # default 3 messages for S&F useDMForResponse = config['general'].getboolean('respond_by_dm_only', True) publicChannel = config['general'].getint('defaultChannel', 0) # the meshtastic public channel - location_enabled = config['location'].getboolean('enabled', False) + zuluTime = config['general'].getboolean('zuluTime', False) # aka 24 hour time + log_messages_to_file = config['general'].getboolean('LogMessagesToFile', True) # default True + urlTimeoutSeconds = config['general'].getint('URL_TIMEOUT', 10) # default 10 seconds + store_forward_enabled = config['general'].getboolean('StoreForward', True) # default False + storeFlimit = config['general'].getint('StoreLimit', 3) # default 3 messages for S&F + welcome_message = config['general'].get(f'welcome_message', WELCOME_MSG) + welcome_message = (f"{welcome_message}").replace('\\n', '\n') # allow for newlines in the welcome message + motd_enabled = config['general'].getboolean('motdEnabled', True) + dad_jokes_enabled = config['general'].getboolean('DadJokes', True) + solar_conditions_enabled = config['general'].getboolean('spaceWeather', True) + + sentry_enabled = config['Sentry'].getboolean('SentryEnabled', True) # default True + secure_channel = config['Sentry'].getint('SentryChannel', 2) # default 2 + sentry_holdoff = config['Sentry'].getint('SentryHoldoff', 9) # default 9 + sentryIgnoreList = config['Sentry'].get('sentryIgnoreList', '').split(',') + sentry_radius = config['Sentry'].getint('SentryRadius', 100) # default 100 meters + + location_enabled = config['location'].getboolean('enabled', True) latitudeValue = config['location'].getfloat('lat', 48.50) longitudeValue = config['location'].getfloat('lon', -123.0) use_meteo_wxApi = config['location'].getboolean('UseMeteoWxAPI', False) # default False use NOAA use_metric = config['location'].getboolean('useMetric', False) # default Imperial units - zuluTime = config['general'].getboolean('zuluTime', False) - welcome_message = config['general'].get(f'welcome_message', WELCOME_MSG) - welcome_message = (f"{welcome_message}").replace('\\n', '\n') # allow for newlines in the welcome message - solar_conditions_enabled = config['solar'].getboolean('enabled', False) + forecastDuration = config['location'].getint('NOAAforecastDuration', 4) # NOAA forcast days + numWxAlerts = config['location'].getint('NOAAalertCount', 2) # default 2 alerts + wxAlertsEnabled = config['location'].getboolean('NOAAalertsEnabled', True) # default True not enabled yet + bbs_enabled = config['bbs'].getboolean('enabled', False) bbsdb = config['bbs'].get('bbsdb', 'bbsdb.pkl') - dad_jokes_enabled = config['general'].getboolean('DadJokes', False) - store_forward_enabled = config['general'].getboolean('StoreForward', False) - log_messages_to_file = config['general'].getboolean('LogMessagesToFile', True) # default True - sentry_enabled = config['general'].getboolean('SentryEnabled', True) # default True - secure_channel = config['general'].getint('SentryChannel', 2) # default 2 - sentry_holdoff = config['general'].getint('SentryHoldoff', 9) # default 9 - sentryIgnoreList = config['general'].get('sentryIgnoreList', '').split(',') - sentry_radius = config['general'].getint('SentryRadius', 100) # default 100 meters - config['general'].get('motd', MOTD) - urlTimeoutSeconds = config['general'].getint('URL_TIMEOUT', 10) # default 10 seconds - forecastDuration = config['general'].getint('NOAAforecastDuration', 4) # NOAA forcast days - numWxAlerts = config['general'].getint('NOAAalertCount', 2) # default 2 alerts bbs_ban_list = config['bbs'].get('bbs_ban_list', '').split(',') bbs_admin_list = config['bbs'].get('bbs_admin_list', '').split(',') + repeater_enabled = config['repeater'].getboolean('enabled', False) repeater_channels = config['repeater'].get('repeater_channels', '').split(',') + radio_dectection_enabled = config['radioMon'].getboolean('enabled', False) rigControlServerAddress = config['radioMon'].get('rigControlServerAddress', 'localhost:4532') # default localhost:4532 sigWatchBrodcastCh = config['radioMon'].get('sigWatchBrodcastCh', '2').split(',') # default Channel 2 diff --git a/modules/system.py b/modules/system.py index 402a341..f77424a 100644 --- a/modules/system.py +++ b/modules/system.py @@ -20,11 +20,18 @@ if ping_enabled: trap_list = trap_list + trap_list_ping help_message = help_message + "ping" +# Sitrep Configuration if sitrep_enabled: trap_list_sitrep = ("sitrep", "lheard") trap_list = trap_list + trap_list_sitrep help_message = help_message + ", sitrep" +# MOTD Configuration +if motd_enabled: + trap_list_motd = ("motd",) + trap_list = trap_list + trap_list_motd + help_message = help_message + ", motd" + # Solar Conditions Configuration if solar_conditions_enabled: from modules.solarconditions import * # from the spudgunman/meshing-around repo diff --git a/pong_bot.py b/pong_bot.py index 4804c50..fbb1bea 100755 --- a/pong_bot.py +++ b/pong_bot.py @@ -25,11 +25,10 @@ def auto_response(message, snr, rssi, hop, message_from_id, channel_number, devi elif "pong" in message.lower(): bot_response = "🏓Ping!!" elif "motd" in message.lower(): - # check if the user wants to set the motd by using $ + #check if the user wants to set the motd by using $ if "$" in message: motd = message.split("$")[1] - global MOTD - MOTD = motd + MOTD = motd.rstrip() bot_response = "MOTD Set to: " + MOTD else: bot_response = MOTD