From 79dd4d3882fe8dcf468a8794ce2f14ad20389a7f Mon Sep 17 00:00:00 2001 From: Michael Zanetti Date: Thu, 2 Apr 2020 16:05:40 +0200 Subject: [PATCH 1/3] 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); } From 4941470451b7f780fb7662f318fbcd87ab3bc4ac Mon Sep 17 00:00:00 2001 From: Michael Zanetti Date: Thu, 2 Apr 2020 17:39:40 +0200 Subject: [PATCH 2/3] Fix reconfigure for userAndPassword auth --- nymea-app/ui/thingconfiguration/SetupWizard.qml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/nymea-app/ui/thingconfiguration/SetupWizard.qml b/nymea-app/ui/thingconfiguration/SetupWizard.qml index 8a65fc50..bae31f2b 100644 --- a/nymea-app/ui/thingconfiguration/SetupWizard.qml +++ b/nymea-app/ui/thingconfiguration/SetupWizard.qml @@ -75,7 +75,7 @@ Page { } Component.onCompleted: { - print("Starting setup wizard") + print("Starting setup wizard. Create Methods:", root.deviceClass.createMethods, "Setup method:", root.deviceClass.setupMethod) if (root.deviceClass.createMethods.indexOf("CreateMethodDiscovery") !== -1) { print("CreateMethodDiscovery") if (deviceClass["discoveryParamTypes"].count > 0) { @@ -115,6 +115,7 @@ Page { case 2: case 3: case 4: + case 5: print("re-pairing", root.device.id) engine.deviceManager.rePairDevice(root.device.id, []); break; From 3c37cbd4cf0874e99308644e7c503bc50e90d2a1 Mon Sep 17 00:00:00 2001 From: Michael Zanetti Date: Thu, 2 Apr 2020 17:49:29 +0200 Subject: [PATCH 3/3] fix typo --- nymea-app/ui/thingconfiguration/SetupWizard.qml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/nymea-app/ui/thingconfiguration/SetupWizard.qml b/nymea-app/ui/thingconfiguration/SetupWizard.qml index bae31f2b..79a5b20f 100644 --- a/nymea-app/ui/thingconfiguration/SetupWizard.qml +++ b/nymea-app/ui/thingconfiguration/SetupWizard.qml @@ -120,7 +120,7 @@ Page { engine.deviceManager.rePairDevice(root.device.id, []); break; default: - console.warn("Unahndled setup method!") + console.warn("Unhandled setup method!") } } }