diff --git a/plugins/deviceplugins/awattar/devicepluginawattar.cpp b/plugins/deviceplugins/awattar/devicepluginawattar.cpp index f0708a1a..cd8f35af 100644 --- a/plugins/deviceplugins/awattar/devicepluginawattar.cpp +++ b/plugins/deviceplugins/awattar/devicepluginawattar.cpp @@ -343,7 +343,8 @@ void DevicePluginAwattar::processUserData(const QVariantMap &data) } foreach (HeatPump *pump, m_heatPumps) { - pump->setSgMode(sgMode); + if (pump->reachable()) + pump->setSgMode(sgMode); } } } diff --git a/plugins/deviceplugins/awattar/heatpump.cpp b/plugins/deviceplugins/awattar/heatpump.cpp index 0ec1f310..060e86d7 100644 --- a/plugins/deviceplugins/awattar/heatpump.cpp +++ b/plugins/deviceplugins/awattar/heatpump.cpp @@ -39,7 +39,13 @@ HeatPump::HeatPump(QHostAddress address, QObject *parent) : url.setPath("/.well-known/core"); qCDebug(dcAwattar) << "Discover pump resources on" << url.toString(); - m_discoverReplies.append(m_coap->get(CoapRequest(url))); + CoapReply *reply = m_coap->get(CoapRequest(url)); + if (reply->error() != CoapReply::NoError) { + qCWarning(dcAwattar()) << "Could not discover pump resources" << reply->errorString(); + reply->deleteLater(); + return; + } + m_discoverReplies.append(reply); } QHostAddress HeatPump::address() const @@ -65,7 +71,15 @@ void HeatPump::setSgMode(const int &sgMode) url.setPath("/a/sg_mode"); QByteArray payload = QString("mode=%1").arg(QString::number(sgMode)).toUtf8(); - m_sgModeReplies.append(m_coap->post(CoapRequest(url), payload)); + + CoapReply *reply = m_coap->post(CoapRequest(url), payload); + if (reply->error() != CoapReply::NoError) { + qCWarning(dcAwattar()) << "Could not set sg mode" << reply->errorString(); + reply->deleteLater(); + return; + } + + m_sgModeReplies.append(reply); } void HeatPump::setLed(const bool &power) @@ -75,11 +89,20 @@ void HeatPump::setLed(const bool &power) url.setHost(m_address.toString()); url.setPath("/a/led"); + QByteArray data; if (power) { - m_ledReplies.append(m_coap->post(CoapRequest(url), QString("mode=1").toUtf8())); + data = QString("mode=1").toUtf8(); } else { - m_ledReplies.append(m_coap->post(CoapRequest(url), QString("mode=0").toUtf8())); + data = QString("mode=0").toUtf8(); } + + CoapReply *reply = m_coap->post(CoapRequest(url), data); + if (reply->error() != CoapReply::NoError) { + qCWarning(dcAwattar()) << "Could not set led" << reply->errorString(); + reply->deleteLater(); + return; + } + m_ledReplies.append(reply); } void HeatPump::setReachable(const bool &reachable) diff --git a/tests/auto/guhtestbase.cpp b/tests/auto/guhtestbase.cpp index bbe24fdd..db3655ec 100644 --- a/tests/auto/guhtestbase.cpp +++ b/tests/auto/guhtestbase.cpp @@ -78,6 +78,8 @@ void GuhTestBase::initTestCase() rulesSettings.clear(); GuhSettings deviceSettings(GuhSettings::SettingsRoleDevices); deviceSettings.clear(); + GuhSettings pluginSettings(GuhSettings::SettingsRolePlugins); + pluginSettings.clear(); GuhCore::instance(); diff --git a/tests/auto/rules/testrules.cpp b/tests/auto/rules/testrules.cpp index 41a63e7d..b3f52386 100644 --- a/tests/auto/rules/testrules.cpp +++ b/tests/auto/rules/testrules.cpp @@ -824,7 +824,7 @@ void TestRules::executeRuleActions() verifyRuleError(response, ruleError); // give the ruleeingine time to execute the actions - QTest::qWait(1000); + QTest::qWait(2000); if (ruleError == RuleEngine::RuleErrorNoError) { verifyRuleExecuted(mockActionIdWithParams); @@ -839,7 +839,7 @@ void TestRules::executeRuleActions() verifyRuleError(response, ruleError); // give the ruleeingine time to execute the actions - QTest::qWait(1000); + QTest::qWait(2000); if (ruleError == RuleEngine::RuleErrorNoError) { verifyRuleExecuted(mockActionIdNoParams);