3 #include "../SinricProRequest.h"
4 #include "../EventLimiter.h"
5 #include "../SinricProStrings.h"
7 #include "../SinricProNamespace.h"
8 namespace SINRICPRO_NAMESPACE {
44 bool handleDoorController(SinricProRequest &request);
47 EventLimiter event_limiter;
53 : event_limiter(EVENT_LIMIT_STATE) {
54 T* device =
static_cast<T*
>(
this);
79 if (event_limiter)
return false;
80 T* device =
static_cast<T*
>(
this);
82 JsonDocument eventMessage = device->prepareEvent(FSTR_DOOR_setMode, cause.c_str());
83 JsonObject event_value = eventMessage[FSTR_SINRICPRO_payload][FSTR_SINRICPRO_value];
84 state ? event_value[FSTR_DOOR_mode] = FSTR_DOOR_Close : event_value[FSTR_DOOR_mode] = FSTR_DOOR_Open;
85 return device->sendEvent(eventMessage);
90 T* device =
static_cast<T*
>(
this);
93 if (request.action == FSTR_DOOR_setMode && doorCallback) {
94 String mode = request.request_value[FSTR_DOOR_mode] |
"";
95 bool state = mode == FSTR_DOOR_Close;
96 success = doorCallback(device->deviceId, state);
97 request.response_value[FSTR_DOOR_mode] = state ? FSTR_DOOR_Close : FSTR_DOOR_Open;
104 template <
typename T>
105 using DoorController = SINRICPRO_NAMESPACE::DoorController<T>;
DoorController - only used for GarageDoor device and cannot used as capability for a custom device!
Definition: DoorController.h:36
bool sendDoorStateEvent(bool state, String cause=FSTR_SINRICPRO_PHYSICAL_INTERACTION)
Send DoorState event to update actual door state on SinricPro Server.
Definition: DoorController.h:78
void onDoorState(DoorCallback cb)
Set callback function for onDoorState request.
Definition: DoorController.h:66
std::function< bool(const String &, bool &)> DoorCallback
Callback definition for onDoorState function.
Definition: DoorController.h:29