8 #ifndef _SINRICWINDOWAC_H_
9 #define _SINRICWINDOWAC_H_
11 #include "SinricProDevice.h"
27 String getProductType() {
return SinricProDevice::getProductType() + String(
"AC_UNIT"); }
117 bool sendTemperatureEvent(
float temperature,
float humidity = -1, String cause =
"PERIODIC_POLL");
122 bool handleRequest(
const char* deviceId,
const char* action, JsonObject &request_value, JsonObject &response_value)
override;
132 SinricProWindowAC::SinricProWindowAC(
const char* deviceId,
unsigned long eventWaitTime) :
SinricProDevice(deviceId, eventWaitTime),
133 rangeValueCallback(nullptr),
134 adjustRangeValueCallback(nullptr),
135 targetTemperatureCallback(nullptr),
136 adjustTargetTemperatureCallback(nullptr),
137 thermostatModeCallback(nullptr) {}
139 bool SinricProWindowAC::handleRequest(
const char* deviceId,
const char* action, JsonObject &request_value, JsonObject &response_value) {
140 if (strcmp(deviceId, this->deviceId) != 0)
return false;
141 if (SinricProDevice::handleRequest(deviceId, action, request_value, response_value))
return true;
143 bool success =
false;
144 String actionString = String(action);
146 if (actionString ==
"setRangeValue" && rangeValueCallback) {
147 int rangeValue = request_value[
"rangeValue"] | 0;
148 success = rangeValueCallback(String(deviceId), rangeValue);
149 response_value[
"rangeValue"] = rangeValue;
153 if (actionString ==
"adjustRangeValue" && adjustRangeValueCallback) {
154 int rangeValueDelta = request_value[
"rangeValueDelta"] | 0;
155 success = adjustRangeValueCallback(String(deviceId), rangeValueDelta);
156 response_value[
"rangeValue"] = rangeValueDelta;
160 if (actionString ==
"targetTemperature" && targetTemperatureCallback) {
162 if (request_value.containsKey(
"temperature")) {
163 temperature = request_value[
"temperature"];
167 success = targetTemperatureCallback(String(deviceId), temperature);
168 response_value[
"temperature"] = temperature;
172 if (actionString ==
"adjustTargetTemperature" && adjustTargetTemperatureCallback) {
173 float temperatureDelta = request_value[
"temperature"];
174 success = adjustTargetTemperatureCallback(String(deviceId), temperatureDelta);
175 response_value[
"temperature"] = temperatureDelta;
179 if (actionString ==
"setThermostatMode" && thermostatModeCallback) {
180 String thermostatMode = request_value[
"thermostatMode"] |
"";
181 success = thermostatModeCallback(String(deviceId), thermostatMode);
182 response_value[
"thermostatMode"] = thermostatMode;
242 DynamicJsonDocument eventMessage = prepareEvent(deviceId,
"setRangeValue", cause.c_str());
243 JsonObject event_value = eventMessage[
"payload"][
"value"];
244 event_value[
"rangeValue"] = rangeValue;
245 return sendEvent(eventMessage);
259 DynamicJsonDocument eventMessage = prepareEvent(deviceId,
"currentTemperature", cause.c_str());
260 JsonObject event_value = eventMessage[
"payload"][
"value"];
261 event_value[
"humidity"] = humidity;
262 event_value[
"temperature"] = roundf(temperature * 10) / 10.0;
263 return sendEvent(eventMessage);
276 DynamicJsonDocument eventMessage = prepareEvent(deviceId,
"targetTemperature", cause.c_str());
277 JsonObject event_value = eventMessage[
"payload"][
"value"];
278 event_value[
"temperature"] = roundf(temperature*10) / 10.0;
279 return sendEvent(eventMessage);
292 DynamicJsonDocument eventMessage = prepareEvent(deviceId,
"setThermostatMode", cause.c_str());
293 JsonObject event_value = eventMessage[
"payload"][
"value"];
294 event_value[
"thermostatMode"] = thermostatMode;
295 return sendEvent(eventMessage);