SinricPro Library
PowerStateController.h
1 #ifndef _POWERSTATECONTROLLER_H_
2 #define _POWERSTATECONTROLLER_H_
3 
4 #include "SinricProRequest.h"
5 
10 template <typename T>
12  public:
13  PowerStateController() { static_cast<T&>(*this).requestHandlers.push_back(std::bind(&PowerStateController<T>::handlePowerStateController, this, std::placeholders::_1));}
27  using PowerStateCallback = std::function<bool(const String &, bool &)>;
28 
30  bool sendPowerStateEvent(bool state, String cause = "PHYSICAL_INTERACTION");
31 
32  protected:
33  bool handlePowerStateController(SinricProRequest &request);
34 
35  private:
36  PowerStateCallback powerStateCallback;
37 };
38 
46 template <typename T>
48  powerStateCallback = cb;
49 }
50 
60 template <typename T>
61 bool PowerStateController<T>::sendPowerStateEvent(bool state, String cause) {
62  T& device = static_cast<T&>(*this);
63 
64  DynamicJsonDocument eventMessage = device.prepareEvent("setPowerState", cause.c_str());
65  JsonObject event_value = eventMessage["payload"]["value"];
66  event_value["state"] = state ? "On" : "Off";
67  return device.sendEvent(eventMessage);
68 }
69 
70 template <typename T>
71 bool PowerStateController<T>::handlePowerStateController(SinricProRequest &request) {
72  T &device = static_cast<T &>(*this);
73 
74  bool success = false;
75 
76  if (request.action == "setPowerState" && powerStateCallback) {
77  bool powerState = request.request_value["state"] == "On" ? true : false;
78 // success = powerStateCallback(device.deviceId, powerState);
79  success = powerStateCallback(device.deviceId, powerState);
80  request.response_value["state"] = powerState ? "On" : "Off";
81  return success;
82  }
83  return success;
84 }
85 
86 #endif
PowerStateController.
Definition: PowerStateController.h:11
void onPowerState(PowerStateCallback cb)
Set callback function for powerState request.
Definition: PowerStateController.h:47
bool sendPowerStateEvent(bool state, String cause="PHYSICAL_INTERACTION")
Send setPowerState event to SinricPro Server indicating actual power state.
Definition: PowerStateController.h:61
std::function< bool(const String &, bool &)> PowerStateCallback
Callback definition for onPowerState function.
Definition: PowerStateController.h:27