update hue plugin to follow lights interfaces

This commit is contained in:
Michael Zanetti 2017-10-21 00:45:48 +02:00
parent abab0dace9
commit ed9cfcdfa7
2 changed files with 32 additions and 28 deletions

View File

@ -352,7 +352,7 @@ void DevicePluginPhilipsHue::networkManagerReplyReady()
// check HTTP status code // check HTTP status code
if (status != 200 || reply->error() != QNetworkReply::NoError) { if (status != 200 || reply->error() != QNetworkReply::NoError) {
if (device->stateValue(hueLightHueReachableStateTypeId).toBool()) { if (device->stateValue(hueLightReachableStateTypeId).toBool()) {
qCWarning(dcPhilipsHue) << "Refresh Hue lights request error:" << status << reply->errorString(); qCWarning(dcPhilipsHue) << "Refresh Hue lights request error:" << status << reply->errorString();
bridgeReachableChanged(device, false); bridgeReachableChanged(device, false);
} }
@ -416,20 +416,20 @@ DeviceManager::DeviceError DevicePluginPhilipsHue::executeAction(Device *device,
return DeviceManager::DeviceErrorHardwareNotAvailable; return DeviceManager::DeviceErrorHardwareNotAvailable;
} }
if (action.actionTypeId() == hueLightHuePowerActionTypeId) { if (action.actionTypeId() == hueLightPowerActionTypeId) {
QPair<QNetworkRequest, QByteArray> request = light->createSetPowerRequest(action.param(hueLightHuePowerStateParamTypeId).value().toBool()); QPair<QNetworkRequest, QByteArray> request = light->createSetPowerRequest(action.param(hueLightPowerStateParamTypeId).value().toBool());
QNetworkReply *reply = hardwareManager()->networkManager()->put(request.first, request.second); QNetworkReply *reply = hardwareManager()->networkManager()->put(request.first, request.second);
connect(reply, &QNetworkReply::finished, this, &DevicePluginPhilipsHue::networkManagerReplyReady); connect(reply, &QNetworkReply::finished, this, &DevicePluginPhilipsHue::networkManagerReplyReady);
m_asyncActions.insert(reply, QPair<Device *, ActionId>(device, action.id())); m_asyncActions.insert(reply, QPair<Device *, ActionId>(device, action.id()));
return DeviceManager::DeviceErrorAsync; return DeviceManager::DeviceErrorAsync;
} else if (action.actionTypeId() == hueLightHueColorActionTypeId) { } else if (action.actionTypeId() == hueLightColorActionTypeId) {
QPair<QNetworkRequest, QByteArray> request = light->createSetColorRequest(action.param(hueLightHueColorStateParamTypeId).value().value<QColor>()); QPair<QNetworkRequest, QByteArray> request = light->createSetColorRequest(action.param(hueLightColorStateParamTypeId).value().value<QColor>());
QNetworkReply *reply = hardwareManager()->networkManager()->put(request.first, request.second); QNetworkReply *reply = hardwareManager()->networkManager()->put(request.first, request.second);
connect(reply, &QNetworkReply::finished, this, &DevicePluginPhilipsHue::networkManagerReplyReady); connect(reply, &QNetworkReply::finished, this, &DevicePluginPhilipsHue::networkManagerReplyReady);
m_asyncActions.insert(reply,QPair<Device *, ActionId>(device, action.id())); m_asyncActions.insert(reply,QPair<Device *, ActionId>(device, action.id()));
return DeviceManager::DeviceErrorAsync; return DeviceManager::DeviceErrorAsync;
} else if (action.actionTypeId() == hueLightHueBrightnessActionTypeId) { } else if (action.actionTypeId() == hueLightBrightnessActionTypeId) {
QPair<QNetworkRequest, QByteArray> request = light->createSetBrightnessRequest(percentageToBrightness(action.param(hueLightHueBrightnessStateParamTypeId).value().toInt())); QPair<QNetworkRequest, QByteArray> request = light->createSetBrightnessRequest(percentageToBrightness(action.param(hueLightBrightnessStateParamTypeId).value().toInt()));
QNetworkReply *reply = hardwareManager()->networkManager()->put(request.first, request.second); QNetworkReply *reply = hardwareManager()->networkManager()->put(request.first, request.second);
connect(reply, &QNetworkReply::finished, this, &DevicePluginPhilipsHue::networkManagerReplyReady); connect(reply, &QNetworkReply::finished, this, &DevicePluginPhilipsHue::networkManagerReplyReady);
m_asyncActions.insert(reply, QPair<Device *, ActionId>(device, action.id())); m_asyncActions.insert(reply, QPair<Device *, ActionId>(device, action.id()));
@ -446,8 +446,8 @@ DeviceManager::DeviceError DevicePluginPhilipsHue::executeAction(Device *device,
connect(reply, &QNetworkReply::finished, this, &DevicePluginPhilipsHue::networkManagerReplyReady); connect(reply, &QNetworkReply::finished, this, &DevicePluginPhilipsHue::networkManagerReplyReady);
m_asyncActions.insert(reply, QPair<Device *, ActionId>(device, action.id())); m_asyncActions.insert(reply, QPair<Device *, ActionId>(device, action.id()));
return DeviceManager::DeviceErrorAsync; return DeviceManager::DeviceErrorAsync;
} else if (action.actionTypeId() == hueLightHueTemperatureActionTypeId) { } else if (action.actionTypeId() == hueLightColorTemperatureActionTypeId) {
QPair<QNetworkRequest, QByteArray> request = light->createSetTemperatureRequest(action.param(hueLightHueTemperatureStateParamTypeId).value().toInt()); QPair<QNetworkRequest, QByteArray> request = light->createSetTemperatureRequest(action.param(hueLightColorTemperatureStateParamTypeId).value().toInt());
QNetworkReply *reply = hardwareManager()->networkManager()->put(request.first, request.second); QNetworkReply *reply = hardwareManager()->networkManager()->put(request.first, request.second);
connect(reply, &QNetworkReply::finished, this, &DevicePluginPhilipsHue::networkManagerReplyReady); connect(reply, &QNetworkReply::finished, this, &DevicePluginPhilipsHue::networkManagerReplyReady);
m_asyncActions.insert(reply, QPair<Device *, ActionId>(device, action.id())); m_asyncActions.insert(reply, QPair<Device *, ActionId>(device, action.id()));
@ -465,14 +465,14 @@ DeviceManager::DeviceError DevicePluginPhilipsHue::executeAction(Device *device,
return DeviceManager::DeviceErrorHardwareNotAvailable; return DeviceManager::DeviceErrorHardwareNotAvailable;
} }
if (action.actionTypeId() == hueWhiteLightHuePowerActionTypeId) { if (action.actionTypeId() == hueWhiteLightPowerActionTypeId) {
QPair<QNetworkRequest, QByteArray> request = light->createSetPowerRequest(action.param(hueWhiteLightHuePowerStateParamTypeId).value().toBool()); QPair<QNetworkRequest, QByteArray> request = light->createSetPowerRequest(action.param(hueWhiteLightPowerStateParamTypeId).value().toBool());
QNetworkReply *reply = hardwareManager()->networkManager()->put(request.first, request.second); QNetworkReply *reply = hardwareManager()->networkManager()->put(request.first, request.second);
connect(reply, &QNetworkReply::finished, this, &DevicePluginPhilipsHue::networkManagerReplyReady); connect(reply, &QNetworkReply::finished, this, &DevicePluginPhilipsHue::networkManagerReplyReady);
m_asyncActions.insert(reply, QPair<Device *, ActionId>(device, action.id())); m_asyncActions.insert(reply, QPair<Device *, ActionId>(device, action.id()));
return DeviceManager::DeviceErrorAsync; return DeviceManager::DeviceErrorAsync;
} else if (action.actionTypeId() == hueWhiteLightHueBrightnessActionTypeId) { } else if (action.actionTypeId() == hueWhiteLightBrightnessActionTypeId) {
QPair<QNetworkRequest, QByteArray> request = light->createSetBrightnessRequest(percentageToBrightness(action.param(hueWhiteLightHueBrightnessStateParamTypeId).value().toInt())); QPair<QNetworkRequest, QByteArray> request = light->createSetBrightnessRequest(percentageToBrightness(action.param(hueWhiteLightBrightnessStateParamTypeId).value().toInt()));
QNetworkReply *reply = hardwareManager()->networkManager()->put(request.first, request.second); QNetworkReply *reply = hardwareManager()->networkManager()->put(request.first, request.second);
connect(reply, &QNetworkReply::finished, this, &DevicePluginPhilipsHue::networkManagerReplyReady); connect(reply, &QNetworkReply::finished, this, &DevicePluginPhilipsHue::networkManagerReplyReady);
m_asyncActions.insert(reply, QPair<Device *, ActionId>(device, action.id())); m_asyncActions.insert(reply, QPair<Device *, ActionId>(device, action.id()));
@ -526,16 +526,16 @@ void DevicePluginPhilipsHue::lightStateChanged()
} }
if (device->deviceClassId() == hueLightDeviceClassId) { if (device->deviceClassId() == hueLightDeviceClassId) {
device->setStateValue(hueLightHueReachableStateTypeId, light->reachable()); device->setStateValue(hueLightReachableStateTypeId, light->reachable());
device->setStateValue(hueLightHueColorStateTypeId, QVariant::fromValue(light->color())); device->setStateValue(hueLightColorStateTypeId, QVariant::fromValue(light->color()));
device->setStateValue(hueLightHuePowerStateTypeId, light->power()); device->setStateValue(hueLightPowerStateTypeId, light->power());
device->setStateValue(hueLightHueBrightnessStateTypeId, brightnessToPercentage(light->brightness())); device->setStateValue(hueLightBrightnessStateTypeId, brightnessToPercentage(light->brightness()));
device->setStateValue(hueLightHueTemperatureStateTypeId, light->ct()); device->setStateValue(hueLightColorTemperatureStateTypeId, light->ct());
device->setStateValue(hueLightHueEffectStateTypeId, light->effect()); device->setStateValue(hueLightHueEffectStateTypeId, light->effect());
} else if (device->deviceClassId() == hueWhiteLightDeviceClassId) { } else if (device->deviceClassId() == hueWhiteLightDeviceClassId) {
device->setStateValue(hueWhiteLightHueReachableStateTypeId, light->reachable()); device->setStateValue(hueWhiteLightHueReachableStateTypeId, light->reachable());
device->setStateValue(hueWhiteLightHuePowerStateTypeId, light->power()); device->setStateValue(hueWhiteLightPowerStateTypeId, light->power());
device->setStateValue(hueWhiteLightHueBrightnessStateTypeId, brightnessToPercentage(light->brightness())); device->setStateValue(hueWhiteLightBrightnessStateTypeId, brightnessToPercentage(light->brightness()));
} }
} }
@ -1193,7 +1193,11 @@ void DevicePluginPhilipsHue::bridgeReachableChanged(Device *device, const bool &
foreach (HueLight *light, m_lights.keys()) { foreach (HueLight *light, m_lights.keys()) {
if (light->bridgeId() == device->id()) { if (light->bridgeId() == device->id()) {
light->setReachable(false); light->setReachable(false);
m_lights.value(light)->setStateValue(hueLightHueReachableStateTypeId, false); if (m_lights.value(light)->deviceClassId() == hueLightDeviceClassId) {
m_lights.value(light)->setStateValue(hueLightReachableStateTypeId, false);
} else if (m_lights.value(light)->deviceClassId() == hueWhiteLightDeviceClassId) {
m_lights.value(light)->setStateValue(hueWhiteLightHueReachableStateTypeId, false);
}
} }
} }

View File

@ -217,7 +217,7 @@
"stateTypes": [ "stateTypes": [
{ {
"id": "19bb8d10-1b28-4ba3-99b7-a634138dcfde", "id": "19bb8d10-1b28-4ba3-99b7-a634138dcfde",
"name": "hueReachable", "name": "reachable",
"displayName": "reachable", "displayName": "reachable",
"displayNameEvent": "reachable changed", "displayNameEvent": "reachable changed",
"defaultValue": false, "defaultValue": false,
@ -225,7 +225,7 @@
}, },
{ {
"id": "90aaffe5-6a76-47d2-a14a-550f60390245", "id": "90aaffe5-6a76-47d2-a14a-550f60390245",
"name": "huePower", "name": "power",
"displayName": "power", "displayName": "power",
"displayNameEvent": "power changed", "displayNameEvent": "power changed",
"displayNameAction": "Set power", "displayNameAction": "Set power",
@ -235,7 +235,7 @@
}, },
{ {
"id": "c0f4206f-f219-4f06-93c4-4ca515a56f79", "id": "c0f4206f-f219-4f06-93c4-4ca515a56f79",
"name": "hueTemperature", "name": "colorTemperature",
"displayName": "color temperature", "displayName": "color temperature",
"displayNameEvent": "color temperature changed", "displayNameEvent": "color temperature changed",
"displayNameAction": "Set color temperature", "displayNameAction": "Set color temperature",
@ -250,7 +250,7 @@
}, },
{ {
"id": "d25423e7-b924-4b20-80b6-77eecc65d089", "id": "d25423e7-b924-4b20-80b6-77eecc65d089",
"name": "hueColor", "name": "color",
"displayName": "color", "displayName": "color",
"displayNameEvent": "color changed", "displayNameEvent": "color changed",
"displayNameAction": "Set color", "displayNameAction": "Set color",
@ -263,7 +263,7 @@
}, },
{ {
"id": "90e91f64-a208-468c-a5a2-7f47e08859e2", "id": "90e91f64-a208-468c-a5a2-7f47e08859e2",
"name": "hueBrightness", "name": "brightness",
"displayName": "brightness", "displayName": "brightness",
"displayNameEvent": "brightness changed", "displayNameEvent": "brightness changed",
"displayNameAction": "Set brigtness", "displayNameAction": "Set brigtness",
@ -399,7 +399,7 @@
}, },
{ {
"id": "90aaffe5-6a76-47d2-a14a-550f60390245", "id": "90aaffe5-6a76-47d2-a14a-550f60390245",
"name": "huePower", "name": "power",
"displayName": "power", "displayName": "power",
"displayNameEvent": "power changed", "displayNameEvent": "power changed",
"displayNameAction": "Set power", "displayNameAction": "Set power",
@ -409,7 +409,7 @@
}, },
{ {
"id": "90e91f64-a208-468c-a5a2-7f47e08859e2", "id": "90e91f64-a208-468c-a5a2-7f47e08859e2",
"name": "hueBrightness", "name": "brightness",
"displayName": "brightness", "displayName": "brightness",
"displayNameEvent": "brightness changed", "displayNameEvent": "brightness changed",
"displayNameAction": "Set brightness", "displayNameAction": "Set brightness",