quilt-hp-python 0.1.1__py3-none-any.whl

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 (53) hide show
  1. quilt_hp/__init__.py +22 -0
  2. quilt_hp/_paths.py +26 -0
  3. quilt_hp/_proto/__init__.py +0 -0
  4. quilt_hp/_proto/quilt_device_pairing_pb2.py +56 -0
  5. quilt_hp/_proto/quilt_device_pairing_pb2.pyi +317 -0
  6. quilt_hp/_proto/quilt_device_pairing_pb2_grpc.py +24 -0
  7. quilt_hp/_proto/quilt_hds_pb2.py +292 -0
  8. quilt_hp/_proto/quilt_hds_pb2.pyi +3947 -0
  9. quilt_hp/_proto/quilt_hds_pb2_grpc.py +1732 -0
  10. quilt_hp/_proto/quilt_notifier_pb2.py +55 -0
  11. quilt_hp/_proto/quilt_notifier_pb2.pyi +258 -0
  12. quilt_hp/_proto/quilt_notifier_pb2_grpc.py +97 -0
  13. quilt_hp/_proto/quilt_services_pb2.py +171 -0
  14. quilt_hp/_proto/quilt_services_pb2.pyi +1320 -0
  15. quilt_hp/_proto/quilt_services_pb2_grpc.py +1188 -0
  16. quilt_hp/_proto/quilt_system_pb2.py +53 -0
  17. quilt_hp/_proto/quilt_system_pb2.pyi +164 -0
  18. quilt_hp/_proto/quilt_system_pb2_grpc.py +270 -0
  19. quilt_hp/auth.py +244 -0
  20. quilt_hp/cli/__init__.py +1 -0
  21. quilt_hp/cli/main.py +770 -0
  22. quilt_hp/cli/settings.py +123 -0
  23. quilt_hp/cli/store.py +105 -0
  24. quilt_hp/cli/tui.py +2677 -0
  25. quilt_hp/client.py +616 -0
  26. quilt_hp/const.py +57 -0
  27. quilt_hp/exceptions.py +23 -0
  28. quilt_hp/models/__init__.py +85 -0
  29. quilt_hp/models/comfort.py +47 -0
  30. quilt_hp/models/controller.py +135 -0
  31. quilt_hp/models/energy.py +31 -0
  32. quilt_hp/models/enums.py +298 -0
  33. quilt_hp/models/indoor_unit.py +412 -0
  34. quilt_hp/models/outdoor_unit.py +71 -0
  35. quilt_hp/models/qsm.py +105 -0
  36. quilt_hp/models/schedule.py +98 -0
  37. quilt_hp/models/sensor.py +92 -0
  38. quilt_hp/models/software_update.py +74 -0
  39. quilt_hp/models/space.py +177 -0
  40. quilt_hp/models/system.py +451 -0
  41. quilt_hp/py.typed +1 -0
  42. quilt_hp/services/__init__.py +1 -0
  43. quilt_hp/services/hds.py +480 -0
  44. quilt_hp/services/streaming.py +561 -0
  45. quilt_hp/services/system.py +95 -0
  46. quilt_hp/services/user.py +143 -0
  47. quilt_hp/tokens.py +119 -0
  48. quilt_hp/transport.py +192 -0
  49. quilt_hp_python-0.1.1.dist-info/METADATA +172 -0
  50. quilt_hp_python-0.1.1.dist-info/RECORD +53 -0
  51. quilt_hp_python-0.1.1.dist-info/WHEEL +4 -0
  52. quilt_hp_python-0.1.1.dist-info/entry_points.txt +2 -0
  53. quilt_hp_python-0.1.1.dist-info/licenses/LICENSE +21 -0
@@ -0,0 +1,3947 @@
1
+ """
2
+ @generated by mypy-protobuf. Do not edit manually!
3
+ isort:skip_file
4
+ quilt_hds.proto
5
+ Home Datastore (HDS) messages — objects managed by the gRPC API.
6
+ """
7
+
8
+ from collections import abc as _abc
9
+ from google.protobuf import descriptor as _descriptor
10
+ from google.protobuf import field_mask_pb2 as _field_mask_pb2
11
+ from google.protobuf import message as _message
12
+ from google.protobuf import timestamp_pb2 as _timestamp_pb2
13
+ from google.protobuf.internal import containers as _containers
14
+ from google.protobuf.internal import enum_type_wrapper as _enum_type_wrapper
15
+ import builtins as _builtins
16
+ import sys
17
+ import typing as _typing
18
+
19
+ if sys.version_info >= (3, 11):
20
+ from typing import TypeAlias as _TypeAlias, Never as _Never
21
+ else:
22
+ from typing_extensions import TypeAlias as _TypeAlias, Never as _Never
23
+
24
+ DESCRIPTOR: _descriptor.FileDescriptor
25
+
26
+ class _HVACMode:
27
+ ValueType = _typing.NewType("ValueType", _builtins.int)
28
+ V: _TypeAlias = ValueType # noqa: Y015
29
+
30
+ class _HVACModeEnumTypeWrapper(_enum_type_wrapper._EnumTypeWrapper[_HVACMode.ValueType], _builtins.type):
31
+ DESCRIPTOR: _descriptor.EnumDescriptor
32
+ HVAC_MODE_UNSPECIFIED: _HVACMode.ValueType # 0
33
+ HVAC_MODE_STANDBY: _HVACMode.ValueType # 1
34
+ HVAC_MODE_COOL: _HVACMode.ValueType # 2
35
+ HVAC_MODE_HEAT: _HVACMode.ValueType # 3
36
+ HVAC_MODE_AUTO: _HVACMode.ValueType # 4
37
+ HVAC_MODE_FAN: _HVACMode.ValueType # 5
38
+ HVAC_MODE_FALLBACK_AUTO: _HVACMode.ValueType # 6
39
+ HVAC_MODE_FALLBACK_OFF: _HVACMode.ValueType # 7
40
+
41
+ class HVACMode(_HVACMode, metaclass=_HVACModeEnumTypeWrapper):
42
+ """---------------------------------------------------------------------------
43
+ Enums
44
+ ---------------------------------------------------------------------------
45
+
46
+ COOL=2, HEAT=3
47
+ """
48
+
49
+ HVAC_MODE_UNSPECIFIED: HVACMode.ValueType # 0
50
+ HVAC_MODE_STANDBY: HVACMode.ValueType # 1
51
+ HVAC_MODE_COOL: HVACMode.ValueType # 2
52
+ HVAC_MODE_HEAT: HVACMode.ValueType # 3
53
+ HVAC_MODE_AUTO: HVACMode.ValueType # 4
54
+ HVAC_MODE_FAN: HVACMode.ValueType # 5
55
+ HVAC_MODE_FALLBACK_AUTO: HVACMode.ValueType # 6
56
+ HVAC_MODE_FALLBACK_OFF: HVACMode.ValueType # 7
57
+ Global___HVACMode: _TypeAlias = HVACMode # noqa: Y015
58
+
59
+ class _HVACState:
60
+ ValueType = _typing.NewType("ValueType", _builtins.int)
61
+ V: _TypeAlias = ValueType # noqa: Y015
62
+
63
+ class _HVACStateEnumTypeWrapper(_enum_type_wrapper._EnumTypeWrapper[_HVACState.ValueType], _builtins.type):
64
+ DESCRIPTOR: _descriptor.EnumDescriptor
65
+ HVAC_STATE_UNSPECIFIED: _HVACState.ValueType # 0
66
+ HVAC_STATE_STANDBY: _HVACState.ValueType # 1
67
+ HVAC_STATE_COOL: _HVACState.ValueType # 2
68
+ HVAC_STATE_HEAT: _HVACState.ValueType # 3
69
+ HVAC_STATE_DRIFT: _HVACState.ValueType # 4
70
+ HVAC_STATE_FAN: _HVACState.ValueType # 5
71
+ HVAC_STATE_COOL_DEFERRED: _HVACState.ValueType # 6
72
+ HVAC_STATE_HEAT_DEFERRED: _HVACState.ValueType # 7
73
+ HVAC_STATE_FAN_DEFERRED: _HVACState.ValueType # 8
74
+ HVAC_STATE_COOL_PREPARING: _HVACState.ValueType # 9
75
+ HVAC_STATE_HEAT_PREPARING: _HVACState.ValueType # 10
76
+
77
+ class HVACState(_HVACState, metaclass=_HVACStateEnumTypeWrapper):
78
+ """Confirmed by Android proto Java enum SJ (implements ProtocolMessageEnum).
79
+ DRY states were iOS KMP-layer only and do not exist in the wire proto.
80
+ """
81
+
82
+ HVAC_STATE_UNSPECIFIED: HVACState.ValueType # 0
83
+ HVAC_STATE_STANDBY: HVACState.ValueType # 1
84
+ HVAC_STATE_COOL: HVACState.ValueType # 2
85
+ HVAC_STATE_HEAT: HVACState.ValueType # 3
86
+ HVAC_STATE_DRIFT: HVACState.ValueType # 4
87
+ HVAC_STATE_FAN: HVACState.ValueType # 5
88
+ HVAC_STATE_COOL_DEFERRED: HVACState.ValueType # 6
89
+ HVAC_STATE_HEAT_DEFERRED: HVACState.ValueType # 7
90
+ HVAC_STATE_FAN_DEFERRED: HVACState.ValueType # 8
91
+ HVAC_STATE_COOL_PREPARING: HVACState.ValueType # 9
92
+ HVAC_STATE_HEAT_PREPARING: HVACState.ValueType # 10
93
+ Global___HVACState: _TypeAlias = HVACState # noqa: Y015
94
+
95
+ class _OccupancyMode:
96
+ ValueType = _typing.NewType("ValueType", _builtins.int)
97
+ V: _TypeAlias = ValueType # noqa: Y015
98
+
99
+ class _OccupancyModeEnumTypeWrapper(_enum_type_wrapper._EnumTypeWrapper[_OccupancyMode.ValueType], _builtins.type):
100
+ DESCRIPTOR: _descriptor.EnumDescriptor
101
+ OCCUPANCY_MODE_UNSPECIFIED: _OccupancyMode.ValueType # 0
102
+ OCCUPANCY_MODE_DISABLED: _OccupancyMode.ValueType # 1
103
+ OCCUPANCY_MODE_ENABLED: _OccupancyMode.ValueType # 2
104
+
105
+ class OccupancyMode(_OccupancyMode, metaclass=_OccupancyModeEnumTypeWrapper): ...
106
+
107
+ OCCUPANCY_MODE_UNSPECIFIED: OccupancyMode.ValueType # 0
108
+ OCCUPANCY_MODE_DISABLED: OccupancyMode.ValueType # 1
109
+ OCCUPANCY_MODE_ENABLED: OccupancyMode.ValueType # 2
110
+ Global___OccupancyMode: _TypeAlias = OccupancyMode # noqa: Y015
111
+
112
+ class _SafetyHeatingMode:
113
+ ValueType = _typing.NewType("ValueType", _builtins.int)
114
+ V: _TypeAlias = ValueType # noqa: Y015
115
+
116
+ class _SafetyHeatingModeEnumTypeWrapper(_enum_type_wrapper._EnumTypeWrapper[_SafetyHeatingMode.ValueType], _builtins.type):
117
+ DESCRIPTOR: _descriptor.EnumDescriptor
118
+ SAFETY_HEATING_MODE_UNSPECIFIED: _SafetyHeatingMode.ValueType # 0
119
+ SAFETY_HEATING_MODE_DISABLED: _SafetyHeatingMode.ValueType # 1
120
+ SAFETY_HEATING_MODE_ENABLED: _SafetyHeatingMode.ValueType # 2
121
+
122
+ class SafetyHeatingMode(_SafetyHeatingMode, metaclass=_SafetyHeatingModeEnumTypeWrapper):
123
+ """Freeze-protection setting on SpaceSettings (field 9).
124
+ UNSPECIFIED is treated as ENABLED by the app (freeze protection on by default).
125
+ KMP: SafetyHeatingMode — field number unconfirmed (not present in APK build; added post-release).
126
+ """
127
+
128
+ SAFETY_HEATING_MODE_UNSPECIFIED: SafetyHeatingMode.ValueType # 0
129
+ SAFETY_HEATING_MODE_DISABLED: SafetyHeatingMode.ValueType # 1
130
+ SAFETY_HEATING_MODE_ENABLED: SafetyHeatingMode.ValueType # 2
131
+ Global___SafetyHeatingMode: _TypeAlias = SafetyHeatingMode # noqa: Y015
132
+
133
+ class _HvacControllerType:
134
+ ValueType = _typing.NewType("ValueType", _builtins.int)
135
+ V: _TypeAlias = ValueType # noqa: Y015
136
+
137
+ class _HvacControllerTypeEnumTypeWrapper(_enum_type_wrapper._EnumTypeWrapper[_HvacControllerType.ValueType], _builtins.type):
138
+ DESCRIPTOR: _descriptor.EnumDescriptor
139
+ HVAC_CONTROLLER_TYPE_UNSPECIFIED: _HvacControllerType.ValueType # 0
140
+ HVAC_CONTROLLER_TYPE_PASS_THROUGH_TEMPERATURE: _HvacControllerType.ValueType # 1
141
+ HVAC_CONTROLLER_TYPE_INTEGRAL_TEMPERATURE_V1: _HvacControllerType.ValueType # 2
142
+ HVAC_CONTROLLER_TYPE_INTEGRAL_TEMPERATURE_V2: _HvacControllerType.ValueType # 3
143
+
144
+ class HvacControllerType(_HvacControllerType, metaclass=_HvacControllerTypeEnumTypeWrapper): ...
145
+
146
+ HVAC_CONTROLLER_TYPE_UNSPECIFIED: HvacControllerType.ValueType # 0
147
+ HVAC_CONTROLLER_TYPE_PASS_THROUGH_TEMPERATURE: HvacControllerType.ValueType # 1
148
+ HVAC_CONTROLLER_TYPE_INTEGRAL_TEMPERATURE_V1: HvacControllerType.ValueType # 2
149
+ HVAC_CONTROLLER_TYPE_INTEGRAL_TEMPERATURE_V2: HvacControllerType.ValueType # 3
150
+ Global___HvacControllerType: _TypeAlias = HvacControllerType # noqa: Y015
151
+
152
+ class _ComfortSettingOverride:
153
+ ValueType = _typing.NewType("ValueType", _builtins.int)
154
+ V: _TypeAlias = ValueType # noqa: Y015
155
+
156
+ class _ComfortSettingOverrideEnumTypeWrapper(_enum_type_wrapper._EnumTypeWrapper[_ComfortSettingOverride.ValueType], _builtins.type):
157
+ DESCRIPTOR: _descriptor.EnumDescriptor
158
+ COMFORT_SETTING_OVERRIDE_UNSPECIFIED: _ComfortSettingOverride.ValueType # 0
159
+ COMFORT_SETTING_OVERRIDE_NONE: _ComfortSettingOverride.ValueType # 1
160
+ COMFORT_SETTING_OVERRIDE_UNTIL_NEXT_SCHEDULE: _ComfortSettingOverride.ValueType # 2
161
+ COMFORT_SETTING_OVERRIDE_INDEFINITE: _ComfortSettingOverride.ValueType # 3
162
+ COMFORT_SETTING_OVERRIDE_SCHEDULE: _ComfortSettingOverride.ValueType # 4
163
+ COMFORT_SETTING_OVERRIDE_UNOCCUPIED: _ComfortSettingOverride.ValueType # 5
164
+ COMFORT_SETTING_OVERRIDE_OCCUPIED: _ComfortSettingOverride.ValueType # 6
165
+
166
+ class ComfortSettingOverride(_ComfortSettingOverride, metaclass=_ComfortSettingOverrideEnumTypeWrapper): ...
167
+
168
+ COMFORT_SETTING_OVERRIDE_UNSPECIFIED: ComfortSettingOverride.ValueType # 0
169
+ COMFORT_SETTING_OVERRIDE_NONE: ComfortSettingOverride.ValueType # 1
170
+ COMFORT_SETTING_OVERRIDE_UNTIL_NEXT_SCHEDULE: ComfortSettingOverride.ValueType # 2
171
+ COMFORT_SETTING_OVERRIDE_INDEFINITE: ComfortSettingOverride.ValueType # 3
172
+ COMFORT_SETTING_OVERRIDE_SCHEDULE: ComfortSettingOverride.ValueType # 4
173
+ COMFORT_SETTING_OVERRIDE_UNOCCUPIED: ComfortSettingOverride.ValueType # 5
174
+ COMFORT_SETTING_OVERRIDE_OCCUPIED: ComfortSettingOverride.ValueType # 6
175
+ Global___ComfortSettingOverride: _TypeAlias = ComfortSettingOverride # noqa: Y015
176
+
177
+ class _ComfortSettingType:
178
+ ValueType = _typing.NewType("ValueType", _builtins.int)
179
+ V: _TypeAlias = ValueType # noqa: Y015
180
+
181
+ class _ComfortSettingTypeEnumTypeWrapper(_enum_type_wrapper._EnumTypeWrapper[_ComfortSettingType.ValueType], _builtins.type):
182
+ DESCRIPTOR: _descriptor.EnumDescriptor
183
+ COMFORT_SETTING_TYPE_UNSPECIFIED: _ComfortSettingType.ValueType # 0
184
+ COMFORT_SETTING_TYPE_ACTIVE: _ComfortSettingType.ValueType # 1
185
+ COMFORT_SETTING_TYPE_SLEEP: _ComfortSettingType.ValueType # 2
186
+ COMFORT_SETTING_TYPE_AWAY: _ComfortSettingType.ValueType # 3
187
+ COMFORT_SETTING_TYPE_STANDBY: _ComfortSettingType.ValueType # 4
188
+ COMFORT_SETTING_TYPE_CUSTOM: _ComfortSettingType.ValueType # 5
189
+
190
+ class ComfortSettingType(_ComfortSettingType, metaclass=_ComfortSettingTypeEnumTypeWrapper): ...
191
+
192
+ COMFORT_SETTING_TYPE_UNSPECIFIED: ComfortSettingType.ValueType # 0
193
+ COMFORT_SETTING_TYPE_ACTIVE: ComfortSettingType.ValueType # 1
194
+ COMFORT_SETTING_TYPE_SLEEP: ComfortSettingType.ValueType # 2
195
+ COMFORT_SETTING_TYPE_AWAY: ComfortSettingType.ValueType # 3
196
+ COMFORT_SETTING_TYPE_STANDBY: ComfortSettingType.ValueType # 4
197
+ COMFORT_SETTING_TYPE_CUSTOM: ComfortSettingType.ValueType # 5
198
+ Global___ComfortSettingType: _TypeAlias = ComfortSettingType # noqa: Y015
199
+
200
+ class _IndoorUnitLouverMode:
201
+ ValueType = _typing.NewType("ValueType", _builtins.int)
202
+ V: _TypeAlias = ValueType # noqa: Y015
203
+
204
+ class _IndoorUnitLouverModeEnumTypeWrapper(_enum_type_wrapper._EnumTypeWrapper[_IndoorUnitLouverMode.ValueType], _builtins.type):
205
+ DESCRIPTOR: _descriptor.EnumDescriptor
206
+ LOUVER_MODE_UNSPECIFIED: _IndoorUnitLouverMode.ValueType # 0
207
+ LOUVER_MODE_CLOSED: _IndoorUnitLouverMode.ValueType # 1
208
+ LOUVER_MODE_SWEEP: _IndoorUnitLouverMode.ValueType # 2
209
+ LOUVER_MODE_FIXED: _IndoorUnitLouverMode.ValueType # 3
210
+ """wire-confirmed via JSON"""
211
+ LOUVER_MODE_AUTO: _IndoorUnitLouverMode.ValueType # 4
212
+ """JSON name "LOUVER_MODE_AUTO" """
213
+
214
+ class IndoorUnitLouverMode(_IndoorUnitLouverMode, metaclass=_IndoorUnitLouverModeEnumTypeWrapper):
215
+ """JSON name: LOUVER_MODE_AUTO (not LOUVER_MODE_AUTOMATIC).
216
+ Wire-confirmed: LOUVER_MODE_FIXED=3, LOUVER_MODE_AUTO=4 (from quilt_office.proto.json).
217
+ """
218
+
219
+ LOUVER_MODE_UNSPECIFIED: IndoorUnitLouverMode.ValueType # 0
220
+ LOUVER_MODE_CLOSED: IndoorUnitLouverMode.ValueType # 1
221
+ LOUVER_MODE_SWEEP: IndoorUnitLouverMode.ValueType # 2
222
+ LOUVER_MODE_FIXED: IndoorUnitLouverMode.ValueType # 3
223
+ """wire-confirmed via JSON"""
224
+ LOUVER_MODE_AUTO: IndoorUnitLouverMode.ValueType # 4
225
+ """JSON name "LOUVER_MODE_AUTO" """
226
+ Global___IndoorUnitLouverMode: _TypeAlias = IndoorUnitLouverMode # noqa: Y015
227
+
228
+ class _FanSpeedMode:
229
+ ValueType = _typing.NewType("ValueType", _builtins.int)
230
+ V: _TypeAlias = ValueType # noqa: Y015
231
+
232
+ class _FanSpeedModeEnumTypeWrapper(_enum_type_wrapper._EnumTypeWrapper[_FanSpeedMode.ValueType], _builtins.type):
233
+ DESCRIPTOR: _descriptor.EnumDescriptor
234
+ FAN_SPEED_MODE_UNSPECIFIED: _FanSpeedMode.ValueType # 0
235
+ FAN_SPEED_MODE_AUTO: _FanSpeedMode.ValueType # 1
236
+ """JSON name "FAN_SPEED_MODE_AUTO" """
237
+ FAN_SPEED_MODE_SETPOINT: _FanSpeedMode.ValueType # 2
238
+
239
+ class FanSpeedMode(_FanSpeedMode, metaclass=_FanSpeedModeEnumTypeWrapper):
240
+ """JSON name: FAN_SPEED_MODE_AUTO (not FAN_SPEED_MODE_AUTOMATIC)."""
241
+
242
+ FAN_SPEED_MODE_UNSPECIFIED: FanSpeedMode.ValueType # 0
243
+ FAN_SPEED_MODE_AUTO: FanSpeedMode.ValueType # 1
244
+ """JSON name "FAN_SPEED_MODE_AUTO" """
245
+ FAN_SPEED_MODE_SETPOINT: FanSpeedMode.ValueType # 2
246
+ Global___FanSpeedMode: _TypeAlias = FanSpeedMode # noqa: Y015
247
+
248
+ class _BoostMode:
249
+ ValueType = _typing.NewType("ValueType", _builtins.int)
250
+ V: _TypeAlias = ValueType # noqa: Y015
251
+
252
+ class _BoostModeEnumTypeWrapper(_enum_type_wrapper._EnumTypeWrapper[_BoostMode.ValueType], _builtins.type):
253
+ DESCRIPTOR: _descriptor.EnumDescriptor
254
+ BOOST_MODE_UNSPECIFIED: _BoostMode.ValueType # 0
255
+ """wire-confirmed (f7=0 in UpdateSpace)"""
256
+ BOOST_MODE_OFF: _BoostMode.ValueType # 1
257
+ BOOST_MODE_ON: _BoostMode.ValueType # 2
258
+
259
+ class BoostMode(_BoostMode, metaclass=_BoostModeEnumTypeWrapper):
260
+ """Boost mode for spaces. Values inferred from JSON presence."""
261
+
262
+ BOOST_MODE_UNSPECIFIED: BoostMode.ValueType # 0
263
+ """wire-confirmed (f7=0 in UpdateSpace)"""
264
+ BOOST_MODE_OFF: BoostMode.ValueType # 1
265
+ BOOST_MODE_ON: BoostMode.ValueType # 2
266
+ Global___BoostMode: _TypeAlias = BoostMode # noqa: Y015
267
+
268
+ class _LightAnimation:
269
+ ValueType = _typing.NewType("ValueType", _builtins.int)
270
+ V: _TypeAlias = ValueType # noqa: Y015
271
+
272
+ class _LightAnimationEnumTypeWrapper(_enum_type_wrapper._EnumTypeWrapper[_LightAnimation.ValueType], _builtins.type):
273
+ DESCRIPTOR: _descriptor.EnumDescriptor
274
+ LIGHT_ANIMATION_UNSPECIFIED: _LightAnimation.ValueType # 0
275
+ LIGHT_ANIMATION_NONE: _LightAnimation.ValueType # 1
276
+ LIGHT_ANIMATION_SPARKLE_FADE: _LightAnimation.ValueType # 2
277
+ LIGHT_ANIMATION_TWINKLE_FADE: _LightAnimation.ValueType # 3
278
+ LIGHT_ANIMATION_DANCE: _LightAnimation.ValueType # 4
279
+ LIGHT_ANIMATION_CHASE: _LightAnimation.ValueType # 5
280
+
281
+ class LightAnimation(_LightAnimation, metaclass=_LightAnimationEnumTypeWrapper): ...
282
+
283
+ LIGHT_ANIMATION_UNSPECIFIED: LightAnimation.ValueType # 0
284
+ LIGHT_ANIMATION_NONE: LightAnimation.ValueType # 1
285
+ LIGHT_ANIMATION_SPARKLE_FADE: LightAnimation.ValueType # 2
286
+ LIGHT_ANIMATION_TWINKLE_FADE: LightAnimation.ValueType # 3
287
+ LIGHT_ANIMATION_DANCE: LightAnimation.ValueType # 4
288
+ LIGHT_ANIMATION_CHASE: LightAnimation.ValueType # 5
289
+ Global___LightAnimation: _TypeAlias = LightAnimation # noqa: Y015
290
+
291
+ class _LightState:
292
+ ValueType = _typing.NewType("ValueType", _builtins.int)
293
+ V: _TypeAlias = ValueType # noqa: Y015
294
+
295
+ class _LightStateEnumTypeWrapper(_enum_type_wrapper._EnumTypeWrapper[_LightState.ValueType], _builtins.type):
296
+ DESCRIPTOR: _descriptor.EnumDescriptor
297
+ LIGHT_STATE_UNSPECIFIED: _LightState.ValueType # 0
298
+ LIGHT_STATE_ON: _LightState.ValueType # 1
299
+ LIGHT_STATE_OFF: _LightState.ValueType # 2
300
+
301
+ class LightState(_LightState, metaclass=_LightStateEnumTypeWrapper): ...
302
+
303
+ LIGHT_STATE_UNSPECIFIED: LightState.ValueType # 0
304
+ LIGHT_STATE_ON: LightState.ValueType # 1
305
+ LIGHT_STATE_OFF: LightState.ValueType # 2
306
+ Global___LightState: _TypeAlias = LightState # noqa: Y015
307
+
308
+ class _ConditionState:
309
+ ValueType = _typing.NewType("ValueType", _builtins.int)
310
+ V: _TypeAlias = ValueType # noqa: Y015
311
+
312
+ class _ConditionStateEnumTypeWrapper(_enum_type_wrapper._EnumTypeWrapper[_ConditionState.ValueType], _builtins.type):
313
+ DESCRIPTOR: _descriptor.EnumDescriptor
314
+ CONDITION_STATE_UNSPECIFIED: _ConditionState.ValueType # 0
315
+ CONDITION_STATE_INACTIVE: _ConditionState.ValueType # 1
316
+ CONDITION_STATE_ACTIVE: _ConditionState.ValueType # 2
317
+
318
+ class ConditionState(_ConditionState, metaclass=_ConditionStateEnumTypeWrapper): ...
319
+
320
+ CONDITION_STATE_UNSPECIFIED: ConditionState.ValueType # 0
321
+ CONDITION_STATE_INACTIVE: ConditionState.ValueType # 1
322
+ CONDITION_STATE_ACTIVE: ConditionState.ValueType # 2
323
+ Global___ConditionState: _TypeAlias = ConditionState # noqa: Y015
324
+
325
+ class _Presence:
326
+ ValueType = _typing.NewType("ValueType", _builtins.int)
327
+ V: _TypeAlias = ValueType # noqa: Y015
328
+
329
+ class _PresenceEnumTypeWrapper(_enum_type_wrapper._EnumTypeWrapper[_Presence.ValueType], _builtins.type):
330
+ DESCRIPTOR: _descriptor.EnumDescriptor
331
+ PRESENCE_UNSPECIFIED: _Presence.ValueType # 0
332
+ PRESENCE_UNDETECTED: _Presence.ValueType # 1
333
+ PRESENCE_DETECTED: _Presence.ValueType # 2
334
+
335
+ class Presence(_Presence, metaclass=_PresenceEnumTypeWrapper): ...
336
+
337
+ PRESENCE_UNSPECIFIED: Presence.ValueType # 0
338
+ PRESENCE_UNDETECTED: Presence.ValueType # 1
339
+ PRESENCE_DETECTED: Presence.ValueType # 2
340
+ Global___Presence: _TypeAlias = Presence # noqa: Y015
341
+
342
+ class _RemoteSensorControlMode:
343
+ ValueType = _typing.NewType("ValueType", _builtins.int)
344
+ V: _TypeAlias = ValueType # noqa: Y015
345
+
346
+ class _RemoteSensorControlModeEnumTypeWrapper(_enum_type_wrapper._EnumTypeWrapper[_RemoteSensorControlMode.ValueType], _builtins.type):
347
+ DESCRIPTOR: _descriptor.EnumDescriptor
348
+ REMOTE_SENSOR_CONTROL_MODE_UNSPECIFIED: _RemoteSensorControlMode.ValueType # 0
349
+ REMOTE_SENSOR_CONTROL_MODE_DISABLED: _RemoteSensorControlMode.ValueType # 1
350
+ REMOTE_SENSOR_CONTROL_MODE_ENABLED: _RemoteSensorControlMode.ValueType # 2
351
+
352
+ class RemoteSensorControlMode(_RemoteSensorControlMode, metaclass=_RemoteSensorControlModeEnumTypeWrapper): ...
353
+
354
+ REMOTE_SENSOR_CONTROL_MODE_UNSPECIFIED: RemoteSensorControlMode.ValueType # 0
355
+ REMOTE_SENSOR_CONTROL_MODE_DISABLED: RemoteSensorControlMode.ValueType # 1
356
+ REMOTE_SENSOR_CONTROL_MODE_ENABLED: RemoteSensorControlMode.ValueType # 2
357
+ Global___RemoteSensorControlMode: _TypeAlias = RemoteSensorControlMode # noqa: Y015
358
+
359
+ class _Weekday:
360
+ ValueType = _typing.NewType("ValueType", _builtins.int)
361
+ V: _TypeAlias = ValueType # noqa: Y015
362
+
363
+ class _WeekdayEnumTypeWrapper(_enum_type_wrapper._EnumTypeWrapper[_Weekday.ValueType], _builtins.type):
364
+ DESCRIPTOR: _descriptor.EnumDescriptor
365
+ WEEKDAY_UNSPECIFIED: _Weekday.ValueType # 0
366
+ WEEKDAY_MONDAY: _Weekday.ValueType # 1
367
+ WEEKDAY_TUESDAY: _Weekday.ValueType # 2
368
+ WEEKDAY_WEDNESDAY: _Weekday.ValueType # 3
369
+ WEEKDAY_THURSDAY: _Weekday.ValueType # 4
370
+ WEEKDAY_FRIDAY: _Weekday.ValueType # 5
371
+ WEEKDAY_SATURDAY: _Weekday.ValueType # 6
372
+ WEEKDAY_SUNDAY: _Weekday.ValueType # 7
373
+
374
+ class Weekday(_Weekday, metaclass=_WeekdayEnumTypeWrapper): ...
375
+
376
+ WEEKDAY_UNSPECIFIED: Weekday.ValueType # 0
377
+ WEEKDAY_MONDAY: Weekday.ValueType # 1
378
+ WEEKDAY_TUESDAY: Weekday.ValueType # 2
379
+ WEEKDAY_WEDNESDAY: Weekday.ValueType # 3
380
+ WEEKDAY_THURSDAY: Weekday.ValueType # 4
381
+ WEEKDAY_FRIDAY: Weekday.ValueType # 5
382
+ WEEKDAY_SATURDAY: Weekday.ValueType # 6
383
+ WEEKDAY_SUNDAY: Weekday.ValueType # 7
384
+ Global___Weekday: _TypeAlias = Weekday # noqa: Y015
385
+
386
+ class _ScheduleExecution:
387
+ ValueType = _typing.NewType("ValueType", _builtins.int)
388
+ V: _TypeAlias = ValueType # noqa: Y015
389
+
390
+ class _ScheduleExecutionEnumTypeWrapper(_enum_type_wrapper._EnumTypeWrapper[_ScheduleExecution.ValueType], _builtins.type):
391
+ DESCRIPTOR: _descriptor.EnumDescriptor
392
+ SCHEDULE_EXECUTION_UNSPECIFIED: _ScheduleExecution.ValueType # 0
393
+ SCHEDULE_EXECUTION_RUNNING: _ScheduleExecution.ValueType # 1
394
+ SCHEDULE_EXECUTION_PAUSED: _ScheduleExecution.ValueType # 2
395
+
396
+ class ScheduleExecution(_ScheduleExecution, metaclass=_ScheduleExecutionEnumTypeWrapper): ...
397
+
398
+ SCHEDULE_EXECUTION_UNSPECIFIED: ScheduleExecution.ValueType # 0
399
+ SCHEDULE_EXECUTION_RUNNING: ScheduleExecution.ValueType # 1
400
+ SCHEDULE_EXECUTION_PAUSED: ScheduleExecution.ValueType # 2
401
+ Global___ScheduleExecution: _TypeAlias = ScheduleExecution # noqa: Y015
402
+
403
+ class _FallbackControlCommand:
404
+ ValueType = _typing.NewType("ValueType", _builtins.int)
405
+ V: _TypeAlias = ValueType # noqa: Y015
406
+
407
+ class _FallbackControlCommandEnumTypeWrapper(_enum_type_wrapper._EnumTypeWrapper[_FallbackControlCommand.ValueType], _builtins.type):
408
+ DESCRIPTOR: _descriptor.EnumDescriptor
409
+ FALLBACK_CONTROL_COMMAND_UNSPECIFIED: _FallbackControlCommand.ValueType # 0
410
+ FALLBACK_CONTROL_COMMAND_COMPLETE: _FallbackControlCommand.ValueType # 1
411
+ FALLBACK_CONTROL_COMMAND_EXIT: _FallbackControlCommand.ValueType # 2
412
+
413
+ class FallbackControlCommand(_FallbackControlCommand, metaclass=_FallbackControlCommandEnumTypeWrapper): ...
414
+
415
+ FALLBACK_CONTROL_COMMAND_UNSPECIFIED: FallbackControlCommand.ValueType # 0
416
+ FALLBACK_CONTROL_COMMAND_COMPLETE: FallbackControlCommand.ValueType # 1
417
+ FALLBACK_CONTROL_COMMAND_EXIT: FallbackControlCommand.ValueType # 2
418
+ Global___FallbackControlCommand: _TypeAlias = FallbackControlCommand # noqa: Y015
419
+
420
+ class _OccupancyState:
421
+ ValueType = _typing.NewType("ValueType", _builtins.int)
422
+ V: _TypeAlias = ValueType # noqa: Y015
423
+
424
+ class _OccupancyStateEnumTypeWrapper(_enum_type_wrapper._EnumTypeWrapper[_OccupancyState.ValueType], _builtins.type):
425
+ DESCRIPTOR: _descriptor.EnumDescriptor
426
+ OCCUPANCY_STATE_UNSPECIFIED: _OccupancyState.ValueType # 0
427
+ OCCUPANCY_STATE_UNDETECTED: _OccupancyState.ValueType # 1
428
+ OCCUPANCY_STATE_DETECTED: _OccupancyState.ValueType # 2
429
+
430
+ class OccupancyState(_OccupancyState, metaclass=_OccupancyStateEnumTypeWrapper):
431
+ """APK-confirmed (C5337pK.java): occupancy detection result for this IDU/space.
432
+ OccupancyState (MK.java): UNSPECIFIED=0, UNDETECTED=1, DETECTED=2.
433
+ """
434
+
435
+ OCCUPANCY_STATE_UNSPECIFIED: OccupancyState.ValueType # 0
436
+ OCCUPANCY_STATE_UNDETECTED: OccupancyState.ValueType # 1
437
+ OCCUPANCY_STATE_DETECTED: OccupancyState.ValueType # 2
438
+ Global___OccupancyState: _TypeAlias = OccupancyState # noqa: Y015
439
+
440
+ class _WifiConnectionState:
441
+ ValueType = _typing.NewType("ValueType", _builtins.int)
442
+ V: _TypeAlias = ValueType # noqa: Y015
443
+
444
+ class _WifiConnectionStateEnumTypeWrapper(_enum_type_wrapper._EnumTypeWrapper[_WifiConnectionState.ValueType], _builtins.type):
445
+ DESCRIPTOR: _descriptor.EnumDescriptor
446
+ WIFI_STATE_UNSPECIFIED: _WifiConnectionState.ValueType # 0
447
+ WIFI_STATE_DISCONNECTED: _WifiConnectionState.ValueType # 1
448
+ WIFI_STATE_INTERFACE_DISABLED: _WifiConnectionState.ValueType # 2
449
+ WIFI_STATE_INACTIVE: _WifiConnectionState.ValueType # 3
450
+ WIFI_STATE_SCANNING: _WifiConnectionState.ValueType # 4
451
+ WIFI_STATE_AUTHENTICATING: _WifiConnectionState.ValueType # 5
452
+ WIFI_STATE_ASSOCIATING: _WifiConnectionState.ValueType # 6
453
+ WIFI_STATE_ASSOCIATED: _WifiConnectionState.ValueType # 7
454
+ WIFI_STATE_4WAY_HANDSHAKE: _WifiConnectionState.ValueType # 8
455
+ WIFI_STATE_GROUP_HANDSHAKE: _WifiConnectionState.ValueType # 9
456
+ WIFI_STATE_WPA_COMPLETED: _WifiConnectionState.ValueType # 10
457
+
458
+ class WifiConnectionState(_WifiConnectionState, metaclass=_WifiConnectionStateEnumTypeWrapper): ...
459
+
460
+ WIFI_STATE_UNSPECIFIED: WifiConnectionState.ValueType # 0
461
+ WIFI_STATE_DISCONNECTED: WifiConnectionState.ValueType # 1
462
+ WIFI_STATE_INTERFACE_DISABLED: WifiConnectionState.ValueType # 2
463
+ WIFI_STATE_INACTIVE: WifiConnectionState.ValueType # 3
464
+ WIFI_STATE_SCANNING: WifiConnectionState.ValueType # 4
465
+ WIFI_STATE_AUTHENTICATING: WifiConnectionState.ValueType # 5
466
+ WIFI_STATE_ASSOCIATING: WifiConnectionState.ValueType # 6
467
+ WIFI_STATE_ASSOCIATED: WifiConnectionState.ValueType # 7
468
+ WIFI_STATE_4WAY_HANDSHAKE: WifiConnectionState.ValueType # 8
469
+ WIFI_STATE_GROUP_HANDSHAKE: WifiConnectionState.ValueType # 9
470
+ WIFI_STATE_WPA_COMPLETED: WifiConnectionState.ValueType # 10
471
+ Global___WifiConnectionState: _TypeAlias = WifiConnectionState # noqa: Y015
472
+
473
+ @_typing.final
474
+ class EntityMetadata(_message.Message):
475
+ """---------------------------------------------------------------------------
476
+ Common sub-messages — EntityMetadata (the "header" field on all HDS objects)
477
+ ---------------------------------------------------------------------------
478
+
479
+ All HDS objects share EntityMetadata at field 1 (JSON name: "header").
480
+ Wire-confirmed field layout from binary decode: object_id=1, created_ts=2, updated_ts=3, system_id=4.
481
+ """
482
+
483
+ DESCRIPTOR: _descriptor.Descriptor
484
+
485
+ OBJECT_ID_FIELD_NUMBER: _builtins.int
486
+ CREATED_TS_FIELD_NUMBER: _builtins.int
487
+ UPDATED_TS_FIELD_NUMBER: _builtins.int
488
+ SYSTEM_ID_FIELD_NUMBER: _builtins.int
489
+ object_id: _builtins.str
490
+ """JSON: "objectId" """
491
+ system_id: _builtins.str
492
+ """JSON: "systemId" — organization/system UUID"""
493
+ @_builtins.property
494
+ def created_ts(self) -> _timestamp_pb2.Timestamp: ...
495
+ @_builtins.property
496
+ def updated_ts(self) -> _timestamp_pb2.Timestamp:
497
+ """may be absent on some objects"""
498
+
499
+ def __init__(
500
+ self,
501
+ *,
502
+ object_id: _builtins.str = ...,
503
+ created_ts: _timestamp_pb2.Timestamp | None = ...,
504
+ updated_ts: _timestamp_pb2.Timestamp | None = ...,
505
+ system_id: _builtins.str = ...,
506
+ ) -> None: ...
507
+ _HasFieldArgType: _TypeAlias = _typing.Literal["created_ts", b"created_ts", "updated_ts", b"updated_ts"] # noqa: Y015
508
+ def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ...
509
+ _ClearFieldArgType: _TypeAlias = _typing.Literal["created_ts", b"created_ts", "object_id", b"object_id", "system_id", b"system_id", "updated_ts", b"updated_ts"] # noqa: Y015
510
+ def ClearField(self, field_name: _ClearFieldArgType) -> None: ...
511
+ def WhichOneof(self, oneof_group: _Never) -> None: ...
512
+
513
+ Global___EntityMetadata: _TypeAlias = EntityMetadata # noqa: Y015
514
+
515
+ @_typing.final
516
+ class LocationAttributes(_message.Message):
517
+ """---------------------------------------------------------------------------
518
+ Location
519
+ ---------------------------------------------------------------------------
520
+ """
521
+
522
+ DESCRIPTOR: _descriptor.Descriptor
523
+
524
+ UPDATED_TS_FIELD_NUMBER: _builtins.int
525
+ NAME_FIELD_NUMBER: _builtins.int
526
+ TZ_IDENTIFIER_FIELD_NUMBER: _builtins.int
527
+ name: _builtins.str
528
+ tz_identifier: _builtins.str
529
+ """JSON: "tzIdentifier" e.g. "America/Los_Angeles" """
530
+ @_builtins.property
531
+ def updated_ts(self) -> _timestamp_pb2.Timestamp: ...
532
+ def __init__(
533
+ self,
534
+ *,
535
+ updated_ts: _timestamp_pb2.Timestamp | None = ...,
536
+ name: _builtins.str = ...,
537
+ tz_identifier: _builtins.str = ...,
538
+ ) -> None: ...
539
+ _HasFieldArgType: _TypeAlias = _typing.Literal["updated_ts", b"updated_ts"] # noqa: Y015
540
+ def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ...
541
+ _ClearFieldArgType: _TypeAlias = _typing.Literal["name", b"name", "tz_identifier", b"tz_identifier", "updated_ts", b"updated_ts"] # noqa: Y015
542
+ def ClearField(self, field_name: _ClearFieldArgType) -> None: ...
543
+ def WhichOneof(self, oneof_group: _Never) -> None: ...
544
+
545
+ Global___LocationAttributes: _TypeAlias = LocationAttributes # noqa: Y015
546
+
547
+ @_typing.final
548
+ class LocationControls(_message.Message):
549
+ DESCRIPTOR: _descriptor.Descriptor
550
+
551
+ UPDATED_TS_FIELD_NUMBER: _builtins.int
552
+ SCHEDULE_EXECUTION_FIELD_NUMBER: _builtins.int
553
+ schedule_execution: Global___ScheduleExecution.ValueType
554
+ @_builtins.property
555
+ def updated_ts(self) -> _timestamp_pb2.Timestamp: ...
556
+ def __init__(
557
+ self,
558
+ *,
559
+ updated_ts: _timestamp_pb2.Timestamp | None = ...,
560
+ schedule_execution: Global___ScheduleExecution.ValueType = ...,
561
+ ) -> None: ...
562
+ _HasFieldArgType: _TypeAlias = _typing.Literal["updated_ts", b"updated_ts"] # noqa: Y015
563
+ def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ...
564
+ _ClearFieldArgType: _TypeAlias = _typing.Literal["schedule_execution", b"schedule_execution", "updated_ts", b"updated_ts"] # noqa: Y015
565
+ def ClearField(self, field_name: _ClearFieldArgType) -> None: ...
566
+ def WhichOneof(self, oneof_group: _Never) -> None: ...
567
+
568
+ Global___LocationControls: _TypeAlias = LocationControls # noqa: Y015
569
+
570
+ @_typing.final
571
+ class Location(_message.Message):
572
+ """Wire field layout confirmed: header=1, attributes=2, controls=3."""
573
+
574
+ DESCRIPTOR: _descriptor.Descriptor
575
+
576
+ HEADER_FIELD_NUMBER: _builtins.int
577
+ ATTRIBUTES_FIELD_NUMBER: _builtins.int
578
+ CONTROLS_FIELD_NUMBER: _builtins.int
579
+ @_builtins.property
580
+ def header(self) -> Global___EntityMetadata: ...
581
+ @_builtins.property
582
+ def attributes(self) -> Global___LocationAttributes: ...
583
+ @_builtins.property
584
+ def controls(self) -> Global___LocationControls: ...
585
+ def __init__(
586
+ self,
587
+ *,
588
+ header: Global___EntityMetadata | None = ...,
589
+ attributes: Global___LocationAttributes | None = ...,
590
+ controls: Global___LocationControls | None = ...,
591
+ ) -> None: ...
592
+ _HasFieldArgType: _TypeAlias = _typing.Literal["attributes", b"attributes", "controls", b"controls", "header", b"header"] # noqa: Y015
593
+ def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ...
594
+ _ClearFieldArgType: _TypeAlias = _typing.Literal["attributes", b"attributes", "controls", b"controls", "header", b"header"] # noqa: Y015
595
+ def ClearField(self, field_name: _ClearFieldArgType) -> None: ...
596
+ def WhichOneof(self, oneof_group: _Never) -> None: ...
597
+
598
+ Global___Location: _TypeAlias = Location # noqa: Y015
599
+
600
+ @_typing.final
601
+ class SpaceRelationships(_message.Message):
602
+ """---------------------------------------------------------------------------
603
+ Space
604
+ ---------------------------------------------------------------------------
605
+
606
+ Space relationships. From quilt_office.proto.json: customerAccountId at f1, updatedTs.
607
+ parentSpaceId (root space has none) maps to some field; using f2 for updatedTs, f3 for parentSpaceId.
608
+ Wire-confirmed: f3 = Timestamp (updated_ts). customer_account_id and parent_space_id
609
+ are at f1 and f2 respectively (absent/empty in root spaces).
610
+ """
611
+
612
+ DESCRIPTOR: _descriptor.Descriptor
613
+
614
+ CUSTOMER_ACCOUNT_ID_FIELD_NUMBER: _builtins.int
615
+ PARENT_SPACE_ID_FIELD_NUMBER: _builtins.int
616
+ UPDATED_TS_FIELD_NUMBER: _builtins.int
617
+ customer_account_id: _builtins.str
618
+ """JSON: "customerAccountId" """
619
+ parent_space_id: _builtins.str
620
+ """empty for root space; JSON: "parentSpaceId" """
621
+ @_builtins.property
622
+ def updated_ts(self) -> _timestamp_pb2.Timestamp: ...
623
+ def __init__(
624
+ self,
625
+ *,
626
+ customer_account_id: _builtins.str = ...,
627
+ parent_space_id: _builtins.str = ...,
628
+ updated_ts: _timestamp_pb2.Timestamp | None = ...,
629
+ ) -> None: ...
630
+ _HasFieldArgType: _TypeAlias = _typing.Literal["updated_ts", b"updated_ts"] # noqa: Y015
631
+ def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ...
632
+ _ClearFieldArgType: _TypeAlias = _typing.Literal["customer_account_id", b"customer_account_id", "parent_space_id", b"parent_space_id", "updated_ts", b"updated_ts"] # noqa: Y015
633
+ def ClearField(self, field_name: _ClearFieldArgType) -> None: ...
634
+ def WhichOneof(self, oneof_group: _Never) -> None: ...
635
+
636
+ Global___SpaceRelationships: _TypeAlias = SpaceRelationships # noqa: Y015
637
+
638
+ @_typing.final
639
+ class SpaceSettings(_message.Message):
640
+ """Wire-confirmed SpaceSettings fields (from field_3.f3):
641
+ f1=name, f2=description, f3=updated_ts, f4=timezone, f5=OccupancyMode,
642
+ f6=HvacControllerType, f7=occupied_timeout_s(180.0), f8=unoccupied_timeout_s(1200.0)
643
+ APK-confirmed (C5149oM.java): fields 1–8 exactly.
644
+ f9=SafetyHeatingMode (freeze protection): KMP-confirmed in SpaceSettings.safetyHeating,
645
+ field number unconfirmed (not in APK build; added post-release, assumed f9).
646
+ """
647
+
648
+ DESCRIPTOR: _descriptor.Descriptor
649
+
650
+ NAME_FIELD_NUMBER: _builtins.int
651
+ DESCRIPTION_FIELD_NUMBER: _builtins.int
652
+ UPDATED_TS_FIELD_NUMBER: _builtins.int
653
+ TIMEZONE_FIELD_NUMBER: _builtins.int
654
+ OCCUPANCY_FIELD_NUMBER: _builtins.int
655
+ HVAC_CONTROLLER_TYPE_FIELD_NUMBER: _builtins.int
656
+ OCCUPIED_TIMEOUT_S_FIELD_NUMBER: _builtins.int
657
+ UNOCCUPIED_TIMEOUT_S_FIELD_NUMBER: _builtins.int
658
+ SAFETY_HEATING_FIELD_NUMBER: _builtins.int
659
+ name: _builtins.str
660
+ """wire-confirmed: f1"""
661
+ description: _builtins.str
662
+ """wire-confirmed: f2"""
663
+ timezone: _builtins.str
664
+ """wire-confirmed: f4 e.g. "America/Los_Angeles" """
665
+ occupancy: Global___OccupancyMode.ValueType
666
+ """wire-confirmed: f5 — ENABLED turns on auto-away/return"""
667
+ hvac_controller_type: Global___HvacControllerType.ValueType
668
+ """wire-confirmed: f6"""
669
+ occupied_timeout_s: _builtins.float
670
+ """seconds of presence before "returned"; default 180s (3 min)"""
671
+ unoccupied_timeout_s: _builtins.float
672
+ """seconds of no-presence before "away"; default 1200s (20 min)"""
673
+ safety_heating: Global___SafetyHeatingMode.ValueType
674
+ """freeze protection; UNSPECIFIED treated as ENABLED; field# unconfirmed"""
675
+ @_builtins.property
676
+ def updated_ts(self) -> _timestamp_pb2.Timestamp:
677
+ """wire-confirmed: f3"""
678
+
679
+ def __init__(
680
+ self,
681
+ *,
682
+ name: _builtins.str = ...,
683
+ description: _builtins.str = ...,
684
+ updated_ts: _timestamp_pb2.Timestamp | None = ...,
685
+ timezone: _builtins.str = ...,
686
+ occupancy: Global___OccupancyMode.ValueType = ...,
687
+ hvac_controller_type: Global___HvacControllerType.ValueType = ...,
688
+ occupied_timeout_s: _builtins.float = ...,
689
+ unoccupied_timeout_s: _builtins.float = ...,
690
+ safety_heating: Global___SafetyHeatingMode.ValueType = ...,
691
+ ) -> None: ...
692
+ _HasFieldArgType: _TypeAlias = _typing.Literal["updated_ts", b"updated_ts"] # noqa: Y015
693
+ def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ...
694
+ _ClearFieldArgType: _TypeAlias = _typing.Literal["description", b"description", "hvac_controller_type", b"hvac_controller_type", "name", b"name", "occupancy", b"occupancy", "occupied_timeout_s", b"occupied_timeout_s", "safety_heating", b"safety_heating", "timezone", b"timezone", "unoccupied_timeout_s", b"unoccupied_timeout_s", "updated_ts", b"updated_ts"] # noqa: Y015
695
+ def ClearField(self, field_name: _ClearFieldArgType) -> None: ...
696
+ def WhichOneof(self, oneof_group: _Never) -> None: ...
697
+
698
+ Global___SpaceSettings: _TypeAlias = SpaceSettings # noqa: Y015
699
+
700
+ @_typing.final
701
+ class SpaceControls(_message.Message):
702
+ """Wire-confirmed from UpdateSpace binary (hex decode):
703
+ f1=hvac_mode(varint; COOL=2, HEAT=3 per HVACEnums.kt ordinals),
704
+ f2=temperature_setpoint_c(float),
705
+ f3=updated_ts(Timestamp), f4=cooling_setpoint_c(float/22.777°C),
706
+ f5=heating_setpoint_c(float/20.555°C), f6=absent,
707
+ f7=boost_mode(varint/0=UNSPECIFIED), f8=comfort_setting_override(varint/2=UNTIL_NEXT_SCHEDULE),
708
+ f9=comfort_setting_id_string(string/UUID)
709
+ cooling is at f4, heating is at f5. f2 mirrors whichever setpoint is active (heating in HEAT mode).
710
+ """
711
+
712
+ DESCRIPTOR: _descriptor.Descriptor
713
+
714
+ HVAC_MODE_FIELD_NUMBER: _builtins.int
715
+ TEMPERATURE_SETPOINT_C_FIELD_NUMBER: _builtins.int
716
+ UPDATED_TS_FIELD_NUMBER: _builtins.int
717
+ COOLING_TEMPERATURE_SETPOINT_C_FIELD_NUMBER: _builtins.int
718
+ HEATING_TEMPERATURE_SETPOINT_C_FIELD_NUMBER: _builtins.int
719
+ COMFORT_SETTING_ID_FIELD_NUMBER: _builtins.int
720
+ BOOST_MODE_FIELD_NUMBER: _builtins.int
721
+ COMFORT_SETTING_OVERRIDE_FIELD_NUMBER: _builtins.int
722
+ COMFORT_SETTING_ID_STRING_FIELD_NUMBER: _builtins.int
723
+ hvac_mode: Global___HVACMode.ValueType
724
+ """wire-confirmed: f1 (varint), COOL=3"""
725
+ temperature_setpoint_c: _builtins.float
726
+ """wire-confirmed: f2 (float, direct °C)"""
727
+ cooling_temperature_setpoint_c: _builtins.float
728
+ """wire-confirmed: f4 (cooling at 4, not heating!)"""
729
+ heating_temperature_setpoint_c: _builtins.float
730
+ """wire-confirmed: f5 (heating at 5, not cooling!)"""
731
+ comfort_setting_id: _builtins.str
732
+ """Android proto: COMFORT_SETTING_ID_FIELD_NUMBER=6"""
733
+ boost_mode: Global___BoostMode.ValueType
734
+ """wire-confirmed: f7 (varint, 0=UNSPECIFIED)"""
735
+ comfort_setting_override: Global___ComfortSettingOverride.ValueType
736
+ """wire-confirmed: f8 (varint, 2=UNTIL_NEXT_SCHEDULE)"""
737
+ comfort_setting_id_string: _builtins.str
738
+ """wire-confirmed: f9 (UUID string)"""
739
+ @_builtins.property
740
+ def updated_ts(self) -> _timestamp_pb2.Timestamp:
741
+ """wire-confirmed: f3"""
742
+
743
+ def __init__(
744
+ self,
745
+ *,
746
+ hvac_mode: Global___HVACMode.ValueType = ...,
747
+ temperature_setpoint_c: _builtins.float = ...,
748
+ updated_ts: _timestamp_pb2.Timestamp | None = ...,
749
+ cooling_temperature_setpoint_c: _builtins.float = ...,
750
+ heating_temperature_setpoint_c: _builtins.float = ...,
751
+ comfort_setting_id: _builtins.str = ...,
752
+ boost_mode: Global___BoostMode.ValueType = ...,
753
+ comfort_setting_override: Global___ComfortSettingOverride.ValueType = ...,
754
+ comfort_setting_id_string: _builtins.str = ...,
755
+ ) -> None: ...
756
+ _HasFieldArgType: _TypeAlias = _typing.Literal["updated_ts", b"updated_ts"] # noqa: Y015
757
+ def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ...
758
+ _ClearFieldArgType: _TypeAlias = _typing.Literal["boost_mode", b"boost_mode", "comfort_setting_id", b"comfort_setting_id", "comfort_setting_id_string", b"comfort_setting_id_string", "comfort_setting_override", b"comfort_setting_override", "cooling_temperature_setpoint_c", b"cooling_temperature_setpoint_c", "heating_temperature_setpoint_c", b"heating_temperature_setpoint_c", "hvac_mode", b"hvac_mode", "temperature_setpoint_c", b"temperature_setpoint_c", "updated_ts", b"updated_ts"] # noqa: Y015
759
+ def ClearField(self, field_name: _ClearFieldArgType) -> None: ...
760
+ def WhichOneof(self, oneof_group: _Never) -> None: ...
761
+
762
+ Global___SpaceControls: _TypeAlias = SpaceControls # noqa: Y015
763
+
764
+ @_typing.final
765
+ class SpaceState(_message.Message):
766
+ """SpaceState wire-confirmed from UpdateSpace response (field_5):
767
+ f1=updated_ts, f2=setpoint_c(float), f3=ambient_temperature_c(21.7°C), f4=HVACState, f5=comfort_setting_id
768
+ """
769
+
770
+ DESCRIPTOR: _descriptor.Descriptor
771
+
772
+ UPDATED_TS_FIELD_NUMBER: _builtins.int
773
+ SETPOINT_TEMPERATURE_C_FIELD_NUMBER: _builtins.int
774
+ AMBIENT_TEMPERATURE_C_FIELD_NUMBER: _builtins.int
775
+ HVAC_STATE_FIELD_NUMBER: _builtins.int
776
+ COMFORT_SETTING_ID_FIELD_NUMBER: _builtins.int
777
+ setpoint_temperature_c: _builtins.float
778
+ """wire-confirmed: f2"""
779
+ ambient_temperature_c: _builtins.float
780
+ """wire-confirmed: f3 (observed 21.7°C)"""
781
+ hvac_state: Global___HVACState.ValueType
782
+ """wire-confirmed: f4"""
783
+ comfort_setting_id: _builtins.str
784
+ """wire-confirmed: f5"""
785
+ @_builtins.property
786
+ def updated_ts(self) -> _timestamp_pb2.Timestamp:
787
+ """wire-confirmed: f1"""
788
+
789
+ def __init__(
790
+ self,
791
+ *,
792
+ updated_ts: _timestamp_pb2.Timestamp | None = ...,
793
+ setpoint_temperature_c: _builtins.float = ...,
794
+ ambient_temperature_c: _builtins.float = ...,
795
+ hvac_state: Global___HVACState.ValueType = ...,
796
+ comfort_setting_id: _builtins.str = ...,
797
+ ) -> None: ...
798
+ _HasFieldArgType: _TypeAlias = _typing.Literal["updated_ts", b"updated_ts"] # noqa: Y015
799
+ def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ...
800
+ _ClearFieldArgType: _TypeAlias = _typing.Literal["ambient_temperature_c", b"ambient_temperature_c", "comfort_setting_id", b"comfort_setting_id", "hvac_state", b"hvac_state", "setpoint_temperature_c", b"setpoint_temperature_c", "updated_ts", b"updated_ts"] # noqa: Y015
801
+ def ClearField(self, field_name: _ClearFieldArgType) -> None: ...
802
+ def WhichOneof(self, oneof_group: _Never) -> None: ...
803
+
804
+ Global___SpaceState: _TypeAlias = SpaceState # noqa: Y015
805
+
806
+ @_typing.final
807
+ class Space(_message.Message):
808
+ """Wire-confirmed Space field positions (from HomeDatastoreSystem field_3 items):
809
+ f1=EntityMetadata(header), f2=relationships, f3=settings, f4=controls, f5=state
810
+ """
811
+
812
+ DESCRIPTOR: _descriptor.Descriptor
813
+
814
+ HEADER_FIELD_NUMBER: _builtins.int
815
+ RELATIONSHIPS_FIELD_NUMBER: _builtins.int
816
+ SETTINGS_FIELD_NUMBER: _builtins.int
817
+ CONTROLS_FIELD_NUMBER: _builtins.int
818
+ STATE_FIELD_NUMBER: _builtins.int
819
+ @_builtins.property
820
+ def header(self) -> Global___EntityMetadata:
821
+ """wire-confirmed: f1"""
822
+
823
+ @_builtins.property
824
+ def relationships(self) -> Global___SpaceRelationships:
825
+ """wire-confirmed: f2"""
826
+
827
+ @_builtins.property
828
+ def settings(self) -> Global___SpaceSettings:
829
+ """wire-confirmed: f3 (name, timezone, timeouts)"""
830
+
831
+ @_builtins.property
832
+ def controls(self) -> Global___SpaceControls:
833
+ """wire-confirmed: f4 (hvac_mode, setpoints)"""
834
+
835
+ @_builtins.property
836
+ def state(self) -> Global___SpaceState:
837
+ """wire-confirmed: f5"""
838
+
839
+ def __init__(
840
+ self,
841
+ *,
842
+ header: Global___EntityMetadata | None = ...,
843
+ relationships: Global___SpaceRelationships | None = ...,
844
+ settings: Global___SpaceSettings | None = ...,
845
+ controls: Global___SpaceControls | None = ...,
846
+ state: Global___SpaceState | None = ...,
847
+ ) -> None: ...
848
+ _HasFieldArgType: _TypeAlias = _typing.Literal["controls", b"controls", "header", b"header", "relationships", b"relationships", "settings", b"settings", "state", b"state"] # noqa: Y015
849
+ def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ...
850
+ _ClearFieldArgType: _TypeAlias = _typing.Literal["controls", b"controls", "header", b"header", "relationships", b"relationships", "settings", b"settings", "state", b"state"] # noqa: Y015
851
+ def ClearField(self, field_name: _ClearFieldArgType) -> None: ...
852
+ def WhichOneof(self, oneof_group: _Never) -> None: ...
853
+
854
+ Global___Space: _TypeAlias = Space # noqa: Y015
855
+
856
+ @_typing.final
857
+ class IndoorUnitRelationships(_message.Message):
858
+ """---------------------------------------------------------------------------
859
+ Indoor Unit
860
+ ---------------------------------------------------------------------------
861
+
862
+ Wire-confirmed from quilt_office.proto.json and binary decode:
863
+ customerAccountId=1, spaceId=2, outdoorUnitId=3, hardwareId=4, quiltSmartModuleId=5, updatedTs=6.
864
+ NOTE: updated_ts is at f6 (not f1 as previously assumed).
865
+ """
866
+
867
+ DESCRIPTOR: _descriptor.Descriptor
868
+
869
+ CUSTOMER_ACCOUNT_ID_FIELD_NUMBER: _builtins.int
870
+ SPACE_ID_FIELD_NUMBER: _builtins.int
871
+ OUTDOOR_UNIT_ID_FIELD_NUMBER: _builtins.int
872
+ HARDWARE_ID_FIELD_NUMBER: _builtins.int
873
+ QUILT_SMART_MODULE_ID_FIELD_NUMBER: _builtins.int
874
+ UPDATED_TS_FIELD_NUMBER: _builtins.int
875
+ FIRMWARE_UPDATE_INFO_ID_FIELD_NUMBER: _builtins.int
876
+ customer_account_id: _builtins.str
877
+ """JSON: "customerAccountId" """
878
+ space_id: _builtins.str
879
+ outdoor_unit_id: _builtins.str
880
+ hardware_id: _builtins.str
881
+ quilt_smart_module_id: _builtins.str
882
+ firmware_update_info_id: _builtins.str
883
+ @_builtins.property
884
+ def updated_ts(self) -> _timestamp_pb2.Timestamp: ...
885
+ def __init__(
886
+ self,
887
+ *,
888
+ customer_account_id: _builtins.str = ...,
889
+ space_id: _builtins.str = ...,
890
+ outdoor_unit_id: _builtins.str = ...,
891
+ hardware_id: _builtins.str = ...,
892
+ quilt_smart_module_id: _builtins.str = ...,
893
+ updated_ts: _timestamp_pb2.Timestamp | None = ...,
894
+ firmware_update_info_id: _builtins.str = ...,
895
+ ) -> None: ...
896
+ _HasFieldArgType: _TypeAlias = _typing.Literal["updated_ts", b"updated_ts"] # noqa: Y015
897
+ def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ...
898
+ _ClearFieldArgType: _TypeAlias = _typing.Literal["customer_account_id", b"customer_account_id", "firmware_update_info_id", b"firmware_update_info_id", "hardware_id", b"hardware_id", "outdoor_unit_id", b"outdoor_unit_id", "quilt_smart_module_id", b"quilt_smart_module_id", "space_id", b"space_id", "updated_ts", b"updated_ts"] # noqa: Y015
899
+ def ClearField(self, field_name: _ClearFieldArgType) -> None: ...
900
+ def WhichOneof(self, oneof_group: _Never) -> None: ...
901
+
902
+ Global___IndoorUnitRelationships: _TypeAlias = IndoorUnitRelationships # noqa: Y015
903
+
904
+ @_typing.final
905
+ class IndoorUnitSettings(_message.Message):
906
+ """Wire-confirmed from binary decode of IndoorUnit.f3:
907
+ name=1, description=2, lightBrightnessDefaultPercent=3(float), updatedTs=4,
908
+ presenceFenceLeftM=5, presenceFenceRightM=6, presenceFenceForwardM=7,
909
+ radarSensorDistanceFromFloorM=8.
910
+ NOTE: updated_ts at f4 (not f1 as previously assumed).
911
+ """
912
+
913
+ DESCRIPTOR: _descriptor.Descriptor
914
+
915
+ NAME_FIELD_NUMBER: _builtins.int
916
+ DESCRIPTION_FIELD_NUMBER: _builtins.int
917
+ LIGHT_BRIGHTNESS_DEFAULT_PERCENT_FIELD_NUMBER: _builtins.int
918
+ UPDATED_TS_FIELD_NUMBER: _builtins.int
919
+ PRESENCE_FENCE_LEFT_M_FIELD_NUMBER: _builtins.int
920
+ PRESENCE_FENCE_RIGHT_M_FIELD_NUMBER: _builtins.int
921
+ PRESENCE_FENCE_FORWARD_M_FIELD_NUMBER: _builtins.int
922
+ RADAR_SENSOR_DISTANCE_FROM_FLOOR_M_FIELD_NUMBER: _builtins.int
923
+ name: _builtins.str
924
+ description: _builtins.str
925
+ light_brightness_default_percent: _builtins.float
926
+ """JSON: "lightBrightnessDefaultPercent" """
927
+ presence_fence_left_m: _builtins.float
928
+ presence_fence_right_m: _builtins.float
929
+ presence_fence_forward_m: _builtins.float
930
+ radar_sensor_distance_from_floor_m: _builtins.float
931
+ @_builtins.property
932
+ def updated_ts(self) -> _timestamp_pb2.Timestamp: ...
933
+ def __init__(
934
+ self,
935
+ *,
936
+ name: _builtins.str = ...,
937
+ description: _builtins.str = ...,
938
+ light_brightness_default_percent: _builtins.float = ...,
939
+ updated_ts: _timestamp_pb2.Timestamp | None = ...,
940
+ presence_fence_left_m: _builtins.float = ...,
941
+ presence_fence_right_m: _builtins.float = ...,
942
+ presence_fence_forward_m: _builtins.float = ...,
943
+ radar_sensor_distance_from_floor_m: _builtins.float = ...,
944
+ ) -> None: ...
945
+ _HasFieldArgType: _TypeAlias = _typing.Literal["updated_ts", b"updated_ts"] # noqa: Y015
946
+ def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ...
947
+ _ClearFieldArgType: _TypeAlias = _typing.Literal["description", b"description", "light_brightness_default_percent", b"light_brightness_default_percent", "name", b"name", "presence_fence_forward_m", b"presence_fence_forward_m", "presence_fence_left_m", b"presence_fence_left_m", "presence_fence_right_m", b"presence_fence_right_m", "radar_sensor_distance_from_floor_m", b"radar_sensor_distance_from_floor_m", "updated_ts", b"updated_ts"] # noqa: Y015
948
+ def ClearField(self, field_name: _ClearFieldArgType) -> None: ...
949
+ def WhichOneof(self, oneof_group: _Never) -> None: ...
950
+
951
+ Global___IndoorUnitSettings: _TypeAlias = IndoorUnitSettings # noqa: Y015
952
+
953
+ @_typing.final
954
+ class IndoorUnitControls(_message.Message):
955
+ """Wire-confirmed flat field layout from binary decode of IndoorUnit.f4 (40 bytes):
956
+ f1,f2=absent; f3=ledColorCode(varint/uint32), f4=ledColorBrightnessPercent(float),
957
+ f5=fanSpeedMode(varint), f6=fanSpeedPercent(float), f7=updatedTs(Timestamp),
958
+ f8,f9=absent; f10=louverMode(varint), f11=louverFixedPosition(float),
959
+ f12=lightState(varint), f13=lightAnimation(varint).
960
+ NOTE: These are FLAT fields, NOT nested sub-messages.
961
+ """
962
+
963
+ DESCRIPTOR: _descriptor.Descriptor
964
+
965
+ LED_COLOR_CODE_FIELD_NUMBER: _builtins.int
966
+ LED_COLOR_BRIGHTNESS_PERCENT_FIELD_NUMBER: _builtins.int
967
+ FAN_SPEED_MODE_FIELD_NUMBER: _builtins.int
968
+ FAN_SPEED_PERCENT_FIELD_NUMBER: _builtins.int
969
+ UPDATED_TS_FIELD_NUMBER: _builtins.int
970
+ LOUVER_MODE_FIELD_NUMBER: _builtins.int
971
+ LOUVER_FIXED_POSITION_FIELD_NUMBER: _builtins.int
972
+ LED_ANIMATION_FIELD_NUMBER: _builtins.int
973
+ LED_STATE_FIELD_NUMBER: _builtins.int
974
+ led_color_code: _builtins.int
975
+ """f1, f2 absent in Android DEX (C2523cK.java)
976
+ RGBW packed uint32
977
+ """
978
+ led_color_brightness_percent: _builtins.float
979
+ """stored brightness 0.0–1.0; preserved when led_state=OFF"""
980
+ fan_speed_mode: Global___FanSpeedMode.ValueType
981
+ fan_speed_percent: _builtins.float
982
+ """0.0–1.0"""
983
+ louver_mode: Global___IndoorUnitLouverMode.ValueType
984
+ """f8, f9: uuid-string field confirmed at f9 in captures; purpose TBD"""
985
+ louver_fixed_position: _builtins.float
986
+ """degrees, used when louver_mode=FIXED"""
987
+ led_animation: Global___LightAnimation.ValueType
988
+ """confirmed Android C2523cK: LED_ANIMATION_FIELD_NUMBER=12"""
989
+ led_state: Global___LightState.ValueType
990
+ """wire-confirmed f13: UNSPECIFIED=0,ON=1,OFF=2"""
991
+ @_builtins.property
992
+ def updated_ts(self) -> _timestamp_pb2.Timestamp: ...
993
+ def __init__(
994
+ self,
995
+ *,
996
+ led_color_code: _builtins.int = ...,
997
+ led_color_brightness_percent: _builtins.float = ...,
998
+ fan_speed_mode: Global___FanSpeedMode.ValueType = ...,
999
+ fan_speed_percent: _builtins.float = ...,
1000
+ updated_ts: _timestamp_pb2.Timestamp | None = ...,
1001
+ louver_mode: Global___IndoorUnitLouverMode.ValueType = ...,
1002
+ louver_fixed_position: _builtins.float = ...,
1003
+ led_animation: Global___LightAnimation.ValueType = ...,
1004
+ led_state: Global___LightState.ValueType = ...,
1005
+ ) -> None: ...
1006
+ _HasFieldArgType: _TypeAlias = _typing.Literal["updated_ts", b"updated_ts"] # noqa: Y015
1007
+ def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ...
1008
+ _ClearFieldArgType: _TypeAlias = _typing.Literal["fan_speed_mode", b"fan_speed_mode", "fan_speed_percent", b"fan_speed_percent", "led_animation", b"led_animation", "led_color_brightness_percent", b"led_color_brightness_percent", "led_color_code", b"led_color_code", "led_state", b"led_state", "louver_fixed_position", b"louver_fixed_position", "louver_mode", b"louver_mode", "updated_ts", b"updated_ts"] # noqa: Y015
1009
+ def ClearField(self, field_name: _ClearFieldArgType) -> None: ...
1010
+ def WhichOneof(self, oneof_group: _Never) -> None: ...
1011
+
1012
+ Global___IndoorUnitControls: _TypeAlias = IndoorUnitControls # noqa: Y015
1013
+
1014
+ @_typing.final
1015
+ class IndoorUnitState(_message.Message):
1016
+ """Android-confirmed field layout (CK.java):
1017
+ 1=updated_ts, 2=temperature_setpoint_c, 3=ambient_temperature_c, 4=hvac_state,
1018
+ 5=fan_speed_setpoint_rpm, 6=fan_speed_rpm, 7=light_brightness_percent,
1019
+ 8=presence_detection_level, 9=inlet_temperature_c, 10=outlet_temperature_c,
1020
+ 11=ambient_humidity_percent, 12=hvac_mode, 13=calculated_ambient_temperature_c,
1021
+ 14=louver_angle_up_down_degrees
1022
+ Note: KMP IndoorUnit.kt adds `ledState: LightState` to IndoorUnitState, but this
1023
+ field is NOT in the APK (CK.java) or on the wire. The led_state field (f13) lives
1024
+ in IndoorUnitControls (confirmed), not IndoorUnitState.
1025
+ """
1026
+
1027
+ DESCRIPTOR: _descriptor.Descriptor
1028
+
1029
+ UPDATED_TS_FIELD_NUMBER: _builtins.int
1030
+ TEMPERATURE_SETPOINT_C_FIELD_NUMBER: _builtins.int
1031
+ AMBIENT_TEMPERATURE_C_FIELD_NUMBER: _builtins.int
1032
+ HVAC_STATE_FIELD_NUMBER: _builtins.int
1033
+ FAN_SPEED_SETPOINT_RPM_FIELD_NUMBER: _builtins.int
1034
+ FAN_SPEED_RPM_FIELD_NUMBER: _builtins.int
1035
+ LIGHT_BRIGHTNESS_PERCENT_FIELD_NUMBER: _builtins.int
1036
+ PRESENCE_DETECTION_LEVEL_FIELD_NUMBER: _builtins.int
1037
+ INLET_TEMPERATURE_C_FIELD_NUMBER: _builtins.int
1038
+ OUTLET_TEMPERATURE_C_FIELD_NUMBER: _builtins.int
1039
+ AMBIENT_HUMIDITY_PERCENT_FIELD_NUMBER: _builtins.int
1040
+ HVAC_MODE_FIELD_NUMBER: _builtins.int
1041
+ CALCULATED_AMBIENT_TEMPERATURE_C_FIELD_NUMBER: _builtins.int
1042
+ LOUVER_ANGLE_UP_DOWN_DEGREES_FIELD_NUMBER: _builtins.int
1043
+ temperature_setpoint_c: _builtins.float
1044
+ ambient_temperature_c: _builtins.float
1045
+ hvac_state: Global___HVACState.ValueType
1046
+ fan_speed_setpoint_rpm: _builtins.float
1047
+ fan_speed_rpm: _builtins.float
1048
+ light_brightness_percent: _builtins.float
1049
+ """device-observed actual brightness (0.0–1.0)"""
1050
+ presence_detection_level: _builtins.float
1051
+ inlet_temperature_c: _builtins.float
1052
+ outlet_temperature_c: _builtins.float
1053
+ ambient_humidity_percent: _builtins.float
1054
+ hvac_mode: Global___HVACMode.ValueType
1055
+ calculated_ambient_temperature_c: _builtins.float
1056
+ louver_angle_up_down_degrees: _builtins.float
1057
+ """fields 15+ reserved for future ledState enum (KMP-only, not yet deployed)"""
1058
+ @_builtins.property
1059
+ def updated_ts(self) -> _timestamp_pb2.Timestamp: ...
1060
+ def __init__(
1061
+ self,
1062
+ *,
1063
+ updated_ts: _timestamp_pb2.Timestamp | None = ...,
1064
+ temperature_setpoint_c: _builtins.float = ...,
1065
+ ambient_temperature_c: _builtins.float = ...,
1066
+ hvac_state: Global___HVACState.ValueType = ...,
1067
+ fan_speed_setpoint_rpm: _builtins.float = ...,
1068
+ fan_speed_rpm: _builtins.float = ...,
1069
+ light_brightness_percent: _builtins.float = ...,
1070
+ presence_detection_level: _builtins.float = ...,
1071
+ inlet_temperature_c: _builtins.float = ...,
1072
+ outlet_temperature_c: _builtins.float = ...,
1073
+ ambient_humidity_percent: _builtins.float = ...,
1074
+ hvac_mode: Global___HVACMode.ValueType = ...,
1075
+ calculated_ambient_temperature_c: _builtins.float = ...,
1076
+ louver_angle_up_down_degrees: _builtins.float = ...,
1077
+ ) -> None: ...
1078
+ _HasFieldArgType: _TypeAlias = _typing.Literal["updated_ts", b"updated_ts"] # noqa: Y015
1079
+ def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ...
1080
+ _ClearFieldArgType: _TypeAlias = _typing.Literal["ambient_humidity_percent", b"ambient_humidity_percent", "ambient_temperature_c", b"ambient_temperature_c", "calculated_ambient_temperature_c", b"calculated_ambient_temperature_c", "fan_speed_rpm", b"fan_speed_rpm", "fan_speed_setpoint_rpm", b"fan_speed_setpoint_rpm", "hvac_mode", b"hvac_mode", "hvac_state", b"hvac_state", "inlet_temperature_c", b"inlet_temperature_c", "light_brightness_percent", b"light_brightness_percent", "louver_angle_up_down_degrees", b"louver_angle_up_down_degrees", "outlet_temperature_c", b"outlet_temperature_c", "presence_detection_level", b"presence_detection_level", "temperature_setpoint_c", b"temperature_setpoint_c", "updated_ts", b"updated_ts"] # noqa: Y015
1081
+ def ClearField(self, field_name: _ClearFieldArgType) -> None: ...
1082
+ def WhichOneof(self, oneof_group: _Never) -> None: ...
1083
+
1084
+ Global___IndoorUnitState: _TypeAlias = IndoorUnitState # noqa: Y015
1085
+
1086
+ @_typing.final
1087
+ class IndoorUnitConditions(_message.Message):
1088
+ DESCRIPTOR: _descriptor.Descriptor
1089
+
1090
+ UPDATED_TS_FIELD_NUMBER: _builtins.int
1091
+ MODE_CONFLICT_FIELD_NUMBER: _builtins.int
1092
+ ANTI_COLD_WIND_FIELD_NUMBER: _builtins.int
1093
+ ABNORMAL_OUTDOOR_AIR_TEMPERATURE_FIELD_NUMBER: _builtins.int
1094
+ HVAC_MODE_SWITCHING_DELAY_FIELD_NUMBER: _builtins.int
1095
+ DEFROST_CYCLE_FIELD_NUMBER: _builtins.int
1096
+ SAFETY_HEATING_FIELD_NUMBER: _builtins.int
1097
+ OIL_RETURN_FIELD_NUMBER: _builtins.int
1098
+ MODBUS_COMMUNICATION_ERROR_FIELD_NUMBER: _builtins.int
1099
+ COIL_PREHEAT_FIELD_NUMBER: _builtins.int
1100
+ MODE_CONFLICT_AVOIDANCE_FIELD_NUMBER: _builtins.int
1101
+ OUTDOOR_UNIT_COMMUNICATION_ERROR_FIELD_NUMBER: _builtins.int
1102
+ mode_conflict: Global___ConditionState.ValueType
1103
+ anti_cold_wind: Global___ConditionState.ValueType
1104
+ abnormal_outdoor_air_temperature: Global___ConditionState.ValueType
1105
+ hvac_mode_switching_delay: Global___ConditionState.ValueType
1106
+ defrost_cycle: Global___ConditionState.ValueType
1107
+ safety_heating: Global___ConditionState.ValueType
1108
+ oil_return: Global___ConditionState.ValueType
1109
+ modbus_communication_error: Global___ConditionState.ValueType
1110
+ coil_preheat: Global___ConditionState.ValueType
1111
+ mode_conflict_avoidance: Global___ConditionState.ValueType
1112
+ outdoor_unit_communication_error: Global___ConditionState.ValueType
1113
+ @_builtins.property
1114
+ def updated_ts(self) -> _timestamp_pb2.Timestamp: ...
1115
+ def __init__(
1116
+ self,
1117
+ *,
1118
+ updated_ts: _timestamp_pb2.Timestamp | None = ...,
1119
+ mode_conflict: Global___ConditionState.ValueType = ...,
1120
+ anti_cold_wind: Global___ConditionState.ValueType = ...,
1121
+ abnormal_outdoor_air_temperature: Global___ConditionState.ValueType = ...,
1122
+ hvac_mode_switching_delay: Global___ConditionState.ValueType = ...,
1123
+ defrost_cycle: Global___ConditionState.ValueType = ...,
1124
+ safety_heating: Global___ConditionState.ValueType = ...,
1125
+ oil_return: Global___ConditionState.ValueType = ...,
1126
+ modbus_communication_error: Global___ConditionState.ValueType = ...,
1127
+ coil_preheat: Global___ConditionState.ValueType = ...,
1128
+ mode_conflict_avoidance: Global___ConditionState.ValueType = ...,
1129
+ outdoor_unit_communication_error: Global___ConditionState.ValueType = ...,
1130
+ ) -> None: ...
1131
+ _HasFieldArgType: _TypeAlias = _typing.Literal["updated_ts", b"updated_ts"] # noqa: Y015
1132
+ def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ...
1133
+ _ClearFieldArgType: _TypeAlias = _typing.Literal["abnormal_outdoor_air_temperature", b"abnormal_outdoor_air_temperature", "anti_cold_wind", b"anti_cold_wind", "coil_preheat", b"coil_preheat", "defrost_cycle", b"defrost_cycle", "hvac_mode_switching_delay", b"hvac_mode_switching_delay", "modbus_communication_error", b"modbus_communication_error", "mode_conflict", b"mode_conflict", "mode_conflict_avoidance", b"mode_conflict_avoidance", "oil_return", b"oil_return", "outdoor_unit_communication_error", b"outdoor_unit_communication_error", "safety_heating", b"safety_heating", "updated_ts", b"updated_ts"] # noqa: Y015
1134
+ def ClearField(self, field_name: _ClearFieldArgType) -> None: ...
1135
+ def WhichOneof(self, oneof_group: _Never) -> None: ...
1136
+
1137
+ Global___IndoorUnitConditions: _TypeAlias = IndoorUnitConditions # noqa: Y015
1138
+
1139
+ @_typing.final
1140
+ class IndoorUnitPresenceState(_message.Message):
1141
+ DESCRIPTOR: _descriptor.Descriptor
1142
+
1143
+ UPDATED_TS_FIELD_NUMBER: _builtins.int
1144
+ SENSOR0_PRESENCE_FIELD_NUMBER: _builtins.int
1145
+ SENSOR1_PRESENCE_FIELD_NUMBER: _builtins.int
1146
+ sensor0_presence: Global___Presence.ValueType
1147
+ sensor1_presence: Global___Presence.ValueType
1148
+ @_builtins.property
1149
+ def updated_ts(self) -> _timestamp_pb2.Timestamp: ...
1150
+ def __init__(
1151
+ self,
1152
+ *,
1153
+ updated_ts: _timestamp_pb2.Timestamp | None = ...,
1154
+ sensor0_presence: Global___Presence.ValueType = ...,
1155
+ sensor1_presence: Global___Presence.ValueType = ...,
1156
+ ) -> None: ...
1157
+ _HasFieldArgType: _TypeAlias = _typing.Literal["updated_ts", b"updated_ts"] # noqa: Y015
1158
+ def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ...
1159
+ _ClearFieldArgType: _TypeAlias = _typing.Literal["sensor0_presence", b"sensor0_presence", "sensor1_presence", b"sensor1_presence", "updated_ts", b"updated_ts"] # noqa: Y015
1160
+ def ClearField(self, field_name: _ClearFieldArgType) -> None: ...
1161
+ def WhichOneof(self, oneof_group: _Never) -> None: ...
1162
+
1163
+ Global___IndoorUnitPresenceState: _TypeAlias = IndoorUnitPresenceState # noqa: Y015
1164
+
1165
+ @_typing.final
1166
+ class IndoorUnitCommands(_message.Message):
1167
+ DESCRIPTOR: _descriptor.Descriptor
1168
+
1169
+ UPDATED_TS_FIELD_NUMBER: _builtins.int
1170
+ FALLBACK_CONTROL_COMMAND_FIELD_NUMBER: _builtins.int
1171
+ fallback_control_command: Global___FallbackControlCommand.ValueType
1172
+ @_builtins.property
1173
+ def updated_ts(self) -> _timestamp_pb2.Timestamp: ...
1174
+ def __init__(
1175
+ self,
1176
+ *,
1177
+ updated_ts: _timestamp_pb2.Timestamp | None = ...,
1178
+ fallback_control_command: Global___FallbackControlCommand.ValueType = ...,
1179
+ ) -> None: ...
1180
+ _HasFieldArgType: _TypeAlias = _typing.Literal["updated_ts", b"updated_ts"] # noqa: Y015
1181
+ def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ...
1182
+ _ClearFieldArgType: _TypeAlias = _typing.Literal["fallback_control_command", b"fallback_control_command", "updated_ts", b"updated_ts"] # noqa: Y015
1183
+ def ClearField(self, field_name: _ClearFieldArgType) -> None: ...
1184
+ def WhichOneof(self, oneof_group: _Never) -> None: ...
1185
+
1186
+ Global___IndoorUnitCommands: _TypeAlias = IndoorUnitCommands # noqa: Y015
1187
+
1188
+ @_typing.final
1189
+ class IndoorUnitHardwareAttributes(_message.Message):
1190
+ """Wire-confirmed: header=1, attributes(specs)=2. All fields flat in attributes sub-message.
1191
+ From quilt_office.proto.json attributes: modelSku, serialNumber, productionTs,
1192
+ firmwareVersion, fanSpeedMaxRpm, updatedTs.
1193
+ """
1194
+
1195
+ DESCRIPTOR: _descriptor.Descriptor
1196
+
1197
+ MODEL_SKU_FIELD_NUMBER: _builtins.int
1198
+ SERIAL_NUMBER_FIELD_NUMBER: _builtins.int
1199
+ PRODUCTION_TS_FIELD_NUMBER: _builtins.int
1200
+ FIRMWARE_VERSION_FIELD_NUMBER: _builtins.int
1201
+ FAN_SPEED_MAX_RPM_FIELD_NUMBER: _builtins.int
1202
+ UPDATED_TS_FIELD_NUMBER: _builtins.int
1203
+ INDOOR_UNIT_SERIAL_NUMBER_FIELD_NUMBER: _builtins.int
1204
+ QUILT_SMART_MODULE_SERIAL_NUMBER_FIELD_NUMBER: _builtins.int
1205
+ model_sku: _builtins.str
1206
+ serial_number: _builtins.str
1207
+ firmware_version: _builtins.str
1208
+ fan_speed_max_rpm: _builtins.float
1209
+ indoor_unit_serial_number: _builtins.str
1210
+ """APK: INDOOR_UNIT_SERIAL_NUMBER_FIELD_NUMBER"""
1211
+ quilt_smart_module_serial_number: _builtins.str
1212
+ """APK: QUILT_SMART_MODULE_SERIAL_NUMBER_FIELD_NUMBER"""
1213
+ @_builtins.property
1214
+ def production_ts(self) -> _timestamp_pb2.Timestamp: ...
1215
+ @_builtins.property
1216
+ def updated_ts(self) -> _timestamp_pb2.Timestamp: ...
1217
+ def __init__(
1218
+ self,
1219
+ *,
1220
+ model_sku: _builtins.str = ...,
1221
+ serial_number: _builtins.str = ...,
1222
+ production_ts: _timestamp_pb2.Timestamp | None = ...,
1223
+ firmware_version: _builtins.str = ...,
1224
+ fan_speed_max_rpm: _builtins.float = ...,
1225
+ updated_ts: _timestamp_pb2.Timestamp | None = ...,
1226
+ indoor_unit_serial_number: _builtins.str = ...,
1227
+ quilt_smart_module_serial_number: _builtins.str = ...,
1228
+ ) -> None: ...
1229
+ _HasFieldArgType: _TypeAlias = _typing.Literal["production_ts", b"production_ts", "updated_ts", b"updated_ts"] # noqa: Y015
1230
+ def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ...
1231
+ _ClearFieldArgType: _TypeAlias = _typing.Literal["fan_speed_max_rpm", b"fan_speed_max_rpm", "firmware_version", b"firmware_version", "indoor_unit_serial_number", b"indoor_unit_serial_number", "model_sku", b"model_sku", "production_ts", b"production_ts", "quilt_smart_module_serial_number", b"quilt_smart_module_serial_number", "serial_number", b"serial_number", "updated_ts", b"updated_ts"] # noqa: Y015
1232
+ def ClearField(self, field_name: _ClearFieldArgType) -> None: ...
1233
+ def WhichOneof(self, oneof_group: _Never) -> None: ...
1234
+
1235
+ Global___IndoorUnitHardwareAttributes: _TypeAlias = IndoorUnitHardwareAttributes # noqa: Y015
1236
+
1237
+ @_typing.final
1238
+ class IndoorUnitHardware(_message.Message):
1239
+ DESCRIPTOR: _descriptor.Descriptor
1240
+
1241
+ HEADER_FIELD_NUMBER: _builtins.int
1242
+ ATTRIBUTES_FIELD_NUMBER: _builtins.int
1243
+ @_builtins.property
1244
+ def header(self) -> Global___EntityMetadata: ...
1245
+ @_builtins.property
1246
+ def attributes(self) -> Global___IndoorUnitHardwareAttributes: ...
1247
+ def __init__(
1248
+ self,
1249
+ *,
1250
+ header: Global___EntityMetadata | None = ...,
1251
+ attributes: Global___IndoorUnitHardwareAttributes | None = ...,
1252
+ ) -> None: ...
1253
+ _HasFieldArgType: _TypeAlias = _typing.Literal["attributes", b"attributes", "header", b"header"] # noqa: Y015
1254
+ def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ...
1255
+ _ClearFieldArgType: _TypeAlias = _typing.Literal["attributes", b"attributes", "header", b"header"] # noqa: Y015
1256
+ def ClearField(self, field_name: _ClearFieldArgType) -> None: ...
1257
+ def WhichOneof(self, oneof_group: _Never) -> None: ...
1258
+
1259
+ Global___IndoorUnitHardware: _TypeAlias = IndoorUnitHardware # noqa: Y015
1260
+
1261
+ @_typing.final
1262
+ class IndoorUnitHvacInputs(_message.Message):
1263
+ """APK-confirmed (C4363kK.java): HVAC controller inputs — what the controller sends to the IDU."""
1264
+
1265
+ DESCRIPTOR: _descriptor.Descriptor
1266
+
1267
+ UPDATED_TS_FIELD_NUMBER: _builtins.int
1268
+ EXTERNAL_AMBIENT_TEMPERATURE_C_FIELD_NUMBER: _builtins.int
1269
+ AMBIENT_TEMPERATURE_SOURCE_FIELD_NUMBER: _builtins.int
1270
+ TEMPERATURE_SETPOINT_C_FIELD_NUMBER: _builtins.int
1271
+ HVAC_MODE_FIELD_NUMBER: _builtins.int
1272
+ HVAC_CONTROLLER_TYPE_FIELD_NUMBER: _builtins.int
1273
+ HVAC_STATE_FIELD_NUMBER: _builtins.int
1274
+ external_ambient_temperature_c: _builtins.float
1275
+ """ambient temp used by controller"""
1276
+ ambient_temperature_source: _builtins.int
1277
+ """enum: which sensor source"""
1278
+ temperature_setpoint_c: _builtins.float
1279
+ """setpoint sent to IDU"""
1280
+ hvac_mode: Global___HVACMode.ValueType
1281
+ hvac_controller_type: Global___HvacControllerType.ValueType
1282
+ hvac_state: Global___HVACState.ValueType
1283
+ @_builtins.property
1284
+ def updated_ts(self) -> _timestamp_pb2.Timestamp: ...
1285
+ def __init__(
1286
+ self,
1287
+ *,
1288
+ updated_ts: _timestamp_pb2.Timestamp | None = ...,
1289
+ external_ambient_temperature_c: _builtins.float = ...,
1290
+ ambient_temperature_source: _builtins.int = ...,
1291
+ temperature_setpoint_c: _builtins.float = ...,
1292
+ hvac_mode: Global___HVACMode.ValueType = ...,
1293
+ hvac_controller_type: Global___HvacControllerType.ValueType = ...,
1294
+ hvac_state: Global___HVACState.ValueType = ...,
1295
+ ) -> None: ...
1296
+ _HasFieldArgType: _TypeAlias = _typing.Literal["updated_ts", b"updated_ts"] # noqa: Y015
1297
+ def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ...
1298
+ _ClearFieldArgType: _TypeAlias = _typing.Literal["ambient_temperature_source", b"ambient_temperature_source", "external_ambient_temperature_c", b"external_ambient_temperature_c", "hvac_controller_type", b"hvac_controller_type", "hvac_mode", b"hvac_mode", "hvac_state", b"hvac_state", "temperature_setpoint_c", b"temperature_setpoint_c", "updated_ts", b"updated_ts"] # noqa: Y015
1299
+ def ClearField(self, field_name: _ClearFieldArgType) -> None: ...
1300
+ def WhichOneof(self, oneof_group: _Never) -> None: ...
1301
+
1302
+ Global___IndoorUnitHvacInputs: _TypeAlias = IndoorUnitHvacInputs # noqa: Y015
1303
+
1304
+ @_typing.final
1305
+ class IndoorUnitPerformanceData(_message.Message):
1306
+ """APK-confirmed (C5918sK.java): raw IDU performance measurements."""
1307
+
1308
+ DESCRIPTOR: _descriptor.Descriptor
1309
+
1310
+ UPDATED_TS_FIELD_NUMBER: _builtins.int
1311
+ MEASUREMENT_INTERVAL_S_FIELD_NUMBER: _builtins.int
1312
+ ENERGY_MEASUREMENT_J_FIELD_NUMBER: _builtins.int
1313
+ HVAC_MODE_FIELD_NUMBER: _builtins.int
1314
+ ACTUAL_FAN_SPEED_RPM_FIELD_NUMBER: _builtins.int
1315
+ OUTLET_TEMPERATURE_C_FIELD_NUMBER: _builtins.int
1316
+ INLET_HUMIDITY_PCT_FIELD_NUMBER: _builtins.int
1317
+ INLET_TEMPERATURE_C_FIELD_NUMBER: _builtins.int
1318
+ COIL_TEMPERATURE_C_FIELD_NUMBER: _builtins.int
1319
+ GAS_PIPE_TEMPERATURE_C_FIELD_NUMBER: _builtins.int
1320
+ LIQUID_PIPE_TEMPERATURE_C_FIELD_NUMBER: _builtins.int
1321
+ HVAC_STATE_FIELD_NUMBER: _builtins.int
1322
+ measurement_interval_s: _builtins.float
1323
+ energy_measurement_j: _builtins.float
1324
+ hvac_mode: Global___HVACMode.ValueType
1325
+ actual_fan_speed_rpm: _builtins.float
1326
+ outlet_temperature_c: _builtins.float
1327
+ inlet_humidity_pct: _builtins.float
1328
+ inlet_temperature_c: _builtins.float
1329
+ coil_temperature_c: _builtins.float
1330
+ gas_pipe_temperature_c: _builtins.float
1331
+ liquid_pipe_temperature_c: _builtins.float
1332
+ hvac_state: Global___HVACState.ValueType
1333
+ @_builtins.property
1334
+ def updated_ts(self) -> _timestamp_pb2.Timestamp: ...
1335
+ def __init__(
1336
+ self,
1337
+ *,
1338
+ updated_ts: _timestamp_pb2.Timestamp | None = ...,
1339
+ measurement_interval_s: _builtins.float = ...,
1340
+ energy_measurement_j: _builtins.float = ...,
1341
+ hvac_mode: Global___HVACMode.ValueType = ...,
1342
+ actual_fan_speed_rpm: _builtins.float = ...,
1343
+ outlet_temperature_c: _builtins.float = ...,
1344
+ inlet_humidity_pct: _builtins.float = ...,
1345
+ inlet_temperature_c: _builtins.float = ...,
1346
+ coil_temperature_c: _builtins.float = ...,
1347
+ gas_pipe_temperature_c: _builtins.float = ...,
1348
+ liquid_pipe_temperature_c: _builtins.float = ...,
1349
+ hvac_state: Global___HVACState.ValueType = ...,
1350
+ ) -> None: ...
1351
+ _HasFieldArgType: _TypeAlias = _typing.Literal["updated_ts", b"updated_ts"] # noqa: Y015
1352
+ def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ...
1353
+ _ClearFieldArgType: _TypeAlias = _typing.Literal["actual_fan_speed_rpm", b"actual_fan_speed_rpm", "coil_temperature_c", b"coil_temperature_c", "energy_measurement_j", b"energy_measurement_j", "gas_pipe_temperature_c", b"gas_pipe_temperature_c", "hvac_mode", b"hvac_mode", "hvac_state", b"hvac_state", "inlet_humidity_pct", b"inlet_humidity_pct", "inlet_temperature_c", b"inlet_temperature_c", "liquid_pipe_temperature_c", b"liquid_pipe_temperature_c", "measurement_interval_s", b"measurement_interval_s", "outlet_temperature_c", b"outlet_temperature_c", "updated_ts", b"updated_ts"] # noqa: Y015
1354
+ def ClearField(self, field_name: _ClearFieldArgType) -> None: ...
1355
+ def WhichOneof(self, oneof_group: _Never) -> None: ...
1356
+
1357
+ Global___IndoorUnitPerformanceData: _TypeAlias = IndoorUnitPerformanceData # noqa: Y015
1358
+
1359
+ @_typing.final
1360
+ class IndoorUnitPerformanceMetrics(_message.Message):
1361
+ """APK-confirmed (C6306uK.java): computed energy/power metrics over a measurement window."""
1362
+
1363
+ DESCRIPTOR: _descriptor.Descriptor
1364
+
1365
+ UPDATED_TS_FIELD_NUMBER: _builtins.int
1366
+ MEASUREMENT_DURATION_S_FIELD_NUMBER: _builtins.int
1367
+ ENERGY_TOTAL_J_FIELD_NUMBER: _builtins.int
1368
+ CAPACITY_W_FIELD_NUMBER: _builtins.int
1369
+ COEFFICIENT_OF_PERFORMANCE_FIELD_NUMBER: _builtins.int
1370
+ HVAC_MODE_FIELD_NUMBER: _builtins.int
1371
+ HVAC_POWER_W_FIELD_NUMBER: _builtins.int
1372
+ LED_POWER_W_FIELD_NUMBER: _builtins.int
1373
+ HVAC_STATE_FIELD_NUMBER: _builtins.int
1374
+ HVAC_ENERGY_J_FIELD_NUMBER: _builtins.int
1375
+ LED_ENERGY_J_FIELD_NUMBER: _builtins.int
1376
+ measurement_duration_s: _builtins.float
1377
+ """window length in seconds"""
1378
+ energy_total_j: _builtins.float
1379
+ """total energy this window"""
1380
+ capacity_w: _builtins.float
1381
+ """HVAC capacity (watts)"""
1382
+ coefficient_of_performance: _builtins.float
1383
+ """COP"""
1384
+ hvac_mode: Global___HVACMode.ValueType
1385
+ hvac_power_w: _builtins.float
1386
+ led_power_w: _builtins.float
1387
+ hvac_state: Global___HVACState.ValueType
1388
+ hvac_energy_j: _builtins.float
1389
+ led_energy_j: _builtins.float
1390
+ @_builtins.property
1391
+ def updated_ts(self) -> _timestamp_pb2.Timestamp:
1392
+ """field 1 inferred"""
1393
+
1394
+ def __init__(
1395
+ self,
1396
+ *,
1397
+ updated_ts: _timestamp_pb2.Timestamp | None = ...,
1398
+ measurement_duration_s: _builtins.float = ...,
1399
+ energy_total_j: _builtins.float = ...,
1400
+ capacity_w: _builtins.float = ...,
1401
+ coefficient_of_performance: _builtins.float = ...,
1402
+ hvac_mode: Global___HVACMode.ValueType = ...,
1403
+ hvac_power_w: _builtins.float = ...,
1404
+ led_power_w: _builtins.float = ...,
1405
+ hvac_state: Global___HVACState.ValueType = ...,
1406
+ hvac_energy_j: _builtins.float = ...,
1407
+ led_energy_j: _builtins.float = ...,
1408
+ ) -> None: ...
1409
+ _HasFieldArgType: _TypeAlias = _typing.Literal["updated_ts", b"updated_ts"] # noqa: Y015
1410
+ def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ...
1411
+ _ClearFieldArgType: _TypeAlias = _typing.Literal["capacity_w", b"capacity_w", "coefficient_of_performance", b"coefficient_of_performance", "energy_total_j", b"energy_total_j", "hvac_energy_j", b"hvac_energy_j", "hvac_mode", b"hvac_mode", "hvac_power_w", b"hvac_power_w", "hvac_state", b"hvac_state", "led_energy_j", b"led_energy_j", "led_power_w", b"led_power_w", "measurement_duration_s", b"measurement_duration_s", "updated_ts", b"updated_ts"] # noqa: Y015
1412
+ def ClearField(self, field_name: _ClearFieldArgType) -> None: ...
1413
+ def WhichOneof(self, oneof_group: _Never) -> None: ...
1414
+
1415
+ Global___IndoorUnitPerformanceMetrics: _TypeAlias = IndoorUnitPerformanceMetrics # noqa: Y015
1416
+
1417
+ @_typing.final
1418
+ class IndoorUnitOccupancy(_message.Message):
1419
+ DESCRIPTOR: _descriptor.Descriptor
1420
+
1421
+ UPDATED_TS_FIELD_NUMBER: _builtins.int
1422
+ OCCUPANCY_STATE_FIELD_NUMBER: _builtins.int
1423
+ occupancy_state: Global___OccupancyState.ValueType
1424
+ @_builtins.property
1425
+ def updated_ts(self) -> _timestamp_pb2.Timestamp: ...
1426
+ def __init__(
1427
+ self,
1428
+ *,
1429
+ updated_ts: _timestamp_pb2.Timestamp | None = ...,
1430
+ occupancy_state: Global___OccupancyState.ValueType = ...,
1431
+ ) -> None: ...
1432
+ _HasFieldArgType: _TypeAlias = _typing.Literal["updated_ts", b"updated_ts"] # noqa: Y015
1433
+ def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ...
1434
+ _ClearFieldArgType: _TypeAlias = _typing.Literal["occupancy_state", b"occupancy_state", "updated_ts", b"updated_ts"] # noqa: Y015
1435
+ def ClearField(self, field_name: _ClearFieldArgType) -> None: ...
1436
+ def WhichOneof(self, oneof_group: _Never) -> None: ...
1437
+
1438
+ Global___IndoorUnitOccupancy: _TypeAlias = IndoorUnitOccupancy # noqa: Y015
1439
+
1440
+ @_typing.final
1441
+ class IndoorUnit(_message.Message):
1442
+ """Wire-confirmed top-level layout from binary capture: header=1(LEN/102), relationships=2(LEN/203),
1443
+ settings=3(LEN/67), controls=4(LEN/40), state=5(LEN/79), then f6–f12 per APK.
1444
+ """
1445
+
1446
+ DESCRIPTOR: _descriptor.Descriptor
1447
+
1448
+ HEADER_FIELD_NUMBER: _builtins.int
1449
+ RELATIONSHIPS_FIELD_NUMBER: _builtins.int
1450
+ SETTINGS_FIELD_NUMBER: _builtins.int
1451
+ CONTROLS_FIELD_NUMBER: _builtins.int
1452
+ STATE_FIELD_NUMBER: _builtins.int
1453
+ HVAC_INPUTS_FIELD_NUMBER: _builtins.int
1454
+ PRESENCE_FIELD_NUMBER: _builtins.int
1455
+ CONDITIONS_FIELD_NUMBER: _builtins.int
1456
+ COMMANDS_FIELD_NUMBER: _builtins.int
1457
+ PERFORMANCE_DATA_FIELD_NUMBER: _builtins.int
1458
+ PERFORMANCE_METRICS_FIELD_NUMBER: _builtins.int
1459
+ OCCUPANCY_FIELD_NUMBER: _builtins.int
1460
+ @_builtins.property
1461
+ def header(self) -> Global___EntityMetadata:
1462
+ """wire-confirmed: f1"""
1463
+
1464
+ @_builtins.property
1465
+ def relationships(self) -> Global___IndoorUnitRelationships:
1466
+ """wire-confirmed: f2"""
1467
+
1468
+ @_builtins.property
1469
+ def settings(self) -> Global___IndoorUnitSettings:
1470
+ """wire-confirmed: f3"""
1471
+
1472
+ @_builtins.property
1473
+ def controls(self) -> Global___IndoorUnitControls:
1474
+ """wire-confirmed: f4"""
1475
+
1476
+ @_builtins.property
1477
+ def state(self) -> Global___IndoorUnitState:
1478
+ """wire-confirmed: f5"""
1479
+
1480
+ @_builtins.property
1481
+ def hvac_inputs(self) -> Global___IndoorUnitHvacInputs:
1482
+ """APK: HVAC_INPUTS_FIELD_NUMBER=6 (C4363kK)"""
1483
+
1484
+ @_builtins.property
1485
+ def presence(self) -> Global___IndoorUnitPresenceState:
1486
+ """APK: PRESENCE_FIELD_NUMBER=7 (C6694wK)"""
1487
+
1488
+ @_builtins.property
1489
+ def conditions(self) -> Global___IndoorUnitConditions:
1490
+ """APK: CONDITIONS_FIELD_NUMBER=8 (C2132aK)"""
1491
+
1492
+ @_builtins.property
1493
+ def commands(self) -> Global___IndoorUnitCommands:
1494
+ """APK: COMMANDS_FIELD_NUMBER=9 (YJ)"""
1495
+
1496
+ @_builtins.property
1497
+ def performance_data(self) -> Global___IndoorUnitPerformanceData:
1498
+ """APK: PERFORMANCE_DATA_FIELD_NUMBER=10 (C5918sK)"""
1499
+
1500
+ @_builtins.property
1501
+ def performance_metrics(self) -> Global___IndoorUnitPerformanceMetrics:
1502
+ """APK: PERFORMANCE_METRICS_FIELD_NUMBER=11 (C6306uK)"""
1503
+
1504
+ @_builtins.property
1505
+ def occupancy(self) -> Global___IndoorUnitOccupancy:
1506
+ """APK: OCCUPANCY_FIELD_NUMBER=12 (C5337pK)"""
1507
+
1508
+ def __init__(
1509
+ self,
1510
+ *,
1511
+ header: Global___EntityMetadata | None = ...,
1512
+ relationships: Global___IndoorUnitRelationships | None = ...,
1513
+ settings: Global___IndoorUnitSettings | None = ...,
1514
+ controls: Global___IndoorUnitControls | None = ...,
1515
+ state: Global___IndoorUnitState | None = ...,
1516
+ hvac_inputs: Global___IndoorUnitHvacInputs | None = ...,
1517
+ presence: Global___IndoorUnitPresenceState | None = ...,
1518
+ conditions: Global___IndoorUnitConditions | None = ...,
1519
+ commands: Global___IndoorUnitCommands | None = ...,
1520
+ performance_data: Global___IndoorUnitPerformanceData | None = ...,
1521
+ performance_metrics: Global___IndoorUnitPerformanceMetrics | None = ...,
1522
+ occupancy: Global___IndoorUnitOccupancy | None = ...,
1523
+ ) -> None: ...
1524
+ _HasFieldArgType: _TypeAlias = _typing.Literal["commands", b"commands", "conditions", b"conditions", "controls", b"controls", "header", b"header", "hvac_inputs", b"hvac_inputs", "occupancy", b"occupancy", "performance_data", b"performance_data", "performance_metrics", b"performance_metrics", "presence", b"presence", "relationships", b"relationships", "settings", b"settings", "state", b"state"] # noqa: Y015
1525
+ def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ...
1526
+ _ClearFieldArgType: _TypeAlias = _typing.Literal["commands", b"commands", "conditions", b"conditions", "controls", b"controls", "header", b"header", "hvac_inputs", b"hvac_inputs", "occupancy", b"occupancy", "performance_data", b"performance_data", "performance_metrics", b"performance_metrics", "presence", b"presence", "relationships", b"relationships", "settings", b"settings", "state", b"state"] # noqa: Y015
1527
+ def ClearField(self, field_name: _ClearFieldArgType) -> None: ...
1528
+ def WhichOneof(self, oneof_group: _Never) -> None: ...
1529
+
1530
+ Global___IndoorUnit: _TypeAlias = IndoorUnit # noqa: Y015
1531
+
1532
+ @_typing.final
1533
+ class OutdoorUnitRelationships(_message.Message):
1534
+ """---------------------------------------------------------------------------
1535
+ Outdoor Unit
1536
+ ---------------------------------------------------------------------------
1537
+
1538
+ From quilt_office.proto.json: customerAccountId, spaceId, hardwareId, updatedTs.
1539
+ """
1540
+
1541
+ DESCRIPTOR: _descriptor.Descriptor
1542
+
1543
+ CUSTOMER_ACCOUNT_ID_FIELD_NUMBER: _builtins.int
1544
+ SPACE_ID_FIELD_NUMBER: _builtins.int
1545
+ HARDWARE_ID_FIELD_NUMBER: _builtins.int
1546
+ UPDATED_TS_FIELD_NUMBER: _builtins.int
1547
+ FIRMWARE_UPDATE_INFO_ID_FIELD_NUMBER: _builtins.int
1548
+ customer_account_id: _builtins.str
1549
+ space_id: _builtins.str
1550
+ hardware_id: _builtins.str
1551
+ firmware_update_info_id: _builtins.str
1552
+ @_builtins.property
1553
+ def updated_ts(self) -> _timestamp_pb2.Timestamp: ...
1554
+ def __init__(
1555
+ self,
1556
+ *,
1557
+ customer_account_id: _builtins.str = ...,
1558
+ space_id: _builtins.str = ...,
1559
+ hardware_id: _builtins.str = ...,
1560
+ updated_ts: _timestamp_pb2.Timestamp | None = ...,
1561
+ firmware_update_info_id: _builtins.str = ...,
1562
+ ) -> None: ...
1563
+ _HasFieldArgType: _TypeAlias = _typing.Literal["updated_ts", b"updated_ts"] # noqa: Y015
1564
+ def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ...
1565
+ _ClearFieldArgType: _TypeAlias = _typing.Literal["customer_account_id", b"customer_account_id", "firmware_update_info_id", b"firmware_update_info_id", "hardware_id", b"hardware_id", "space_id", b"space_id", "updated_ts", b"updated_ts"] # noqa: Y015
1566
+ def ClearField(self, field_name: _ClearFieldArgType) -> None: ...
1567
+ def WhichOneof(self, oneof_group: _Never) -> None: ...
1568
+
1569
+ Global___OutdoorUnitRelationships: _TypeAlias = OutdoorUnitRelationships # noqa: Y015
1570
+
1571
+ @_typing.final
1572
+ class OutdoorUnitSettings(_message.Message):
1573
+ """name=1, description=2, updatedTs=3 (same pattern as other settings)."""
1574
+
1575
+ DESCRIPTOR: _descriptor.Descriptor
1576
+
1577
+ NAME_FIELD_NUMBER: _builtins.int
1578
+ DESCRIPTION_FIELD_NUMBER: _builtins.int
1579
+ UPDATED_TS_FIELD_NUMBER: _builtins.int
1580
+ name: _builtins.str
1581
+ description: _builtins.str
1582
+ @_builtins.property
1583
+ def updated_ts(self) -> _timestamp_pb2.Timestamp: ...
1584
+ def __init__(
1585
+ self,
1586
+ *,
1587
+ name: _builtins.str = ...,
1588
+ description: _builtins.str = ...,
1589
+ updated_ts: _timestamp_pb2.Timestamp | None = ...,
1590
+ ) -> None: ...
1591
+ _HasFieldArgType: _TypeAlias = _typing.Literal["updated_ts", b"updated_ts"] # noqa: Y015
1592
+ def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ...
1593
+ _ClearFieldArgType: _TypeAlias = _typing.Literal["description", b"description", "name", b"name", "updated_ts", b"updated_ts"] # noqa: Y015
1594
+ def ClearField(self, field_name: _ClearFieldArgType) -> None: ...
1595
+ def WhichOneof(self, oneof_group: _Never) -> None: ...
1596
+
1597
+ Global___OutdoorUnitSettings: _TypeAlias = OutdoorUnitSettings # noqa: Y015
1598
+
1599
+ @_typing.final
1600
+ class OutdoorUnitState(_message.Message):
1601
+ DESCRIPTOR: _descriptor.Descriptor
1602
+
1603
+ UPDATED_TS_FIELD_NUMBER: _builtins.int
1604
+ HVAC_STATE_FIELD_NUMBER: _builtins.int
1605
+ hvac_state: Global___HVACState.ValueType
1606
+ @_builtins.property
1607
+ def updated_ts(self) -> _timestamp_pb2.Timestamp: ...
1608
+ def __init__(
1609
+ self,
1610
+ *,
1611
+ updated_ts: _timestamp_pb2.Timestamp | None = ...,
1612
+ hvac_state: Global___HVACState.ValueType = ...,
1613
+ ) -> None: ...
1614
+ _HasFieldArgType: _TypeAlias = _typing.Literal["updated_ts", b"updated_ts"] # noqa: Y015
1615
+ def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ...
1616
+ _ClearFieldArgType: _TypeAlias = _typing.Literal["hvac_state", b"hvac_state", "updated_ts", b"updated_ts"] # noqa: Y015
1617
+ def ClearField(self, field_name: _ClearFieldArgType) -> None: ...
1618
+ def WhichOneof(self, oneof_group: _Never) -> None: ...
1619
+
1620
+ Global___OutdoorUnitState: _TypeAlias = OutdoorUnitState # noqa: Y015
1621
+
1622
+ @_typing.final
1623
+ class OutdoorUnitPerformanceData(_message.Message):
1624
+ """APK-confirmed: YK.java — compressor telemetry from the outdoor unit.
1625
+ Populated during active operation; empty/zero in standby.
1626
+ """
1627
+
1628
+ DESCRIPTOR: _descriptor.Descriptor
1629
+
1630
+ UPDATED_TS_FIELD_NUMBER: _builtins.int
1631
+ MEASUREMENT_INTERVAL_S_FIELD_NUMBER: _builtins.int
1632
+ ENERGY_MEASUREMENT_J_FIELD_NUMBER: _builtins.int
1633
+ COMPRESSOR_FREQUENCY_HZ_FIELD_NUMBER: _builtins.int
1634
+ AMBIENT_TEMPERATURE_C_FIELD_NUMBER: _builtins.int
1635
+ COIL_TEMPERATURE_C_FIELD_NUMBER: _builtins.int
1636
+ EXHAUST_TEMPERATURE_C_FIELD_NUMBER: _builtins.int
1637
+ HIGH_PRESSURE_KPA_FIELD_NUMBER: _builtins.int
1638
+ LOW_PRESSURE_KPA_FIELD_NUMBER: _builtins.int
1639
+ measurement_interval_s: _builtins.float
1640
+ energy_measurement_j: _builtins.float
1641
+ compressor_frequency_hz: _builtins.float
1642
+ """inverter drive frequency"""
1643
+ ambient_temperature_c: _builtins.float
1644
+ """outdoor ambient air temperature"""
1645
+ coil_temperature_c: _builtins.float
1646
+ """outdoor coil temperature"""
1647
+ exhaust_temperature_c: _builtins.float
1648
+ """compressor discharge/exhaust temperature"""
1649
+ high_pressure_kpa: _builtins.float
1650
+ """refrigerant high-side pressure"""
1651
+ low_pressure_kpa: _builtins.float
1652
+ """refrigerant low-side pressure"""
1653
+ @_builtins.property
1654
+ def updated_ts(self) -> _timestamp_pb2.Timestamp: ...
1655
+ def __init__(
1656
+ self,
1657
+ *,
1658
+ updated_ts: _timestamp_pb2.Timestamp | None = ...,
1659
+ measurement_interval_s: _builtins.float = ...,
1660
+ energy_measurement_j: _builtins.float = ...,
1661
+ compressor_frequency_hz: _builtins.float = ...,
1662
+ ambient_temperature_c: _builtins.float = ...,
1663
+ coil_temperature_c: _builtins.float = ...,
1664
+ exhaust_temperature_c: _builtins.float = ...,
1665
+ high_pressure_kpa: _builtins.float = ...,
1666
+ low_pressure_kpa: _builtins.float = ...,
1667
+ ) -> None: ...
1668
+ _HasFieldArgType: _TypeAlias = _typing.Literal["updated_ts", b"updated_ts"] # noqa: Y015
1669
+ def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ...
1670
+ _ClearFieldArgType: _TypeAlias = _typing.Literal["ambient_temperature_c", b"ambient_temperature_c", "coil_temperature_c", b"coil_temperature_c", "compressor_frequency_hz", b"compressor_frequency_hz", "energy_measurement_j", b"energy_measurement_j", "exhaust_temperature_c", b"exhaust_temperature_c", "high_pressure_kpa", b"high_pressure_kpa", "low_pressure_kpa", b"low_pressure_kpa", "measurement_interval_s", b"measurement_interval_s", "updated_ts", b"updated_ts"] # noqa: Y015
1671
+ def ClearField(self, field_name: _ClearFieldArgType) -> None: ...
1672
+ def WhichOneof(self, oneof_group: _Never) -> None: ...
1673
+
1674
+ Global___OutdoorUnitPerformanceData: _TypeAlias = OutdoorUnitPerformanceData # noqa: Y015
1675
+
1676
+ @_typing.final
1677
+ class OutdoorUnitHardwareAttributes(_message.Message):
1678
+ """Wire-confirmed: header=1, attributes=2. Same hardware pattern as IndoorUnitHardware."""
1679
+
1680
+ DESCRIPTOR: _descriptor.Descriptor
1681
+
1682
+ MODEL_SKU_FIELD_NUMBER: _builtins.int
1683
+ SERIAL_NUMBER_FIELD_NUMBER: _builtins.int
1684
+ PRODUCTION_TS_FIELD_NUMBER: _builtins.int
1685
+ FIRMWARE_VERSION_FIELD_NUMBER: _builtins.int
1686
+ UPDATED_TS_FIELD_NUMBER: _builtins.int
1687
+ model_sku: _builtins.str
1688
+ serial_number: _builtins.str
1689
+ firmware_version: _builtins.str
1690
+ @_builtins.property
1691
+ def production_ts(self) -> _timestamp_pb2.Timestamp: ...
1692
+ @_builtins.property
1693
+ def updated_ts(self) -> _timestamp_pb2.Timestamp: ...
1694
+ def __init__(
1695
+ self,
1696
+ *,
1697
+ model_sku: _builtins.str = ...,
1698
+ serial_number: _builtins.str = ...,
1699
+ production_ts: _timestamp_pb2.Timestamp | None = ...,
1700
+ firmware_version: _builtins.str = ...,
1701
+ updated_ts: _timestamp_pb2.Timestamp | None = ...,
1702
+ ) -> None: ...
1703
+ _HasFieldArgType: _TypeAlias = _typing.Literal["production_ts", b"production_ts", "updated_ts", b"updated_ts"] # noqa: Y015
1704
+ def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ...
1705
+ _ClearFieldArgType: _TypeAlias = _typing.Literal["firmware_version", b"firmware_version", "model_sku", b"model_sku", "production_ts", b"production_ts", "serial_number", b"serial_number", "updated_ts", b"updated_ts"] # noqa: Y015
1706
+ def ClearField(self, field_name: _ClearFieldArgType) -> None: ...
1707
+ def WhichOneof(self, oneof_group: _Never) -> None: ...
1708
+
1709
+ Global___OutdoorUnitHardwareAttributes: _TypeAlias = OutdoorUnitHardwareAttributes # noqa: Y015
1710
+
1711
+ @_typing.final
1712
+ class OutdoorUnitHardware(_message.Message):
1713
+ DESCRIPTOR: _descriptor.Descriptor
1714
+
1715
+ HEADER_FIELD_NUMBER: _builtins.int
1716
+ ATTRIBUTES_FIELD_NUMBER: _builtins.int
1717
+ @_builtins.property
1718
+ def header(self) -> Global___EntityMetadata: ...
1719
+ @_builtins.property
1720
+ def attributes(self) -> Global___OutdoorUnitHardwareAttributes: ...
1721
+ def __init__(
1722
+ self,
1723
+ *,
1724
+ header: Global___EntityMetadata | None = ...,
1725
+ attributes: Global___OutdoorUnitHardwareAttributes | None = ...,
1726
+ ) -> None: ...
1727
+ _HasFieldArgType: _TypeAlias = _typing.Literal["attributes", b"attributes", "header", b"header"] # noqa: Y015
1728
+ def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ...
1729
+ _ClearFieldArgType: _TypeAlias = _typing.Literal["attributes", b"attributes", "header", b"header"] # noqa: Y015
1730
+ def ClearField(self, field_name: _ClearFieldArgType) -> None: ...
1731
+ def WhichOneof(self, oneof_group: _Never) -> None: ...
1732
+
1733
+ Global___OutdoorUnitHardware: _TypeAlias = OutdoorUnitHardware # noqa: Y015
1734
+
1735
+ @_typing.final
1736
+ class OutdoorUnit(_message.Message):
1737
+ """Wire-confirmed field layout: header=1, relationships=2, settings=3, state=4.
1738
+ APK-confirmed (QK.java): performance_data=5.
1739
+ """
1740
+
1741
+ DESCRIPTOR: _descriptor.Descriptor
1742
+
1743
+ HEADER_FIELD_NUMBER: _builtins.int
1744
+ RELATIONSHIPS_FIELD_NUMBER: _builtins.int
1745
+ SETTINGS_FIELD_NUMBER: _builtins.int
1746
+ STATE_FIELD_NUMBER: _builtins.int
1747
+ PERFORMANCE_DATA_FIELD_NUMBER: _builtins.int
1748
+ @_builtins.property
1749
+ def header(self) -> Global___EntityMetadata: ...
1750
+ @_builtins.property
1751
+ def relationships(self) -> Global___OutdoorUnitRelationships: ...
1752
+ @_builtins.property
1753
+ def settings(self) -> Global___OutdoorUnitSettings: ...
1754
+ @_builtins.property
1755
+ def state(self) -> Global___OutdoorUnitState: ...
1756
+ @_builtins.property
1757
+ def performance_data(self) -> Global___OutdoorUnitPerformanceData: ...
1758
+ def __init__(
1759
+ self,
1760
+ *,
1761
+ header: Global___EntityMetadata | None = ...,
1762
+ relationships: Global___OutdoorUnitRelationships | None = ...,
1763
+ settings: Global___OutdoorUnitSettings | None = ...,
1764
+ state: Global___OutdoorUnitState | None = ...,
1765
+ performance_data: Global___OutdoorUnitPerformanceData | None = ...,
1766
+ ) -> None: ...
1767
+ _HasFieldArgType: _TypeAlias = _typing.Literal["header", b"header", "performance_data", b"performance_data", "relationships", b"relationships", "settings", b"settings", "state", b"state"] # noqa: Y015
1768
+ def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ...
1769
+ _ClearFieldArgType: _TypeAlias = _typing.Literal["header", b"header", "performance_data", b"performance_data", "relationships", b"relationships", "settings", b"settings", "state", b"state"] # noqa: Y015
1770
+ def ClearField(self, field_name: _ClearFieldArgType) -> None: ...
1771
+ def WhichOneof(self, oneof_group: _Never) -> None: ...
1772
+
1773
+ Global___OutdoorUnit: _TypeAlias = OutdoorUnit # noqa: Y015
1774
+
1775
+ @_typing.final
1776
+ class ControllerRelationships(_message.Message):
1777
+ """---------------------------------------------------------------------------
1778
+ Controller (Quilt thermostat / hub)
1779
+ ---------------------------------------------------------------------------
1780
+
1781
+ From quilt_office.proto.json: customerAccountId=1, spaceId=2, hardwareId=3, updatedTs=4.
1782
+ """
1783
+
1784
+ DESCRIPTOR: _descriptor.Descriptor
1785
+
1786
+ CUSTOMER_ACCOUNT_ID_FIELD_NUMBER: _builtins.int
1787
+ SPACE_ID_FIELD_NUMBER: _builtins.int
1788
+ HARDWARE_ID_FIELD_NUMBER: _builtins.int
1789
+ UPDATED_TS_FIELD_NUMBER: _builtins.int
1790
+ SOFTWARE_UPDATE_INFO_ID_FIELD_NUMBER: _builtins.int
1791
+ FIRMWARE_UPDATE_INFO_ID_FIELD_NUMBER: _builtins.int
1792
+ customer_account_id: _builtins.str
1793
+ space_id: _builtins.str
1794
+ hardware_id: _builtins.str
1795
+ software_update_info_id: _builtins.str
1796
+ firmware_update_info_id: _builtins.str
1797
+ @_builtins.property
1798
+ def updated_ts(self) -> _timestamp_pb2.Timestamp: ...
1799
+ def __init__(
1800
+ self,
1801
+ *,
1802
+ customer_account_id: _builtins.str = ...,
1803
+ space_id: _builtins.str = ...,
1804
+ hardware_id: _builtins.str = ...,
1805
+ updated_ts: _timestamp_pb2.Timestamp | None = ...,
1806
+ software_update_info_id: _builtins.str = ...,
1807
+ firmware_update_info_id: _builtins.str = ...,
1808
+ ) -> None: ...
1809
+ _HasFieldArgType: _TypeAlias = _typing.Literal["updated_ts", b"updated_ts"] # noqa: Y015
1810
+ def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ...
1811
+ _ClearFieldArgType: _TypeAlias = _typing.Literal["customer_account_id", b"customer_account_id", "firmware_update_info_id", b"firmware_update_info_id", "hardware_id", b"hardware_id", "software_update_info_id", b"software_update_info_id", "space_id", b"space_id", "updated_ts", b"updated_ts"] # noqa: Y015
1812
+ def ClearField(self, field_name: _ClearFieldArgType) -> None: ...
1813
+ def WhichOneof(self, oneof_group: _Never) -> None: ...
1814
+
1815
+ Global___ControllerRelationships: _TypeAlias = ControllerRelationships # noqa: Y015
1816
+
1817
+ @_typing.final
1818
+ class ControllerSettings(_message.Message):
1819
+ """name=1, description=2, updatedTs=3."""
1820
+
1821
+ DESCRIPTOR: _descriptor.Descriptor
1822
+
1823
+ NAME_FIELD_NUMBER: _builtins.int
1824
+ DESCRIPTION_FIELD_NUMBER: _builtins.int
1825
+ UPDATED_TS_FIELD_NUMBER: _builtins.int
1826
+ name: _builtins.str
1827
+ description: _builtins.str
1828
+ @_builtins.property
1829
+ def updated_ts(self) -> _timestamp_pb2.Timestamp: ...
1830
+ def __init__(
1831
+ self,
1832
+ *,
1833
+ name: _builtins.str = ...,
1834
+ description: _builtins.str = ...,
1835
+ updated_ts: _timestamp_pb2.Timestamp | None = ...,
1836
+ ) -> None: ...
1837
+ _HasFieldArgType: _TypeAlias = _typing.Literal["updated_ts", b"updated_ts"] # noqa: Y015
1838
+ def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ...
1839
+ _ClearFieldArgType: _TypeAlias = _typing.Literal["description", b"description", "name", b"name", "updated_ts", b"updated_ts"] # noqa: Y015
1840
+ def ClearField(self, field_name: _ClearFieldArgType) -> None: ...
1841
+ def WhichOneof(self, oneof_group: _Never) -> None: ...
1842
+
1843
+ Global___ControllerSettings: _TypeAlias = ControllerSettings # noqa: Y015
1844
+
1845
+ @_typing.final
1846
+ class ControllerState(_message.Message):
1847
+ DESCRIPTOR: _descriptor.Descriptor
1848
+
1849
+ UPDATED_TS_FIELD_NUMBER: _builtins.int
1850
+ AMBIENT_TEMPERATURE_C_FIELD_NUMBER: _builtins.int
1851
+ TEMPERATURE_F3_FIELD_NUMBER: _builtins.int
1852
+ TEMPERATURE_F4_FIELD_NUMBER: _builtins.int
1853
+ TEMPERATURE_F5_FIELD_NUMBER: _builtins.int
1854
+ ambient_temperature_c: _builtins.float
1855
+ """raw Dial thermistor (~24–29°C; self-heating bias)"""
1856
+ temperature_f3: _builtins.float
1857
+ """PCB temp A (~30–50°C)"""
1858
+ temperature_f4: _builtins.float
1859
+ """PCB temp B (~45–52°C, hotter component)"""
1860
+ temperature_f5: _builtins.float
1861
+ """calibrated ext_amb sent to IDU (~16–20°C, matches Ctrl→IDU)"""
1862
+ @_builtins.property
1863
+ def updated_ts(self) -> _timestamp_pb2.Timestamp:
1864
+ """Wire-confirmed from field_11.f4 of HomeDatastoreSystem.
1865
+ f1 = updated_ts (KMP: ControllerState.updatedTimestamp, used by Controller.isOnline())
1866
+ f2 = raw Dial surface thermistor (inflated by self-heating; used for display).
1867
+ f5 = calibrated/corrected ambient temperature sent to IDU as external_ambient_temperature_c.
1868
+ Cross-confirmed: f5 value matches IndoorUnitHvacInputs.external_ambient_temperature_c
1869
+ for all 5 rooms during live operation.
1870
+ f3, f4 = internal PCB temperatures (~30–52°C during active operation).
1871
+ """
1872
+
1873
+ def __init__(
1874
+ self,
1875
+ *,
1876
+ updated_ts: _timestamp_pb2.Timestamp | None = ...,
1877
+ ambient_temperature_c: _builtins.float = ...,
1878
+ temperature_f3: _builtins.float = ...,
1879
+ temperature_f4: _builtins.float = ...,
1880
+ temperature_f5: _builtins.float = ...,
1881
+ ) -> None: ...
1882
+ _HasFieldArgType: _TypeAlias = _typing.Literal["updated_ts", b"updated_ts"] # noqa: Y015
1883
+ def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ...
1884
+ _ClearFieldArgType: _TypeAlias = _typing.Literal["ambient_temperature_c", b"ambient_temperature_c", "temperature_f3", b"temperature_f3", "temperature_f4", b"temperature_f4", "temperature_f5", b"temperature_f5", "updated_ts", b"updated_ts"] # noqa: Y015
1885
+ def ClearField(self, field_name: _ClearFieldArgType) -> None: ...
1886
+ def WhichOneof(self, oneof_group: _Never) -> None: ...
1887
+
1888
+ Global___ControllerState: _TypeAlias = ControllerState # noqa: Y015
1889
+
1890
+ @_typing.final
1891
+ class ControllerControls(_message.Message):
1892
+ DESCRIPTOR: _descriptor.Descriptor
1893
+
1894
+ UPDATED_TS_FIELD_NUMBER: _builtins.int
1895
+ REMOTE_SENSOR_CONTROL_MODE_FIELD_NUMBER: _builtins.int
1896
+ remote_sensor_control_mode: Global___RemoteSensorControlMode.ValueType
1897
+ @_builtins.property
1898
+ def updated_ts(self) -> _timestamp_pb2.Timestamp: ...
1899
+ def __init__(
1900
+ self,
1901
+ *,
1902
+ updated_ts: _timestamp_pb2.Timestamp | None = ...,
1903
+ remote_sensor_control_mode: Global___RemoteSensorControlMode.ValueType = ...,
1904
+ ) -> None: ...
1905
+ _HasFieldArgType: _TypeAlias = _typing.Literal["updated_ts", b"updated_ts"] # noqa: Y015
1906
+ def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ...
1907
+ _ClearFieldArgType: _TypeAlias = _typing.Literal["remote_sensor_control_mode", b"remote_sensor_control_mode", "updated_ts", b"updated_ts"] # noqa: Y015
1908
+ def ClearField(self, field_name: _ClearFieldArgType) -> None: ...
1909
+ def WhichOneof(self, oneof_group: _Never) -> None: ...
1910
+
1911
+ Global___ControllerControls: _TypeAlias = ControllerControls # noqa: Y015
1912
+
1913
+ @_typing.final
1914
+ class WifiState(_message.Message):
1915
+ """APK-confirmed field layout (NM.java). Used in QSM (f4/f5/f6) and Controller (f5/f6/f7)."""
1916
+
1917
+ DESCRIPTOR: _descriptor.Descriptor
1918
+
1919
+ WIFI_STATE_FIELD_NUMBER: _builtins.int
1920
+ SSID_FIELD_NUMBER: _builtins.int
1921
+ BSSID_FIELD_NUMBER: _builtins.int
1922
+ FREQUENCY_MHZ_FIELD_NUMBER: _builtins.int
1923
+ PASSPHRASE_FIELD_NUMBER: _builtins.int
1924
+ SIGNAL_LEVEL_DBM_FIELD_NUMBER: _builtins.int
1925
+ NOISE_LEVEL_DBM_FIELD_NUMBER: _builtins.int
1926
+ RX_INVALID_FRAG_FIELD_NUMBER: _builtins.int
1927
+ TX_EXCESSIVE_RETRIES_FIELD_NUMBER: _builtins.int
1928
+ IPV4_ADDRESS_FIELD_NUMBER: _builtins.int
1929
+ IPV6_ADDRESS_FIELD_NUMBER: _builtins.int
1930
+ UPDATED_TS_FIELD_NUMBER: _builtins.int
1931
+ wifi_state: Global___WifiConnectionState.ValueType
1932
+ """connection phase (DISCONNECTED→WPA_COMPLETED)"""
1933
+ ssid: _builtins.str
1934
+ """"Tigger" — shared Quilt AP"""
1935
+ bssid: _builtins.str
1936
+ """AP MAC address"""
1937
+ frequency_mhz: _builtins.int
1938
+ """5745 = 5 GHz"""
1939
+ passphrase: _builtins.str
1940
+ """WiFi password (usually empty in responses)"""
1941
+ signal_level_dbm: _builtins.int
1942
+ """RSSI dBm (signed int32, not sint32)"""
1943
+ noise_level_dbm: _builtins.int
1944
+ """noise floor dBm"""
1945
+ rx_invalid_frag: _builtins.int
1946
+ tx_excessive_retries: _builtins.int
1947
+ ipv4_address: _builtins.str
1948
+ ipv6_address: _builtins.str
1949
+ @_builtins.property
1950
+ def updated_ts(self) -> _timestamp_pb2.Timestamp: ...
1951
+ def __init__(
1952
+ self,
1953
+ *,
1954
+ wifi_state: Global___WifiConnectionState.ValueType = ...,
1955
+ ssid: _builtins.str = ...,
1956
+ bssid: _builtins.str = ...,
1957
+ frequency_mhz: _builtins.int = ...,
1958
+ passphrase: _builtins.str = ...,
1959
+ signal_level_dbm: _builtins.int = ...,
1960
+ noise_level_dbm: _builtins.int = ...,
1961
+ rx_invalid_frag: _builtins.int = ...,
1962
+ tx_excessive_retries: _builtins.int = ...,
1963
+ ipv4_address: _builtins.str = ...,
1964
+ ipv6_address: _builtins.str = ...,
1965
+ updated_ts: _timestamp_pb2.Timestamp | None = ...,
1966
+ ) -> None: ...
1967
+ _HasFieldArgType: _TypeAlias = _typing.Literal["updated_ts", b"updated_ts"] # noqa: Y015
1968
+ def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ...
1969
+ _ClearFieldArgType: _TypeAlias = _typing.Literal["bssid", b"bssid", "frequency_mhz", b"frequency_mhz", "ipv4_address", b"ipv4_address", "ipv6_address", b"ipv6_address", "noise_level_dbm", b"noise_level_dbm", "passphrase", b"passphrase", "rx_invalid_frag", b"rx_invalid_frag", "signal_level_dbm", b"signal_level_dbm", "ssid", b"ssid", "tx_excessive_retries", b"tx_excessive_retries", "updated_ts", b"updated_ts", "wifi_state", b"wifi_state"] # noqa: Y015
1970
+ def ClearField(self, field_name: _ClearFieldArgType) -> None: ...
1971
+ def WhichOneof(self, oneof_group: _Never) -> None: ...
1972
+
1973
+ Global___WifiState: _TypeAlias = WifiState # noqa: Y015
1974
+
1975
+ @_typing.final
1976
+ class ControllerHardwareAttributes(_message.Message):
1977
+ """Wire-confirmed from hardware capture: modelSku=1, serialNumber=2, productionTs=3, firmwareVersion=4, updatedTs=5."""
1978
+
1979
+ DESCRIPTOR: _descriptor.Descriptor
1980
+
1981
+ MODEL_SKU_FIELD_NUMBER: _builtins.int
1982
+ SERIAL_NUMBER_FIELD_NUMBER: _builtins.int
1983
+ PRODUCTION_TS_FIELD_NUMBER: _builtins.int
1984
+ FIRMWARE_VERSION_FIELD_NUMBER: _builtins.int
1985
+ UPDATED_TS_FIELD_NUMBER: _builtins.int
1986
+ model_sku: _builtins.str
1987
+ serial_number: _builtins.str
1988
+ firmware_version: _builtins.str
1989
+ @_builtins.property
1990
+ def production_ts(self) -> _timestamp_pb2.Timestamp: ...
1991
+ @_builtins.property
1992
+ def updated_ts(self) -> _timestamp_pb2.Timestamp: ...
1993
+ def __init__(
1994
+ self,
1995
+ *,
1996
+ model_sku: _builtins.str = ...,
1997
+ serial_number: _builtins.str = ...,
1998
+ production_ts: _timestamp_pb2.Timestamp | None = ...,
1999
+ firmware_version: _builtins.str = ...,
2000
+ updated_ts: _timestamp_pb2.Timestamp | None = ...,
2001
+ ) -> None: ...
2002
+ _HasFieldArgType: _TypeAlias = _typing.Literal["production_ts", b"production_ts", "updated_ts", b"updated_ts"] # noqa: Y015
2003
+ def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ...
2004
+ _ClearFieldArgType: _TypeAlias = _typing.Literal["firmware_version", b"firmware_version", "model_sku", b"model_sku", "production_ts", b"production_ts", "serial_number", b"serial_number", "updated_ts", b"updated_ts"] # noqa: Y015
2005
+ def ClearField(self, field_name: _ClearFieldArgType) -> None: ...
2006
+ def WhichOneof(self, oneof_group: _Never) -> None: ...
2007
+
2008
+ Global___ControllerHardwareAttributes: _TypeAlias = ControllerHardwareAttributes # noqa: Y015
2009
+
2010
+ @_typing.final
2011
+ class ControllerHardware(_message.Message):
2012
+ DESCRIPTOR: _descriptor.Descriptor
2013
+
2014
+ HEADER_FIELD_NUMBER: _builtins.int
2015
+ ATTRIBUTES_FIELD_NUMBER: _builtins.int
2016
+ @_builtins.property
2017
+ def header(self) -> Global___EntityMetadata:
2018
+ """wire-confirmed: f1"""
2019
+
2020
+ @_builtins.property
2021
+ def attributes(self) -> Global___ControllerHardwareAttributes:
2022
+ """wire-confirmed: f2 (replaces ControllerHardwareSpecs)"""
2023
+
2024
+ def __init__(
2025
+ self,
2026
+ *,
2027
+ header: Global___EntityMetadata | None = ...,
2028
+ attributes: Global___ControllerHardwareAttributes | None = ...,
2029
+ ) -> None: ...
2030
+ _HasFieldArgType: _TypeAlias = _typing.Literal["attributes", b"attributes", "header", b"header"] # noqa: Y015
2031
+ def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ...
2032
+ _ClearFieldArgType: _TypeAlias = _typing.Literal["attributes", b"attributes", "header", b"header"] # noqa: Y015
2033
+ def ClearField(self, field_name: _ClearFieldArgType) -> None: ...
2034
+ def WhichOneof(self, oneof_group: _Never) -> None: ...
2035
+
2036
+ Global___ControllerHardware: _TypeAlias = ControllerHardware # noqa: Y015
2037
+
2038
+ @_typing.final
2039
+ class Controller(_message.Message):
2040
+ """APK-confirmed field layout (C5331pI.java):
2041
+ header=1, relationships=2, settings=3, state=4,
2042
+ hosted_wifi_state=5, ap_wifi_state=6, p2p_wifi_state=7, controls=8.
2043
+ """
2044
+
2045
+ DESCRIPTOR: _descriptor.Descriptor
2046
+
2047
+ HEADER_FIELD_NUMBER: _builtins.int
2048
+ RELATIONSHIPS_FIELD_NUMBER: _builtins.int
2049
+ SETTINGS_FIELD_NUMBER: _builtins.int
2050
+ STATE_FIELD_NUMBER: _builtins.int
2051
+ HOSTED_WIFI_STATE_FIELD_NUMBER: _builtins.int
2052
+ AP_WIFI_STATE_FIELD_NUMBER: _builtins.int
2053
+ P2P_WIFI_STATE_FIELD_NUMBER: _builtins.int
2054
+ CONTROLS_FIELD_NUMBER: _builtins.int
2055
+ @_builtins.property
2056
+ def header(self) -> Global___EntityMetadata: ...
2057
+ @_builtins.property
2058
+ def relationships(self) -> Global___ControllerRelationships: ...
2059
+ @_builtins.property
2060
+ def settings(self) -> Global___ControllerSettings: ...
2061
+ @_builtins.property
2062
+ def state(self) -> Global___ControllerState: ...
2063
+ @_builtins.property
2064
+ def hosted_wifi_state(self) -> Global___WifiState:
2065
+ """the AP the controller itself creates for devices"""
2066
+
2067
+ @_builtins.property
2068
+ def ap_wifi_state(self) -> Global___WifiState:
2069
+ """the upstream AP the controller connects to"""
2070
+
2071
+ @_builtins.property
2072
+ def p2p_wifi_state(self) -> Global___WifiState:
2073
+ """peer-to-peer WiFi (usually empty)"""
2074
+
2075
+ @_builtins.property
2076
+ def controls(self) -> Global___ControllerControls: ...
2077
+ def __init__(
2078
+ self,
2079
+ *,
2080
+ header: Global___EntityMetadata | None = ...,
2081
+ relationships: Global___ControllerRelationships | None = ...,
2082
+ settings: Global___ControllerSettings | None = ...,
2083
+ state: Global___ControllerState | None = ...,
2084
+ hosted_wifi_state: Global___WifiState | None = ...,
2085
+ ap_wifi_state: Global___WifiState | None = ...,
2086
+ p2p_wifi_state: Global___WifiState | None = ...,
2087
+ controls: Global___ControllerControls | None = ...,
2088
+ ) -> None: ...
2089
+ _HasFieldArgType: _TypeAlias = _typing.Literal["ap_wifi_state", b"ap_wifi_state", "controls", b"controls", "header", b"header", "hosted_wifi_state", b"hosted_wifi_state", "p2p_wifi_state", b"p2p_wifi_state", "relationships", b"relationships", "settings", b"settings", "state", b"state"] # noqa: Y015
2090
+ def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ...
2091
+ _ClearFieldArgType: _TypeAlias = _typing.Literal["ap_wifi_state", b"ap_wifi_state", "controls", b"controls", "header", b"header", "hosted_wifi_state", b"hosted_wifi_state", "p2p_wifi_state", b"p2p_wifi_state", "relationships", b"relationships", "settings", b"settings", "state", b"state"] # noqa: Y015
2092
+ def ClearField(self, field_name: _ClearFieldArgType) -> None: ...
2093
+ def WhichOneof(self, oneof_group: _Never) -> None: ...
2094
+
2095
+ Global___Controller: _TypeAlias = Controller # noqa: Y015
2096
+
2097
+ @_typing.final
2098
+ class RemoteSensorAttributes(_message.Message):
2099
+ """---------------------------------------------------------------------------
2100
+ Remote Sensor (BLE temperature/humidity sensor)
2101
+ ---------------------------------------------------------------------------
2102
+
2103
+ APK-confirmed (C5921sL.java): MAC_FIELD_NUMBER=1, UPDATED_TS_FIELD_NUMBER=2.
2104
+ APK-confirmed (C5921sL.java): MAC_FIELD_NUMBER=1, UPDATED_TS_FIELD_NUMBER=2.
2105
+ Shared by both RemoteSensor and ControllerRemoteSensor.
2106
+ """
2107
+
2108
+ DESCRIPTOR: _descriptor.Descriptor
2109
+
2110
+ MAC_FIELD_NUMBER: _builtins.int
2111
+ UPDATED_TS_FIELD_NUMBER: _builtins.int
2112
+ mac: _builtins.str
2113
+ """APK: MAC_FIELD_NUMBER=1"""
2114
+ @_builtins.property
2115
+ def updated_ts(self) -> _timestamp_pb2.Timestamp:
2116
+ """APK: UPDATED_TS_FIELD_NUMBER=2"""
2117
+
2118
+ def __init__(
2119
+ self,
2120
+ *,
2121
+ mac: _builtins.str = ...,
2122
+ updated_ts: _timestamp_pb2.Timestamp | None = ...,
2123
+ ) -> None: ...
2124
+ _HasFieldArgType: _TypeAlias = _typing.Literal["updated_ts", b"updated_ts"] # noqa: Y015
2125
+ def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ...
2126
+ _ClearFieldArgType: _TypeAlias = _typing.Literal["mac", b"mac", "updated_ts", b"updated_ts"] # noqa: Y015
2127
+ def ClearField(self, field_name: _ClearFieldArgType) -> None: ...
2128
+ def WhichOneof(self, oneof_group: _Never) -> None: ...
2129
+
2130
+ Global___RemoteSensorAttributes: _TypeAlias = RemoteSensorAttributes # noqa: Y015
2131
+
2132
+ @_typing.final
2133
+ class RemoteSensorState(_message.Message):
2134
+ """APK-confirmed (AL.java): ambient_temp=1, humidity=2, updated_ts=3, battery=4, signal=5.
2135
+ Shared by both RemoteSensor and ControllerRemoteSensor.
2136
+ """
2137
+
2138
+ DESCRIPTOR: _descriptor.Descriptor
2139
+
2140
+ AMBIENT_TEMPERATURE_C_FIELD_NUMBER: _builtins.int
2141
+ HUMIDITY_PERCENT_FIELD_NUMBER: _builtins.int
2142
+ UPDATED_TS_FIELD_NUMBER: _builtins.int
2143
+ BATTERY_LEVEL_PERCENT_FIELD_NUMBER: _builtins.int
2144
+ SIGNAL_LEVEL_DBM_FIELD_NUMBER: _builtins.int
2145
+ ambient_temperature_c: _builtins.float
2146
+ """APK: AMBIENT_TEMPERATURE_C_FIELD_NUMBER=1"""
2147
+ humidity_percent: _builtins.float
2148
+ """APK: HUMIDITY_PERCENT_FIELD_NUMBER=2"""
2149
+ battery_level_percent: _builtins.float
2150
+ """APK: BATTERY_LEVEL_PERCENT_FIELD_NUMBER=4"""
2151
+ signal_level_dbm: _builtins.int
2152
+ """APK: SIGNAL_LEVEL_DBM_FIELD_NUMBER=5"""
2153
+ @_builtins.property
2154
+ def updated_ts(self) -> _timestamp_pb2.Timestamp:
2155
+ """APK: UPDATED_TS_FIELD_NUMBER=3"""
2156
+
2157
+ def __init__(
2158
+ self,
2159
+ *,
2160
+ ambient_temperature_c: _builtins.float = ...,
2161
+ humidity_percent: _builtins.float = ...,
2162
+ updated_ts: _timestamp_pb2.Timestamp | None = ...,
2163
+ battery_level_percent: _builtins.float = ...,
2164
+ signal_level_dbm: _builtins.int = ...,
2165
+ ) -> None: ...
2166
+ _HasFieldArgType: _TypeAlias = _typing.Literal["updated_ts", b"updated_ts"] # noqa: Y015
2167
+ def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ...
2168
+ _ClearFieldArgType: _TypeAlias = _typing.Literal["ambient_temperature_c", b"ambient_temperature_c", "battery_level_percent", b"battery_level_percent", "humidity_percent", b"humidity_percent", "signal_level_dbm", b"signal_level_dbm", "updated_ts", b"updated_ts"] # noqa: Y015
2169
+ def ClearField(self, field_name: _ClearFieldArgType) -> None: ...
2170
+ def WhichOneof(self, oneof_group: _Never) -> None: ...
2171
+
2172
+ Global___RemoteSensorState: _TypeAlias = RemoteSensorState # noqa: Y015
2173
+
2174
+ @_typing.final
2175
+ class RemoteSensorRelationships(_message.Message):
2176
+ """APK-confirmed (C7085yL.java): indoor_unit_id=1, updated_ts=2.
2177
+ Used by standalone RemoteSensor (field 12 in HomeDatastoreSystem).
2178
+ """
2179
+
2180
+ DESCRIPTOR: _descriptor.Descriptor
2181
+
2182
+ INDOOR_UNIT_ID_FIELD_NUMBER: _builtins.int
2183
+ UPDATED_TS_FIELD_NUMBER: _builtins.int
2184
+ indoor_unit_id: _builtins.str
2185
+ """APK: INDOOR_UNIT_ID_FIELD_NUMBER=1"""
2186
+ @_builtins.property
2187
+ def updated_ts(self) -> _timestamp_pb2.Timestamp: ...
2188
+ def __init__(
2189
+ self,
2190
+ *,
2191
+ indoor_unit_id: _builtins.str = ...,
2192
+ updated_ts: _timestamp_pb2.Timestamp | None = ...,
2193
+ ) -> None: ...
2194
+ _HasFieldArgType: _TypeAlias = _typing.Literal["updated_ts", b"updated_ts"] # noqa: Y015
2195
+ def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ...
2196
+ _ClearFieldArgType: _TypeAlias = _typing.Literal["indoor_unit_id", b"indoor_unit_id", "updated_ts", b"updated_ts"] # noqa: Y015
2197
+ def ClearField(self, field_name: _ClearFieldArgType) -> None: ...
2198
+ def WhichOneof(self, oneof_group: _Never) -> None: ...
2199
+
2200
+ Global___RemoteSensorRelationships: _TypeAlias = RemoteSensorRelationships # noqa: Y015
2201
+
2202
+ @_typing.final
2203
+ class ControllerRemoteSensorRelationships(_message.Message):
2204
+ """APK-confirmed (FI.java): controller_id=1, updated_ts=2.
2205
+ Used by ControllerRemoteSensor (field 16 in HomeDatastoreSystem).
2206
+ """
2207
+
2208
+ DESCRIPTOR: _descriptor.Descriptor
2209
+
2210
+ CONTROLLER_ID_FIELD_NUMBER: _builtins.int
2211
+ UPDATED_TS_FIELD_NUMBER: _builtins.int
2212
+ controller_id: _builtins.str
2213
+ """APK: CONTROLLER_ID_FIELD_NUMBER=1"""
2214
+ @_builtins.property
2215
+ def updated_ts(self) -> _timestamp_pb2.Timestamp: ...
2216
+ def __init__(
2217
+ self,
2218
+ *,
2219
+ controller_id: _builtins.str = ...,
2220
+ updated_ts: _timestamp_pb2.Timestamp | None = ...,
2221
+ ) -> None: ...
2222
+ _HasFieldArgType: _TypeAlias = _typing.Literal["updated_ts", b"updated_ts"] # noqa: Y015
2223
+ def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ...
2224
+ _ClearFieldArgType: _TypeAlias = _typing.Literal["controller_id", b"controller_id", "updated_ts", b"updated_ts"] # noqa: Y015
2225
+ def ClearField(self, field_name: _ClearFieldArgType) -> None: ...
2226
+ def WhichOneof(self, oneof_group: _Never) -> None: ...
2227
+
2228
+ Global___ControllerRemoteSensorRelationships: _TypeAlias = ControllerRemoteSensorRelationships # noqa: Y015
2229
+
2230
+ @_typing.final
2231
+ class RemoteSensorControls(_message.Message):
2232
+ """APK-confirmed (C6503vL.java): updated_ts=1, control_mode=2.
2233
+ Shared by both RemoteSensor and ControllerRemoteSensor.
2234
+ """
2235
+
2236
+ DESCRIPTOR: _descriptor.Descriptor
2237
+
2238
+ UPDATED_TS_FIELD_NUMBER: _builtins.int
2239
+ CONTROL_MODE_FIELD_NUMBER: _builtins.int
2240
+ control_mode: Global___RemoteSensorControlMode.ValueType
2241
+ """APK: CONTROL_MODE_FIELD_NUMBER=2"""
2242
+ @_builtins.property
2243
+ def updated_ts(self) -> _timestamp_pb2.Timestamp:
2244
+ """APK: UPDATED_TS_FIELD_NUMBER=1"""
2245
+
2246
+ def __init__(
2247
+ self,
2248
+ *,
2249
+ updated_ts: _timestamp_pb2.Timestamp | None = ...,
2250
+ control_mode: Global___RemoteSensorControlMode.ValueType = ...,
2251
+ ) -> None: ...
2252
+ _HasFieldArgType: _TypeAlias = _typing.Literal["updated_ts", b"updated_ts"] # noqa: Y015
2253
+ def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ...
2254
+ _ClearFieldArgType: _TypeAlias = _typing.Literal["control_mode", b"control_mode", "updated_ts", b"updated_ts"] # noqa: Y015
2255
+ def ClearField(self, field_name: _ClearFieldArgType) -> None: ...
2256
+ def WhichOneof(self, oneof_group: _Never) -> None: ...
2257
+
2258
+ Global___RemoteSensorControls: _TypeAlias = RemoteSensorControls # noqa: Y015
2259
+
2260
+ @_typing.final
2261
+ class RemoteSensor(_message.Message):
2262
+ """APK-confirmed (C5534qL.java): header=1, attributes=2, state=3, relationships=4, controls=5.
2263
+ Standalone remote sensor linked to an IndoorUnit (field 12 in HomeDatastoreSystem).
2264
+ Not present in installations without paired remote sensors.
2265
+ """
2266
+
2267
+ DESCRIPTOR: _descriptor.Descriptor
2268
+
2269
+ HEADER_FIELD_NUMBER: _builtins.int
2270
+ ATTRIBUTES_FIELD_NUMBER: _builtins.int
2271
+ STATE_FIELD_NUMBER: _builtins.int
2272
+ RELATIONSHIPS_FIELD_NUMBER: _builtins.int
2273
+ CONTROLS_FIELD_NUMBER: _builtins.int
2274
+ @_builtins.property
2275
+ def header(self) -> Global___EntityMetadata: ...
2276
+ @_builtins.property
2277
+ def attributes(self) -> Global___RemoteSensorAttributes: ...
2278
+ @_builtins.property
2279
+ def state(self) -> Global___RemoteSensorState: ...
2280
+ @_builtins.property
2281
+ def relationships(self) -> Global___RemoteSensorRelationships:
2282
+ """links to indoor_unit_id"""
2283
+
2284
+ @_builtins.property
2285
+ def controls(self) -> Global___RemoteSensorControls: ...
2286
+ def __init__(
2287
+ self,
2288
+ *,
2289
+ header: Global___EntityMetadata | None = ...,
2290
+ attributes: Global___RemoteSensorAttributes | None = ...,
2291
+ state: Global___RemoteSensorState | None = ...,
2292
+ relationships: Global___RemoteSensorRelationships | None = ...,
2293
+ controls: Global___RemoteSensorControls | None = ...,
2294
+ ) -> None: ...
2295
+ _HasFieldArgType: _TypeAlias = _typing.Literal["attributes", b"attributes", "controls", b"controls", "header", b"header", "relationships", b"relationships", "state", b"state"] # noqa: Y015
2296
+ def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ...
2297
+ _ClearFieldArgType: _TypeAlias = _typing.Literal["attributes", b"attributes", "controls", b"controls", "header", b"header", "relationships", b"relationships", "state", b"state"] # noqa: Y015
2298
+ def ClearField(self, field_name: _ClearFieldArgType) -> None: ...
2299
+ def WhichOneof(self, oneof_group: _Never) -> None: ...
2300
+
2301
+ Global___RemoteSensor: _TypeAlias = RemoteSensor # noqa: Y015
2302
+
2303
+ @_typing.final
2304
+ class ControllerRemoteSensor(_message.Message):
2305
+ """APK-confirmed (CI.java): header=1, attributes=2, state=3, relationships=4, controls=5.
2306
+ Sensor capability of a Controller (Dial) used for zone temperature control.
2307
+ Linked to a Controller via controller_id. Field 16 in HomeDatastoreSystem.
2308
+ Not present unless remote sensor control mode is configured on a Dial.
2309
+ """
2310
+
2311
+ DESCRIPTOR: _descriptor.Descriptor
2312
+
2313
+ HEADER_FIELD_NUMBER: _builtins.int
2314
+ ATTRIBUTES_FIELD_NUMBER: _builtins.int
2315
+ STATE_FIELD_NUMBER: _builtins.int
2316
+ RELATIONSHIPS_FIELD_NUMBER: _builtins.int
2317
+ CONTROLS_FIELD_NUMBER: _builtins.int
2318
+ @_builtins.property
2319
+ def header(self) -> Global___EntityMetadata: ...
2320
+ @_builtins.property
2321
+ def attributes(self) -> Global___RemoteSensorAttributes: ...
2322
+ @_builtins.property
2323
+ def state(self) -> Global___RemoteSensorState: ...
2324
+ @_builtins.property
2325
+ def relationships(self) -> Global___ControllerRemoteSensorRelationships:
2326
+ """links to controller_id"""
2327
+
2328
+ @_builtins.property
2329
+ def controls(self) -> Global___RemoteSensorControls: ...
2330
+ def __init__(
2331
+ self,
2332
+ *,
2333
+ header: Global___EntityMetadata | None = ...,
2334
+ attributes: Global___RemoteSensorAttributes | None = ...,
2335
+ state: Global___RemoteSensorState | None = ...,
2336
+ relationships: Global___ControllerRemoteSensorRelationships | None = ...,
2337
+ controls: Global___RemoteSensorControls | None = ...,
2338
+ ) -> None: ...
2339
+ _HasFieldArgType: _TypeAlias = _typing.Literal["attributes", b"attributes", "controls", b"controls", "header", b"header", "relationships", b"relationships", "state", b"state"] # noqa: Y015
2340
+ def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ...
2341
+ _ClearFieldArgType: _TypeAlias = _typing.Literal["attributes", b"attributes", "controls", b"controls", "header", b"header", "relationships", b"relationships", "state", b"state"] # noqa: Y015
2342
+ def ClearField(self, field_name: _ClearFieldArgType) -> None: ...
2343
+ def WhichOneof(self, oneof_group: _Never) -> None: ...
2344
+
2345
+ Global___ControllerRemoteSensor: _TypeAlias = ControllerRemoteSensor # noqa: Y015
2346
+
2347
+ @_typing.final
2348
+ class ComfortSettingAttributes(_message.Message):
2349
+ """---------------------------------------------------------------------------
2350
+ Comfort Setting
2351
+ ---------------------------------------------------------------------------
2352
+
2353
+ Wire-confirmed from quilt_office.proto.json: fan_speed is FLAT (fanSpeedMode + fanSpeedPercent),
2354
+ NOT nested FanSpeed sub-message. Field layout from JSON:
2355
+ updatedTs=1, name=2, fanSpeedMode=3(varint), fanSpeedPercent=4(float),
2356
+ heatingTemperatureSetpointC=5(float), coolingTemperatureSetpointC=6(float),
2357
+ type=7(varint), hvacMode=8(varint), louverMode=9(varint), louverFixedPosition=10(float).
2358
+ NOTE: Nested FanSpeed was WRONG — causes TYPE MISMATCH at f3.
2359
+ """
2360
+
2361
+ DESCRIPTOR: _descriptor.Descriptor
2362
+
2363
+ UPDATED_TS_FIELD_NUMBER: _builtins.int
2364
+ NAME_FIELD_NUMBER: _builtins.int
2365
+ FAN_SPEED_MODE_FIELD_NUMBER: _builtins.int
2366
+ FAN_SPEED_PERCENT_FIELD_NUMBER: _builtins.int
2367
+ HEATING_TEMPERATURE_SETPOINT_C_FIELD_NUMBER: _builtins.int
2368
+ COOLING_TEMPERATURE_SETPOINT_C_FIELD_NUMBER: _builtins.int
2369
+ TYPE_FIELD_NUMBER: _builtins.int
2370
+ HVAC_MODE_FIELD_NUMBER: _builtins.int
2371
+ LOUVER_MODE_FIELD_NUMBER: _builtins.int
2372
+ LOUVER_FIXED_POSITION_FIELD_NUMBER: _builtins.int
2373
+ name: _builtins.str
2374
+ fan_speed_mode: Global___FanSpeedMode.ValueType
2375
+ """flat varint, NOT nested sub-message"""
2376
+ fan_speed_percent: _builtins.float
2377
+ """flat float"""
2378
+ heating_temperature_setpoint_c: _builtins.float
2379
+ cooling_temperature_setpoint_c: _builtins.float
2380
+ type: Global___ComfortSettingType.ValueType
2381
+ hvac_mode: Global___HVACMode.ValueType
2382
+ louver_mode: Global___IndoorUnitLouverMode.ValueType
2383
+ louver_fixed_position: _builtins.float
2384
+ @_builtins.property
2385
+ def updated_ts(self) -> _timestamp_pb2.Timestamp: ...
2386
+ def __init__(
2387
+ self,
2388
+ *,
2389
+ updated_ts: _timestamp_pb2.Timestamp | None = ...,
2390
+ name: _builtins.str = ...,
2391
+ fan_speed_mode: Global___FanSpeedMode.ValueType = ...,
2392
+ fan_speed_percent: _builtins.float = ...,
2393
+ heating_temperature_setpoint_c: _builtins.float = ...,
2394
+ cooling_temperature_setpoint_c: _builtins.float = ...,
2395
+ type: Global___ComfortSettingType.ValueType = ...,
2396
+ hvac_mode: Global___HVACMode.ValueType = ...,
2397
+ louver_mode: Global___IndoorUnitLouverMode.ValueType = ...,
2398
+ louver_fixed_position: _builtins.float = ...,
2399
+ ) -> None: ...
2400
+ _HasFieldArgType: _TypeAlias = _typing.Literal["updated_ts", b"updated_ts"] # noqa: Y015
2401
+ def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ...
2402
+ _ClearFieldArgType: _TypeAlias = _typing.Literal["cooling_temperature_setpoint_c", b"cooling_temperature_setpoint_c", "fan_speed_mode", b"fan_speed_mode", "fan_speed_percent", b"fan_speed_percent", "heating_temperature_setpoint_c", b"heating_temperature_setpoint_c", "hvac_mode", b"hvac_mode", "louver_fixed_position", b"louver_fixed_position", "louver_mode", b"louver_mode", "name", b"name", "type", b"type", "updated_ts", b"updated_ts"] # noqa: Y015
2403
+ def ClearField(self, field_name: _ClearFieldArgType) -> None: ...
2404
+ def WhichOneof(self, oneof_group: _Never) -> None: ...
2405
+
2406
+ Global___ComfortSettingAttributes: _TypeAlias = ComfortSettingAttributes # noqa: Y015
2407
+
2408
+ @_typing.final
2409
+ class ComfortSettingRelationships(_message.Message):
2410
+ DESCRIPTOR: _descriptor.Descriptor
2411
+
2412
+ UPDATED_TS_FIELD_NUMBER: _builtins.int
2413
+ SPACE_ID_FIELD_NUMBER: _builtins.int
2414
+ space_id: _builtins.str
2415
+ @_builtins.property
2416
+ def updated_ts(self) -> _timestamp_pb2.Timestamp: ...
2417
+ def __init__(
2418
+ self,
2419
+ *,
2420
+ updated_ts: _timestamp_pb2.Timestamp | None = ...,
2421
+ space_id: _builtins.str = ...,
2422
+ ) -> None: ...
2423
+ _HasFieldArgType: _TypeAlias = _typing.Literal["updated_ts", b"updated_ts"] # noqa: Y015
2424
+ def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ...
2425
+ _ClearFieldArgType: _TypeAlias = _typing.Literal["space_id", b"space_id", "updated_ts", b"updated_ts"] # noqa: Y015
2426
+ def ClearField(self, field_name: _ClearFieldArgType) -> None: ...
2427
+ def WhichOneof(self, oneof_group: _Never) -> None: ...
2428
+
2429
+ Global___ComfortSettingRelationships: _TypeAlias = ComfortSettingRelationships # noqa: Y015
2430
+
2431
+ @_typing.final
2432
+ class ComfortSetting(_message.Message):
2433
+ """Wire-confirmed: header=1, attributes=2, relationships=3."""
2434
+
2435
+ DESCRIPTOR: _descriptor.Descriptor
2436
+
2437
+ HEADER_FIELD_NUMBER: _builtins.int
2438
+ ATTRIBUTES_FIELD_NUMBER: _builtins.int
2439
+ RELATIONSHIPS_FIELD_NUMBER: _builtins.int
2440
+ @_builtins.property
2441
+ def header(self) -> Global___EntityMetadata: ...
2442
+ @_builtins.property
2443
+ def attributes(self) -> Global___ComfortSettingAttributes: ...
2444
+ @_builtins.property
2445
+ def relationships(self) -> Global___ComfortSettingRelationships: ...
2446
+ def __init__(
2447
+ self,
2448
+ *,
2449
+ header: Global___EntityMetadata | None = ...,
2450
+ attributes: Global___ComfortSettingAttributes | None = ...,
2451
+ relationships: Global___ComfortSettingRelationships | None = ...,
2452
+ ) -> None: ...
2453
+ _HasFieldArgType: _TypeAlias = _typing.Literal["attributes", b"attributes", "header", b"header", "relationships", b"relationships"] # noqa: Y015
2454
+ def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ...
2455
+ _ClearFieldArgType: _TypeAlias = _typing.Literal["attributes", b"attributes", "header", b"header", "relationships", b"relationships"] # noqa: Y015
2456
+ def ClearField(self, field_name: _ClearFieldArgType) -> None: ...
2457
+ def WhichOneof(self, oneof_group: _Never) -> None: ...
2458
+
2459
+ Global___ComfortSetting: _TypeAlias = ComfortSetting # noqa: Y015
2460
+
2461
+ @_typing.final
2462
+ class LedScheduleEvent(_message.Message):
2463
+ """---------------------------------------------------------------------------
2464
+ Schedule
2465
+ ---------------------------------------------------------------------------
2466
+
2467
+ ScheduleEvent: fan_speed is also FLAT here (fanSpeedMode + fanSpeedPercent), not nested.
2468
+ """
2469
+
2470
+ DESCRIPTOR: _descriptor.Descriptor
2471
+
2472
+ UPDATED_TS_FIELD_NUMBER: _builtins.int
2473
+ START_S_FIELD_NUMBER: _builtins.int
2474
+ LED_COLOR_CODE_FIELD_NUMBER: _builtins.int
2475
+ LED_COLOR_BRIGHTNESS_PERCENT_FIELD_NUMBER: _builtins.int
2476
+ ANIMATION_FIELD_NUMBER: _builtins.int
2477
+ start_s: _builtins.int
2478
+ led_color_code: _builtins.int
2479
+ """flat LED color code (matches IndoorUnitControls pattern)"""
2480
+ led_color_brightness_percent: _builtins.float
2481
+ animation: Global___LightAnimation.ValueType
2482
+ @_builtins.property
2483
+ def updated_ts(self) -> _timestamp_pb2.Timestamp: ...
2484
+ def __init__(
2485
+ self,
2486
+ *,
2487
+ updated_ts: _timestamp_pb2.Timestamp | None = ...,
2488
+ start_s: _builtins.int = ...,
2489
+ led_color_code: _builtins.int = ...,
2490
+ led_color_brightness_percent: _builtins.float = ...,
2491
+ animation: Global___LightAnimation.ValueType = ...,
2492
+ ) -> None: ...
2493
+ _HasFieldArgType: _TypeAlias = _typing.Literal["updated_ts", b"updated_ts"] # noqa: Y015
2494
+ def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ...
2495
+ _ClearFieldArgType: _TypeAlias = _typing.Literal["animation", b"animation", "led_color_brightness_percent", b"led_color_brightness_percent", "led_color_code", b"led_color_code", "start_s", b"start_s", "updated_ts", b"updated_ts"] # noqa: Y015
2496
+ def ClearField(self, field_name: _ClearFieldArgType) -> None: ...
2497
+ def WhichOneof(self, oneof_group: _Never) -> None: ...
2498
+
2499
+ Global___LedScheduleEvent: _TypeAlias = LedScheduleEvent # noqa: Y015
2500
+
2501
+ @_typing.final
2502
+ class ScheduleEvent(_message.Message):
2503
+ DESCRIPTOR: _descriptor.Descriptor
2504
+
2505
+ UPDATED_TS_FIELD_NUMBER: _builtins.int
2506
+ COMFORT_SETTING_ID_FIELD_NUMBER: _builtins.int
2507
+ START_S_FIELD_NUMBER: _builtins.int
2508
+ PRECONDITION_FIELD_NUMBER: _builtins.int
2509
+ SCHEDULE_EXECUTION_FIELD_NUMBER: _builtins.int
2510
+ FAN_SPEED_MODE_FIELD_NUMBER: _builtins.int
2511
+ FAN_SPEED_PERCENT_FIELD_NUMBER: _builtins.int
2512
+ HEATING_TEMPERATURE_SETPOINT_C_FIELD_NUMBER: _builtins.int
2513
+ COOLING_TEMPERATURE_SETPOINT_C_FIELD_NUMBER: _builtins.int
2514
+ HVAC_MODE_FIELD_NUMBER: _builtins.int
2515
+ LOUVER_MODE_FIELD_NUMBER: _builtins.int
2516
+ LOUVER_FIXED_POSITION_FIELD_NUMBER: _builtins.int
2517
+ comfort_setting_id: _builtins.str
2518
+ start_s: _builtins.int
2519
+ """seconds from midnight"""
2520
+ precondition: _builtins.bool
2521
+ schedule_execution: Global___ScheduleExecution.ValueType
2522
+ fan_speed_mode: Global___FanSpeedMode.ValueType
2523
+ """flat varint"""
2524
+ fan_speed_percent: _builtins.float
2525
+ """flat float"""
2526
+ heating_temperature_setpoint_c: _builtins.float
2527
+ cooling_temperature_setpoint_c: _builtins.float
2528
+ hvac_mode: Global___HVACMode.ValueType
2529
+ louver_mode: Global___IndoorUnitLouverMode.ValueType
2530
+ louver_fixed_position: _builtins.float
2531
+ @_builtins.property
2532
+ def updated_ts(self) -> _timestamp_pb2.Timestamp: ...
2533
+ def __init__(
2534
+ self,
2535
+ *,
2536
+ updated_ts: _timestamp_pb2.Timestamp | None = ...,
2537
+ comfort_setting_id: _builtins.str = ...,
2538
+ start_s: _builtins.int = ...,
2539
+ precondition: _builtins.bool = ...,
2540
+ schedule_execution: Global___ScheduleExecution.ValueType = ...,
2541
+ fan_speed_mode: Global___FanSpeedMode.ValueType = ...,
2542
+ fan_speed_percent: _builtins.float = ...,
2543
+ heating_temperature_setpoint_c: _builtins.float = ...,
2544
+ cooling_temperature_setpoint_c: _builtins.float = ...,
2545
+ hvac_mode: Global___HVACMode.ValueType = ...,
2546
+ louver_mode: Global___IndoorUnitLouverMode.ValueType = ...,
2547
+ louver_fixed_position: _builtins.float = ...,
2548
+ ) -> None: ...
2549
+ _HasFieldArgType: _TypeAlias = _typing.Literal["updated_ts", b"updated_ts"] # noqa: Y015
2550
+ def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ...
2551
+ _ClearFieldArgType: _TypeAlias = _typing.Literal["comfort_setting_id", b"comfort_setting_id", "cooling_temperature_setpoint_c", b"cooling_temperature_setpoint_c", "fan_speed_mode", b"fan_speed_mode", "fan_speed_percent", b"fan_speed_percent", "heating_temperature_setpoint_c", b"heating_temperature_setpoint_c", "hvac_mode", b"hvac_mode", "louver_fixed_position", b"louver_fixed_position", "louver_mode", b"louver_mode", "precondition", b"precondition", "schedule_execution", b"schedule_execution", "start_s", b"start_s", "updated_ts", b"updated_ts"] # noqa: Y015
2552
+ def ClearField(self, field_name: _ClearFieldArgType) -> None: ...
2553
+ def WhichOneof(self, oneof_group: _Never) -> None: ...
2554
+
2555
+ Global___ScheduleEvent: _TypeAlias = ScheduleEvent # noqa: Y015
2556
+
2557
+ @_typing.final
2558
+ class ScheduleDayAttributes(_message.Message):
2559
+ DESCRIPTOR: _descriptor.Descriptor
2560
+
2561
+ UPDATED_TS_FIELD_NUMBER: _builtins.int
2562
+ NAME_FIELD_NUMBER: _builtins.int
2563
+ name: _builtins.str
2564
+ @_builtins.property
2565
+ def updated_ts(self) -> _timestamp_pb2.Timestamp: ...
2566
+ def __init__(
2567
+ self,
2568
+ *,
2569
+ updated_ts: _timestamp_pb2.Timestamp | None = ...,
2570
+ name: _builtins.str = ...,
2571
+ ) -> None: ...
2572
+ _HasFieldArgType: _TypeAlias = _typing.Literal["updated_ts", b"updated_ts"] # noqa: Y015
2573
+ def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ...
2574
+ _ClearFieldArgType: _TypeAlias = _typing.Literal["name", b"name", "updated_ts", b"updated_ts"] # noqa: Y015
2575
+ def ClearField(self, field_name: _ClearFieldArgType) -> None: ...
2576
+ def WhichOneof(self, oneof_group: _Never) -> None: ...
2577
+
2578
+ Global___ScheduleDayAttributes: _TypeAlias = ScheduleDayAttributes # noqa: Y015
2579
+
2580
+ @_typing.final
2581
+ class ScheduleDayRelationships(_message.Message):
2582
+ DESCRIPTOR: _descriptor.Descriptor
2583
+
2584
+ UPDATED_TS_FIELD_NUMBER: _builtins.int
2585
+ SPACE_ID_FIELD_NUMBER: _builtins.int
2586
+ space_id: _builtins.str
2587
+ @_builtins.property
2588
+ def updated_ts(self) -> _timestamp_pb2.Timestamp: ...
2589
+ def __init__(
2590
+ self,
2591
+ *,
2592
+ updated_ts: _timestamp_pb2.Timestamp | None = ...,
2593
+ space_id: _builtins.str = ...,
2594
+ ) -> None: ...
2595
+ _HasFieldArgType: _TypeAlias = _typing.Literal["updated_ts", b"updated_ts"] # noqa: Y015
2596
+ def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ...
2597
+ _ClearFieldArgType: _TypeAlias = _typing.Literal["space_id", b"space_id", "updated_ts", b"updated_ts"] # noqa: Y015
2598
+ def ClearField(self, field_name: _ClearFieldArgType) -> None: ...
2599
+ def WhichOneof(self, oneof_group: _Never) -> None: ...
2600
+
2601
+ Global___ScheduleDayRelationships: _TypeAlias = ScheduleDayRelationships # noqa: Y015
2602
+
2603
+ @_typing.final
2604
+ class ScheduleDay(_message.Message):
2605
+ """APK-confirmed (DL.java): EVENTS_FIELD_NUMBER=3, RELATIONSHIPS_FIELD_NUMBER=4.
2606
+ (Earlier proto.json source had these swapped — APK takes precedence.)
2607
+ """
2608
+
2609
+ DESCRIPTOR: _descriptor.Descriptor
2610
+
2611
+ HEADER_FIELD_NUMBER: _builtins.int
2612
+ ATTRIBUTES_FIELD_NUMBER: _builtins.int
2613
+ EVENTS_FIELD_NUMBER: _builtins.int
2614
+ RELATIONSHIPS_FIELD_NUMBER: _builtins.int
2615
+ LED_EVENTS_FIELD_NUMBER: _builtins.int
2616
+ @_builtins.property
2617
+ def header(self) -> Global___EntityMetadata: ...
2618
+ @_builtins.property
2619
+ def attributes(self) -> Global___ScheduleDayAttributes: ...
2620
+ @_builtins.property
2621
+ def events(self) -> _containers.RepeatedCompositeFieldContainer[Global___ScheduleEvent]: ...
2622
+ @_builtins.property
2623
+ def relationships(self) -> Global___ScheduleDayRelationships: ...
2624
+ @_builtins.property
2625
+ def led_events(self) -> _containers.RepeatedCompositeFieldContainer[Global___LedScheduleEvent]: ...
2626
+ def __init__(
2627
+ self,
2628
+ *,
2629
+ header: Global___EntityMetadata | None = ...,
2630
+ attributes: Global___ScheduleDayAttributes | None = ...,
2631
+ events: _abc.Iterable[Global___ScheduleEvent] | None = ...,
2632
+ relationships: Global___ScheduleDayRelationships | None = ...,
2633
+ led_events: _abc.Iterable[Global___LedScheduleEvent] | None = ...,
2634
+ ) -> None: ...
2635
+ _HasFieldArgType: _TypeAlias = _typing.Literal["attributes", b"attributes", "header", b"header", "relationships", b"relationships"] # noqa: Y015
2636
+ def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ...
2637
+ _ClearFieldArgType: _TypeAlias = _typing.Literal["attributes", b"attributes", "events", b"events", "header", b"header", "led_events", b"led_events", "relationships", b"relationships"] # noqa: Y015
2638
+ def ClearField(self, field_name: _ClearFieldArgType) -> None: ...
2639
+ def WhichOneof(self, oneof_group: _Never) -> None: ...
2640
+
2641
+ Global___ScheduleDay: _TypeAlias = ScheduleDay # noqa: Y015
2642
+
2643
+ @_typing.final
2644
+ class ScheduleWeekDay(_message.Message):
2645
+ DESCRIPTOR: _descriptor.Descriptor
2646
+
2647
+ UPDATED_TS_FIELD_NUMBER: _builtins.int
2648
+ DAY_ID_FIELD_NUMBER: _builtins.int
2649
+ WEEKDAY_FIELD_NUMBER: _builtins.int
2650
+ day_id: _builtins.str
2651
+ weekday: Global___Weekday.ValueType
2652
+ @_builtins.property
2653
+ def updated_ts(self) -> _timestamp_pb2.Timestamp: ...
2654
+ def __init__(
2655
+ self,
2656
+ *,
2657
+ updated_ts: _timestamp_pb2.Timestamp | None = ...,
2658
+ day_id: _builtins.str = ...,
2659
+ weekday: Global___Weekday.ValueType = ...,
2660
+ ) -> None: ...
2661
+ _HasFieldArgType: _TypeAlias = _typing.Literal["updated_ts", b"updated_ts"] # noqa: Y015
2662
+ def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ...
2663
+ _ClearFieldArgType: _TypeAlias = _typing.Literal["day_id", b"day_id", "updated_ts", b"updated_ts", "weekday", b"weekday"] # noqa: Y015
2664
+ def ClearField(self, field_name: _ClearFieldArgType) -> None: ...
2665
+ def WhichOneof(self, oneof_group: _Never) -> None: ...
2666
+
2667
+ Global___ScheduleWeekDay: _TypeAlias = ScheduleWeekDay # noqa: Y015
2668
+
2669
+ @_typing.final
2670
+ class ScheduleWeekRelationships(_message.Message):
2671
+ DESCRIPTOR: _descriptor.Descriptor
2672
+
2673
+ UPDATED_TS_FIELD_NUMBER: _builtins.int
2674
+ SPACE_ID_FIELD_NUMBER: _builtins.int
2675
+ space_id: _builtins.str
2676
+ @_builtins.property
2677
+ def updated_ts(self) -> _timestamp_pb2.Timestamp: ...
2678
+ def __init__(
2679
+ self,
2680
+ *,
2681
+ updated_ts: _timestamp_pb2.Timestamp | None = ...,
2682
+ space_id: _builtins.str = ...,
2683
+ ) -> None: ...
2684
+ _HasFieldArgType: _TypeAlias = _typing.Literal["updated_ts", b"updated_ts"] # noqa: Y015
2685
+ def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ...
2686
+ _ClearFieldArgType: _TypeAlias = _typing.Literal["space_id", b"space_id", "updated_ts", b"updated_ts"] # noqa: Y015
2687
+ def ClearField(self, field_name: _ClearFieldArgType) -> None: ...
2688
+ def WhichOneof(self, oneof_group: _Never) -> None: ...
2689
+
2690
+ Global___ScheduleWeekRelationships: _TypeAlias = ScheduleWeekRelationships # noqa: Y015
2691
+
2692
+ @_typing.final
2693
+ class ScheduleWeek(_message.Message):
2694
+ """APK-confirmed (OL.java): DAYS_FIELD_NUMBER=2, RELATIONSHIPS_FIELD_NUMBER=3.
2695
+ (Earlier proto.json source had relationships=2, days=3 — APK takes precedence.)
2696
+ """
2697
+
2698
+ DESCRIPTOR: _descriptor.Descriptor
2699
+
2700
+ HEADER_FIELD_NUMBER: _builtins.int
2701
+ DAYS_FIELD_NUMBER: _builtins.int
2702
+ RELATIONSHIPS_FIELD_NUMBER: _builtins.int
2703
+ @_builtins.property
2704
+ def header(self) -> Global___EntityMetadata: ...
2705
+ @_builtins.property
2706
+ def days(self) -> _containers.RepeatedCompositeFieldContainer[Global___ScheduleWeekDay]: ...
2707
+ @_builtins.property
2708
+ def relationships(self) -> Global___ScheduleWeekRelationships: ...
2709
+ def __init__(
2710
+ self,
2711
+ *,
2712
+ header: Global___EntityMetadata | None = ...,
2713
+ days: _abc.Iterable[Global___ScheduleWeekDay] | None = ...,
2714
+ relationships: Global___ScheduleWeekRelationships | None = ...,
2715
+ ) -> None: ...
2716
+ _HasFieldArgType: _TypeAlias = _typing.Literal["header", b"header", "relationships", b"relationships"] # noqa: Y015
2717
+ def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ...
2718
+ _ClearFieldArgType: _TypeAlias = _typing.Literal["days", b"days", "header", b"header", "relationships", b"relationships"] # noqa: Y015
2719
+ def ClearField(self, field_name: _ClearFieldArgType) -> None: ...
2720
+ def WhichOneof(self, oneof_group: _Never) -> None: ...
2721
+
2722
+ Global___ScheduleWeek: _TypeAlias = ScheduleWeek # noqa: Y015
2723
+
2724
+ @_typing.final
2725
+ class QuiltSmartModuleRelationships(_message.Message):
2726
+ """---------------------------------------------------------------------------
2727
+ QuiltSmartModule (QSM — WiFi compute module embedded in every IDU)
2728
+ Wire-confirmed: field 7 in HomeDatastoreSystem (5 items for 5 IDUs)
2729
+ ---------------------------------------------------------------------------
2730
+ """
2731
+
2732
+ DESCRIPTOR: _descriptor.Descriptor
2733
+
2734
+ UPDATED_TS_FIELD_NUMBER: _builtins.int
2735
+ SOFTWARE_UPDATE_INFO_ID_FIELD_NUMBER: _builtins.int
2736
+ FIRMWARE_UPDATE_INFO_ID_FIELD_NUMBER: _builtins.int
2737
+ software_update_info_id: _builtins.str
2738
+ firmware_update_info_id: _builtins.str
2739
+ @_builtins.property
2740
+ def updated_ts(self) -> _timestamp_pb2.Timestamp: ...
2741
+ def __init__(
2742
+ self,
2743
+ *,
2744
+ updated_ts: _timestamp_pb2.Timestamp | None = ...,
2745
+ software_update_info_id: _builtins.str = ...,
2746
+ firmware_update_info_id: _builtins.str = ...,
2747
+ ) -> None: ...
2748
+ _HasFieldArgType: _TypeAlias = _typing.Literal["updated_ts", b"updated_ts"] # noqa: Y015
2749
+ def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ...
2750
+ _ClearFieldArgType: _TypeAlias = _typing.Literal["firmware_update_info_id", b"firmware_update_info_id", "software_update_info_id", b"software_update_info_id", "updated_ts", b"updated_ts"] # noqa: Y015
2751
+ def ClearField(self, field_name: _ClearFieldArgType) -> None: ...
2752
+ def WhichOneof(self, oneof_group: _Never) -> None: ...
2753
+
2754
+ Global___QuiltSmartModuleRelationships: _TypeAlias = QuiltSmartModuleRelationships # noqa: Y015
2755
+
2756
+ @_typing.final
2757
+ class QuiltSmartModuleControls(_message.Message):
2758
+ """APK-confirmed (C4171jL.java): LED_COLOR_CODE_FIELD_NUMBER=1, UPDATED_TS_FIELD_NUMBER=2."""
2759
+
2760
+ DESCRIPTOR: _descriptor.Descriptor
2761
+
2762
+ LED_COLOR_CODE_FIELD_NUMBER: _builtins.int
2763
+ UPDATED_TS_FIELD_NUMBER: _builtins.int
2764
+ led_color_code: _builtins.int
2765
+ @_builtins.property
2766
+ def updated_ts(self) -> _timestamp_pb2.Timestamp: ...
2767
+ def __init__(
2768
+ self,
2769
+ *,
2770
+ led_color_code: _builtins.int = ...,
2771
+ updated_ts: _timestamp_pb2.Timestamp | None = ...,
2772
+ ) -> None: ...
2773
+ _HasFieldArgType: _TypeAlias = _typing.Literal["updated_ts", b"updated_ts"] # noqa: Y015
2774
+ def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ...
2775
+ _ClearFieldArgType: _TypeAlias = _typing.Literal["led_color_code", b"led_color_code", "updated_ts", b"updated_ts"] # noqa: Y015
2776
+ def ClearField(self, field_name: _ClearFieldArgType) -> None: ...
2777
+ def WhichOneof(self, oneof_group: _Never) -> None: ...
2778
+
2779
+ Global___QuiltSmartModuleControls: _TypeAlias = QuiltSmartModuleControls # noqa: Y015
2780
+
2781
+ @_typing.final
2782
+ class QuiltSmartModuleState(_message.Message):
2783
+ """APK-confirmed (C5146oL.java): 9 fields, presence/ALS/accelerometer sensor data."""
2784
+
2785
+ DESCRIPTOR: _descriptor.Descriptor
2786
+
2787
+ PHASE_DETECTED_RAW_FIELD_NUMBER: _builtins.int
2788
+ TARGET_DETECTED_RAW_FIELD_NUMBER: _builtins.int
2789
+ ALS_ILLUMINANCE_RAW_FIELD_NUMBER: _builtins.int
2790
+ ALS_IR_RAW_FIELD_NUMBER: _builtins.int
2791
+ ALS_BOTH_RAW_FIELD_NUMBER: _builtins.int
2792
+ ACCEL_X_RAW_FIELD_NUMBER: _builtins.int
2793
+ ACCEL_Y_RAW_FIELD_NUMBER: _builtins.int
2794
+ ACCEL_Z_RAW_FIELD_NUMBER: _builtins.int
2795
+ UPDATED_TS_FIELD_NUMBER: _builtins.int
2796
+ phase_detected_raw: _builtins.float
2797
+ """presence sensor: phase (float, fixed32)"""
2798
+ target_detected_raw: _builtins.float
2799
+ """presence sensor: target (float, fixed32)"""
2800
+ als_illuminance_raw: _builtins.int
2801
+ """ambient light: illuminance"""
2802
+ als_ir_raw: _builtins.int
2803
+ """ambient light: IR channel"""
2804
+ als_both_raw: _builtins.int
2805
+ """ambient light: combined"""
2806
+ accel_x_raw: _builtins.int
2807
+ """accelerometer X"""
2808
+ accel_y_raw: _builtins.int
2809
+ """accelerometer Y"""
2810
+ accel_z_raw: _builtins.int
2811
+ """accelerometer Z"""
2812
+ @_builtins.property
2813
+ def updated_ts(self) -> _timestamp_pb2.Timestamp: ...
2814
+ def __init__(
2815
+ self,
2816
+ *,
2817
+ phase_detected_raw: _builtins.float = ...,
2818
+ target_detected_raw: _builtins.float = ...,
2819
+ als_illuminance_raw: _builtins.int = ...,
2820
+ als_ir_raw: _builtins.int = ...,
2821
+ als_both_raw: _builtins.int = ...,
2822
+ accel_x_raw: _builtins.int = ...,
2823
+ accel_y_raw: _builtins.int = ...,
2824
+ accel_z_raw: _builtins.int = ...,
2825
+ updated_ts: _timestamp_pb2.Timestamp | None = ...,
2826
+ ) -> None: ...
2827
+ _HasFieldArgType: _TypeAlias = _typing.Literal["updated_ts", b"updated_ts"] # noqa: Y015
2828
+ def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ...
2829
+ _ClearFieldArgType: _TypeAlias = _typing.Literal["accel_x_raw", b"accel_x_raw", "accel_y_raw", b"accel_y_raw", "accel_z_raw", b"accel_z_raw", "als_both_raw", b"als_both_raw", "als_illuminance_raw", b"als_illuminance_raw", "als_ir_raw", b"als_ir_raw", "phase_detected_raw", b"phase_detected_raw", "target_detected_raw", b"target_detected_raw", "updated_ts", b"updated_ts"] # noqa: Y015
2830
+ def ClearField(self, field_name: _ClearFieldArgType) -> None: ...
2831
+ def WhichOneof(self, oneof_group: _Never) -> None: ...
2832
+
2833
+ Global___QuiltSmartModuleState: _TypeAlias = QuiltSmartModuleState # noqa: Y015
2834
+
2835
+ @_typing.final
2836
+ class QuiltSmartModule(_message.Message):
2837
+ """APK-confirmed (C3678hL.java):
2838
+ header=1, controls=2, state=3, hosted_wifi_state=4, ap_wifi_state=5, p2p_wifi_state=6, relationships=7.
2839
+ """
2840
+
2841
+ DESCRIPTOR: _descriptor.Descriptor
2842
+
2843
+ HEADER_FIELD_NUMBER: _builtins.int
2844
+ CONTROLS_FIELD_NUMBER: _builtins.int
2845
+ STATE_FIELD_NUMBER: _builtins.int
2846
+ HOSTED_WIFI_STATE_FIELD_NUMBER: _builtins.int
2847
+ AP_WIFI_STATE_FIELD_NUMBER: _builtins.int
2848
+ P2P_WIFI_STATE_FIELD_NUMBER: _builtins.int
2849
+ RELATIONSHIPS_FIELD_NUMBER: _builtins.int
2850
+ @_builtins.property
2851
+ def header(self) -> Global___EntityMetadata: ...
2852
+ @_builtins.property
2853
+ def controls(self) -> Global___QuiltSmartModuleControls:
2854
+ """APK: CONTROLS_FIELD_NUMBER=2"""
2855
+
2856
+ @_builtins.property
2857
+ def state(self) -> Global___QuiltSmartModuleState:
2858
+ """APK: STATE_FIELD_NUMBER=3 (was incorrectly at f2)"""
2859
+
2860
+ @_builtins.property
2861
+ def hosted_wifi_state(self) -> Global___WifiState:
2862
+ """APK: HOSTED_WIFI_STATE_FIELD_NUMBER=4"""
2863
+
2864
+ @_builtins.property
2865
+ def ap_wifi_state(self) -> Global___WifiState:
2866
+ """APK: AP_WIFI_STATE_FIELD_NUMBER=5"""
2867
+
2868
+ @_builtins.property
2869
+ def p2p_wifi_state(self) -> Global___WifiState:
2870
+ """APK: P2P_WIFI_STATE_FIELD_NUMBER=6 (usually empty)"""
2871
+
2872
+ @_builtins.property
2873
+ def relationships(self) -> Global___QuiltSmartModuleRelationships: ...
2874
+ def __init__(
2875
+ self,
2876
+ *,
2877
+ header: Global___EntityMetadata | None = ...,
2878
+ controls: Global___QuiltSmartModuleControls | None = ...,
2879
+ state: Global___QuiltSmartModuleState | None = ...,
2880
+ hosted_wifi_state: Global___WifiState | None = ...,
2881
+ ap_wifi_state: Global___WifiState | None = ...,
2882
+ p2p_wifi_state: Global___WifiState | None = ...,
2883
+ relationships: Global___QuiltSmartModuleRelationships | None = ...,
2884
+ ) -> None: ...
2885
+ _HasFieldArgType: _TypeAlias = _typing.Literal["ap_wifi_state", b"ap_wifi_state", "controls", b"controls", "header", b"header", "hosted_wifi_state", b"hosted_wifi_state", "p2p_wifi_state", b"p2p_wifi_state", "relationships", b"relationships", "state", b"state"] # noqa: Y015
2886
+ def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ...
2887
+ _ClearFieldArgType: _TypeAlias = _typing.Literal["ap_wifi_state", b"ap_wifi_state", "controls", b"controls", "header", b"header", "hosted_wifi_state", b"hosted_wifi_state", "p2p_wifi_state", b"p2p_wifi_state", "relationships", b"relationships", "state", b"state"] # noqa: Y015
2888
+ def ClearField(self, field_name: _ClearFieldArgType) -> None: ...
2889
+ def WhichOneof(self, oneof_group: _Never) -> None: ...
2890
+
2891
+ Global___QuiltSmartModule: _TypeAlias = QuiltSmartModule # noqa: Y015
2892
+
2893
+ @_typing.final
2894
+ class SoftwareUpdateInfoAttributes(_message.Message):
2895
+ """---------------------------------------------------------------------------
2896
+ Software / Firmware Update
2897
+ ---------------------------------------------------------------------------
2898
+
2899
+ APK-confirmed (WL.java): SoftwareUpdateInfoAttributes fields.
2900
+ """
2901
+
2902
+ DESCRIPTOR: _descriptor.Descriptor
2903
+
2904
+ UPDATED_TS_FIELD_NUMBER: _builtins.int
2905
+ STATE_FIELD_NUMBER: _builtins.int
2906
+ STATUS_FIELD_NUMBER: _builtins.int
2907
+ CURRENT_VERSION_FIELD_NUMBER: _builtins.int
2908
+ TARGET_VERSION_FIELD_NUMBER: _builtins.int
2909
+ CURRENT_PROGRESS_FIELD_NUMBER: _builtins.int
2910
+ TOTAL_PROGRESS_FIELD_NUMBER: _builtins.int
2911
+ PROGRESS_UNIT_FIELD_NUMBER: _builtins.int
2912
+ state: _builtins.int
2913
+ """update state (enum TBD)"""
2914
+ status: _builtins.int
2915
+ """update status (enum TBD)"""
2916
+ current_version: _builtins.str
2917
+ target_version: _builtins.str
2918
+ current_progress: _builtins.float
2919
+ total_progress: _builtins.float
2920
+ progress_unit: _builtins.int
2921
+ """unit for progress values"""
2922
+ @_builtins.property
2923
+ def updated_ts(self) -> _timestamp_pb2.Timestamp: ...
2924
+ def __init__(
2925
+ self,
2926
+ *,
2927
+ updated_ts: _timestamp_pb2.Timestamp | None = ...,
2928
+ state: _builtins.int = ...,
2929
+ status: _builtins.int = ...,
2930
+ current_version: _builtins.str = ...,
2931
+ target_version: _builtins.str = ...,
2932
+ current_progress: _builtins.float = ...,
2933
+ total_progress: _builtins.float = ...,
2934
+ progress_unit: _builtins.int = ...,
2935
+ ) -> None: ...
2936
+ _HasFieldArgType: _TypeAlias = _typing.Literal["updated_ts", b"updated_ts"] # noqa: Y015
2937
+ def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ...
2938
+ _ClearFieldArgType: _TypeAlias = _typing.Literal["current_progress", b"current_progress", "current_version", b"current_version", "progress_unit", b"progress_unit", "state", b"state", "status", b"status", "target_version", b"target_version", "total_progress", b"total_progress", "updated_ts", b"updated_ts"] # noqa: Y015
2939
+ def ClearField(self, field_name: _ClearFieldArgType) -> None: ...
2940
+ def WhichOneof(self, oneof_group: _Never) -> None: ...
2941
+
2942
+ Global___SoftwareUpdateInfoAttributes: _TypeAlias = SoftwareUpdateInfoAttributes # noqa: Y015
2943
+
2944
+ @_typing.final
2945
+ class SoftwareUpdateInfo(_message.Message):
2946
+ """APK-confirmed (YL.java): HEADER_FIELD_NUMBER=1, ATTRIBUTES_FIELD_NUMBER=2."""
2947
+
2948
+ DESCRIPTOR: _descriptor.Descriptor
2949
+
2950
+ HEADER_FIELD_NUMBER: _builtins.int
2951
+ ATTRIBUTES_FIELD_NUMBER: _builtins.int
2952
+ @_builtins.property
2953
+ def header(self) -> Global___EntityMetadata:
2954
+ """APK: was named "metadata" — fix to "header" """
2955
+
2956
+ @_builtins.property
2957
+ def attributes(self) -> Global___SoftwareUpdateInfoAttributes: ...
2958
+ def __init__(
2959
+ self,
2960
+ *,
2961
+ header: Global___EntityMetadata | None = ...,
2962
+ attributes: Global___SoftwareUpdateInfoAttributes | None = ...,
2963
+ ) -> None: ...
2964
+ _HasFieldArgType: _TypeAlias = _typing.Literal["attributes", b"attributes", "header", b"header"] # noqa: Y015
2965
+ def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ...
2966
+ _ClearFieldArgType: _TypeAlias = _typing.Literal["attributes", b"attributes", "header", b"header"] # noqa: Y015
2967
+ def ClearField(self, field_name: _ClearFieldArgType) -> None: ...
2968
+ def WhichOneof(self, oneof_group: _Never) -> None: ...
2969
+
2970
+ Global___SoftwareUpdateInfo: _TypeAlias = SoftwareUpdateInfo # noqa: Y015
2971
+
2972
+ @_typing.final
2973
+ class HomeDatastoreSystem(_message.Message):
2974
+ """---------------------------------------------------------------------------
2975
+ HomeDatastoreSystem (full system snapshot)
2976
+ ALL field numbers APK-confirmed from OJ.java (HomeDatastoreSystem proto class).
2977
+ Fields 1, 2, 4 are unknown. Fields 12 and 16 are empty for installations
2978
+ without standalone remote sensors or configured ControllerRemoteSensors.
2979
+ ---------------------------------------------------------------------------
2980
+ """
2981
+
2982
+ DESCRIPTOR: _descriptor.Descriptor
2983
+
2984
+ SPACES_FIELD_NUMBER: _builtins.int
2985
+ OUTDOOR_UNIT_HARDWARE_FIELD_NUMBER: _builtins.int
2986
+ OUTDOOR_UNITS_FIELD_NUMBER: _builtins.int
2987
+ QUILT_SMART_MODULES_FIELD_NUMBER: _builtins.int
2988
+ INDOOR_UNIT_HARDWARE_FIELD_NUMBER: _builtins.int
2989
+ INDOOR_UNITS_FIELD_NUMBER: _builtins.int
2990
+ CONTROLLER_HARDWARE_FIELD_NUMBER: _builtins.int
2991
+ CONTROLLERS_FIELD_NUMBER: _builtins.int
2992
+ REMOTE_SENSORS_FIELD_NUMBER: _builtins.int
2993
+ COMFORT_SETTINGS_FIELD_NUMBER: _builtins.int
2994
+ SCHEDULE_DAYS_FIELD_NUMBER: _builtins.int
2995
+ SCHEDULE_WEEKS_FIELD_NUMBER: _builtins.int
2996
+ CONTROLLER_REMOTE_SENSORS_FIELD_NUMBER: _builtins.int
2997
+ LOCATIONS_FIELD_NUMBER: _builtins.int
2998
+ SOFTWARE_UPDATE_INFOS_FIELD_NUMBER: _builtins.int
2999
+ @_builtins.property
3000
+ def spaces(self) -> _containers.RepeatedCompositeFieldContainer[Global___Space]:
3001
+ """field 1, 2 — unknown/empty in captured system
3002
+ APK: SPACES_FIELD_NUMBER=3; confirmed: 6 items
3003
+ """
3004
+
3005
+ @_builtins.property
3006
+ def outdoor_unit_hardware(self) -> _containers.RepeatedCompositeFieldContainer[Global___OutdoorUnitHardware]:
3007
+ """field 4 — unknown/empty
3008
+ APK: OUTDOOR_UNIT_HARDWARE_FIELD_NUMBER=5; confirmed: 3 items
3009
+ """
3010
+
3011
+ @_builtins.property
3012
+ def outdoor_units(self) -> _containers.RepeatedCompositeFieldContainer[Global___OutdoorUnit]:
3013
+ """APK: OUTDOOR_UNITS_FIELD_NUMBER=6; confirmed: 3 items"""
3014
+
3015
+ @_builtins.property
3016
+ def quilt_smart_modules(self) -> _containers.RepeatedCompositeFieldContainer[Global___QuiltSmartModule]:
3017
+ """APK: QUILT_SMART_MODULES_FIELD_NUMBER=7; confirmed: 5 items"""
3018
+
3019
+ @_builtins.property
3020
+ def indoor_unit_hardware(self) -> _containers.RepeatedCompositeFieldContainer[Global___IndoorUnitHardware]:
3021
+ """APK: INDOOR_UNIT_HARDWARE_FIELD_NUMBER=8; confirmed: 5 items"""
3022
+
3023
+ @_builtins.property
3024
+ def indoor_units(self) -> _containers.RepeatedCompositeFieldContainer[Global___IndoorUnit]:
3025
+ """APK: INDOOR_UNITS_FIELD_NUMBER=9; confirmed: 5 items"""
3026
+
3027
+ @_builtins.property
3028
+ def controller_hardware(self) -> _containers.RepeatedCompositeFieldContainer[Global___ControllerHardware]:
3029
+ """APK: CONTROLLER_HARDWARE_FIELD_NUMBER=10; confirmed: 5 items"""
3030
+
3031
+ @_builtins.property
3032
+ def controllers(self) -> _containers.RepeatedCompositeFieldContainer[Global___Controller]:
3033
+ """APK: CONTROLLERS_FIELD_NUMBER=11; confirmed: 5 items"""
3034
+
3035
+ @_builtins.property
3036
+ def remote_sensors(self) -> _containers.RepeatedCompositeFieldContainer[Global___RemoteSensor]:
3037
+ """APK: REMOTE_SENSORS_FIELD_NUMBER=12; empty without paired sensors"""
3038
+
3039
+ @_builtins.property
3040
+ def comfort_settings(self) -> _containers.RepeatedCompositeFieldContainer[Global___ComfortSetting]:
3041
+ """APK: COMFORT_SETTINGS_FIELD_NUMBER=13; confirmed: 20+ items"""
3042
+
3043
+ @_builtins.property
3044
+ def schedule_days(self) -> _containers.RepeatedCompositeFieldContainer[Global___ScheduleDay]:
3045
+ """APK: SCHEDULE_DAYS_FIELD_NUMBER=14; confirmed: 5 items"""
3046
+
3047
+ @_builtins.property
3048
+ def schedule_weeks(self) -> _containers.RepeatedCompositeFieldContainer[Global___ScheduleWeek]:
3049
+ """APK: SCHEDULE_WEEKS_FIELD_NUMBER=15; confirmed: 5 items"""
3050
+
3051
+ @_builtins.property
3052
+ def controller_remote_sensors(self) -> _containers.RepeatedCompositeFieldContainer[Global___ControllerRemoteSensor]:
3053
+ """APK: CONTROLLER_REMOTE_SENSORS_FIELD_NUMBER=16; empty without sensor mode configured"""
3054
+
3055
+ @_builtins.property
3056
+ def locations(self) -> _containers.RepeatedCompositeFieldContainer[Global___Location]:
3057
+ """APK: LOCATIONS_FIELD_NUMBER=17; confirmed: 1 item"""
3058
+
3059
+ @_builtins.property
3060
+ def software_update_infos(self) -> _containers.RepeatedCompositeFieldContainer[Global___SoftwareUpdateInfo]:
3061
+ """APK: SOFTWARE_UPDATE_INFOS_FIELD_NUMBER=18; confirmed: 28 items (SUI+FUI for all devices)"""
3062
+
3063
+ def __init__(
3064
+ self,
3065
+ *,
3066
+ spaces: _abc.Iterable[Global___Space] | None = ...,
3067
+ outdoor_unit_hardware: _abc.Iterable[Global___OutdoorUnitHardware] | None = ...,
3068
+ outdoor_units: _abc.Iterable[Global___OutdoorUnit] | None = ...,
3069
+ quilt_smart_modules: _abc.Iterable[Global___QuiltSmartModule] | None = ...,
3070
+ indoor_unit_hardware: _abc.Iterable[Global___IndoorUnitHardware] | None = ...,
3071
+ indoor_units: _abc.Iterable[Global___IndoorUnit] | None = ...,
3072
+ controller_hardware: _abc.Iterable[Global___ControllerHardware] | None = ...,
3073
+ controllers: _abc.Iterable[Global___Controller] | None = ...,
3074
+ remote_sensors: _abc.Iterable[Global___RemoteSensor] | None = ...,
3075
+ comfort_settings: _abc.Iterable[Global___ComfortSetting] | None = ...,
3076
+ schedule_days: _abc.Iterable[Global___ScheduleDay] | None = ...,
3077
+ schedule_weeks: _abc.Iterable[Global___ScheduleWeek] | None = ...,
3078
+ controller_remote_sensors: _abc.Iterable[Global___ControllerRemoteSensor] | None = ...,
3079
+ locations: _abc.Iterable[Global___Location] | None = ...,
3080
+ software_update_infos: _abc.Iterable[Global___SoftwareUpdateInfo] | None = ...,
3081
+ ) -> None: ...
3082
+ _HasFieldArgType: _TypeAlias = _Never # noqa: Y015
3083
+ def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ...
3084
+ _ClearFieldArgType: _TypeAlias = _typing.Literal["comfort_settings", b"comfort_settings", "controller_hardware", b"controller_hardware", "controller_remote_sensors", b"controller_remote_sensors", "controllers", b"controllers", "indoor_unit_hardware", b"indoor_unit_hardware", "indoor_units", b"indoor_units", "locations", b"locations", "outdoor_unit_hardware", b"outdoor_unit_hardware", "outdoor_units", b"outdoor_units", "quilt_smart_modules", b"quilt_smart_modules", "remote_sensors", b"remote_sensors", "schedule_days", b"schedule_days", "schedule_weeks", b"schedule_weeks", "software_update_infos", b"software_update_infos", "spaces", b"spaces"] # noqa: Y015
3085
+ def ClearField(self, field_name: _ClearFieldArgType) -> None: ...
3086
+ def WhichOneof(self, oneof_group: _Never) -> None: ...
3087
+
3088
+ Global___HomeDatastoreSystem: _TypeAlias = HomeDatastoreSystem # noqa: Y015
3089
+
3090
+ @_typing.final
3091
+ class GetHomeDatastoreSystemRequest(_message.Message):
3092
+ """---------------------------------------------------------------------------
3093
+ HomeDatastoreService — package core.protos.home_datastore
3094
+ Wire path: /core.protos.home_datastore.HomeDatastoreService/<Method>
3095
+ ---------------------------------------------------------------------------
3096
+ """
3097
+
3098
+ DESCRIPTOR: _descriptor.Descriptor
3099
+
3100
+ SYSTEM_ID_FIELD_NUMBER: _builtins.int
3101
+ FIELD_MASK_FIELD_NUMBER: _builtins.int
3102
+ system_id: _builtins.str
3103
+ @_builtins.property
3104
+ def field_mask(self) -> _field_mask_pb2.FieldMask: ...
3105
+ def __init__(
3106
+ self,
3107
+ *,
3108
+ system_id: _builtins.str = ...,
3109
+ field_mask: _field_mask_pb2.FieldMask | None = ...,
3110
+ ) -> None: ...
3111
+ _HasFieldArgType: _TypeAlias = _typing.Literal["field_mask", b"field_mask"] # noqa: Y015
3112
+ def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ...
3113
+ _ClearFieldArgType: _TypeAlias = _typing.Literal["field_mask", b"field_mask", "system_id", b"system_id"] # noqa: Y015
3114
+ def ClearField(self, field_name: _ClearFieldArgType) -> None: ...
3115
+ def WhichOneof(self, oneof_group: _Never) -> None: ...
3116
+
3117
+ Global___GetHomeDatastoreSystemRequest: _TypeAlias = GetHomeDatastoreSystemRequest # noqa: Y015
3118
+
3119
+ @_typing.final
3120
+ class GetSpaceRequest(_message.Message):
3121
+ DESCRIPTOR: _descriptor.Descriptor
3122
+
3123
+ ID_FIELD_NUMBER: _builtins.int
3124
+ id: _builtins.str
3125
+ def __init__(
3126
+ self,
3127
+ *,
3128
+ id: _builtins.str = ...,
3129
+ ) -> None: ...
3130
+ _HasFieldArgType: _TypeAlias = _Never # noqa: Y015
3131
+ def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ...
3132
+ _ClearFieldArgType: _TypeAlias = _typing.Literal["id", b"id"] # noqa: Y015
3133
+ def ClearField(self, field_name: _ClearFieldArgType) -> None: ...
3134
+ def WhichOneof(self, oneof_group: _Never) -> None: ...
3135
+
3136
+ Global___GetSpaceRequest: _TypeAlias = GetSpaceRequest # noqa: Y015
3137
+
3138
+ @_typing.final
3139
+ class CreateSpaceRequest(_message.Message):
3140
+ DESCRIPTOR: _descriptor.Descriptor
3141
+
3142
+ SPACE_FIELD_NUMBER: _builtins.int
3143
+ @_builtins.property
3144
+ def space(self) -> Global___Space: ...
3145
+ def __init__(
3146
+ self,
3147
+ *,
3148
+ space: Global___Space | None = ...,
3149
+ ) -> None: ...
3150
+ _HasFieldArgType: _TypeAlias = _typing.Literal["space", b"space"] # noqa: Y015
3151
+ def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ...
3152
+ _ClearFieldArgType: _TypeAlias = _typing.Literal["space", b"space"] # noqa: Y015
3153
+ def ClearField(self, field_name: _ClearFieldArgType) -> None: ...
3154
+ def WhichOneof(self, oneof_group: _Never) -> None: ...
3155
+
3156
+ Global___CreateSpaceRequest: _TypeAlias = CreateSpaceRequest # noqa: Y015
3157
+
3158
+ @_typing.final
3159
+ class UpdateSpaceRequest(_message.Message):
3160
+ DESCRIPTOR: _descriptor.Descriptor
3161
+
3162
+ DIFF_FIELD_NUMBER: _builtins.int
3163
+ @_builtins.property
3164
+ def diff(self) -> Global___Space: ...
3165
+ def __init__(
3166
+ self,
3167
+ *,
3168
+ diff: Global___Space | None = ...,
3169
+ ) -> None: ...
3170
+ _HasFieldArgType: _TypeAlias = _typing.Literal["diff", b"diff"] # noqa: Y015
3171
+ def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ...
3172
+ _ClearFieldArgType: _TypeAlias = _typing.Literal["diff", b"diff"] # noqa: Y015
3173
+ def ClearField(self, field_name: _ClearFieldArgType) -> None: ...
3174
+ def WhichOneof(self, oneof_group: _Never) -> None: ...
3175
+
3176
+ Global___UpdateSpaceRequest: _TypeAlias = UpdateSpaceRequest # noqa: Y015
3177
+
3178
+ @_typing.final
3179
+ class DeleteSpaceRequest(_message.Message):
3180
+ DESCRIPTOR: _descriptor.Descriptor
3181
+
3182
+ ID_FIELD_NUMBER: _builtins.int
3183
+ id: _builtins.str
3184
+ def __init__(
3185
+ self,
3186
+ *,
3187
+ id: _builtins.str = ...,
3188
+ ) -> None: ...
3189
+ _HasFieldArgType: _TypeAlias = _Never # noqa: Y015
3190
+ def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ...
3191
+ _ClearFieldArgType: _TypeAlias = _typing.Literal["id", b"id"] # noqa: Y015
3192
+ def ClearField(self, field_name: _ClearFieldArgType) -> None: ...
3193
+ def WhichOneof(self, oneof_group: _Never) -> None: ...
3194
+
3195
+ Global___DeleteSpaceRequest: _TypeAlias = DeleteSpaceRequest # noqa: Y015
3196
+
3197
+ @_typing.final
3198
+ class UpdateIndoorUnitRequest(_message.Message):
3199
+ DESCRIPTOR: _descriptor.Descriptor
3200
+
3201
+ DIFF_FIELD_NUMBER: _builtins.int
3202
+ @_builtins.property
3203
+ def diff(self) -> Global___IndoorUnit: ...
3204
+ def __init__(
3205
+ self,
3206
+ *,
3207
+ diff: Global___IndoorUnit | None = ...,
3208
+ ) -> None: ...
3209
+ _HasFieldArgType: _TypeAlias = _typing.Literal["diff", b"diff"] # noqa: Y015
3210
+ def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ...
3211
+ _ClearFieldArgType: _TypeAlias = _typing.Literal["diff", b"diff"] # noqa: Y015
3212
+ def ClearField(self, field_name: _ClearFieldArgType) -> None: ...
3213
+ def WhichOneof(self, oneof_group: _Never) -> None: ...
3214
+
3215
+ Global___UpdateIndoorUnitRequest: _TypeAlias = UpdateIndoorUnitRequest # noqa: Y015
3216
+
3217
+ @_typing.final
3218
+ class DeleteIndoorUnitRequest(_message.Message):
3219
+ DESCRIPTOR: _descriptor.Descriptor
3220
+
3221
+ ID_FIELD_NUMBER: _builtins.int
3222
+ id: _builtins.str
3223
+ def __init__(
3224
+ self,
3225
+ *,
3226
+ id: _builtins.str = ...,
3227
+ ) -> None: ...
3228
+ _HasFieldArgType: _TypeAlias = _Never # noqa: Y015
3229
+ def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ...
3230
+ _ClearFieldArgType: _TypeAlias = _typing.Literal["id", b"id"] # noqa: Y015
3231
+ def ClearField(self, field_name: _ClearFieldArgType) -> None: ...
3232
+ def WhichOneof(self, oneof_group: _Never) -> None: ...
3233
+
3234
+ Global___DeleteIndoorUnitRequest: _TypeAlias = DeleteIndoorUnitRequest # noqa: Y015
3235
+
3236
+ @_typing.final
3237
+ class GetIndoorUnitHardwareRequest(_message.Message):
3238
+ DESCRIPTOR: _descriptor.Descriptor
3239
+
3240
+ ID_FIELD_NUMBER: _builtins.int
3241
+ FIELD_MASK_FIELD_NUMBER: _builtins.int
3242
+ id: _builtins.str
3243
+ @_builtins.property
3244
+ def field_mask(self) -> _field_mask_pb2.FieldMask: ...
3245
+ def __init__(
3246
+ self,
3247
+ *,
3248
+ id: _builtins.str = ...,
3249
+ field_mask: _field_mask_pb2.FieldMask | None = ...,
3250
+ ) -> None: ...
3251
+ _HasFieldArgType: _TypeAlias = _typing.Literal["field_mask", b"field_mask"] # noqa: Y015
3252
+ def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ...
3253
+ _ClearFieldArgType: _TypeAlias = _typing.Literal["field_mask", b"field_mask", "id", b"id"] # noqa: Y015
3254
+ def ClearField(self, field_name: _ClearFieldArgType) -> None: ...
3255
+ def WhichOneof(self, oneof_group: _Never) -> None: ...
3256
+
3257
+ Global___GetIndoorUnitHardwareRequest: _TypeAlias = GetIndoorUnitHardwareRequest # noqa: Y015
3258
+
3259
+ @_typing.final
3260
+ class UpdateControllerRequest(_message.Message):
3261
+ DESCRIPTOR: _descriptor.Descriptor
3262
+
3263
+ CONTROLLER_FIELD_NUMBER: _builtins.int
3264
+ @_builtins.property
3265
+ def controller(self) -> Global___Controller: ...
3266
+ def __init__(
3267
+ self,
3268
+ *,
3269
+ controller: Global___Controller | None = ...,
3270
+ ) -> None: ...
3271
+ _HasFieldArgType: _TypeAlias = _typing.Literal["controller", b"controller"] # noqa: Y015
3272
+ def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ...
3273
+ _ClearFieldArgType: _TypeAlias = _typing.Literal["controller", b"controller"] # noqa: Y015
3274
+ def ClearField(self, field_name: _ClearFieldArgType) -> None: ...
3275
+ def WhichOneof(self, oneof_group: _Never) -> None: ...
3276
+
3277
+ Global___UpdateControllerRequest: _TypeAlias = UpdateControllerRequest # noqa: Y015
3278
+
3279
+ @_typing.final
3280
+ class DeleteControllerRequest(_message.Message):
3281
+ DESCRIPTOR: _descriptor.Descriptor
3282
+
3283
+ ID_FIELD_NUMBER: _builtins.int
3284
+ id: _builtins.str
3285
+ def __init__(
3286
+ self,
3287
+ *,
3288
+ id: _builtins.str = ...,
3289
+ ) -> None: ...
3290
+ _HasFieldArgType: _TypeAlias = _Never # noqa: Y015
3291
+ def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ...
3292
+ _ClearFieldArgType: _TypeAlias = _typing.Literal["id", b"id"] # noqa: Y015
3293
+ def ClearField(self, field_name: _ClearFieldArgType) -> None: ...
3294
+ def WhichOneof(self, oneof_group: _Never) -> None: ...
3295
+
3296
+ Global___DeleteControllerRequest: _TypeAlias = DeleteControllerRequest # noqa: Y015
3297
+
3298
+ @_typing.final
3299
+ class GetControllerHardwareRequest(_message.Message):
3300
+ DESCRIPTOR: _descriptor.Descriptor
3301
+
3302
+ ID_FIELD_NUMBER: _builtins.int
3303
+ FIELD_MASK_FIELD_NUMBER: _builtins.int
3304
+ id: _builtins.str
3305
+ @_builtins.property
3306
+ def field_mask(self) -> _field_mask_pb2.FieldMask: ...
3307
+ def __init__(
3308
+ self,
3309
+ *,
3310
+ id: _builtins.str = ...,
3311
+ field_mask: _field_mask_pb2.FieldMask | None = ...,
3312
+ ) -> None: ...
3313
+ _HasFieldArgType: _TypeAlias = _typing.Literal["field_mask", b"field_mask"] # noqa: Y015
3314
+ def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ...
3315
+ _ClearFieldArgType: _TypeAlias = _typing.Literal["field_mask", b"field_mask", "id", b"id"] # noqa: Y015
3316
+ def ClearField(self, field_name: _ClearFieldArgType) -> None: ...
3317
+ def WhichOneof(self, oneof_group: _Never) -> None: ...
3318
+
3319
+ Global___GetControllerHardwareRequest: _TypeAlias = GetControllerHardwareRequest # noqa: Y015
3320
+
3321
+ @_typing.final
3322
+ class DeleteOutdoorUnitRequest(_message.Message):
3323
+ DESCRIPTOR: _descriptor.Descriptor
3324
+
3325
+ ID_FIELD_NUMBER: _builtins.int
3326
+ id: _builtins.str
3327
+ def __init__(
3328
+ self,
3329
+ *,
3330
+ id: _builtins.str = ...,
3331
+ ) -> None: ...
3332
+ _HasFieldArgType: _TypeAlias = _Never # noqa: Y015
3333
+ def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ...
3334
+ _ClearFieldArgType: _TypeAlias = _typing.Literal["id", b"id"] # noqa: Y015
3335
+ def ClearField(self, field_name: _ClearFieldArgType) -> None: ...
3336
+ def WhichOneof(self, oneof_group: _Never) -> None: ...
3337
+
3338
+ Global___DeleteOutdoorUnitRequest: _TypeAlias = DeleteOutdoorUnitRequest # noqa: Y015
3339
+
3340
+ @_typing.final
3341
+ class GetQuiltSmartModuleRequest(_message.Message):
3342
+ DESCRIPTOR: _descriptor.Descriptor
3343
+
3344
+ ID_FIELD_NUMBER: _builtins.int
3345
+ FIELD_MASK_FIELD_NUMBER: _builtins.int
3346
+ id: _builtins.str
3347
+ @_builtins.property
3348
+ def field_mask(self) -> _field_mask_pb2.FieldMask: ...
3349
+ def __init__(
3350
+ self,
3351
+ *,
3352
+ id: _builtins.str = ...,
3353
+ field_mask: _field_mask_pb2.FieldMask | None = ...,
3354
+ ) -> None: ...
3355
+ _HasFieldArgType: _TypeAlias = _typing.Literal["field_mask", b"field_mask"] # noqa: Y015
3356
+ def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ...
3357
+ _ClearFieldArgType: _TypeAlias = _typing.Literal["field_mask", b"field_mask", "id", b"id"] # noqa: Y015
3358
+ def ClearField(self, field_name: _ClearFieldArgType) -> None: ...
3359
+ def WhichOneof(self, oneof_group: _Never) -> None: ...
3360
+
3361
+ Global___GetQuiltSmartModuleRequest: _TypeAlias = GetQuiltSmartModuleRequest # noqa: Y015
3362
+
3363
+ @_typing.final
3364
+ class CreateRemoteSensorRequest(_message.Message):
3365
+ DESCRIPTOR: _descriptor.Descriptor
3366
+
3367
+ REMOTE_SENSOR_FIELD_NUMBER: _builtins.int
3368
+ @_builtins.property
3369
+ def remote_sensor(self) -> Global___RemoteSensor: ...
3370
+ def __init__(
3371
+ self,
3372
+ *,
3373
+ remote_sensor: Global___RemoteSensor | None = ...,
3374
+ ) -> None: ...
3375
+ _HasFieldArgType: _TypeAlias = _typing.Literal["remote_sensor", b"remote_sensor"] # noqa: Y015
3376
+ def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ...
3377
+ _ClearFieldArgType: _TypeAlias = _typing.Literal["remote_sensor", b"remote_sensor"] # noqa: Y015
3378
+ def ClearField(self, field_name: _ClearFieldArgType) -> None: ...
3379
+ def WhichOneof(self, oneof_group: _Never) -> None: ...
3380
+
3381
+ Global___CreateRemoteSensorRequest: _TypeAlias = CreateRemoteSensorRequest # noqa: Y015
3382
+
3383
+ @_typing.final
3384
+ class UpdateRemoteSensorRequest(_message.Message):
3385
+ DESCRIPTOR: _descriptor.Descriptor
3386
+
3387
+ REMOTE_SENSOR_FIELD_NUMBER: _builtins.int
3388
+ @_builtins.property
3389
+ def remote_sensor(self) -> Global___RemoteSensor: ...
3390
+ def __init__(
3391
+ self,
3392
+ *,
3393
+ remote_sensor: Global___RemoteSensor | None = ...,
3394
+ ) -> None: ...
3395
+ _HasFieldArgType: _TypeAlias = _typing.Literal["remote_sensor", b"remote_sensor"] # noqa: Y015
3396
+ def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ...
3397
+ _ClearFieldArgType: _TypeAlias = _typing.Literal["remote_sensor", b"remote_sensor"] # noqa: Y015
3398
+ def ClearField(self, field_name: _ClearFieldArgType) -> None: ...
3399
+ def WhichOneof(self, oneof_group: _Never) -> None: ...
3400
+
3401
+ Global___UpdateRemoteSensorRequest: _TypeAlias = UpdateRemoteSensorRequest # noqa: Y015
3402
+
3403
+ @_typing.final
3404
+ class DeleteRemoteSensorRequest(_message.Message):
3405
+ DESCRIPTOR: _descriptor.Descriptor
3406
+
3407
+ REMOTE_SENSOR_ID_FIELD_NUMBER: _builtins.int
3408
+ remote_sensor_id: _builtins.str
3409
+ def __init__(
3410
+ self,
3411
+ *,
3412
+ remote_sensor_id: _builtins.str = ...,
3413
+ ) -> None: ...
3414
+ _HasFieldArgType: _TypeAlias = _Never # noqa: Y015
3415
+ def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ...
3416
+ _ClearFieldArgType: _TypeAlias = _typing.Literal["remote_sensor_id", b"remote_sensor_id"] # noqa: Y015
3417
+ def ClearField(self, field_name: _ClearFieldArgType) -> None: ...
3418
+ def WhichOneof(self, oneof_group: _Never) -> None: ...
3419
+
3420
+ Global___DeleteRemoteSensorRequest: _TypeAlias = DeleteRemoteSensorRequest # noqa: Y015
3421
+
3422
+ @_typing.final
3423
+ class CreateControllerRemoteSensorRequest(_message.Message):
3424
+ DESCRIPTOR: _descriptor.Descriptor
3425
+
3426
+ REMOTE_SENSOR_FIELD_NUMBER: _builtins.int
3427
+ @_builtins.property
3428
+ def remote_sensor(self) -> Global___ControllerRemoteSensor: ...
3429
+ def __init__(
3430
+ self,
3431
+ *,
3432
+ remote_sensor: Global___ControllerRemoteSensor | None = ...,
3433
+ ) -> None: ...
3434
+ _HasFieldArgType: _TypeAlias = _typing.Literal["remote_sensor", b"remote_sensor"] # noqa: Y015
3435
+ def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ...
3436
+ _ClearFieldArgType: _TypeAlias = _typing.Literal["remote_sensor", b"remote_sensor"] # noqa: Y015
3437
+ def ClearField(self, field_name: _ClearFieldArgType) -> None: ...
3438
+ def WhichOneof(self, oneof_group: _Never) -> None: ...
3439
+
3440
+ Global___CreateControllerRemoteSensorRequest: _TypeAlias = CreateControllerRemoteSensorRequest # noqa: Y015
3441
+
3442
+ @_typing.final
3443
+ class UpdateControllerRemoteSensorRequest(_message.Message):
3444
+ DESCRIPTOR: _descriptor.Descriptor
3445
+
3446
+ REMOTE_SENSOR_FIELD_NUMBER: _builtins.int
3447
+ @_builtins.property
3448
+ def remote_sensor(self) -> Global___ControllerRemoteSensor: ...
3449
+ def __init__(
3450
+ self,
3451
+ *,
3452
+ remote_sensor: Global___ControllerRemoteSensor | None = ...,
3453
+ ) -> None: ...
3454
+ _HasFieldArgType: _TypeAlias = _typing.Literal["remote_sensor", b"remote_sensor"] # noqa: Y015
3455
+ def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ...
3456
+ _ClearFieldArgType: _TypeAlias = _typing.Literal["remote_sensor", b"remote_sensor"] # noqa: Y015
3457
+ def ClearField(self, field_name: _ClearFieldArgType) -> None: ...
3458
+ def WhichOneof(self, oneof_group: _Never) -> None: ...
3459
+
3460
+ Global___UpdateControllerRemoteSensorRequest: _TypeAlias = UpdateControllerRemoteSensorRequest # noqa: Y015
3461
+
3462
+ @_typing.final
3463
+ class DeleteControllerRemoteSensorRequest(_message.Message):
3464
+ DESCRIPTOR: _descriptor.Descriptor
3465
+
3466
+ REMOTE_SENSOR_ID_FIELD_NUMBER: _builtins.int
3467
+ remote_sensor_id: _builtins.str
3468
+ def __init__(
3469
+ self,
3470
+ *,
3471
+ remote_sensor_id: _builtins.str = ...,
3472
+ ) -> None: ...
3473
+ _HasFieldArgType: _TypeAlias = _Never # noqa: Y015
3474
+ def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ...
3475
+ _ClearFieldArgType: _TypeAlias = _typing.Literal["remote_sensor_id", b"remote_sensor_id"] # noqa: Y015
3476
+ def ClearField(self, field_name: _ClearFieldArgType) -> None: ...
3477
+ def WhichOneof(self, oneof_group: _Never) -> None: ...
3478
+
3479
+ Global___DeleteControllerRemoteSensorRequest: _TypeAlias = DeleteControllerRemoteSensorRequest # noqa: Y015
3480
+
3481
+ @_typing.final
3482
+ class CreateScheduleDayRequest(_message.Message):
3483
+ DESCRIPTOR: _descriptor.Descriptor
3484
+
3485
+ SCHEDULE_DAY_FIELD_NUMBER: _builtins.int
3486
+ @_builtins.property
3487
+ def schedule_day(self) -> Global___ScheduleDay: ...
3488
+ def __init__(
3489
+ self,
3490
+ *,
3491
+ schedule_day: Global___ScheduleDay | None = ...,
3492
+ ) -> None: ...
3493
+ _HasFieldArgType: _TypeAlias = _typing.Literal["schedule_day", b"schedule_day"] # noqa: Y015
3494
+ def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ...
3495
+ _ClearFieldArgType: _TypeAlias = _typing.Literal["schedule_day", b"schedule_day"] # noqa: Y015
3496
+ def ClearField(self, field_name: _ClearFieldArgType) -> None: ...
3497
+ def WhichOneof(self, oneof_group: _Never) -> None: ...
3498
+
3499
+ Global___CreateScheduleDayRequest: _TypeAlias = CreateScheduleDayRequest # noqa: Y015
3500
+
3501
+ @_typing.final
3502
+ class GetScheduleDayRequest(_message.Message):
3503
+ DESCRIPTOR: _descriptor.Descriptor
3504
+
3505
+ SCHEDULE_DAY_ID_FIELD_NUMBER: _builtins.int
3506
+ schedule_day_id: _builtins.str
3507
+ def __init__(
3508
+ self,
3509
+ *,
3510
+ schedule_day_id: _builtins.str = ...,
3511
+ ) -> None: ...
3512
+ _HasFieldArgType: _TypeAlias = _Never # noqa: Y015
3513
+ def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ...
3514
+ _ClearFieldArgType: _TypeAlias = _typing.Literal["schedule_day_id", b"schedule_day_id"] # noqa: Y015
3515
+ def ClearField(self, field_name: _ClearFieldArgType) -> None: ...
3516
+ def WhichOneof(self, oneof_group: _Never) -> None: ...
3517
+
3518
+ Global___GetScheduleDayRequest: _TypeAlias = GetScheduleDayRequest # noqa: Y015
3519
+
3520
+ @_typing.final
3521
+ class UpdateScheduleDayRequest(_message.Message):
3522
+ DESCRIPTOR: _descriptor.Descriptor
3523
+
3524
+ SCHEDULE_DAY_FIELD_NUMBER: _builtins.int
3525
+ @_builtins.property
3526
+ def schedule_day(self) -> Global___ScheduleDay: ...
3527
+ def __init__(
3528
+ self,
3529
+ *,
3530
+ schedule_day: Global___ScheduleDay | None = ...,
3531
+ ) -> None: ...
3532
+ _HasFieldArgType: _TypeAlias = _typing.Literal["schedule_day", b"schedule_day"] # noqa: Y015
3533
+ def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ...
3534
+ _ClearFieldArgType: _TypeAlias = _typing.Literal["schedule_day", b"schedule_day"] # noqa: Y015
3535
+ def ClearField(self, field_name: _ClearFieldArgType) -> None: ...
3536
+ def WhichOneof(self, oneof_group: _Never) -> None: ...
3537
+
3538
+ Global___UpdateScheduleDayRequest: _TypeAlias = UpdateScheduleDayRequest # noqa: Y015
3539
+
3540
+ @_typing.final
3541
+ class DeleteScheduleDayRequest(_message.Message):
3542
+ DESCRIPTOR: _descriptor.Descriptor
3543
+
3544
+ SCHEDULE_DAY_ID_FIELD_NUMBER: _builtins.int
3545
+ schedule_day_id: _builtins.str
3546
+ def __init__(
3547
+ self,
3548
+ *,
3549
+ schedule_day_id: _builtins.str = ...,
3550
+ ) -> None: ...
3551
+ _HasFieldArgType: _TypeAlias = _Never # noqa: Y015
3552
+ def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ...
3553
+ _ClearFieldArgType: _TypeAlias = _typing.Literal["schedule_day_id", b"schedule_day_id"] # noqa: Y015
3554
+ def ClearField(self, field_name: _ClearFieldArgType) -> None: ...
3555
+ def WhichOneof(self, oneof_group: _Never) -> None: ...
3556
+
3557
+ Global___DeleteScheduleDayRequest: _TypeAlias = DeleteScheduleDayRequest # noqa: Y015
3558
+
3559
+ @_typing.final
3560
+ class ListScheduleDaysRequest(_message.Message):
3561
+ DESCRIPTOR: _descriptor.Descriptor
3562
+
3563
+ FILTER_FIELD_NUMBER: _builtins.int
3564
+ filter: _builtins.str
3565
+ def __init__(
3566
+ self,
3567
+ *,
3568
+ filter: _builtins.str = ...,
3569
+ ) -> None: ...
3570
+ _HasFieldArgType: _TypeAlias = _Never # noqa: Y015
3571
+ def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ...
3572
+ _ClearFieldArgType: _TypeAlias = _typing.Literal["filter", b"filter"] # noqa: Y015
3573
+ def ClearField(self, field_name: _ClearFieldArgType) -> None: ...
3574
+ def WhichOneof(self, oneof_group: _Never) -> None: ...
3575
+
3576
+ Global___ListScheduleDaysRequest: _TypeAlias = ListScheduleDaysRequest # noqa: Y015
3577
+
3578
+ @_typing.final
3579
+ class ListScheduleDaysResponse(_message.Message):
3580
+ DESCRIPTOR: _descriptor.Descriptor
3581
+
3582
+ SCHEDULE_DAYS_FIELD_NUMBER: _builtins.int
3583
+ @_builtins.property
3584
+ def schedule_days(self) -> _containers.RepeatedCompositeFieldContainer[Global___ScheduleDay]: ...
3585
+ def __init__(
3586
+ self,
3587
+ *,
3588
+ schedule_days: _abc.Iterable[Global___ScheduleDay] | None = ...,
3589
+ ) -> None: ...
3590
+ _HasFieldArgType: _TypeAlias = _Never # noqa: Y015
3591
+ def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ...
3592
+ _ClearFieldArgType: _TypeAlias = _typing.Literal["schedule_days", b"schedule_days"] # noqa: Y015
3593
+ def ClearField(self, field_name: _ClearFieldArgType) -> None: ...
3594
+ def WhichOneof(self, oneof_group: _Never) -> None: ...
3595
+
3596
+ Global___ListScheduleDaysResponse: _TypeAlias = ListScheduleDaysResponse # noqa: Y015
3597
+
3598
+ @_typing.final
3599
+ class CreateScheduleWeekRequest(_message.Message):
3600
+ DESCRIPTOR: _descriptor.Descriptor
3601
+
3602
+ SCHEDULE_WEEK_FIELD_NUMBER: _builtins.int
3603
+ @_builtins.property
3604
+ def schedule_week(self) -> Global___ScheduleWeek: ...
3605
+ def __init__(
3606
+ self,
3607
+ *,
3608
+ schedule_week: Global___ScheduleWeek | None = ...,
3609
+ ) -> None: ...
3610
+ _HasFieldArgType: _TypeAlias = _typing.Literal["schedule_week", b"schedule_week"] # noqa: Y015
3611
+ def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ...
3612
+ _ClearFieldArgType: _TypeAlias = _typing.Literal["schedule_week", b"schedule_week"] # noqa: Y015
3613
+ def ClearField(self, field_name: _ClearFieldArgType) -> None: ...
3614
+ def WhichOneof(self, oneof_group: _Never) -> None: ...
3615
+
3616
+ Global___CreateScheduleWeekRequest: _TypeAlias = CreateScheduleWeekRequest # noqa: Y015
3617
+
3618
+ @_typing.final
3619
+ class GetScheduleWeekRequest(_message.Message):
3620
+ DESCRIPTOR: _descriptor.Descriptor
3621
+
3622
+ SCHEDULE_WEEK_ID_FIELD_NUMBER: _builtins.int
3623
+ schedule_week_id: _builtins.str
3624
+ def __init__(
3625
+ self,
3626
+ *,
3627
+ schedule_week_id: _builtins.str = ...,
3628
+ ) -> None: ...
3629
+ _HasFieldArgType: _TypeAlias = _Never # noqa: Y015
3630
+ def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ...
3631
+ _ClearFieldArgType: _TypeAlias = _typing.Literal["schedule_week_id", b"schedule_week_id"] # noqa: Y015
3632
+ def ClearField(self, field_name: _ClearFieldArgType) -> None: ...
3633
+ def WhichOneof(self, oneof_group: _Never) -> None: ...
3634
+
3635
+ Global___GetScheduleWeekRequest: _TypeAlias = GetScheduleWeekRequest # noqa: Y015
3636
+
3637
+ @_typing.final
3638
+ class UpdateScheduleWeekRequest(_message.Message):
3639
+ DESCRIPTOR: _descriptor.Descriptor
3640
+
3641
+ SCHEDULE_WEEK_FIELD_NUMBER: _builtins.int
3642
+ @_builtins.property
3643
+ def schedule_week(self) -> Global___ScheduleWeek: ...
3644
+ def __init__(
3645
+ self,
3646
+ *,
3647
+ schedule_week: Global___ScheduleWeek | None = ...,
3648
+ ) -> None: ...
3649
+ _HasFieldArgType: _TypeAlias = _typing.Literal["schedule_week", b"schedule_week"] # noqa: Y015
3650
+ def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ...
3651
+ _ClearFieldArgType: _TypeAlias = _typing.Literal["schedule_week", b"schedule_week"] # noqa: Y015
3652
+ def ClearField(self, field_name: _ClearFieldArgType) -> None: ...
3653
+ def WhichOneof(self, oneof_group: _Never) -> None: ...
3654
+
3655
+ Global___UpdateScheduleWeekRequest: _TypeAlias = UpdateScheduleWeekRequest # noqa: Y015
3656
+
3657
+ @_typing.final
3658
+ class DeleteScheduleWeekRequest(_message.Message):
3659
+ DESCRIPTOR: _descriptor.Descriptor
3660
+
3661
+ SCHEDULE_WEEK_ID_FIELD_NUMBER: _builtins.int
3662
+ schedule_week_id: _builtins.str
3663
+ def __init__(
3664
+ self,
3665
+ *,
3666
+ schedule_week_id: _builtins.str = ...,
3667
+ ) -> None: ...
3668
+ _HasFieldArgType: _TypeAlias = _Never # noqa: Y015
3669
+ def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ...
3670
+ _ClearFieldArgType: _TypeAlias = _typing.Literal["schedule_week_id", b"schedule_week_id"] # noqa: Y015
3671
+ def ClearField(self, field_name: _ClearFieldArgType) -> None: ...
3672
+ def WhichOneof(self, oneof_group: _Never) -> None: ...
3673
+
3674
+ Global___DeleteScheduleWeekRequest: _TypeAlias = DeleteScheduleWeekRequest # noqa: Y015
3675
+
3676
+ @_typing.final
3677
+ class ListScheduleWeeksRequest(_message.Message):
3678
+ DESCRIPTOR: _descriptor.Descriptor
3679
+
3680
+ FILTER_FIELD_NUMBER: _builtins.int
3681
+ filter: _builtins.str
3682
+ def __init__(
3683
+ self,
3684
+ *,
3685
+ filter: _builtins.str = ...,
3686
+ ) -> None: ...
3687
+ _HasFieldArgType: _TypeAlias = _Never # noqa: Y015
3688
+ def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ...
3689
+ _ClearFieldArgType: _TypeAlias = _typing.Literal["filter", b"filter"] # noqa: Y015
3690
+ def ClearField(self, field_name: _ClearFieldArgType) -> None: ...
3691
+ def WhichOneof(self, oneof_group: _Never) -> None: ...
3692
+
3693
+ Global___ListScheduleWeeksRequest: _TypeAlias = ListScheduleWeeksRequest # noqa: Y015
3694
+
3695
+ @_typing.final
3696
+ class ListScheduleWeeksResponse(_message.Message):
3697
+ DESCRIPTOR: _descriptor.Descriptor
3698
+
3699
+ SCHEDULE_WEEKS_FIELD_NUMBER: _builtins.int
3700
+ @_builtins.property
3701
+ def schedule_weeks(self) -> _containers.RepeatedCompositeFieldContainer[Global___ScheduleWeek]: ...
3702
+ def __init__(
3703
+ self,
3704
+ *,
3705
+ schedule_weeks: _abc.Iterable[Global___ScheduleWeek] | None = ...,
3706
+ ) -> None: ...
3707
+ _HasFieldArgType: _TypeAlias = _Never # noqa: Y015
3708
+ def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ...
3709
+ _ClearFieldArgType: _TypeAlias = _typing.Literal["schedule_weeks", b"schedule_weeks"] # noqa: Y015
3710
+ def ClearField(self, field_name: _ClearFieldArgType) -> None: ...
3711
+ def WhichOneof(self, oneof_group: _Never) -> None: ...
3712
+
3713
+ Global___ListScheduleWeeksResponse: _TypeAlias = ListScheduleWeeksResponse # noqa: Y015
3714
+
3715
+ @_typing.final
3716
+ class CreateComfortSettingRequest(_message.Message):
3717
+ DESCRIPTOR: _descriptor.Descriptor
3718
+
3719
+ COMFORT_SETTING_FIELD_NUMBER: _builtins.int
3720
+ @_builtins.property
3721
+ def comfort_setting(self) -> Global___ComfortSetting: ...
3722
+ def __init__(
3723
+ self,
3724
+ *,
3725
+ comfort_setting: Global___ComfortSetting | None = ...,
3726
+ ) -> None: ...
3727
+ _HasFieldArgType: _TypeAlias = _typing.Literal["comfort_setting", b"comfort_setting"] # noqa: Y015
3728
+ def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ...
3729
+ _ClearFieldArgType: _TypeAlias = _typing.Literal["comfort_setting", b"comfort_setting"] # noqa: Y015
3730
+ def ClearField(self, field_name: _ClearFieldArgType) -> None: ...
3731
+ def WhichOneof(self, oneof_group: _Never) -> None: ...
3732
+
3733
+ Global___CreateComfortSettingRequest: _TypeAlias = CreateComfortSettingRequest # noqa: Y015
3734
+
3735
+ @_typing.final
3736
+ class GetComfortSettingRequest(_message.Message):
3737
+ DESCRIPTOR: _descriptor.Descriptor
3738
+
3739
+ COMFORT_SETTING_ID_FIELD_NUMBER: _builtins.int
3740
+ comfort_setting_id: _builtins.str
3741
+ def __init__(
3742
+ self,
3743
+ *,
3744
+ comfort_setting_id: _builtins.str = ...,
3745
+ ) -> None: ...
3746
+ _HasFieldArgType: _TypeAlias = _Never # noqa: Y015
3747
+ def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ...
3748
+ _ClearFieldArgType: _TypeAlias = _typing.Literal["comfort_setting_id", b"comfort_setting_id"] # noqa: Y015
3749
+ def ClearField(self, field_name: _ClearFieldArgType) -> None: ...
3750
+ def WhichOneof(self, oneof_group: _Never) -> None: ...
3751
+
3752
+ Global___GetComfortSettingRequest: _TypeAlias = GetComfortSettingRequest # noqa: Y015
3753
+
3754
+ @_typing.final
3755
+ class UpdateComfortSettingRequest(_message.Message):
3756
+ DESCRIPTOR: _descriptor.Descriptor
3757
+
3758
+ COMFORT_SETTING_FIELD_NUMBER: _builtins.int
3759
+ @_builtins.property
3760
+ def comfort_setting(self) -> Global___ComfortSetting: ...
3761
+ def __init__(
3762
+ self,
3763
+ *,
3764
+ comfort_setting: Global___ComfortSetting | None = ...,
3765
+ ) -> None: ...
3766
+ _HasFieldArgType: _TypeAlias = _typing.Literal["comfort_setting", b"comfort_setting"] # noqa: Y015
3767
+ def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ...
3768
+ _ClearFieldArgType: _TypeAlias = _typing.Literal["comfort_setting", b"comfort_setting"] # noqa: Y015
3769
+ def ClearField(self, field_name: _ClearFieldArgType) -> None: ...
3770
+ def WhichOneof(self, oneof_group: _Never) -> None: ...
3771
+
3772
+ Global___UpdateComfortSettingRequest: _TypeAlias = UpdateComfortSettingRequest # noqa: Y015
3773
+
3774
+ @_typing.final
3775
+ class DeleteComfortSettingRequest(_message.Message):
3776
+ DESCRIPTOR: _descriptor.Descriptor
3777
+
3778
+ COMFORT_SETTING_ID_FIELD_NUMBER: _builtins.int
3779
+ comfort_setting_id: _builtins.str
3780
+ def __init__(
3781
+ self,
3782
+ *,
3783
+ comfort_setting_id: _builtins.str = ...,
3784
+ ) -> None: ...
3785
+ _HasFieldArgType: _TypeAlias = _Never # noqa: Y015
3786
+ def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ...
3787
+ _ClearFieldArgType: _TypeAlias = _typing.Literal["comfort_setting_id", b"comfort_setting_id"] # noqa: Y015
3788
+ def ClearField(self, field_name: _ClearFieldArgType) -> None: ...
3789
+ def WhichOneof(self, oneof_group: _Never) -> None: ...
3790
+
3791
+ Global___DeleteComfortSettingRequest: _TypeAlias = DeleteComfortSettingRequest # noqa: Y015
3792
+
3793
+ @_typing.final
3794
+ class ListComfortSettingsRequest(_message.Message):
3795
+ DESCRIPTOR: _descriptor.Descriptor
3796
+
3797
+ FILTER_FIELD_NUMBER: _builtins.int
3798
+ filter: _builtins.str
3799
+ def __init__(
3800
+ self,
3801
+ *,
3802
+ filter: _builtins.str = ...,
3803
+ ) -> None: ...
3804
+ _HasFieldArgType: _TypeAlias = _Never # noqa: Y015
3805
+ def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ...
3806
+ _ClearFieldArgType: _TypeAlias = _typing.Literal["filter", b"filter"] # noqa: Y015
3807
+ def ClearField(self, field_name: _ClearFieldArgType) -> None: ...
3808
+ def WhichOneof(self, oneof_group: _Never) -> None: ...
3809
+
3810
+ Global___ListComfortSettingsRequest: _TypeAlias = ListComfortSettingsRequest # noqa: Y015
3811
+
3812
+ @_typing.final
3813
+ class ListComfortSettingsResponse(_message.Message):
3814
+ DESCRIPTOR: _descriptor.Descriptor
3815
+
3816
+ COMFORT_SETTINGS_FIELD_NUMBER: _builtins.int
3817
+ @_builtins.property
3818
+ def comfort_settings(self) -> _containers.RepeatedCompositeFieldContainer[Global___ComfortSetting]: ...
3819
+ def __init__(
3820
+ self,
3821
+ *,
3822
+ comfort_settings: _abc.Iterable[Global___ComfortSetting] | None = ...,
3823
+ ) -> None: ...
3824
+ _HasFieldArgType: _TypeAlias = _Never # noqa: Y015
3825
+ def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ...
3826
+ _ClearFieldArgType: _TypeAlias = _typing.Literal["comfort_settings", b"comfort_settings"] # noqa: Y015
3827
+ def ClearField(self, field_name: _ClearFieldArgType) -> None: ...
3828
+ def WhichOneof(self, oneof_group: _Never) -> None: ...
3829
+
3830
+ Global___ListComfortSettingsResponse: _TypeAlias = ListComfortSettingsResponse # noqa: Y015
3831
+
3832
+ @_typing.final
3833
+ class CreateLocationRequest(_message.Message):
3834
+ DESCRIPTOR: _descriptor.Descriptor
3835
+
3836
+ LOCATION_FIELD_NUMBER: _builtins.int
3837
+ @_builtins.property
3838
+ def location(self) -> Global___Location: ...
3839
+ def __init__(
3840
+ self,
3841
+ *,
3842
+ location: Global___Location | None = ...,
3843
+ ) -> None: ...
3844
+ _HasFieldArgType: _TypeAlias = _typing.Literal["location", b"location"] # noqa: Y015
3845
+ def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ...
3846
+ _ClearFieldArgType: _TypeAlias = _typing.Literal["location", b"location"] # noqa: Y015
3847
+ def ClearField(self, field_name: _ClearFieldArgType) -> None: ...
3848
+ def WhichOneof(self, oneof_group: _Never) -> None: ...
3849
+
3850
+ Global___CreateLocationRequest: _TypeAlias = CreateLocationRequest # noqa: Y015
3851
+
3852
+ @_typing.final
3853
+ class GetLocationRequest(_message.Message):
3854
+ DESCRIPTOR: _descriptor.Descriptor
3855
+
3856
+ LOCATION_ID_FIELD_NUMBER: _builtins.int
3857
+ location_id: _builtins.str
3858
+ def __init__(
3859
+ self,
3860
+ *,
3861
+ location_id: _builtins.str = ...,
3862
+ ) -> None: ...
3863
+ _HasFieldArgType: _TypeAlias = _Never # noqa: Y015
3864
+ def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ...
3865
+ _ClearFieldArgType: _TypeAlias = _typing.Literal["location_id", b"location_id"] # noqa: Y015
3866
+ def ClearField(self, field_name: _ClearFieldArgType) -> None: ...
3867
+ def WhichOneof(self, oneof_group: _Never) -> None: ...
3868
+
3869
+ Global___GetLocationRequest: _TypeAlias = GetLocationRequest # noqa: Y015
3870
+
3871
+ @_typing.final
3872
+ class UpdateLocationRequest(_message.Message):
3873
+ DESCRIPTOR: _descriptor.Descriptor
3874
+
3875
+ LOCATION_FIELD_NUMBER: _builtins.int
3876
+ @_builtins.property
3877
+ def location(self) -> Global___Location: ...
3878
+ def __init__(
3879
+ self,
3880
+ *,
3881
+ location: Global___Location | None = ...,
3882
+ ) -> None: ...
3883
+ _HasFieldArgType: _TypeAlias = _typing.Literal["location", b"location"] # noqa: Y015
3884
+ def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ...
3885
+ _ClearFieldArgType: _TypeAlias = _typing.Literal["location", b"location"] # noqa: Y015
3886
+ def ClearField(self, field_name: _ClearFieldArgType) -> None: ...
3887
+ def WhichOneof(self, oneof_group: _Never) -> None: ...
3888
+
3889
+ Global___UpdateLocationRequest: _TypeAlias = UpdateLocationRequest # noqa: Y015
3890
+
3891
+ @_typing.final
3892
+ class DeleteLocationRequest(_message.Message):
3893
+ DESCRIPTOR: _descriptor.Descriptor
3894
+
3895
+ LOCATION_ID_FIELD_NUMBER: _builtins.int
3896
+ location_id: _builtins.str
3897
+ def __init__(
3898
+ self,
3899
+ *,
3900
+ location_id: _builtins.str = ...,
3901
+ ) -> None: ...
3902
+ _HasFieldArgType: _TypeAlias = _Never # noqa: Y015
3903
+ def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ...
3904
+ _ClearFieldArgType: _TypeAlias = _typing.Literal["location_id", b"location_id"] # noqa: Y015
3905
+ def ClearField(self, field_name: _ClearFieldArgType) -> None: ...
3906
+ def WhichOneof(self, oneof_group: _Never) -> None: ...
3907
+
3908
+ Global___DeleteLocationRequest: _TypeAlias = DeleteLocationRequest # noqa: Y015
3909
+
3910
+ @_typing.final
3911
+ class ListLocationsRequest(_message.Message):
3912
+ DESCRIPTOR: _descriptor.Descriptor
3913
+
3914
+ SYSTEM_ID_FIELD_NUMBER: _builtins.int
3915
+ system_id: _builtins.str
3916
+ def __init__(
3917
+ self,
3918
+ *,
3919
+ system_id: _builtins.str = ...,
3920
+ ) -> None: ...
3921
+ _HasFieldArgType: _TypeAlias = _Never # noqa: Y015
3922
+ def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ...
3923
+ _ClearFieldArgType: _TypeAlias = _typing.Literal["system_id", b"system_id"] # noqa: Y015
3924
+ def ClearField(self, field_name: _ClearFieldArgType) -> None: ...
3925
+ def WhichOneof(self, oneof_group: _Never) -> None: ...
3926
+
3927
+ Global___ListLocationsRequest: _TypeAlias = ListLocationsRequest # noqa: Y015
3928
+
3929
+ @_typing.final
3930
+ class ListLocationsResponse(_message.Message):
3931
+ DESCRIPTOR: _descriptor.Descriptor
3932
+
3933
+ LOCATIONS_FIELD_NUMBER: _builtins.int
3934
+ @_builtins.property
3935
+ def locations(self) -> _containers.RepeatedCompositeFieldContainer[Global___Location]: ...
3936
+ def __init__(
3937
+ self,
3938
+ *,
3939
+ locations: _abc.Iterable[Global___Location] | None = ...,
3940
+ ) -> None: ...
3941
+ _HasFieldArgType: _TypeAlias = _Never # noqa: Y015
3942
+ def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ...
3943
+ _ClearFieldArgType: _TypeAlias = _typing.Literal["locations", b"locations"] # noqa: Y015
3944
+ def ClearField(self, field_name: _ClearFieldArgType) -> None: ...
3945
+ def WhichOneof(self, oneof_group: _Never) -> None: ...
3946
+
3947
+ Global___ListLocationsResponse: _TypeAlias = ListLocationsResponse # noqa: Y015