SinricPro Library
Loading...
Searching...
No Matches
DoorController.h
1#pragma once
2
3#include "../SinricProRequest.h"
4#include "../EventLimiter.h"
5#include "../SinricProStrings.h"
6
7#include "../SinricProNamespace.h"
8namespace SINRICPRO_NAMESPACE {
9
10FSTR(DOOR, setMode); // "setMode"
11FSTR(DOOR, mode); // "mode"
12FSTR(DOOR, Close); // "Close"
13FSTR(DOOR, Open); // "Open"
14
15
29using DoorCallback = std::function<bool(const String &, bool &)>;
30
35template <typename T>
37 public:
39
42
43 protected:
44 bool handleDoorController(SinricProRequest &request);
45
46 private:
47 EventLimiter event_limiter;
48 DoorCallback doorCallback;
49};
50
51template <typename T>
53: event_limiter(EVENT_LIMIT_STATE) {
54 T* device = static_cast<T*>(this);
55 device->registerRequestHandler(std::bind(&DoorController<T>::handleDoorController, this, std::placeholders::_1));
56}
57
65template <typename T>
67
77template <typename T>
79 if (event_limiter) return false;
80 T* device = static_cast<T*>(this);
81
82 JsonDocument eventMessage = device->prepareEvent(FSTR_DOOR_setMode, cause.c_str());
85 return device->sendEvent(eventMessage);
86}
87
88template <typename T>
90 T* device = static_cast<T*>(this);
91
92 bool success = false;
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);
98 }
99 return success;
100}
101
102} // SINRICPRO_NAMESPACE
103
104template <typename T>
105using DoorController = SINRICPRO_NAMESPACE::DoorController<T>;
AirQuality.
Definition AirQualitySensor.h:19
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