add option for second MQTT server
This commit is contained in:
parent
13e539f8ce
commit
d6b32ffed7
|
|
@ -141,13 +141,24 @@ IGATE_LONGITUDE = 11930. W
|
|||
|
||||
# MQTT Configuration
|
||||
# MQTT is used to accces external applications and other networks
|
||||
|
||||
# This must be unique on the MQTT server
|
||||
GATEWAY_CALLSIGN: N0CALL
|
||||
# URL for users to find out more about network
|
||||
URL: localhost/website
|
||||
# Simple description to display on External Services page
|
||||
DESCRIPTION: Change me.
|
||||
|
||||
# Connection to HBNet MQTT server for external applications
|
||||
MQTT_SERVER: mqtt.hbnet.xyz
|
||||
MQTT_PORT: 1883
|
||||
MQTT_USERNAME:
|
||||
MQTT_PASSWORD:
|
||||
|
||||
# Connect to custom MQTT server
|
||||
MQTT_SERVER2:
|
||||
MQTT_PORT2: 1883
|
||||
MQTT_USERNAME2:
|
||||
MQTT_PASSWORD2:
|
||||
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -148,8 +148,13 @@ def sms_type(sub, sms):
|
|||
|
||||
##mqtt_shortcut_gen = ''.join(random.choices(string.ascii_uppercase, k=4))
|
||||
|
||||
def mqtt_main(broker_url = 'localhost', broker_port = 1883):
|
||||
global mqtt_client
|
||||
def mqtt_main(mqtt_user, mqtt_pass, mqtt_user2, mqtt_pass2, broker_url = 'localhost', broker_port = 1883, broker_url2 = 'localhost', broker_port2 = 1883):
|
||||
global mqtt_client, mqtt_client2
|
||||
if broker_url2 != '':
|
||||
logger.info('Enabling MQTT Server 22')
|
||||
mqtt_client2 = mqtt.Client(client_id = mqtt_shortcut_gen + '-' + str(random.randint(1,99)))
|
||||
elif broker_url2 == '':
|
||||
mqtt_client2 = ''
|
||||
## print(broker_port)
|
||||
# On connect, send announcement
|
||||
def on_connect(client, userdata, flags, rc):
|
||||
|
|
@ -157,6 +162,22 @@ def mqtt_main(broker_url = 'localhost', broker_port = 1883):
|
|||
logger.debug('Connected to MQTT server: ' + broker_url)
|
||||
def on_disconnect(client, userdata, flags, rc):
|
||||
logger.debug('Disconnected from MQTT server')
|
||||
def mqtt_connect():
|
||||
global mqtt_client2
|
||||
print('connect')
|
||||
# Pass MQTT server details to instrance
|
||||
if mqtt_user != '':
|
||||
logger.info('MQTT User/Pass specified')
|
||||
mqtt_client.username_pw_set(mqtt_user, mqtt_pass)
|
||||
if mqtt_user2 != '':
|
||||
logger.info('MQTT User/Pass specified for server 2')
|
||||
mqtt_client.username_pw_set(mqtt_user, mqtt_pass)
|
||||
mqtt_client.connect(broker_url, broker_port, keepalive = 30)
|
||||
if broker_url2 == '':
|
||||
mqtt_client2 = ''
|
||||
logger.info('Second MQTT server not used')
|
||||
elif broker_url2 != '':
|
||||
mqtt_client2.connect(broker_url2, broker_port2, keepalive = 30)
|
||||
|
||||
# Process received msg here
|
||||
def on_message(client, userdata, message):
|
||||
|
|
@ -192,35 +213,53 @@ def mqtt_main(broker_url = 'localhost', broker_port = 1883):
|
|||
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]])
|
||||
|
||||
|
||||
mqtt_client = mqtt.Client(client_id = mqtt_shortcut_gen + '-' + str(random.randint(1,99)))
|
||||
if broker_url2 != '':
|
||||
mqtt_client2.will_set("ANNOUNCE", json.dumps({mqtt_shortcut_gen:"LOST_CONNECTION"}), 0, False)
|
||||
mqtt_client2.on_message = on_message
|
||||
mqtt_client2.on_connect = on_connect
|
||||
mqtt_client2.on_disconnect = on_disconnect
|
||||
# Last will and testament
|
||||
mqtt_client.will_set("ANNOUNCE", json.dumps({mqtt_shortcut_gen:"LOST_CONNECTION"}), 0, False)
|
||||
mqtt_client.on_message = on_message
|
||||
mqtt_client.on_connect = on_connect
|
||||
mqtt_client.on_disconnect = on_disconnect
|
||||
mqtt_client.connect(broker_url, broker_port)
|
||||
mqtt_connect()
|
||||
|
||||
# Subscribe to:
|
||||
# Incoming messages
|
||||
mqtt_client.subscribe('MSG/' + mqtt_shortcut_gen + '/#', qos=0)
|
||||
|
||||
# Announcements for service/network discovery
|
||||
mqtt_client.subscribe("ANNOUNCE", qos=0)
|
||||
|
||||
|
||||
if broker_url2 != '':
|
||||
mqtt_client2.subscribe('MSG/' + mqtt_shortcut_gen + '/#', qos=0)
|
||||
mqtt_client2.subscribe("ANNOUNCE", qos=0)
|
||||
mqtt_client2.loop_start()
|
||||
|
||||
mqtt_client.loop_start()
|
||||
|
||||
|
||||
def mqtt_send_msg(network_shortcut, rcv_dmr_id, snd_dmr_id, message):
|
||||
msg_dict = json.dumps({str(snd_dmr_id):message, 'network':mqtt_shortcut_gen}, indent = 4)
|
||||
mqtt_client.publish(topic='MSG/' + network_shortcut + '/' + str(rcv_dmr_id), payload=msg_dict, qos=0, retain=False)
|
||||
if mqtt_client2 != '':
|
||||
mqtt_client2.publish(topic='MSG/' + network_shortcut + '/' + str(rcv_dmr_id), payload=msg_dict, qos=0, retain=False)
|
||||
logger.info('Sent message to another network via MQTT: ' + network_shortcut)
|
||||
|
||||
def mqtt_send_app(network_shortcut, snd_dmr_id, message):
|
||||
msg_dict = json.dumps({'dmr_id': str(snd_dmr_id), 'message':message, 'network':mqtt_shortcut_gen, 'sms_type':'unit'}, indent = 4)
|
||||
mqtt_client.publish(topic='APP/' + network_shortcut, payload=msg_dict, qos=0, retain=False)
|
||||
if mqtt_client2 != '':
|
||||
mqtt_client2.publish(topic='APP/' + network_shortcut, payload=msg_dict, qos=0, retain=False)
|
||||
logger.info('Sent message to external application via MQTT: ' + network_shortcut)
|
||||
|
||||
def mqtt_announce():
|
||||
mqtt_client.publish(topic="ANNOUNCE", payload=json.dumps({'shortcut':mqtt_shortcut_gen, 'type': 'network', 'url':CONFIG['DATA_CONFIG']['URL'], 'description':CONFIG['DATA_CONFIG']['DESCRIPTION']}, indent = 4), qos=0, retain=False)
|
||||
if mqtt_client2 != '':
|
||||
mqtt_client2.publish(topic="ANNOUNCE", payload=json.dumps({'shortcut':mqtt_shortcut_gen, 'type': 'network', 'url':CONFIG['DATA_CONFIG']['URL'], 'description':CONFIG['DATA_CONFIG']['DESCRIPTION']}, indent = 4), qos=0, retain=False)
|
||||
|
||||
|
||||
def download_aprs_settings(_CONFIG):
|
||||
|
|
@ -579,14 +618,26 @@ def download_config(CONFIG_FILE, cli_file):
|
|||
|
||||
if final_options[0] == 'gateway_callsign':
|
||||
mqtt_server = corrected_config['DATA_CONFIG']['GATEWAY_CALLSIGN'] = final_options[1].upper()
|
||||
if final_options[0] == 'server':
|
||||
mqtt_server = corrected_config['DATA_CONFIG']['MQTT_SERVER'] = final_options[1]
|
||||
if final_options[0] == 'port':
|
||||
mqtt_port = corrected_config['DATA_CONFIG']['MQTT_PORT'] = final_options[1]
|
||||
if final_options[0] == 'url':
|
||||
mqtt_port = corrected_config['DATA_CONFIG']['URL'] = final_options[1]
|
||||
if final_options[0] == 'description':
|
||||
mqtt_port = corrected_config['DATA_CONFIG']['DESCRIPTION'] = final_options[1]
|
||||
if final_options[0] == 'server':
|
||||
mqtt_server = corrected_config['DATA_CONFIG']['MQTT_SERVER'] = final_options[1]
|
||||
if final_options[0] == 'port':
|
||||
mqtt_port = corrected_config['DATA_CONFIG']['MQTT_PORT'] = final_options[1]
|
||||
if final_options[0] == 'username':
|
||||
mqtt_port = corrected_config['DATA_CONFIG']['MQTT_USERNAME'] = final_options[1]
|
||||
if final_options[0] == 'password':
|
||||
mqtt_port = corrected_config['DATA_CONFIG']['MQTT_PASSWORD'] = final_options[1]
|
||||
if final_options[0] == 'server2':
|
||||
mqtt_server = corrected_config['DATA_CONFIG']['MQTT_SERVER2'] = final_options[1]
|
||||
if final_options[0] == 'port2':
|
||||
mqtt_port = corrected_config['DATA_CONFIG']['MQTT_PORT2'] = final_options[1]
|
||||
if final_options[0] == 'username2':
|
||||
mqtt_port = corrected_config['DATA_CONFIG']['MQTT_USERNAME2'] = final_options[1]
|
||||
if final_options[0] == 'password2':
|
||||
mqtt_port = corrected_config['DATA_CONFIG']['MQTT_PASSWORD2'] = final_options[1]
|
||||
if 'DATA_GATEWAY:' in i:
|
||||
## print(i)
|
||||
gateway_options = i[13:].split(':')
|
||||
|
|
@ -2085,7 +2136,7 @@ if __name__ == '__main__':
|
|||
if CONFIG['DATA_CONFIG']['GATEWAY_CALLSIGN'] == 'n0call'.upper():
|
||||
logger.info('MQTT disabled. External applications and networks will not be available.')
|
||||
else:
|
||||
mqtt_thread = threading.Thread(target=mqtt_main, args=(CONFIG['DATA_CONFIG']['MQTT_SERVER'],int(CONFIG['DATA_CONFIG']['MQTT_PORT']),))
|
||||
mqtt_thread = threading.Thread(target=mqtt_main, args=(CONFIG['DATA_CONFIG']['MQTT_USERNAME'],CONFIG['DATA_CONFIG']['MQTT_PASSWORD'],CONFIG['DATA_CONFIG']['MQTT_USERNAME2'],CONFIG['DATA_CONFIG']['MQTT_PASSWORD2'],CONFIG['DATA_CONFIG']['MQTT_SERVER'],int(CONFIG['DATA_CONFIG']['MQTT_PORT']),CONFIG['DATA_CONFIG']['MQTT_SERVER2'],int(CONFIG['DATA_CONFIG']['MQTT_PORT2']),))
|
||||
mqtt_thread.daemon = True
|
||||
mqtt_thread.start()
|
||||
|
||||
|
|
|
|||
|
|
@ -203,11 +203,16 @@ def build_config(_config_file):
|
|||
## 'RULES_PATH': config.get(section, 'RULES_PATH'),
|
||||
|
||||
'GATEWAY_CALLSIGN': config.get(section, 'GATEWAY_CALLSIGN'),
|
||||
## 'URL': config.get(section, 'URL'),
|
||||
## 'DESCRIPTION': config.get(section, 'DESCRIPTION'),
|
||||
|
||||
'URL': config.get(section, 'URL'),
|
||||
'DESCRIPTION': config.get(section, 'DESCRIPTION'),
|
||||
'MQTT_USERNAME': config.get(section, 'MQTT_USERNAME'),
|
||||
'MQTT_PASSWORD': config.get(section, 'MQTT_PASSWORD'),
|
||||
'MQTT_SERVER': config.get(section, 'MQTT_SERVER'),
|
||||
'MQTT_PORT': config.get(section, 'MQTT_PORT'),
|
||||
'MQTT_USERNAME2': config.get(section, 'MQTT_USERNAME2'),
|
||||
'MQTT_PASSWORD2': config.get(section, 'MQTT_PASSWORD2'),
|
||||
'MQTT_SERVER2': config.get(section, 'MQTT_SERVER2'),
|
||||
'MQTT_PORT2': config.get(section, 'MQTT_PORT2'),
|
||||
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -4654,7 +4654,7 @@ Name: <strong>''' + p.name + '''</strong> - Port: <strong>''' + str(
|
|||
## s = ServerList.query.filter_by(name=request.args.get('add_data_options')).first()
|
||||
print(request.form)
|
||||
print(request.form.get('user_settings'))
|
||||
add_data_options(request.args.get('add_data_options'), 'DATA_GATEWAY:data_id=' + request.form.get('data_id') + ':call_type=' + request.form.get('call_type') + ':aprs_login_call=' + request.form.get('aprs_login_call') + ':aprs_login_passcode=' + request.form.get('aprs_login_passcode') + ':aprs_server=' + request.form.get('aprs_server') + ':aprs_port=' + request.form.get('aprs_port') + ':default_ssid=' + request.form.get('default_ssid') + ':default_comment=' + request.form.get('default_comment') + ':aprs_filter=' + request.form.get('aprs_filter') + ':user_settings=' + request.form.get('user_settings') + ':igate_time=' + request.form.get('igate_time') + ':igate_icon=' + request.form.get('igate_icon') + ':igate_comment=' + request.form.get('igate_comment') + ':igate_lat=' + request.form.get('igate_lat') + ':igate_lon=' + request.form.get('igate_lon') + ';MQTT:gateway_callsign=' + request.form.get('gateway_call') + ':server=' + request.form.get('mqtt_server') + ':port=' + request.form.get('mqtt_port') + ':username=' + request.form.get('mqtt_user') + ':password=' + request.form.get('mqtt_password') + ':url=' + request.form.get('url') + ':description=' + request.form.get('description'))
|
||||
add_data_options(request.args.get('add_data_options'), 'DATA_GATEWAY:data_id=' + request.form.get('data_id') + ':call_type=' + request.form.get('call_type') + ':aprs_login_call=' + request.form.get('aprs_login_call') + ':aprs_login_passcode=' + request.form.get('aprs_login_passcode') + ':aprs_server=' + request.form.get('aprs_server') + ':aprs_port=' + request.form.get('aprs_port') + ':default_ssid=' + request.form.get('default_ssid') + ':default_comment=' + request.form.get('default_comment') + ':aprs_filter=' + request.form.get('aprs_filter') + ':user_settings=' + request.form.get('user_settings') + ':igate_time=' + request.form.get('igate_time') + ':igate_icon=' + request.form.get('igate_icon') + ':igate_comment=' + request.form.get('igate_comment') + ':igate_lat=' + request.form.get('igate_lat') + ':igate_lon=' + request.form.get('igate_lon') + ';MQTT:gateway_callsign=' + request.form.get('gateway_call') + ':url=' + request.form.get('url') + ':description=' + request.form.get('description') + ':server=' + request.form.get('mqtt_server') + ':port=' + request.form.get('mqtt_port') + ':username=' + request.form.get('mqtt_user') + ':password=' + request.form.get('mqtt_password') + ':server2=localhost:port2=1883:username2=:password2=')
|
||||
|
||||
content = '''<h3 style="text-align: center;">Added data gateway options.</h3>
|
||||
<p style="text-align: center;">Redirecting in 3 seconds.</p>
|
||||
|
|
|
|||
|
|
@ -82,7 +82,7 @@
|
|||
<tr>
|
||||
<td><strong>.[SHORTCUT] [DMR ID] [MESSAGE]</strong></td>
|
||||
<td>Send an SMS to another user on a different network.</td>
|
||||
<td><em><code>#DMRNET 1234567 Are you there?</code></em></td>
|
||||
<td><em><code>.DMRNET 1234567 Are you there?</code></em></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
|
|
|||
Loading…
Reference in New Issue