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();
|
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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -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"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
|||||||
@ -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);
|
||||||
|
|
||||||
|
|||||||
@ -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;
|
||||||
|
|||||||
Reference in New Issue
Block a user