homebridge-nest-accfactory 0.2.9 → 0.3.0

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 (45) hide show
  1. package/CHANGELOG.md +29 -1
  2. package/README.md +14 -7
  3. package/config.schema.json +126 -1
  4. package/dist/HomeKitDevice.js +194 -77
  5. package/dist/HomeKitHistory.js +1 -1
  6. package/dist/config.js +207 -0
  7. package/dist/devices.js +113 -0
  8. package/dist/index.js +2 -1
  9. package/dist/nexustalk.js +19 -21
  10. package/dist/{camera.js → plugins/camera.js} +212 -239
  11. package/dist/{doorbell.js → plugins/doorbell.js} +32 -30
  12. package/dist/plugins/floodlight.js +91 -0
  13. package/dist/plugins/heatlink.js +17 -0
  14. package/dist/{protect.js → plugins/protect.js} +24 -41
  15. package/dist/{tempsensor.js → plugins/tempsensor.js} +13 -17
  16. package/dist/{thermostat.js → plugins/thermostat.js} +424 -381
  17. package/dist/{weather.js → plugins/weather.js} +26 -60
  18. package/dist/protobuf/google/trait/product/camera.proto +1 -1
  19. package/dist/protobuf/googlehome/foyer.proto +0 -46
  20. package/dist/protobuf/nest/services/apigateway.proto +31 -1
  21. package/dist/protobuf/nest/trait/firmware.proto +207 -89
  22. package/dist/protobuf/nest/trait/hvac.proto +1052 -312
  23. package/dist/protobuf/nest/trait/located.proto +51 -8
  24. package/dist/protobuf/nest/trait/network.proto +366 -36
  25. package/dist/protobuf/nest/trait/occupancy.proto +145 -17
  26. package/dist/protobuf/nest/trait/product/protect.proto +57 -43
  27. package/dist/protobuf/nest/trait/resourcedirectory.proto +8 -0
  28. package/dist/protobuf/nest/trait/sensor.proto +7 -1
  29. package/dist/protobuf/nest/trait/service.proto +3 -1
  30. package/dist/protobuf/nest/trait/structure.proto +60 -14
  31. package/dist/protobuf/nest/trait/ui.proto +41 -1
  32. package/dist/protobuf/nest/trait/user.proto +6 -1
  33. package/dist/protobuf/nest/trait/voiceassistant.proto +2 -1
  34. package/dist/protobuf/nestlabs/eventingapi/v1.proto +20 -1
  35. package/dist/protobuf/root.proto +1 -0
  36. package/dist/protobuf/wdl.proto +18 -2
  37. package/dist/protobuf/weave/common.proto +2 -1
  38. package/dist/protobuf/weave/trait/heartbeat.proto +41 -1
  39. package/dist/protobuf/weave/trait/power.proto +1 -0
  40. package/dist/protobuf/weave/trait/security.proto +10 -1
  41. package/dist/streamer.js +80 -80
  42. package/dist/system.js +1208 -1245
  43. package/dist/webrtc.js +28 -23
  44. package/package.json +12 -12
  45. package/dist/floodlight.js +0 -97
@@ -3,12 +3,147 @@ syntax = "proto3";
3
3
  import "google/protobuf/duration.proto";
4
4
  import "google/protobuf/timestamp.proto";
5
5
  import "google/protobuf/wrappers.proto";
6
+ import "../../nest/trait/located.proto";
7
+ import "../../nest/trait/ui.proto";
6
8
  import "../../nest/trait/sensor.proto";
7
9
  import "../../weave/common.proto";
8
10
 
9
11
  package nest.trait.hvac;
10
12
 
13
+ message RemoteComfortSensingSettingsTrait {
14
+ RcsControlMode rcsControlMode = 1;
15
+ RcsSourceSelection activeRcsSelection = 2;
16
+ RcsSchedule rcsControlSchedule = 3;
17
+ repeated RcsSensorId associatedRcsSensors = 4;
18
+ MultiSensorSettings multiSensorSettings = 5;
19
+ HvacSensor.SensorSelection sensorSelection = 6;
20
+
21
+ enum RcsControlMode {
22
+ RCS_CONTROL_MODE_UNSPECIFIED = 0;
23
+ RCS_CONTROL_MODE_HOLD = 1;
24
+ RCS_CONTROL_MODE_SCHEDULE = 2;
25
+ RCS_CONTROL_MODE_SCHEDULE_OVERRIDE = 3;
26
+ }
27
+
28
+ enum RcsSourceType {
29
+ RCS_SOURCE_TYPE_UNSPECIFIED = 0;
30
+ RCS_SOURCE_TYPE_BACKPLATE = 1;
31
+ RCS_SOURCE_TYPE_SINGLE_SENSOR = 2;
32
+ RCS_SOURCE_TYPE_MULTI_SENSOR = 3;
33
+ }
34
+
35
+ enum StatusCode {
36
+ STATUS_CODE_UNSPECIFIED = 0;
37
+ STATUS_CODE_SUCCESS = 1;
38
+ STATUS_CODE_FAILURE = 2;
39
+ STATUS_CODE_SENSOR_ALREADY_ASSOCIATED = 4096;
40
+ STATUS_CODE_SENSOR_LIMIT_REACHED = 4097;
41
+ STATUS_CODE_SENSOR_NOT_ASSOCIATED = 8192;
42
+ }
43
+
44
+ enum CompatibleSensorStatusCode {
45
+ COMPATIBLE_SENSOR_STATUS_CODE_UNSPECIFIED = 0;
46
+ COMPATIBLE_SENSOR_STATUS_CODE_ASSOCIATED = 1;
47
+ COMPATIBLE_SENSOR_STATUS_CODE_NOT_ASSOCIATED = 2;
48
+ }
49
+
50
+ enum SensorSelectionChangeReason {
51
+ SENSOR_SELECTION_CHANGE_REASON_UNSPECIFIED = 0;
52
+ SENSOR_SELECTION_CHANGE_REASON_NONE = 1;
53
+ SENSOR_SELECTION_CHANGE_REASON_ADHOC = 2;
54
+ SENSOR_SELECTION_CHANGE_REASON_SCHEDULE = 3;
55
+ SENSOR_SELECTION_CHANGE_REASON_EARLY_ON = 4;
56
+ SENSOR_SELECTION_CHANGE_REASON_FAILSAFE = 5;
57
+ SENSOR_SELECTION_CHANGE_REASON_PERIODICAL = 6;
58
+ }
59
+
60
+ message RcsSensorId {
61
+ weave.common.ResourceId deviceId = 1;
62
+ uint32 vendorId = 2;
63
+ uint32 productId = 3;
64
+ }
65
+
66
+ message MultiSensorSettings {
67
+ bool multiSensorEnabled = 1;
68
+ repeated weave.common.ResourceId multiSensorGroup = 2;
69
+ }
70
+
71
+ message RcsSourceSelection {
72
+ RcsSourceType rcsSourceType = 1;
73
+ weave.common.ResourceId activeRcsSensor = 2;
74
+ }
75
+
76
+ message RcsInterval {
77
+ RcsSourceSelection rcsSelection = 1;
78
+ uint32 startSecondsInDay = 2;
79
+ uint32 endSecondsInDay = 3;
80
+ }
81
+
82
+ message RcsSchedule {
83
+ map<uint32, RcsInterval> intervals = 1;
84
+ }
85
+
86
+ message AssociateRcsSensorRequest {
87
+ weave.common.ResourceId resourceId = 1;
88
+ }
89
+
90
+ message AssociateRcsSensorResponse {
91
+ StatusCode status = 1;
92
+ }
93
+
94
+ message DissociateRcsSensorRequest {
95
+ weave.common.ResourceId resourceId = 1;
96
+ }
97
+
98
+ message DissociateRcsSensorResponse {
99
+ StatusCode status = 1;
100
+ }
101
+
102
+ message TemperatureSensorChangeEvent {
103
+ repeated weave.common.ResourceId previousSensorIds = 1;
104
+ repeated weave.common.ResourceId currentSensorIds = 2;
105
+ }
106
+
107
+ message AssociationEvent {
108
+ weave.common.ResourceId sensorId = 1;
109
+ }
110
+
111
+ message DissociationEvent {
112
+ weave.common.ResourceId sensorId = 1;
113
+ }
114
+
115
+ message CompatibleSensorsRequest {
116
+ }
117
+
118
+ message CompatibleSensorsResponse {
119
+ repeated SensorCompatibility compatibleSensors = 1;
120
+ }
121
+
122
+ message SensorCompatibility {
123
+ weave.common.ResourceId resourceId = 1;
124
+ StatusCode status = 2;
125
+ }
126
+
127
+ message SensorSelectionChangeEvent {
128
+ HvacSensor.SensorSelection sensorSelection = 1;
129
+ HvacSensor.SensorSelection prevSensorSelection = 2;
130
+ SensorSelectionChangeReason changeReason = 3;
131
+ }
132
+ }
133
+
11
134
  message HvacControl {
135
+ enum TargetChangeReason {
136
+ TARGET_CHANGE_REASON_UNSPECIFIED = 0;
137
+ TARGET_CHANGE_REASON_NONE = 1;
138
+ TARGET_CHANGE_REASON_ADHOC = 2;
139
+ TARGET_CHANGE_REASON_SCHEDULE = 3;
140
+ TARGET_CHANGE_REASON_EARLY_ON = 4;
141
+ TARGET_CHANGE_REASON_EMERGENCY_HEAT = 5;
142
+ TARGET_CHANGE_REASON_HOLD = 6;
143
+ TARGET_CHANGE_REASON_ECO_MODE = 7;
144
+ TARGET_CHANGE_REASON_PERIODICAL = 8;
145
+ }
146
+
12
147
  message Temperature {
13
148
  float value = 1;
14
149
  }
@@ -22,6 +157,167 @@ message HvacControl {
22
157
  float value = 1;
23
158
  bool enabled = 2;
24
159
  }
160
+
161
+ message RangeTarget {
162
+ TemperatureThreshold heatingTarget = 1;
163
+ TemperatureThreshold coolingTarget = 2;
164
+ }
165
+ }
166
+
167
+ message HvacDiagnosticsAlertsSettingsTrait {
168
+ google.protobuf.BoolValue enableAlerts = 1;
169
+ google.protobuf.Timestamp lastAlertTime = 2;
170
+ google.protobuf.Timestamp lastConsentTime = 3;
171
+
172
+ enum HvacSystem {
173
+ HVAC_SYSTEM_UNSPECIFIED = 0;
174
+ HVAC_SYSTEM_COOL = 1;
175
+ HVAC_SYSTEM_HEAT = 2;
176
+ }
177
+
178
+ enum RangeInclusion {
179
+ RANGE_INCLUSION_UNSPECIFIED = 0;
180
+ RANGE_INCLUSION_ABOVE_BOUNDS = 1;
181
+ RANGE_INCLUSION_BELOW_BOUNDS = 2;
182
+ }
183
+
184
+ enum FailureCause {
185
+ FAILURE_CAUSE_UNSPECIFIED = 0;
186
+ FAILURE_CAUSE_BY_ASSEMBLY_LINE = 1;
187
+ FAILURE_CAUSE_BY_IMPROPER_USAGE = 2;
188
+ }
189
+
190
+ enum WiringError {
191
+ WIRING_ERROR_UNSPECIFIED = 0;
192
+ WIRING_ERROR_NO_POWER_TO_C = 1;
193
+ WIRING_ERROR_LOW_POWER_TO_C = 2;
194
+ }
195
+
196
+ message HvacSystemAlertEvent {
197
+ string structurePostalCode = 1;
198
+ string structureCountryCode = 2;
199
+ string optOutUrl = 3;
200
+ bool proLeadEnabled = 4;
201
+ NestReportedIssue nestReportedIssue = 7;
202
+ bool isWithinServiceArea = 8;
203
+ ProInformation proInfo = 9;
204
+ HvacVendorPartnerInfoTrait.HvacVendorPartner hvacVendorPartner = 10;
205
+ }
206
+
207
+ message ProInformation {
208
+ string proId = 1;
209
+ string businessName = 2;
210
+ nest.trait.located.GeoCommon.PostalAddress address = 3;
211
+ string phoneNumber = 4;
212
+ string email = 5;
213
+ }
214
+
215
+ message NestReportedIssue {
216
+ string issueId = 1;
217
+ string surveyUrlGaia = 2;
218
+ string surveyUrlNongaia = 3;
219
+ string visualAssetUrl = 5;
220
+ HvacSystem hvacSystem = 6;
221
+ Degradation degradation = 7;
222
+ Intermittent intermittent = 8;
223
+ Severe severe = 9;
224
+ TemperatureAlert temperatureAlert = 10;
225
+ HumidityAlert humidityAlert = 11;
226
+ FurnaceHeadsUp furnaceHeadsUp = 12;
227
+ google.protobuf.StringValue bookAProUrl = 13;
228
+ HardwareResistorFailure hardwareResistorFailure = 14;
229
+ string deviceSerialNumber = 15;
230
+ HardwareWiringError hardwareWiringError = 16;
231
+ weave.common.ResourceId phoenixDeviceId = 17;
232
+ EquipmentSettingsTrait.DeliveryType hvacDeliveryType = 18;
233
+ HeatLinkPowerSupplyFailure heatLinkPowerSupplyFailure = 19;
234
+ HeatLinkPowerSupplyReplacement heatLinkPowerSupplyReplacement = 20;
235
+ }
236
+
237
+ message Intermittent {
238
+ google.protobuf.Duration duration = 1;
239
+ uint32 misbehavingCycles = 2;
240
+ google.protobuf.Timestamp issueStartTimestamp = 3;
241
+ }
242
+
243
+ message Severe {
244
+ google.protobuf.Timestamp issueStartTimestamp = 1;
245
+ google.protobuf.Timestamp issueEndTimestamp = 2;
246
+ float actualTemperatureChange = 3;
247
+ float expectedTemperatureChange = 4;
248
+ }
249
+
250
+ message Degradation {
251
+ google.protobuf.Timestamp issueStartTimestamp = 1;
252
+ google.protobuf.Duration duration = 2;
253
+ HistoricalDegradationDetails historical = 3;
254
+ CohortAnalysisDetails cohort = 4;
255
+ ExcessiveAuxHeatDetails auxHeat = 5;
256
+ }
257
+
258
+ message HistoricalDegradationDetails {
259
+ google.protobuf.Duration expectedRuntime = 1;
260
+ google.protobuf.Duration observedRuntime = 2;
261
+ float extraRuntimePercentage = 3;
262
+ }
263
+
264
+ message CohortAnalysisDetails {
265
+ google.protobuf.Duration observedRuntime = 1;
266
+ }
267
+
268
+ message ExcessiveAuxHeatDetails {
269
+ google.protobuf.Duration overallHeatRuntime = 1;
270
+ google.protobuf.Duration compressorHeatRuntime = 2;
271
+ google.protobuf.Duration auxHeatRuntime = 3;
272
+ HeatPumpControlSettingsTrait.HeatPumpSavingsMode heatPumpSettings = 4;
273
+ google.protobuf.Duration expectedAuxHeatRuntime = 5;
274
+ float potentialEnergySavingsPercentage = 6;
275
+ }
276
+
277
+ message TemperatureAlert {
278
+ google.protobuf.Timestamp issueStartTimestamp = 1;
279
+ google.protobuf.Duration duration = 2;
280
+ RangeInclusion inclusion = 3;
281
+ float minObservedTemperature = 4;
282
+ float maxObservedTemperature = 5;
283
+ float avgObservedTemperature = 6;
284
+ float upperTemperatureBound = 7;
285
+ float lowerTemperatureBound = 8;
286
+ }
287
+
288
+ message HumidityAlert {
289
+ google.protobuf.Timestamp issueStartTimestamp = 1;
290
+ google.protobuf.Duration duration = 2;
291
+ RangeInclusion inclusion = 3;
292
+ float minObservedHumidity = 4;
293
+ float maxObservedHumidity = 5;
294
+ float avgObservedHumidity = 6;
295
+ float upperHumidityBound = 7;
296
+ float lowerHumidityBound = 8;
297
+ }
298
+
299
+ message FurnaceHeadsUp {
300
+ google.protobuf.Timestamp detectedTimestamp = 1;
301
+ }
302
+
303
+ message HardwareResistorFailure {
304
+ google.protobuf.Timestamp detectedTimestamp = 1;
305
+ FailureCause failureCause = 2;
306
+ }
307
+
308
+ message HardwareWiringError {
309
+ google.protobuf.Timestamp detectedTimestamp = 1;
310
+ WiringError wiringError = 2;
311
+ }
312
+
313
+ message HeatLinkPowerSupplyFailure {
314
+ google.protobuf.Timestamp heatLinkLastSeenConnected = 1;
315
+ google.protobuf.Timestamp headUnitLastSeenConnected = 2;
316
+ }
317
+
318
+ message HeatLinkPowerSupplyReplacement {
319
+ string caseNumber = 1;
320
+ }
25
321
  }
26
322
 
27
323
  message EquipmentSettingsTrait {
@@ -59,6 +355,13 @@ message EquipmentSettingsTrait {
59
355
  ObPersistence obPersistence = 32;
60
356
  BoilerType boilerType = 33;
61
357
  HvacControl.Temperature boilerSupplyTemperature = 34;
358
+ bool activateFanIfHeatSourceIsGas = 35;
359
+ VentilatorType ventilatorType = 36;
360
+ bool ventilatorRequiresFanActivation = 37;
361
+ AqWireType aqWireType = 38;
362
+ google.protobuf.Duration compressorMinCycleTime = 39;
363
+ google.protobuf.Duration compressorLockout = 41;
364
+ google.protobuf.Duration heatMinCycleTime = 42;
62
365
 
63
366
  enum DeliveryType {
64
367
  DELIVERY_TYPE_UNSPECIFIED = 0;
@@ -100,6 +403,13 @@ message EquipmentSettingsTrait {
100
403
  Y2_TYPE_G2 = 4;
101
404
  }
102
405
 
406
+ enum AqWireType {
407
+ AQ_WIRE_TYPE_UNSPECIFIED = 0;
408
+ AQ_WIRE_TYPE_VENTILATOR = 1;
409
+ AQ_WIRE_TYPE_HUMIDIFIER = 2;
410
+ AQ_WIRE_TYPE_DEHUMIDIFIER = 3;
411
+ }
412
+
103
413
  enum DehumidifierOrientation {
104
414
  DEHUMIDIFIER_ORIENTATION_UNSPECIFIED = 0;
105
415
  DEHUMIDIFIER_ORIENTATION_NORMAL = 1;
@@ -164,108 +474,133 @@ message EquipmentSettingsTrait {
164
474
  BOILER_TYPE_DISTRICT = 5;
165
475
  BOILER_TYPE_ELECTRIC = 6;
166
476
  }
167
- }
168
477
 
169
- message RemoteComfortSensingSettingsTrait {
170
- RcsControlMode rcsControlMode = 1;
171
- RcsSourceSelection activeRcsSelection = 2;
172
- RcsSchedule rcsControlSchedule = 3;
173
- repeated RcsSensorId associatedRcsSensors = 4;
174
- MultiSensorSettings multiSensorSettings = 5;
478
+ enum VentilatorType {
479
+ VENTILATOR_TYPE_UNSPECIFIED = 0;
480
+ VENTILATOR_TYPE_HRV = 1;
481
+ VENTILATOR_TYPE_ERV = 2;
482
+ VENTILATOR_TYPE_SUPPLY_ONLY = 3;
483
+ VENTILATOR_TYPE_EXHAUST_ONLY = 4;
484
+ }
485
+ }
175
486
 
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;
487
+ message EnergyCaption {
488
+ enum InteractionBehavior {
489
+ INTERACTION_BEHAVIOR_UNSPECIFIED = 0;
490
+ INTERACTION_BEHAVIOR_CONTINUE = 1;
491
+ INTERACTION_BEHAVIOR_SILENTLY_EXIT = 2;
492
+ INTERACTION_BEHAVIOR_CONFIRM_EXIT = 3;
181
493
  }
182
494
 
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;
495
+ enum AppUserIntent {
496
+ APP_USER_INTENT_UNSPECIFIED = 0;
497
+ APP_USER_INTENT_INEFFICIENT_TEMPERATURE_CHANGE = 1;
498
+ APP_USER_INTENT_MODE_CHANGE = 2;
499
+ APP_USER_INTENT_USER_HOLD = 3;
188
500
  }
189
501
 
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;
502
+ enum AppSpeedBumpButtonAction {
503
+ APP_SPEED_BUMP_BUTTON_ACTION_UNSPECIFIED = 0;
504
+ APP_SPEED_BUMP_BUTTON_ACTION_DISMISS = 1;
505
+ APP_SPEED_BUMP_BUTTON_ACTION_OPT_OUT_ENERGY_PROGRAM = 2;
197
506
  }
198
507
 
199
- message RcsSensorId {
200
- weave.common.ResourceId deviceId = 1;
201
- uint32 vendorId = 2;
202
- uint32 productId = 3;
508
+ enum ScheduleMessageType {
509
+ SCHEDULE_MESSAGE_TYPE_UNSPECIFIED = 0;
510
+ SCHEDULE_MESSAGE_TYPE_ATOM_UPDATE = 1;
511
+ SCHEDULE_MESSAGE_TYPE_SCHEDULE_ADD = 2;
512
+ SCHEDULE_MESSAGE_TYPE_SCHEDULE_SHIFT = 3;
203
513
  }
204
514
 
205
- message MultiSensorSettings {
206
- bool multiSensorEnabled = 1;
207
- repeated weave.common.ResourceId multiSensorGroup = 2;
515
+ enum EnergyProgramId {
516
+ ENERGY_PROGRAM_ID_UNSPECIFIED = 0;
517
+ ENERGY_PROGRAM_ID_RUSH_HOUR_REWARDS = 1;
518
+ ENERGY_PROGRAM_ID_TIME_OF_USE = 2;
519
+ ENERGY_PROGRAM_ID_ENERGY_MANAGEMENT_FOR_EMISSIONS = 3;
208
520
  }
209
521
 
210
- message RcsSourceSelection {
211
- RcsSourceType rcsSourceType = 1;
212
- weave.common.ResourceId activeRcsSensor = 2;
522
+ enum EventPhase {
523
+ EVENT_PHASE_UNSPECIFIED = 0;
524
+ EVENT_PHASE_DEFAULT = 1;
525
+ EVENT_PHASE_PRECONDITION = 2;
213
526
  }
214
527
 
215
- message RcsInterval {
216
- RcsSourceSelection rcsSelection = 1;
217
- uint32 startSecondsInDay = 2;
218
- uint32 endSecondsInDay = 3;
528
+ message UxBehaviorConfiguration {
529
+ string speedbumpText = 1;
530
+ string speedbumpShortlinkCode = 2;
531
+ InteractionBehavior onEfficientTemperatureChange = 3;
532
+ InteractionBehavior onInefficientTemperatureChange = 4;
533
+ InteractionBehavior onModeChange = 5;
534
+ InteractionBehavior onAtomSelection = 6;
535
+ InteractionBehavior onUserHold = 7;
536
+ InteractionBehavior onEmergencyHeat = 8;
219
537
  }
220
538
 
221
- message RcsSchedule {
222
- map<uint32, RcsInterval> intervals = 1;
539
+ message DeviceCaption {
540
+ string firstCaption = 1;
541
+ string secondCaption = 2;
542
+ string menuExplanation = 3;
223
543
  }
224
544
 
225
- message AssociateRcsSensorRequest {
226
- weave.common.ResourceId resourceId = 1;
545
+ message AppCaption {
546
+ nest.trait.ui.SoyMessage.SoyTemplateMessage caption = 6;
547
+ nest.trait.ui.SoyMessage.SoyTemplateMessage bannerText = 7;
548
+ repeated AppSpeedBump speedBumps = 8;
227
549
  }
228
550
 
229
- message AssociateRcsSensorResponse {
230
- StatusCode status = 1;
551
+ message AppSpeedBump {
552
+ repeated AppUserIntent userIntents = 1;
553
+ string iconUrl = 2;
554
+ nest.trait.ui.SoyMessage.SoyTemplateMessage title = 3;
555
+ nest.trait.ui.SoyMessage.SoyTemplateMessage description = 4;
556
+ string learnMoreUrl = 5;
557
+ string helpCenterContext = 6;
558
+ AppSpeedBumpButton primaryButton = 7;
559
+ AppSpeedBumpButton secondaryButton = 8;
231
560
  }
232
561
 
233
- message DissociateRcsSensorRequest {
234
- weave.common.ResourceId resourceId = 1;
562
+ message AppSpeedBumpButton {
563
+ nest.trait.ui.SoyMessage.SoyTemplateMessage text = 1;
564
+ AppSpeedBumpButtonAction action = 2;
235
565
  }
236
566
 
237
- message DissociateRcsSensorResponse {
238
- StatusCode status = 1;
567
+ message UxConfiguration {
568
+ HvacMessageCenterConfig.Icon icon = 1;
569
+ DeviceCaption deviceCaption = 2;
570
+ AppCaption appCaption = 3;
571
+ UxBehaviorConfiguration behavior = 4;
239
572
  }
240
- }
241
573
 
242
- message SetPointScheduleSettingsTrait {
243
- string name = 1;
244
- SetPointScheduleType type = 2;
245
- map<uint32, TemperatureSetPoint> setpoints = 3;
574
+ message ScheduleMessage {
575
+ uint32 id = 1;
576
+ repeated weave.common.DayOfWeek daysOfWeek = 2;
577
+ weave.common.TimeOfDay startTimeOfDay = 3;
578
+ google.protobuf.Duration duration = 4;
579
+ uint32 atomId = 5;
580
+ UxConfiguration uxConfig = 6;
581
+ google.protobuf.Timestamp endOfLife = 7;
582
+ ScheduleMessageType type = 8;
583
+ }
246
584
 
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;
585
+ message PhaseConfiguration {
586
+ uint32 id = 1;
587
+ EventPhase designation = 2;
588
+ UxConfiguration uxConfig = 3;
252
589
  }
253
590
 
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;
591
+ message EnergyProgram {
592
+ uint32 id = 1;
593
+ EnergyProgramId canonicalProgram = 2;
594
+ map<uint32, PhaseConfiguration> phases = 3;
259
595
  }
260
596
 
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;
597
+ message EventMetadata {
598
+ uint32 programId = 1;
599
+ uint32 phaseId = 2;
600
+ string eventId = 3;
601
+ bool isCritical = 4;
602
+ google.protobuf.Timestamp optOutTimeout = 5;
603
+ DeviceCaption deviceCaptionOverride = 6;
269
604
  }
270
605
  }
271
606
 
@@ -275,6 +610,7 @@ message RemoteComfortSensingStateTrait {
275
610
  map<uint32, RcsSensorInsight> rcsSensorInsights = 3;
276
611
  repeated RcsThermostatAlert rcsThermostatAlerts = 4;
277
612
  map<uint32, RcsSensorStatus> rcsSensorStatuses = 5;
613
+ RcsFailsafeState rcsFailsafeState = 6;
278
614
 
279
615
  enum RcsSensorInsightTemperature {
280
616
  RCS_SENSOR_INSIGHT_TEMPERATURE_UNSPECIFIED = 0;
@@ -294,6 +630,7 @@ message RemoteComfortSensingStateTrait {
294
630
  RCS_SENSOR_INSIGHT_CONTROLLABILITY_UNSPECIFIED = 0;
295
631
  RCS_SENSOR_INSIGHT_CONTROLLABILITY_TYPICAL = 1;
296
632
  RCS_SENSOR_INSIGHT_CONTROLLABILITY_UNRESPONSIVE_TO_HVAC = 2;
633
+ RCS_SENSOR_INSIGHT_CONTROLLABILITY_INTERMITTENTLY_STALE = 3;
297
634
  }
298
635
 
299
636
  enum SensorDataRecency {
@@ -301,11 +638,23 @@ message RemoteComfortSensingStateTrait {
301
638
  SENSOR_DATA_RECENCY_OK = 1;
302
639
  SENSOR_DATA_RECENCY_STALE = 2;
303
640
  SENSOR_DATA_RECENCY_EXTREMELY_STALE = 3;
641
+ SENSOR_DATA_RECENCY_FAIRLY_STALE = 4;
642
+ SENSOR_DATA_RECENCY_WAITING_FOR_INITIAL_DATA = 5;
304
643
  }
305
644
 
306
645
  enum RcsThermostatAlert {
307
646
  RCS_THERMOSTAT_ALERT_UNSPECIFIED = 0;
308
647
  RCS_THERMOSTAT_ALERT_TEMPERATURE_OVERSHOOT = 1;
648
+ RCS_THERMOSTAT_ALERT_EXCESSIVE_RUNTIME_HEAT = 2;
649
+ RCS_THERMOSTAT_ALERT_EXCESSIVE_RUNTIME_COOL = 4;
650
+ RCS_THERMOSTAT_ALERT_CONNECTIVITY_FAILSAFE = 8;
651
+ }
652
+
653
+ enum RcsSingleSensorFailsafeStatus {
654
+ RCS_SINGLE_SENSOR_FAILSAFE_STATUS_UNSPECIFIED = 0;
655
+ RCS_SINGLE_SENSOR_FAILSAFE_STATUS_OK = 1;
656
+ RCS_SINGLE_SENSOR_FAILSAFE_STATUS_DATA_STALE = 2;
657
+ RCS_SINGLE_SENSOR_FAILSAFE_STATUS_WAITING_FOR_INITIAL_DATA = 3;
309
658
  }
310
659
 
311
660
  message RcsSensorInsight {
@@ -319,6 +668,11 @@ message RemoteComfortSensingStateTrait {
319
668
  SensorDataRecency dataRecency = 2;
320
669
  }
321
670
 
671
+ message RcsFailsafeState {
672
+ RcsSingleSensorFailsafeStatus singleSensorStatus = 1;
673
+ RemoteComfortSensingSettingsTrait.RcsSourceSelection effectiveActiveRcsSelection = 2;
674
+ }
675
+
322
676
  message RcsThermostatAlertEvent {
323
677
  repeated RcsThermostatAlert rcsThermostatAlerts = 1;
324
678
  }
@@ -334,6 +688,46 @@ message RemoteComfortSensingStateTrait {
334
688
  bool priorIsOvershoot = 2;
335
689
  bool currentIsOvershoot = 3;
336
690
  }
691
+
692
+ message ExcessiveRuntimeAlertEvent {
693
+ repeated weave.common.ResourceId sensorIds = 1;
694
+ RcsThermostatAlert alert = 2;
695
+ }
696
+
697
+ message ConnectivityFailsafeAlertEvent {
698
+ repeated weave.common.ResourceId sensorIds = 1;
699
+ RcsThermostatAlert alert = 2;
700
+ }
701
+ }
702
+
703
+ message SetPointScheduleSettingsTrait {
704
+ string name = 1;
705
+ SetPointScheduleType type = 2;
706
+ map<uint32, TemperatureSetPoint> setpoints = 3;
707
+
708
+ enum SetPointScheduleType {
709
+ SET_POINT_SCHEDULE_TYPE_UNSPECIFIED = 0;
710
+ SET_POINT_SCHEDULE_TYPE_HEAT = 1;
711
+ SET_POINT_SCHEDULE_TYPE_COOL = 2;
712
+ SET_POINT_SCHEDULE_TYPE_RANGE = 3;
713
+ }
714
+
715
+ enum SetPointType {
716
+ SET_POINT_TYPE_UNSPECIFIED = 0;
717
+ SET_POINT_TYPE_HEAT = 1;
718
+ SET_POINT_TYPE_COOL = 2;
719
+ SET_POINT_TYPE_RANGE = 3;
720
+ }
721
+
722
+ message TemperatureSetPoint {
723
+ SetPointType setpointType = 1;
724
+ weave.common.DayOfWeek dayOfWeek = 2;
725
+ uint32 secondsInDay = 3;
726
+ HvacControl.Temperature heatingTarget = 4;
727
+ HvacControl.Temperature coolingTarget = 5;
728
+ HvacActor.HvacActorStruct currentActorInfo = 6;
729
+ HvacActor.HvacActorStruct originalActorInfo = 7;
730
+ }
337
731
  }
338
732
 
339
733
  message SeasonalSavingsSettingsTrait {
@@ -347,6 +741,14 @@ message SeasonalSavingsSettingsTrait {
347
741
  map<uint32, SeasonalSavingsStage> stages = 8;
348
742
  PartnerInformation.PartnerName partnerName = 9;
349
743
  SeasonalSavingsSeasonType season = 10;
744
+ string campaignId = 11;
745
+ string debugName = 12;
746
+ string rtsState = 13;
747
+ int64 rtsActualResultsStageIndex = 14;
748
+ string rtsRequestedAction = 15;
749
+ string rtsStopReason = 16;
750
+ string rtsVersion = 17;
751
+ string rtsType = 18;
350
752
 
351
753
  enum SeasonalSavingsAnchorType {
352
754
  SEASONAL_SAVINGS_ANCHOR_TYPE_UNSPECIFIED = 0;
@@ -408,6 +810,24 @@ message SeasonalSavingsSettingsTrait {
408
810
  bool forceVisibleChangeOnFirstday = 18;
409
811
  repeated SeasonalSavingsSetpointDirection startSetpointDirectionMask = 19;
410
812
  repeated SeasonalSavingsSetpointDirection endSetpointDirectionMask = 20;
813
+ SeasonalSavingsQualificationParameters qualParameters = 21;
814
+ }
815
+
816
+ message SeasonalSavingsQualificationParameters {
817
+ int32 minimumSavings = 1;
818
+ int32 minimumDailySetpoints = 2;
819
+ int64 dailyCoolingSecondsMaximum = 3;
820
+ bool requireAutoawayEta = 4;
821
+ int64 nextdayForecastTemperatureMaximum = 5;
822
+ int64 nextdayForecastTemperatureMinimum = 6;
823
+ int32 maximumSavings = 7;
824
+ int64 dailyHeatingSecondsMaximum = 8;
825
+ int64 dailyHeatingSecondsMinimum = 9;
826
+ string minimumLearningState = 10;
827
+ bool requireUsageWithinLimits = 11;
828
+ int32 minimumWeeklySetpoints = 12;
829
+ bool requireForecast = 13;
830
+ int64 dailyCoolingSecondsMinimum = 14;
411
831
  }
412
832
 
413
833
  message SeasonalSavingsStage {
@@ -419,8 +839,98 @@ message SeasonalSavingsSettingsTrait {
419
839
  }
420
840
  }
421
841
 
422
- message HvacActor {
423
- enum HvacActorMethod {
842
+ message DemandResponseTrait {
843
+ map<uint32, DemandResponseEventStateItem> stateItems = 1;
844
+
845
+ enum DemandResponseEventType {
846
+ DEMAND_RESPONSE_EVENT_TYPE_UNSPECIFIED = 0;
847
+ DEMAND_RESPONSE_EVENT_TYPE_STANDARD = 1;
848
+ DEMAND_RESPONSE_EVENT_TYPE_CRITICAL = 2;
849
+ }
850
+
851
+ enum DemandResponseState {
852
+ DEMAND_RESPONSE_STATE_UNSPECIFIED = 0;
853
+ DEMAND_RESPONSE_STATE_INITIAL = 1;
854
+ DEMAND_RESPONSE_STATE_EVENT_RECEIVED = 2;
855
+ DEMAND_RESPONSE_STATE_PRESENTING_EVENT = 3;
856
+ DEMAND_RESPONSE_STATE_PRECONDITIONING = 4;
857
+ DEMAND_RESPONSE_STATE_CRUISE_CONTROL = 5;
858
+ DEMAND_RESPONSE_STATE_MANUAL_MODE = 6;
859
+ DEMAND_RESPONSE_STATE_MANUAL_EFFICIENT = 7;
860
+ DEMAND_RESPONSE_STATE_FINISHED = 8;
861
+ }
862
+
863
+ enum DemandResponseStopReason {
864
+ DEMAND_RESPONSE_STOP_REASON_UNSPECIFIED = 0;
865
+ DEMAND_RESPONSE_STOP_REASON_TEMPERATURE_CHANGE = 1;
866
+ DEMAND_RESPONSE_STOP_REASON_MODE_CHANGE = 2;
867
+ DEMAND_RESPONSE_STOP_REASON_RECENT_EVENT = 3;
868
+ DEMAND_RESPONSE_STOP_REASON_COMPLETED = 4;
869
+ DEMAND_RESPONSE_STOP_REASON_BAD_PARAMETERS = 5;
870
+ DEMAND_RESPONSE_STOP_REASON_UNKNOWN = 6;
871
+ DEMAND_RESPONSE_STOP_REASON_KILLED_BEFORE_EVENT = 7;
872
+ DEMAND_RESPONSE_STOP_REASON_KILLED_DURING_EVENT = 8;
873
+ DEMAND_RESPONSE_STOP_REASON_RECEIVED_NEW_DR_BEFORE_EVENT = 9;
874
+ DEMAND_RESPONSE_STOP_REASON_RECEIVED_NEW_DR_DURING_EVENT = 10;
875
+ DEMAND_RESPONSE_STOP_REASON_RECEIVED_LATE = 11;
876
+ DEMAND_RESPONSE_STOP_REASON_WRONG_SCHEDULE_MODE_DURING_QUALIFICATION = 12;
877
+ DEMAND_RESPONSE_STOP_REASON_SYSTEM_OFF_DURING_QUALIFICATION = 13;
878
+ DEMAND_RESPONSE_STOP_REASON_WRONG_SCHEDULE_MODE_AT_EVENT_START = 14;
879
+ DEMAND_RESPONSE_STOP_REASON_SYSTEM_OFF_AT_EVENT_START = 15;
880
+ DEMAND_RESPONSE_STOP_REASON_SYSTEM_TURNED_OFF_DURING_EVENT = 16;
881
+ DEMAND_RESPONSE_STOP_REASON_OPT_OUT = 17;
882
+ }
883
+
884
+ enum DemandResponseProgramType {
885
+ DEMAND_RESPONSE_PROGRAM_TYPE_UNSPECIFIED = 0;
886
+ DEMAND_RESPONSE_PROGRAM_TYPE_SUMMER_RUSH_HOUR_REWARDS = 1;
887
+ DEMAND_RESPONSE_PROGRAM_TYPE_WINTER_RUSH_HOUR_REWARDS = 2;
888
+ }
889
+
890
+ message DemandResponseEventStateItem {
891
+ string eventGuid = 1;
892
+ DemandResponseState state = 2;
893
+ HvacControl.Temperature cruiseControlTemperature = 3;
894
+ bool optedOut = 4;
895
+ bool inPeakPeriod = 5;
896
+ DemandResponseStopReason stopReason = 6;
897
+ DemandResponseConfigurationTrait.DemandResponseRequiredScheduleMode requiredScheduleMode = 7;
898
+ PartnerInformation.PartnerName partnerName = 8;
899
+ }
900
+
901
+ message DemandResponseStateChangedEvent {
902
+ string eventGuid = 1;
903
+ DemandResponseEventType eventType = 2;
904
+ DemandResponseState previousState = 3;
905
+ DemandResponseState currentState = 4;
906
+ google.protobuf.Timestamp qualificationStartTimeUtc = 5;
907
+ uint32 lengthEventSeconds = 6;
908
+ google.protobuf.Timestamp startTimeUtc = 7;
909
+ google.protobuf.Timestamp peakPeriodStartTimeUtc = 8;
910
+ google.protobuf.Timestamp stopTimeUtc = 9;
911
+ PartnerInformation.PartnerName partnerName = 10;
912
+ }
913
+
914
+ message DemandResponsePreStartNotificationEvent {
915
+ string eventId = 1;
916
+ string partnerId = 2;
917
+ PartnerInformation.PartnerName partnerName = 3;
918
+ DemandResponseEventType eventType = 4;
919
+ DemandResponseProgramType programType = 5;
920
+ }
921
+
922
+ message DemandResponseFinishedEvent {
923
+ string eventId = 1;
924
+ google.protobuf.Timestamp preconditioningPeriodStartTime = 2;
925
+ google.protobuf.Timestamp preconditioningPeriodEndTime = 3;
926
+ google.protobuf.Timestamp peakPeriodStartTime = 4;
927
+ google.protobuf.Timestamp peakPeriodEndTime = 5;
928
+ DemandResponseStopReason stopReason = 6;
929
+ }
930
+ }
931
+
932
+ message HvacActor {
933
+ enum HvacActorMethod {
424
934
  HVAC_ACTOR_METHOD_UNSPECIFIED = 0;
425
935
  HVAC_ACTOR_METHOD_NOBODY = 1;
426
936
  HVAC_ACTOR_METHOD_SCHEDULE_LEARNING = 2;
@@ -441,6 +951,9 @@ message HvacActor {
441
951
  HVAC_ACTOR_METHOD_GOOGLE_ASSISTANT = 17;
442
952
  HVAC_ACTOR_METHOD_SMART_DEVICE_MANAGEMENT = 18;
443
953
  HVAC_ACTOR_METHOD_GOOGLE_ENERGY = 19;
954
+ HVAC_ACTOR_METHOD_MATTER = 20;
955
+ HVAC_ACTOR_METHOD_ENERGY_CAPTION = 21;
956
+ HVAC_ACTOR_METHOD_GOOGLE_ASSISTANT_SCHEDULED_ROUTINE = 22;
444
957
  }
445
958
 
446
959
  message HvacActorStruct {
@@ -451,6 +964,137 @@ message HvacActor {
451
964
  }
452
965
  }
453
966
 
967
+ message FanControlTrait {
968
+ FanSpeedSetting currentSpeed = 1;
969
+ bool userRequestedFanRunning = 2;
970
+ VentilationState ventilationState = 3;
971
+ VentilationAlert ventilationAlert = 4;
972
+ FanSpeedState fanSpeedState = 5;
973
+
974
+ enum FanSpeedSetting {
975
+ FAN_SPEED_SETTING_UNSPECIFIED = 0;
976
+ FAN_SPEED_SETTING_STAGE1 = 1;
977
+ FAN_SPEED_SETTING_STAGE2 = 2;
978
+ FAN_SPEED_SETTING_STAGE3 = 3;
979
+ FAN_SPEED_SETTING_OFF = 4;
980
+ FAN_SPEED_SETTING_AUTO = 5;
981
+ }
982
+
983
+ enum FanSpeedState {
984
+ FAN_SPEED_STATE_UNSPECIFIED = 0;
985
+ FAN_SPEED_STATE_OFF = 1;
986
+ FAN_SPEED_STATE_TIMER = 2;
987
+ FAN_SPEED_STATE_SCHEDULE = 3;
988
+ FAN_SPEED_STATE_EQUIPMENT_ACTIVATION = 4;
989
+ FAN_SPEED_STATE_VENTILATION_ACTIVATION = 5;
990
+ FAN_SPEED_STATE_SYSTEM_TEST = 6;
991
+ }
992
+
993
+ enum VentilationState {
994
+ VENTILATION_STATE_UNSPECIFIED = 0;
995
+ VENTILATION_STATE_OFF = 1;
996
+ VENTILATION_STATE_TIMER = 2;
997
+ VENTILATION_STATE_SCHEDULE = 3;
998
+ VENTILATION_STATE_INDOOR_AIR_QUALITY = 4;
999
+ VENTILATION_STATE_HEATING = 5;
1000
+ VENTILATION_STATE_COOLING = 6;
1001
+ VENTILATION_STATE_SYSTEM_TEST = 7;
1002
+ }
1003
+
1004
+ enum VentilationAlert {
1005
+ VENTILATION_ALERT_UNSPECIFIED = 0;
1006
+ VENTILATION_ALERT_OK = 1;
1007
+ VENTILATION_ALERT_OUTDOOR_AIR_QUALITY = 2;
1008
+ VENTILATION_ALERT_INDOOR_AIR_QUALITY = 3;
1009
+ }
1010
+
1011
+ message FanState {
1012
+ FanSpeedSetting speed = 1;
1013
+ bool userRequestedFanRunning = 2;
1014
+ FanSpeedState fanSpeedState = 3;
1015
+ }
1016
+
1017
+ message FanStateChangeEvent {
1018
+ FanState fanState = 1;
1019
+ FanState priorFanState = 2;
1020
+ }
1021
+
1022
+ message VentilationAlertChangeEvent {
1023
+ VentilationAlert alert = 1;
1024
+ VentilationAlert priorAlert = 2;
1025
+ }
1026
+ }
1027
+
1028
+ message DisplaySettingsTrait {
1029
+ FarsightDisplay farsightDisplay = 1;
1030
+ TemperatureScale temperatureScale = 2;
1031
+ FarsightDisplayAnalogClockSettings analogClockSettings = 3;
1032
+ FarsightDisplayDigitalClockSettings digitalClockSettings = 4;
1033
+ FarsightDisplayCustomPanelSettings customPanelSettings = 5;
1034
+ bool wakeOnRemoteTempChange = 6;
1035
+ bool farsightNearOnly = 7;
1036
+ bool farsightDismissOnVeryNear = 8;
1037
+ FarsightCustomDisplaySettings farsightAnalogClockSettings = 9;
1038
+ FarsightCustomDisplaySettings farsightDigitalClockSettings = 10;
1039
+ FarsightCustomDisplaySettings farsightWeatherSettings = 11;
1040
+ FarsightCustomDisplaySettings farsightTemperaturesSettings = 12;
1041
+
1042
+ enum FarsightDisplay {
1043
+ FARSIGHT_DISPLAY_UNSPECIFIED = 0;
1044
+ FARSIGHT_DISPLAY_TARGET_TEMP = 1;
1045
+ FARSIGHT_DISPLAY_CURRENT_TEMP = 2;
1046
+ FARSIGHT_DISPLAY_ANALOG_CLOCK = 3;
1047
+ FARSIGHT_DISPLAY_DIGITAL_CLOCK = 4;
1048
+ FARSIGHT_DISPLAY_WEATHER = 5;
1049
+ FARSIGHT_DISPLAY_NONE = 6;
1050
+ FARSIGHT_DISPLAY_CUSTOM_PANEL = 7;
1051
+ FARSIGHT_DISPLAY_TEMPERATURES = 8;
1052
+ }
1053
+
1054
+ enum TemperatureScale {
1055
+ TEMPERATURE_SCALE_UNSPECIFIED = 0;
1056
+ TEMPERATURE_SCALE_C = 1;
1057
+ TEMPERATURE_SCALE_F = 2;
1058
+ }
1059
+
1060
+ enum CustomDisplayElement {
1061
+ CUSTOM_DISPLAY_ELEMENT_UNSPECIFIED = 0;
1062
+ CUSTOM_DISPLAY_ELEMENT_NONE = 1;
1063
+ CUSTOM_DISPLAY_ELEMENT_TIME = 2;
1064
+ CUSTOM_DISPLAY_ELEMENT_DATE = 3;
1065
+ CUSTOM_DISPLAY_ELEMENT_TARGET_TEMP = 4;
1066
+ CUSTOM_DISPLAY_ELEMENT_INDOOR_TEMP = 5;
1067
+ CUSTOM_DISPLAY_ELEMENT_OUTDOOR_TEMP = 6;
1068
+ CUSTOM_DISPLAY_ELEMENT_OUTDOOR_AQI = 7;
1069
+ CUSTOM_DISPLAY_ELEMENT_INDOOR_HUMIDITY = 8;
1070
+ CUSTOM_DISPLAY_ELEMENT_INDOOR_AQ = 9;
1071
+ CUSTOM_DISPLAY_ELEMENT_LEAF_COUNT = 10;
1072
+ CUSTOM_DISPLAY_ELEMENT_OUTDOOR_HUMIDITY = 11;
1073
+ CUSTOM_DISPLAY_ELEMENT_OUTDOOR_FEELS_LIKE_TEMP = 12;
1074
+ }
1075
+
1076
+ message FarsightCustomDisplaySettings {
1077
+ CustomDisplayElement topElement = 1;
1078
+ CustomDisplayElement centerElement = 2;
1079
+ CustomDisplayElement bottomElement = 3;
1080
+ }
1081
+
1082
+ message FarsightDisplayAnalogClockSettings {
1083
+ CustomDisplayElement bottomElement = 1;
1084
+ }
1085
+
1086
+ message FarsightDisplayDigitalClockSettings {
1087
+ CustomDisplayElement topElement = 1;
1088
+ CustomDisplayElement bottomElement = 2;
1089
+ }
1090
+
1091
+ message FarsightDisplayCustomPanelSettings {
1092
+ CustomDisplayElement topElement = 1;
1093
+ CustomDisplayElement primaryElement = 2;
1094
+ CustomDisplayElement bottomElement = 3;
1095
+ }
1096
+ }
1097
+
454
1098
  message AssociatedHeatlinksTrait {
455
1099
  repeated AssociatedHeatlink heatlinks = 1;
456
1100
 
@@ -487,8 +1131,8 @@ message AssociatedHeatlinksTrait {
487
1131
  }
488
1132
  }
489
1133
 
490
- message DemandResponseTrait {
491
- map<uint32, DemandResponseEventStateItem> stateItems = 1;
1134
+ message DemandResponseConfigurationTrait {
1135
+ map<uint32, DemandResponseEventConfigurationItem> configurationItems = 1;
492
1136
 
493
1137
  enum DemandResponseEventType {
494
1138
  DEMAND_RESPONSE_EVENT_TYPE_UNSPECIFIED = 0;
@@ -496,60 +1140,74 @@ message DemandResponseTrait {
496
1140
  DEMAND_RESPONSE_EVENT_TYPE_CRITICAL = 2;
497
1141
  }
498
1142
 
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;
1143
+ enum DemandResponseRequiredScheduleMode {
1144
+ DEMAND_RESPONSE_REQUIRED_SCHEDULE_MODE_UNSPECIFIED = 0;
1145
+ DEMAND_RESPONSE_REQUIRED_SCHEDULE_MODE_HEAT = 1;
1146
+ DEMAND_RESPONSE_REQUIRED_SCHEDULE_MODE_COOL = 2;
1147
+ DEMAND_RESPONSE_REQUIRED_SCHEDULE_MODE_RANGE = 3;
1148
+ DEMAND_RESPONSE_REQUIRED_SCHEDULE_MODE_NONE = 4;
509
1149
  }
510
1150
 
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;
1151
+ message DemandResponseOptimizationParameters {
1152
+ HvacControl.Temperature preparationMinimumDisplayedOffset = 1;
1153
+ HvacControl.Temperature preparationMaximumDisplayedOffset = 2;
1154
+ HvacControl.Temperature eventMinimumDisplayedOffset = 3;
1155
+ HvacControl.Temperature eventMaximumDisplayedOffset = 4;
1156
+ int32 cycleLengthStepsize = 5;
1157
+ HvacControl.Temperature weightTemperatureDeviation = 6;
1158
+ float weightOffpeakUsage = 7;
1159
+ float weightPeakUsage = 8;
1160
+ HvacControl.Temperature defaultPolicyPreparationOffset = 9;
1161
+ HvacControl.Temperature defaultPolicyEventOffset = 10;
1162
+ float defaultEventOffsetStartTimePercent = 11;
1163
+ int32 minimumTimeFromAdjustmentToEventEnd = 12;
1164
+ SetPointScheduleSettingsTrait.SetPointType setpointType = 13;
1165
+ bool shouldPredictAutoArrival = 14;
1166
+ HvacControl.Temperature baselinePreparationSafetyOffset = 15;
1167
+ HvacControl.Temperature baselineEventSafetyOffset = 16;
1168
+ int32 baselineSafetyCheckTimeout = 17;
1169
+ int32 minimumReoptimizationTimeout = 18;
1170
+ bool useUct = 19;
1171
+ bool obeyPreconditioningSetting = 20;
1172
+ int32 numUctRollouts = 21;
1173
+ bool useOneSidedTempError = 22;
1174
+ bool obeyHeatpumpLockouts = 23;
1175
+ bool obeyDualfuelBreakpoint = 24;
1176
+ float minimumLengthFactorBetweenEvents = 25;
1177
+ float peakRampInInitialOffset = 26;
1178
+ int32 peakRampInSeconds = 27;
1179
+ int32 peakRampOutSeconds = 28;
1180
+ int32 preparationRampInSeconds = 29;
529
1181
  }
530
1182
 
531
- message DemandResponseEventStateItem {
1183
+ message DemandResponseEventConfigurationItem {
532
1184
  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;
1185
+ string debugName = 2;
1186
+ DemandResponseEventType eventType = 3;
1187
+ google.protobuf.Timestamp qualificationStartTimeUtc = 4;
1188
+ google.protobuf.Timestamp qualificationStopTimeUtc = 5;
1189
+ google.protobuf.Timestamp peakPeriodStartTimeUtc = 6;
1190
+ google.protobuf.Timestamp startTimeUtc = 7;
1191
+ google.protobuf.Timestamp stopTimeUtc = 8;
1192
+ uint32 lengthPreparationSeconds = 9;
1193
+ uint32 lengthEventSeconds = 10;
1194
+ bool preparationSpeedbumpDisabled = 11;
1195
+ DemandResponseOptimizationParameters optimizationParameters = 12;
1196
+ PartnerInformation.PartnerName partnerName = 13;
1197
+ DemandResponseRequiredScheduleMode requiredScheduleMode = 14;
540
1198
  }
541
1199
 
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;
1200
+ message DemandResponseScheduledEvent {
1201
+ string eventId = 1;
1202
+ string partnerId = 2;
1203
+ string partnerName = 3;
1204
+ google.protobuf.Timestamp preconditioningStartTime = 4;
1205
+ google.protobuf.FloatValue preconditioningTemperatureOffsetCelsius = 5;
1206
+ google.protobuf.Timestamp peakStartTime = 6;
1207
+ google.protobuf.Timestamp peakEndTime = 7;
1208
+ float peakTemperatureOffsetCelsius = 8;
1209
+ DemandResponseEventType eventType = 9;
1210
+ DemandResponseTrait.DemandResponseProgramType programType = 10;
553
1211
  }
554
1212
  }
555
1213
 
@@ -593,6 +1251,65 @@ message EcoModeStateTrait {
593
1251
  }
594
1252
  }
595
1253
 
1254
+ message HvacMessageCenterConfig {
1255
+ enum Icon {
1256
+ ICON_UNSPECIFIED = 0;
1257
+ ICON_INFO = 1;
1258
+ ICON_WARNING = 2;
1259
+ ICON_EQUIPMENT = 3;
1260
+ ICON_ENERGY_PROGRAM = 4;
1261
+ ICON_LEAF = 5;
1262
+ ICON_ATOM_COMFORT = 6;
1263
+ ICON_ATOM_ECO = 7;
1264
+ ICON_ATOM_SLEEP = 8;
1265
+ ICON_ATOM_CUSTOM = 9;
1266
+ ICON_APOLLO_LEAF = 10;
1267
+ ICON_SCHEDULE_UPDATED = 11;
1268
+ }
1269
+
1270
+ enum ElementStyle {
1271
+ ELEMENT_STYLE_UNSPECIFIED = 0;
1272
+ ELEMENT_STYLE_HEADER = 1;
1273
+ ELEMENT_STYLE_BODY = 2;
1274
+ ELEMENT_STYLE_BODY_LARGE = 3;
1275
+ ELEMENT_STYLE_BUTTON = 4;
1276
+ ELEMENT_STYLE_PAGE_BREAK = 5;
1277
+ ELEMENT_STYLE_QR_CODE = 6;
1278
+ }
1279
+
1280
+ enum ElementColor {
1281
+ ELEMENT_COLOR_UNSPECIFIED = 0;
1282
+ ELEMENT_COLOR_WHITE = 1;
1283
+ ELEMENT_COLOR_RED = 2;
1284
+ ELEMENT_COLOR_BLUE = 3;
1285
+ ELEMENT_COLOR_YELLOW = 4;
1286
+ }
1287
+
1288
+ enum MessageType {
1289
+ MESSAGE_TYPE_UNSPECIFIED = 0;
1290
+ MESSAGE_TYPE_CLOUD_RHR_PRESENTING = 1;
1291
+ MESSAGE_TYPE_FURNACE_HEADSUP = 2;
1292
+ MESSAGE_TYPE_HARDWARE_RESISTOR_FAILURE = 3;
1293
+ MESSAGE_TYPE_HARDWARE_WIRING_ERROR = 4;
1294
+ MESSAGE_TYPE_CLOUD_SEASONAL_SAVINGS_EFFICIENT_COMFORT = 5;
1295
+ MESSAGE_TYPE_USAGE_DRIVEN_SAVINGS_SCHEDULE_IMPROVEMENT = 6;
1296
+ MESSAGE_TYPE_GAMMA_GROWTH_CAMPAIGN = 7;
1297
+ MESSAGE_TYPE_GREEN_ENERGY_WELCOME = 8;
1298
+ MESSAGE_TYPE_GREEN_ENERGY_LEAFS_EARNED_MILESTONE = 9;
1299
+ MESSAGE_TYPE_GREEN_ENERGY_MONTHLY_IMPACT_SUMMARY = 10;
1300
+ MESSAGE_TYPE_SEASONAL_SAVINGS_3 = 11;
1301
+ MESSAGE_TYPE_EARLY_LEARNING_SLEEP_SETBACK_REMINDER = 12;
1302
+ }
1303
+
1304
+ enum ValidMode {
1305
+ VALID_MODE_UNSPECIFIED = 0;
1306
+ VALID_MODE_SYSTEM_MODE_HEAT = 1;
1307
+ VALID_MODE_SYSTEM_MODE_COOL = 2;
1308
+ VALID_MODE_SYSTEM_MODE_RANGE = 3;
1309
+ VALID_MODE_SYSTEM_MODE_OFF = 4;
1310
+ }
1311
+ }
1312
+
596
1313
  message SeasonalSavingsTrait {
597
1314
  string eventGuid = 1;
598
1315
  SeasonalSavingsState state = 2;
@@ -652,100 +1369,38 @@ message HvacControlTrait {
652
1369
  HvacState hvacState = 1;
653
1370
  bool compressorLockoutEnabled = 2;
654
1371
  google.protobuf.Timestamp compressorLockoutTimeout = 3;
1372
+ bool minCycleLockoutEnabled = 4;
1373
+ google.protobuf.Timestamp minCycleLockoutTimeout = 5;
655
1374
 
656
1375
  enum HvacStateChangeReason {
657
1376
  HVAC_STATE_CHANGE_REASON_UNSPECIFIED = 0;
658
1377
  HVAC_STATE_CHANGE_REASON_UNKNOWN = 1;
659
1378
  HVAC_STATE_CHANGE_REASON_HVAC_WIRE_POWER_LOSS = 2;
1379
+ HVAC_STATE_CHANGE_REASON_SYSTEM_TEST = 3;
1380
+ HVAC_STATE_CHANGE_REASON_SWITCH_SHUT_OFF = 4;
660
1381
  }
661
1382
 
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;
1383
+ message HvacState {
1384
+ bool coolStage1Active = 1;
1385
+ bool coolStage2Active = 2;
1386
+ bool coolStage3Active = 3;
1387
+ bool heatStage1Active = 4;
1388
+ bool heatStage2Active = 5;
1389
+ bool heatStage3Active = 6;
1390
+ bool alternateHeatStage1Active = 7;
1391
+ bool alternateHeatStage2Active = 8;
1392
+ bool auxiliaryHeatActive = 9;
1393
+ bool emergencyHeatActive = 10;
1394
+ bool humidifierActive = 11;
1395
+ bool dehumidifierActive = 12;
1396
+ bool ventilatorActive = 13;
732
1397
  }
733
1398
 
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;
1399
+ message HvacStateChangeEvent {
1400
+ HvacState hvacState = 1;
1401
+ HvacState priorHvacState = 2;
1402
+ google.protobuf.Timestamp priorStateEffectiveTime = 3;
1403
+ HvacStateChangeReason reason = 4;
749
1404
  }
750
1405
  }
751
1406
 
@@ -772,6 +1427,8 @@ message WiringTrait {
772
1427
  WireLabel pinY2Description = 12;
773
1428
  string wiringError = 13;
774
1429
  google.protobuf.Timestamp wiringErrorTimestamp = 14;
1430
+ WireLabel pinAqplusDescription = 15;
1431
+ WireLabel pinAqminusDescription = 16;
775
1432
 
776
1433
  enum WireTerminal {
777
1434
  WIRE_TERMINAL_UNSPECIFIED = 0;
@@ -785,6 +1442,8 @@ message WiringTrait {
785
1442
  WIRE_TERMINAL_W2 = 128;
786
1443
  WIRE_TERMINAL_Y2 = 256;
787
1444
  WIRE_TERMINAL_STAR = 512;
1445
+ WIRE_TERMINAL_AQ_PLUS = 1024;
1446
+ WIRE_TERMINAL_AQ_MINUS = 2048;
788
1447
  }
789
1448
 
790
1449
  enum WireLabel {
@@ -812,6 +1471,7 @@ message WiringTrait {
812
1471
  WIRE_LABEL_FAN_2 = 21;
813
1472
  WIRE_LABEL_FAN_3 = 22;
814
1473
  WIRE_LABEL_THERMAL_SWITCH_INPUT = 23;
1474
+ WIRE_LABEL_VENTILATOR = 24;
815
1475
  }
816
1476
 
817
1477
  message WiringErrorEvent {
@@ -868,6 +1528,35 @@ message SafetyShutoffTrait {
868
1528
  }
869
1529
  }
870
1530
 
1531
+ message ScheduleHoldSettingsTrait {
1532
+ HoldSetpoint holdSetpoint = 1;
1533
+ HoldMetadata holdMetadata = 2;
1534
+ EnergyCaption.EventMetadata eventMetadata = 3;
1535
+
1536
+ enum HoldIntent {
1537
+ HOLD_INTENT_UNSPECIFIED = 0;
1538
+ HOLD_INTENT_DEFAULT = 1;
1539
+ HOLD_INTENT_PRECONDITION = 2;
1540
+ }
1541
+
1542
+ message HoldSetpoint {
1543
+ SetPointScheduleSettingsTrait.SetPointType setpointType = 1;
1544
+ HvacControl.Temperature heatTarget = 2;
1545
+ HvacControl.Temperature coolTarget = 3;
1546
+ HvacActor.HvacActorMethod initiatedBy = 4;
1547
+ HvacActor.HvacActorMethod lastUpdatedBy = 5;
1548
+ google.protobuf.Timestamp endTime = 6;
1549
+ uint32 atomId = 7;
1550
+ bool isIndefinite = 8;
1551
+ }
1552
+
1553
+ message HoldMetadata {
1554
+ bool isCritical = 1;
1555
+ HoldIntent intent = 2;
1556
+ google.protobuf.Duration lastUserHoldDuration = 3;
1557
+ }
1558
+ }
1559
+
871
1560
  message ScheduleHoldTrait {
872
1561
  HoldState state = 1;
873
1562
  HoldStateChangeReason reason = 2;
@@ -890,14 +1579,15 @@ message ScheduleHoldTrait {
890
1579
  HOLD_STATE_CHANGE_REASON_REJECTED_UNAVAILABLE = 7;
891
1580
  HOLD_STATE_CHANGE_REASON_REJECTED_WRONG_SCHEDULE_MODE = 8;
892
1581
  HOLD_STATE_CHANGE_REASON_REJECTED_INVALID_SETTINGS = 9;
1582
+ HOLD_STATE_CHANGE_REASON_REJECTED_LACK_PERMISSION = 10;
893
1583
  }
894
1584
 
895
1585
  message ScheduleHoldEvent {
896
1586
  HoldState state = 1;
897
1587
  HoldState prevState = 2;
898
1588
  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
1589
+ HvacActor.HvacActorMethod initiatedBy = 4;
1590
+ HvacActor.HvacActorMethod updatedBy = 5;
901
1591
  }
902
1592
  }
903
1593
 
@@ -974,43 +1664,68 @@ message DemandResponseActionTrait {
974
1664
  }
975
1665
  }
976
1666
 
977
- message DisplaySettingsTrait {
978
- FarsightDisplay farsightDisplay = 1;
979
- TemperatureScale temperatureScale = 2;
1667
+ message FanControlSettingsTrait {
1668
+ FanMode mode = 1;
1669
+ FanControlTrait.FanSpeedSetting hvacOverrideSpeed = 2;
1670
+ FanControlTrait.FanSpeedSetting scheduleSpeed = 3;
1671
+ uint32 scheduleDutyCycle = 4;
1672
+ uint32 scheduleStartTime = 5;
1673
+ uint32 scheduleEndTime = 6;
1674
+ FanControlTrait.FanSpeedSetting timerSpeed = 7;
1675
+ google.protobuf.Timestamp timerEnd = 8;
1676
+ google.protobuf.Duration timerDuration = 9;
1677
+ FanEquipment timerEquipment = 10;
1678
+ google.protobuf.Duration ventilationOnTimePerDay = 11;
1679
+ bool smartVentilationEnabled = 12;
1680
+ bool timerIsIndefinite = 13;
1681
+ bool ventilationEnabled = 14;
1682
+ bool ventilationForHeatingAndCoolingEnabled = 15;
980
1683
 
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;
1684
+ enum FanMode {
1685
+ FAN_MODE_UNSPECIFIED = 0;
1686
+ FAN_MODE_AUTO = 1;
1687
+ FAN_MODE_CONTINUOUS_ON = 2;
1688
+ FAN_MODE_DUTY_CYCLE = 3;
989
1689
  }
990
1690
 
991
- enum TemperatureScale {
992
- TEMPERATURE_SCALE_UNSPECIFIED = 0;
993
- TEMPERATURE_SCALE_C = 1;
994
- TEMPERATURE_SCALE_F = 2;
1691
+ enum FanEquipment {
1692
+ FAN_EQUIPMENT_UNSPECIFIED = 0;
1693
+ FAN_EQUIPMENT_FAN_ONLY = 1;
1694
+ FAN_EQUIPMENT_VENT_ONLY = 2;
1695
+ FAN_EQUIPMENT_FAN_AND_VENT = 3;
995
1696
  }
996
1697
  }
997
1698
 
998
- message FanControlTrait {
999
- FanSpeedSetting currentSpeed = 1;
1000
- bool userRequestedFanRunning = 2;
1699
+ message HeatPumpControlSettingsTrait {
1700
+ HvacControl.TemperatureThreshold heatPumpAuxThreshold = 1;
1701
+ HvacControl.TemperatureThreshold heatPumpCompThreshold = 2;
1702
+ HeatPumpSavingsMode heatPumpSavingsMode = 3;
1703
+ google.protobuf.FloatValue auxMinDelta = 4;
1704
+ google.protobuf.Duration auxMinDelay = 5;
1705
+ google.protobuf.Duration auxUpstageThreshold = 6;
1706
+ google.protobuf.Duration dualFuelChangeoverThreshold = 7;
1001
1707
 
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;
1708
+ enum HeatPumpSavingsMode {
1709
+ HEAT_PUMP_SAVINGS_MODE_UNSPECIFIED = 0;
1710
+ HEAT_PUMP_SAVINGS_MODE_MAX_SAVINGS = 1;
1711
+ HEAT_PUMP_SAVINGS_MODE_BALANCED = 2;
1712
+ HEAT_PUMP_SAVINGS_MODE_MAX_COMFORT = 3;
1713
+ HEAT_PUMP_SAVINGS_MODE_OFF = 4;
1714
+ }
1715
+ }
1716
+
1717
+ message HvacVendorPartnerInfoTrait {
1718
+ HvacVendorPartner hvacVendorPartner = 1;
1719
+
1720
+ enum HvacVendorPartner {
1721
+ HVAC_VENDOR_PARTNER_UNSPECIFIED = 0;
1722
+ HVAC_VENDOR_PARTNER_GOODMAN = 1;
1009
1723
  }
1010
1724
  }
1011
1725
 
1012
1726
  message NestProtectAlarmingTrait {
1013
1727
  map<uint32, NestProtectItem> nestProtect = 1;
1728
+ map<uint32, NestProtectItem> transientProtectItem = 2;
1014
1729
 
1015
1730
  enum AlarmingStatus {
1016
1731
  ALARMING_STATUS_UNSPECIFIED = 0;
@@ -1029,6 +1744,24 @@ message NestProtectAlarmingTrait {
1029
1744
  }
1030
1745
  }
1031
1746
 
1747
+ message PreconditioningTrait {
1748
+ bool preconditioningActive = 1;
1749
+ PreconditioningState state = 2;
1750
+
1751
+ enum PreconditioningState {
1752
+ PRECONDITIONING_STATE_UNSPECIFIED = 0;
1753
+ PRECONDITIONING_STATE_NONE = 1;
1754
+ PRECONDITIONING_STATE_HEAT = 2;
1755
+ PRECONDITIONING_STATE_COOL = 3;
1756
+ }
1757
+
1758
+ message PreconditioningChangeEvent {
1759
+ bool preconditioningActive = 1;
1760
+ PreconditioningState state = 2;
1761
+ PreconditioningState priorState = 3;
1762
+ }
1763
+ }
1764
+
1032
1765
  message ResetTrait {
1033
1766
  enum ResetScheduleTo {
1034
1767
  RESET_SCHEDULE_TO_UNSPECIFIED = 0;
@@ -1060,6 +1793,46 @@ message SafetyTemperatureTrait {
1060
1793
  }
1061
1794
  }
1062
1795
 
1796
+ message TargetTemperatureSettingsTrait {
1797
+ SetPointScheduleSettingsTrait.TemperatureSetPoint targetTemperature = 1;
1798
+ google.protobuf.BoolValue enabled = 2;
1799
+
1800
+ message SystemModeChangeEvent {
1801
+ bool systemEnabled = 1;
1802
+ HvacActor.HvacActorMethod method = 2;
1803
+ weave.common.ResourceId originator = 3;
1804
+ }
1805
+
1806
+ message SetPointChangeEvent {
1807
+ HvacControl.Temperature heatingTarget = 1;
1808
+ HvacControl.Temperature coolingTarget = 2;
1809
+ SetPointScheduleSettingsTrait.SetPointType setpointType = 3;
1810
+ HvacActor.HvacActorStruct actor = 5;
1811
+ HvacControl.TargetChangeReason changeReason = 6;
1812
+ }
1813
+ }
1814
+
1815
+ message AirwaveTrait {
1816
+ bool fanCoolingActive = 1;
1817
+ bool fanCoolingReadiness = 2;
1818
+
1819
+ message AirwaveChangeEvent {
1820
+ bool fanCoolingActive = 1;
1821
+ }
1822
+ }
1823
+
1824
+ message CoolToDryTrait {
1825
+ bool isActive = 1;
1826
+ CoolToDryState state = 2;
1827
+
1828
+ enum CoolToDryState {
1829
+ COOL_TO_DRY_STATE_UNSPECIFIED = 0;
1830
+ COOL_TO_DRY_STATE_OFF = 1;
1831
+ COOL_TO_DRY_STATE_ON_MOLD_PREVENTION = 2;
1832
+ COOL_TO_DRY_STATE_ON_AC_INTEGRATED = 3;
1833
+ }
1834
+ }
1835
+
1063
1836
  message EnterpriseProgramsEntitlementsTrait {
1064
1837
  repeated EnterpriseProgram supportedPrograms = 1;
1065
1838
 
@@ -1073,6 +1846,9 @@ message EnterpriseProgramsEntitlementsTrait {
1073
1846
 
1074
1847
  message FanControlCapabilitiesTrait {
1075
1848
  FanControlTrait.FanSpeedSetting maxAvailableSpeed = 1;
1849
+ bool supportsIndefiniteTimer = 2;
1850
+ bool supportsTimerInOffMode = 3;
1851
+ google.protobuf.Duration maxTimerDuration = 4;
1076
1852
 
1077
1853
  enum FanTotalStages {
1078
1854
  FAN_TOTAL_STAGES_UNSPECIFIED = 0;
@@ -1083,22 +1859,15 @@ message FanControlCapabilitiesTrait {
1083
1859
  }
1084
1860
  }
1085
1861
 
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;
1862
+ message FilterReminderSettingsTrait {
1863
+ google.protobuf.Timestamp filterChangedDate = 1;
1864
+ google.protobuf.Timestamp filterChangedSetDate = 2;
1865
+ bool filterReminderEnabled = 3;
1866
+ google.protobuf.Duration filterReplacementThreshold = 4;
1096
1867
 
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;
1868
+ message FilterChangedEvent {
1869
+ google.protobuf.Timestamp filterChangedDate = 1;
1870
+ google.protobuf.Timestamp filterChangedSetDate = 2;
1102
1871
  }
1103
1872
  }
1104
1873
 
@@ -1117,6 +1886,9 @@ message HeatLinkSettingsTrait {
1117
1886
 
1118
1887
  message HeatLinkTrait {
1119
1888
  HvacConnectionState connectionStatus = 1;
1889
+ google.protobuf.StringValue heatLinkModel = 2;
1890
+ google.protobuf.StringValue heatLinkSerialNumber = 3;
1891
+ google.protobuf.StringValue heatLinkSwVersion = 4;
1120
1892
 
1121
1893
  enum HvacConnectionState {
1122
1894
  HVAC_CONNECTION_STATE_UNSPECIFIED = 0;
@@ -1127,20 +1899,6 @@ message HeatLinkTrait {
1127
1899
  }
1128
1900
  }
1129
1901
 
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
1902
  message HotWaterSettingsTrait {
1145
1903
  bool structureModeFollowEnabled = 1;
1146
1904
  google.protobuf.Timestamp boostTimerEnd = 2;
@@ -1154,16 +1912,23 @@ message HotWaterSettingsTrait {
1154
1912
  }
1155
1913
  }
1156
1914
 
1157
- message ScheduleHoldSettingsTrait {
1158
- HoldSetpoint holdSetpoint = 1;
1915
+ message HvacSensor {
1916
+ message SensorSelection {
1917
+ bool isThermostatSelected = 1;
1918
+ repeated weave.common.ResourceId sensorsWithWeaveIds = 2;
1919
+ }
1920
+ }
1159
1921
 
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;
1922
+ message LeafTrait {
1923
+ bool active = 1;
1924
+ HvacControl.Temperature ecoThresholdHeat = 2;
1925
+ HvacControl.Temperature ecoThresholdCool = 3;
1926
+ HvacControl.Temperature setpointThresholdHeat = 4;
1927
+ HvacControl.Temperature setpointThresholdCool = 5;
1928
+ HvacControl.Temperature scheduleDelta = 6;
1929
+
1930
+ message LeafModeChangeEvent {
1931
+ bool active = 1;
1167
1932
  }
1168
1933
  }
1169
1934
 
@@ -1181,23 +1946,19 @@ message AirwaveSettingsTrait {
1181
1946
  bool fanCoolingEnabled = 1;
1182
1947
  }
1183
1948
 
1184
- message AirwaveTrait {
1185
- bool fanCoolingActive = 1;
1186
- bool fanCoolingReadiness = 2;
1187
- }
1188
-
1189
1949
  message CoolToDrySettingsTrait {
1190
1950
  bool enabled = 1;
1191
- }
1192
-
1193
- message CoolToDryTrait {
1194
- bool isActive = 1;
1951
+ google.protobuf.FloatValue overcoolMaxDelta = 2;
1952
+ google.protobuf.FloatValue minTemperature = 3;
1953
+ google.protobuf.FloatValue targetHumidity = 4;
1195
1954
  }
1196
1955
 
1197
1956
  message EcoModeSettingsTrait {
1198
1957
  bool structureModeFollowEnabled = 1;
1199
1958
  HvacControl.TemperatureThreshold ecoTemperatureHeat = 2;
1200
1959
  HvacControl.TemperatureThreshold ecoTemperatureCool = 3;
1960
+ google.protobuf.Duration suppressAutoEcoDuration = 4;
1961
+ google.protobuf.Timestamp suppressAutoEcoTimeout = 5;
1201
1962
  }
1202
1963
 
1203
1964
  message EcoModeTrait {
@@ -1209,13 +1970,6 @@ message EmergencyHeatSettingsTrait {
1209
1970
  bool emergencyHeatEnabled = 1;
1210
1971
  }
1211
1972
 
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
1973
  message HeatPumpControlTrait {
1220
1974
  bool heatPumpReady = 1;
1221
1975
  bool heatPumpSetbackActive = 2;
@@ -1234,12 +1988,8 @@ message HumidityControlSettingsTrait {
1234
1988
  bool quietTimesEnabled = 2;
1235
1989
  uint32 quietStartSecondsInDay = 3;
1236
1990
  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;
1991
+ HvacControl.HumidityThreshold humidifierTargetHumidity = 5;
1992
+ HvacControl.HumidityThreshold dehumidifierTargetHumidity = 6;
1243
1993
  }
1244
1994
 
1245
1995
  message HvacDisplayTrait {
@@ -1267,6 +2017,7 @@ message HvacEquipmentCapabilitiesTrait {
1267
2017
  bool hasHeatPump = 17;
1268
2018
  bool hasHotWaterTemperature = 18;
1269
2019
  bool hasBoilerSupplyTemperature = 19;
2020
+ bool hasVentilator = 20;
1270
2021
  }
1271
2022
 
1272
2023
  message InstallationSettingsTrait {
@@ -1281,22 +2032,12 @@ message InstallationSettingsTrait {
1281
2032
  google.protobuf.StringValue proId = 9;
1282
2033
  }
1283
2034
 
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
2035
  message PreconditioningSettingsTrait {
1294
2036
  bool preconditioningEnabled = 1;
1295
2037
  google.protobuf.Duration maxNighttimeSeconds = 2;
1296
- }
1297
-
1298
- message PreconditioningTrait {
1299
- bool preconditioningActive = 1;
2038
+ bool heatPreconditioningEnabled = 3;
2039
+ bool coolPreconditioningEnabled = 4;
2040
+ bool returnHomePreconditioningEnabled = 5;
1300
2041
  }
1301
2042
 
1302
2043
  message RadiantControlSettingsTrait {
@@ -1325,11 +2066,6 @@ message SunblockSettingsTrait {
1325
2066
  bool enabled = 1;
1326
2067
  }
1327
2068
 
1328
- message TargetTemperatureSettingsTrait {
1329
- SetPointScheduleSettingsTrait.TemperatureSetPoint targetTemperature = 1;
1330
- google.protobuf.BoolValue enabled = 2;
1331
- }
1332
-
1333
2069
  message TemperatureLockSettingsTrait {
1334
2070
  bool enabled = 1;
1335
2071
  HvacControl.Temperature temperatureHigh = 2;
@@ -1351,3 +2087,7 @@ message UtilitySettingsTrait {
1351
2087
  message WakeOnApproachSettingsTrait {
1352
2088
  bool enabled = 1;
1353
2089
  }
2090
+
2091
+ message KryptoniteObservedBeaconTrait {
2092
+ google.protobuf.Timestamp lastBeaconTime = 1;
2093
+ }