drop other networks if *NO_SMS, only display apps

This commit is contained in:
KF7EEL 2022-03-18 13:41:13 -07:00
parent fc9647c4f8
commit 678c5fff60
1 changed files with 29 additions and 11 deletions

View File

@ -203,8 +203,9 @@ def mqtt_main(mqtt_user, mqtt_pass, mqtt_user2, mqtt_pass2, broker_url = 'localh
# Process received msg here # Process received msg here
def on_message(client, userdata, message): def on_message(client, userdata, message):
topic_list = str(message.topic).split('/') topic_list = str(message.topic).split('/')
print(topic_list) ## print(topic_list)
dict_payload = json.loads(message.payload.decode()) dict_payload = json.loads(message.payload.decode())
## print(dict_payload)
logger.debug(dict_payload) logger.debug(dict_payload)
if len(topic_list) == 1: if len(topic_list) == 1:
# Add service/network to dict of known services # Add service/network to dict of known services
@ -218,13 +219,24 @@ def mqtt_main(mqtt_user, mqtt_pass, mqtt_user2, mqtt_pass2, broker_url = 'localh
elif topic_list[0] == 'ANNOUNCE': elif topic_list[0] == 'ANNOUNCE':
if '*NO_SMS' in dict_payload['shortcut']: if '*NO_SMS' in dict_payload['shortcut']:
logger.debug('Service discovered, NO_SMS flag, not adding to known services.') logger.debug('Service discovered, NO_SMS flag, not adding to known services.')
elif dict_payload['shortcut'] == '':
pass
else:
if '*NO_SMS' in mqtt_shortcut_gen:
if dict_payload['type'] == 'network':
logger.debug('NO_SMS flag, not adding other networks to known services')
elif dict_payload['type'] == 'app':
logger.info('Service discovered: ' + dict_payload['shortcut'])
logger.debug((dict_payload))
mqtt_services[dict_payload['shortcut']] = dict_payload
logger.debug('Known services: ')
logger.debug(mqtt_services)
else: else:
logger.info('Service discovered: ' + dict_payload['shortcut']) logger.info('Service discovered: ' + dict_payload['shortcut'])
logger.debug((dict_payload)) logger.debug((dict_payload))
mqtt_services[dict_payload['shortcut']] = dict_payload mqtt_services[dict_payload['shortcut']] = dict_payload
logger.debug('Known services: ') logger.debug('Known services: ')
logger.debug(mqtt_services) logger.debug(mqtt_services)
elif len(topic_list) > 1: elif len(topic_list) > 1:
# Incoming MSG # Incoming MSG
if topic_list[0] == 'ANNOUNCE' and topic_list[1] == 'MQTT': if topic_list[0] == 'ANNOUNCE' and topic_list[1] == 'MQTT':
@ -233,14 +245,20 @@ def mqtt_main(mqtt_user, mqtt_pass, mqtt_user2, mqtt_pass2, broker_url = 'localh
logger.debug('Received MQTT server message.........................................................') logger.debug('Received MQTT server message.........................................................')
elif topic_list[0] == 'MSG' and list(dict_payload.keys())[1] == 'network' and topic_list[1] == mqtt_shortcut_gen: elif topic_list[0] == 'MSG' and list(dict_payload.keys())[1] == 'network' and topic_list[1] == mqtt_shortcut_gen:
try: try:
if dict_payload['network'] in mqtt_services.keys():
if mqtt_services[dict_payload['network']]['type'] == 'network': if mqtt_services[dict_payload['network']]['type'] == 'network':
send_sms(False, int(topic_list[2]), data_id[0], data_id[0], 'unit', dict_payload['network'] + '/' + list(dict_payload.keys())[0] + ': ' + dict_payload[list(dict_payload.keys())[0]]) send_sms(False, int(topic_list[2]), data_id[0], data_id[0], 'unit', dict_payload['network'] + '/' + list(dict_payload.keys())[0] + ': ' + dict_payload[list(dict_payload.keys())[0]])
if mqtt_services[dict_payload['network']]['type'] == 'app': if mqtt_services[dict_payload['network']]['type'] == 'app':
send_sms(False, int(topic_list[2]), data_id[0], data_id[0], 'unit', dict_payload['network'] + ': ' + dict_payload[list(dict_payload.keys())[0]]) send_sms(False, int(topic_list[2]), data_id[0], data_id[0], 'unit', dict_payload['network'] + ': ' + dict_payload[list(dict_payload.keys())[0]])
else:
logger.debug('Received incoming message from network/app that is not discovered yet, dropping.')
pass
except Exception as e: except Exception as e:
logger.error('Unable to determine if message from network or app, defaulting to network...') logger.error('Unable to determine if message from network or app, defaulting to network...')
logger.error(e) logger.error(e)
send_sms(False, int(topic_list[2]), data_id[0], data_id[0], 'unit', dict_payload['network'] + '/' + list(dict_payload.keys())[0] + ': ' + dict_payload[list(dict_payload.keys())[0]]) send_sms(False, int(topic_list[2]), data_id[0], data_id[0], 'unit', dict_payload['network'] + '/' + list(dict_payload.keys())[0] + ': ' + dict_payload[list(dict_payload.keys())[0]])
## else:
print(dict_payload)
mqtt_client = mqtt.Client(client_id = mqtt_shortcut_gen + '-' + str(random.randint(1,99))) mqtt_client = mqtt.Client(client_id = mqtt_shortcut_gen + '-' + str(random.randint(1,99)))
if broker_url2 != '': if broker_url2 != '':