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

View File

@ -106,6 +106,11 @@
"id": "07a85e91-d064-4bce-b017-13fd0c320c0b", "id": "07a85e91-d064-4bce-b017-13fd0c320c0b",
"idName": "checkForUpdates", "idName": "checkForUpdates",
"name": "check updates" "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); updateMap.insert("checkforupdate", true);
QVariantMap requestMap; QVariantMap requestMap;
requestMap.insert("swupdate", updateMap);
requestMap.insert("portalservices", true); 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); QJsonDocument jsonDoc = QJsonDocument::fromVariant(requestMap);

View File

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