3 #include "../SinricProRequest.h"
4 #include "../EventLimiter.h"
5 #include "../SinricProStrings.h"
7 #include "../SinricProNamespace.h"
8 namespace SINRICPRO_NAMESPACE {
10 FSTR(COLORTEMPERATURE, colorTemperature);
11 FSTR(COLORTEMPERATURE, setColorTemperature);
12 FSTR(COLORTEMPERATURE, increaseColorTemperature);
13 FSTR(COLORTEMPERATURE, decreaseColorTemperature);
77 bool handleColorTemperatureController(SinricProRequest &request);
80 EventLimiter event_limiter;
89 : event_limiter(EVENT_LIMIT_STATE) {
90 T* device =
static_cast<T*
>(
this);
101 template <
typename T>
103 colorTemperatureCallback = cb;
113 template <
typename T>
115 increaseColorTemperatureCallback = cb;
125 template <
typename T>
127 decreaseColorTemperatureCallback = cb;
139 template <
typename T>
141 if (event_limiter)
return false;
142 T* device =
static_cast<T*
>(
this);
144 JsonDocument eventMessage = device->prepareEvent(FSTR_COLORTEMPERATURE_setColorTemperature, cause.c_str());
145 JsonObject event_value = eventMessage[FSTR_SINRICPRO_payload][FSTR_SINRICPRO_value];
146 event_value[FSTR_COLORTEMPERATURE_colorTemperature] = colorTemperature;
147 return device->sendEvent(eventMessage);
150 template <
typename T>
152 T* device =
static_cast<T*
>(
this);
154 bool success =
false;
156 if (colorTemperatureCallback && request.action == FSTR_COLORTEMPERATURE_setColorTemperature) {
157 int colorTemperature = request.request_value[FSTR_COLORTEMPERATURE_colorTemperature];
158 success = colorTemperatureCallback(device->deviceId, colorTemperature);
159 request.response_value[FSTR_COLORTEMPERATURE_colorTemperature] = colorTemperature;
162 if (increaseColorTemperatureCallback && request.action == FSTR_COLORTEMPERATURE_increaseColorTemperature) {
163 int colorTemperature = 1;
164 success = increaseColorTemperatureCallback(device->deviceId, colorTemperature);
165 request.response_value[FSTR_COLORTEMPERATURE_colorTemperature] = colorTemperature;
168 if (decreaseColorTemperatureCallback && request.action == FSTR_COLORTEMPERATURE_decreaseColorTemperature) {
169 int colorTemperature = -1;
170 success = decreaseColorTemperatureCallback(device->deviceId, colorTemperature);
171 request.response_value[FSTR_COLORTEMPERATURE_colorTemperature] = colorTemperature;
179 template <
typename T>
180 using ColorTemperatureController = SINRICPRO_NAMESPACE::ColorTemperatureController<T>;
ColorTemperatureController.
Definition: ColorTemperatureController.h:66
bool sendColorTemperatureEvent(int colorTemperature, String cause=FSTR_SINRICPRO_PHYSICAL_INTERACTION)
Send setColorTemperature event to SinricPro Server indicating actual color temperature.
Definition: ColorTemperatureController.h:140
void onDecreaseColorTemperature(DecreaseColorTemperatureCallback cb)
Set callback function for decreaseColorTemperature request.
Definition: ColorTemperatureController.h:126
void onIncreaseColorTemperature(IncreaseColorTemperatureCallback cb)
Set callback function for increaseColorTemperature request.
Definition: ColorTemperatureController.h:114
void onColorTemperature(ColorTemperatureCallback cb)
Set callback function for setColorTemperature request.
Definition: ColorTemperatureController.h:102
std::function< bool(const String &, int &)> ColorTemperatureCallback
Callback definition for onColorTemperature function.
Definition: ColorTemperatureController.h:28
std::function< bool(const String &, int &)> DecreaseColorTemperatureCallback
Callback definition for onDecreaseColorTemperature function.
Definition: ColorTemperatureController.h:58
std::function< bool(const String &, int &)> IncreaseColorTemperatureCallback
Callback definition for onIncreaseColorTemperature function.
Definition: ColorTemperatureController.h:43