add hue upgrade action
This commit is contained in:
parent
82581ee569
commit
07421e9b1f
@ -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;
|
||||
}
|
||||
|
||||
|
||||
@ -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"
|
||||
}
|
||||
]
|
||||
},
|
||||
|
||||
@ -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);
|
||||
|
||||
|
||||
@ -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;
|
||||
|
||||
Reference in New Issue
Block a user