8 #ifndef _SINRICGARAGEDOOR_H_
9 #define _SINRICGARAGEDOOR_H_
11 #include "SinricProDevice.h"
23 String getProductType() {
return SinricProDevice::getProductType() + String(
"GARAGE_DOOR"); }
41 void onPowerState() =
delete;
45 bool sendPowerStateEvent() =
delete;
47 bool handleRequest(
const char* deviceId,
const char* action, JsonObject &request_value, JsonObject &response_value)
override;
52 SinricProGarageDoor::SinricProGarageDoor(
const char* deviceId,
unsigned long eventWaitTime) :
SinricProDevice(deviceId, eventWaitTime),
53 doorStateCallback(nullptr) {
56 bool SinricProGarageDoor::handleRequest(
const char* deviceId,
const char* action, JsonObject &request_value, JsonObject &response_value) {
57 if (strcmp(deviceId, this->deviceId) != 0)
return false;
58 if (SinricProDevice::handleRequest(deviceId, action, request_value, response_value))
return true;
61 String actionString = String(action);
63 if (actionString ==
"setMode" && doorStateCallback) {
64 String modeStr = request_value[
"mode"] |
"";
66 if (modeStr ==
"Open") mode =
false;
67 if (modeStr ==
"Close") mode =
true;
68 success = doorStateCallback(String(deviceId), mode);
69 if (mode ==
false) modeStr =
"Open";
70 if (mode ==
true) modeStr =
"Close";
71 response_value[
"mode"] = modeStr;
85 doorStateCallback = cb;
98 DynamicJsonDocument eventMessage = prepareEvent(deviceId,
"setMode", cause.c_str());
99 JsonObject event_value = eventMessage[
"payload"][
"value"];
100 state ? event_value[
"mode"] =
"Close" : event_value[
"mode"] =
"Open";
101 return sendEvent(eventMessage);