8 #ifndef _SINRICDIMSWITCH_H_
9 #define _SINRICDIMSWITCH_H_
11 #include "SinricProDevice.h"
20 String getProductType() {
return SinricProDevice::getProductType() + String(
"DIMMABLE_SWITCH"); }
60 bool handleRequest(
const DeviceId &deviceId,
const char* action, JsonObject &request_value, JsonObject &response_value)
override;
66 SinricProDimSwitch::SinricProDimSwitch(
const DeviceId &deviceId) :
SinricProDevice(deviceId),
67 setPowerLevelCallback(nullptr),
68 adjustPowerLevelCallback(nullptr) {}
70 bool SinricProDimSwitch::handleRequest(
const DeviceId &deviceId,
const char* action, JsonObject &request_value, JsonObject &response_value) {
71 if (deviceId != this->deviceId)
return false;
72 if (SinricProDevice::handleRequest(deviceId, action, request_value, response_value))
return true;
75 String actionString = String(action);
77 if (setPowerLevelCallback && actionString ==
"setPowerLevel") {
78 int powerLevel = request_value[
"powerLevel"];
79 success = setPowerLevelCallback(deviceId, powerLevel);
80 response_value[
"powerLevel"] = limitValue(powerLevel, 0, 100);
83 if (adjustPowerLevelCallback && actionString ==
"adjustPowerLevel") {
84 int powerLevelDelta = request_value[
"powerLevelDelta"];
85 success = adjustPowerLevelCallback(deviceId, powerLevelDelta);
86 response_value[
"powerLevel"] = limitValue(powerLevelDelta, 0, 100);
98 setPowerLevelCallback = cb;
108 adjustPowerLevelCallback = cb;
121 DynamicJsonDocument eventMessage = prepareEvent(deviceId,
"setPowerLevel", cause.c_str());
122 JsonObject event_value = eventMessage[
"payload"][
"value"];
123 event_value[
"powerLevel"] = powerLevel;
124 return sendEvent(eventMessage);