diff --git a/mqttclient/integrationpluginmqttclient.cpp b/mqttclient/integrationpluginmqttclient.cpp index dafed041..37fe5b71 100644 --- a/mqttclient/integrationpluginmqttclient.cpp +++ b/mqttclient/integrationpluginmqttclient.cpp @@ -45,10 +45,13 @@ void IntegrationPluginMqttClient::setupThing(ThingSetupInfo *info) Thing *thing = info->thing(); MqttClient *client = nullptr; + if (m_clients.contains(thing)) { + delete m_clients.take(thing); + } if (thing->thingClassId() == internalMqttClientThingClassId) { client = hardwareManager()->mqttProvider()->createInternalClient(thing->id().toString()); } else if (thing->thingClassId() == mqttClientThingClassId){ - client = new MqttClient("nymea-" + thing->id().toString().remove(QRegExp("[{}]")).left(8), this); + client = new MqttClient(thing->paramValue(mqttClientThingClientIdParamTypeId).toString(), this); client->setUsername(thing->paramValue(mqttClientThingUsernameParamTypeId).toString()); client->setPassword(thing->paramValue(mqttClientThingPasswordParamTypeId).toString()); QString willTopic = thing->paramValue(mqttClientThingWillTopicParamTypeId).toString(); diff --git a/mqttclient/integrationpluginmqttclient.json b/mqttclient/integrationpluginmqttclient.json index b3449eb6..05fc103d 100644 --- a/mqttclient/integrationpluginmqttclient.json +++ b/mqttclient/integrationpluginmqttclient.json @@ -114,6 +114,13 @@ "type": "QString", "defaultValue": "" }, + { + "id": "621f9054-2b64-4de9-93d2-65bba96a14a3", + "name": "clientId", + "displayName": "Client Id", + "type": "QString", + "defaultValue": "nymea" + }, { "id": "d8211599-52f7-46f6-a741-a7204b987309", "name": "password",