SinricPro Library
ColorTemperatureController.h
1 #ifndef _COLORTEMPERATURECONTROLLER_H_
2 #define _COLORTEMPERATURECONTROLLER_H_
3 
4 #include "SinricProRequest.h"
5 
10 template <typename T>
12  public:
13  ColorTemperatureController() { static_cast<T &>(*this).requestHandlers.push_back(std::bind(&ColorTemperatureController<T>::handleColorTemperatureController, this, std::placeholders::_1)); }
27  using ColorTemperatureCallback = std::function<bool(const String &, int &)>;
28 
42  using IncreaseColorTemperatureCallback = std::function<bool(const String &, int &)>;
43 
57  using DecreaseColorTemperatureCallback = std::function<bool(const String &, int &)>;
58 
62 
63  bool sendColorTemperatureEvent(int colorTemperature, String cause = "PHYSICAL_INTERACTION");
64 
65  protected:
66  bool handleColorTemperatureController(SinricProRequest &request);
67 
68  private : SinricProDeviceInterface *device;
69  ColorTemperatureCallback colorTemperatureCallback;
70  IncreaseColorTemperatureCallback increaseColorTemperatureCallback;
71  DecreaseColorTemperatureCallback decreaseColorTemperatureCallback;
72 };
73 
81 template <typename T>
83  colorTemperatureCallback = cb;
84 }
85 
93 template <typename T>
95  increaseColorTemperatureCallback = cb;
96 }
97 
105 template <typename T>
107  decreaseColorTemperatureCallback = cb;
108 }
109 
119 template <typename T>
120 bool ColorTemperatureController<T>::sendColorTemperatureEvent(int colorTemperature, String cause) {
121  T& device = static_cast<T&>(*this);
122 
123  DynamicJsonDocument eventMessage = device.prepareEvent("setColorTemperature", cause.c_str());
124  JsonObject event_value = eventMessage["payload"]["value"];
125  event_value["colorTemperature"] = colorTemperature;
126  return device.sendEvent(eventMessage);
127 }
128 
129 template <typename T>
131  T &device = static_cast<T &>(*this);
132 
133  bool success = false;
134 
135  if (colorTemperatureCallback && request.action == "setColorTemperature") {
136  int colorTemperature = request.request_value["colorTemperature"];
137  success = colorTemperatureCallback(device.deviceId, colorTemperature);
138  request.response_value["colorTemperature"] = colorTemperature;
139  }
140 
141  if (increaseColorTemperatureCallback && request.action == "increaseColorTemperature") {
142  int colorTemperature = 1;
143  success = increaseColorTemperatureCallback(device.deviceId, colorTemperature);
144  request.response_value["colorTemperature"] = colorTemperature;
145  }
146 
147  if (decreaseColorTemperatureCallback && request.action == "decreaseColorTemperature") {
148  int colorTemperature = -1;
149  success = decreaseColorTemperatureCallback(device.deviceId, colorTemperature);
150  request.response_value["colorTemperature"] = colorTemperature;
151  }
152 
153  return success;
154 }
155 
156 #endif
ColorTemperatureController.
Definition: ColorTemperatureController.h:11
void onDecreaseColorTemperature(DecreaseColorTemperatureCallback cb)
Set callback function for decreaseColorTemperature request.
Definition: ColorTemperatureController.h:106
void onIncreaseColorTemperature(IncreaseColorTemperatureCallback cb)
Set callback function for increaseColorTemperature request.
Definition: ColorTemperatureController.h:94
void onColorTemperature(ColorTemperatureCallback cb)
Set callback function for setColorTemperature request.
Definition: ColorTemperatureController.h:82
bool sendColorTemperatureEvent(int colorTemperature, String cause="PHYSICAL_INTERACTION")
Send setColorTemperature event to SinricPro Server indicating actual color temperature.
Definition: ColorTemperatureController.h:120
std::function< bool(const String &, int &)> ColorTemperatureCallback
Callback definition for onColorTemperature function.
Definition: ColorTemperatureController.h:27
std::function< bool(const String &, int &)> DecreaseColorTemperatureCallback
Callback definition for onDecreaseColorTemperature function.
Definition: ColorTemperatureController.h:57
std::function< bool(const String &, int &)> IncreaseColorTemperatureCallback
Callback definition for onIncreaseColorTemperature function.
Definition: ColorTemperatureController.h:42