From 8c01433d14ea5d97953b066982523a87ec518181 Mon Sep 17 00:00:00 2001 From: SpudGunMan Date: Wed, 27 Aug 2025 12:10:38 -0700 Subject: [PATCH] =?UTF-8?q?=F0=9F=9A=A8fixes/enhancments?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit better multi network control of alerts and 🪫 alert to mesh --- config.template | 4 +++- modules/settings.py | 2 ++ modules/system.py | 9 ++++----- 3 files changed, 9 insertions(+), 6 deletions(-) diff --git a/config.template b/config.template index 6e106bf..54a6a98 100644 --- a/config.template +++ b/config.template @@ -107,7 +107,8 @@ SentryEnabled = True emailSentryAlerts = False # radius in meters to detect someone close to the bot SentryRadius = 100 -# channel to send a message to when the watchdog is triggered +# device interface and channel to send the alert message to +SentryInterface = 1 SentryChannel = 2 # holdoff time multiplied by seconds(20) of the watchdog SentryHoldoff = 9 @@ -119,6 +120,7 @@ highFlyingAlert = True # Altitude in meters to trigger the alert highFlyingAlertAltitude = 2000 # Channel to send Alert when the high flying node is detected +highFlyingAlertInterface = 1 highFlyingAlertChannel = 2 # list of nodes numbers to ignore high flying alert ex: 2813308004,4258675309 highFlyingIgnoreList = diff --git a/modules/settings.py b/modules/settings.py index f31007d..19df687 100644 --- a/modules/settings.py +++ b/modules/settings.py @@ -234,6 +234,7 @@ try: # sentry sentry_enabled = config['sentry'].getboolean('SentryEnabled', False) # default False secure_channel = config['sentry'].getint('SentryChannel', 2) # default 2 + secure_interface = config['sentry'].getint('SentryInterface', 1) # default 1 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 @@ -241,6 +242,7 @@ try: highfly_enabled = config['sentry'].getboolean('highFlyingAlert', True) # default True highfly_altitude = config['sentry'].getint('highFlyingAlertAltitude', 2000) # default 2000 meters highfly_channel = config['sentry'].getint('highFlyingAlertChannel', 2) # default 2 + highfly_interface = config['sentry'].getint('highFlyingAlertInterface', 1) # default 1 highfly_ignoreList = config['sentry'].get('highFlyingIgnoreList', '').split(',') # default empty # location diff --git a/modules/system.py b/modules/system.py index a0fdd0c..f1483fd 100644 --- a/modules/system.py +++ b/modules/system.py @@ -939,6 +939,7 @@ def displayNodeTelemetry(nodeID=0, rxNode=0, userRequested=False): if batteryLevel < 25: logger.warning(f"System: Low Battery Level: {batteryLevel}{emji} on Device: {rxNode}") + send_message(f"Low Battery Level: {batteryLevel}{emji} on Device: {rxNode}", {secure_channel}, 0, {secure_interface}) elif batteryLevel < 10: logger.critical(f"System: Critical Battery Level: {batteryLevel}{emji} on Device: {rxNode}") return dataResponse @@ -989,7 +990,7 @@ def consumeMetadata(packet, rxNode=0): if position_data.get('altitude', 0) > highfly_altitude and highfly_enabled and str(nodeID) not in highfly_ignoreList: logger.info(f"System: High Altitude {position_data['altitude']}m on Device: {rxNode} NodeID: {nodeID}") altFeet = round(position_data['altitude'] * 3.28084, 2) - send_message(f"High Altitude {altFeet}ft ({position_data['altitude']}m) on Device:{rxNode} Node:{get_name_from_number(nodeID,'short',rxNode)}", highfly_channel, 0, rxNode) + send_message(f"High Altitude {altFeet}ft ({position_data['altitude']}m) on Device:{rxNode} Node:{get_name_from_number(nodeID,'short',rxNode)}", highfly_channel, 0, highfly_interface) time.sleep(responseDelay) # Keep the positionMetadata dictionary at a maximum size of 20 @@ -1216,10 +1217,8 @@ async def handleSentinel(deviceID): resolution = metadata.get('precisionBits') logger.warning(f"System: {detectedNearby} is close to your location on Interface{deviceID} Accuracy is {resolution}bits") - for i in range(1, 10): - if globals().get(f'interface{i}_enabled'): - send_message(f"Sentry{deviceID}: {detectedNearby}", secure_channel, 0, i) - time.sleep(responseDelay + 1) + send_message(f"Sentry{deviceID}: {detectedNearby}", secure_channel, 0, secure_interface) + time.sleep(responseDelay + 1) if enableSMTP and email_sentry_alerts: for email in sysopEmails: send_email(email, f"Sentry{deviceID}: {detectedNearby}")