1 #ifndef _THERMOSTATCONTROLLER_H_
2 #define _THERMOSTATCONTROLLER_H_
4 #include "SinricProRequest.h"
70 bool handleThermostatController(SinricProRequest &request);
87 thermostatModeCallback = cb;
99 targetTemperatureCallback = cb;
109 template <
typename T>
111 adjustTargetTemperatureCallback = cb;
123 template <
typename T>
125 T &device =
static_cast<T &
>(*this);
127 DynamicJsonDocument eventMessage = device.prepareEvent(
"setThermostatMode", cause.c_str());
128 JsonObject event_value = eventMessage[
"payload"][
"value"];
129 event_value[
"thermostatMode"] = thermostatMode;
130 return device.sendEvent(eventMessage);
142 template <
typename T>
144 T& device =
static_cast<T&
>(*this);
146 DynamicJsonDocument eventMessage = device.prepareEvent(
"targetTemperature", cause.c_str());
147 JsonObject event_value = eventMessage[
"payload"][
"value"];
148 event_value[
"temperature"] = roundf(temperature * 10) / 10.0;
149 return device.sendEvent(eventMessage);
152 template <
typename T>
154 T &device =
static_cast<T &
>(*this);
156 bool success =
false;
158 if (request.action ==
"targetTemperature" && targetTemperatureCallback) {
160 if (request.request_value.containsKey(
"temperature")) {
161 temperature = request.request_value[
"temperature"];
165 success = targetTemperatureCallback(device.deviceId, temperature);
166 request.response_value[
"temperature"] = temperature;
170 if (request.action ==
"adjustTargetTemperature" && adjustTargetTemperatureCallback) {
171 float temperatureDelta = request.request_value[
"temperature"];
172 success = adjustTargetTemperatureCallback(device.deviceId, temperatureDelta);
173 request.response_value[
"temperature"] = temperatureDelta;
177 if (request.action ==
"setThermostatMode" && thermostatModeCallback) {
178 String thermostatMode = request.request_value[
"thermostatMode"] |
"";
179 success = thermostatModeCallback(device.deviceId, thermostatMode);
180 request.response_value[
"thermostatMode"] = thermostatMode;
ThermostatController.
Definition: ThermostatController.h:11
bool sendTargetTemperatureEvent(float temperature, String cause="PHYSICAL_INTERACTION")
Send targetTemperature event to report target temperature change.
Definition: ThermostatController.h:143
void onTargetTemperature(SetTargetTemperatureCallback cb)
Set callback function for targetTemperature request.
Definition: ThermostatController.h:98
void onThermostatMode(ThermostatModeCallback cb)
Set callback function for setThermostatMode request.
Definition: ThermostatController.h:86
std::function< bool(const String &, float &)> SetTargetTemperatureCallback
Callback definition for onTargetTemperature function.
Definition: ThermostatController.h:44
std::function< bool(const String &, String &)> ThermostatModeCallback
Callback definition for onThermostatMode function.
Definition: ThermostatController.h:28
std::function< bool(const String &, float &)> AdjustTargetTemperatureCallback
Callback definition for onAdjustTargetTemperature function.
Definition: ThermostatController.h:60
void onAdjustTargetTemperature(AdjustTargetTemperatureCallback cb)
Set callback function for adjustTargetTemperature request.
Definition: ThermostatController.h:110
bool sendThermostatModeEvent(String thermostatMode, String cause="PHYSICAL_INTERACTION")
Send thermostatMode event to report a the new mode the device has been set to.
Definition: ThermostatController.h:124