add hue upgrade action

This commit is contained in:
Simon Stürz 2016-02-25 12:49:10 +01:00 committed by Michael Zanetti
parent 82581ee569
commit 07421e9b1f
4 changed files with 30 additions and 4 deletions

View File

@ -539,6 +539,10 @@ DeviceManager::DeviceError DevicePluginPhilipsHue::executeAction(Device *device,
QPair<QNetworkRequest, QByteArray> request = bridge->createCheckUpdatesRequest();
m_asyncActions.insert(networkManagerPut(request.first, request.second),QPair<Device *, ActionId>(device, action.id()));
return DeviceManager::DeviceErrorAsync;
} else if (action.actionTypeId() == upgradeActionTypeId) {
QPair<QNetworkRequest, QByteArray> request = bridge->createUpgradeRequest();
m_asyncActions.insert(networkManagerPut(request.first, request.second),QPair<Device *, ActionId>(device, action.id()));
return DeviceManager::DeviceErrorAsync;
}
return DeviceManager::DeviceErrorActionTypeNotFound;
}
@ -1166,18 +1170,18 @@ void DevicePluginPhilipsHue::processActionResponse(Device *device, const ActionI
// check JSON error
if (error.error != QJsonParseError::NoError) {
qCWarning(dcPhilipsHue) << "Hue Bridge json error in response" << error.errorString();
emit actionExecutionFinished(actionId, DeviceManager::DeviceErrorHardwareNotAvailable);
emit actionExecutionFinished(actionId, DeviceManager::DeviceErrorHardwareFailure);
return;
}
// check response error
if (data.contains("error")) {
if (!jsonDoc.toVariant().toList().isEmpty()) {
qCWarning(dcPhilipsHue) << "Failed to execute Hue action:" << jsonDoc.toVariant().toList().first().toMap().value("error").toMap().value("description").toString();
qCWarning(dcPhilipsHue) << "Failed to execute Hue action:" << jsonDoc.toJson(); //jsonDoc.toVariant().toList().first().toMap().value("error").toMap().value("description").toString();
} else {
qCWarning(dcPhilipsHue) << "Failed to execute Hue action: Invalid error message format";
}
emit actionExecutionFinished(actionId, DeviceManager::DeviceErrorHardwareNotAvailable);
emit actionExecutionFinished(actionId, DeviceManager::DeviceErrorHardwareFailure);
return;
}

View File

@ -106,6 +106,11 @@
"id": "07a85e91-d064-4bce-b017-13fd0c320c0b",
"idName": "checkForUpdates",
"name": "check updates"
},
{
"id": "6dfbc7c0-7372-42f6-82ba-e777cb32dc4c",
"idName": "upgrade",
"name": "Upgrade bridge"
}
]
},

View File

@ -144,8 +144,24 @@ QPair<QNetworkRequest, QByteArray> HueBridge::createCheckUpdatesRequest()
updateMap.insert("checkforupdate", true);
QVariantMap requestMap;
requestMap.insert("swupdate", updateMap);
requestMap.insert("portalservices", true);
requestMap.insert("swupdate", updateMap);
QJsonDocument jsonDoc = QJsonDocument::fromVariant(requestMap);
QNetworkRequest request(QUrl("http://" + hostAddress().toString() + "/api/" + apiKey() + "/config"));
request.setHeader(QNetworkRequest::ContentTypeHeader, "application/json");
return QPair<QNetworkRequest, QByteArray>(request, jsonDoc.toJson());
}
QPair<QNetworkRequest, QByteArray> HueBridge::createUpgradeRequest()
{
QVariantMap updateMap;
updateMap.insert("updatestate", 3);
QVariantMap requestMap;
requestMap.insert("swupdate", updateMap);
QJsonDocument jsonDoc = QJsonDocument::fromVariant(requestMap);

View File

@ -63,6 +63,7 @@ public:
QPair<QNetworkRequest, QByteArray> createSearchLightsRequest();
QPair<QNetworkRequest, QByteArray> createSearchSensorsRequest();
QPair<QNetworkRequest, QByteArray> createCheckUpdatesRequest();
QPair<QNetworkRequest, QByteArray> createUpgradeRequest();
private:
QString m_id;