8 #ifndef _SINRICWINDOWAC_H_
9 #define _SINRICWINDOWAC_H_
11 #include "SinricProDevice.h"
28 String getProductType() {
return SinricProDevice::getProductType() + String(
"AC_UNIT"); }
118 bool sendTemperatureEvent(
float temperature,
float humidity = -1, String cause =
"PERIODIC_POLL");
123 bool handleRequest(
const DeviceId &deviceId,
const char* action, JsonObject &request_value, JsonObject &response_value)
override;
133 SinricProWindowAC::SinricProWindowAC(
const DeviceId &deviceId) :
SinricProDevice(deviceId),
134 rangeValueCallback(nullptr),
135 adjustRangeValueCallback(nullptr),
136 targetTemperatureCallback(nullptr),
137 adjustTargetTemperatureCallback(nullptr),
138 thermostatModeCallback(nullptr) {}
140 bool SinricProWindowAC::handleRequest(
const DeviceId &deviceId,
const char* action, JsonObject &request_value, JsonObject &response_value) {
141 if (deviceId != this->deviceId)
return false;
142 if (SinricProDevice::handleRequest(deviceId, action, request_value, response_value))
return true;
144 bool success =
false;
145 String actionString = String(action);
147 if (actionString ==
"setRangeValue" && rangeValueCallback) {
148 int rangeValue = request_value[
"rangeValue"] | 0;
149 success = rangeValueCallback(deviceId, rangeValue);
150 response_value[
"rangeValue"] = rangeValue;
154 if (actionString ==
"adjustRangeValue" && adjustRangeValueCallback) {
155 int rangeValueDelta = request_value[
"rangeValueDelta"] | 0;
156 success = adjustRangeValueCallback(deviceId, rangeValueDelta);
157 response_value[
"rangeValue"] = rangeValueDelta;
161 if (actionString ==
"targetTemperature" && targetTemperatureCallback) {
163 if (request_value.containsKey(
"temperature")) {
164 temperature = request_value[
"temperature"];
168 success = targetTemperatureCallback(deviceId, temperature);
169 response_value[
"temperature"] = temperature;
173 if (actionString ==
"adjustTargetTemperature" && adjustTargetTemperatureCallback) {
174 float temperatureDelta = request_value[
"temperature"];
175 success = adjustTargetTemperatureCallback(deviceId, temperatureDelta);
176 response_value[
"temperature"] = temperatureDelta;
180 if (actionString ==
"setThermostatMode" && thermostatModeCallback) {
181 String thermostatMode = request_value[
"thermostatMode"] |
"";
182 success = thermostatModeCallback(deviceId, thermostatMode);
183 response_value[
"thermostatMode"] = thermostatMode;
243 DynamicJsonDocument eventMessage = prepareEvent(deviceId,
"setRangeValue", cause.c_str());
244 JsonObject event_value = eventMessage[
"payload"][
"value"];
245 event_value[
"rangeValue"] = rangeValue;
246 return sendEvent(eventMessage);
260 DynamicJsonDocument eventMessage = prepareEvent(deviceId,
"currentTemperature", cause.c_str());
261 JsonObject event_value = eventMessage[
"payload"][
"value"];
262 event_value[
"humidity"] = humidity;
263 event_value[
"temperature"] = roundf(temperature * 10) / 10.0;
264 return sendEvent(eventMessage);
277 DynamicJsonDocument eventMessage = prepareEvent(deviceId,
"targetTemperature", cause.c_str());
278 JsonObject event_value = eventMessage[
"payload"][
"value"];
279 event_value[
"temperature"] = roundf(temperature*10) / 10.0;
280 return sendEvent(eventMessage);
293 DynamicJsonDocument eventMessage = prepareEvent(deviceId,
"setThermostatMode", cause.c_str());
294 JsonObject event_value = eventMessage[
"payload"][
"value"];
295 event_value[
"thermostatMode"] = thermostatMode;
296 return sendEvent(eventMessage);