2 * Copyright (c) 2010-2022 Contributors to the openHAB project
4 * See the NOTICE file(s) distributed with this work for additional
7 * This program and the accompanying materials are made available under the
8 * terms of the Eclipse Public License 2.0 which is available at
9 * http://www.eclipse.org/legal/epl-2.0
11 * SPDX-License-Identifier: EPL-2.0
13 package org.openhab.binding.ecobee.internal.dto.thermostat;
15 import java.util.List;
18 * The {@link ExtendedRuntimeDTO} contains the last three 5 minute interval values
19 * sent by the thermostat for the past 15 minutes of runtime. The interval values
20 * are valuable when you are interested in analyzing the runtime data in a more
21 * granular fashion, at 5 minute increments rather than the more general 15 minute
22 * value from the Runtime Object. For the runtime values (i.e. heatPump, auxHeat,
23 * cool, etc.) refer to the Thermostat.Settings values (hasHeatPump, heatStages,
24 * coolStages) to determine whether a heat pump exists and how many stages the
25 * thermostat supports. The actual temperature and humidity will also be updated
26 * when the equipment state changes by the thermostat, this may occur at a frequency
27 * of 3 minutes, however it is only transmitted when there is an equipment state
28 * change on the thermostat.
30 * @author Mark Hilbush - Initial contribution
32 public class ExtendedRuntimeDTO {
35 * The UTC timestamp of the last value read. This timestamp is updated at a 15 min
36 * interval by the thermostat. For the 1st value, it is timestamp - 10 mins, for
37 * the 2nd value it is timestamp - 5 mins. Consider day boundaries being straddled
38 * when using these values.
40 public String lastReadingTimestamp;
43 * The UTC date of the last runtime reading. Format: YYYY-MM-DD
45 public String runtimeDate;
48 * The last 5 minute interval which was updated by the thermostat telemetry update.
49 * Subtract 2 from this interval to obtain the beginning interval for the last 3
50 * readings. Multiply by 5 mins to obtain the minutes of the day. Range: 0-287
52 public Integer runtimeInterval;
55 * The last three 5 minute actual temperature readings
57 public List<Integer> actualTemperature;
60 * The last three 5 minute actual humidity readings.
62 public List<Integer> actualHumidity;
65 * The last three 5 minute desired heat temperature readings.
67 public List<Integer> desiredHeat;
70 * The last three 5 minute desired cool temperature readings.
72 public List<Integer> desiredCool;
75 * The last three 5 minute desired humidity readings.
77 public List<Integer> desiredHumidity;
80 * The last three 5 minute desired de-humidification readings.
82 public List<Integer> desiredDehumidity;
85 * The last three 5 minute desired Demand Management temeprature offsets.
86 * This value is Demand Management adjustment value which was applied by
87 * the thermostat. If the thermostat decided not to honour the adjustment,
88 * it will send 0 for the interval. Compare these values with the values
89 * sent in the DM message to determine whether the thermostat applied
92 public List<Integer> dmOffset;
95 * The last three 5 minute HVAC Mode reading. These values indicate which
96 * stage was energized in the 5 minute interval. Values: heatStage10n,
97 * heatStage20n, heatStage30n, heatOff, compressorCoolStage10n,
98 * compressorCoolStage20n, compressorCoolOff, compressorHeatStage10n,
99 * compressorHeatStage20n, compressorHeatOff, economyCycle.
101 public List<Integer> hvacMode;
104 * The last three 5 minute HVAC Runtime values in seconds (0-300 seconds)
105 * per interval. This value corresponds to the heat pump stage 1 runtime.
107 public List<Integer> heatPump1;
110 * The last three 5 minute HVAC Runtime values in seconds (0-300 seconds)
111 * per interval. This value corresponds to the heat pump stage 2 runtime.
113 public List<Integer> heatPump2;
116 * The last three 5 minute HVAC Runtime values in seconds (0-300 seconds)
117 * per interval. This value corresponds to the auxiliary heat stage 1. If
118 * the thermostat does not have a heat pump, this is heat stage 1.
120 public List<Integer> auxHeat1;
123 * The last three 5 minute HVAC Runtime values in seconds (0-300 seconds)
124 * per interval. This value corresponds to the auxiliary heat stage 2. If
125 * the thermostat does not have a heat pump, this is heat stage 2.
127 public List<Integer> auxHeat2;
130 * The last three 5 minute HVAC Runtime values in seconds (0-300 seconds)
131 * per interval. This value corresponds to the heat stage 3 if the thermostat
132 * does not have a heat pump. Auxiliary stage 3 is not supported.
134 public List<Integer> auxHeat3;
137 * The last three 5 minute HVAC Runtime values in seconds (0-300 seconds)
138 * per interval. This value corresponds to the cooling stage 1.
140 public List<Integer> cool1;
143 * The last three 5 minute HVAC Runtime values in seconds (0-300 seconds)
144 * per interval. This value corresponds to the cooling stage 2.
146 public List<Integer> cool2;
149 * The last three 5 minute fan Runtime values in seconds (0-300 seconds) per interval.
151 public List<Integer> fan;
154 * The last three 5 minute humidifier Runtime values in seconds (0-300 seconds) per interval.
156 public List<Integer> humidifier;
159 * The last three 5 minute de-humidifier Runtime values in seconds (0-300 seconds) per interval.
161 public List<Integer> dehumidifier;
164 * The last three 5 minute economizer Runtime values in seconds (0-300 seconds) per interval.
166 public List<Integer> economizer;
169 * The last three 5 minute ventilator Runtime values in seconds (0-300 seconds) per interval.
171 public List<Integer> ventilator;
174 * The latest value of the current electricity bill as interpolated from the
175 * thermostat's readings from a paired electricity meter.
177 public List<Integer> currentElectricityBill;
180 * The latest estimate of the projected electricity bill as interpolated from the
181 * thermostat's readings from a paired electricity meter.
183 public List<Integer> projectedElectricityBill;