/**
* Copyright (c) 2010-2016 by the respective copyright holders.
*
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*/
package org.openhab.binding.ecobee.messages;
import java.lang.reflect.InvocationTargetException;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.apache.commons.beanutils.BeanUtils;
import org.apache.commons.beanutils.PropertyUtils;
import org.apache.commons.lang.builder.ToStringBuilder;
import org.codehaus.jackson.annotate.JsonCreator;
import org.codehaus.jackson.annotate.JsonIgnore;
import org.codehaus.jackson.annotate.JsonIgnoreProperties;
import org.codehaus.jackson.annotate.JsonProperty;
import org.codehaus.jackson.annotate.JsonValue;
import org.openhab.core.types.UnDefType;
/**
* The Thermostat Java Bean is the central piece of the ecobee API. All objects relate in one way or another to a real
* thermostat. The Thermostat class and its component classes define the real thermostat device.
*
* @see <a href="https://www.ecobee.com/home/developer/api/documentation/v1/objects/Thermostat.shtml">Thermostat</a>
* @author John Cocula
* @since 1.7.0
*/
@JsonIgnoreProperties(ignoreUnknown = true)
public class Thermostat extends AbstractMessagePart {
/**
* Numeric values whose value is not known are expressed as -5002. This is the numeric equivalent to a null value.
* The value of -5002 had been chosen as an unknown value because the representation of -500.2F is below absolute
* zero when representing temperatures.
*
* @see <a href="https://www.ecobee.com/home/developer/api/documentation/v1/technical-notes.shtml">Core Concepts</a>
*/
public static final int UNKNOWN_VALUE = -5002;
/**
* There is a concept of dates "before time began" which is equivalent to a NULL time and "end of time" which
* represents infinite durations (i.e. events). The API represents these as:
*
* Before Time Began Date: 2008-01-02
*
* End of Time Date: 2035-01-01
*
* @see <a href="https://www.ecobee.com/home/developer/api/documentation/v1/technical-notes.shtml">Core Concepts</a>
*/
public static final Date BEFORE_TIME_BEGAN = new GregorianCalendar(2008, 1, 2).getTime();
public static final Date END_OF_TIME = new GregorianCalendar(2035, 1, 1).getTime();
private String identifier;
private String name;
private String thermostatRev;
private Boolean isRegistered;
private String modelNumber;
private String brand;
private String features;
private Date lastModified;
private Date thermostatTime;
private Date utcTime;
private List<Alert> alerts;
private Settings settings;
private Runtime runtime;
private ExtendedRuntime extendedRuntime;
private Electricity electricity;
private List<Device> devices;
private Location location;
private Technician technician;
private Utility utility;
private Management management;
private Weather weather;
private List<Event> events;
private Program program;
private HouseDetails houseDetails;
private ThermostatOemCfg oemCfg;
private String equipmentStatus;
private NotificationSettings notificationSettings;
private ThermostatPrivacy privacy;
private Version version;
@JsonProperty("remoteSensors")
private List<RemoteSensor> remoteSensorList;
@JsonIgnore
private Map<String, RemoteSensor> remoteSensors;
public Thermostat(@JsonProperty("identifier") String identifier) {
this.identifier = identifier;
}
/**
* Return a JavaBean property by name.
*
* @param name
* the named property to return
* @return the named property's value
* @see BeanUtils#getProperty()
* @throws IllegalAccessException
* if the caller does not have access to the property accessor method
* @throws InvocationTargetException
* if the property accessor method throws an exception
* @throws NoSuchMethodException
* if the accessor method for this property cannot be found
*/
public Object getProperty(String name)
throws IllegalAccessException, InvocationTargetException, NoSuchMethodException {
return PropertyUtils.getProperty(this, name);
}
/**
* Set the specified property value, performing type conversions as required to conform to the type of the
* destination property. Nested beans are created if they are currently <code>null</code>.
*
* @param name
* property name (can be nested/indexed/mapped/combo)
* @param value
* value to be set
* @throws IllegalAccessException
* if the caller does not have access to the property accessor method
* @throws InvocationTargetException
* if the property accessor method throws an exception
*/
public void setProperty(String name, Object value) throws IllegalAccessException, InvocationTargetException {
if (name.startsWith("settings") && this.settings == null) {
this.settings = new Settings();
} else if (name.startsWith("location") && this.location == null) {
this.location = new Location();
} else if (name.startsWith("program") && this.program == null) {
this.program = new Program();
} else if (name.startsWith("houseDetails") && this.houseDetails == null) {
this.houseDetails = new HouseDetails();
} else if (name.startsWith("notificationSettings") && this.notificationSettings == null) {
this.notificationSettings = new NotificationSettings();
}
BeanUtils.setProperty(this, name, value);
}
/**
* @return the unique thermostat serial number.
*/
@JsonProperty("identifier")
public String getIdentifier() {
return this.identifier;
}
/**
* @return the user defined name for a thermostat
*/
@JsonProperty("name")
public String getName() {
return this.name;
}
/**
* @param name
* the user defined name for a thermostat
*/
@JsonProperty("name")
public void setName(String name) {
this.name = name;
}
/**
* @return current thermostat configuration revision
*/
@JsonProperty("thermostatRev")
public String getThermostatRev() {
return this.thermostatRev;
}
/**
* @return whether the user registered the thermostat
*/
@JsonProperty("isRegistered")
public Boolean getIsRegistered() {
return this.isRegistered;
}
/**
* @return the thermostat model number. Values: idtSmart, idtEms, siSmart, siEms
*/
@JsonProperty("modelNumber")
public String getModelNumber() {
return this.modelNumber;
}
/**
* @return the thermostat brand. As of this writing:
* <ul>
* <li>ecobee</li>
* <li>Bryant</li>
* <li>Daikin</li>
* <li>ClimateMaster</li>
* <li>Carrier</li>
* </ul>
*/
@JsonProperty("brand")
public String getBrand() {
return this.brand;
}
/**
* @return the comma-separated list of the thermostat's additional features, if any. As of this writing:
* <ul>
* <li>HomeKit</li>
* <li>ClimateTalk</li>
* <li>Serial Communicating</li>
* </ul>
*/
@JsonProperty("features")
public String getFeatures() {
return this.features;
}
/**
* @return the last modified date time for the thermostat configuration.
*/
@JsonProperty("lastModified")
public Date getLastModified() {
return this.lastModified;
}
/**
* @return the current time in the thermostat's time zone TODO time zone adjust (@watou)
* http://wiki.fasterxml.com/JacksonFAQDateHandling
*/
@JsonProperty("thermostatTime")
public Date getThermostatTime() {
return this.thermostatTime;
}
/**
* @return the current time in UTC
*/
@JsonProperty("utcTime")
public Date getUtcTime() {
return this.utcTime;
}
/**
* @return the list of Alert objects tied to the thermostat
*/
@JsonProperty("alerts")
public List<Alert> getAlerts() {
return this.alerts;
}
/**
* @return the thermostat Setting object linked to the thermostat
*/
@JsonProperty("settings")
public Settings getSettings() {
return this.settings;
}
/**
* @param settings
* the thermostat Setting object linked to the thermostat
*/
@JsonProperty("settings")
public void setSettings(Settings settings) {
this.settings = settings;
}
/**
* @return the Runtime state object for the thermostat
*/
@JsonProperty("runtime")
public Runtime getRuntime() {
return this.runtime;
}
/**
* @return the ExtendedRuntime object for the thermostat
*/
@JsonProperty("extendedRuntime")
public ExtendedRuntime getExtendedRuntime() {
return this.extendedRuntime;
}
/**
* @return the Electricity object for the thermostat
*/
@JsonProperty("electricity")
public Electricity getElectricity() {
return this.electricity;
}
/**
* @return the list of Device objects linked to the thermostat
*/
@JsonProperty("devices")
public List<Device> getDevices() {
return this.devices;
}
/**
* @return the Location object for the thermostat
*/
@JsonProperty("location")
public Location getLocation() {
return this.location;
}
/**
* @param location
* the Location object for the thermostat
*/
@JsonProperty("location")
public void setLocation(Location location) {
this.location = location;
}
/**
* @return the Technician object associated with the thermostat containing the technician contact information
*/
@JsonProperty("technician")
public Technician getTechnician() {
return this.technician;
}
/**
* @return the Utility object associated with the thermostat containing the utility company information
*/
@JsonProperty("utility")
public Utility getUtility() {
return this.utility;
}
/**
* @return the Management object associated with the thermostat containing the management company information
*/
@JsonProperty("management")
public Management getManagement() {
return this.management;
}
/**
* @return the Weather object linked to the thermostat representing the current weather on the thermostat
*/
@JsonProperty("weather")
public Weather getWeather() {
return this.weather;
}
/**
* @return the list of Event objects linked to the thermostat representing any events that are active or scheduled.
*/
@JsonProperty("events")
public List<Event> getEvents() {
return this.events;
}
/**
* @return the Program object for the thermostat
*/
@JsonProperty("program")
public Program getProgram() {
return this.program;
}
/**
* @param program
* the Program object for the thermostat
*/
@JsonProperty("program")
public void setProgram(Program program) {
this.program = program;
}
/**
* @return the HouseDetails object that contains the information about the house the thermostat is installed in
*/
@JsonProperty("houseDetails")
public HouseDetails getHouseDetails() {
return this.houseDetails;
}
/**
* @param houseDetails
* the HouseDetails object that contains the information about the house the thermostat is installed in
*/
@JsonProperty("houseDetails")
public void setHouseDetails(HouseDetails houseDetails) {
this.houseDetails = houseDetails;
}
/**
* @return the ThermostatOemCfg object that contains information about the OEM specific thermostat
*/
@JsonProperty("oemCfg")
public ThermostatOemCfg getOemCfg() {
return this.oemCfg;
}
/**
* @param oemCfg
* the ThermostatOemCfg object that contains information about the OEM specific thermostat
*/
@JsonProperty("oemCfg")
public void setOemCfg(ThermostatOemCfg oemCfg) {
this.oemCfg = oemCfg;
}
/**
* The status of all equipment controlled by this Thermostat. Only running equipment is listed in the CSV String. If
* no equipment is currently running an empty string is returned.
*
* Values: heatPump, heatPump2, heatPump3, compCool1, compCool2, auxHeat1, auxHeat2, auxHeat3, fan, humidifier,
* dehumidifier, ventilator, economizer, compHotWater, auxHotWater.
*
* @return the equipmentStatus
*/
@JsonProperty("equipmentStatus")
public String getEquipmentStatus() {
return this.equipmentStatus;
}
/**
* @return the NotificationSettings object containing the configuration for Alert and Reminders for the Thermostat
*/
@JsonProperty("notificationSettings")
public NotificationSettings getNotificationSettings() {
return this.notificationSettings;
}
/**
* @param notificationSettings
* the NotificationSettings object containing the configuration for Alert and Reminders for the
* Thermostat
*/
@JsonProperty("notificationSettings")
public void setNotificationSettings(NotificationSettings notificationSettings) {
this.notificationSettings = notificationSettings;
}
/**
* @return the Privacy object containing the privacy settings for the Thermostat. Note: access to this object is
* restricted to callers with implicit authentication.
*/
@JsonProperty("privacy")
public ThermostatPrivacy getPrivacy() {
return this.privacy;
}
/**
* @param privacy
* the Privacy object containing the privacy settings for the Thermostat. Note: access to this object is
* restricted to callers with implicit authentication.
*/
@JsonProperty("privacy")
public void setPrivacy(ThermostatPrivacy privacy) {
this.privacy = privacy;
}
/**
* @return the version information about the thermostat
*/
@JsonProperty("version")
public Version getVersion() {
return version;
}
/**
* @return the list of RemoteSensor objects for the Thermostat.
*/
@JsonProperty("remoteSensors")
public List<RemoteSensor> getRemoteSensorList() {
return this.remoteSensorList;
}
/**
* @return the name-based map of RemoteSensor objects.
*/
@JsonIgnore
public Map<String, RemoteSensor> getRemoteSensors() {
return this.remoteSensors;
}
/**
* @return the running event or null if there is none
*/
@JsonIgnore
public Event getRunningEvent() {
if (this.events != null) {
for (Event event : this.events) {
if (event.isRunning()) {
return event;
}
}
}
return null;
}
/**
* Create a named-based map of RemoteSensors from the list of RemoteSensors, for ease of access from beanutils.
*/
protected void sync() {
this.remoteSensors = new HashMap<String, RemoteSensor>();
if (this.remoteSensorList != null) {
for (RemoteSensor rs : this.remoteSensorList) {
rs.sync();
this.remoteSensors.put(rs.getName(), rs);
}
}
}
@Override
public String toString() {
final ToStringBuilder builder = createToStringBuilder();
builder.appendSuper(super.toString());
builder.append("identifier", this.identifier);
builder.append("name", this.name);
builder.append("thermostatRev", this.thermostatRev);
builder.append("isRegistered", this.isRegistered);
builder.append("modelNumber", this.modelNumber);
builder.append("lastModified", this.lastModified);
builder.append("thermostatTime", this.thermostatTime);
builder.append("utcTime", this.utcTime);
builder.append("alerts", this.alerts);
builder.append("settings", this.settings);
builder.append("runtime", this.runtime);
builder.append("extendedRuntime", this.extendedRuntime);
builder.append("electricity", this.electricity);
builder.append("devices", this.devices);
builder.append("location", this.location);
builder.append("technician", this.technician);
builder.append("utility", this.utility);
builder.append("management", this.management);
builder.append("weather", this.weather);
builder.append("events", this.events);
builder.append("program", this.program);
builder.append("houseDetails", this.houseDetails);
builder.append("oemCfg", this.oemCfg);
builder.append("equipmentStatus", this.equipmentStatus);
builder.append("notificationSettings", this.notificationSettings);
builder.append("privacy", this.privacy);
builder.append("version", this.version);
builder.append("remoteSensors", this.remoteSensorList);
return builder.toString();
}
/**
* The Alert object represents an alert generated either by a thermostat or user which requires user attention. It
* may be an error, or a reminder for a filter change. Alerts may not be modified directly but rather they must be
* acknowledged using the Acknowledge Function.
*
* @see <a href="https://www.ecobee.com/home/developer/api/documentation/v1/objects/Alert.shtml">Alert</a>
* @author John Cocula
*/
@JsonIgnoreProperties(ignoreUnknown = true)
public static class Alert extends AbstractMessagePart {
private String acknowledgeRef;
private String date;
private String time;
private String severity;
private String text;
private Integer alertNumber;
private String alertType;
@JsonProperty("isOperatorAlert")
private Boolean _isOperatorAlert;
private String reminder;
@JsonProperty("showIdt")
private Boolean _showIdt;
@JsonProperty("showWeb")
private Boolean _showWeb;
@JsonProperty("sendEmail")
private Boolean _sendEmail;
private String acknowledgement;
@JsonProperty("remindMeLater")
private Boolean _remindMeLater;
private String thermostatIdentifier;
private String notificationType;
/**
* @return the acknowledgeRef
*/
@JsonProperty("acknowledgeRef")
public String getAcknowledgeRef() {
return this.acknowledgeRef;
}
/**
* @return the date
*/
@JsonProperty("date")
public String getDate() {
return this.date;
}
/**
* @return the time
*/
@JsonProperty("time")
public String getTime() {
return this.time;
}
/**
* @return the severity
*/
@JsonProperty("severity")
public String getSeverity() {
return this.severity;
}
/**
* @return the text
*/
@JsonProperty("text")
public String getText() {
return this.text;
}
/**
* @return the alertNumber
*/
@JsonProperty("alertNumber")
public Integer getAlertNumber() {
return this.alertNumber;
}
/**
* @return the alertType
*/
@JsonProperty("alertType")
public String getAlertType() {
return this.alertType;
}
/**
* @return the isOperatorAlert
*/
@JsonProperty("isOperatorAlert")
public Boolean isOperatorAlert() {
return this._isOperatorAlert;
}
/**
* @return the reminder
*/
@JsonProperty("reminder")
public String getReminder() {
return this.reminder;
}
/**
* @return the showIdt
*/
@JsonProperty("showIdt")
public Boolean showIdt() {
return this._showIdt;
}
/**
* @return the showWeb
*/
@JsonProperty("showWeb")
public Boolean showWeb() {
return this._showWeb;
}
/**
* @return the sendEmail
*/
@JsonProperty("sendEmail")
public Boolean sendEmail() {
return this._sendEmail;
}
/**
* @return the acknowledgement
*/
@JsonProperty("acknowledgement")
public String getAcknowledgement() {
return this.acknowledgement;
}
/**
* @return the remindMeLater
*/
@JsonProperty("remindMeLater")
public Boolean remindMeLater() {
return this._remindMeLater;
}
/**
* @return the thermostatIdentifier
*/
@JsonProperty("thermostatIdentifier")
public String getThermostatIdentifier() {
return this.thermostatIdentifier;
}
/**
* @return the notificationType
*/
@JsonProperty("notificationType")
public String getNotificationType() {
return this.notificationType;
}
@Override
public String toString() {
final ToStringBuilder builder = createToStringBuilder();
builder.appendSuper(super.toString());
builder.append("acknowledgeRef", this.acknowledgeRef);
builder.append("date", this.date);
builder.append("time", this.time);
builder.append("severity", this.severity);
builder.append("text", this.text);
builder.append("alertNumber", this.alertNumber);
builder.append("alertType", this.alertType);
builder.append("isOperatorAlert", this._isOperatorAlert);
builder.append("reminder", this.reminder);
builder.append("showIdt", this._showIdt);
builder.append("showWeb", this._showWeb);
builder.append("sendEmail", this._sendEmail);
builder.append("acknowledgement", this.acknowledgement);
builder.append("remindMeLater", this._remindMeLater);
builder.append("thermostatIdentifier", this.thermostatIdentifier);
builder.append("notificationType", this.notificationType);
return builder.toString();
}
}
/**
* The Settings Java Bean contains all the configuration properties of the thermostat in which it is contained.
*
* @see <a href="https://www.ecobee.com/home/developer/api/documentation/v1/objects/Settings.shtml">Settings</a>
* @author John Cocula
*/
@JsonIgnoreProperties(ignoreUnknown = true)
public static class Settings extends AbstractMessagePart {
private HvacMode hvacMode;
private String lastServiceDate; // TODO Jackson 1.9 dates (@watou)
private Boolean serviceRemindMe;
private Integer monthsBetweenService;
private String remindMeDate; // TODO Jackson 1.9 dates (@watou)
private VentilatorMode vent;
private Integer ventilatorMinOnTime;
private Boolean serviceRemindTechnician;
private String eiLocation;
private Temperature coldTempAlert;
private Boolean coldTempAlertEnabled;
private Temperature hotTempAlert;
private Boolean hotTempAlertEnabled;
private Integer coolStages;
private Integer heatStages;
private Temperature maxSetBack;
private Temperature maxSetForward;
private Temperature quickSaveSetBack;
private Temperature quickSaveSetForward;
private Boolean hasHeatPump;
private Boolean hasForcedAir;
private Boolean hasBoiler;
private Boolean hasHumidifier;
private Boolean hasErv;
private Boolean hasHrv;
private Boolean condensationAvoid;
private Boolean useCelsius;
private Boolean useTimeFormat12;
private String locale;
private String humidity;
private String humidifierMode;
private Integer backlightOnIntensity;
private Integer backlightSleepIntensity;
private Integer backlightOffTime;
private Integer soundTickVolume;
private Integer soundAlertVolume;
private Integer compressorProtectionMinTime;
private Temperature compressorProtectionMinTemp;
private Temperature stage1HeatingDifferentialTemp;
private Temperature stage1CoolingDifferentialTemp;
private Integer stage1HeatingDissipationTime;
private Integer stage1CoolingDissipationTime;
private Boolean heatPumpReversalOnCool;
private Boolean fanControlRequired;
private Integer fanMinOnTime;
private Temperature heatCoolMinDelta;
private Temperature tempCorrection;
private String holdAction;
private Boolean heatPumpGroundWater;
private Boolean hasElectric;
private Boolean hasDehumidifier;
private String dehumidifierMode;
private Integer dehumidifierLevel;
private Boolean dehumidifyWithAC;
private Integer dehumidifyOvercoolOffset;
private Boolean autoHeatCoolFeatureEnabled;
private Boolean wifiOfflineAlert;
private Temperature heatMinTemp;
private Temperature heatMaxTemp;
private Temperature coolMinTemp;
private Temperature coolMaxTemp;
private Temperature heatRangeHigh;
private Temperature heatRangeLow;
private Temperature coolRangeHigh;
private Temperature coolRangeLow;
private String userAccessCode;
private Integer userAccessSetting;
private Temperature auxRuntimeAlert;
private Temperature auxOutdoorTempAlert;
private Temperature auxMaxOutdoorTemp;
private Boolean auxRuntimeAlertNotify;
private Boolean auxOutdoorTempAlertNotify;
private Boolean auxRuntimeAlertNotifyTechnician;
private Boolean auxOutdoorTempAlertNotifyTechnician;
private Boolean disablePreHeating;
private Boolean disablePreCooling;
private Boolean installerCodeRequired;
private String drAccept;
private Boolean isRentalProperty;
private Boolean useZoneController;
private Integer randomStartDelayCool;
private Integer randomStartDelayHeat;
private Integer humidityHighAlert;
private Integer humidityLowAlert;
private Boolean disableHeatPumpAlerts;
private Boolean disableAlertsOnIdt;
private Boolean humidityAlertNotify;
private Boolean humidityAlertNotifyTechnician;
private Boolean tempAlertNotify;
private Boolean tempAlertNotifyTechnician;
private Integer monthlyElectricityBillLimit;
private Boolean enableElectricityBillAlert;
private Boolean enableProjectedElectricityBillAlert;
private Integer electricityBillingDayOfMonth;
private Integer electricityBillCycleMonths;
private Integer electricityBillStartMonth;
private Integer ventilatorMinOnTimeHome;
private Integer ventilatorMinOnTimeAway;
private Boolean backlightOffDuringSleep;
private Boolean autoAway;
private Boolean smartCirculation;
private Boolean followMeComfort;
private String ventilatorType;
private Boolean isVentilatorTimerOn;
private Date ventilatorOffDateTime;
private Boolean hasUVFilter;
private Boolean coolingLockout;
private Boolean ventilatorFreeCooling;
private Boolean dehumidifyWhenHeating;
private String groupRef;
private String groupName;
private Integer groupSetting;
/**
* @return the current HVAC mode the thermostat is in. Values: auto, auxHeatOnly, cool, heat, off.
*/
@JsonProperty("hvacMode")
public HvacMode getHvacMode() {
return this.hvacMode;
}
/**
* @param hvacMode
* the current HVAC mode the thermostat is in. Values: auto, auxHeatOnly, cool, heat, off.
*/
@JsonProperty("hvacMode")
public void setHvacMode(HvacMode hvacMode) {
this.hvacMode = hvacMode;
}
/**
* @return the last service date of the HVAC equipment
*/
@JsonProperty("lastServiceDate")
public String getLastServiceDate() {
return this.lastServiceDate;
}
/**
* @param lastServiceDate
* the last service date of the HVAC equipment
*/
@JsonProperty("lastServiceDate")
public void setLastServiceDate(String lastServiceDate) {
this.lastServiceDate = lastServiceDate;
}
/**
* @return whether to send an alert when service is required again
*/
@JsonProperty("serviceRemindMe")
public Boolean getServiceRemindMe() {
return this.serviceRemindMe;
}
/**
* @param serviceRemindMe
* whether to send an alert when service is required again
*/
@JsonProperty("serviceRemindMe")
public void setServiceRemindMe(Boolean serviceRemindMe) {
this.serviceRemindMe = serviceRemindMe;
}
/**
* @return the user configured monthly interval between HVAC service reminders
*/
@JsonProperty("monthsBetweenService")
public Integer getMonthsBetweenService() {
return this.monthsBetweenService;
}
/**
* @param monthsBetweenService
* the user configured monthly interval between HVAC service reminders
*/
@JsonProperty("monthsBetweenService")
public void setMonthsBetweenService(Integer monthsBetweenService) {
this.monthsBetweenService = monthsBetweenService;
}
/**
* @return the date to be reminded about the next HVAC service date
*/
@JsonProperty("remindMeDate")
public String getRemindMeDate() {
return this.remindMeDate;
}
/**
* @param remindMeDate
* the date to be reminded about the next HVAC service date
*/
@JsonProperty("remindMeDate")
public void setRemindMeDate(String remindMeDate) {
this.remindMeDate = remindMeDate;
}
/**
* @return the ventilator mode. Values: auto, minontime, on, off
*/
@JsonProperty("vent")
public VentilatorMode getVent() {
return this.vent;
}
/**
* @param vent
* the ventilator mode. Values: auto, minontime, on, off
*/
@JsonProperty("vent")
public void setVent(VentilatorMode vent) {
this.vent = vent;
}
/**
* @return the minimum time in minutes the ventilator is configured to run. The thermostat will always guarantee
* that the ventilator runs for this minimum duration whenever engaged.
*/
@JsonProperty("ventilatorMinOnTime")
public Integer getVentilatorMinOnTime() {
return this.ventilatorMinOnTime;
}
/**
* @param ventilatorMinOnTime
* the minimum time in minutes the ventilator is configured to run. The thermostat will always
* guarantee that the ventilator runs for this minimum duration whenever engaged.
*/
@JsonProperty("ventilatorMinOnTime")
public void setVentilatorMinOnTime(Integer ventilatorMinOnTime) {
this.ventilatorMinOnTime = ventilatorMinOnTime;
}
/**
* @return whether the technician associated with this thermostat should receive the HVAC service reminders as
* well
*/
@JsonProperty("serviceRemindTechnician")
public Boolean getServiceRemindTechnician() {
return this.serviceRemindTechnician;
}
/**
* @param serviceRemindTechnician
* whether the technician associated with this thermostat should receive the HVAC service reminders
* as well
*/
@JsonProperty("serviceRemindTechnician")
public void setServiceRemindTechnician(Boolean serviceRemindTechnician) {
this.serviceRemindTechnician = serviceRemindTechnician;
}
/**
* @return a note about the physical location where the SMART or EMS Equipment Interface module is located
*/
@JsonProperty("eiLocation")
public String getEiLocation() {
return this.eiLocation;
}
/**
* @param eiLocation
* a note about the physical location where the SMART or EMS Equipment Interface module is located
*/
@JsonProperty("eiLocation")
public void setEiLocation(String eiLocation) {
this.eiLocation = eiLocation;
}
/**
* @return the temperature at which a cold temp alert is triggered
*/
@JsonProperty("coldTempAlert")
public Temperature getColdTempAlert() {
return this.coldTempAlert;
}
/**
* @param coldTempAlert
* the temperature at which a cold temp alert is triggered
*/
@JsonProperty("coldTempAlert")
public void setColdTempAlert(Temperature coldTempAlert) {
this.coldTempAlert = coldTempAlert;
}
/**
* @return whether cold temperature alerts are enabled
*/
@JsonProperty("coldTempAlertEnabled")
public Boolean getColdTempAlertEnabled() {
return this.coldTempAlertEnabled;
}
/**
* @param coldTempAlertEnabled
* whether cold temperature alerts are enabled
*/
@JsonProperty("coldTempAlertEnabled")
public void setColdTempAlertEnabled(Boolean coldTempAlertEnabled) {
this.coldTempAlertEnabled = coldTempAlertEnabled;
}
/**
* @return the temperature at which a hot temp alert is triggered
*/
@JsonProperty("hotTempAlert")
public Temperature getHotTempAlert() {
return this.hotTempAlert;
}
/**
* @param hotTempAlert
* the temperature at which a hot temp alert is triggered
*/
@JsonProperty("hotTempAlert")
public void setHotTempAlert(Temperature hotTempAlert) {
this.hotTempAlert = hotTempAlert;
}
/**
* @return whether hot temperature alerts are enabled
*/
@JsonProperty("hotTempAlertEnabled")
public Boolean getHotTempAlertEnabled() {
return this.hotTempAlertEnabled;
}
/**
* @param hotTempAlertEnabled
* whether hot temperature alerts are enabled
*/
@JsonProperty("hotTempAlertEnabled")
public void setHotTempAlertEnabled(Boolean hotTempAlertEnabled) {
this.hotTempAlertEnabled = hotTempAlertEnabled;
}
/**
* @return the number of cool stages the connected HVAC equipment supports
*/
@JsonProperty("coolStages")
public Integer getCoolStages() {
return this.coolStages;
}
/**
* @return the number of heat stages the connected HVAC equipment supports
*/
@JsonProperty("heatStages")
public Integer getHeatStages() {
return this.heatStages;
}
/**
* @return the maximum automated set point set back offset allowed in degrees
*/
@JsonProperty("maxSetBack")
public Temperature getMaxSetBack() {
return this.maxSetBack;
}
/**
* @param maxSetBack
* the maximum automated set point set back offset allowed in degrees
*/
@JsonProperty("maxSetBack")
public void setMaxSetBack(Temperature maxSetBack) {
this.maxSetBack = maxSetBack;
}
/**
* @return the maximum automated set point set forward offset allowed in degrees
*/
@JsonProperty("maxSetForward")
public Temperature getMaxSetForward() {
return this.maxSetForward;
}
/**
* @param maxSetForward
* the maximum automated set point set forward offset allowed in degrees
*/
@JsonProperty("maxSetForward")
public void setMaxSetForward(Temperature maxSetForward) {
this.maxSetForward = maxSetForward;
}
/**
* @return the set point set back offset, in degrees, configured for a quick save event
*/
@JsonProperty("quickSaveSetBack")
public Temperature getQuickSaveSetBack() {
return this.quickSaveSetBack;
}
/**
* @param quickSaveSetBack
* the set point set back offset, in degrees, configured for a quick save event
*/
@JsonProperty("quickSaveSetBack")
public void setQuickSaveSetBack(Temperature quickSaveSetBack) {
this.quickSaveSetBack = quickSaveSetBack;
}
/**
* @return the set point set forward offset, in degrees, configured for a quick save event
*/
@JsonProperty("quickSaveSetForward")
public Temperature getQuickSaveSetForward() {
return this.quickSaveSetForward;
}
/**
* @param quickSaveSetForward
* the set point set forward offset, in degrees, configured for a quick save event
*/
@JsonProperty("quickSaveSetForward")
public void setQuickSaveSetForward(Temperature quickSaveSetForward) {
this.quickSaveSetForward = quickSaveSetForward;
}
/**
* @return whether the thermostat is controlling a heat pump
*/
@JsonProperty("hasHeatPump")
public Boolean getHasHeatPump() {
return this.hasHeatPump;
}
/**
* @return whether the thermostat is controlling a forced air furnace
*/
@JsonProperty("hasForcedAir")
public Boolean getHasForcedAir() {
return this.hasForcedAir;
}
/**
* @return whether the thermostat is controlling a boiler
*/
@JsonProperty("hasBoiler")
public Boolean getHasBoiler() {
return this.hasBoiler;
}
/**
* @return whether the thermostat is controlling a humidifier
*/
@JsonProperty("hasHumidifier")
public Boolean getHasHumidifier() {
return this.hasHumidifier;
}
/**
* @return whether the thermostat is controlling an energy recovery ventilator
*/
@JsonProperty("hasErv")
public Boolean getHasErv() {
return this.hasErv;
}
/**
* @return whether the thermostat is controlling a heat recovery ventilator
*/
@JsonProperty("hasHrv")
public Boolean getHasHrv() {
return this.hasHrv;
}
/**
* @return whether the thermostat is in frost control mode
*/
@JsonProperty("condensationAvoid")
public Boolean getCondensationAvoid() {
return this.condensationAvoid;
}
/**
* @param condensationAvoid
* whether the thermostat is in frost control mode
*/
@JsonProperty("condensationAvoid")
public void setCondensationAvoid(Boolean condensationAvoid) {
this.condensationAvoid = condensationAvoid;
}
/**
* @return whether the thermostat is configured to report in degrees Celsius
*/
@JsonProperty("useCelsius")
public Boolean getUseCelsius() {
return this.useCelsius;
}
/**
* @param useCelsius
* whether the thermostat is configured to report in degrees Celsius
*/
@JsonProperty("useCelsius")
public void setUseCelsius(Boolean useCelsius) {
this.useCelsius = useCelsius;
}
/**
* @return whether the thermostat is using 12hr time format
*/
@JsonProperty("useTimeFormat12")
public Boolean getUseTimeFormat12() {
return this.useTimeFormat12;
}
/**
* @param useTimeFormat12
* whether the thermostat is using 12hr time format
*/
@JsonProperty("useTimeFormat12")
public void setUseTimeFormat12(Boolean useTimeFormat12) {
this.useTimeFormat12 = useTimeFormat12;
}
/**
* @return the locale
*/
@JsonProperty("locale")
public String getLocale() {
return this.locale;
}
/**
* @param locale
* the locale to set
*/
@JsonProperty("locale")
public void setLocale(String locale) {
this.locale = locale;
}
/**
* @return the minimum humidity level (in percent) set point for the humidifier
*/
@JsonProperty("humidity")
public String getHumidity() {
return this.humidity;
}
/**
* @param humidity
* the minimum humidity level (in percent) set point for the humidifier
*/
@JsonProperty("humidity")
public void setHumidity(String humidity) {
this.humidity = humidity;
}
/**
* @return the humidifier mode. Values: auto, manual, off
*/
@JsonProperty("humidifierMode")
public String getHumidifierMode() {
return this.humidifierMode;
}
/**
* @param humidifierMode
* the humidifier mode. Values: auto, manual, off
*/
@JsonProperty("humidifierMode")
public void setHumidifierMode(String humidifierMode) {
this.humidifierMode = humidifierMode;
}
/**
* @return the thermostat backlight intensity when on. A value between 1 and 10.
*/
@JsonProperty("backlightOnIntensity")
public Integer getBacklightOnIntensity() {
return this.backlightOnIntensity;
}
/**
* @param backlightOnIntensity
* the thermostat backlight intensity when on. A value between 1 and 10.
*/
@JsonProperty("backlightOnIntensity")
public void setBacklightOnIntensity(Integer backlightOnIntensity) {
this.backlightOnIntensity = backlightOnIntensity;
}
/**
* @return the thermostat backlight intensity when asleep. A value between 1 and 10.
*/
@JsonProperty("backlightSleepIntensity")
public Integer getBacklightSleepIntensity() {
return this.backlightSleepIntensity;
}
/**
* @param backlightSleepIntensity
* the thermostat backlight intensity when asleep. A value between 1 and 10.
*/
@JsonProperty("backlightSleepIntensity")
public void setBacklightSleepIntensity(Integer backlightSleepIntensity) {
this.backlightSleepIntensity = backlightSleepIntensity;
}
/**
* @return the time in seconds before the thermostat screen goes into sleep mode
*/
@JsonProperty("backlightOffTime")
public Integer getBacklightOffTime() {
return this.backlightOffTime;
}
/**
* @param backlightOffTime
* the time in seconds before the thermostat screen goes into sleep mode
*/
@JsonProperty("backlightOffTime")
public void setBacklightOffTime(Integer backlightOffTime) {
this.backlightOffTime = backlightOffTime;
}
/**
* @return the volume level for key presses on the thermostat. A value between 1 and 10.
*/
@JsonProperty("soundTickVolume")
public Integer getSoundTickVolume() {
return this.soundTickVolume;
}
/**
* @param soundTickVolume
* the volume level for key presses on the thermostat. A value between 1 and 10.
*/
@JsonProperty("soundTickVolume")
public void setSoundTickVolume(Integer soundTickVolume) {
this.soundTickVolume = soundTickVolume;
}
/**
* @return the volume level for alerts on the thermostat. A value between 1 and 10.
*/
@JsonProperty("soundAlertVolume")
public Integer getSoundAlertVolume() {
return this.soundAlertVolume;
}
/**
* @param soundAlertVolume
* the volume level for alerts on the thermostat. A value between 1 and 10.
*/
@JsonProperty("soundAlertVolume")
public void setSoundAlertVolume(Integer soundAlertVolume) {
this.soundAlertVolume = soundAlertVolume;
}
/**
* @return the compressorProtectionMinTime
*/
@JsonProperty("compressorProtectionMinTime")
public Integer getCompressorProtectionMinTime() {
return this.compressorProtectionMinTime;
}
/**
* @param compressorProtectionMinTime
* the compressorProtectionMinTime to set
*/
@JsonProperty("compressorProtectionMinTime")
public void setCompressorProtectionMinTime(Integer compressorProtectionMinTime) {
this.compressorProtectionMinTime = compressorProtectionMinTime;
}
/**
* @return the compressorProtectionMinTemp
*/
@JsonProperty("compressorProtectionMinTemp")
public Temperature getCompressorProtectionMinTemp() {
return this.compressorProtectionMinTemp;
}
/**
* @param compressorProtectionMinTemp
* the compressorProtectionMinTemp to set
*/
@JsonProperty("compressorProtectionMinTemp")
public void setCompressorProtectionMinTemp(Temperature compressorProtectionMinTemp) {
this.compressorProtectionMinTemp = compressorProtectionMinTemp;
}
/**
* @return the stage1HeatingDifferentialTemp
*/
@JsonProperty("stage1HeatingDifferentialTemp")
public Temperature getStage1HeatingDifferentialTemp() {
return this.stage1HeatingDifferentialTemp;
}
/**
* @param stage1HeatingDifferentialTemp
* the stage1HeatingDifferentialTemp to set
*/
@JsonProperty("stage1HeatingDifferentialTemp")
public void setStage1HeatingDifferentialTemp(Temperature stage1HeatingDifferentialTemp) {
this.stage1HeatingDifferentialTemp = stage1HeatingDifferentialTemp;
}
/**
* @return the stage1CoolingDifferentialTemp
*/
@JsonProperty("stage1CoolingDifferentialTemp")
public Temperature getStage1CoolingDifferentialTemp() {
return this.stage1CoolingDifferentialTemp;
}
/**
* @param stage1CoolingDifferentialTemp
* the stage1CoolingDifferentialTemp to set
*/
@JsonProperty("stage1CoolingDifferentialTemp")
public void setStage1CoolingDifferentialTemp(Temperature stage1CoolingDifferentialTemp) {
this.stage1CoolingDifferentialTemp = stage1CoolingDifferentialTemp;
}
/**
* @return the stage1HeatingDissipationTime
*/
@JsonProperty("stage1HeatingDissipationTime")
public Integer getStage1HeatingDissipationTime() {
return this.stage1HeatingDissipationTime;
}
/**
* @param stage1HeatingDissipationTime
* the stage1HeatingDissipationTime to set
*/
@JsonProperty("stage1HeatingDissipationTime")
public void setStage1HeatingDissipationTime(Integer stage1HeatingDissipationTime) {
this.stage1HeatingDissipationTime = stage1HeatingDissipationTime;
}
/**
* @return the stage1CoolingDissipationTime
*/
@JsonProperty("stage1CoolingDissipationTime")
public Integer getStage1CoolingDissipationTime() {
return this.stage1CoolingDissipationTime;
}
/**
* @param stage1CoolingDissipationTime
* the stage1CoolingDissipationTime to set
*/
@JsonProperty("stage1CoolingDissipationTime")
public void setStage1CoolingDissipationTime(Integer stage1CoolingDissipationTime) {
this.stage1CoolingDissipationTime = stage1CoolingDissipationTime;
}
/**
* @return the heatPumpReversalOnCool
*/
@JsonProperty("heatPumpReversalOnCool")
public Boolean getHeatPumpReversalOnCool() {
return this.heatPumpReversalOnCool;
}
/**
* @param heatPumpReversalOnCool
* the heatPumpReversalOnCool to set
*/
@JsonProperty("heatPumpReversalOnCool")
public void setHeatPumpReversalOnCool(Boolean heatPumpReversalOnCool) {
this.heatPumpReversalOnCool = heatPumpReversalOnCool;
}
/**
* @return the fanControlRequired
*/
@JsonProperty("fanControlRequired")
public Boolean getFanControlRequired() {
return this.fanControlRequired;
}
/**
* @param fanControlRequired
* the fanControlRequired to set
*/
@JsonProperty("fanControlRequired")
public void setFanControlRequired(Boolean fanControlRequired) {
this.fanControlRequired = fanControlRequired;
}
/**
* @return the minimum time, in minutes, to run the fan each hour. Value from 1 to 60.
*/
@JsonProperty("fanMinOnTime")
public Integer getFanMinOnTime() {
return this.fanMinOnTime;
}
/**
* @param fanMinOnTime
* the minimum time, in minutes, to run the fan each hour. Value from 1 to 60.
*/
@JsonProperty("fanMinOnTime")
public void setFanMinOnTime(Integer fanMinOnTime) {
this.fanMinOnTime = fanMinOnTime;
}
/**
* @return the minimum temperature difference between the heat and cool values. Used to ensure that when
* thermostat is in auto mode, the heat and cool values are separated by at least this value.
*/
@JsonProperty("heatCoolMinDelta")
public Temperature getHeatCoolMinDelta() {
return this.heatCoolMinDelta;
}
/**
* @param heatCoolMinDelta
* the minimum temperature difference between the heat and cool values. Used to ensure that when
* thermostat is in auto mode, the heat and cool values are separated by at least this value.
*/
@JsonProperty("heatCoolMinDelta")
public void setHeatCoolMinDelta(Temperature heatCoolMinDelta) {
this.heatCoolMinDelta = heatCoolMinDelta;
}
/**
* @return the tempCorrection
*/
@JsonProperty("tempCorrection")
public Temperature getTempCorrection() {
return this.tempCorrection;
}
/**
* @param tempCorrection
* the tempCorrection to set
*/
@JsonProperty("tempCorrection")
public void setTempCorrection(Temperature tempCorrection) {
this.tempCorrection = tempCorrection;
}
/**
* @return the default end time setting the thermostat applies to user temperature holds. Values
* useEndTime4hour, useEndTime2hour (EMS Only), nextPeriod, indefinite, askMe
*/
@JsonProperty("holdAction")
public String getHoldAction() {
return this.holdAction;
}
/**
* @param holdAction
* the default end time setting the thermostat applies to user temperature holds. Values
* useEndTime4hour, useEndTime2hour (EMS Only), nextPeriod, indefinite, askMe
*/
@JsonProperty("holdAction")
public void setHoldAction(String holdAction) {
this.holdAction = holdAction;
}
/**
* @return the heatPumpGroundWater
*/
@JsonProperty("heatPumpGroundWater")
public Boolean getHeatPumpGroundWater() {
return this.heatPumpGroundWater;
}
/**
* @return whether the thermostat is connected to an electric HVAC system
*/
@JsonProperty("hasElectric")
public Boolean getHasElectric() {
return this.hasElectric;
}
/**
* @return whether the thermostat is connected to a dehumidifier
*/
@JsonProperty("hasDehumidifier")
public Boolean getHasDehumidifier() {
return this.hasDehumidifier;
}
/**
* @return the dehumidifier mode. Values: on, off.
*/
@JsonProperty("dehumidifierMode")
public String getDehumidifierMode() {
return this.dehumidifierMode;
}
/**
* @param dehumidifierMode
* the dehumidifier mode. Values: on, off.
*/
@JsonProperty("dehumidifierMode")
public void setDehumidifierMode(String dehumidifierMode) {
this.dehumidifierMode = dehumidifierMode;
}
/**
* @return the dehumidification set point in percentage
*/
@JsonProperty("dehumidifierLevel")
public Integer getDehumidifierLevel() {
return this.dehumidifierLevel;
}
/**
* @param dehumidifierLevel
* the dehumidification set point in percentage
*/
@JsonProperty("dehumidifierLevel")
public void setDehumidifierLevel(Integer dehumidifierLevel) {
this.dehumidifierLevel = dehumidifierLevel;
}
/**
* @return whether the thermostat should use AC overcool to dehumidify.
*/
@JsonProperty("dehumidifyWithAC")
public Boolean getDehumidifyWithAC() {
return this.dehumidifyWithAC;
}
/**
* @param dehumidifyWithAC
* whether the thermostat should use AC overcool to dehumidify. When set to true a positive integer
* value must be supplied for dehumidifyOvercoolOffset otherwise an API validation exception will be
* thrown. TODO implement constraint here (@watou).
*/
@JsonProperty("dehumidifyWithAC")
public void setDehumidifyWithAC(Boolean dehumidifyWithAC) {
this.dehumidifyWithAC = dehumidifyWithAC;
}
/**
* @return whether the thermostat should use AC overcool to dehumidify and what that temperature offset should
* be. A value of 0 means this feature is disabled and dehumidifyWithAC will be set to false. Value
* represents the value in F to subtract from the current set point.
*/
@JsonProperty("dehumidifyOvercoolOffset")
public Integer getDehumidifyOvercoolOffset() {
return this.dehumidifyOvercoolOffset;
}
/**
* @param dehumidifyOvercoolOffset
* whether the thermostat should use AC overcool to dehumidify and what that temperature offset
* should be. A value of 0 means this feature is disabled and dehumidifyWithAC will be set to false.
* Value represents the value in F to subtract from the current set point. Values should be in the
* range 0 - 50 and be divisible by 5.
*/
@JsonProperty("dehumidifyOvercoolOffset")
public void setDehumidifyOvercoolOffset(Integer dehumidifyOvercoolOffset) {
this.dehumidifyOvercoolOffset = dehumidifyOvercoolOffset;
}
/**
* @return the autoHeatCoolFeatureEnabled
*/
@JsonProperty("autoHeatCoolFeatureEnabled")
public Boolean getAutoHeatCoolFeatureEnabled() {
return this.autoHeatCoolFeatureEnabled;
}
/**
* @param autoHeatCoolFeatureEnabled
* the autoHeatCoolFeatureEnabled to set
*/
@JsonProperty("autoHeatCoolFeatureEnabled")
public void setAutoHeatCoolFeatureEnabled(Boolean autoHeatCoolFeatureEnabled) {
this.autoHeatCoolFeatureEnabled = autoHeatCoolFeatureEnabled;
}
/**
* @return the wifiOfflineAlert
*/
@JsonProperty("wifiOfflineAlert")
public Boolean getWifiOfflineAlert() {
return this.wifiOfflineAlert;
}
/**
* @param wifiOfflineAlert
* the wifiOfflineAlert to set
*/
@JsonProperty("wifiOfflineAlert")
public void setWifiOfflineAlert(Boolean wifiOfflineAlert) {
this.wifiOfflineAlert = wifiOfflineAlert;
}
/**
* @return the minimum heat set point allowed by the thermostat firmware
*/
@JsonProperty("heatMinTemp")
public Temperature getHeatMinTemp() {
return this.heatMinTemp;
}
/**
* @return the maximum heat set point allowed by the thermostat firmware
*/
@JsonProperty("heatMaxTemp")
public Temperature getHeatMaxTemp() {
return this.heatMaxTemp;
}
/**
* @return the minimum cool set point allowed by the thermostat firmware
*/
@JsonProperty("coolMinTemp")
public Temperature getCoolMinTemp() {
return this.coolMinTemp;
}
/**
* @return the maximum cool set point allowed by the thermostat firmware
*/
@JsonProperty("coolMaxTemp")
public Temperature getCoolMaxTemp() {
return this.coolMaxTemp;
}
/**
* @return the maximum heat set point configured by the user's preferences
*/
@JsonProperty("heatRangeHigh")
public Temperature getHeatRangeHigh() {
return this.heatRangeHigh;
}
/**
* @param heatRangeHigh
* the maximum heat set point configured by the user's preferences
*/
@JsonProperty("heatRangeHigh")
public void setHeatRangeHigh(Temperature heatRangeHigh) {
this.heatRangeHigh = heatRangeHigh;
}
/**
* @return the minimum heat set point configured by the user's preferences
*/
@JsonProperty("heatRangeLow")
public Temperature getHeatRangeLow() {
return this.heatRangeLow;
}
/**
* @param heatRangeLow
* the minimum heat set point configured by the user's preferences
*/
@JsonProperty("heatRangeLow")
public void setHeatRangeLow(Temperature heatRangeLow) {
this.heatRangeLow = heatRangeLow;
}
/**
* @return the maximum cool set point configured by the user's preferences
*/
@JsonProperty("coolRangeHigh")
public Temperature getCoolRangeHigh() {
return this.coolRangeHigh;
}
/**
* @param coolRangeHigh
* the maximum cool set point configured by the user's preferences
*/
@JsonProperty("coolRangeHigh")
public void setCoolRangeHigh(Temperature coolRangeHigh) {
this.coolRangeHigh = coolRangeHigh;
}
/**
* @return the minimum heat set point configured by the user's preferences
*/
@JsonProperty("coolRangeLow")
public Temperature getCoolRangeLow() {
return this.coolRangeLow;
}
/**
* @param coolRangeLow
* the minimum heat set point configured by the user's preferences
*/
@JsonProperty("coolRangeLow")
public void setCoolRangeLow(Temperature coolRangeLow) {
this.coolRangeLow = coolRangeLow;
}
/**
* @return the userAccessCode
*/
@JsonProperty("userAccessCode")
public String getUserAccessCode() {
return this.userAccessCode;
}
/**
* @param userAccessCode
* the userAccessCode to set
*/
@JsonProperty("userAccessCode")
public void setUserAccessCode(String userAccessCode) {
this.userAccessCode = userAccessCode;
}
/**
* @return the userAccessSetting
*/
@JsonProperty("userAccessSetting")
public Integer getUserAccessSetting() {
return this.userAccessSetting;
}
/**
* @param userAccessSetting
* the userAccessSetting to set
*/
@JsonProperty("userAccessSetting")
public void setUserAccessSetting(Integer userAccessSetting) {
this.userAccessSetting = userAccessSetting;
}
/**
* @return the auxRuntimeAlert
*/
@JsonProperty("auxRuntimeAlert")
public Temperature getAuxRuntimeAlert() {
return this.auxRuntimeAlert;
}
/**
* @param auxRuntimeAlert
* the auxRuntimeAlert to set
*/
@JsonProperty("auxRuntimeAlert")
public void setAuxRuntimeAlert(Temperature auxRuntimeAlert) {
this.auxRuntimeAlert = auxRuntimeAlert;
}
/**
* @return the auxOutdoorTempAlert
*/
@JsonProperty("auxOutdoorTempAlert")
public Temperature getAuxOutdoorTempAlert() {
return this.auxOutdoorTempAlert;
}
/**
* @param auxOutdoorTempAlert
* the auxOutdoorTempAlert to set
*/
@JsonProperty("auxOutdoorTempAlert")
public void setAuxOutdoorTempAlert(Temperature auxOutdoorTempAlert) {
this.auxOutdoorTempAlert = auxOutdoorTempAlert;
}
/**
* @return the auxMaxOutdoorTemp
*/
@JsonProperty("auxMaxOutdoorTemp")
public Temperature getAuxMaxOutdoorTemp() {
return this.auxMaxOutdoorTemp;
}
/**
* @param auxMaxOutdoorTemp
* the auxMaxOutdoorTemp to set
*/
@JsonProperty("auxMaxOutdoorTemp")
public void setAuxMaxOutdoorTemp(Temperature auxMaxOutdoorTemp) {
this.auxMaxOutdoorTemp = auxMaxOutdoorTemp;
}
/**
* @return the auxRuntimeAlertNotify
*/
@JsonProperty("auxRuntimeAlertNotify")
public Boolean getAuxRuntimeAlertNotify() {
return this.auxRuntimeAlertNotify;
}
/**
* @param auxRuntimeAlertNotify
* the auxRuntimeAlertNotify to set
*/
@JsonProperty("auxRuntimeAlertNotify")
public void setAuxRuntimeAlertNotify(Boolean auxRuntimeAlertNotify) {
this.auxRuntimeAlertNotify = auxRuntimeAlertNotify;
}
/**
* @return the auxOutdoorTempAlertNotify
*/
@JsonProperty("auxOutdoorTempAlertNotify")
public Boolean getAuxOutdoorTempAlertNotify() {
return this.auxOutdoorTempAlertNotify;
}
/**
* @param auxOutdoorTempAlertNotify
* the auxOutdoorTempAlertNotify to set
*/
@JsonProperty("auxOutdoorTempAlertNotify")
public void setAuxOutdoorTempAlertNotify(Boolean auxOutdoorTempAlertNotify) {
this.auxOutdoorTempAlertNotify = auxOutdoorTempAlertNotify;
}
/**
* @return the auxRuntimeAlertNotifyTechnician
*/
@JsonProperty("auxRuntimeAlertNotifyTechnician")
public Boolean getAuxRuntimeAlertNotifyTechnician() {
return this.auxRuntimeAlertNotifyTechnician;
}
/**
* @param auxRuntimeAlertNotifyTechnician
* the auxRuntimeAlertNotifyTechnician to set
*/
@JsonProperty("auxRuntimeAlertNotifyTechnician")
public void setAuxRuntimeAlertNotifyTechnician(Boolean auxRuntimeAlertNotifyTechnician) {
this.auxRuntimeAlertNotifyTechnician = auxRuntimeAlertNotifyTechnician;
}
/**
* @return the auxOutdoorTempAlertNotifyTechnician
*/
@JsonProperty("auxOutdoorTempAlertNotifyTechnician")
public Boolean getAuxOutdoorTempAlertNotifyTechnician() {
return this.auxOutdoorTempAlertNotifyTechnician;
}
/**
* @param auxOutdoorTempAlertNotifyTechnician
* the auxOutdoorTempAlertNotifyTechnician to set
*/
@JsonProperty("auxOutdoorTempAlertNotifyTechnician")
public void setAuxOutdoorTempAlertNotifyTechnician(Boolean auxOutdoorTempAlertNotifyTechnician) {
this.auxOutdoorTempAlertNotifyTechnician = auxOutdoorTempAlertNotifyTechnician;
}
/**
* @return whether the thermostat should use pre heating to reach the set point on time
*/
@JsonProperty("disablePreHeating")
public Boolean getDisablePreHeating() {
return this.disablePreHeating;
}
/**
* @param disablePreHeating
* whether the thermostat should use pre heating to reach the set point on time
*/
@JsonProperty("disablePreHeating")
public void setDisablePreHeating(Boolean disablePreHeating) {
this.disablePreHeating = disablePreHeating;
}
/**
* @return whether the thermostat should use pre cooling to reach the set point on time
*/
@JsonProperty("disablePreCooling")
public Boolean getDisablePreCooling() {
return this.disablePreCooling;
}
/**
* @param disablePreCooling
* whether the thermostat should use pre cooling to reach the set point on time
*/
@JsonProperty("disablePreCooling")
public void setDisablePreCooling(Boolean disablePreCooling) {
this.disablePreCooling = disablePreCooling;
}
/**
* @return whether an installer code is required
*/
@JsonProperty("installerCodeRequired")
public Boolean getInstallerCodeRequired() {
return this.installerCodeRequired;
}
/**
* @param installerCodeRequired
* whether an installer code is required
*/
@JsonProperty("installerCodeRequired")
public void setInstallerCodeRequired(Boolean installerCodeRequired) {
this.installerCodeRequired = installerCodeRequired;
}
/**
* @return whether Demand Response requests are accepted by this thermostat. Possible values are: always, askMe,
* customerSelect, defaultAccept, defaultDecline, never.
*/
@JsonProperty("drAccept")
public String getDrAccept() {
return this.drAccept;
}
/**
* @param drAccept
* whether Demand Response requests are accepted by this thermostat. Possible values are: always,
* askMe, customerSelect, defaultAccept, defaultDecline, never.
*/
@JsonProperty("drAccept")
public void setDrAccept(String drAccept) {
this.drAccept = drAccept;
}
/**
* @return whether the property is a rental or not
*/
@JsonProperty("isRentalProperty")
public Boolean getIsRentalProperty() {
return this.isRentalProperty;
}
/**
* @param isRentalProperty
* whether the property is a rental or not
*/
@JsonProperty("isRentalProperty")
public void setIsRentalProperty(Boolean isRentalProperty) {
this.isRentalProperty = isRentalProperty;
}
/**
* @return whether to use a zone controller or not
*/
@JsonProperty("useZoneController")
public Boolean getUseZoneController() {
return this.useZoneController;
}
/**
* @param useZoneController
* whether to use a zone controller or not
*/
@JsonProperty("useZoneController")
public void setUseZoneController(Boolean useZoneController) {
this.useZoneController = useZoneController;
}
/**
* @return whether random start delay is enabled for cooling
*/
@JsonProperty("randomStartDelayCool")
public Integer getRandomStartDelayCool() {
return this.randomStartDelayCool;
}
/**
* @param randomStartDelayCool
* whether random start delay is enabled for cooling
*/
@JsonProperty("randomStartDelayCool")
public void setRandomStartDelayCool(Integer randomStartDelayCool) {
this.randomStartDelayCool = randomStartDelayCool;
}
/**
* @return whether random start delay is enabled for heating
*/
@JsonProperty("randomStartDelayHeat")
public Integer getRandomStartDelayHeat() {
return this.randomStartDelayHeat;
}
/**
* @param randomStartDelayHeat
* whether random start delay is enabled for heating
*/
@JsonProperty("randomStartDelayHeat")
public void setRandomStartDelayHeat(Integer randomStartDelayHeat) {
this.randomStartDelayHeat = randomStartDelayHeat;
}
/**
* @return the humidity level to trigger a high humidity alert
*/
@JsonProperty("humidityHighAlert")
public Integer getHumidityHighAlert() {
return this.humidityHighAlert;
}
/**
* @param humidityHighAlert
* the humidity level to trigger a high humidity alert
*/
@JsonProperty("humidityHighAlert")
public void setHumidityHighAlert(Integer humidityHighAlert) {
this.humidityHighAlert = humidityHighAlert;
}
/**
* @return the humidity level to trigger a low humidity alert
*/
@JsonProperty("humidityLowAlert")
public Integer getHumidityLowAlert() {
return this.humidityLowAlert;
}
/**
* @param humidityLowAlert
* the humidity level to trigger a low humidity alert
*/
@JsonProperty("humidityLowAlert")
public void setHumidityLowAlert(Integer humidityLowAlert) {
this.humidityLowAlert = humidityLowAlert;
}
/**
* @return whether heat pump alerts are disabled
*/
@JsonProperty("disableHeatPumpAlerts")
public Boolean getDisableHeatPumpAlerts() {
return this.disableHeatPumpAlerts;
}
/**
* @param disableHeatPumpAlerts
* whether heat pump alerts are disabled
*/
@JsonProperty("disableHeatPumpAlerts")
public void setDisableHeatPumpAlerts(Boolean disableHeatPumpAlerts) {
this.disableHeatPumpAlerts = disableHeatPumpAlerts;
}
/**
* @return whether alerts are disabled from showing on the thermostat
*/
@JsonProperty("disableAlertsOnIdt")
public Boolean getDisableAlertsOnIdt() {
return this.disableAlertsOnIdt;
}
/**
* @param disableAlertsOnIdt
* whether alerts are disabled from showing on the thermostat
*/
@JsonProperty("disableAlertsOnIdt")
public void setDisableAlertsOnIdt(Boolean disableAlertsOnIdt) {
this.disableAlertsOnIdt = disableAlertsOnIdt;
}
/**
* @return whether humidification alerts are enabled to the thermostat owner
*/
@JsonProperty("humidityAlertNotify")
public Boolean getHumidityAlertNotify() {
return this.humidityAlertNotify;
}
/**
* @param humidityAlertNotify
* whether humidification alerts are enabled to the thermostat owner
*/
@JsonProperty("humidityAlertNotify")
public void setHumidityAlertNotify(Boolean humidityAlertNotify) {
this.humidityAlertNotify = humidityAlertNotify;
}
/**
* @return whether humidification alerts are enabled to the technician associated with the thermostat
*/
@JsonProperty("humidityAlertNotifyTechnician")
public Boolean getHumidityAlertNotifyTechnician() {
return this.humidityAlertNotifyTechnician;
}
/**
* @param humidityAlertNotifyTechnician
* whether humidification alerts are enabled to the technician associated with the thermostat
*/
@JsonProperty("humidityAlertNotifyTechnician")
public void setHumidityAlertNotifyTechnician(Boolean humidityAlertNotifyTechnician) {
this.humidityAlertNotifyTechnician = humidityAlertNotifyTechnician;
}
/**
* @return whether temperature alerts are enabled to the thermostat owner
*/
@JsonProperty("tempAlertNotify")
public Boolean getTempAlertNotify() {
return this.tempAlertNotify;
}
/**
* @param tempAlertNotify
* whether temperature alerts are enabled to the thermostat owner
*/
@JsonProperty("tempAlertNotify")
public void setTempAlertNotify(Boolean tempAlertNotify) {
this.tempAlertNotify = tempAlertNotify;
}
/**
* @return hether temperature alerts are enabled to the technician associated with the thermostat
*/
@JsonProperty("tempAlertNotifyTechnician")
public Boolean getTempAlertNotifyTechnician() {
return this.tempAlertNotifyTechnician;
}
/**
* @param tempAlertNotifyTechnician
* hether temperature alerts are enabled to the technician associated with the thermostat
*/
@JsonProperty("tempAlertNotifyTechnician")
public void setTempAlertNotifyTechnician(Boolean tempAlertNotifyTechnician) {
this.tempAlertNotifyTechnician = tempAlertNotifyTechnician;
}
/**
* @return the dollar amount the owner specifies for their desired maximum electricity bill
*/
@JsonProperty("monthlyElectricityBillLimit")
public Integer getMonthlyElectricityBillLimit() {
return this.monthlyElectricityBillLimit;
}
/**
* @param monthlyElectricityBillLimit
* the dollar amount the owner specifies for their desired maximum electricity bill
*/
@JsonProperty("monthlyElectricityBillLimit")
public void setMonthlyElectricityBillLimit(Integer monthlyElectricityBillLimit) {
this.monthlyElectricityBillLimit = monthlyElectricityBillLimit;
}
/**
* @return whether electricity bill alerts are enabled
*/
@JsonProperty("enableElectricityBillAlert")
public Boolean getEnableElectricityBillAlert() {
return this.enableElectricityBillAlert;
}
/**
* @param enableElectricityBillAlert
* whether electricity bill alerts are enabled
*/
@JsonProperty("enableElectricityBillAlert")
public void setEnableElectricityBillAlert(Boolean enableElectricityBillAlert) {
this.enableElectricityBillAlert = enableElectricityBillAlert;
}
/**
* @return whether electricity bill projection alerts are enabled
*/
@JsonProperty("enableProjectedElectricityBillAlert")
public Boolean getEnableProjectedElectricityBillAlert() {
return this.enableProjectedElectricityBillAlert;
}
/**
* @param enableProjectedElectricityBillAlert
* whether electricity bill projection alerts are enabled
*/
@JsonProperty("enableProjectedElectricityBillAlert")
public void setEnableProjectedElectricityBillAlert(Boolean enableProjectedElectricityBillAlert) {
this.enableProjectedElectricityBillAlert = enableProjectedElectricityBillAlert;
}
/**
* @return the electricityBillingDayOfMonth
*/
@JsonProperty("electricityBillingDayOfMonth")
public Integer getElectricityBillingDayOfMonth() {
return this.electricityBillingDayOfMonth;
}
/**
* @param electricityBillingDayOfMonth
* the electricityBillingDayOfMonth to set
*/
@JsonProperty("electricityBillingDayOfMonth")
public void setElectricityBillingDayOfMonth(Integer electricityBillingDayOfMonth) {
this.electricityBillingDayOfMonth = electricityBillingDayOfMonth;
}
/**
* @return the owner's billing cycle duration in months
*/
@JsonProperty("electricityBillCycleMonths")
public Integer getElectricityBillCycleMonths() {
return this.electricityBillCycleMonths;
}
/**
* @param electricityBillCycleMonths
* the owner's billing cycle duration in months
*/
@JsonProperty("electricityBillCycleMonths")
public void setElectricityBillCycleMonths(Integer electricityBillCycleMonths) {
this.electricityBillCycleMonths = electricityBillCycleMonths;
}
/**
* @return the annual start month of the owner's billing cycle
*/
@JsonProperty("electricityBillStartMonth")
public Integer getElectricityBillStartMonth() {
return this.electricityBillStartMonth;
}
/**
* @param electricityBillStartMonth
* the annual start month of the owner's billing cycle
*/
@JsonProperty("electricityBillStartMonth")
public void setElectricityBillStartMonth(Integer electricityBillStartMonth) {
this.electricityBillStartMonth = electricityBillStartMonth;
}
/**
* @return the number of minutes to run ventilator per hour when home
*/
@JsonProperty("ventilatorMinOnTimeHome")
public Integer getVentilatorMinOnTimeHome() {
return this.ventilatorMinOnTimeHome;
}
/**
* @param ventilatorMinOnTimeHome
* the number of minutes to run ventilator per hour when home
*/
@JsonProperty("ventilatorMinOnTimeHome")
public void setVentilatorMinOnTimeHome(Integer ventilatorMinOnTimeHome) {
this.ventilatorMinOnTimeHome = ventilatorMinOnTimeHome;
}
/**
* @return the number of minutes to run ventilator per hour when away
*/
@JsonProperty("ventilatorMinOnTimeAway")
public Integer getVentilatorMinOnTimeAway() {
return this.ventilatorMinOnTimeAway;
}
/**
* @param ventilatorMinOnTimeAway
* the number of minutes to run ventilator per hour when away
*/
@JsonProperty("ventilatorMinOnTimeAway")
public void setVentilatorMinOnTimeAway(Integer ventilatorMinOnTimeAway) {
this.ventilatorMinOnTimeAway = ventilatorMinOnTimeAway;
}
/**
* @return whether or not to turn the backlight off during sleep
*/
@JsonProperty("backlightOffDuringSleep")
public Boolean getBacklightOffDuringSleep() {
return this.backlightOffDuringSleep;
}
/**
* @param backlightOffDuringSleep
* whether or not to turn the backlight off during sleep
*/
@JsonProperty("backlightOffDuringSleep")
public void setBacklightOffDuringSleep(Boolean backlightOffDuringSleep) {
this.backlightOffDuringSleep = backlightOffDuringSleep;
}
/**
* @return when set to true if no occupancy motion detected thermostat will go into indefinite away hold, until
* either the user presses resume schedule or motion is detected.
*/
@JsonProperty("autoAway")
public Boolean getAutoAway() {
return this.autoAway;
}
/**
* @return when set to true if a larger than normal delta is found between sensors the fan will be engaged for
* 15min/hour.
*/
@JsonProperty("smartCirculation")
public Boolean getSmartCirculation() {
return this.smartCirculation;
}
/**
* @param smartCirculation
* when set to true if a larger than normal delta is found between sensors the fan will be engaged
* for 15min/hour.
*/
@JsonProperty("smartCirculation")
public void setSmartCirculation(Boolean smartCirculation) {
this.smartCirculation = smartCirculation;
}
/**
* @return true if a sensor has detected presence for more than 10 minutes then include that sensor in temp
* average. If no activity has been seen on a sensor for more than 1 hour then remove this sensor from
* temperature average.
*/
@JsonProperty("followMeComfort")
public Boolean getFollowMeComfort() {
return this.followMeComfort;
}
/**
* @param followMeComfort
* set to true if a sensor has detected presence for more than 10 minutes then include that sensor in
* temp average. If no activity has been seen on a sensor for more than 1 hour then remove this
* sensor from temperature average.
*/
@JsonProperty("followMeComfort")
public void setFollowMeComfort(Boolean followMeComfort) {
this.followMeComfort = followMeComfort;
}
/**
* @return the type of ventilator present for the Thermostat. The possible values are none, ventilator, hrv, and
* erv.
*/
@JsonProperty("ventilatorType")
public String getVentilatorType() {
return this.ventilatorType;
}
/**
* @return whether the ventilator timer is on or off. The default value is false. If set to true the
* ventilatorOffDateTime is set to now() + 20 minutes. If set to false the ventilatorOffDateTime is set
* to its default value.
*/
@JsonProperty("isVentilatorTimerOn")
public Boolean getIsVentilatorTimerOn() {
return this.isVentilatorTimerOn;
}
/**
* @param isVentilatorTimerOn
* whether the ventilator timer is on or off. The default value is false. If set to true the
* ventilatorOffDateTime is set to now() + 20 minutes. If set to false the ventilatorOffDateTime is
* set to its default value.
*/
@JsonProperty("isVentilatorTimerOn")
public void setIsVentilatorTimerOn(Boolean isVentilatorTimerOn) {
this.isVentilatorTimerOn = isVentilatorTimerOn;
}
/**
* @return the date and time the ventilator will run until. The default value is 2014-01-01 00:00:00.
*/
@JsonProperty("ventilatorOffDateTime")
public Date getVentilatorOffDateTime() {
return this.ventilatorOffDateTime;
}
/**
* @return whether the HVAC system has a UV filter. The default value is true.
*/
@JsonProperty("hasUVFilter")
public Boolean getHasUVFilter() {
return this.hasUVFilter;
}
/**
* @param hasUVFilter
* whether the HVAC system has a UV filter. The default value is true.
*/
@JsonProperty("hasUVFilter")
public void setHasUVFilter(Boolean hasUVFilter) {
this.hasUVFilter = hasUVFilter;
}
/**
* @return whether to permit the cooling to operate when the outdoor temperature is under a specific threshold,
* currently 55F. The default value is false.
*/
@JsonProperty("coolingLockout")
public Boolean getCoolingLockout() {
return this.coolingLockout;
}
/**
* @param coolingLockout
* whether to permit the cooling to operate when the outdoor temperature is under a specific
* threshold, currently 55F. The default value is false.
*/
@JsonProperty("coolingLockout")
public void setCoolingLockout(Boolean coolingLockout) {
this.coolingLockout = coolingLockout;
}
/**
* @return the ventilatorFreeCooling
*/
@JsonProperty("ventilatorFreeCooling")
public Boolean getVentilatorFreeCooling() {
return this.ventilatorFreeCooling;
}
/**
* @param ventilatorFreeCooling
* the ventilatorFreeCooling to set
*/
@JsonProperty("ventilatorFreeCooling")
public void setVentilatorFreeCooling(Boolean ventilatorFreeCooling) {
this.ventilatorFreeCooling = ventilatorFreeCooling;
}
/**
* @return whether to permit dehumidifier to operate when the heating is running. The default value is false.
*/
@JsonProperty("dehumidifyWhenHeating")
public Boolean getDehumidifyWhenHeating() {
return this.dehumidifyWhenHeating;
}
/**
* @param dehumidifyWhenHeating
* whether to permit dehumidifier to operate when the heating is running. The default value is false.
*/
@JsonProperty("dehumidifyWhenHeating")
public void setDehumidifyWhenHeating(Boolean dehumidifyWhenHeating) {
this.dehumidifyWhenHeating = dehumidifyWhenHeating;
}
/**
* @return the unique reference to the group this thermostat belongs to, if any. See GET Group request and POST
* Group request for more information.
*/
@JsonProperty("groupRef")
public String getGroupRef() {
return this.groupRef;
}
/**
* @param groupRef
* the unique reference to the group this thermostat belongs to, if any. See GET Group request and
* POST Group request for more information.
*/
@JsonProperty("groupRef")
public void setGroupRef(String groupRef) {
this.groupRef = groupRef;
}
/**
* @return the name of the the group this thermostat belongs to, if any. See GET Group request and POST Group
* request for more information.
*/
@JsonProperty("groupName")
public String getGroupName() {
return this.groupName;
}
/**
* @param groupName
* the name of the the group this thermostat belongs to, if any. See GET Group request and POST Group
* request for more information.
*/
@JsonProperty("groupName")
public void setGroupName(String groupName) {
this.groupName = groupName;
}
/**
* @return the setting value for the group this thermostat belongs to, if any. See GET Group request and POST
* Group request for more information.
*/
@JsonProperty("groupSetting")
public Integer getGroupSetting() {
return this.groupSetting;
}
/**
* @param groupSetting
* the setting value for the group this thermostat belongs to, if any. See GET Group request and POST
* Group request for more information.
*/
@JsonProperty("groupSetting")
public void setGroupSetting(Integer groupSetting) {
this.groupSetting = groupSetting;
}
@Override
public String toString() {
final ToStringBuilder builder = createToStringBuilder();
builder.appendSuper(super.toString());
builder.append("hvacMode", this.hvacMode);
builder.append("lastServiceDate", this.lastServiceDate);
builder.append("serviceRemindMe", this.serviceRemindMe);
builder.append("monthsBetweenService", this.monthsBetweenService);
builder.append("remindMeDate", this.remindMeDate);
builder.append("vent", this.vent);
builder.append("ventilatorMinOnTime", this.ventilatorMinOnTime);
builder.append("serviceRemindTechnician", this.serviceRemindTechnician);
builder.append("eiLocation", this.eiLocation);
builder.append("coldTempAlert", this.coldTempAlert);
builder.append("coldTempAlertEnabled", this.coldTempAlertEnabled);
builder.append("hotTempAlert", this.hotTempAlert);
builder.append("hotTempAlertEnabled", this.hotTempAlertEnabled);
builder.append("coolStages", this.coolStages);
builder.append("heatStages", this.heatStages);
builder.append("maxSetBack", this.maxSetBack);
builder.append("maxSetForward", this.maxSetForward);
builder.append("quickSaveSetBack", this.quickSaveSetBack);
builder.append("quickSaveSetForward", this.quickSaveSetForward);
builder.append("hasHeatPump", this.hasHeatPump);
builder.append("hasForcedAir", this.hasForcedAir);
builder.append("hasBoiler", this.hasBoiler);
builder.append("hasHumidifier", this.hasHumidifier);
builder.append("hasErv", this.hasErv);
builder.append("hasHrv", this.hasHrv);
builder.append("condensationAvoid", this.condensationAvoid);
builder.append("useCelsius", this.useCelsius);
builder.append("useTimeFormat12", this.useTimeFormat12);
builder.append("locale", this.locale);
builder.append("humidity", this.humidity);
builder.append("humidifierMode", this.humidifierMode);
builder.append("backlightOnIntensity", this.backlightOnIntensity);
builder.append("backlightSleepIntensity", this.backlightSleepIntensity);
builder.append("backlightOffTime", this.backlightOffTime);
builder.append("soundTickVolume", this.soundTickVolume);
builder.append("soundAlertVolume", this.soundAlertVolume);
builder.append("compressorProtectionMinTime", this.compressorProtectionMinTime);
builder.append("compressorProtectionMinTemp", this.compressorProtectionMinTemp);
builder.append("stage1HeatingDifferentialTemp", this.stage1HeatingDifferentialTemp);
builder.append("stage1CoolingDifferentialTemp", this.stage1CoolingDifferentialTemp);
builder.append("stage1HeatingDissipationTime", this.stage1HeatingDissipationTime);
builder.append("stage1CoolingDissipationTime", this.stage1CoolingDissipationTime);
builder.append("heatPumpReversalOnCool", this.heatPumpReversalOnCool);
builder.append("fanControlRequired", this.fanControlRequired);
builder.append("fanMinOnTime", this.fanMinOnTime);
builder.append("heatCoolMinDelta", this.heatCoolMinDelta);
builder.append("tempCorrection", this.tempCorrection);
builder.append("holdAction", this.holdAction);
builder.append("heatPumpGroundWater", this.heatPumpGroundWater);
builder.append("hasElectric", this.hasElectric);
builder.append("hasDehumidifier", this.hasDehumidifier);
builder.append("humidifierMode", this.humidifierMode);
builder.append("dehumidifierLevel", this.dehumidifierLevel);
builder.append("dehumidifyWithAC", this.dehumidifyWithAC);
builder.append("dehumidifyOvercoolOffset", this.dehumidifyOvercoolOffset);
builder.append("autoHeatCoolFeatureEnabled", this.autoHeatCoolFeatureEnabled);
builder.append("wifiOfflineAlert", this.wifiOfflineAlert);
builder.append("heatMinTemp", this.heatMinTemp);
builder.append("heatMaxTemp", this.heatMaxTemp);
builder.append("coolMinTemp", this.coolMinTemp);
builder.append("coolMaxTemp", this.coolMaxTemp);
builder.append("heatRangeHigh", this.heatRangeHigh);
builder.append("heatRangeLow", this.heatRangeLow);
builder.append("coolRangeHigh", this.coolRangeHigh);
builder.append("coolRangeLow", this.coolRangeLow);
builder.append("userAccessCode", this.userAccessCode);
builder.append("userAccessSetting", this.userAccessSetting);
builder.append("auxRuntimeAlert", this.auxRuntimeAlert);
builder.append("auxOutdoorTempAlert", this.auxOutdoorTempAlert);
builder.append("auxMaxOutdoorTemp", this.auxMaxOutdoorTemp);
builder.append("auxRuntimeAlertNotify", this.auxRuntimeAlertNotify);
builder.append("auxOutdoorTempAlertNotify", this.auxOutdoorTempAlertNotify);
builder.append("auxRuntimeAlertNotifyTechnician", this.auxRuntimeAlertNotifyTechnician);
builder.append("auxOutdoorTempAlertNotifyTechnician", this.auxOutdoorTempAlertNotifyTechnician);
builder.append("disablePreHeating", this.disablePreHeating);
builder.append("disablePreCooling", this.disablePreCooling);
builder.append("installerCodeRequired", this.installerCodeRequired);
builder.append("drAccept", this.drAccept);
builder.append("isRentalProperty", this.isRentalProperty);
builder.append("useZoneController", this.useZoneController);
builder.append("randomStartDelayCool", this.randomStartDelayCool);
builder.append("randomStartDelayHeat", this.randomStartDelayHeat);
builder.append("humidityHighAlert", this.humidityHighAlert);
builder.append("humidityLowAlert", this.humidityLowAlert);
builder.append("disableHeatPumpAlerts", this.disableHeatPumpAlerts);
builder.append("disableAlertsOnIdt", this.disableAlertsOnIdt);
builder.append("humidityAlertNotify", this.humidityAlertNotify);
builder.append("humidityAlertNotifyTechnician", this.humidityAlertNotifyTechnician);
builder.append("tempAlertNotify", this.tempAlertNotify);
builder.append("tempAlertNotifyTechnician", this.tempAlertNotifyTechnician);
builder.append("monthlyElectricityBillLimit", this.monthlyElectricityBillLimit);
builder.append("enableElectricityBillAlert", this.enableElectricityBillAlert);
builder.append("enableProjectedElectricityBillAlert", this.enableProjectedElectricityBillAlert);
builder.append("electricityBillingDayOfMonth", this.electricityBillingDayOfMonth);
builder.append("electricityBillCycleMonths", this.electricityBillCycleMonths);
builder.append("electricityBillStartMonth", this.electricityBillStartMonth);
builder.append("ventilatorMinOnTimeHome", this.ventilatorMinOnTimeHome);
builder.append("ventilatorMinOnTimeAway", this.ventilatorMinOnTimeAway);
builder.append("backlightOffDuringSleep", this.backlightOffDuringSleep);
builder.append("autoAway", this.autoAway);
builder.append("smartCirculation", this.smartCirculation);
builder.append("followMeComfort", this.followMeComfort);
builder.append("ventilatorType", this.ventilatorType);
builder.append("isVentilatorTimerOn", this.isVentilatorTimerOn);
builder.append("ventilatorOffDateTime", this.ventilatorOffDateTime);
builder.append("hasUVFilter", this.hasUVFilter);
builder.append("coolingLockout", this.coolingLockout);
builder.append("ventilatorFreeCooling", this.ventilatorFreeCooling);
builder.append("dehumidifyWhenHeating", this.dehumidifyWhenHeating);
builder.append("groupRef", this.groupRef);
builder.append("groupName", this.groupName);
builder.append("groupSetting", this.groupSetting);
return builder.toString();
}
}
/**
* Possible values for hvacMode
*/
public static enum HvacMode {
AUTO("auto"),
AUX_HEAT_ONLY("auxHeatOnly"),
COOL("cool"),
HEAT("heat"),
OFF("off");
private final String mode;
private HvacMode(String mode) {
this.mode = mode;
}
@JsonValue
public String value() {
return mode;
}
@JsonCreator
public static HvacMode forValue(String v) {
for (HvacMode hm : HvacMode.values()) {
if (hm.mode.equals(v)) {
return hm;
}
}
throw new IllegalArgumentException("Invalid hvacMode: " + v);
}
@Override
public String toString() {
return this.mode;
}
}
/**
* Possible values for vent
*/
public static enum VentilatorMode {
AUTO("auto"),
MIN_ON_TIME("minontime"),
ON("on"),
OFF("off");
private final String mode;
private VentilatorMode(String mode) {
this.mode = mode;
}
@JsonValue
public String value() {
return mode;
}
@JsonCreator
public static VentilatorMode forValue(String v) {
for (VentilatorMode vm : VentilatorMode.values()) {
if (vm.mode.equals(v)) {
return vm;
}
}
throw new IllegalArgumentException("Invalid vent: " + v);
}
@Override
public String toString() {
return this.mode;
}
}
/**
* The Runtime Java Bean represents the last known thermostat running state. This state is composed from the last
* interval status message received from a thermostat. It is also updated each time the thermostat posts
* configuration changes to the server.
*
* <p>
* The runtime object contains the last 5 minute interval value sent by the thermostat for the past 15 minutes of
* runtime. The thermostat updates the server every 15 minutes with the last three 5 minute readings.
*
* <p>
* The actual temperature and humidity will also be updated when the equipment state changes by the thermostat, this
* may occur at a frequency of 3 minutes, however it is only transmitted when there is an equipment state change on
* the thermostat.
*
* <p>
* See Thermostat Interval Report Data for additional information about the interval readings.
*
* <p>
* The Runtime class is read-only.
*
* @see <a href="https://www.ecobee.com/home/developer/api/documentation/v1/objects/Runtime.shtml">Runtime</a>
* @see <a href="https://www.ecobee.com/home/developer/api/documentation/v1/technical-notes.shtml#data">Thermostat
* Interval Report Data</a>
* @author John Cocula
*/
@JsonIgnoreProperties(ignoreUnknown = true)
public static class Runtime extends AbstractMessagePart {
private String runtimeRev;
private Boolean connected;
private Date firstConnected;
private Date connectDateTime;
private String disconnectDateTime; // TODO: Jackson 1.9 can't handle
// date only (no time) (@watou)
private Date lastModified;
private Date lastStatusModified;
private String runtimeDate; // TODO: Jackson 1.9 can't handle date only
// (no time) (@watou)
private Integer runtimeInterval;
private Temperature actualTemperature;
private Integer actualHumidity;
private Temperature desiredHeat;
private Temperature desiredCool;
private Integer desiredHumidity;
private Integer desiredDehumidity;
private String desiredFanMode;
/**
* @return the current runtime revision. Equivalent in meaning to the runtime revision number in the thermostat
* summary call.
*/
@JsonProperty("runtimeRev")
public String getRuntimeRev() {
return this.runtimeRev;
}
/**
* @return whether the thermostat is currently connected to the server
*/
@JsonProperty("connected")
public Boolean getConnected() {
return this.connected;
}
/**
* @return the UTC date/time stamp of when the thermostat first connected to the ecobee server
*/
@JsonProperty("firstConnected")
public Date getFirstConnected() {
return this.firstConnected;
}
/**
* @return the last recorded connection date and time
*/
@JsonProperty("connectDateTime")
public Date getConnectDateTime() {
return this.connectDateTime;
}
/**
* @return the last recorded disconnection date and time
*/
@JsonProperty("disconnectDateTime")
public String getDisconnectDateTime() {
return this.disconnectDateTime;
}
/**
* @return the UTC date/time stamp of when the thermostat was updated. Format: YYYY-MM-DD HH:MM:SS
*/
@JsonProperty("lastModified")
public Date getLastModified() {
return this.lastModified;
}
/**
* @return the UTC date/time stamp of when the thermostat last posted its runtime information. Format:
* YYYY-MM-DD HH:MM:SS
*/
@JsonProperty("lastStatusModified")
public Date getLastStatusModified() {
return this.lastStatusModified;
}
/**
* @return the UTC date of the last runtime reading. Format: YYYY-MM-DD
*/
@JsonProperty("runtimeDate")
public String getRuntimeDate() {
return this.runtimeDate;
}
/**
* @return the last 5 minute interval which was updated by the thermostat telemetry update. Subtract 2 from this
* interval to obtain the beginning interval for the last 3 readings. Multiply by 5 mins to obtain the
* minutes of the day. Range: 0-287
*/
@JsonProperty("runtimeInterval")
public Integer getRuntimeInterval() {
return this.runtimeInterval;
}
/**
* @return the current temperature displayed on the thermostat
*/
@JsonProperty("actualTemperature")
public Temperature getActualTemperature() {
return this.actualTemperature;
}
/**
* @return the current humidity % shown on the thermostat
*/
@JsonProperty("actualHumidity")
public Integer getActualHumidity() {
return this.actualHumidity;
}
/**
* @return the desired heat temperature as per the current running program or active event
*/
@JsonProperty("desiredHeat")
public Temperature getDesiredHeat() {
return this.desiredHeat;
}
/**
* @return the desired cool temperature as per the current running program or active event.
*/
@JsonProperty("desiredCool")
public Temperature getDesiredCool() {
return this.desiredCool;
}
/**
* @return the desired humidity set point
*/
@JsonProperty("desiredHumidity")
public Integer getDesiredHumidity() {
return this.desiredHumidity;
}
/**
* @return the desired dehumidification set point
*/
@JsonProperty("desiredDehumidity")
public Integer getDesiredDehumidity() {
return this.desiredDehumidity;
}
/**
* @return the desired fan mode. Values: auto, on or null if the HVAC system is off. TODO handle null as valid
* value (@watou).
*/
@JsonProperty("desiredFanMode")
public String getDesiredFanMode() {
return this.desiredFanMode;
}
@Override
public String toString() {
final ToStringBuilder builder = createToStringBuilder();
builder.appendSuper(super.toString());
builder.append("runtimeRev", this.runtimeRev);
builder.append("connected", this.connected);
builder.append("firstConnected", this.firstConnected);
builder.append("connectDateTime", this.connectDateTime);
builder.append("disconnectDateTime", this.disconnectDateTime);
builder.append("lastModified", this.lastModified);
builder.append("lastStatusModified", this.lastStatusModified);
builder.append("runtimeDate", this.runtimeDate);
builder.append("runtimeInterval", this.runtimeInterval);
builder.append("actualTemperature", this.actualTemperature);
builder.append("actualHumidity", this.actualHumidity);
builder.append("desiredHeat", this.desiredHeat);
builder.append("desiredCool", this.desiredCool);
builder.append("desiredHumidity", this.desiredHumidity);
builder.append("desiredDehumidity", this.desiredDehumidity);
builder.append("desiredFanMode", this.desiredFanMode);
return builder.toString();
}
}
/**
* The ExtendedRuntime Java Bean contains the last three 5 minute interval values sent by the thermostat for the
* past 15 minutes of runtime. The interval values are valuable when you are interested in analyzing the runtime
* data in a more granular fashion, at 5 minute increments rather than the more general 15 minute value from the
* Runtime Object.
*
* <p>
* For the runtime values (i.e. heatPump, auxHeat, cool, etc.) refer to the {@link Thermostat#settings} values (
* {@link Settings#hasHeatPump}, {@link Settings#heatStages}, {@link Settings#coolStages}) to determine whether a
* heat pump exists and how many stages the thermostat supports.
*
* <p>
* The actual temperature and humidity will also be updated when the equipment state changes by the thermostat, this
* may occur at a frequency of 3 minutes, however it is only transmitted when there is an equipment state change on
* the thermostat.
*
* <p>
* The extended runtime object is read-only.
*
* @see <a
* href="https://www.ecobee.com/home/developer/api/documentation/v1/objects/ExtendedRuntime.shtml">
* ExtendedRuntime</a>
* @see <a href="https://www.ecobee.com/home/developer/api/documentation/v1/technical-notes.shtml#data">Thermostat
* Interval Report Data</a>
* @author John Cocula
*/
@JsonIgnoreProperties(ignoreUnknown = true)
public static class ExtendedRuntime extends AbstractMessagePart {
private Date lastReadingTimestamp;
private String runtimeDate; // TODO Jackson 1.9 can't also deal with date-only dates (@watou)
private Integer runtimeInterval;
private List<Temperature> actualTemperature;
private List<Integer> actualHumidity;
private List<Temperature> desiredHeat;
private List<Temperature> desiredCool;
private List<Integer> desiredHumidity;
private List<Integer> desiredDehumidity;
private List<Temperature> dmOffset;
private List<String> hvacMode;
private List<Integer> heatPump1;
private List<Integer> heatPump2;
private List<Integer> auxHeat1;
private List<Integer> auxHeat2;
private List<Integer> auxHeat3;
private List<Integer> cool1;
private List<Integer> cool2;
private List<Integer> fan;
private List<Integer> humidifier;
private List<Integer> dehumidifier;
private List<Integer> economizer;
private List<Integer> ventilator;
private Integer currentElectricityBill;
private Integer projectedElectricityBill;
/**
* @return the UTC timestamp of the last value read. This timestamp is updated at a 15 min interval by the
* thermostat. For the 1st value, it is timestamp - 10 mins, for the 2nd value it is timestamp - 5 mins.
* Consider day boundaries being straddled when using these values.
*/
@JsonProperty("lastReadingTimestamp")
public Date getLastReadingTimestamp() {
return this.lastReadingTimestamp;
}
/**
* @return the UTC date of the last runtime reading. Format: YYYY-MM-DD
*/
@JsonProperty("runtimeDate")
public String getRuntimeDate() {
return this.runtimeDate;
}
/**
* @return the last 5 minute interval which was updated by the thermostat telemetry update. Subtract 2 from this
* interval to obtain the beginning interval for the last 3 readings. Multiply by 5 mins to obtain the
* minutes of the day. Range: 0-287
*/
@JsonProperty("runtimeInterval")
public Integer getRuntimeInterval() {
return this.runtimeInterval;
}
/**
* @return the last three 5 minute actual temperature readings
*/
@JsonProperty("actualTemperature")
public List<Temperature> getActualTemperature() {
return this.actualTemperature;
}
/**
* @return the last three 5 minute actual humidity readings
*/
@JsonProperty("actualHumidity")
public List<Integer> getActualHumidity() {
return this.actualHumidity;
}
/**
* @return the last three 5 minute desired heat temperature readings
*/
@JsonProperty("desiredHeat")
public List<Temperature> getDesiredHeat() {
return this.desiredHeat;
}
/**
* @return the last three 5 minute desired cool temperature readings
*/
@JsonProperty("desiredCool")
public List<Temperature> getDesiredCool() {
return this.desiredCool;
}
/**
* @return the last three 5 minute desired humidity readings
*/
@JsonProperty("desiredHumidity")
public List<Integer> getDesiredHumidity() {
return this.desiredHumidity;
}
/**
* @return the last three 5 minute desired dehumidification readings
*/
@JsonProperty("desiredDehumidity")
public List<Integer> getDesiredDehumidity() {
return this.desiredDehumidity;
}
/**
* @return the last three 5 minute desired Demand Management temperature offsets. This value is Demand
* Management adjustment value which was applied by the thermostat. If the thermostat decided not to
* honor the adjustment, it will send 0 for the interval. Compare these values with the values sent in
* the DM message to determine whether the thermostat applied the adjustment.
*/
@JsonProperty("dmOffset")
public List<Temperature> getDmOffset() {
return this.dmOffset;
}
/**
* @return the last three 5 minute HVAC Mode reading. These values indicate which stage was energized in the 5
* minute interval. Values: heatStage1On, heatStage2On, heatStage3On, heatOff, compressorCoolStage1On,
* compressorCoolStage2On, compressorCoolOff, compressorHeatStage1On, compressorHeatStage2On,
* compressorHeatOff, economyCycle.
*/
@JsonProperty("hvacMode")
public List<String> getHvacMode() {
return this.hvacMode;
}
/**
* @return the last three 5 minute HVAC Runtime values in seconds (0-300 seconds) per interval. This value
* corresponds to the heat pump stage 1 runtime.
*/
@JsonProperty("heatPump1")
public List<Integer> getHeatPump1() {
return this.heatPump1;
}
/**
* @return the last three 5 minute HVAC Runtime values in seconds (0-300 seconds) per interval. This value
* corresponds to the heat pump stage 2 runtime.
*/
@JsonProperty("heatPump2")
public List<Integer> getHeatPump2() {
return this.heatPump2;
}
/**
* @return the last three 5 minute HVAC Runtime values in seconds (0-300 seconds) per interval. This value
* corresponds to the auxiliary heat stage 1. If the thermostat does not have a heat pump, this is heat
* stage 1.
*/
@JsonProperty("auxHeat1")
public List<Integer> getAuxHeat1() {
return this.auxHeat1;
}
/**
* @return the last three 5 minute HVAC Runtime values in seconds (0-300 seconds) per interval. This value
* corresponds to the auxiliary heat stage 2. If the thermostat does not have a heat pump, this is heat
* stage 2.
*/
@JsonProperty("auxHeat2")
public List<Integer> getAuxHeat2() {
return this.auxHeat2;
}
/**
* @return the last three 5 minute HVAC Runtime values in seconds (0-300 seconds) per interval. This value
* corresponds to the heat stage 3 if the thermostat does not have a heat pump. Auxiliary stage 3 is not
* supported.
*/
@JsonProperty("auxHeat3")
public List<Integer> getAuxHeat3() {
return this.auxHeat3;
}
/**
* @return the last three 5 minute HVAC Runtime values in seconds (0-300 seconds) per interval. This value
* corresponds to the cooling stage 1.
*/
@JsonProperty("cool1")
public List<Integer> getCool1() {
return this.cool1;
}
/**
* @return the last three 5 minute HVAC Runtime values in seconds (0-300 seconds) per interval. This value
* corresponds to the cooling stage 2.
*/
@JsonProperty("cool2")
public List<Integer> getCool2() {
return this.cool2;
}
/**
* @return the last three 5 minute fan Runtime values in seconds (0-300 seconds) per interval.
*/
@JsonProperty("fan")
public List<Integer> getFan() {
return this.fan;
}
/**
* @return the last three 5 minute humidifier Runtime values in seconds (0-300 seconds) per interval.
*/
@JsonProperty("humidifier")
public List<Integer> getHumidifier() {
return this.humidifier;
}
/**
* @return the last three 5 minute dehumidifier Runtime values in seconds (0-300 seconds) per interval.
*/
@JsonProperty("dehumidifier")
public List<Integer> getDehumidifier() {
return this.dehumidifier;
}
/**
* @return the last three 5 minute economizer Runtime values in seconds (0-300 seconds) per interval.
*/
@JsonProperty("economizer")
public List<Integer> getEconomizer() {
return this.economizer;
}
/**
* @return the last three 5 minute ventilator Runtime values in seconds (0-300 seconds) per interval.
*/
@JsonProperty("ventilator")
public List<Integer> getVentilator() {
return this.ventilator;
}
/**
* @return the latest value of the current electricity bill as interpolated from the thermostat's readings from
* a paired electricity meter.
*/
@JsonProperty("currentElectricityBill")
public Integer getCurrentElectricityBill() {
return this.currentElectricityBill;
}
/**
* @return the latest estimate of the projected electricity bill as interpolated from the thermostat's readings
* from a paired electricity meter.
*/
@JsonProperty("projectedElectricityBill")
public Integer getProjectedElectricityBill() {
return this.projectedElectricityBill;
}
@Override
public String toString() {
final ToStringBuilder builder = createToStringBuilder();
builder.appendSuper(super.toString());
builder.append("lastReadingTimestamp", this.lastReadingTimestamp);
builder.append("runtimeDate", this.runtimeDate);
builder.append("runtimeInterval", this.runtimeInterval);
builder.append("actualTemperature", this.actualTemperature);
builder.append("actualHumidity", this.actualHumidity);
builder.append("desiredHeat", this.desiredHeat);
builder.append("desiredCool", this.desiredCool);
builder.append("desiredHumidity", this.desiredHumidity);
builder.append("desiredDehumidity", this.desiredDehumidity);
builder.append("dmOffset", this.dmOffset);
builder.append("hvacMode", this.hvacMode);
builder.append("heatPump1", this.heatPump1);
builder.append("heatPump2", this.heatPump2);
builder.append("auxHeat1", this.auxHeat1);
builder.append("auxHeat2", this.auxHeat2);
builder.append("auxHeat3", this.auxHeat3);
builder.append("cool1", this.cool1);
builder.append("cool2", this.cool2);
builder.append("fan", this.fan);
builder.append("humidifier", this.humidifier);
builder.append("dehumidifier", this.dehumidifier);
builder.append("economizer", this.economizer);
builder.append("ventilator", this.ventilator);
builder.append("currentElectricityBill", this.currentElectricityBill);
builder.append("projectedElectricityBill", this.projectedElectricityBill);
return builder.toString();
}
}
/**
* The Electricity class contains the last collected electricity usage measurements for the thermostat. An
* electricity object is composed of ElectricityDevices, each of which contains readings from an ElectricityTier.
*
* @see <a
* href="https://www.ecobee.com/home/developer/api/documentation/v1/objects/Electricity.shtml">Electricity</a>
* @author John Cocula
*/
@JsonIgnoreProperties(ignoreUnknown = true)
public static class Electricity extends AbstractMessagePart {
private List<ElectricityDevice> devices;
Electricity(@JsonProperty("devices") List<ElectricityDevice> devices) {
this.devices = devices;
}
/**
* @return the list of ElectricityDevice objects associated with the thermostat, each representing a device such
* as an electric meter or remote load control.
*/
@JsonProperty("devices")
public List<ElectricityDevice> getDevices() {
return this.devices;
}
@Override
public String toString() {
final ToStringBuilder builder = createToStringBuilder();
builder.appendSuper(super.toString());
builder.append("devices", this.devices);
return builder.toString();
}
}
/**
* An ElectricityDevice represents an energy recording device. At this time, only meters are supported by the API.
*
* @see <a
* href="https://www.ecobee.com/home/developer/api/documentation/v1/objects/ElectricityDevice.shtml">
* ElectricityDevice</a>
* @author John Cocula
*/
@JsonIgnoreProperties(ignoreUnknown = true)
public static class ElectricityDevice extends AbstractMessagePart {
private List<ElectricityTier> tiers;
private List<Date> lastUpdate;
private List<String> cost;
private List<String> consumption;
/**
* @return the list of ElectricityTiers containing the break down of daily electricity consumption of the device
* for the day, broken down per pricing tier
*/
@JsonProperty("tiers")
public List<ElectricityTier> getTiers() {
return this.tiers;
}
/**
* @return the last date/time the reading was updated in UTC time
*/
@JsonProperty("lastUpdate")
public List<Date> getLastUpdate() {
return this.lastUpdate;
}
/**
* @return the last three daily electricity cost reads from the device in cents with a three decimal place
* precision.
*/
@JsonProperty("cost")
public List<String> getCost() {
return this.cost;
}
/**
* @return the last three daily electricity consumption reads from the device in KWh with a three decimal place
* precision.
*/
@JsonProperty("consumption")
public List<String> getConsumption() {
return this.consumption;
}
@Override
public String toString() {
final ToStringBuilder builder = createToStringBuilder();
builder.appendSuper(super.toString());
builder.append("tiers", this.tiers);
builder.append("lastUpdate", this.lastUpdate);
builder.append("cost", this.cost);
builder.append("consumption", this.consumption);
return builder.toString();
}
}
/**
* An ElectricityTier object represents the last reading from a given pricing tier if the utility provides such
* information. If there are no pricing tiers defined, than an unnamed tier will represent the total reading. The
* values represented here are a daily cumulative total in kWh. The cost is likewise a cumulative total in cents.
*
* @see <a
* href="https://www.ecobee.com/home/developer/api/documentation/v1/objects/ElectricityTier.shtml">
* ElectricityTier</a>
* @author John Cocula
*/
@JsonIgnoreProperties(ignoreUnknown = true)
public static class ElectricityTier extends AbstractMessagePart {
private String name;
private String consumption;
private String cost;
/**
* @return the tier name as defined by the {@link Utility}. May be an empty string if the tier is undefined or
* the usage falls outside the defined tiers.
*/
@JsonProperty("name")
public String getName() {
return this.name;
}
/**
* @return the last daily consumption reading collected. The reading format and precision is to three decimal
* places in kWh.
*/
@JsonProperty("consumption")
public String getConsumption() {
return this.consumption;
}
/**
* @return the daily cumulative tier cost in dollars if defined by the Utility. May be an empty string if
* undefined.
*/
@JsonProperty("cost")
public String getCost() {
return this.cost;
}
@Override
public String toString() {
final ToStringBuilder builder = createToStringBuilder();
builder.appendSuper(super.toString());
builder.append("name", this.name);
builder.append("consumption", this.consumption);
builder.append("cost", this.cost);
return builder.toString();
}
}
/**
* Represents a device attached to the thermostat. Devices may not be modified remotely; all changes must occur on
* the thermostat.
*
* @see <a href="https://www.ecobee.com/home/developer/api/documentation/v1/objects/Device.shtml">Device</a>
* @author John Cocula
*/
@JsonIgnoreProperties(ignoreUnknown = true)
public static class Device extends AbstractMessagePart {
private Integer deviceId;
private String name;
private List<Sensor> sensors;
private List<Output> outputs;
/**
* @return a unique ID for the device
*/
@JsonProperty("deviceId")
public Integer getDeviceId() {
return this.deviceId;
}
/**
* @return the user supplied device name
*/
@JsonProperty("name")
public String getName() {
return this.name;
}
/**
* @return the list of {@link Sensor} objects associated with the device
*/
@JsonProperty("sensors")
public List<Sensor> getSensors() {
return this.sensors;
}
/**
* @return the list of {@link Output} objects associated with the device
*/
@JsonProperty("outputs")
public List<Output> getOutputs() {
return this.outputs;
}
@Override
public String toString() {
final ToStringBuilder builder = createToStringBuilder();
builder.appendSuper(super.toString());
builder.append("deviceId", this.deviceId);
builder.append("name", this.name);
builder.append("sensors", this.sensors);
builder.append("outputs", this.outputs);
return builder.toString();
}
}
/**
* The RemoteSensor object represents a sensor connected to the thermostat.
*
* The remote sensor data will only show computed occupancy, as does the thermostat. Definition - For a given
* sensor, computed occupancy means a sensor is occupied if any motion was detected in the past 30 minutes.
* RemoteSensor data changes trigger the runtimeRevision to be updated. The data updates are sent at an interval of
* 3 mins maximum. This means that you should not poll quicker than once every 3 mins for revision changes.
*
* @see <a
* href="https://www.ecobee.com/home/developer/api/documentation/v1/objects/RemoteSensor.shtml">RemoteSensor
* </a>
* @author John Cocula
*/
@JsonIgnoreProperties(ignoreUnknown = true)
public static class RemoteSensor extends AbstractMessagePart {
private String id;
private String name;
private String type;
private String code;
private Boolean inUse;
@JsonProperty("capability")
private List<RemoteSensorCapability> capabilityList;
@JsonIgnore
private Map<String, RemoteSensorCapability> capability;
/**
* @return the unique sensor identifier. It is composed of deviceName + deviceId separated by colons, for
* example: <code>rs:100</code>
*/
@JsonProperty("id")
public String getId() {
return this.id;
}
/**
* @return the user assigned sensor name
*/
@JsonProperty("name")
public String getName() {
return this.name;
}
/**
* @return the type of remote sensor. Values: <code>thermostat</code>, <code>ecobee3_remote_sensor</code>,
* <code>monitor_sensor</code>, <code>control_sensor</code>.
*/
@JsonProperty("type")
public String getType() {
return this.type;
}
/**
* @return the unique 4-digit alphanumeric sensor code. For ecobee3 remote sensors this corresponds to the code
* found on the back of the physical sensor.
*/
@JsonProperty("code")
public String getCode() {
return this.code;
}
/**
* @return this flag indicates whether the remote sensor is currently in use by a comfort setting. See
* {@link Climate} for more information.
*/
@JsonProperty("inUse")
public Boolean getInUse() {
return this.inUse;
}
/**
* @return a list of {@link RemoteSensorCapability} objects
*/
@JsonProperty("capability")
public List<RemoteSensorCapability> getCapabilityList() {
return this.capabilityList;
}
/**
* @return a type-based map of {@link RemoteSensorCapability} objects
*/
@JsonIgnore
public Map<String, RemoteSensorCapability> getCapability() {
return this.capability;
}
/**
* Create a map of RemoteSensorCapability objects, keyed by type, for easy beanutils reference.
*/
protected void sync() {
this.capability = new HashMap<String, RemoteSensorCapability>();
if (this.capabilityList != null) {
for (RemoteSensorCapability rsc : this.capabilityList) {
this.capability.put(rsc.getType(), rsc);
}
}
}
@Override
public String toString() {
final ToStringBuilder builder = createToStringBuilder();
builder.appendSuper(super.toString());
builder.append("id", this.id);
builder.append("name", this.name);
builder.append("type", this.type);
builder.append("code", this.inUse);
builder.append("capability", this.capabilityList);
return builder.toString();
}
}
/**
* The RemoteSensorCapability object represents the specific capability of a sensor connected to the thermostat.
*
* For the occupancy type capability the data will only show computed occupancy, as does the thermostat.
*
* @see <a
* href="https://www.ecobee.com/home/developer/api/documentation/v1/objects/RemoteSensorCapability.shtml">
* RemoteSensorCapability</a>
* @author John Cocula
*/
@JsonIgnoreProperties(ignoreUnknown = true)
public static class RemoteSensorCapability extends AbstractMessagePart {
private String id;
private String type;
@JsonProperty("value")
private String valueString;
/**
* @return the unique sensor capability identifier. For example: 1
*/
@JsonProperty("id")
public String getId() {
return this.id;
}
/**
* @return The type of sensor capability. Values: <code>adc</code>, <code>co2</code>, <code>dryContact</code>,
* <code>humidity</code>, <code>temperature</code>, <code>occupancy</code>, <code>unknown</code>.
*/
@JsonProperty("type")
public String getType() {
return this.type;
}
/**
* @return The data value for this capability, always a String. Temperature values are expressed as degrees
* Fahrenheit, multiplied by 10. For example, a temperature of 72F would be returned as the value "720".
* Occupancy values are "true" or "false". Humidity is expressed as a % value such as "45". Unknown
* values are returned as "unknown".
*/
@JsonProperty("value")
public String getValueString() {
return this.valueString;
}
/**
* @return a properly typed version of the value, depending on <code>type</code>. Types are not documented for
* <code>adc</code>, <code>co2</code>, or <code>dryContact</code> and so are returned as strings, until
* the documentation explains.
*/
@JsonIgnore
public Object getValue() {
try {
if ("temperature".equals(type)) {
return new Temperature(Integer.parseInt(valueString));
} else if ("occupancy".equals(type)) {
if ("true".equals(valueString)) {
return Boolean.TRUE;
} else if ("false".equals(valueString)) {
return Boolean.FALSE;
} else {
return UnDefType.NULL;
}
} else if ("humidity".equals(type)) {
return Integer.parseInt(valueString);
} else {
return valueString;
}
} catch (NumberFormatException nfe) {
return UnDefType.NULL;
}
}
@Override
public String toString() {
final ToStringBuilder builder = createToStringBuilder();
builder.appendSuper(super.toString());
builder.append("id", this.id);
builder.append("type", this.type);
builder.append("value", this.valueString);
return builder.toString();
}
}
/**
* The Sensor class represents a sensor connected to the thermostat. Sensors may not be modified using the API,
* however some configuration may occur through the web portal.
*
* @see <a href="https://www.ecobee.com/home/developer/api/documentation/v1/objects/Sensor.shtml">Sensor</a>
* @author John Cocula
*/
@JsonIgnoreProperties(ignoreUnknown = true)
public static class Sensor extends AbstractMessagePart {
private String name;
private String manufacturer;
private String model;
private Integer zone;
private Integer sensorId;
private String type;
private String usage;
private Integer numberOfBits;
private Integer bconstant;
private Integer thermistorSize;
private Integer tempCorrection;
private Integer gain;
private Integer maxVoltage;
private Integer multiplier;
private List<SensorState> states;
/**
* @return the sensor name
*/
@JsonProperty("name")
public String getName() {
return this.name;
}
/**
* @return the sensor manufacturer
*/
@JsonProperty("manufacturer")
public String getManufacturer() {
return this.manufacturer;
}
/**
* @return the sensor model
*/
@JsonProperty("model")
public String getModel() {
return this.model;
}
/**
* @return the thermostat zone the sensor is associated with
*/
@JsonProperty("zone")
public Integer getZone() {
return this.zone;
}
/**
* @return the unique sensor identifier
*/
@JsonProperty("sensorId")
public Integer getSensorId() {
return this.sensorId;
}
/**
* @return the type of sensor. Values: adc, co2, dryCOntact, humidity, temperature, unknown
*/
@JsonProperty("type")
public String getType() {
return this.type;
}
/**
* @return the sensor usage type. Values: dischargeAir, indoor, monitor, outdoor
*/
@JsonProperty("usage")
public String getUsage() {
return this.usage;
}
/**
* @return the numberOfBits
*/
@JsonProperty("numberOfBits")
public Integer getNumberOfBits() {
return this.numberOfBits;
}
/**
* @return the bconstant
*/
@JsonProperty("bconstant")
public Integer getBconstant() {
return this.bconstant;
}
/**
* @return the thermistorSize
*/
@JsonProperty("thermistorSize")
public Integer getThermistorSize() {
return this.thermistorSize;
}
/**
* @return the tempCorrection
*/
@JsonProperty("tempCorrection")
public Integer getTempCorrection() {
return this.tempCorrection;
}
/**
* @return the gain
*/
@JsonProperty("gain")
public Integer getGain() {
return this.gain;
}
/**
* @return the maxVoltage
*/
@JsonProperty("maxVoltage")
public Integer getMaxVoltage() {
return this.maxVoltage;
}
/**
* @return the multiplier
*/
@JsonProperty("multiplier")
public Integer getMultiplier() {
return this.multiplier;
}
/**
* @return a list of {@link SensorState} objects
*/
@JsonProperty("states")
public List<SensorState> getStates() {
return this.states;
}
@Override
public String toString() {
final ToStringBuilder builder = createToStringBuilder();
builder.appendSuper(super.toString());
builder.append("name", this.name);
builder.append("manufacturer", this.manufacturer);
builder.append("model", this.model);
builder.append("zone", this.zone);
builder.append("sensorId", this.sensorId);
builder.append("type", this.type);
builder.append("usage", this.usage);
builder.append("numberOfBits", this.numberOfBits);
builder.append("bconstant", this.bconstant);
builder.append("thermistorSize", this.thermistorSize);
builder.append("tempCorrection", this.tempCorrection);
builder.append("gain", this.gain);
builder.append("maxVoltage", this.maxVoltage);
builder.append("multiplier", this.multiplier);
builder.append("states", this.states);
return builder.toString();
}
}
/**
* A sensor state is a configurable trigger for a number of {@link StateAction}s.
*
* @see <a href="https://www.ecobee.com/home/developer/api/documentation/v1/objects/State.shtml">State</a>
* @author John Cocula
*/
@JsonIgnoreProperties(ignoreUnknown = true)
public static class SensorState extends AbstractMessagePart {
private Integer maxValue;
private Integer minValue;
private String type;
private List<StateAction> actions;
/**
* @return the maximum value the sensor can generate
*/
@JsonProperty("maxValue")
public Integer getMaxValue() {
return this.maxValue;
}
/**
* @return the minimum value the sensor can generate
*/
@JsonProperty("minValue")
public Integer getMinValue() {
return this.minValue;
}
/**
* @return the type Values: coolHigh, coolLow, heatHigh, heatLow, high, low, transitionCount, normal
*/
@JsonProperty("type")
public String getType() {
return this.type;
}
/**
* @return the list of {@link StateAction} objects associated with the sensor
*/
@JsonProperty("actions")
public List<StateAction> getActions() {
return this.actions;
}
@Override
public String toString() {
final ToStringBuilder builder = createToStringBuilder();
builder.appendSuper(super.toString());
builder.append("maxValue", this.maxValue);
builder.append("minValue", this.minValue);
builder.append("type", this.type);
builder.append("actions", this.actions);
return builder.toString();
}
}
/**
* A StateAction defines an action to take when a {@link SensorState} is triggered.
*
* @see <a href="https://www.ecobee.com/home/developer/api/documentation/v1/objects/Action.shtml">Action</a>
* @author John Cocula
*/
@JsonIgnoreProperties(ignoreUnknown = true)
public static class StateAction extends AbstractMessagePart {
private String type;
private Boolean sendAlert;
private Boolean sendUpdate;
private Integer activationDelay;
private Integer deactivationDelay;
private Integer minActionDuration;
private Temperature heatAdjustTemp;
private Temperature coolAdjustTemp;
private String activateRelay;
private Boolean activateRelayOpen;
/**
* @return the type Values: activateRelay, adjustTemp, doNothing, shutdownAC, shutdownAuxHeat, shutdownSystem,
* shutdownCompression, switchToOccupied, switchToUnoccupied, turnOffDehumidifer, turnOffHumidifier,
* turnOnCool, turnOnDehumidifier, turnOnFan, turnOnHeat, turnOnHumidifier.
*/
@JsonProperty("type")
public String getType() {
return this.type;
}
/**
* @return flag to enable an alert to be generated when the state is triggered
*/
@JsonProperty("sendAlert")
public Boolean getSendAlert() {
return this.sendAlert;
}
/**
* @return the sendUpdate
*/
@JsonProperty("sendUpdate")
public Boolean getSendUpdate() {
return this.sendUpdate;
}
/**
* @return delay in seconds before the action is triggered by the state change
*/
@JsonProperty("activationDelay")
public Integer getActivationDelay() {
return this.activationDelay;
}
/**
* @return the deactivationDelay
*/
@JsonProperty("deactivationDelay")
public Integer getDeactivationDelay() {
return this.deactivationDelay;
}
/**
* @return the minActionDuration
*/
@JsonProperty("minActionDuration")
public Integer getMinActionDuration() {
return this.minActionDuration;
}
/**
* @return the heatAdjustTemp
*/
@JsonProperty("heatAdjustTemp")
public Temperature getHeatAdjustTemp() {
return this.heatAdjustTemp;
}
/**
* @return the coolAdjustTemp
*/
@JsonProperty("coolAdjustTemp")
public Temperature getCoolAdjustTemp() {
return this.coolAdjustTemp;
}
/**
* @return the activateRelay
*/
@JsonProperty("activateRelay")
public String getActivateRelay() {
return this.activateRelay;
}
/**
* @return the activateRelayOpen
*/
@JsonProperty("activateRelayOpen")
public Boolean isActivateRelayOpen() {
return this.activateRelayOpen;
}
@Override
public String toString() {
final ToStringBuilder builder = createToStringBuilder();
builder.appendSuper(super.toString());
builder.append("type", this.type);
builder.append("sendAlert", this.sendAlert);
builder.append("sendUpdate", this.sendUpdate);
builder.append("activationDelay", this.activationDelay);
builder.append("deactivationDelay", this.deactivationDelay);
builder.append("minActionDuration", this.minActionDuration);
builder.append("heatAdjustTemp", this.heatAdjustTemp);
builder.append("coolAdjustTemp", this.coolAdjustTemp);
builder.append("activateRelay", this.activateRelay);
builder.append("activateRelayOpen", this.activateRelayOpen);
return builder.toString();
}
}
/**
* An output is a relay connected to the thermostat.
*
* @see <a href="https://www.ecobee.com/home/developer/api/documentation/v1/objects/Output.shtml">Output</a>
* @author John Cocula
*/
@JsonIgnoreProperties(ignoreUnknown = true)
public static class Output extends AbstractMessagePart {
private String name;
private Integer zone;
private Integer outputId;
private String type;
private Boolean sendUpdate;
private Boolean activeClosed;
private Integer activationTime;
private Integer deactivationTime;
/**
* @return the name of the output
*/
@JsonProperty("name")
public String getName() {
return this.name;
}
/**
* @return the thermostat zone the output is associated with
*/
@JsonProperty("zone")
public Integer getZone() {
return this.zone;
}
/**
* @return the unique output identifier number
*/
@JsonProperty("outputId")
public Integer getOutputId() {
return this.outputId;
}
/**
* @return the type of output. Values: compressor1, compressor2, dehumidifier, economizer, fan, heat1, heat2,
* heat3, heatPumpReversal, humidifer, none, occupancy, userDefined, ventilator, zoneCool, zoneFan,
* zoneHeat
*/
@JsonProperty("type")
public String getType() {
return this.type;
}
/**
* @return the sendUpdate
*/
@JsonProperty("sendUpdate")
public Boolean getSendUpdate() {
return this.sendUpdate;
}
/**
* @return the activeClosed
*/
@JsonProperty("activeClosed")
public Boolean getActiveClosed() {
return this.activeClosed;
}
/**
* @return the activationTime
*/
@JsonProperty("activationTime")
public Integer getActivationTime() {
return this.activationTime;
}
/**
* @return the deactivationTime
*/
@JsonProperty("deactivationTime")
public Integer getDeactivationTime() {
return this.deactivationTime;
}
@Override
public String toString() {
final ToStringBuilder builder = createToStringBuilder();
builder.appendSuper(super.toString());
builder.append("name", this.name);
builder.append("zone", this.zone);
builder.append("outputId", this.outputId);
builder.append("type", this.type);
builder.append("sendUpdate", this.sendUpdate);
builder.append("activeClosed", this.activeClosed);
builder.append("activationTime", this.activationTime);
builder.append("deactivationTime", this.deactivationTime);
return builder.toString();
}
}
/**
* The Location describes the physical location and coordinates of the thermostat as entered by the thermostat
* owner. The address information is used in a geocode look up to obtain the thermostat coordinates. The coordinates
* are used to obtain accurate weather information.
*
* @see <a href="https://www.ecobee.com/home/developer/api/documentation/v1/objects/Location.shtml">Location</a>
* @author John Cocula
*/
@JsonIgnoreProperties(ignoreUnknown = true)
public static class Location extends AbstractMessagePart {
private Integer timeZoneOffsetMinutes;
private String timeZone;
private Boolean isDaylightSaving;
private String streetAddress;
private String city;
private String provinceState;
private String country;
private String postalCode;
private String phoneNumber;
private String mapCoordinates;
/**
* @return the timezone offset in minutes from UTC
*/
@JsonProperty("timeZoneOffsetMinutes")
public Integer getTimeZoneOffsetMinutes() {
return this.timeZoneOffsetMinutes;
}
/**
* @return the Olson timezone the thermostat resides in (e.g America/Toronto)
*/
@JsonProperty("timeZone")
public String getTimeZone() {
return this.timeZone;
}
/**
* @param timeZone
* the Olson timezone the thermostat resides in (e.g America/Toronto)
*/
@JsonProperty("timeZone")
public void setTimeZone(String timeZone) {
this.timeZone = timeZone;
}
/**
* @return whether the thermostat should factor in daylight savings when displaying the date and time
*/
@JsonProperty("isDaylightSaving")
public Boolean getIsDaylightSaving() {
return this.isDaylightSaving;
}
/**
* @param isDaylightSaving
* whether the thermostat should factor in daylight savings when displaying the date and time
*/
@JsonProperty("isDaylightSaving")
public void setIsDaylightSaving(Boolean isDaylightSaving) {
this.isDaylightSaving = isDaylightSaving;
}
/**
* @return the thermostat location street address
*/
@JsonProperty("streetAddress")
public String getStreetAddress() {
return this.streetAddress;
}
/**
* @param streetAddress
* the thermostat location street address
*/
@JsonProperty("streetAddress")
public void setStreetAddress(String streetAddress) {
this.streetAddress = streetAddress;
}
/**
* @return the thermostat location city
*/
@JsonProperty("city")
public String getCity() {
return this.city;
}
/**
* @param city
* the thermostat location city
*/
@JsonProperty("city")
public void setCity(String city) {
this.city = city;
}
/**
* @return the thermostat location state or province
*/
@JsonProperty("provinceState")
public String getProvinceState() {
return this.provinceState;
}
/**
* @param provinceState
* the thermostat location state or province
*/
@JsonProperty("provinceState")
public void setProvinceState(String provinceState) {
this.provinceState = provinceState;
}
/**
* @return the thermostat location country
*/
@JsonProperty("country")
public String getCountry() {
return this.country;
}
/**
* @param country
* the thermostat location country
*/
@JsonProperty("country")
public void setCountry(String country) {
this.country = country;
}
/**
* @return the thermostat location ZIP or postal code
*/
@JsonProperty("postalCode")
public String getPostalCode() {
return this.postalCode;
}
/**
* @param postalCode
* the thermostat location ZIP or postal code
*/
@JsonProperty("postalCode")
public void setPostalCode(String postalCode) {
this.postalCode = postalCode;
}
/**
* @return the thermostat owner's phone number
*/
@JsonProperty("phoneNumber")
public String getPhoneNumber() {
return this.phoneNumber;
}
/**
* @param phoneNumber
* the thermostat owner's phone number
*/
@JsonProperty("phoneNumber")
public void setPhoneNumber(String phoneNumber) {
this.phoneNumber = phoneNumber;
}
/**
* @return the lat/long geographic coordinates of the thermostat location
*/
@JsonProperty("mapCoordinates")
public String getMapCoordinates() {
return this.mapCoordinates;
}
/**
* @param mapCoordinates
* the lat/long geographic coordinates of the thermostat location
*/
@JsonProperty("mapCoordinates")
public void setMapCoordinates(String mapCoordinates) {
this.mapCoordinates = mapCoordinates;
}
@Override
public String toString() {
final ToStringBuilder builder = createToStringBuilder();
builder.appendSuper(super.toString());
builder.append("timeZoneOffsetMinutes", this.timeZoneOffsetMinutes);
builder.append("timeZone", this.timeZone);
builder.append("isDaylightSaving", this.isDaylightSaving);
builder.append("streetAddress", this.streetAddress);
builder.append("city", this.city);
builder.append("provinceState", this.provinceState);
builder.append("country", this.country);
builder.append("postalCode", this.postalCode);
builder.append("phoneNumber", this.phoneNumber);
builder.append("mapCoordinates", this.mapCoordinates);
return builder.toString();
}
}
/**
* The Technician object contains information pertaining to the technician associated with a thermostat. The
* technician may not be modified through the API.
*
* @see <a href="https://www.ecobee.com/home/developer/api/documentation/v1/objects/Technician.shtml">Technician</a>
* @author John Cocula
*/
@JsonIgnoreProperties(ignoreUnknown = true)
public static class Technician extends AbstractMessagePart {
private String contractorRef;
private String name;
private String phone;
private String streetAddress;
private String city;
private String provinceState;
private String country;
private String postalCode;
private String email;
private String web;
/**
* @return the internal ecobee unique identifier for this contractor
*/
@JsonProperty("contractorRef")
public String getContractorRef() {
return this.contractorRef;
}
/**
* @return the company name of the technician
*/
@JsonProperty("name")
public String getName() {
return this.name;
}
/**
* @return the technician's contact phone number
*/
@JsonProperty("phone")
public String getPhone() {
return this.phone;
}
/**
* @return the technician's street address
*/
@JsonProperty("streetAddress")
public String getStreetAddress() {
return this.streetAddress;
}
/**
* @return the technician's city
*/
@JsonProperty("city")
public String getCity() {
return this.city;
}
/**
* @return the technician's State or province
*/
@JsonProperty("provinceState")
public String getProvinceState() {
return this.provinceState;
}
/**
* @return the technician's country
*/
@JsonProperty("country")
public String getCountry() {
return this.country;
}
/**
* @return the technician's ZIP or postal code
*/
@JsonProperty("postalCode")
public String getPostalCode() {
return this.postalCode;
}
/**
* @return the technician's email address
*/
@JsonProperty("email")
public String getEmail() {
return this.email;
}
/**
* @return the technician's web site
*/
@JsonProperty("web")
public String getWeb() {
return this.web;
}
@Override
public String toString() {
final ToStringBuilder builder = createToStringBuilder();
builder.appendSuper(super.toString());
builder.append("contractorRef", this.contractorRef);
builder.append("name", this.name);
builder.append("phone", this.phone);
builder.append("streetAddress", this.streetAddress);
builder.append("city", this.city);
builder.append("provinceState", this.provinceState);
builder.append("country", this.country);
builder.append("postalCode", this.postalCode);
builder.append("email", this.email);
builder.append("web", this.web);
return builder.toString();
}
}
/**
* The Utility information the {@link Thermostat} belongs to. The utility may not be modified through the API.
*
* @see <a href="https://www.ecobee.com/home/developer/api/documentation/v1/objects/Utility.shtml">Utility</a>
* @author John Cocula
*/
@JsonIgnoreProperties(ignoreUnknown = true)
public static class Utility extends AbstractMessagePart {
private String name;
private String phone;
private String email;
private String web;
/**
* @return the Utility company name
*/
@JsonProperty("name")
public String getName() {
return this.name;
}
/**
* @return the Utility company contact phone number
*/
@JsonProperty("phone")
public String getPhone() {
return this.phone;
}
/**
* @return the Utility company email address
*/
@JsonProperty("email")
public String getEmail() {
return this.email;
}
/**
* @return the Utility company web site
*/
@JsonProperty("web")
public String getWeb() {
return this.web;
}
@Override
public String toString() {
final ToStringBuilder builder = createToStringBuilder();
builder.appendSuper(super.toString());
builder.append("name", this.name);
builder.append("phone", this.phone);
builder.append("email", this.email);
builder.append("web", this.web);
return builder.toString();
}
}
/**
* The Management object contains information about the management company the thermostat belongs to. The Management
* object is read-only, it may be modified in the web portal.
*
* @see <a href="https://www.ecobee.com/home/developer/api/documentation/v1/objects/Management.shtml">Management</a>
* @author John Cocula
*/
@JsonIgnoreProperties(ignoreUnknown = true)
public static class Management extends AbstractMessagePart {
private String administrativeContact;
private String billingContact;
private String name;
private String phone;
private String email;
private String web;
private Boolean showAlertIdt;
private Boolean showAlertWeb;
/**
* @return the administrative contact name
*/
@JsonProperty("administrativeContact")
public String getAdministrativeContact() {
return this.administrativeContact;
}
/**
* @return the billing contact name
*/
@JsonProperty("billingContact")
public String getBillingContact() {
return this.billingContact;
}
/**
* @return the company name
*/
@JsonProperty("name")
public String getName() {
return this.name;
}
/**
* @return the phone number
*/
@JsonProperty("phone")
public String getPhone() {
return this.phone;
}
/**
* @return the contact email address
*/
@JsonProperty("email")
public String getEmail() {
return this.email;
}
/**
* @return the company web site
*/
@JsonProperty("web")
public String getWeb() {
return this.web;
}
/**
* @return the showAlertIdt
*/
@JsonProperty("showAlertIdt")
public Boolean getShowAlertIdt() {
return this.showAlertIdt;
}
/**
* @return the showAlertWeb
*/
@JsonProperty("showAlertWeb")
public Boolean getShowAlertWeb() {
return this.showAlertWeb;
}
@Override
public String toString() {
final ToStringBuilder builder = createToStringBuilder();
builder.appendSuper(super.toString());
builder.append("administrativeContact", this.administrativeContact);
builder.append("billingContact", this.billingContact);
builder.append("name", this.name);
builder.append("phone", this.phone);
builder.append("email", this.email);
builder.append("web", this.web);
builder.append("showAlertIdt", this.showAlertIdt);
builder.append("showAlertWeb", this.showAlertWeb);
return builder.toString();
}
}
/**
* The Weather object contains the weather and forecast information for the thermostat's location.
*
* @see <a href="https://www.ecobee.com/home/developer/api/documentation/v1/objects/Weather.shtml">Weather</a>
* @author John Cocula
*/
@JsonIgnoreProperties(ignoreUnknown = true)
public static class Weather extends AbstractMessagePart {
private Date timestamp;
private String weatherStation;
private List<WeatherForecast> forecasts;
/**
* @return the time stamp in UTC of the weather forecast
*/
@JsonProperty("timestamp")
public Date getTimestamp() {
return this.timestamp;
}
/**
* @return the weather station identifier
*/
@JsonProperty("weatherStation")
public String getWeatherStation() {
return this.weatherStation;
}
/**
* @return the list of latest weather station forecasts
*/
@JsonProperty("forecasts")
public List<WeatherForecast> getForecasts() {
return this.forecasts;
}
@Override
public String toString() {
final ToStringBuilder builder = createToStringBuilder();
builder.appendSuper(super.toString());
builder.append("timestamp", this.timestamp);
builder.append("weatherStation", this.weatherStation);
builder.append("forecasts", this.forecasts);
return builder.toString();
}
}
/**
* The Weather Forecast contains the weather forecast information for the thermostat. The first forecast is the most
* accurate, later forecasts become less accurate in distance and time.
*
* The <code>weatherSymbol</code> field can be used by the API caller to display a particular icon or message for
* example. The values mapping for the weather to <code>weatherSymbol</code> field is:
*
* <table>
* <tbody>
* <tr>
* <th>meaning</th>
* <th>weatherSymbol</th>
* </tr>
* <tr>
* <td>no_symbol</td>
* <td>-2</td>
* </tr>
* <tr>
* <td>sunny</td>
* <td>0</td>
* </tr>
* <tr>
* <td>few_clouds</td>
* <td>1</td>
* </tr>
* <tr>
* <td>partly_cloudy</td>
* <td>2</td>
* </tr>
* <tr>
* <td>mostly_cloudy</td>
* <td>3</td>
* </tr>
* <tr>
* <td>overcast</td>
* <td>4</td>
* </tr>
* <tr>
* <td>drizzle</td>
* <td>5</td>
* </tr>
* <tr>
* <td>rain</td>
* <td>6
* <tr>
* <td>freezing_rain</td>
* <td>7</td>
* </tr>
* <tr>
* <td>showers</td>
* <td>8</td>
* </tr>
* <tr>
* <td>hail</td>
* <td>9</td>
* </tr>
* <tr>
* <td>snow</td>
* <td>10</td>
* </tr>
* <tr>
* <td>flurries</td>
* <td>11</td>
* </tr>
* <tr>
* <td>freezing_snow</td>
* <td>12</td>
* </tr>
* <tr>
* <td>blizzard</td>
* <td>13</td>
* </tr>
* <tr>
* <td>pellets</td>
* <td>14
* <tr>
* <td>thunderstorm</td>
* <td>15</td>
* </tr>
* <tr>
* <td>windy</td>
* <td>16</td>
* </tr>
* <tr>
* <td>tornado</td>
* <td>17</td>
* </tr>
* <tr>
* <td>fog</td>
* <td>18</td>
* </tr>
* <tr>
* <td>haze</td>
* <td>19</td>
* </tr>
* <tr>
* <td>smoke</td>
* <td>20</td>
* </tr>
* <tr>
* <td>dust</td>
* <td>21</td>
* </tr>
* </tbody>
* </table>
*
* @see <a
* href="https://www.ecobee.com/home/developer/api/documentation/v1/objects/WeatherForecast.shtml">
* WeatherForecast</a>
* @author John Cocula
*/
@JsonIgnoreProperties(ignoreUnknown = true)
public static class WeatherForecast extends AbstractMessagePart {
private Integer weatherSymbol;
private Date dateTime;
private String condition;
private Temperature temperature;
private Integer pressure;
private Integer relativeHumidity;
private Integer dewpoint;
private Integer visibility;
private Integer windSpeed;
private Integer windGust;
private String windDirection;
private Integer windBearing;
private Integer pop;
private Temperature tempHigh;
private Temperature tempLow;
private Integer sky;
/**
* @return the weatherSymbol
*/
@JsonProperty("weatherSymbol")
public Integer getWeatherSymbol() {
return this.weatherSymbol;
}
/**
* @return the time stamp of the weather forecast
*/
@JsonProperty("dateTime")
public Date getDateTime() {
return this.dateTime;
}
/**
* @return the condition
*/
@JsonProperty("condition")
public String getCondition() {
return this.condition;
}
/**
* @return the current temperature
*/
@JsonProperty("temperature")
public Temperature getTemperature() {
return this.temperature;
}
/**
* @return the current barometric pressure
*/
@JsonProperty("pressure")
public Integer getPressure() {
return this.pressure;
}
/**
* @return the current humidity
*/
@JsonProperty("relativeHumidity")
public Integer getRelativeHumidity() {
return this.relativeHumidity;
}
/**
* @return the dewpoint
*/
@JsonProperty("dewpoint")
public Integer getDewpoint() {
return this.dewpoint;
}
/**
* @return the visibility
*/
@JsonProperty("visibility")
public Integer getVisibility() {
return this.visibility;
}
/**
* @return the wind speed as an integer in mph * 1000
*/
@JsonProperty("windSpeed")
public Integer getWindSpeed() {
return this.windSpeed;
}
/**
* @return the windGust
*/
@JsonProperty("windGust")
public Integer getWindGust() {
return this.windGust;
}
/**
* @return the wind direction
*/
@JsonProperty("windDirection")
public String getWindDirection() {
return this.windDirection;
}
/**
* @return the wind bearing
*/
@JsonProperty("windBearing")
public Integer getWindBearing() {
return this.windBearing;
}
/**
* @return the probability of precipitation
*/
@JsonProperty("pop")
public Integer getPop() {
return this.pop;
}
/**
* @return the predicted high temperature for the day
*/
@JsonProperty("tempHigh")
public Temperature getTempHigh() {
return this.tempHigh;
}
/**
* @return the predicted low temperature for the day
*/
@JsonProperty("tempLow")
public Temperature getTempLow() {
return this.tempLow;
}
/**
* @return the cloud cover condition
*/
@JsonProperty("sky")
public Integer getSky() {
return this.sky;
}
@Override
public String toString() {
final ToStringBuilder builder = createToStringBuilder();
builder.appendSuper(super.toString());
builder.append("weatherSymbol", this.weatherSymbol);
builder.append("dateTime", this.dateTime);
builder.append("condition", this.condition);
builder.append("temperature", this.temperature);
builder.append("pressure", this.pressure);
builder.append("relativeHumidity", this.relativeHumidity);
builder.append("dewpoint", this.dewpoint);
builder.append("visibility", this.visibility);
builder.append("windSpeed", this.windSpeed);
builder.append("windGust", this.windGust);
builder.append("windDirection", this.windDirection);
builder.append("windBearing", this.windBearing);
builder.append("pop", this.pop);
builder.append("tempHigh", this.tempHigh);
builder.append("tempLow", this.tempLow);
builder.append("sky", this.sky);
return builder.toString();
}
}
/**
* The event object represents a scheduled thermostat program change. All events have a start and end time during
* which the thermostat runtime settings will be modified. Events may not be directly modified, various Functions
* provide the capability to modify the calendar events and to modify the program. The event list is sorted with
* events ordered by whether they are currently running and the internal priority of each event. It is safe to take
* the first event which is running and show it as the currently running event. When the resume function is used,
* events are removed in the order they are listed here.
*
* Note that the start/end date/time for the event must be in thermostat time and are not specified in UTC.
*
* Event Priorities
*
* The events are listed from top priority first to lowest priority. They will appear in the events list in the same
* order as listed here provided they are active currently.
*
* <table>
* <tr>
* <td>Type</td>
* <td>Event Type</td>
* </tr>
* <tr>
* <td>hold</td>
* <td>Hold temperature event.</td>
* </tr>
* <tr>
* <td>demandResponse</td>
* <td>Demand Response event.</td>
* </tr>
* <tr>
* <td>sensor</td>
* <td>Sensor generated event.</td>
* </tr>
* <tr>
* <td>switchOccupancy</td>
* <td>EMS only event to flip unoccupied to occupied, and vice versa. Look at name to determine whether "occupied"
* or "unoccupied".</td>
* </tr>
* <tr>
* <td>vacation</td>
* <td>Vacation event.</td>
* </tr>
* <tr>
* <td>quickSave</td>
* <td>Quick Save event.</td>
* </tr>
* <tr>
* <td>today</td>
* <td>Today widget generated event.</td>
* </tr>
* <tr>
* <td>template</td>
* <td>A vacation event that reflects the thermostat owner's default preferences for any created vacation. Template
* events are never active and are only used to store the last used vacation settings of the thermostat owner.</td>
* </tr>
* </table>
*
* @see <a href="https://www.ecobee.com/home/developer/api/documentation/v1/objects/Event.shtml">Event</a>
* @author John Cocula
*/
@JsonIgnoreProperties(ignoreUnknown = true)
public static class Event extends AbstractMessagePart {
private String type;
private String name;
@JsonProperty("running")
private Boolean running;
// TODO Jackson 1.9 dates (@watou)
private String startDate;
private String startTime;
private String endDate;
private String endTime;
@JsonProperty("isOccupied")
private Boolean _isOccupied;
@JsonProperty("isCoolOff")
private Boolean _isCoolOff;
@JsonProperty("isHeatOff")
private Boolean _isHeatOff;
private Temperature coolHoldTemp;
private Temperature heatHoldTemp;
private FanMode fan;
private VentilatorMode vent;
private Integer ventilatorMinOnTime;
@JsonProperty("isOptional")
private Boolean _isOptional;
@JsonProperty("isTemperatureRelative")
private Boolean _isTemperatureRelative;
private Temperature coolRelativeTemp;
private Temperature heatRelativeTemp;
@JsonProperty("isTemperatureAbsolute")
private Boolean _isTemperatureAbsolute;
private Integer dutyCyclePercentage;
private Integer fanMinOnTime;
private Boolean occupiedSensorActive;
private Boolean unoccupiedSensorActive;
private Temperature drRampUpTemp;
private Integer drRampUpTime;
private String linkRef;
private String holdClimateRef;
/**
* @return the type of event. Values: hold, demandResponse, sensor, switchOccupancy, vacation, quickSave, today
*/
@JsonProperty("type")
public String getType() {
return this.type;
}
/**
* @return the unique event name
*/
@JsonProperty("name")
public String getName() {
return this.name;
}
/**
* @return whether the event is currently active or not
*/
@JsonProperty("running")
public Boolean isRunning() {
return this.running;
}
/**
* @return the event start date in thermostat local time
*/
@JsonProperty("startDate")
public String getStartDate() {
return this.startDate;
}
/**
* @return the event start time in thermostat local time
*/
@JsonProperty("startTime")
public String getStartTime() {
return this.startTime;
}
/**
* @return the event end date in thermostat local time
*/
@JsonProperty("endDate")
public String getEndDate() {
return this.endDate;
}
/**
* @return the event end time in thermostat local time
*/
@JsonProperty("endTime")
public String getEndTime() {
return this.endTime;
}
/**
* @return whether there are persons occupying the property during the event
*/
@JsonProperty("isOccupied")
public Boolean isOccupied() {
return this._isOccupied;
}
/**
* Set the isOccupied.
*
* @param occupied
*/
public void setOccupied(Boolean occupied) {
this._isOccupied = occupied;
}
/**
* @return whether cooling will be turned off during the event
*/
@JsonProperty("isCoolOff")
public Boolean isCoolOff() {
return this._isCoolOff;
}
/**
* Set the isCoolOff.
*
* @param coolOff
*/
public void setCoolOff(Boolean coolOff) {
this._isCoolOff = coolOff;
}
/**
* @return whether heating will be turned off during the event
*/
@JsonProperty("isHeatOff")
public Boolean isHeatOff() {
return this._isHeatOff;
}
/**
* Set the isHeatOff.
*
* @param heatOff
*/
public void setHeatOff(Boolean heatOff) {
this._isHeatOff = heatOff;
}
/**
* @return the cooling absolute temperature to set
*/
@JsonProperty("coolHoldTemp")
public Temperature getCoolHoldTemp() {
return this.coolHoldTemp;
}
/**
* Set the coolHoldTemp.
*
* @param coolHoldTemp
*/
public void setCoolHoldTemp(Temperature coolHoldTemp) {
this.coolHoldTemp = coolHoldTemp;
}
/**
* @return the heating absolute temperature to set
*/
@JsonProperty("heatHoldTemp")
public Temperature getHeatHoldTemp() {
return this.heatHoldTemp;
}
/**
* Set the heatHoldTemp.
*
* @param heatHoldTemp
*/
public void setHeatHoldTemp(Temperature heatHoldTemp) {
this.heatHoldTemp = heatHoldTemp;
}
/**
* @return the fan mode during the event. Values: auto, on Default: based on current climate and hvac mode
*/
@JsonProperty("fan")
public FanMode getFan() {
return this.fan;
}
/**
* Set the fan mode.
*
* @param fan
*/
public void setFan(FanMode fan) {
this.fan = fan;
}
/**
* @return the ventilator mode during the event. Values: auto, minontime, on, off
*/
@JsonProperty("vent")
public VentilatorMode getVent() {
return this.vent;
}
/**
* Set the ventilator mode.
*
* @param vent
*/
public void setVent(VentilatorMode vent) {
this.vent = vent;
}
/**
* @return the minimum amount of time the ventilator equipment must stay on on each duty cycle
*/
@JsonProperty("ventilatorMinOnTime")
public Integer getVentilatorMinOnTime() {
return this.ventilatorMinOnTime;
}
/**
* Set the ventilatorMinOnTime.
*
* @param ventilatorMinOnTime
*/
public void setVentilatorMinOnTime(Integer ventilatorMinOnTime) {
this.ventilatorMinOnTime = ventilatorMinOnTime;
}
/**
* @return whether this event is mandatory or the end user can cancel it
*/
@JsonProperty("isOptional")
public Boolean isOptional() {
return this._isOptional;
}
/**
* Set the isOptional.
*
* @param optional
*/
public void setOptional(Boolean optional) {
this._isOptional = optional;
}
/**
* @return whether the event is using a relative temperature setting to the currently active program climate
*/
@JsonProperty("isTemperatureRelative")
public Boolean isTemperatureRelative() {
return this._isTemperatureRelative;
}
/**
* Set the isTemperatureRelative.
*
* @param temperatureRelative
*/
public void setTemperatureRelative(Boolean temperatureRelative) {
this._isTemperatureRelative = temperatureRelative;
}
/**
* @return the relative cool temperature adjustment
*/
@JsonProperty("coolRelativeTemp")
public Temperature getCoolRelativeTemp() {
return this.coolRelativeTemp;
}
/**
* Set the coolRelativeTemp.
*
* @param coolRelativeTemp
*/
public void setCoolRelativeTemp(Temperature coolRelativeTemp) {
this.coolRelativeTemp = coolRelativeTemp;
}
/**
* @return the relative heat temperature adjustment
*/
@JsonProperty("heatRelativeTemp")
public Temperature getHeatRelativeTemp() {
return this.heatRelativeTemp;
}
/**
* Set the heatRelativeTemp.
*
* @param heatRelativeTemp
*/
public void setHeatRelativeTemp(Temperature heatRelativeTemp) {
this.heatRelativeTemp = heatRelativeTemp;
}
/**
* @return whether the event uses absolute temperatures to set the values. Default: true for DRs
*/
@JsonProperty("isTemperatureAbsolute")
public Boolean isTemperatureAbsolute() {
return this._isTemperatureAbsolute;
}
/**
* Set the isTemperatureAbsolute.
*
* @param temperatureAbsolute
*/
public void setTemperatureAbsolute(Boolean temperatureAbsolute) {
this._isTemperatureAbsolute = temperatureAbsolute;
}
/**
* @return the dutyCyclePercentage
*/
@JsonProperty("dutyCyclePercentage")
public Integer getDutyCyclePercentage() {
return this.dutyCyclePercentage;
}
/**
* @return the minimum number of minutes to run the fan each hour. Range: 0-60, Default: 0
*/
@JsonProperty("fanMinOnTime")
public Integer getFanMinOnTime() {
return this.fanMinOnTime;
}
/**
* Set the fanMinOnTime.
*
* @param fanMinOnTime
*/
public void setFanMinOnTime(Integer fanMinOnTime) {
this.fanMinOnTime = fanMinOnTime;
}
/**
* @return the occupiedSensorActive
*/
@JsonProperty("occupiedSensorActive")
public Boolean isOccupiedSensorActive() {
return this.occupiedSensorActive;
}
/**
* @return the unoccupiedSensorActive
*/
@JsonProperty("unoccupiedSensorActive")
public Boolean isUnoccupiedSensorActive() {
return this.unoccupiedSensorActive;
}
/**
* @return unsupported. Future feature
*/
@JsonProperty("drRampUpTemp")
public Temperature getDrRampUpTemp() {
return this.drRampUpTemp;
}
/**
* @return unsupported. Future feature
*/
@JsonProperty("drRampUpTime")
public Integer getDrRampUpTime() {
return this.drRampUpTime;
}
/**
* @return unique identifier set by the server to link one or more events and alerts together
*/
@JsonProperty("linkRef")
public String getLinkRef() {
return this.linkRef;
}
/**
* @return used for display purposes to indicate what climate (if any) is being used for the hold
*/
@JsonProperty("holdClimateRef")
public String getHoldClimateRef() {
return this.holdClimateRef;
}
/**
* Set the holdClimateRef.
*
* @param holdClimateRef
*/
public void setHoldClimateRef(String holdClimateRef) {
this.holdClimateRef = holdClimateRef;
}
@Override
public String toString() {
final ToStringBuilder builder = createToStringBuilder();
builder.appendSuper(super.toString());
builder.append("type", this.type);
builder.append("name", this.name);
builder.append("running", this.running);
builder.append("startDate", this.startDate);
builder.append("startTime", this.startTime);
builder.append("endDate", this.endDate);
builder.append("endTime", this.endTime);
builder.append("isOccupied", this._isOccupied);
builder.append("isCoolOff", this._isCoolOff);
builder.append("isHeatOff", this._isHeatOff);
builder.append("coolHoldTemp", this.coolHoldTemp);
builder.append("heatHoldTemp", this.heatHoldTemp);
builder.append("fan", this.fan);
builder.append("vent", this.vent);
builder.append("ventilatorMinOnTime", this.ventilatorMinOnTime);
builder.append("isOptional", this._isOptional);
builder.append("isTemperatureRelative", this._isTemperatureRelative);
builder.append("coolRelativeTemp", this.coolRelativeTemp);
builder.append("heatRelativeTemp", this.heatRelativeTemp);
builder.append("isTemperatureAbsolute", this._isTemperatureAbsolute);
builder.append("dutyCyclePercentage", this.dutyCyclePercentage);
builder.append("fanMinOnTime", this.fanMinOnTime);
builder.append("occupiedSensorActive", this.occupiedSensorActive);
builder.append("unoccupiedSensorActive", this.unoccupiedSensorActive);
builder.append("drRampUpTemp", this.drRampUpTemp);
builder.append("drRampUpTime", this.drRampUpTime);
builder.append("linkRef", this.linkRef);
builder.append("holdClimateRef", this.holdClimateRef);
return builder.toString();
}
}
/**
* The thermostat Program is a container for the {@link #schedule} and its {@link #climates}.
*
* See Core Concepts for details on how the program is structured. The {@link #schedule} property is a two
* dimensional array containing the climate names.
*
* @see <a href="https://www.ecobee.com/home/developer/api/documentation/v1/objects/Program.shtml">Program</a>
* @see <a href="https://www.ecobee.com/home/developer/api/documentation/v1/technical-notes.shtml">Core Concepts</a>
* @author John Cocula
*/
@JsonIgnoreProperties(ignoreUnknown = true)
public static class Program extends AbstractMessagePart {
private List<List<String>> schedule;
private List<Climate> climates;
private String currentClimateRef;
/**
* @return the schedule object defining the program schedule
*/
@JsonProperty("schedule")
public List<List<String>> getSchedule() {
return this.schedule;
}
/**
* @param schedule
* the schedule object defining the program schedule
*/
@JsonProperty("schedule")
public void setSchedule(List<List<String>> schedule) {
this.schedule = schedule;
}
/**
* @return the list of {@link Climate} objects defining all the climates in the program schedule
*/
@JsonProperty("climates")
public List<Climate> getClimates() {
return this.climates;
}
/**
* @param climates
* the list of {@link Climate} objects defining all the climates in the program schedule
*/
@JsonProperty("climates")
public void setClimates(List<Climate> climates) {
this.climates = climates;
}
/**
* @return the currently active climate, identified by its ClimateRef
*/
@JsonProperty("currentClimateRef")
public String getCurrentClimateRef() {
return this.currentClimateRef;
}
@Override
public String toString() {
final ToStringBuilder builder = createToStringBuilder();
builder.appendSuper(super.toString());
builder.append("schedule", this.schedule);
builder.append("climates", this.climates);
builder.append("currentClimateRef", this.currentClimateRef);
return builder.toString();
}
}
/**
* A climate defines a thermostat settings template which is then applied to individual period cells of the
* schedule. The result is that if you modify the Climate, all schedule cells which reference that Climate will
* automatically be changed.
*
* <p>
* When adding a Climate it is optional whether you reference the new Climate in the schedule cells in the same
* request or not. However, when deleting a Climate (by omitting that entire Climate object from the POST request)
* it can not be be deleted if it is still referenced in the schedule cells.
*
* <p>
* There are three default Climates for each {@link Thermostat}, with possible <code>climateRef</code> values of
* "away", "home", and "sleep". There are two default Climates for the EMS thermostat, with possible
* <code>climateRef</code> values of "occupied" and "unoccupied". None of these defaults can be deleted and trying
* to do so will return an exception. The remaining fields can be modified.
*
* <p>
* Climates may be modified (you can add, update or remove climates). However, it is important to note that the
* <code>climateRef</code> is required and read-only for an existing climate and cannot be changed. The
* {@link Climate#name} can be edited so long as it is unique.
*
* <p>
* If the <code>climateRef</code> for an existing climate is not included in an API call it is assumed this is a net
* new climate. The climateRef must always be supplied for the default climates.
*
* @see <a href="https://www.ecobee.com/home/developer/api/documentation/v1/objects/Climate.shtml">Climate</a>
* @author John Cocula
*/
@JsonIgnoreProperties(ignoreUnknown = true)
public static class Climate extends AbstractMessagePart {
private String name;
private String climateRef;
private Boolean _isOccupied;
private Boolean _isOptimized;
private FanMode coolFan;
private FanMode heatFan;
private VentilatorMode vent;
private Integer ventilatorMinOnTime;
private String owner;
private String type;
private Integer colour;
private Temperature coolTemp;
private Temperature heatTemp;
public Climate(@JsonProperty("name") String name) {
this.name = name;
}
/**
* @return the unique climate name. The name may be changed without affecting the program integrity so long as
* uniqueness is maintained.
*/
@JsonProperty("name")
public String getName() {
return this.name;
}
/**
* @param name
* the unique climate name. The name may be changed without affecting the program integrity so long
* as uniqueness is maintained.
*/
@JsonProperty("name")
public void setName(String name) {
this.name = name;
}
/**
* @return the unique climate identifier. Changing the identifier is not possible and it is generated on the
* server for each climate. If this value is not supplied a new climate will be created. For the default
* climates and existing user created climates the climateRef should be supplied - see note above.
*/
@JsonProperty("climateRef")
public String getClimateRef() {
return this.climateRef;
}
/**
* @return a flag indicating whether the property is occupied by persons during this climate
*/
@JsonProperty("isOccupied")
public Boolean isOccupied() {
return this._isOccupied;
}
/**
* @param isOccupied
* a flag indicating whether the property is occupied by persons during this climate
*/
@JsonProperty("isOccupied")
public void setIsOccupied(Boolean isOccupied) {
this._isOccupied = isOccupied;
}
/**
* @return a flag indicating whether ecobee optimized climate settings are used by this climate
*/
@JsonProperty("isOptimized")
public Boolean isOptimized() {
return this._isOptimized;
}
/**
* @param isOptimized
* a flag indicating whether ecobee optimized climate settings are used by this climate
*/
@JsonProperty("isOptimized")
public void setIsOptimized(Boolean isOptimized) {
this._isOptimized = isOptimized;
}
/**
* @return the cooling fan mode. Default: on Values: auto, on
*/
@JsonProperty("coolFan")
public FanMode getCoolFan() {
return this.coolFan;
}
/**
* @param coolFan
* the cooling fan mode. Default: on Values: auto, on
*/
@JsonProperty("coolFan")
public void setCoolFan(FanMode coolFan) {
this.coolFan = coolFan;
}
/**
* @return the heating fan mode. Default: on Values: auto, on
*/
@JsonProperty("heatFan")
public FanMode getHeatFan() {
return this.heatFan;
}
/**
* @param heatFan
* the heating fan mode. Default: on Values: auto, on
*/
@JsonProperty("heatFan")
public void setHeatFan(FanMode heatFan) {
this.heatFan = heatFan;
}
/**
* @return the ventilator mode. Default: off Values: auto, minontime, on, off
*/
@JsonProperty("vent")
public VentilatorMode getVent() {
return this.vent;
}
/**
* @param vent
* the ventilator mode. Default: off Values: auto, minontime, on, off
*/
@JsonProperty("vent")
public void setVent(VentilatorMode vent) {
this.vent = vent;
}
/**
* @return the minimum time, in minutes, to run the ventilator each hour
*/
@JsonProperty("ventilatorMinOnTime")
public Integer getVentilatorMinOnTime() {
return this.ventilatorMinOnTime;
}
/**
* @param ventilatorMinOnTime
* the minimum time, in minutes, to run the ventilator each hour
*/
@JsonProperty("ventilatorMinOnTime")
public void setVentilatorMinOnTime(Integer ventilatorMinOnTime) {
this.ventilatorMinOnTime = ventilatorMinOnTime;
}
/**
* @return the climate owner. Default: system Values: adHoc, demandResponse, quickSave, sensorAction,
* switchOccupancy, system, template, user
*/
@JsonProperty("owner")
public String getOwner() {
return this.owner;
}
/**
* @param owner
* the climate owner. Default: system Values: adHoc, demandResponse, quickSave, sensorAction,
* switchOccupancy, system, template, user
*/
@JsonProperty("owner")
public void setOwner(String owner) {
this.owner = owner;
}
/**
* @return the type of climate. Default: program Values: calendarEvent, program
*/
@JsonProperty("type")
public String getType() {
return this.type;
}
/**
* @param type
* the type of climate. Default: program Values: calendarEvent, program
*/
@JsonProperty("type")
public void setType(String type) {
this.type = type;
}
/**
* @return the integer conversion of the HEX color value used to display this climate on the thermostat and on
* the web portal
*/
@JsonProperty("colour")
public Integer getColour() {
return this.colour;
}
/**
* @param colour
* the integer conversion of the HEX color value used to display this climate on the thermostat and
* on the web portal
*/
@JsonProperty("colour")
public void setColour(Integer colour) {
this.colour = colour;
}
/**
* @return the cool temperature for this climate
*/
@JsonProperty("coolTemp")
public Temperature getCoolTemp() {
return this.coolTemp;
}
/**
* @param coolTemp
* the cool temperature for this climate
*/
@JsonProperty("coolTemp")
public void setCoolTemp(Temperature coolTemp) {
this.coolTemp = coolTemp;
}
/**
* @return the heat temperature for this climate
*/
@JsonProperty("heatTemp")
public Temperature getHeatTemp() {
return this.heatTemp;
}
/**
* @param heatTemp
* the heat temperature for this climate
*/
@JsonProperty("heatTemp")
public void setHeatTemp(Temperature heatTemp) {
this.heatTemp = heatTemp;
}
@Override
public String toString() {
final ToStringBuilder builder = createToStringBuilder();
builder.appendSuper(super.toString());
builder.append("name", this.name);
builder.append("climateRef", this.climateRef);
builder.append("isOccupied", this._isOccupied);
builder.append("isOptimized", this._isOptimized);
builder.append("coolFan", this.coolFan);
builder.append("heatFan", this.heatFan);
builder.append("vent", this.vent);
builder.append("ventilatorMinOnTime", this.ventilatorMinOnTime);
builder.append("owner", this.owner);
builder.append("type", this.type);
builder.append("colour", this.colour);
builder.append("coolTemp", this.coolTemp);
builder.append("heatTemp", this.heatTemp);
return builder.toString();
}
}
/**
* The HouseDetails object contains the information about the house the thermostat is installed in.
*
* @see <a
* href="https://www.ecobee.com/home/developer/api/documentation/v1/objects/HouseDetails.shtml">HouseDetails
* </a>
* @author John Cocula
*/
@JsonIgnoreProperties(ignoreUnknown = true)
public static class HouseDetails extends AbstractMessagePart {
private String style;
private Integer size;
private Integer numberOfFloors;
private Integer numberOfRooms;
private Integer numberOfOccupants;
private Integer age;
/**
* @return the style of house. Values: other, apartment, condominium, detached, loft, multiPlex, rowHouse,
* semiDetached, townhouse, and 0 for unknown
*/
@JsonProperty("style")
public String getStyle() {
return this.style;
}
/**
* @param style
* the style of house. Values: other, apartment, condominium, detached, loft, multiPlex, rowHouse,
* semiDetached, townhouse, and 0 for unknown
*/
@JsonProperty("style")
public void setStyle(String style) {
this.style = style;
}
/**
* @return the size of the house in square feet
*/
@JsonProperty("size")
public Integer getSize() {
return this.size;
}
/**
* @param size
* the size of the house in square feet
*/
@JsonProperty("size")
public void setSize(Integer size) {
this.size = size;
}
/**
* @return the number of floors or levels in the house
*/
@JsonProperty("numberOfFloors")
public Integer getNumberOfFloors() {
return this.numberOfFloors;
}
/**
* @param numberOfFloors
* the numberOfFloors to set
*/
@JsonProperty("numberOfFloors")
public void setNumberOfFloors(Integer numberOfFloors) {
this.numberOfFloors = numberOfFloors;
}
/**
* @return the number of rooms in the house
*/
@JsonProperty("numberOfRooms")
public Integer getNumberOfRooms() {
return this.numberOfRooms;
}
/**
* @param numberOfRooms
* the number of rooms in the house
*/
@JsonProperty("numberOfRooms")
public void setNumberOfRooms(Integer numberOfRooms) {
this.numberOfRooms = numberOfRooms;
}
/**
* @return the number of occupants living in the house
*/
@JsonProperty("numberOfOccupants")
public Integer getNumberOfOccupants() {
return this.numberOfOccupants;
}
/**
* @param numberOfOccupants
* the number of occupants living in the house
*/
@JsonProperty("numberOfOccupants")
public void setNumberOfOccupants(Integer numberOfOccupants) {
this.numberOfOccupants = numberOfOccupants;
}
/**
* @return the age of house in years
*/
@JsonProperty("age")
public Integer getAge() {
return this.age;
}
/**
* @param age
* the age of house in years
*/
@JsonProperty("age")
public void setAge(Integer age) {
this.age = age;
}
@Override
public String toString() {
final ToStringBuilder builder = createToStringBuilder();
builder.appendSuper(super.toString());
builder.append("style", this.style);
builder.append("size", this.size);
builder.append("numberOfFloors", this.numberOfFloors);
builder.append("numberOfRooms", this.numberOfRooms);
builder.append("numberOfOccupants", this.numberOfOccupants);
builder.append("age", this.age);
return builder.toString();
}
}
/**
* The OemCfg object contains information about the OEM specific thermostat.
*
* @author John Cocula
*/
@JsonIgnoreProperties(ignoreUnknown = true)
public static class ThermostatOemCfg extends AbstractMessagePart {
@Override
public String toString() {
final ToStringBuilder builder = createToStringBuilder();
builder.appendSuper(super.toString());
return builder.toString();
}
}
/**
* The Thermostat NotificationSettings object is a container for the configuration of the possible alerts and
* reminders which can be generated by the Thermostat.
*
* <p>
* The NotificationsSettings supports retrieval through a Thermostat GET call, setting the
* <code>includeNotificationSettings</code> to <code>true</code> in the {@link Selection}.
*
* <p>
* The NotificationsSettings object can also be updated using the Thermostat POST method. When POSTing updates to
* this object please take a note of the required fields, allowed values, and notes about the email address below.
*
* <p>
* The type corresponds to the {@link Alert#notificationType} returned when alerts are included in the selection.
* See {@link Alert} for more information. When the type is anything other than alert its configuration will be
* listed here as part of the NotificationSettings.
*
* @see <a
* href="https://www.ecobee.com/home/developer/api/documentation/v1/objects/NotificationSettings.shtml">
* NotificationSettings</a>
* @author John Cocula
*/
@JsonIgnoreProperties(ignoreUnknown = true)
public static class NotificationSettings extends AbstractMessagePart {
private List<String> emailAddresses;
private Boolean emailNotificationsEnabled;
private List<EquipmentSetting> equipment;
private List<GeneralSetting> general;
private List<LimitSetting> limit;
/**
* @return the list of email addresses alerts and reminders will be sent to.
*/
@JsonProperty("emailAddresses")
public List<String> getEmailAddresses() {
return this.emailAddresses;
}
/**
* @param emailAddresses
* the list of email addresses alerts and reminders will be sent to. The full list of email addresses
* must be sent in any update request. If any are missing from that list they will be deleted. If an
* empty list is sent, any email addresses will be deleted.
*/
@JsonProperty("emailAddresses")
public void setEmailAddresses(List<String> emailAddresses) {
this.emailAddresses = emailAddresses;
}
/**
* @return boolean value representing whether or not alerts and reminders will be sent to the email addresses
* listed above when triggered
*/
@JsonProperty("emailNotificationsEnabled")
public Boolean getEmailNotificationsEnabled() {
return this.emailNotificationsEnabled;
}
/**
* @param emailNotificationsEnabled
* boolean value representing whether or not alerts and reminders will be sent to the email addresses
* listed above when triggered
*/
@JsonProperty("emailNotificationsEnabled")
public void setEmailNotificationsEnabled(Boolean emailNotificationsEnabled) {
this.emailNotificationsEnabled = emailNotificationsEnabled;
}
/**
* @return the list of equipment specific alert and reminder settings
*/
@JsonProperty("equipment")
public List<EquipmentSetting> getEquipment() {
return this.equipment;
}
/**
* @param equipment
* the list of equipment specific alert and reminder settings
*/
@JsonProperty("equipment")
public void setEquipment(List<EquipmentSetting> equipment) {
this.equipment = equipment;
}
/**
* @return the list of general alert and reminder settings
*/
@JsonProperty("general")
public List<GeneralSetting> getGeneral() {
return this.general;
}
/**
* @param general
* the list of general alert and reminder settings
*/
@JsonProperty("general")
public void setGeneral(List<GeneralSetting> general) {
this.general = general;
}
/**
* @return the list of limit specific alert and reminder settings
*/
@JsonProperty("limit")
public List<LimitSetting> getLimit() {
return this.limit;
}
/**
* @param limit
* the list of limit specific alert and reminder settings
*/
@JsonProperty("limit")
public void setLimit(List<LimitSetting> limit) {
this.limit = limit;
}
@Override
public String toString() {
final ToStringBuilder builder = createToStringBuilder();
builder.appendSuper(super.toString());
builder.append("emailAddresses", this.emailAddresses);
builder.append("emailNotificationsEnabled", this.emailNotificationsEnabled);
builder.append("equipment", this.equipment);
builder.append("general", this.general);
builder.append("limit", this.limit);
return builder.toString();
}
}
/**
* The EquipmentSetting object represents the alert/reminder type which is associated with and dependent upon
* specific equipment controlled by the Thermostat. It is used when getting/setting the Thermostat
* NotificationSettings object.
*
* <p>
* Note: Only the notification settings for the equipment/devices currently controlled by the Thermostat are
* returned during GET request, and only those same settings can be updated using the POST request.
*
* <p>
* The type corresponds to the {@link Alert#notificationType} returned when alerts are also included in the
* selection. See {@link Alert} for more information.
*
* @see <a
* href="https://www.ecobee.com/home/developer/api/documentation/v1/objects/EquipmentSetting.shtml">
* EquipmentSetting</a>
* @author John Cocula
*/
@JsonIgnoreProperties(ignoreUnknown = true)
public static class EquipmentSetting extends AbstractMessagePart {
private String filterLastChanged; // TODO Jackson 1.9 date handling (@watou)
private Integer filterLife;
private String filterLifeUnits;
private String remindMeDate; // TODO Jackson 1.9 date handling (@watou)
private Boolean enabled;
private String type;
private Boolean remindTechnician;
public EquipmentSetting(@JsonProperty("type") String type) {
this.type = type;
}
/**
* @return the date the filter was last changed for this equipment. String format: YYYY-MM-DD
*/
@JsonProperty("filterLastChanged")
public String getFilterLastChanged() {
return this.filterLastChanged;
}
/**
* @param filterLastChanged
* the date the filter was last changed for this equipment. String format: YYYY-MM-DD
*/
@JsonProperty("filterLastChanged")
public void setFilterLastChanged(String filterLastChanged) {
this.filterLastChanged = filterLastChanged;
}
/**
* @return the value representing the life of the filter. This value is expressed in month or hour, which is
* specified in the the {@link #filterLifeUnits} property.
*/
@JsonProperty("filterLife")
public Integer getFilterLife() {
return this.filterLife;
}
/**
* @param filterLife
* the value representing the life of the filter. This value is expressed in month or hour, which is
* specified in the the {@link #filterLifeUnits} property.
*/
@JsonProperty("filterLife")
public void setFilterLife(Integer filterLife) {
this.filterLife = filterLife;
}
/**
* @return the units the {@link #filterLife} field is measured in. Possible values are: month, hour. month has a
* range of 1 - 12. hour has a range of 100 - 1000.
*/
@JsonProperty("filterLifeUnits")
public String getFilterLifeUnits() {
return this.filterLifeUnits;
}
/**
* @param filterLifeUnits
* the units the {@link #filterLife} field is measured in. Possible values are: month, hour. month
* has a range of 1 - 12. hour has a range of 100 - 1000.
*/
@JsonProperty("filterLifeUnits")
public void setFilterLifeUnits(String filterLifeUnits) {
this.filterLifeUnits = filterLifeUnits;
}
/**
* @return the date the reminder will be triggered. This is a read-only field and cannot be modified through the
* API. The value is calculated and set by the thermostat.
*/
@JsonProperty("remindMeDate")
public String getRemindMeDate() {
return this.remindMeDate;
}
/**
* @return boolean value representing whether or not alerts/reminders are enabled for this notification type or
* not
*/
@JsonProperty("enabled")
public Boolean isEnabled() {
return this.enabled;
}
/**
* @param enabled
* boolean value representing whether or not alerts/reminders are enabled for this notification type
* or not
*/
@JsonProperty("enabled")
public void setEnabled(Boolean enabled) {
this.enabled = enabled;
}
/**
* @return boolean value representing whether or not alerts/reminders should be sent to the
* technician/contractor associated with the thermostat
*/
@JsonProperty("remindTechnician")
public Boolean getRemindTechnician() {
return this.remindTechnician;
}
/**
* @param remindTechnician
* boolean value representing whether or not alerts/reminders should be sent to the
* technician/contractor associated with the thermostat.
*/
@JsonProperty("remindTechnician")
public void setRemindTechnician(Boolean remindTechnician) {
this.remindTechnician = remindTechnician;
}
/**
* @return the type of notification. Possible values are: hvac, furnaceFilter, humidifierFilter,
* dehumidifierFilter, ventilator, ac, airFilter, airCleaner, uvLamp
*/
@JsonProperty("type")
public String getType() {
return this.type;
}
@Override
public String toString() {
final ToStringBuilder builder = createToStringBuilder();
builder.appendSuper(super.toString());
builder.append("filterLastChanged", this.filterLastChanged);
builder.append("filterLife", this.filterLife);
builder.append("filterLifeUnits", this.filterLifeUnits);
builder.append("remindMeDate", this.remindMeDate);
builder.append("enabled", this.enabled);
builder.append("type", this.type);
builder.append("remindTechnician", this.remindTechnician);
return builder.toString();
}
}
/**
* The GeneralSetting object represent the General alert/reminder type. It is used when getting/setting the
* Thermostat {@link NotificationSettings} object.
*
* <p>
* The <code>type</code> corresponds to the {@link Alert#notificationType} returned when alerts are included in the
* selection. See {@link Alert} for more information.
*
* @see <a
* href="https://www.ecobee.com/home/developer/api/documentation/v1/objects/GeneralSetting.shtml">
* GeneralSetting</a>
* @author John Cocula
*/
@JsonIgnoreProperties(ignoreUnknown = true)
public static class GeneralSetting extends AbstractMessagePart {
private Boolean enabled;
private String type;
private Boolean remindTechnician;
/**
* @param type
* the type of notification. Possible values are: temp
*/
public GeneralSetting(@JsonProperty("type") String type) {
this.type = type;
}
/**
* @return boolean value representing whether or not alerts/reminders are enabled for this notification type or
* not
*/
@JsonProperty("enabled")
public Boolean isEnabled() {
return this.enabled;
}
/**
* @param enabled
* boolean value representing whether or not alerts/reminders are enabled for this notification type
* or not
*/
@JsonProperty("enabled")
public void setEnabled(Boolean enabled) {
this.enabled = enabled;
}
/**
* @return boolean value representing whether or not alerts/reminders should be sent to the
* technician/contractor associated with the thermostat
*/
@JsonProperty("remindTechnician")
public Boolean getRemindTechnician() {
return this.remindTechnician;
}
/**
* @param remindTechnician
* boolean value representing whether or not alerts/reminders should be sent to the
* technician/contractor associated with the thermostat
*/
@JsonProperty("remindTechnician")
public void setRemindTechnician(Boolean remindTechnician) {
this.remindTechnician = remindTechnician;
}
/**
* @return the type of notification. Possible values are: temp
*/
@JsonProperty("type")
public String getType() {
return this.type;
}
@Override
public String toString() {
final ToStringBuilder builder = createToStringBuilder();
builder.appendSuper(super.toString());
builder.append("enabled", this.enabled);
builder.append("type", this.type);
builder.append("remindTechnician", this.remindTechnician);
return builder.toString();
}
}
/**
* The LimitSetting object represents the alert/reminder type which is associated specific values, such as highHeat
* or lowHumidity. It is used when getting/setting the Thermostat NotificationSettings object.
*
* The type corresponds to the {@link Alert#notificationType} returned when alerts are also included in the
* selection. See {@link Alert} for more information.
*
* @see <a
* href="https://www.ecobee.com/home/developer/api/documentation/v1/objects/LimitSetting.shtml">LimitSetting
* </a>
* @author John Cocula
*/
@JsonIgnoreProperties(ignoreUnknown = true)
public static class LimitSetting extends AbstractMessagePart {
private Integer limit;
private Boolean enabled;
private String type;
private Boolean remindTechnician;
/**
* @param type
* the type of notification. Possible values are: lowTemp, highTemp, lowHumidity, highHumidity,
* auxHeat, auxOutdoor
*/
public LimitSetting(@JsonProperty("type") String type) {
this.type = type;
}
/**
* @return the value of the limit to set. For temperatures the value is expressed as degrees Fahrenheit,
* multipled by 10. For humidity values are expressed as a percentage from 5 to 95. See here for more
* information.
*/
@JsonProperty("limit")
public Integer getLimit() {
return this.limit;
}
/**
* @param limit
* the value of the limit to set. For temperatures the value is expressed as degrees Fahrenheit,
* multipled by 10. For humidity values are expressed as a percentage from 5 to 95. See here for more
* information.
*/
@JsonProperty("limit")
public void setLimit(Integer limit) {
this.limit = limit;
}
/**
* @return boolean value representing whether or not alerts/reminders are enabled for this notification type or
* not
*/
@JsonProperty("enabled")
public Boolean isEnabled() {
return this.enabled;
}
/**
* @param enabled
* boolean value representing whether or not alerts/reminders are enabled for this notification type
* or not
*/
@JsonProperty("enabled")
public void setEnabled(Boolean enabled) {
this.enabled = enabled;
}
/**
* @return boolean value representing whether or not alerts/reminders should be sent to the
* technician/contractor associated with the thermostat
*/
@JsonProperty("remindTechnician")
public Boolean getRemindTechnician() {
return this.remindTechnician;
}
/**
* @param remindTechnician
* boolean value representing whether or not alerts/reminders should be sent to the
* technician/contractor associated with the thermostat
*/
@JsonProperty("remindTechnician")
public void setRemindTechnician(Boolean remindTechnician) {
this.remindTechnician = remindTechnician;
}
/**
* @return the type of notification. Possible values are: lowTemp, highTemp, lowHumidity, highHumidity, auxHeat,
* auxOutdoor
*/
@JsonProperty("type")
public String getType() {
return this.type;
}
@Override
public String toString() {
final ToStringBuilder builder = createToStringBuilder();
builder.appendSuper(super.toString());
builder.append("limit", this.limit);
builder.append("enabled", this.enabled);
builder.append("type", this.type);
builder.append("remindTechnician", this.remindTechnician);
return builder.toString();
}
}
/**
* The ThermostatPrivacy object containing the privacy settings for the Thermostat. Note: access to this object is
* restricted to callers with implicit authentication.
*
* @author John Cocula
*/
@JsonIgnoreProperties(ignoreUnknown = true)
public static class ThermostatPrivacy extends AbstractMessagePart {
@Override
public String toString() {
final ToStringBuilder builder = createToStringBuilder();
builder.appendSuper(super.toString());
return builder.toString();
}
}
/**
* The Version object contains version information about the thermostat.
*
* @see <a href="https://www.ecobee.com/home/developer/api/documentation/v1/objects/Version.shtml">Version</a>
* @author John Cocula
*/
@JsonIgnoreProperties(ignoreUnknown = true)
public static class Version extends AbstractMessagePart {
private String thermostatFirmwareVersion;
/**
* @return the thermostat firmware version number
*/
@JsonProperty("thermostatFirmwareVersion")
public String getThermostatFirmwareVersion() {
return this.thermostatFirmwareVersion;
}
@Override
public String toString() {
final ToStringBuilder builder = createToStringBuilder();
builder.appendSuper(super.toString());
builder.append("thermostatFirmwareVersion", this.thermostatFirmwareVersion);
return builder.toString();
}
}
}