From 79dd4d3882fe8dcf468a8794ce2f14ad20389a7f Mon Sep 17 00:00:00 2001 From: Michael Zanetti Date: Thu, 2 Apr 2020 16:05:40 +0200 Subject: [PATCH] Fix providing param overrides for rediscovery --- libnymea-app/devicemanager.cpp | 6 +++++- libnymea-app/devicemanager.h | 2 +- nymea-app/ui/thingconfiguration/SetupWizard.qml | 13 ++++++++----- 3 files changed, 14 insertions(+), 7 deletions(-) diff --git a/libnymea-app/devicemanager.cpp b/libnymea-app/devicemanager.cpp index 089906a6..44bcbbc6 100644 --- a/libnymea-app/devicemanager.cpp +++ b/libnymea-app/devicemanager.cpp @@ -503,11 +503,15 @@ void DeviceManager::reconfigureDevice(const QUuid &deviceId, const QVariantList m_jsonClient->sendCommand("Devices.ReconfigureDevice", params, this, "reconfigureDeviceResponse"); } -void DeviceManager::reconfigureDiscoveredDevice(const QUuid &deviceId, const QUuid &deviceDescriptorId) +void DeviceManager::reconfigureDiscoveredDevice(const QUuid &deviceId, const QUuid &deviceDescriptorId, const QVariantList ¶mOverride) { QVariantMap params; params.insert("deviceId", deviceId.toString()); params.insert("deviceDescriptorId", deviceDescriptorId); + if (!paramOverride.isEmpty()) { + params.insert("deviceParams", paramOverride); + } + qDebug() << "Calling ReconfigureDevice" << qUtf8Printable(QJsonDocument::fromVariant(params).toJson()); m_jsonClient->sendCommand("Devices.ReconfigureDevice", params, this, "reconfigureDeviceResponse"); } diff --git a/libnymea-app/devicemanager.h b/libnymea-app/devicemanager.h index 67582f2c..638b096e 100644 --- a/libnymea-app/devicemanager.h +++ b/libnymea-app/devicemanager.h @@ -91,7 +91,7 @@ public: Q_INVOKABLE void editDevice(const QUuid &deviceId, const QString &name); Q_INVOKABLE void setDeviceSettings(const QUuid &deviceId, const QVariantList &settings); Q_INVOKABLE void reconfigureDevice(const QUuid &deviceId, const QVariantList &deviceParams); - Q_INVOKABLE void reconfigureDiscoveredDevice(const QUuid &deviceId, const QUuid &deviceDescriptorId); + Q_INVOKABLE void reconfigureDiscoveredDevice(const QUuid &deviceId, const QUuid &deviceDescriptorId, const QVariantList ¶mOverride); Q_INVOKABLE int executeAction(const QUuid &deviceId, const QUuid &actionTypeId, const QVariantList ¶ms = QVariantList()); Q_INVOKABLE BrowserItems* browseDevice(const QUuid &deviceId, const QString &itemId = QString()); Q_INVOKABLE void refreshBrowserItems(BrowserItems *browserItems); diff --git a/nymea-app/ui/thingconfiguration/SetupWizard.qml b/nymea-app/ui/thingconfiguration/SetupWizard.qml index 2ffdbd63..8a65fc50 100644 --- a/nymea-app/ui/thingconfiguration/SetupWizard.qml +++ b/nymea-app/ui/thingconfiguration/SetupWizard.qml @@ -403,17 +403,20 @@ Page { var params = [] for (var i = 0; i < paramRepeater.count; i++) { var param = {} - param.paramTypeId = paramRepeater.itemAt(i).paramType.id - param.value = paramRepeater.itemAt(i).value - print("adding param", param.paramTypeId, param.value) - params.push(param) + var paramType = paramRepeater.itemAt(i).paramType + if (!paramType.readOnly) { + param.paramTypeId = paramType.id + param.value = paramRepeater.itemAt(i).value + print("adding param", param.paramTypeId, param.value) + params.push(param) + } } switch (root.deviceClass.setupMethod) { case 0: if (root.device) { if (d.deviceDescriptor) { - engine.deviceManager.reconfigureDiscoveredDevice(root.device.id, d.deviceDescriptor.id); + engine.deviceManager.reconfigureDiscoveredDevice(root.device.id, d.deviceDescriptor.id, params); } else { engine.deviceManager.reconfigureDevice(root.device.id, params); }