mqtt_node_util: support arbitrary node ids
This commit is contained in:
parent
b6ebabed82
commit
03440a282c
@ -41,9 +41,13 @@ def on_mqtt_connect():
|
||||
|
||||
if __name__ == '__main__':
|
||||
nodes_config = MqttNodesConfig()
|
||||
node_names = nodes_config.get_nodes(only_names=True)
|
||||
|
||||
parser = ArgumentParser()
|
||||
parser.add_argument('--node-id', type=str, required=True, choices=nodes_config.get_nodes(only_names=True))
|
||||
parser.add_argument('--node-id', type=str, required=True,
|
||||
help='one of: '+', '.join(node_names))
|
||||
parser.add_argument('--node-id-no-check', action='store_true',
|
||||
help='when enabled, the script will not check for definition of the node in the mqtt_nodes.yaml config and will use the default password')
|
||||
parser.add_argument('--modules', type=str, choices=get_mqtt_modules(), nargs='*',
|
||||
help='mqtt modules to include')
|
||||
parser.add_argument('--switch-relay', choices=[0, 1], type=int,
|
||||
@ -56,6 +60,9 @@ if __name__ == '__main__':
|
||||
config.load_app(parser=parser, no_config=True)
|
||||
arg = parser.parse_args()
|
||||
|
||||
if not arg.node_id_no_check and arg.node_id not in node_names:
|
||||
raise ArgumentError(None, f'invalid node_id {arg.node_id}')
|
||||
|
||||
if arg.no_wait:
|
||||
no_wait = True
|
||||
|
||||
@ -65,8 +72,16 @@ if __name__ == '__main__':
|
||||
mqtt = MqttWrapper(randomize_client_id=True,
|
||||
client_id='mqtt_node_util')
|
||||
mqtt.add_connect_callback(on_mqtt_connect)
|
||||
|
||||
try:
|
||||
node_password = nodes_config.get_node(arg.node_id)['password']
|
||||
except KeyError as e:
|
||||
if arg.node_id_no_check:
|
||||
node_password = nodes_config['common']['password']
|
||||
else:
|
||||
raise e
|
||||
mqtt_node = MqttNode(node_id=arg.node_id,
|
||||
node_secret=nodes_config.get_node(arg.node_id)['password'])
|
||||
node_secret=node_password)
|
||||
|
||||
mqtt.add_node(mqtt_node)
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user