3 #include "../SinricProRequest.h"
4 #include "../EventLimiter.h"
5 #include "../SinricProStrings.h"
7 #include "../SinricProNamespace.h"
8 namespace SINRICPRO_NAMESPACE {
10 FSTR(COLOR, setColor);
33 using ColorCallback = std::function<bool(
const String &,
byte &,
byte &,
byte &)>;
45 bool sendColorEvent(
byte r,
byte g,
byte b, String cause = FSTR_SINRICPRO_PHYSICAL_INTERACTION);
48 bool handleColorController(SinricProRequest &request);
51 EventLimiter event_limiter;
57 : event_limiter(EVENT_LIMIT_STATE) {
58 T* device =
static_cast<T*
>(
this);
88 if (event_limiter)
return false;
89 T* device =
static_cast<T*
>(
this);
91 JsonDocument eventMessage = device->prepareEvent(FSTR_COLOR_setColor, cause.c_str());
92 JsonObject event_color = eventMessage[FSTR_SINRICPRO_payload][FSTR_SINRICPRO_value][FSTR_COLOR_color].to<JsonObject>();
93 event_color[FSTR_COLOR_r] = r;
94 event_color[FSTR_COLOR_g] = g;
95 event_color[FSTR_COLOR_b] = b;
96 return device->sendEvent(eventMessage);
101 T* device =
static_cast<T*
>(
this);
103 bool success =
false;
105 if (colorCallback && request.action == FSTR_COLOR_setColor) {
106 unsigned char r, g, b;
107 r = request.request_value[FSTR_COLOR_color][FSTR_COLOR_r];
108 g = request.request_value[FSTR_COLOR_color][FSTR_COLOR_g];
109 b = request.request_value[FSTR_COLOR_color][FSTR_COLOR_b];
110 success = colorCallback(device->deviceId, r, g, b);
111 request.response_value[FSTR_COLOR_color].to<JsonObject>();
112 request.response_value[FSTR_COLOR_color][FSTR_COLOR_r] = r;
113 request.response_value[FSTR_COLOR_color][FSTR_COLOR_g] = g;
114 request.response_value[FSTR_COLOR_color][FSTR_COLOR_b] = b;
122 template <
typename T>
123 using ColorController = SINRICPRO_NAMESPACE::ColorController<T>;
ColorController.
Definition: ColorController.h:40
void onColor(ColorCallback cb)
Set callback function for setColor request.
Definition: ColorController.h:71
bool sendColorEvent(byte r, byte g, byte b, String cause=FSTR_SINRICPRO_PHYSICAL_INTERACTION)
Send setColor event to SinricPro Server indicating actual color.
Definition: ColorController.h:87
std::function< bool(const String &, byte &, byte &, byte &)> ColorCallback
Callback definition for onColor function.
Definition: ColorController.h:33