8 #ifndef _SINRICBLINDS_H_
9 #define _SINRICBLINDS_H_
11 #include "SinricProDevice.h"
25 String getProductType() {
return SinricProDevice::getProductType() + String(
"BLIND"); }
63 bool handleRequest(
const char* deviceId,
const char* action, JsonObject &request_value, JsonObject &response_value)
override;
69 SinricProBlinds::SinricProBlinds(
const char* deviceId,
unsigned long eventWaitTime) :
SinricProDevice(deviceId, eventWaitTime),
70 setPositionCallback(nullptr),
71 adjustPositionCallback(nullptr) {
74 bool SinricProBlinds::handleRequest(
const char* deviceId,
const char* action, JsonObject &request_value, JsonObject &response_value) {
75 if (strcmp(deviceId, this->deviceId) != 0)
return false;
76 if (SinricProDevice::handleRequest(deviceId, action, request_value, response_value))
return true;
79 String actionString = String(action);
81 if (actionString ==
"setRangeValue" && setPositionCallback) {
82 int position = request_value[
"rangeValue"] | 0;
83 success = setPositionCallback(String(deviceId), position);
84 response_value[
"rangeValue"] = limitValue(position, 0, 100);
88 if (actionString ==
"adjustRangeValue" && adjustPositionCallback) {
89 int positionDelta = request_value[
"rangeValueDelta"] | 0;
90 success = adjustPositionCallback(String(deviceId), positionDelta);
91 response_value[
"rangeValue"] = limitValue(positionDelta, 0, 100);
106 setPositionCallback = cb;
117 adjustPositionCallback = cb;
129 DynamicJsonDocument eventMessage = prepareEvent(deviceId,
"setRangeValue", cause.c_str());
130 JsonObject event_value = eventMessage[
"payload"][
"value"];
131 event_value[
"rangeValue"] = position;
132 return sendEvent(eventMessage);