homebridge-nest-accfactory 0.0.4-a

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (88) hide show
  1. package/CHANGELOG.md +27 -0
  2. package/LICENSE +176 -0
  3. package/README.md +121 -0
  4. package/config.schema.json +107 -0
  5. package/dist/HomeKitDevice.js +441 -0
  6. package/dist/HomeKitHistory.js +2835 -0
  7. package/dist/camera.js +1276 -0
  8. package/dist/doorbell.js +122 -0
  9. package/dist/index.js +35 -0
  10. package/dist/nexustalk.js +741 -0
  11. package/dist/protect.js +240 -0
  12. package/dist/protobuf/google/rpc/status.proto +91 -0
  13. package/dist/protobuf/google/rpc/stream_body.proto +26 -0
  14. package/dist/protobuf/google/trait/product/camera.proto +53 -0
  15. package/dist/protobuf/googlehome/foyer.proto +208 -0
  16. package/dist/protobuf/nest/messages.proto +8 -0
  17. package/dist/protobuf/nest/services/apigateway.proto +107 -0
  18. package/dist/protobuf/nest/trait/audio.proto +7 -0
  19. package/dist/protobuf/nest/trait/cellular.proto +313 -0
  20. package/dist/protobuf/nest/trait/debug.proto +37 -0
  21. package/dist/protobuf/nest/trait/detector.proto +41 -0
  22. package/dist/protobuf/nest/trait/diagnostics.proto +87 -0
  23. package/dist/protobuf/nest/trait/firmware.proto +221 -0
  24. package/dist/protobuf/nest/trait/guest.proto +105 -0
  25. package/dist/protobuf/nest/trait/history.proto +345 -0
  26. package/dist/protobuf/nest/trait/humanlibrary.proto +19 -0
  27. package/dist/protobuf/nest/trait/hvac.proto +1353 -0
  28. package/dist/protobuf/nest/trait/input.proto +29 -0
  29. package/dist/protobuf/nest/trait/lighting.proto +61 -0
  30. package/dist/protobuf/nest/trait/located.proto +193 -0
  31. package/dist/protobuf/nest/trait/media.proto +68 -0
  32. package/dist/protobuf/nest/trait/network.proto +352 -0
  33. package/dist/protobuf/nest/trait/occupancy.proto +373 -0
  34. package/dist/protobuf/nest/trait/olive.proto +15 -0
  35. package/dist/protobuf/nest/trait/pairing.proto +85 -0
  36. package/dist/protobuf/nest/trait/product/camera.proto +283 -0
  37. package/dist/protobuf/nest/trait/product/detect.proto +67 -0
  38. package/dist/protobuf/nest/trait/product/doorbell.proto +18 -0
  39. package/dist/protobuf/nest/trait/product/guard.proto +59 -0
  40. package/dist/protobuf/nest/trait/product/protect.proto +344 -0
  41. package/dist/protobuf/nest/trait/promonitoring.proto +14 -0
  42. package/dist/protobuf/nest/trait/resourcedirectory.proto +32 -0
  43. package/dist/protobuf/nest/trait/safety.proto +119 -0
  44. package/dist/protobuf/nest/trait/security.proto +516 -0
  45. package/dist/protobuf/nest/trait/selftest.proto +78 -0
  46. package/dist/protobuf/nest/trait/sensor.proto +291 -0
  47. package/dist/protobuf/nest/trait/service.proto +46 -0
  48. package/dist/protobuf/nest/trait/structure.proto +85 -0
  49. package/dist/protobuf/nest/trait/system.proto +51 -0
  50. package/dist/protobuf/nest/trait/test.proto +15 -0
  51. package/dist/protobuf/nest/trait/ui.proto +65 -0
  52. package/dist/protobuf/nest/trait/user.proto +98 -0
  53. package/dist/protobuf/nest/trait/voiceassistant.proto +30 -0
  54. package/dist/protobuf/nestlabs/eventingapi/v1.proto +83 -0
  55. package/dist/protobuf/nestlabs/gateway/v1.proto +273 -0
  56. package/dist/protobuf/nestlabs/gateway/v2.proto +96 -0
  57. package/dist/protobuf/nestlabs/history/v1.proto +73 -0
  58. package/dist/protobuf/root.proto +64 -0
  59. package/dist/protobuf/wdl-event-importance.proto +11 -0
  60. package/dist/protobuf/wdl.proto +450 -0
  61. package/dist/protobuf/weave/common.proto +144 -0
  62. package/dist/protobuf/weave/trait/audio.proto +12 -0
  63. package/dist/protobuf/weave/trait/auth.proto +22 -0
  64. package/dist/protobuf/weave/trait/description.proto +32 -0
  65. package/dist/protobuf/weave/trait/heartbeat.proto +38 -0
  66. package/dist/protobuf/weave/trait/locale.proto +20 -0
  67. package/dist/protobuf/weave/trait/network.proto +24 -0
  68. package/dist/protobuf/weave/trait/pairing.proto +8 -0
  69. package/dist/protobuf/weave/trait/peerdevices.proto +18 -0
  70. package/dist/protobuf/weave/trait/power.proto +86 -0
  71. package/dist/protobuf/weave/trait/schedule.proto +76 -0
  72. package/dist/protobuf/weave/trait/security.proto +343 -0
  73. package/dist/protobuf/weave/trait/telemetry/tunnel.proto +37 -0
  74. package/dist/protobuf/weave/trait/time.proto +16 -0
  75. package/dist/res/Nest_camera_connecting.h264 +0 -0
  76. package/dist/res/Nest_camera_connecting.jpg +0 -0
  77. package/dist/res/Nest_camera_off.h264 +0 -0
  78. package/dist/res/Nest_camera_off.jpg +0 -0
  79. package/dist/res/Nest_camera_offline.h264 +0 -0
  80. package/dist/res/Nest_camera_offline.jpg +0 -0
  81. package/dist/res/Nest_camera_transfer.jpg +0 -0
  82. package/dist/streamer.js +344 -0
  83. package/dist/system.js +3112 -0
  84. package/dist/tempsensor.js +99 -0
  85. package/dist/thermostat.js +1026 -0
  86. package/dist/weather.js +205 -0
  87. package/dist/webrtc.js +55 -0
  88. package/package.json +66 -0
@@ -0,0 +1,1353 @@
1
+ syntax = "proto3";
2
+
3
+ import "google/protobuf/duration.proto";
4
+ import "google/protobuf/timestamp.proto";
5
+ import "google/protobuf/wrappers.proto";
6
+ import "../../nest/trait/sensor.proto";
7
+ import "../../weave/common.proto";
8
+
9
+ package nest.trait.hvac;
10
+
11
+ message HvacControl {
12
+ message Temperature {
13
+ float value = 1;
14
+ }
15
+
16
+ message TemperatureThreshold {
17
+ Temperature value = 1;
18
+ bool enabled = 2;
19
+ }
20
+
21
+ message HumidityThreshold {
22
+ float value = 1;
23
+ bool enabled = 2;
24
+ }
25
+ }
26
+
27
+ message EquipmentSettingsTrait {
28
+ DeliveryType heatStage1Delivery = 1;
29
+ DeliveryType heatStage2Delivery = 2;
30
+ DeliveryType heatStage3Delivery = 3;
31
+ FuelSourceType heatStage1Source = 4;
32
+ FuelSourceType heatStage2Source = 5;
33
+ FuelSourceType heatStage3Source = 6;
34
+ DeliveryType coolingStage1Delivery = 7;
35
+ DeliveryType coolingStage2Delivery = 8;
36
+ DeliveryType coolingStage3Delivery = 9;
37
+ FuelSourceType coolingStage1Source = 10;
38
+ FuelSourceType coolingStage2Source = 11;
39
+ FuelSourceType coolingStage3Source = 12;
40
+ DeliveryType altHeatStage1Delivery = 13;
41
+ DeliveryType altHeatStage2Delivery = 14;
42
+ FuelSourceType altHeatStage1Source = 15;
43
+ FuelSourceType altHeatStage2Source = 16;
44
+ DeliveryType auxHeatStage1Delivery = 17;
45
+ FuelSourceType auxHeatStage1Source = 18;
46
+ DeliveryType emergencyHeatDelivery = 19;
47
+ FuelSourceType emergencyHeatSource = 20;
48
+ StarType starType = 21;
49
+ Y2Type y2Type = 22;
50
+ DehumidifierFanType dehumidifierFanActivation = 23;
51
+ DehumidifierOrientation dehumidifierOrientationSelected = 24;
52
+ DehumidifierType dehumidifierType = 25;
53
+ HumidifierFanType humidifierFanActivation = 26;
54
+ HumidifierType humidifierType = 27;
55
+ DualFuelSelection dualFuelSelected = 28;
56
+ HvacControl.Temperature dualFuelBreakpoint = 29;
57
+ DualFuelOverride dualFuelBreakpointOverride = 30;
58
+ ObOrientation obOrientation = 31;
59
+ ObPersistence obPersistence = 32;
60
+ BoilerType boilerType = 33;
61
+ HvacControl.Temperature boilerSupplyTemperature = 34;
62
+
63
+ enum DeliveryType {
64
+ DELIVERY_TYPE_UNSPECIFIED = 0;
65
+ DELIVERY_TYPE_FORCED_AIR = 1;
66
+ DELIVERY_TYPE_IN_FLOOR_RADIANT = 2;
67
+ DELIVERY_TYPE_RADIATORS = 3;
68
+ DELIVERY_TYPE_ELECTRIC_STRIP = 4;
69
+ }
70
+
71
+ enum FuelSourceType {
72
+ FUEL_SOURCE_TYPE_UNSPECIFIED = 0;
73
+ FUEL_SOURCE_TYPE_GAS = 1;
74
+ FUEL_SOURCE_TYPE_ELECTRIC = 2;
75
+ FUEL_SOURCE_TYPE_OIL = 3;
76
+ FUEL_SOURCE_TYPE_LP = 4;
77
+ FUEL_SOURCE_TYPE_GEOTHERMAL = 5;
78
+ FUEL_SOURCE_TYPE_DISTRICT_HEATING = 6;
79
+ FUEL_SOURCE_TYPE_PELLETS = 7;
80
+ }
81
+
82
+ enum StarType {
83
+ STAR_TYPE_UNSPECIFIED = 0;
84
+ STAR_TYPE_EMERGENCY_HEAT = 1;
85
+ STAR_TYPE_HUMIDIFIER = 2;
86
+ STAR_TYPE_DEHUMIDIFIER = 3;
87
+ STAR_TYPE_W3 = 4;
88
+ STAR_TYPE_WATER_HEATER = 5;
89
+ STAR_TYPE_G3 = 6;
90
+ STAR_TYPE_OB = 7;
91
+ STAR_TYPE_Y2 = 8;
92
+ STAR_TYPE_W2 = 9;
93
+ }
94
+
95
+ enum Y2Type {
96
+ Y2_TYPE_UNSPECIFIED = 0;
97
+ Y2_TYPE_HEATING_AND_COOLING = 1;
98
+ Y2_TYPE_HEATING = 2;
99
+ Y2_TYPE_COOLING = 3;
100
+ Y2_TYPE_G2 = 4;
101
+ }
102
+
103
+ enum DehumidifierOrientation {
104
+ DEHUMIDIFIER_ORIENTATION_UNSPECIFIED = 0;
105
+ DEHUMIDIFIER_ORIENTATION_NORMAL = 1;
106
+ DEHUMIDIFIER_ORIENTATION_REVERSED = 2;
107
+ }
108
+
109
+ enum DehumidifierType {
110
+ DEHUMIDIFIER_TYPE_UNSPECIFIED = 0;
111
+ DEHUMIDIFIER_TYPE_AC_INTEGRATED = 1;
112
+ DEHUMIDIFIER_TYPE_STAND_ALONE = 2;
113
+ }
114
+
115
+ enum DehumidifierFanType {
116
+ DEHUMIDIFIER_FAN_TYPE_UNSPECIFIED = 0;
117
+ DEHUMIDIFIER_FAN_TYPE_ACTIVATE = 1;
118
+ DEHUMIDIFIER_FAN_TYPE_DONT_ACTIVATE = 2;
119
+ }
120
+
121
+ enum HumidifierType {
122
+ HUMIDIFIER_TYPE_UNSPECIFIED = 0;
123
+ HUMIDIFIER_TYPE_STEAM_GENERATING = 1;
124
+ HUMIDIFIER_TYPE_BYPASS = 2;
125
+ }
126
+
127
+ enum HumidifierFanType {
128
+ HUMIDIFIER_FAN_TYPE_UNSPECIFIED = 0;
129
+ HUMIDIFIER_FAN_TYPE_ACTIVATE = 1;
130
+ HUMIDIFIER_FAN_TYPE_DONT_ACTIVATE = 2;
131
+ }
132
+
133
+ enum DualFuelSelection {
134
+ DUAL_FUEL_SELECTION_UNSPECIFIED = 0;
135
+ DUAL_FUEL_SELECTION_DUAL_FUEL = 1;
136
+ DUAL_FUEL_SELECTION_SINGLE_FUEL = 2;
137
+ }
138
+
139
+ enum DualFuelOverride {
140
+ DUAL_FUEL_OVERRIDE_UNSPECIFIED = 0;
141
+ DUAL_FUEL_OVERRIDE_NONE = 1;
142
+ DUAL_FUEL_OVERRIDE_ALWAYS_ALT = 2;
143
+ DUAL_FUEL_OVERRIDE_ALWAYS_PRIMARY = 3;
144
+ }
145
+
146
+ enum ObOrientation {
147
+ OB_ORIENTATION_UNSPECIFIED = 0;
148
+ OB_ORIENTATION_O = 1;
149
+ OB_ORIENTATION_B = 2;
150
+ }
151
+
152
+ enum ObPersistence {
153
+ OB_PERSISTENCE_UNSPECIFIED = 0;
154
+ OB_PERSISTENCE_SEASONAL = 1;
155
+ OB_PERSISTENCE_CYCLICAL = 2;
156
+ }
157
+
158
+ enum BoilerType {
159
+ BOILER_TYPE_UNSPECIFIED = 0;
160
+ BOILER_TYPE_COMBI = 1;
161
+ BOILER_TYPE_SYSTEM = 2;
162
+ BOILER_TYPE_OTHER = 3;
163
+ BOILER_TYPE_HEAT_PUMP = 4;
164
+ BOILER_TYPE_DISTRICT = 5;
165
+ BOILER_TYPE_ELECTRIC = 6;
166
+ }
167
+ }
168
+
169
+ message RemoteComfortSensingSettingsTrait {
170
+ RcsControlMode rcsControlMode = 1;
171
+ RcsSourceSelection activeRcsSelection = 2;
172
+ RcsSchedule rcsControlSchedule = 3;
173
+ repeated RcsSensorId associatedRcsSensors = 4;
174
+ MultiSensorSettings multiSensorSettings = 5;
175
+
176
+ enum RcsControlMode {
177
+ RCS_CONTROL_MODE_UNSPECIFIED = 0;
178
+ RCS_CONTROL_MODE_HOLD = 1;
179
+ RCS_CONTROL_MODE_SCHEDULE = 2;
180
+ RCS_CONTROL_MODE_SCHEDULE_OVERRIDE = 3;
181
+ }
182
+
183
+ enum RcsSourceType {
184
+ RCS_SOURCE_TYPE_UNSPECIFIED = 0;
185
+ RCS_SOURCE_TYPE_BACKPLATE = 1;
186
+ RCS_SOURCE_TYPE_SINGLE_SENSOR = 2;
187
+ RCS_SOURCE_TYPE_MULTI_SENSOR = 3;
188
+ }
189
+
190
+ enum StatusCode {
191
+ STATUS_CODE_UNSPECIFIED = 0;
192
+ STATUS_CODE_SUCCESS = 1;
193
+ STATUS_CODE_FAILURE = 2;
194
+ STATUS_CODE_SENSOR_ALREADY_ASSOCIATED = 4096;
195
+ STATUS_CODE_SENSOR_LIMIT_REACHED = 4097;
196
+ STATUS_CODE_SENSOR_NOT_ASSOCIATED = 8192;
197
+ }
198
+
199
+ message RcsSensorId {
200
+ weave.common.ResourceId deviceId = 1;
201
+ uint32 vendorId = 2;
202
+ uint32 productId = 3;
203
+ }
204
+
205
+ message MultiSensorSettings {
206
+ bool multiSensorEnabled = 1;
207
+ repeated weave.common.ResourceId multiSensorGroup = 2;
208
+ }
209
+
210
+ message RcsSourceSelection {
211
+ RcsSourceType rcsSourceType = 1;
212
+ weave.common.ResourceId activeRcsSensor = 2;
213
+ }
214
+
215
+ message RcsInterval {
216
+ RcsSourceSelection rcsSelection = 1;
217
+ uint32 startSecondsInDay = 2;
218
+ uint32 endSecondsInDay = 3;
219
+ }
220
+
221
+ message RcsSchedule {
222
+ map<uint32, RcsInterval> intervals = 1;
223
+ }
224
+
225
+ message AssociateRcsSensorRequest {
226
+ weave.common.ResourceId resourceId = 1;
227
+ }
228
+
229
+ message AssociateRcsSensorResponse {
230
+ StatusCode status = 1;
231
+ }
232
+
233
+ message DissociateRcsSensorRequest {
234
+ weave.common.ResourceId resourceId = 1;
235
+ }
236
+
237
+ message DissociateRcsSensorResponse {
238
+ StatusCode status = 1;
239
+ }
240
+ }
241
+
242
+ message SetPointScheduleSettingsTrait {
243
+ string name = 1;
244
+ SetPointScheduleType type = 2;
245
+ map<uint32, TemperatureSetPoint> setpoints = 3;
246
+
247
+ enum SetPointScheduleType {
248
+ SET_POINT_SCHEDULE_TYPE_UNSPECIFIED = 0;
249
+ SET_POINT_SCHEDULE_TYPE_HEAT = 1;
250
+ SET_POINT_SCHEDULE_TYPE_COOL = 2;
251
+ SET_POINT_SCHEDULE_TYPE_RANGE = 3;
252
+ }
253
+
254
+ enum SetPointType {
255
+ SET_POINT_TYPE_UNSPECIFIED = 0;
256
+ SET_POINT_TYPE_HEAT = 1;
257
+ SET_POINT_TYPE_COOL = 2;
258
+ SET_POINT_TYPE_RANGE = 3;
259
+ }
260
+
261
+ message TemperatureSetPoint {
262
+ SetPointType setpointType = 1;
263
+ weave.common.DayOfWeek dayOfWeek = 2;
264
+ uint32 secondsInDay = 3;
265
+ HvacControl.Temperature heatingTarget = 4;
266
+ HvacControl.Temperature coolingTarget = 5;
267
+ HvacActor.HvacActorStruct currentActorInfo = 6;
268
+ HvacActor.HvacActorStruct originalActorInfo = 7;
269
+ }
270
+ }
271
+
272
+ message RemoteComfortSensingStateTrait {
273
+ bool rcsCapable = 1;
274
+ nest.trait.sensor.TemperatureTrait.TemperatureSample multiSensorTemperature = 2;
275
+ map<uint32, RcsSensorInsight> rcsSensorInsights = 3;
276
+ repeated RcsThermostatAlert rcsThermostatAlerts = 4;
277
+ map<uint32, RcsSensorStatus> rcsSensorStatuses = 5;
278
+
279
+ enum RcsSensorInsightTemperature {
280
+ RCS_SENSOR_INSIGHT_TEMPERATURE_UNSPECIFIED = 0;
281
+ RCS_SENSOR_INSIGHT_TEMPERATURE_WARMEST_AND_SWINGS = 2;
282
+ RCS_SENSOR_INSIGHT_TEMPERATURE_WARMEST = 3;
283
+ RCS_SENSOR_INSIGHT_TEMPERATURE_WARMER_AND_SWINGS = 4;
284
+ RCS_SENSOR_INSIGHT_TEMPERATURE_WARMER = 5;
285
+ RCS_SENSOR_INSIGHT_TEMPERATURE_COOLEST_AND_SWINGS = 6;
286
+ RCS_SENSOR_INSIGHT_TEMPERATURE_COOLEST = 7;
287
+ RCS_SENSOR_INSIGHT_TEMPERATURE_COOLER_AND_SWINGS = 8;
288
+ RCS_SENSOR_INSIGHT_TEMPERATURE_COOLER = 9;
289
+ RCS_SENSOR_INSIGHT_TEMPERATURE_SWINGS = 10;
290
+ RCS_SENSOR_INSIGHT_TEMPERATURE_SIMILAR = 11;
291
+ }
292
+
293
+ enum RcsSensorInsightControllability {
294
+ RCS_SENSOR_INSIGHT_CONTROLLABILITY_UNSPECIFIED = 0;
295
+ RCS_SENSOR_INSIGHT_CONTROLLABILITY_TYPICAL = 1;
296
+ RCS_SENSOR_INSIGHT_CONTROLLABILITY_UNRESPONSIVE_TO_HVAC = 2;
297
+ }
298
+
299
+ enum SensorDataRecency {
300
+ SENSOR_DATA_RECENCY_UNSPECIFIED = 0;
301
+ SENSOR_DATA_RECENCY_OK = 1;
302
+ SENSOR_DATA_RECENCY_STALE = 2;
303
+ SENSOR_DATA_RECENCY_EXTREMELY_STALE = 3;
304
+ }
305
+
306
+ enum RcsThermostatAlert {
307
+ RCS_THERMOSTAT_ALERT_UNSPECIFIED = 0;
308
+ RCS_THERMOSTAT_ALERT_TEMPERATURE_OVERSHOOT = 1;
309
+ }
310
+
311
+ message RcsSensorInsight {
312
+ weave.common.ResourceId sensorId = 1;
313
+ RcsSensorInsightTemperature temperatureInsight = 2;
314
+ RcsSensorInsightControllability controllabilityInsight = 3;
315
+ }
316
+
317
+ message RcsSensorStatus {
318
+ weave.common.ResourceId sensorId = 1;
319
+ SensorDataRecency dataRecency = 2;
320
+ }
321
+
322
+ message RcsThermostatAlertEvent {
323
+ repeated RcsThermostatAlert rcsThermostatAlerts = 1;
324
+ }
325
+
326
+ message RcsDataRecencyStateChangeEvent {
327
+ weave.common.ResourceId sensorId = 1;
328
+ SensorDataRecency currentDataRecency = 2;
329
+ SensorDataRecency priorDataRecency = 3;
330
+ }
331
+
332
+ message RcsTemperatureOvershootAlertEvent {
333
+ weave.common.ResourceId sensorId = 1;
334
+ bool priorIsOvershoot = 2;
335
+ bool currentIsOvershoot = 3;
336
+ }
337
+ }
338
+
339
+ message SeasonalSavingsSettingsTrait {
340
+ string eventGuid = 1;
341
+ SetPointScheduleSettingsTrait.SetPointType setPointType = 2;
342
+ google.protobuf.Timestamp qualStartTimeLocal = 3;
343
+ google.protobuf.Timestamp qualStopTimeLocal = 4;
344
+ uint32 afterglowSeconds = 5;
345
+ uint32 pausedExpirationSeconds = 6;
346
+ bool forceIgnoreBlackoutTimes = 7;
347
+ map<uint32, SeasonalSavingsStage> stages = 8;
348
+ PartnerInformation.PartnerName partnerName = 9;
349
+ SeasonalSavingsSeasonType season = 10;
350
+
351
+ enum SeasonalSavingsAnchorType {
352
+ SEASONAL_SAVINGS_ANCHOR_TYPE_UNSPECIFIED = 0;
353
+ SEASONAL_SAVINGS_ANCHOR_TYPE_WAKEUP = 1;
354
+ SEASONAL_SAVINGS_ANCHOR_TYPE_EVENING_RETURN = 2;
355
+ SEASONAL_SAVINGS_ANCHOR_TYPE_BED_TIME = 3;
356
+ SEASONAL_SAVINGS_ANCHOR_TYPE_MORNING_LEAVE = 4;
357
+ SEASONAL_SAVINGS_ANCHOR_TYPE_FIXED = 5;
358
+ }
359
+
360
+ enum SeasonalSavingsPunishmentCarry {
361
+ SEASONAL_SAVINGS_PUNISHMENT_CARRY_UNSPECIFIED = 0;
362
+ SEASONAL_SAVINGS_PUNISHMENT_CARRY_DO_NOT_CARRY = 1;
363
+ SEASONAL_SAVINGS_PUNISHMENT_CARRY_SAME_NAME = 2;
364
+ SEASONAL_SAVINGS_PUNISHMENT_CARRY_SUM_ALL = 3;
365
+ }
366
+
367
+ enum SeasonalSavingsSetpointDirection {
368
+ SEASONAL_SAVINGS_SETPOINT_DIRECTION_UNSPECIFIED = 0;
369
+ SEASONAL_SAVINGS_SETPOINT_DIRECTION_VISIBLY_DOWNWARD = 1;
370
+ SEASONAL_SAVINGS_SETPOINT_DIRECTION_NONVISIBLY_DOWNWARD = 2;
371
+ SEASONAL_SAVINGS_SETPOINT_DIRECTION_EQUAL = 4;
372
+ SEASONAL_SAVINGS_SETPOINT_DIRECTION_VISIBLY_UPWARD = 8;
373
+ SEASONAL_SAVINGS_SETPOINT_DIRECTION_NONVISIBLY_UPWARD = 16;
374
+ }
375
+
376
+ enum SeasonalSavingsSeasonType {
377
+ SEASONAL_SAVINGS_SEASON_TYPE_UNSPECIFIED = 0;
378
+ SEASONAL_SAVINGS_SEASON_TYPE_SUMMER = 1;
379
+ SEASONAL_SAVINGS_SEASON_TYPE_WINTER = 2;
380
+ }
381
+
382
+ message SeasonalSavingsAnchor {
383
+ SeasonalSavingsAnchorType startAnchor = 1;
384
+ SeasonalSavingsAnchorType endAnchor = 2;
385
+ int32 startBeforeSeconds = 3;
386
+ int32 startAfterOffsetSeconds = 4;
387
+ int32 endBeforeOffsetSeconds = 5;
388
+ int32 endAfterOffsetSeconds = 6;
389
+ int32 startDelayAfterWrongDirectionSeconds = 7;
390
+ int32 startDelayAfterAnchorTimeSeconds = 8;
391
+ int32 endDelayBeforeWrongDirectionSeconds = 9;
392
+ int32 endDelayBeforeAnchorTimeSeconds = 10;
393
+ }
394
+
395
+ message SeasonalSavingsPunishment {
396
+ SeasonalSavingsPunishmentCarry carryMode = 1;
397
+ float interstageCarryFactor = 2;
398
+ float intrastageCarryFactor = 3;
399
+ float strengthScheduleEdit = 4;
400
+ float strengthDialChange = 5;
401
+ }
402
+
403
+ message SeasonalSavingsAlgoConstants {
404
+ float dailyTemperatureChange = 1;
405
+ SeasonalSavingsAnchor anchorDescription = 2;
406
+ SeasonalSavingsPunishment punishment = 3;
407
+ repeated weave.common.DayOfWeek blackoutDays = 17;
408
+ bool forceVisibleChangeOnFirstday = 18;
409
+ repeated SeasonalSavingsSetpointDirection startSetpointDirectionMask = 19;
410
+ repeated SeasonalSavingsSetpointDirection endSetpointDirectionMask = 20;
411
+ }
412
+
413
+ message SeasonalSavingsStage {
414
+ uint32 stageIndex = 1;
415
+ uint32 expirationSeconds = 2;
416
+ uint32 numberUpdates = 3;
417
+ bool forceQualify = 4;
418
+ SeasonalSavingsAlgoConstants algoConstants = 5;
419
+ }
420
+ }
421
+
422
+ message HvacActor {
423
+ enum HvacActorMethod {
424
+ HVAC_ACTOR_METHOD_UNSPECIFIED = 0;
425
+ HVAC_ACTOR_METHOD_NOBODY = 1;
426
+ HVAC_ACTOR_METHOD_SCHEDULE_LEARNING = 2;
427
+ HVAC_ACTOR_METHOD_LOCAL = 3;
428
+ HVAC_ACTOR_METHOD_REMOTE = 4;
429
+ HVAC_ACTOR_METHOD_WEB = 5;
430
+ HVAC_ACTOR_METHOD_ANDROID = 6;
431
+ HVAC_ACTOR_METHOD_IOS = 7;
432
+ HVAC_ACTOR_METHOD_SEASONAL_SAVINGS = 8;
433
+ HVAC_ACTOR_METHOD_RUSH_HOUR_REWARDS = 9;
434
+ HVAC_ACTOR_METHOD_TIME_OF_USE = 10;
435
+ HVAC_ACTOR_METHOD_DEMAND_CHARGE = 11;
436
+ HVAC_ACTOR_METHOD_TOPAZ_CO = 12;
437
+ HVAC_ACTOR_METHOD_TOPAZ_SMOKE = 13;
438
+ HVAC_ACTOR_METHOD_QUICK_SCHEDULE = 14;
439
+ HVAC_ACTOR_METHOD_WORKS_WITH_NEST = 15;
440
+ HVAC_ACTOR_METHOD_AMBER_PROGRAMMER = 16;
441
+ HVAC_ACTOR_METHOD_GOOGLE_ASSISTANT = 17;
442
+ HVAC_ACTOR_METHOD_SMART_DEVICE_MANAGEMENT = 18;
443
+ HVAC_ACTOR_METHOD_GOOGLE_ENERGY = 19;
444
+ }
445
+
446
+ message HvacActorStruct {
447
+ HvacActorMethod method = 1;
448
+ weave.common.ResourceId originator = 2;
449
+ google.protobuf.Timestamp timeOfAction = 3;
450
+ string originatorRtsId = 4;
451
+ }
452
+ }
453
+
454
+ message AssociatedHeatlinksTrait {
455
+ repeated AssociatedHeatlink heatlinks = 1;
456
+
457
+ enum ResponseStatus {
458
+ RESPONSE_STATUS_UNSPECIFIED = 0;
459
+ RESPONSE_STATUS_HEATLINK_EXISTS = 1;
460
+ RESPONSE_STATUS_HEATLINK_DOESNT_EXIST = 2;
461
+ RESPONSE_STATUS_SUCCESS = 3;
462
+ RESPONSE_STATUS_FAILURE = 4;
463
+ RESPONSE_STATUS_MISSING_PARAMS = 5;
464
+ RESPONSE_STATUS_HEATLINK_LIMIT_EXCEEDED = 6;
465
+ }
466
+
467
+ message AssociatedHeatlink {
468
+ weave.common.ResourceId deviceId = 1;
469
+ uint32 vendorId = 2;
470
+ uint32 productId = 3;
471
+ }
472
+
473
+ message AssociateHeatlinkRequest {
474
+ weave.common.ResourceId deviceId = 1;
475
+ }
476
+
477
+ message AssociateHeatlinkResponse {
478
+ ResponseStatus status = 1;
479
+ }
480
+
481
+ message DissociateHeatlinkRequest {
482
+ weave.common.ResourceId deviceId = 1;
483
+ }
484
+
485
+ message DissociateHeatlinkResponse {
486
+ ResponseStatus status = 1;
487
+ }
488
+ }
489
+
490
+ message DemandResponseTrait {
491
+ map<uint32, DemandResponseEventStateItem> stateItems = 1;
492
+
493
+ enum DemandResponseEventType {
494
+ DEMAND_RESPONSE_EVENT_TYPE_UNSPECIFIED = 0;
495
+ DEMAND_RESPONSE_EVENT_TYPE_STANDARD = 1;
496
+ DEMAND_RESPONSE_EVENT_TYPE_CRITICAL = 2;
497
+ }
498
+
499
+ enum DemandResponseState {
500
+ DEMAND_RESPONSE_STATE_UNSPECIFIED = 0;
501
+ DEMAND_RESPONSE_STATE_INITIAL = 1;
502
+ DEMAND_RESPONSE_STATE_EVENT_RECEIVED = 2;
503
+ DEMAND_RESPONSE_STATE_PRESENTING_EVENT = 3;
504
+ DEMAND_RESPONSE_STATE_PRECONDITIONING = 4;
505
+ DEMAND_RESPONSE_STATE_CRUISE_CONTROL = 5;
506
+ DEMAND_RESPONSE_STATE_MANUAL_MODE = 6;
507
+ DEMAND_RESPONSE_STATE_MANUAL_EFFICIENT = 7;
508
+ DEMAND_RESPONSE_STATE_FINISHED = 8;
509
+ }
510
+
511
+ enum DemandResponseStopReason {
512
+ DEMAND_RESPONSE_STOP_REASON_UNSPECIFIED = 0;
513
+ DEMAND_RESPONSE_STOP_REASON_TEMPERATURE_CHANGE = 1;
514
+ DEMAND_RESPONSE_STOP_REASON_MODE_CHANGE = 2;
515
+ DEMAND_RESPONSE_STOP_REASON_RECENT_EVENT = 3;
516
+ DEMAND_RESPONSE_STOP_REASON_COMPLETED = 4;
517
+ DEMAND_RESPONSE_STOP_REASON_BAD_PARAMETERS = 5;
518
+ DEMAND_RESPONSE_STOP_REASON_UNKNOWN = 6;
519
+ DEMAND_RESPONSE_STOP_REASON_KILLED_BEFORE_EVENT = 7;
520
+ DEMAND_RESPONSE_STOP_REASON_KILLED_DURING_EVENT = 8;
521
+ DEMAND_RESPONSE_STOP_REASON_RECEIVED_NEW_DR_BEFORE_EVENT = 9;
522
+ DEMAND_RESPONSE_STOP_REASON_RECEIVED_NEW_DR_DURING_EVENT = 10;
523
+ DEMAND_RESPONSE_STOP_REASON_RECEIVED_LATE = 11;
524
+ DEMAND_RESPONSE_STOP_REASON_WRONG_SCHEDULE_MODE_DURING_QUALIFICATION = 12;
525
+ DEMAND_RESPONSE_STOP_REASON_SYSTEM_OFF_DURING_QUALIFICATION = 13;
526
+ DEMAND_RESPONSE_STOP_REASON_WRONG_SCHEDULE_MODE_AT_EVENT_START = 14;
527
+ DEMAND_RESPONSE_STOP_REASON_SYSTEM_OFF_AT_EVENT_START = 15;
528
+ DEMAND_RESPONSE_STOP_REASON_SYSTEM_TURNED_OFF_DURING_EVENT = 16;
529
+ }
530
+
531
+ message DemandResponseEventStateItem {
532
+ string eventGuid = 1;
533
+ DemandResponseState state = 2;
534
+ HvacControl.Temperature cruiseControlTemperature = 3;
535
+ bool optedOut = 4;
536
+ bool inPeakPeriod = 5;
537
+ DemandResponseStopReason stopReason = 6;
538
+ DemandResponseConfigurationTrait.DemandResponseRequiredScheduleMode requiredScheduleMode = 7;
539
+ PartnerInformation.PartnerName partnerName = 8;
540
+ }
541
+
542
+ message DemandResponseStateChangedEvent {
543
+ string eventGuid = 1;
544
+ DemandResponseEventType eventType = 2;
545
+ DemandResponseState previousState = 3;
546
+ DemandResponseState currentState = 4;
547
+ google.protobuf.Timestamp qualificationStartTimeUtc = 5;
548
+ uint32 lengthEventSeconds = 6;
549
+ google.protobuf.Timestamp startTimeUtc = 7;
550
+ google.protobuf.Timestamp peakPeriodStartTimeUtc = 8;
551
+ google.protobuf.Timestamp stopTimeUtc = 9;
552
+ PartnerInformation.PartnerName partnerName = 10;
553
+ }
554
+ }
555
+
556
+ message EcoModeStateTrait {
557
+ EcoMode ecoMode = 1;
558
+ EcoModeChangeReason ecoModeChangeReason = 2;
559
+ HvacActor.HvacActorStruct ecoModeActor = 3;
560
+
561
+ enum EcoMode {
562
+ ECO_MODE_UNSPECIFIED = 0;
563
+ ECO_MODE_INACTIVE = 1;
564
+ ECO_MODE_MANUAL_ECO = 2;
565
+ ECO_MODE_AUTO_ECO = 3;
566
+ }
567
+
568
+ enum EcoModeChangeReason {
569
+ ECO_MODE_CHANGE_REASON_UNSPECIFIED = 0;
570
+ ECO_MODE_CHANGE_REASON_MANUAL = 1;
571
+ ECO_MODE_CHANGE_REASON_STRUCTURE_MODE = 2;
572
+ ECO_MODE_CHANGE_REASON_OCCUPANCY = 3;
573
+ ECO_MODE_CHANGE_REASON_TEMPERATURE = 4;
574
+ ECO_MODE_CHANGE_REASON_FEATURE_ENABLE = 5;
575
+ }
576
+
577
+ message EcoModeChangeRequest {
578
+ EcoMode ecoMode = 1;
579
+ HvacActor.HvacActorStruct ecoModeActor = 2;
580
+ bool setAll = 3;
581
+ }
582
+
583
+ message EcoModeChangeEvent {
584
+ EcoMode ecoMode = 1;
585
+ EcoMode priorEcoMode = 2;
586
+ EcoModeChangeReason ecoModeChangeReason = 3;
587
+ HvacActor.HvacActorStruct ecoModeActor = 4;
588
+ }
589
+
590
+ message StructureWideEcoModeChangeRequestEvent {
591
+ EcoMode requestedEcoMode = 1;
592
+ HvacActor.HvacActorStruct ecoModeActor = 2;
593
+ }
594
+ }
595
+
596
+ message SeasonalSavingsTrait {
597
+ string eventGuid = 1;
598
+ SeasonalSavingsState state = 2;
599
+ SeasonalSavingsStopReason stopReason = 3;
600
+ SetPointScheduleSettingsTrait.SetPointScheduleType scheduleMode = 4;
601
+ google.protobuf.Timestamp predictedCompletionTime = 5;
602
+ PartnerInformation.PartnerName partnerName = 6;
603
+ google.protobuf.Timestamp predictedExpirationTimeUtc = 7;
604
+
605
+ enum SeasonalSavingsState {
606
+ SEASONAL_SAVINGS_STATE_UNSPECIFIED = 0;
607
+ SEASONAL_SAVINGS_STATE_INITIAL = 1;
608
+ SEASONAL_SAVINGS_STATE_WAITING_TO_QUALIFY = 2;
609
+ SEASONAL_SAVINGS_STATE_PRESENTING_EVENT = 3;
610
+ SEASONAL_SAVINGS_STATE_WAITING = 4;
611
+ SEASONAL_SAVINGS_STATE_RUNNING = 5;
612
+ SEASONAL_SAVINGS_STATE_PAUSED = 6;
613
+ SEASONAL_SAVINGS_STATE_PRESENTING_FINAL_STAGE_COMPLETED = 7;
614
+ SEASONAL_SAVINGS_STATE_AFTERGLOW = 8;
615
+ SEASONAL_SAVINGS_STATE_FINISHED = 9;
616
+ }
617
+
618
+ enum SeasonalSavingsAction {
619
+ SEASONAL_SAVINGS_ACTION_UNSPECIFIED = 0;
620
+ SEASONAL_SAVINGS_ACTION_ACCEPT = 1;
621
+ SEASONAL_SAVINGS_ACTION_NOT_NOW = 2;
622
+ SEASONAL_SAVINGS_ACTION_STOP = 3;
623
+ SEASONAL_SAVINGS_ACTION_DONE = 4;
624
+ }
625
+
626
+ enum SeasonalSavingsStopReason {
627
+ SEASONAL_SAVINGS_STOP_REASON_UNSPECIFIED = 0;
628
+ SEASONAL_SAVINGS_STOP_REASON_NONE = 1;
629
+ SEASONAL_SAVINGS_STOP_REASON_INVALID = 2;
630
+ SEASONAL_SAVINGS_STOP_REASON_KILLED = 3;
631
+ SEASONAL_SAVINGS_STOP_REASON_KILLED_BY_SERVER = 4;
632
+ SEASONAL_SAVINGS_STOP_REASON_EVENT_EXPIRED = 5;
633
+ SEASONAL_SAVINGS_STOP_REASON_PRESENTING_EXPIRED = 6;
634
+ SEASONAL_SAVINGS_STOP_REASON_WAITING_EXPIRED = 7;
635
+ SEASONAL_SAVINGS_STOP_REASON_PAUSED_EXPIRED = 8;
636
+ SEASONAL_SAVINGS_STOP_REASON_DID_NOT_QUALIFY = 9;
637
+ SEASONAL_SAVINGS_STOP_REASON_USER_REQUESTED = 10;
638
+ }
639
+
640
+ message SeasonalSavingsStateChangedEvent {
641
+ string eventGuid = 1;
642
+ SeasonalSavingsState state = 2;
643
+ SeasonalSavingsState previousState = 3;
644
+ SeasonalSavingsAction action = 4;
645
+ SeasonalSavingsStopReason stopReason = 5;
646
+ google.protobuf.Timestamp predictedExpirationTimeUtc = 6;
647
+ SeasonalSavingsSettingsTrait.SeasonalSavingsSeasonType season = 7;
648
+ }
649
+ }
650
+
651
+ message HvacControlTrait {
652
+ HvacState hvacState = 1;
653
+ bool compressorLockoutEnabled = 2;
654
+ google.protobuf.Timestamp compressorLockoutTimeout = 3;
655
+
656
+ enum HvacStateChangeReason {
657
+ HVAC_STATE_CHANGE_REASON_UNSPECIFIED = 0;
658
+ HVAC_STATE_CHANGE_REASON_UNKNOWN = 1;
659
+ HVAC_STATE_CHANGE_REASON_HVAC_WIRE_POWER_LOSS = 2;
660
+ }
661
+
662
+ message HvacState {
663
+ bool coolStage1Active = 1;
664
+ bool coolStage2Active = 2;
665
+ bool coolStage3Active = 3;
666
+ bool heatStage1Active = 4;
667
+ bool heatStage2Active = 5;
668
+ bool heatStage3Active = 6;
669
+ bool alternateHeatStage1Active = 7;
670
+ bool alternateHeatStage2Active = 8;
671
+ bool auxiliaryHeatActive = 9;
672
+ bool emergencyHeatActive = 10;
673
+ bool humidifierActive = 11;
674
+ bool dehumidifierActive = 12;
675
+ }
676
+
677
+ message HvacStateChangeEvent {
678
+ HvacState hvacState = 1;
679
+ HvacState priorHvacState = 2;
680
+ google.protobuf.Timestamp priorStateEffectiveTime = 3;
681
+ HvacStateChangeReason reason = 4;
682
+ }
683
+ }
684
+
685
+ message DemandResponseConfigurationTrait {
686
+ map<uint32, DemandResponseEventConfigurationItem> configurationItems = 1;
687
+
688
+ enum DemandResponseEventType {
689
+ DEMAND_RESPONSE_EVENT_TYPE_UNSPECIFIED = 0;
690
+ DEMAND_RESPONSE_EVENT_TYPE_STANDARD = 1;
691
+ DEMAND_RESPONSE_EVENT_TYPE_CRITICAL = 2;
692
+ }
693
+
694
+ enum DemandResponseRequiredScheduleMode {
695
+ DEMAND_RESPONSE_REQUIRED_SCHEDULE_MODE_UNSPECIFIED = 0;
696
+ DEMAND_RESPONSE_REQUIRED_SCHEDULE_MODE_HEAT = 1;
697
+ DEMAND_RESPONSE_REQUIRED_SCHEDULE_MODE_COOL = 2;
698
+ DEMAND_RESPONSE_REQUIRED_SCHEDULE_MODE_RANGE = 3;
699
+ DEMAND_RESPONSE_REQUIRED_SCHEDULE_MODE_NONE = 4;
700
+ }
701
+
702
+ message DemandResponseOptimizationParameters {
703
+ HvacControl.Temperature preparationMinimumDisplayedOffset = 1;
704
+ HvacControl.Temperature preparationMaximumDisplayedOffset = 2;
705
+ HvacControl.Temperature eventMinimumDisplayedOffset = 3;
706
+ HvacControl.Temperature eventMaximumDisplayedOffset = 4;
707
+ int32 cycleLengthStepsize = 5;
708
+ HvacControl.Temperature weightTemperatureDeviation = 6;
709
+ float weightOffpeakUsage = 7;
710
+ float weightPeakUsage = 8;
711
+ HvacControl.Temperature defaultPolicyPreparationOffset = 9;
712
+ HvacControl.Temperature defaultPolicyEventOffset = 10;
713
+ float defaultEventOffsetStartTimePercent = 11;
714
+ int32 minimumTimeFromAdjustmentToEventEnd = 12;
715
+ SetPointScheduleSettingsTrait.SetPointType setpointType = 13;
716
+ bool shouldPredictAutoArrival = 14;
717
+ HvacControl.Temperature baselinePreparationSafetyOffset = 15;
718
+ HvacControl.Temperature baselineEventSafetyOffset = 16;
719
+ int32 baselineSafetyCheckTimeout = 17;
720
+ int32 minimumReoptimizationTimeout = 18;
721
+ bool useUct = 19;
722
+ bool obeyPreconditioningSetting = 20;
723
+ int32 numUctRollouts = 21;
724
+ bool useOneSidedTempError = 22;
725
+ bool obeyHeatpumpLockouts = 23;
726
+ bool obeyDualfuelBreakpoint = 24;
727
+ float minimumLengthFactorBetweenEvents = 25;
728
+ float peakRampInInitialOffset = 26;
729
+ int32 peakRampInSeconds = 27;
730
+ int32 peakRampOutSeconds = 28;
731
+ int32 preparationRampInSeconds = 29;
732
+ }
733
+
734
+ message DemandResponseEventConfigurationItem {
735
+ string eventGuid = 1;
736
+ string debugName = 2;
737
+ DemandResponseEventType eventType = 3;
738
+ google.protobuf.Timestamp qualificationStartTimeUtc = 4;
739
+ google.protobuf.Timestamp qualificationStopTimeUtc = 5;
740
+ google.protobuf.Timestamp peakPeriodStartTimeUtc = 6;
741
+ google.protobuf.Timestamp startTimeUtc = 7;
742
+ google.protobuf.Timestamp stopTimeUtc = 8;
743
+ uint32 lengthPreparationSeconds = 9;
744
+ uint32 lengthEventSeconds = 10;
745
+ bool preparationSpeedbumpDisabled = 11;
746
+ DemandResponseOptimizationParameters optimizationParameters = 12;
747
+ PartnerInformation.PartnerName partnerName = 13;
748
+ DemandResponseRequiredScheduleMode requiredScheduleMode = 14;
749
+ }
750
+ }
751
+
752
+ message PartnerInformation {
753
+ message PartnerName {
754
+ string name = 1;
755
+ string abbreviation = 2;
756
+ bool suppressNameInMessaging = 3;
757
+ }
758
+ }
759
+
760
+ message WiringTrait {
761
+ repeated WireTerminal connectionsMechanical = 1;
762
+ repeated WireTerminal connectionsElectrical = 2;
763
+ WireLabel pinCDescription = 3;
764
+ WireLabel pinGDescription = 4;
765
+ WireLabel pinObDescription = 5;
766
+ WireLabel pinRcDescription = 6;
767
+ WireLabel pinRhDescription = 7;
768
+ WireLabel pinStarDescription = 8;
769
+ WireLabel pinW1Description = 9;
770
+ WireLabel pinW2AuxDescription = 10;
771
+ WireLabel pinY1Description = 11;
772
+ WireLabel pinY2Description = 12;
773
+ string wiringError = 13;
774
+ google.protobuf.Timestamp wiringErrorTimestamp = 14;
775
+
776
+ enum WireTerminal {
777
+ WIRE_TERMINAL_UNSPECIFIED = 0;
778
+ WIRE_TERMINAL_W1 = 1;
779
+ WIRE_TERMINAL_Y1 = 2;
780
+ WIRE_TERMINAL_C = 4;
781
+ WIRE_TERMINAL_RC = 8;
782
+ WIRE_TERMINAL_RH = 16;
783
+ WIRE_TERMINAL_G = 32;
784
+ WIRE_TERMINAL_OB = 64;
785
+ WIRE_TERMINAL_W2 = 128;
786
+ WIRE_TERMINAL_Y2 = 256;
787
+ WIRE_TERMINAL_STAR = 512;
788
+ }
789
+
790
+ enum WireLabel {
791
+ WIRE_LABEL_UNSPECIFIED = 0;
792
+ WIRE_LABEL_NONE = 1;
793
+ WIRE_LABEL_COOL = 2;
794
+ WIRE_LABEL_HEAT = 3;
795
+ WIRE_LABEL_COOL_HEAT = 4;
796
+ WIRE_LABEL_STAGE_2_COOL = 5;
797
+ WIRE_LABEL_STAGE_2_HEAT = 6;
798
+ WIRE_LABEL_STAGE_2_COOL_HEAT = 7;
799
+ WIRE_LABEL_STAGE_3_COOL = 8;
800
+ WIRE_LABEL_STAGE_3_HEAT = 9;
801
+ WIRE_LABEL_STAGE_3_COOL_HEAT = 10;
802
+ WIRE_LABEL_HEAT_PUMP = 11;
803
+ WIRE_LABEL_AUX_HEAT = 12;
804
+ WIRE_LABEL_ALT_HEAT = 13;
805
+ WIRE_LABEL_STAGE_2_ALT_HEAT = 14;
806
+ WIRE_LABEL_EMERGENCY_HEAT = 15;
807
+ WIRE_LABEL_HUMIDIFIER = 16;
808
+ WIRE_LABEL_DEHUMIDIFIER = 17;
809
+ WIRE_LABEL_POWER = 18;
810
+ WIRE_LABEL_COMMON = 19;
811
+ WIRE_LABEL_FAN = 20;
812
+ WIRE_LABEL_FAN_2 = 21;
813
+ WIRE_LABEL_FAN_3 = 22;
814
+ WIRE_LABEL_THERMAL_SWITCH_INPUT = 23;
815
+ }
816
+
817
+ message WiringErrorEvent {
818
+ string wiringError = 1;
819
+ string priorWiringError = 2;
820
+ }
821
+
822
+ message WiringConnectionsElectricalChangeEvent {
823
+ repeated WireTerminal connectionsElectrical = 1;
824
+ repeated WireTerminal priorConnectionsElectrical = 2;
825
+ }
826
+ }
827
+
828
+ message FilterReminderTrait {
829
+ FilterReminderLevel currentFilterReminderLevel = 1;
830
+ google.protobuf.BoolValue filterReplacementNeeded = 2;
831
+ google.protobuf.Duration filterRuntime = 3;
832
+
833
+ enum FilterReminderLevel {
834
+ FILTER_REMINDER_LEVEL_UNSPECIFIED = 0;
835
+ FILTER_REMINDER_LEVEL_NONE = 1;
836
+ FILTER_REMINDER_LEVEL_FIRST = 2;
837
+ FILTER_REMINDER_LEVEL_SECOND = 3;
838
+ }
839
+
840
+ message FilterReminderLevelChangedEvent {
841
+ FilterReminderLevel filterReminderLevel = 1;
842
+ FilterReminderLevel priorFilterReminderLevel = 2;
843
+ }
844
+
845
+ message FilterReplacementNeededEvent {
846
+ google.protobuf.BoolValue filterReplacementNeeded = 1;
847
+ }
848
+ }
849
+
850
+ message SafetyShutoffTrait {
851
+ bool hvacCoSafetyShutoffActive = 1;
852
+ bool hvacSmokeSafetyShutoffActive = 2;
853
+ bool hvacFurnaceShutdown = 3;
854
+
855
+ message COShutoffEvent {
856
+ bool active = 1;
857
+ bool priorActive = 2;
858
+ }
859
+
860
+ message SmokeShutoffEvent {
861
+ bool active = 1;
862
+ bool priorActive = 2;
863
+ }
864
+
865
+ message FurnaceShutdownEvent {
866
+ bool active = 1;
867
+ bool priorActive = 2;
868
+ }
869
+ }
870
+
871
+ message ScheduleHoldTrait {
872
+ HoldState state = 1;
873
+ HoldStateChangeReason reason = 2;
874
+ google.protobuf.Timestamp lastUpdateTime = 3;
875
+
876
+ enum HoldState {
877
+ HOLD_STATE_UNSPECIFIED = 0;
878
+ HOLD_STATE_INACTIVE = 1;
879
+ HOLD_STATE_ACTIVE = 2;
880
+ }
881
+
882
+ enum HoldStateChangeReason {
883
+ HOLD_STATE_CHANGE_REASON_UNSPECIFIED = 0;
884
+ HOLD_STATE_CHANGE_REASON_STARTED = 1;
885
+ HOLD_STATE_CHANGE_REASON_UPDATED = 2;
886
+ HOLD_STATE_CHANGE_REASON_EXPIRED = 3;
887
+ HOLD_STATE_CHANGE_REASON_CANCELLED_BY_INITIATOR = 4;
888
+ HOLD_STATE_CHANGE_REASON_OPTED_OUT = 5;
889
+ HOLD_STATE_CHANGE_REASON_REJECTED = 6;
890
+ HOLD_STATE_CHANGE_REASON_REJECTED_UNAVAILABLE = 7;
891
+ HOLD_STATE_CHANGE_REASON_REJECTED_WRONG_SCHEDULE_MODE = 8;
892
+ HOLD_STATE_CHANGE_REASON_REJECTED_INVALID_SETTINGS = 9;
893
+ }
894
+
895
+ message ScheduleHoldEvent {
896
+ HoldState state = 1;
897
+ HoldState prevState = 2;
898
+ HoldStateChangeReason reason = 3;
899
+ HvacActor.HvacActorMethod initiatedBy = 4; // TODO: Not sure if this is the correct enum
900
+ HvacActor.HvacActorMethod updatedBy = 5; // TODO: Not sure if this is the correct enum
901
+ }
902
+ }
903
+
904
+ message SeasonalSavingsActionTrait {
905
+ SeasonalSavingsActionStruct action = 1;
906
+
907
+ message SeasonalSavingsActionStruct {
908
+ string eventGuid = 1;
909
+ SeasonalSavingsTrait.SeasonalSavingsAction requestedAction = 2;
910
+ HvacActor.HvacActorStruct hvacActor = 3;
911
+ }
912
+
913
+ message SeasonalSavingsActionRequest {
914
+ SeasonalSavingsActionStruct action = 1;
915
+ }
916
+
917
+ message SeasonalSavingsActionRequestEvent {
918
+ SeasonalSavingsActionStruct action = 1;
919
+ }
920
+ }
921
+
922
+ message BackplateInfoTrait {
923
+ string serialNumber = 1;
924
+ string model = 2;
925
+ string monoVersion = 3;
926
+ string monoInfo = 4;
927
+ string bslVersion = 5;
928
+ string bslInfo = 6;
929
+
930
+ enum BackplateResetReason {
931
+ BACKPLATE_RESET_REASON_UNSPECIFIED = 0;
932
+ BACKPLATE_RESET_REASON_INVALID = 1;
933
+ BACKPLATE_RESET_REASON_INIT = 2;
934
+ BACKPLATE_RESET_REASON_TIMEOUT_COMMS = 3;
935
+ BACKPLATE_RESET_REASON_EXIT = 4;
936
+ BACKPLATE_RESET_REASON_CORRUPT_TYPE = 5;
937
+ BACKPLATE_RESET_REASON_CORRUPT_MESSAGES = 6;
938
+ BACKPLATE_RESET_REASON_TIMEOUT_MESSAGE = 7;
939
+ BACKPLATE_RESET_REASON_RETRIES = 8;
940
+ BACKPLATE_RESET_REASON_ASYNC = 9;
941
+ BACKPLATE_RESET_REASON_UPDATE_COMPLETE = 10;
942
+ BACKPLATE_RESET_REASON_ATTACH = 11;
943
+ BACKPLATE_RESET_REASON_MISSED_TEMP = 12;
944
+ BACKPLATE_RESET_REASON_I2C_DOWN = 13;
945
+ BACKPLATE_RESET_REASON_TP_ERROR = 14;
946
+ BACKPLATE_RESET_REASON_CORRUPTED_TEMP_MSG = 15;
947
+ BACKPLATE_RESET_REASON_BP_POWER_MISMATCH = 16;
948
+ }
949
+
950
+ message BackplateResetEvent {
951
+ BackplateResetReason backplateResetReason = 1;
952
+ }
953
+ }
954
+
955
+ message DemandResponseActionTrait {
956
+ map<uint32, DemandResponseEventActionItem> actionItems = 1;
957
+
958
+ enum DemandResponseAction {
959
+ DEMAND_RESPONSE_ACTION_UNSPECIFIED = 0;
960
+ DEMAND_RESPONSE_ACTION_KILL_EVENT = 1;
961
+ DEMAND_RESPONSE_ACTION_STOP = 2;
962
+ DEMAND_RESPONSE_ACTION_EVENT_RECEIVED = 3;
963
+ DEMAND_RESPONSE_ACTION_QUALIFIED = 4;
964
+ DEMAND_RESPONSE_ACTION_CROSSED_EVENT_START_TIME = 5;
965
+ DEMAND_RESPONSE_ACTION_CROSSED_EVENT_END_TIME = 6;
966
+ DEMAND_RESPONSE_ACTION_CROSSED_PEAK_PERIOD_START_TIME = 7;
967
+ DEMAND_RESPONSE_ACTION_TEMPERATURE_CHANGE = 8;
968
+ DEMAND_RESPONSE_ACTION_TEMPERATURE_CHANGE_EFFICIENT = 9;
969
+ }
970
+
971
+ message DemandResponseEventActionItem {
972
+ string eventGuid = 1;
973
+ DemandResponseAction requestedAction = 2;
974
+ }
975
+ }
976
+
977
+ message DisplaySettingsTrait {
978
+ FarsightDisplay farsightDisplay = 1;
979
+ TemperatureScale temperatureScale = 2;
980
+
981
+ enum FarsightDisplay {
982
+ FARSIGHT_DISPLAY_UNSPECIFIED = 0;
983
+ FARSIGHT_DISPLAY_TARGET_TEMP = 1;
984
+ FARSIGHT_DISPLAY_CURRENT_TEMP = 2;
985
+ FARSIGHT_DISPLAY_ANALOG_CLOCK = 3;
986
+ FARSIGHT_DISPLAY_DIGITAL_CLOCK = 4;
987
+ FARSIGHT_DISPLAY_WEATHER = 5;
988
+ FARSIGHT_DISPLAY_NONE = 6;
989
+ }
990
+
991
+ enum TemperatureScale {
992
+ TEMPERATURE_SCALE_UNSPECIFIED = 0;
993
+ TEMPERATURE_SCALE_C = 1;
994
+ TEMPERATURE_SCALE_F = 2;
995
+ }
996
+ }
997
+
998
+ message FanControlTrait {
999
+ FanSpeedSetting currentSpeed = 1;
1000
+ bool userRequestedFanRunning = 2;
1001
+
1002
+ enum FanSpeedSetting {
1003
+ FAN_SPEED_SETTING_UNSPECIFIED = 0;
1004
+ FAN_SPEED_SETTING_STAGE1 = 1;
1005
+ FAN_SPEED_SETTING_STAGE2 = 2;
1006
+ FAN_SPEED_SETTING_STAGE3 = 3;
1007
+ FAN_SPEED_SETTING_OFF = 4;
1008
+ FAN_SPEED_SETTING_AUTO = 5;
1009
+ }
1010
+ }
1011
+
1012
+ message NestProtectAlarmingTrait {
1013
+ map<uint32, NestProtectItem> nestProtect = 1;
1014
+
1015
+ enum AlarmingStatus {
1016
+ ALARMING_STATUS_UNSPECIFIED = 0;
1017
+ ALARMING_STATUS_HEADSUP_ONE = 1;
1018
+ ALARMING_STATUS_HEADSUP_TWO = 2;
1019
+ ALARMING_STATUS_ALARMING = 3;
1020
+ ALARMING_STATUS_NOT_ALARMING = 4;
1021
+ }
1022
+
1023
+ message NestProtectItem {
1024
+ weave.common.StringRef deviceId = 1;
1025
+ AlarmingStatus smokeStatus = 2;
1026
+ AlarmingStatus coStatus = 3;
1027
+ bool hushedState = 4;
1028
+ weave.common.StringRef spokenWhereId = 5;
1029
+ }
1030
+ }
1031
+
1032
+ message ResetTrait {
1033
+ enum ResetScheduleTo {
1034
+ RESET_SCHEDULE_TO_UNSPECIFIED = 0;
1035
+ RESET_SCHEDULE_TO_BLANK = 1;
1036
+ RESET_SCHEDULE_TO_BASIC = 2;
1037
+ RESET_SCHEDULE_TO_RELEARNABLE_BASIC = 3;
1038
+ }
1039
+
1040
+ message ResetTemperatureSchedulesRequest {
1041
+ ResetScheduleTo resetTo = 1;
1042
+ }
1043
+ }
1044
+
1045
+ message SafetyTemperatureTrait {
1046
+ bool safetyTempActivatingHvac = 1;
1047
+ SafetyTempState state = 2;
1048
+
1049
+ enum SafetyTempState {
1050
+ SAFETY_TEMP_STATE_UNSPECIFIED = 0;
1051
+ SAFETY_TEMP_STATE_NONE = 1;
1052
+ SAFETY_TEMP_STATE_HEAT = 2;
1053
+ SAFETY_TEMP_STATE_COOL = 3;
1054
+ }
1055
+
1056
+ message SafetyTempEvent {
1057
+ SafetyTempState state = 1;
1058
+ SafetyTempState priorState = 2;
1059
+ HvacControl.Temperature safetyTemp = 3;
1060
+ }
1061
+ }
1062
+
1063
+ message EnterpriseProgramsEntitlementsTrait {
1064
+ repeated EnterpriseProgram supportedPrograms = 1;
1065
+
1066
+ enum EnterpriseProgram {
1067
+ ENTERPRISE_PROGRAM_UNSPECIFIED = 0;
1068
+ ENTERPRISE_PROGRAM_SEASONAL_SAVINGS = 1;
1069
+ ENTERPRISE_PROGRAM_RUSH_HOUR_REWARDS = 2;
1070
+ ENTERPRISE_PROGRAM_TIME_OF_SAVINGS = 4;
1071
+ }
1072
+ }
1073
+
1074
+ message FanControlCapabilitiesTrait {
1075
+ FanControlTrait.FanSpeedSetting maxAvailableSpeed = 1;
1076
+
1077
+ enum FanTotalStages {
1078
+ FAN_TOTAL_STAGES_UNSPECIFIED = 0;
1079
+ FAN_TOTAL_STAGES_STAGE1 = 1;
1080
+ FAN_TOTAL_STAGES_STAGE2 = 2;
1081
+ FAN_TOTAL_STAGES_STAGE3 = 3;
1082
+ FAN_TOTAL_STAGES_NONE = 4;
1083
+ }
1084
+ }
1085
+
1086
+ message FanControlSettingsTrait {
1087
+ FanMode mode = 1;
1088
+ FanControlTrait.FanSpeedSetting hvacOverrideSpeed = 2;
1089
+ FanControlTrait.FanSpeedSetting scheduleSpeed = 3;
1090
+ uint32 scheduleDutyCycle = 4;
1091
+ uint32 scheduleStartTime = 5;
1092
+ uint32 scheduleEndTime = 6;
1093
+ FanControlTrait.FanSpeedSetting timerSpeed = 7;
1094
+ google.protobuf.Timestamp timerEnd = 8;
1095
+ google.protobuf.Duration timerDuration = 9;
1096
+
1097
+ enum FanMode {
1098
+ FAN_MODE_UNSPECIFIED = 0;
1099
+ FAN_MODE_AUTO = 1;
1100
+ FAN_MODE_CONTINUOUS_ON = 2;
1101
+ FAN_MODE_DUTY_CYCLE = 3;
1102
+ }
1103
+ }
1104
+
1105
+ message HeatLinkSettingsTrait {
1106
+ bool manualModeActive = 1;
1107
+ HeatLinkConnectionType heatConnectionType = 2;
1108
+ HeatLinkConnectionType hotWaterConnectionType = 3;
1109
+
1110
+ enum HeatLinkConnectionType {
1111
+ HEAT_LINK_CONNECTION_TYPE_UNSPECIFIED = 0;
1112
+ HEAT_LINK_CONNECTION_TYPE_ON_OFF = 1;
1113
+ HEAT_LINK_CONNECTION_TYPE_OPENTHERM = 2;
1114
+ HEAT_LINK_CONNECTION_TYPE_NOT_CONNECTED = 3;
1115
+ }
1116
+ }
1117
+
1118
+ message HeatLinkTrait {
1119
+ HvacConnectionState connectionStatus = 1;
1120
+
1121
+ enum HvacConnectionState {
1122
+ HVAC_CONNECTION_STATE_UNSPECIFIED = 0;
1123
+ HVAC_CONNECTION_STATE_DISCONNECTED = 1;
1124
+ HVAC_CONNECTION_STATE_WIRED = 2;
1125
+ HVAC_CONNECTION_STATE_WIRELESS = 3;
1126
+ HVAC_CONNECTION_STATE_WIRED_AND_WIRELESS = 4;
1127
+ }
1128
+ }
1129
+
1130
+ message HeatPumpControlSettingsTrait {
1131
+ HvacControl.TemperatureThreshold heatPumpAuxThreshold = 1;
1132
+ HvacControl.TemperatureThreshold heatPumpCompThreshold = 2;
1133
+ HeatPumpSavingsMode heatPumpSavingsMode = 3;
1134
+
1135
+ enum HeatPumpSavingsMode {
1136
+ HEAT_PUMP_SAVINGS_MODE_UNSPECIFIED = 0;
1137
+ HEAT_PUMP_SAVINGS_MODE_MAX_SAVINGS = 1;
1138
+ HEAT_PUMP_SAVINGS_MODE_BALANCED = 2;
1139
+ HEAT_PUMP_SAVINGS_MODE_MAX_COMFORT = 3;
1140
+ HEAT_PUMP_SAVINGS_MODE_OFF = 4;
1141
+ }
1142
+ }
1143
+
1144
+ message HotWaterSettingsTrait {
1145
+ bool structureModeFollowEnabled = 1;
1146
+ google.protobuf.Timestamp boostTimerEnd = 2;
1147
+ HotWaterMode mode = 3;
1148
+ HvacControl.Temperature temperature = 4;
1149
+
1150
+ enum HotWaterMode {
1151
+ HOT_WATER_MODE_UNSPECIFIED = 0;
1152
+ HOT_WATER_MODE_SCHEDULE = 1;
1153
+ HOT_WATER_MODE_OFF = 2;
1154
+ }
1155
+ }
1156
+
1157
+ message ScheduleHoldSettingsTrait {
1158
+ HoldSetpoint holdSetpoint = 1;
1159
+
1160
+ message HoldSetpoint {
1161
+ SetPointScheduleSettingsTrait.SetPointType setpointType = 1;
1162
+ HvacControl.Temperature heatTarget = 2;
1163
+ HvacControl.Temperature coolTarget = 3;
1164
+ HvacActor.HvacActorMethod initiatedBy = 4; // TODO: Not sure if this is the correct enum
1165
+ HvacActor.HvacActorMethod lastUpdatedBy = 5; // TODO: Not sure if this is the correct enum
1166
+ google.protobuf.Timestamp endTime = 6;
1167
+ }
1168
+ }
1169
+
1170
+ message SunblockTrait {
1171
+ bool ready = 1;
1172
+ bool active = 2;
1173
+
1174
+ message SunblockChangeEvent {
1175
+ bool active = 1;
1176
+ google.protobuf.Timestamp lastChangeTime = 2;
1177
+ }
1178
+ }
1179
+
1180
+ message AirwaveSettingsTrait {
1181
+ bool fanCoolingEnabled = 1;
1182
+ }
1183
+
1184
+ message AirwaveTrait {
1185
+ bool fanCoolingActive = 1;
1186
+ bool fanCoolingReadiness = 2;
1187
+ }
1188
+
1189
+ message CoolToDrySettingsTrait {
1190
+ bool enabled = 1;
1191
+ }
1192
+
1193
+ message CoolToDryTrait {
1194
+ bool isActive = 1;
1195
+ }
1196
+
1197
+ message EcoModeSettingsTrait {
1198
+ bool structureModeFollowEnabled = 1;
1199
+ HvacControl.TemperatureThreshold ecoTemperatureHeat = 2;
1200
+ HvacControl.TemperatureThreshold ecoTemperatureCool = 3;
1201
+ }
1202
+
1203
+ message EcoModeTrait {
1204
+ HvacControl.Temperature currentEcoTemperatureHeat = 1;
1205
+ HvacControl.Temperature currentEcoTemperatureCool = 2;
1206
+ }
1207
+
1208
+ message EmergencyHeatSettingsTrait {
1209
+ bool emergencyHeatEnabled = 1;
1210
+ }
1211
+
1212
+ message FilterReminderSettingsTrait {
1213
+ google.protobuf.Timestamp filterChangedDate = 1;
1214
+ google.protobuf.Timestamp filterChangedSetDate = 2;
1215
+ bool filterReminderEnabled = 3;
1216
+ google.protobuf.Duration filterReplacementThreshold = 4;
1217
+ }
1218
+
1219
+ message HeatPumpControlTrait {
1220
+ bool heatPumpReady = 1;
1221
+ bool heatPumpSetbackActive = 2;
1222
+ }
1223
+
1224
+ message HotWaterTrait {
1225
+ bool controlActive = 1;
1226
+ bool awayActive = 2;
1227
+ bool boilerActive = 3;
1228
+ google.protobuf.Timestamp nextTransitionTime = 4;
1229
+ HvacControl.Temperature temperature = 5;
1230
+ }
1231
+
1232
+ message HumidityControlSettingsTrait {
1233
+ HvacControl.HumidityThreshold targetHumidity = 1;
1234
+ bool quietTimesEnabled = 2;
1235
+ uint32 quietStartSecondsInDay = 3;
1236
+ uint32 quietEndSecondsInDay = 4;
1237
+ }
1238
+
1239
+ message HvacDiagnosticsAlertsSettingsTrait {
1240
+ google.protobuf.BoolValue enableAlerts = 1;
1241
+ google.protobuf.Timestamp lastAlertTime = 2;
1242
+ google.protobuf.Timestamp lastConsentTime = 3;
1243
+ }
1244
+
1245
+ message HvacDisplayTrait {
1246
+ bool ignoreHvacStaging = 1;
1247
+ repeated string thermostatState = 2;
1248
+ }
1249
+
1250
+ message HvacEquipmentCapabilitiesTrait {
1251
+ bool hasStage1Cool = 1;
1252
+ bool hasStage2Cool = 2;
1253
+ bool hasStage3Cool = 3;
1254
+ bool hasStage1Heat = 4;
1255
+ bool hasStage2Heat = 5;
1256
+ bool hasStage3Heat = 6;
1257
+ bool hasStage1AlternateHeat = 7;
1258
+ bool hasStage2AlternateHeat = 8;
1259
+ bool hasHumidifier = 9;
1260
+ bool hasDehumidifier = 10;
1261
+ bool hasDualFuel = 11;
1262
+ bool hasAuxHeat = 12;
1263
+ bool hasEmergencyHeat = 13;
1264
+ bool hasAirFilter = 14;
1265
+ bool hasFossilFuel = 15;
1266
+ bool hasHotWaterControl = 16;
1267
+ bool hasHeatPump = 17;
1268
+ bool hasHotWaterTemperature = 18;
1269
+ bool hasBoilerSupplyTemperature = 19;
1270
+ }
1271
+
1272
+ message InstallationSettingsTrait {
1273
+ bool oobWifiCompleted = 1;
1274
+ bool oobHomeInfoCompleted = 2;
1275
+ bool oobWhereCompleted = 3;
1276
+ bool oobWiresCompleted = 4;
1277
+ bool oobTempCompleted = 5;
1278
+ bool oobTestCompleted = 6;
1279
+ bool oobSummaryCompleted = 7;
1280
+ bool oobStartupCompleted = 8;
1281
+ google.protobuf.StringValue proId = 9;
1282
+ }
1283
+
1284
+ message LeafTrait {
1285
+ bool active = 1;
1286
+ HvacControl.Temperature ecoThresholdHeat = 2;
1287
+ HvacControl.Temperature ecoThresholdCool = 3;
1288
+ HvacControl.Temperature setpointThresholdHeat = 4;
1289
+ HvacControl.Temperature setpointThresholdCool = 5;
1290
+ HvacControl.Temperature scheduleDelta = 6;
1291
+ }
1292
+
1293
+ message PreconditioningSettingsTrait {
1294
+ bool preconditioningEnabled = 1;
1295
+ google.protobuf.Duration maxNighttimeSeconds = 2;
1296
+ }
1297
+
1298
+ message PreconditioningTrait {
1299
+ bool preconditioningActive = 1;
1300
+ }
1301
+
1302
+ message RadiantControlSettingsTrait {
1303
+ bool radiantControlEnabled = 1;
1304
+ }
1305
+
1306
+ message SafetyShutoffCapabilitiesTrait {
1307
+ bool smokeShutoffSupported = 1;
1308
+ }
1309
+
1310
+ message SafetyShutoffSettingsTrait {
1311
+ bool hvacCoSafetyShutoffEnabled = 1;
1312
+ bool hvacSmokeSafetyShutoffEnabled = 2;
1313
+ }
1314
+
1315
+ message SafetyTemperatureSettingsTrait {
1316
+ HvacControl.TemperatureThreshold lowerSafetyTemp = 1;
1317
+ HvacControl.TemperatureThreshold upperSafetyTemp = 2;
1318
+ }
1319
+
1320
+ message ScheduleLearningSettingsTrait {
1321
+ bool scheduleLearningEnabled = 1;
1322
+ }
1323
+
1324
+ message SunblockSettingsTrait {
1325
+ bool enabled = 1;
1326
+ }
1327
+
1328
+ message TargetTemperatureSettingsTrait {
1329
+ SetPointScheduleSettingsTrait.TemperatureSetPoint targetTemperature = 1;
1330
+ google.protobuf.BoolValue enabled = 2;
1331
+ }
1332
+
1333
+ message TemperatureLockSettingsTrait {
1334
+ bool enabled = 1;
1335
+ HvacControl.Temperature temperatureHigh = 2;
1336
+ HvacControl.Temperature temperatureLow = 3;
1337
+ string pinHash = 4;
1338
+ }
1339
+
1340
+ message TimeToTemperatureTrait {
1341
+ google.protobuf.Duration timeToTargetTemperature = 1;
1342
+ google.protobuf.Timestamp predictedTimeOfReachingTarget = 2;
1343
+ }
1344
+
1345
+ message UtilitySettingsTrait {
1346
+ bool demandResponseEnabled = 1;
1347
+ bool touEnabled = 2;
1348
+ bool demandChargeEnabled = 3;
1349
+ }
1350
+
1351
+ message WakeOnApproachSettingsTrait {
1352
+ bool enabled = 1;
1353
+ }