@kusinta/iot-schema 0.2.0-beta.6 → 0.2.0-beta.61
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.
- package/package.json +44 -29
- package/src/kusinta/iot/access/v1/acl_pb.d.ts +146 -2
- package/src/kusinta/iot/access/v1/acl_pb.js +19 -2
- package/src/kusinta/iot/access/v1/roles_pb.d.ts +160 -4
- package/src/kusinta/iot/access/v1/roles_pb.js +128 -5
- package/src/kusinta/iot/accountlink/v1/account_link_pb.d.ts +591 -0
- package/src/kusinta/iot/accountlink/v1/account_link_pb.js +160 -0
- package/src/kusinta/iot/climate/v1/climate_pb.d.ts +1695 -0
- package/src/kusinta/iot/climate/v1/climate_pb.js +292 -0
- package/src/kusinta/iot/commissioning/v1/commissioning_pb.d.ts +1643 -0
- package/src/kusinta/iot/commissioning/v1/commissioning_pb.js +339 -0
- package/src/kusinta/iot/common/v1/pairing_pb.d.ts +24 -4
- package/src/kusinta/iot/common/v1/pairing_pb.js +1 -1
- package/src/kusinta/iot/common/v1/types_pb.d.ts +235 -0
- package/src/kusinta/iot/common/v1/types_pb.js +84 -2
- package/src/kusinta/iot/connector/v1/connector_pb.d.ts +713 -3
- package/src/kusinta/iot/connector/v1/connector_pb.js +107 -16
- package/src/kusinta/iot/device/v1/cluster_state_pb.d.ts +213 -1
- package/src/kusinta/iot/device/v1/cluster_state_pb.js +37 -2
- package/src/kusinta/iot/device/v1/descriptor_pb.d.ts +32 -4
- package/src/kusinta/iot/device/v1/descriptor_pb.js +2 -1
- package/src/kusinta/iot/device/v1/device_event_pb.d.ts +89 -5
- package/src/kusinta/iot/device/v1/device_event_pb.js +1 -1
- package/src/kusinta/iot/device/v1/device_pb.d.ts +444 -11
- package/src/kusinta/iot/device/v1/device_pb.js +74 -2
- package/src/kusinta/iot/device/v1/properties_pb.d.ts +26 -5
- package/src/kusinta/iot/device/v1/properties_pb.js +1 -1
- package/src/kusinta/iot/device/v1/property_update_pb.d.ts +46 -2
- package/src/kusinta/iot/device/v1/property_update_pb.js +2 -1
- package/src/kusinta/iot/heating/v1/heating_pb.d.ts +659 -0
- package/src/kusinta/iot/heating/v1/heating_pb.js +119 -0
- package/src/kusinta/iot/link/v1/link_pb.d.ts +438 -0
- package/src/kusinta/iot/link/v1/link_pb.js +121 -0
- package/src/kusinta/iot/planning/v1/planning_pb.d.ts +199 -0
- package/src/kusinta/iot/planning/v1/planning_pb.js +48 -0
- package/src/kusinta/iot/planning/v1/planning_service_pb.d.ts +121 -0
- package/src/kusinta/iot/planning/v1/planning_service_pb.js +38 -0
- package/src/kusinta/iot/registration/v1/registration_pb.d.ts +18 -0
- package/src/kusinta/iot/registration/v1/registration_pb.js +1 -1
- package/src/kusinta/iot/reporting/v1/reporting_pb.d.ts +1263 -0
- package/src/kusinta/iot/reporting/v1/reporting_pb.js +238 -0
- package/src/kusinta/iot/reporting/v1/reporting_service_pb.d.ts +63 -0
- package/src/kusinta/iot/reporting/v1/reporting_service_pb.js +24 -0
- package/src/kusinta/iot/signaling/v1/signaling_pb.d.ts +939 -7
- package/src/kusinta/iot/signaling/v1/signaling_pb.js +163 -4
- package/src/kusinta/iot/signaling/v1/signaling_service_pb.d.ts +24 -1
- package/src/kusinta/iot/signaling/v1/signaling_service_pb.js +1 -1
- package/src/kusinta/iot/space/v1/space_pb.d.ts +218 -3
- package/src/kusinta/iot/space/v1/space_pb.js +25 -2
- package/src/kusinta/iot/vendor/homematic/v1/homematic_pb.d.ts +15 -0
- package/src/kusinta/iot/vendor/homematic/v1/homematic_pb.js +1 -1
- package/src/kusinta/iot/vendor/lorawan/v1/lorawan_pb.d.ts +69 -0
- package/src/kusinta/iot/vendor/lorawan/v1/lorawan_pb.js +19 -0
- package/src/kusinta/iot/vendor/v1/vendor_options_pb.d.ts +5 -4
- package/src/kusinta/iot/vendor/v1/vendor_options_pb.js +5 -4
- package/src/kusinta/iot/webrtc/v1/app_token_pb.d.ts +48 -5
- package/src/kusinta/iot/webrtc/v1/app_token_pb.js +1 -1
- package/src/kusinta/iot/webrtc/v1/command_pb.d.ts +56 -0
- package/src/kusinta/iot/webrtc/v1/command_pb.js +1 -1
- package/src/kusinta/iot/webrtc/v1/device_state_pb.d.ts +179 -5
- package/src/kusinta/iot/webrtc/v1/device_state_pb.js +34 -5
- package/src/kusinta/iot/webrtc/v1/envelope_pb.d.ts +603 -13
- package/src/kusinta/iot/webrtc/v1/envelope_pb.js +61 -4
- package/src/kusinta/iot/webrtc/v1/household_pb.d.ts +613 -0
- package/src/kusinta/iot/webrtc/v1/household_pb.js +134 -0
- package/src/kusinta/iot/webrtc/v1/invite_pb.d.ts +502 -0
- package/src/kusinta/iot/webrtc/v1/invite_pb.js +108 -0
- package/src/kusinta/iot/webrtc/v1/management_pb.d.ts +2595 -75
- package/src/kusinta/iot/webrtc/v1/management_pb.js +382 -5
- package/src/kusinta/iot/webrtc/v1/members_pb.d.ts +582 -0
- package/src/kusinta/iot/webrtc/v1/members_pb.js +113 -0
- package/src/kusinta/iot/webrtc/v1/permission_push_pb.d.ts +66 -4
- package/src/kusinta/iot/webrtc/v1/permission_push_pb.js +9 -1
|
@@ -0,0 +1,1695 @@
|
|
|
1
|
+
// @generated by protoc-gen-es v2.12.0 with parameter "target=js+dts,import_extension=js"
|
|
2
|
+
// @generated from file kusinta/iot/climate/v1/climate.proto (package kusinta.iot.climate.v1, syntax proto3)
|
|
3
|
+
/* eslint-disable */
|
|
4
|
+
|
|
5
|
+
import type { GenEnum, GenFile, GenMessage } from "@bufbuild/protobuf/codegenv2";
|
|
6
|
+
import type { Message } from "@bufbuild/protobuf";
|
|
7
|
+
import type { Timestamp } from "@bufbuild/protobuf/wkt";
|
|
8
|
+
import type { DeviceId, SpaceId, UserId } from "../../identity/v1/identity_pb.js";
|
|
9
|
+
import type { Role } from "../../access/v1/roles_pb.js";
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* Describes the file kusinta/iot/climate/v1/climate.proto.
|
|
13
|
+
*/
|
|
14
|
+
export declare const file_kusinta_iot_climate_v1_climate: GenFile;
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* Who or what last set a room's target, and when.
|
|
18
|
+
*
|
|
19
|
+
* Shown beside the target, because under "last change wins" a target that moved on its
|
|
20
|
+
* own looks like a fault unless the reader can see that somebody turned a radiator by
|
|
21
|
+
* hand ten minutes ago.
|
|
22
|
+
*
|
|
23
|
+
* @generated from message kusinta.iot.climate.v1.TargetChange
|
|
24
|
+
*/
|
|
25
|
+
export declare type TargetChange = Message<"kusinta.iot.climate.v1.TargetChange"> & {
|
|
26
|
+
/**
|
|
27
|
+
* @generated from field: google.protobuf.Timestamp at = 1;
|
|
28
|
+
*/
|
|
29
|
+
at?: Timestamp | undefined;
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* @generated from oneof kusinta.iot.climate.v1.TargetChange.by
|
|
33
|
+
*/
|
|
34
|
+
by: {
|
|
35
|
+
/**
|
|
36
|
+
* Set in the app, by this user.
|
|
37
|
+
*
|
|
38
|
+
* @generated from field: kusinta.iot.identity.v1.UserId user = 2;
|
|
39
|
+
*/
|
|
40
|
+
value: UserId;
|
|
41
|
+
case: "user";
|
|
42
|
+
} | {
|
|
43
|
+
/**
|
|
44
|
+
* Turned by hand at this device: a valve's knob or a wall thermostat's dial, as the
|
|
45
|
+
* device reported it (Matter Thermostat SetpointChangeSource = Manual). A change the
|
|
46
|
+
* device made on its own — window-open, frost protection, its own schedule — is never
|
|
47
|
+
* adopted and never appears here.
|
|
48
|
+
*
|
|
49
|
+
* @generated from field: kusinta.iot.identity.v1.DeviceId device = 3;
|
|
50
|
+
*/
|
|
51
|
+
value: DeviceId;
|
|
52
|
+
case: "device";
|
|
53
|
+
} | {
|
|
54
|
+
/**
|
|
55
|
+
* Set by the gateway when the home gained a resident, from the room's outer move-in target
|
|
56
|
+
* (OuterRoomLimits.move_in_target; webrtc.v1 household.proto, MOVE-IN). Only true is sent.
|
|
57
|
+
*
|
|
58
|
+
* @generated from field: bool move_in = 4;
|
|
59
|
+
*/
|
|
60
|
+
value: boolean;
|
|
61
|
+
case: "moveIn";
|
|
62
|
+
} | { case: undefined; value?: undefined };
|
|
63
|
+
};
|
|
64
|
+
|
|
65
|
+
/**
|
|
66
|
+
* Describes the message kusinta.iot.climate.v1.TargetChange.
|
|
67
|
+
* Use `create(TargetChangeSchema)` to create a new message.
|
|
68
|
+
*/
|
|
69
|
+
export declare const TargetChangeSchema: GenMessage<TargetChange>;
|
|
70
|
+
|
|
71
|
+
/**
|
|
72
|
+
* The climate of one room.
|
|
73
|
+
*
|
|
74
|
+
* Apply as an upsert keyed on space_id: the same room is sent again whenever any of it
|
|
75
|
+
* that the recipient is sent moves (see state_withheld).
|
|
76
|
+
*
|
|
77
|
+
* @generated from message kusinta.iot.climate.v1.RoomClimate
|
|
78
|
+
*/
|
|
79
|
+
export declare type RoomClimate = Message<"kusinta.iot.climate.v1.RoomClimate"> & {
|
|
80
|
+
/**
|
|
81
|
+
* A Space of SPACE_TYPE_ROOM.
|
|
82
|
+
*
|
|
83
|
+
* @generated from field: kusinta.iot.identity.v1.SpaceId space_id = 1;
|
|
84
|
+
*/
|
|
85
|
+
spaceId?: SpaceId | undefined;
|
|
86
|
+
|
|
87
|
+
/**
|
|
88
|
+
* The temperature the room is to be held at, in centidegrees. Unset: nobody has set
|
|
89
|
+
* one. Always within the inner limits where those are set (inner_limits), and bounded by
|
|
90
|
+
* nothing of the room where they are not. Never clamped by the outer ones, a change made by
|
|
91
|
+
* hand at a device they bind included: the target keeps the change, and that device's output
|
|
92
|
+
* is held within them (OuterRoomLimits, WHAT THEY BIND and DEVICE LIMITS).
|
|
93
|
+
*
|
|
94
|
+
* Rollout note: an app that predates outer_limits reads min_centidegrees and
|
|
95
|
+
* max_centidegrees as bounds on this field, and may be sent a target outside them; one that
|
|
96
|
+
* holds its control to them may, on any touch, send the outer bound as the target and so
|
|
97
|
+
* rewrite a household's target set beyond it. An app tells a gateway that predates outer
|
|
98
|
+
* limits by outer_limits unset, and offers it only min and max (ConfigureRoomClimate.limits).
|
|
99
|
+
*
|
|
100
|
+
* @generated from field: optional sint32 target_centidegrees = 2;
|
|
101
|
+
*/
|
|
102
|
+
targetCentidegrees?: number | undefined;
|
|
103
|
+
|
|
104
|
+
/**
|
|
105
|
+
* Who or what set target_centidegrees. Unset while the target is, and when it is withheld
|
|
106
|
+
* from the recipient: from service in a home, and from anyone when it dates from before
|
|
107
|
+
* their current residency in the home, or from a home they did not live in at the time
|
|
108
|
+
* (see access.v1.MembershipRelation). The property owner and the gateway administrators are
|
|
109
|
+
* given it for a target set in a home while it is empty, as they are given its rooms then
|
|
110
|
+
* (webrtc.v1 household.proto, EMPTY HOME); technicians stay withheld, empty or not.
|
|
111
|
+
*
|
|
112
|
+
* @generated from field: kusinta.iot.climate.v1.TargetChange target_change = 3;
|
|
113
|
+
*/
|
|
114
|
+
targetChange?: TargetChange | undefined;
|
|
115
|
+
|
|
116
|
+
/**
|
|
117
|
+
* What the valves are actually being held at, in centidegrees. Equal to the target
|
|
118
|
+
* unless a ClimateMode on an enclosing space sets the room back — and then the room's
|
|
119
|
+
* own target again if somebody changed this room during the mode (see
|
|
120
|
+
* overrides_mode) — or the vacancy setback holds it (webrtc.v1 household.proto, VACANCY), or
|
|
121
|
+
* an outer bound clamps it (outer_limit_clamp). Where the outer limits bind some of the
|
|
122
|
+
* room's outputs and not others, what those they bind are held at (OuterRoomLimits, HELD).
|
|
123
|
+
* Unset while nothing is being held.
|
|
124
|
+
*
|
|
125
|
+
* @generated from field: optional sint32 effective_target_centidegrees = 4;
|
|
126
|
+
*/
|
|
127
|
+
effectiveTargetCentidegrees?: number | undefined;
|
|
128
|
+
|
|
129
|
+
/**
|
|
130
|
+
* Set when somebody changed this room while a ClimateMode was on: the room keeps its
|
|
131
|
+
* own target until the mode ends, while the rest of the apartment stays set back.
|
|
132
|
+
*
|
|
133
|
+
* @generated from field: bool overrides_mode = 5;
|
|
134
|
+
*/
|
|
135
|
+
overridesMode: boolean;
|
|
136
|
+
|
|
137
|
+
/**
|
|
138
|
+
* The space whose ClimateMode applies to this room, if one does — set back or,
|
|
139
|
+
* with overrides_mode, overridden. Unset when no mode applies.
|
|
140
|
+
*
|
|
141
|
+
* @generated from field: kusinta.iot.identity.v1.SpaceId mode_space_id = 13;
|
|
142
|
+
*/
|
|
143
|
+
modeSpaceId?: SpaceId | undefined;
|
|
144
|
+
|
|
145
|
+
/**
|
|
146
|
+
* A copy of outer_limits.min and .max, in centidegrees, kept for apps that predate
|
|
147
|
+
* outer_limits: each set exactly when its outer bound is, and unset otherwise. Read
|
|
148
|
+
* outer_limits instead. What the gateway writes into a device's own setpoint limits is
|
|
149
|
+
* OuterRoomLimits' (DEVICE LIMITS).
|
|
150
|
+
*
|
|
151
|
+
* @generated from field: optional sint32 min_centidegrees = 6 [deprecated = true];
|
|
152
|
+
* @deprecated
|
|
153
|
+
*/
|
|
154
|
+
minCentidegrees?: number | undefined;
|
|
155
|
+
|
|
156
|
+
/**
|
|
157
|
+
* @generated from field: optional sint32 max_centidegrees = 7 [deprecated = true];
|
|
158
|
+
* @deprecated
|
|
159
|
+
*/
|
|
160
|
+
maxCentidegrees?: number | undefined;
|
|
161
|
+
|
|
162
|
+
/**
|
|
163
|
+
* The sensors the room measures with, in order: the first is used, each later one
|
|
164
|
+
* takes over while those before it are quiet. Only devices filed in this room.
|
|
165
|
+
*
|
|
166
|
+
* In a home, sensors its residents own come first, in the order they were filed, and then
|
|
167
|
+
* the building's; outside homes a room measures with the building's sensors only. The
|
|
168
|
+
* building's are by default every building temperature sensor filed in the room, in the
|
|
169
|
+
* order it was filed, so a sensor filed later joins at the end without anyone configuring
|
|
170
|
+
* anything; an owner can set their order explicitly (see sensors_configured). Empty: the
|
|
171
|
+
* room has no temperature sensor, and its valves regulate on their own probes
|
|
172
|
+
* (NO_SENSOR).
|
|
173
|
+
*
|
|
174
|
+
* @generated from field: repeated kusinta.iot.identity.v1.DeviceId sensor_ids = 8;
|
|
175
|
+
*/
|
|
176
|
+
sensorIds: DeviceId[];
|
|
177
|
+
|
|
178
|
+
/**
|
|
179
|
+
* Whether the building's part of sensor_ids is an order an owner chose, rather than the
|
|
180
|
+
* default of filing order. A building sensor filed into a room with a chosen order is
|
|
181
|
+
* not added to it; a resident's own always is. A sensor that becomes the building's in a
|
|
182
|
+
* room — released by its owner — counts as filed there at that moment.
|
|
183
|
+
*
|
|
184
|
+
* @generated from field: bool sensors_configured = 14;
|
|
185
|
+
*/
|
|
186
|
+
sensorsConfigured: boolean;
|
|
187
|
+
|
|
188
|
+
/**
|
|
189
|
+
* The reading steering the room now, in centidegrees, and which sensor it came from.
|
|
190
|
+
* measured_by unset while the valves are on their own probes.
|
|
191
|
+
*
|
|
192
|
+
* @generated from field: optional sint32 measured_centidegrees = 9;
|
|
193
|
+
*/
|
|
194
|
+
measuredCentidegrees?: number | undefined;
|
|
195
|
+
|
|
196
|
+
/**
|
|
197
|
+
* @generated from field: kusinta.iot.identity.v1.DeviceId measured_by = 10;
|
|
198
|
+
*/
|
|
199
|
+
measuredBy?: DeviceId | undefined;
|
|
200
|
+
|
|
201
|
+
/**
|
|
202
|
+
* @generated from field: kusinta.iot.climate.v1.RoomClimateCondition condition = 11;
|
|
203
|
+
*/
|
|
204
|
+
condition: RoomClimateCondition;
|
|
205
|
+
|
|
206
|
+
/**
|
|
207
|
+
* Whether the controls on this room's devices are locked. While unlocked, a change made
|
|
208
|
+
* by hand at a device becomes the room's target. Locked, the gateway sets the devices'
|
|
209
|
+
* own lock (Matter Thermostat User Interface Configuration KeypadLockout), so the
|
|
210
|
+
* refusal happens at the device rather than being undone later.
|
|
211
|
+
*
|
|
212
|
+
* Stated as the lock rather than as a permission so that the proto3 default — false,
|
|
213
|
+
* unlocked — is the intended default: a room nobody has configured takes changes at its
|
|
214
|
+
* devices, as a room in an apartment should until its residents decide otherwise; when a
|
|
215
|
+
* home loses its last resident, its rooms' locks are cleared, and so are those set while it
|
|
216
|
+
* stood empty when it gains one (webrtc.v1 household.proto, MOVE-IN). Elsewhere locking is
|
|
217
|
+
* the owner's choice.
|
|
218
|
+
*
|
|
219
|
+
* @generated from field: bool lock_device_controls = 12;
|
|
220
|
+
*/
|
|
221
|
+
lockDeviceControls: boolean;
|
|
222
|
+
|
|
223
|
+
/**
|
|
224
|
+
* Set when the recipient reaches this room only as service (see
|
|
225
|
+
* access.v1.MembershipRelation): the room is in someone's home, and what describes the people
|
|
226
|
+
* in it is WITHHELD. Never set for the property owner or a gateway administrator while the
|
|
227
|
+
* home is empty (webrtc.v1 household.proto, EMPTY HOME): they are sent its rooms as rooms
|
|
228
|
+
* outside homes are, and at MOVE-IN sent them again with it set. When it is set,
|
|
229
|
+
* target_centidegrees, target_change, effective_target_centidegrees, overrides_mode,
|
|
230
|
+
* mode_space_id, measured_centidegrees, measured_by, condition, lock_device_controls,
|
|
231
|
+
* inner_limits, outer_limit_clamp, outer_limits_coverage and outer_bound_device_ids are all
|
|
232
|
+
* left unset, and sensor_ids leaves out sensors a resident owns.
|
|
233
|
+
*
|
|
234
|
+
* Unset because withheld, not because unknown: an app must not render them as NO_TARGET or
|
|
235
|
+
* a lost sensor. A withheld room is sent again only when something that IS sent changes,
|
|
236
|
+
* so that the timing of an update does not give away what was withheld. Its outer limits
|
|
237
|
+
* and the sensors service may see are still sent, since setting a room up is service work.
|
|
238
|
+
* Its climate over time is available to service only as an ApartmentClimateSummary.
|
|
239
|
+
*
|
|
240
|
+
* explanations, target_held_until, planning and the comfort band are withheld in the
|
|
241
|
+
* same way.
|
|
242
|
+
*
|
|
243
|
+
* @generated from field: bool state_withheld = 15;
|
|
244
|
+
*/
|
|
245
|
+
stateWithheld: boolean;
|
|
246
|
+
|
|
247
|
+
/**
|
|
248
|
+
* Why the room is being held where it is, when that differs from simply holding its
|
|
249
|
+
* target: a plan heating ahead of an expensive hour, the heat source busy with hot water,
|
|
250
|
+
* a floor zone held back. Most significant first. An app that shows one shows the first
|
|
251
|
+
* it can show: a kind and subject it knows, a pair that kind lists, and not past its
|
|
252
|
+
* ends_at. Empty: nothing beyond the target and condition needs explaining.
|
|
253
|
+
*
|
|
254
|
+
* A window, a lost sensor and the rest of RoomClimateCondition are told by condition and
|
|
255
|
+
* never repeated here; a target a person set is told by target_change and
|
|
256
|
+
* target_held_until; whether the room is planned for at all is told by planning — one
|
|
257
|
+
* fact, one place.
|
|
258
|
+
*
|
|
259
|
+
* Sent with the room, so a replaced room replaces its list: an explanation absent from
|
|
260
|
+
* the latest RoomClimate no longer holds.
|
|
261
|
+
*
|
|
262
|
+
* @generated from field: repeated kusinta.iot.climate.v1.ClimateExplanation explanations = 16;
|
|
263
|
+
*/
|
|
264
|
+
explanations: ClimateExplanation[];
|
|
265
|
+
|
|
266
|
+
/**
|
|
267
|
+
* When a target a person set will next be moved by the gateway on its own — a schedule
|
|
268
|
+
* step, a plan taking over again. Unset: it holds until somebody changes it. Told so that
|
|
269
|
+
* a person is not surprised when their change ends. Unset whenever target_change is
|
|
270
|
+
* withheld from the recipient, for the same reasons: it describes the same change.
|
|
271
|
+
*
|
|
272
|
+
* @generated from field: google.protobuf.Timestamp target_held_until = 17;
|
|
273
|
+
*/
|
|
274
|
+
targetHeldUntil?: Timestamp | undefined;
|
|
275
|
+
|
|
276
|
+
/**
|
|
277
|
+
* Whether a plan steers the room. See RoomPlanning.
|
|
278
|
+
*
|
|
279
|
+
* @generated from field: kusinta.iot.climate.v1.RoomPlanning planning = 18;
|
|
280
|
+
*/
|
|
281
|
+
planning: RoomPlanning;
|
|
282
|
+
|
|
283
|
+
/**
|
|
284
|
+
* The comfort band in force, in centidegrees: the lowest and highest a plan may hold the
|
|
285
|
+
* room at while it heats ahead, coasts or saves on dear energy. Both set or neither, low
|
|
286
|
+
* no higher than high, and within the inner limits where those are set; at the outputs the
|
|
287
|
+
* outer limits bind, a plan holds within them too (OuterRoomLimits, HELD). Absent: no band,
|
|
288
|
+
* and a plan holds the room at its target — never 0 °C.
|
|
289
|
+
*
|
|
290
|
+
* @generated from field: optional sint32 comfort_band_low_centidegrees = 19;
|
|
291
|
+
*/
|
|
292
|
+
comfortBandLowCentidegrees?: number | undefined;
|
|
293
|
+
|
|
294
|
+
/**
|
|
295
|
+
* @generated from field: optional sint32 comfort_band_high_centidegrees = 20;
|
|
296
|
+
*/
|
|
297
|
+
comfortBandHighCentidegrees?: number | undefined;
|
|
298
|
+
|
|
299
|
+
/**
|
|
300
|
+
* The room's outer limits, each bound with who set it and when (OuterRoomLimits). Sent to
|
|
301
|
+
* whoever is sent the room, service included and with state_withheld too: they are the
|
|
302
|
+
* building's, and setting them is service work.
|
|
303
|
+
*
|
|
304
|
+
* Always set by a gateway that keeps outer limits: an empty OuterRoomLimits where the room
|
|
305
|
+
* has none. Unset only from a gateway that predates them, which keeps min and max alone: an
|
|
306
|
+
* app reads unset so, and offers only min and max, through ConfigureRoomClimate.limits,
|
|
307
|
+
* rather than an editor whose away minimum and move-in target that gateway would drop.
|
|
308
|
+
*
|
|
309
|
+
* @generated from field: kusinta.iot.climate.v1.OuterRoomLimits outer_limits = 21;
|
|
310
|
+
*/
|
|
311
|
+
outerLimits?: OuterRoomLimits | undefined;
|
|
312
|
+
|
|
313
|
+
/**
|
|
314
|
+
* The household's limits (InnerRoomLimits). Sent to the home's residents only, and never with
|
|
315
|
+
* state_withheld. Unset: none, or a room outside homes.
|
|
316
|
+
*
|
|
317
|
+
* @generated from field: kusinta.iot.climate.v1.InnerRoomLimits inner_limits = 22;
|
|
318
|
+
*/
|
|
319
|
+
innerLimits?: InnerRoomLimits | undefined;
|
|
320
|
+
|
|
321
|
+
/**
|
|
322
|
+
* Set while an outer bound holds the outputs it binds away from where the room would be held
|
|
323
|
+
* without it — the household's target, its inner limits or its mode's setback — so the
|
|
324
|
+
* household is told which bound does it, and from outer_limits the role behind it and since
|
|
325
|
+
* when. Gone once nothing is clamped. Sent as outer_limits_coverage is.
|
|
326
|
+
*
|
|
327
|
+
* @generated from field: kusinta.iot.climate.v1.OuterLimitClamp outer_limit_clamp = 23;
|
|
328
|
+
*/
|
|
329
|
+
outerLimitClamp?: OuterLimitClamp | undefined;
|
|
330
|
+
|
|
331
|
+
/**
|
|
332
|
+
* How many of the room's heating outputs the outer limits bind, so that an app shows the
|
|
333
|
+
* building's bounds where they apply and not where they do not. In a home, sent to its
|
|
334
|
+
* residents only: to anyone else it would tell whether the room holds a device a resident
|
|
335
|
+
* owns. The exception is a home that stands empty (webrtc.v1 household.proto, EMPTY HOME):
|
|
336
|
+
* its property owner and gateway administrators are sent its rooms as rooms outside homes
|
|
337
|
+
* are, this included, as no household's device or setting is left in it. Outside homes, sent
|
|
338
|
+
* to whoever is sent the room, judged over the outputs of devices the recipient sees, so
|
|
339
|
+
* that a device hidden from them changes nothing they are sent.
|
|
340
|
+
*
|
|
341
|
+
* @generated from field: kusinta.iot.climate.v1.OuterLimitsCoverage outer_limits_coverage = 24;
|
|
342
|
+
*/
|
|
343
|
+
outerLimitsCoverage: OuterLimitsCoverage;
|
|
344
|
+
|
|
345
|
+
/**
|
|
346
|
+
* The devices in the room with a heating output the outer limits bind
|
|
347
|
+
* (OuterRoomLimits, WHAT THEY BIND), so that an app marks a device's own limit settings as
|
|
348
|
+
* governed by them only where they are. Sent as outer_limits_coverage is, and judged over the
|
|
349
|
+
* same devices: outside homes, only devices the recipient sees are listed. Empty under
|
|
350
|
+
* coverage NONE or UNSPECIFIED; under ALL, every heating device in the room the recipient
|
|
351
|
+
* sees is in it; under SOME, some are.
|
|
352
|
+
*
|
|
353
|
+
* @generated from field: repeated kusinta.iot.identity.v1.DeviceId outer_bound_device_ids = 25;
|
|
354
|
+
*/
|
|
355
|
+
outerBoundDeviceIds: DeviceId[];
|
|
356
|
+
};
|
|
357
|
+
|
|
358
|
+
/**
|
|
359
|
+
* Describes the message kusinta.iot.climate.v1.RoomClimate.
|
|
360
|
+
* Use `create(RoomClimateSchema)` to create a new message.
|
|
361
|
+
*/
|
|
362
|
+
export declare const RoomClimateSchema: GenMessage<RoomClimate>;
|
|
363
|
+
|
|
364
|
+
/**
|
|
365
|
+
* One bound of a room's outer limits, with who set it and when. Shown to the household as the
|
|
366
|
+
* role and the time, never a name: "building administrator, since …".
|
|
367
|
+
*
|
|
368
|
+
* @generated from message kusinta.iot.climate.v1.OuterLimit
|
|
369
|
+
*/
|
|
370
|
+
export declare type OuterLimit = Message<"kusinta.iot.climate.v1.OuterLimit"> & {
|
|
371
|
+
/**
|
|
372
|
+
* @generated from field: sint32 centidegrees = 1;
|
|
373
|
+
*/
|
|
374
|
+
centidegrees: number;
|
|
375
|
+
|
|
376
|
+
/**
|
|
377
|
+
* The role its setter acted in (webrtc.v1.ConfigureRoomClimate): ROLE_PROPERTY_OWNER where
|
|
378
|
+
* they hold it, else ROLE_GATEWAY_ADMIN, else ROLE_TECHNICIAN. In a home, a bound an
|
|
379
|
+
* installer set under a commissioning grant has it unset to anyone but the home's residents:
|
|
380
|
+
* staff are shown its value and set_at alone, so the stamp tells them nothing of when the
|
|
381
|
+
* household let an installer in. An app shows an unset role as not stated.
|
|
382
|
+
*
|
|
383
|
+
* @generated from field: kusinta.iot.access.v1.Role set_by_role = 2;
|
|
384
|
+
*/
|
|
385
|
+
setByRole: Role;
|
|
386
|
+
|
|
387
|
+
/**
|
|
388
|
+
* When the bound was last given a new value. Always sent, also when it dates from before the
|
|
389
|
+
* recipient's residency: it records an act of the building's, and nothing of a household.
|
|
390
|
+
*
|
|
391
|
+
* @generated from field: google.protobuf.Timestamp set_at = 3;
|
|
392
|
+
*/
|
|
393
|
+
setAt?: Timestamp | undefined;
|
|
394
|
+
};
|
|
395
|
+
|
|
396
|
+
/**
|
|
397
|
+
* Describes the message kusinta.iot.climate.v1.OuterLimit.
|
|
398
|
+
* Use `create(OuterLimitSchema)` to create a new message.
|
|
399
|
+
*/
|
|
400
|
+
export declare const OuterLimitSchema: GenMessage<OuterLimit>;
|
|
401
|
+
|
|
402
|
+
/**
|
|
403
|
+
* A room's outer limits: the building's bounds on the heating it owns, set by the parties
|
|
404
|
+
* webrtc.v1.ConfigureRoomClimate names. Every bound is optional: a building where each home
|
|
405
|
+
* pays its own heating may set floors only.
|
|
406
|
+
*
|
|
407
|
+
* WHAT THEY BIND. The asset owner decides whether they can bind a device, and the
|
|
408
|
+
* organisation whether to use them. They bind an output only on one of the building's own
|
|
409
|
+
* devices (common.v1.DeviceOwnershipType COMPANY) whose asset owner is the organisation, or
|
|
410
|
+
* that has none recorded (common.v1.AssetOwner); never a household's asset, nor a device a
|
|
411
|
+
* person owns outright. The clamp is applied per output, by its device's owner: in a room with
|
|
412
|
+
* a valve the organisation owns and a heater a resident owns, the valve is held within the
|
|
413
|
+
* outer limits and the heater at the room's target. So they bind outputs, never the room: the
|
|
414
|
+
* room's target and its inner limits are the household's, are not rewritten when an outer bound
|
|
415
|
+
* moves, and hold again at those outputs once it moves back out.
|
|
416
|
+
*
|
|
417
|
+
* HELD. What an output is held at is worked out in this order, each step clamping the one
|
|
418
|
+
* before:
|
|
419
|
+
* 1. the room's target, or while a mode (ClimateMode) sets the room back its setback;
|
|
420
|
+
* 2. the inner limits (InnerRoomLimits): the maximum always, the minimum — the household's
|
|
421
|
+
* everyday floor — only while no mode sets the room back;
|
|
422
|
+
* 3. at an output the outer limits bind: [min, max] while no mode sets the room back, and
|
|
423
|
+
* [AWAY FLOOR, max] while one does; during the vacancy setback (webrtc.v1 household.proto,
|
|
424
|
+
* VACANCY), the AWAY FLOOR itself;
|
|
425
|
+
* 4. an installer's equipment-safety limits — a floor's surface maximum, a supply cap
|
|
426
|
+
* (commissioning.v1) — which neither tier of comfort limits widens.
|
|
427
|
+
* So where an inner bound and an outer bound disagree the outer one wins, and the household's
|
|
428
|
+
* range at those outputs is always inside the building's; outputs the outer limits do not bind
|
|
429
|
+
* stop at step 2. The AWAY FLOOR is away_min, or min where away_min is unset: kept apart from
|
|
430
|
+
* min so that a household going away may set back below its everyday floor but never below what
|
|
431
|
+
* the building needs — frost, damp, heat drawn from neighbours. With neither set, a room has no
|
|
432
|
+
* away floor, and no vacancy setback.
|
|
433
|
+
*
|
|
434
|
+
* DEVICE LIMITS. Where the gateway writes a room's outer limits into a device's own setpoint
|
|
435
|
+
* limits (Matter Min/MaxHeatSetpointLimit), so that a knob stops at them, it writes them only
|
|
436
|
+
* to devices they bind (WHAT THEY BIND), and writes the AWAY FLOOR as the minimum and max as
|
|
437
|
+
* the maximum, each only where set: a device holding min as its own minimum would refuse the
|
|
438
|
+
* setbacks of step 3. Outside a setback the gateway holds min itself: a change made by hand at
|
|
439
|
+
* such a device below min is adopted as the room's target as it was made, within the inner
|
|
440
|
+
* limits and never clamped by the outer ones, while the device's output is held at min and min
|
|
441
|
+
* is written back to it. Into a device the outer limits do not bind that holds room limits
|
|
442
|
+
* written before, it writes the device's defaults back, queued and retried as the wipe's device
|
|
443
|
+
* writes are (webrtc.v1 household.proto, WIPE).
|
|
444
|
+
*
|
|
445
|
+
* They stay with the home: a household handover wipes the inner limits, never these
|
|
446
|
+
* (webrtc.v1 household.proto, WIPE).
|
|
447
|
+
*
|
|
448
|
+
* @generated from message kusinta.iot.climate.v1.OuterRoomLimits
|
|
449
|
+
*/
|
|
450
|
+
export declare type OuterRoomLimits = Message<"kusinta.iot.climate.v1.OuterRoomLimits"> & {
|
|
451
|
+
/**
|
|
452
|
+
* The normal minimum and maximum.
|
|
453
|
+
*
|
|
454
|
+
* @generated from field: kusinta.iot.climate.v1.OuterLimit min = 1;
|
|
455
|
+
*/
|
|
456
|
+
min?: OuterLimit | undefined;
|
|
457
|
+
|
|
458
|
+
/**
|
|
459
|
+
* @generated from field: kusinta.iot.climate.v1.OuterLimit max = 2;
|
|
460
|
+
*/
|
|
461
|
+
max?: OuterLimit | undefined;
|
|
462
|
+
|
|
463
|
+
/**
|
|
464
|
+
* The floor under a setback; see AWAY FLOOR above.
|
|
465
|
+
*
|
|
466
|
+
* @generated from field: kusinta.iot.climate.v1.OuterLimit away_min = 3;
|
|
467
|
+
*/
|
|
468
|
+
awayMin?: OuterLimit | undefined;
|
|
469
|
+
|
|
470
|
+
/**
|
|
471
|
+
* The target the room starts at when an empty home gains a resident (webrtc.v1
|
|
472
|
+
* household.proto, MOVE-IN). A start, never a limit, and a target like any other. Always
|
|
473
|
+
* within [min, max] where those are set (webrtc.v1.ConfigureRoomClimate, "limits_order").
|
|
474
|
+
*
|
|
475
|
+
* @generated from field: kusinta.iot.climate.v1.OuterLimit move_in_target = 4;
|
|
476
|
+
*/
|
|
477
|
+
moveInTarget?: OuterLimit | undefined;
|
|
478
|
+
|
|
479
|
+
/**
|
|
480
|
+
* Set while min was set below the gateway's public-health threshold: the threshold in force
|
|
481
|
+
* then, which min's setter explicitly accepted going below (ConfigureRoomClimate
|
|
482
|
+
* .accept_below_threshold). The acceptance is recorded with min's set_by_role and set_at.
|
|
483
|
+
* Unset while min is unset or was set at or above the threshold. A threshold changed later
|
|
484
|
+
* re-judges nothing already set.
|
|
485
|
+
*
|
|
486
|
+
* @generated from field: optional sint32 min_accepted_threshold_centidegrees = 5;
|
|
487
|
+
*/
|
|
488
|
+
minAcceptedThresholdCentidegrees?: number | undefined;
|
|
489
|
+
};
|
|
490
|
+
|
|
491
|
+
/**
|
|
492
|
+
* Describes the message kusinta.iot.climate.v1.OuterRoomLimits.
|
|
493
|
+
* Use `create(OuterRoomLimitsSchema)` to create a new message.
|
|
494
|
+
*/
|
|
495
|
+
export declare const OuterRoomLimitsSchema: GenMessage<OuterRoomLimits>;
|
|
496
|
+
|
|
497
|
+
/**
|
|
498
|
+
* A room's inner limits: the household's own minimum and maximum, set by the home's household
|
|
499
|
+
* admins (webrtc.v1.SetInnerRoomLimits). They clamp the room's target, from the app or a knob
|
|
500
|
+
* alike, and setting them clamps the target already set. They apply to every output in the
|
|
501
|
+
* room, a household's own devices included, as OuterRoomLimits (HELD) orders them. Household
|
|
502
|
+
* data: never told to anyone but the home's residents, and wiped at a handover (webrtc.v1
|
|
503
|
+
* household.proto, WIPE). They belong to the room while it is in the home: cleared when it
|
|
504
|
+
* leaves the home, or the space stops being an apartment, so an empty home's rooms hold none
|
|
505
|
+
* and a move-in target meets none.
|
|
506
|
+
*
|
|
507
|
+
* @generated from message kusinta.iot.climate.v1.InnerRoomLimits
|
|
508
|
+
*/
|
|
509
|
+
export declare type InnerRoomLimits = Message<"kusinta.iot.climate.v1.InnerRoomLimits"> & {
|
|
510
|
+
/**
|
|
511
|
+
* @generated from field: optional sint32 min_centidegrees = 1;
|
|
512
|
+
*/
|
|
513
|
+
minCentidegrees?: number | undefined;
|
|
514
|
+
|
|
515
|
+
/**
|
|
516
|
+
* @generated from field: optional sint32 max_centidegrees = 2;
|
|
517
|
+
*/
|
|
518
|
+
maxCentidegrees?: number | undefined;
|
|
519
|
+
};
|
|
520
|
+
|
|
521
|
+
/**
|
|
522
|
+
* Describes the message kusinta.iot.climate.v1.InnerRoomLimits.
|
|
523
|
+
* Use `create(InnerRoomLimitsSchema)` to create a new message.
|
|
524
|
+
*/
|
|
525
|
+
export declare const InnerRoomLimitsSchema: GenMessage<InnerRoomLimits>;
|
|
526
|
+
|
|
527
|
+
/**
|
|
528
|
+
* An outer bound clamping a room (RoomClimate.outer_limit_clamp).
|
|
529
|
+
*
|
|
530
|
+
* @generated from message kusinta.iot.climate.v1.OuterLimitClamp
|
|
531
|
+
*/
|
|
532
|
+
export declare type OuterLimitClamp = Message<"kusinta.iot.climate.v1.OuterLimitClamp"> & {
|
|
533
|
+
/**
|
|
534
|
+
* Which bound. An app that does not know the value shows that the building's limits clamp the
|
|
535
|
+
* room, without naming one.
|
|
536
|
+
*
|
|
537
|
+
* @generated from field: kusinta.iot.climate.v1.OuterLimitKind limit = 1;
|
|
538
|
+
*/
|
|
539
|
+
limit: OuterLimitKind;
|
|
540
|
+
|
|
541
|
+
/**
|
|
542
|
+
* Where the room would be held without it, in centidegrees: where outputs the outer limits do
|
|
543
|
+
* not bind are held. effective_target_centidegrees is where those they bind are.
|
|
544
|
+
*
|
|
545
|
+
* @generated from field: optional sint32 unclamped_centidegrees = 2;
|
|
546
|
+
*/
|
|
547
|
+
unclampedCentidegrees?: number | undefined;
|
|
548
|
+
};
|
|
549
|
+
|
|
550
|
+
/**
|
|
551
|
+
* Describes the message kusinta.iot.climate.v1.OuterLimitClamp.
|
|
552
|
+
* Use `create(OuterLimitClampSchema)` to create a new message.
|
|
553
|
+
*/
|
|
554
|
+
export declare const OuterLimitClampSchema: GenMessage<OuterLimitClamp>;
|
|
555
|
+
|
|
556
|
+
/**
|
|
557
|
+
* One reason a room, or a part of its heating, is where it is.
|
|
558
|
+
*
|
|
559
|
+
* @generated from message kusinta.iot.climate.v1.ClimateExplanation
|
|
560
|
+
*/
|
|
561
|
+
export declare type ClimateExplanation = Message<"kusinta.iot.climate.v1.ClimateExplanation"> & {
|
|
562
|
+
/**
|
|
563
|
+
* @generated from field: kusinta.iot.climate.v1.ClimateExplanationKind kind = 1;
|
|
564
|
+
*/
|
|
565
|
+
kind: ClimateExplanationKind;
|
|
566
|
+
|
|
567
|
+
/**
|
|
568
|
+
* What the cause acts on. The gateway always sets it. An app shows nothing for an
|
|
569
|
+
* explanation whose subject is unspecified or unknown to it, rather than presenting it
|
|
570
|
+
* as the room's.
|
|
571
|
+
*
|
|
572
|
+
* @generated from field: kusinta.iot.climate.v1.ClimateExplanationSubject subject = 2;
|
|
573
|
+
*/
|
|
574
|
+
subject: ClimateExplanationSubject;
|
|
575
|
+
|
|
576
|
+
/**
|
|
577
|
+
* When the explanation stops holding. Unset: while the room's latest RoomClimate carries
|
|
578
|
+
* it. An app MUST NOT show an explanation past its ends_at, also while it cannot reach
|
|
579
|
+
* the gateway, and while it cannot reach the gateway it shows none without an ends_at:
|
|
580
|
+
* an explanation that outlives its window is a claim about the room nobody is making any
|
|
581
|
+
* more. An explanation that holds because of a leased write ends no later than that
|
|
582
|
+
* lease, after which the output is back at its lapse value whatever the gateway does.
|
|
583
|
+
*
|
|
584
|
+
* @generated from field: google.protobuf.Timestamp ends_at = 3;
|
|
585
|
+
*/
|
|
586
|
+
endsAt?: Timestamp | undefined;
|
|
587
|
+
};
|
|
588
|
+
|
|
589
|
+
/**
|
|
590
|
+
* Describes the message kusinta.iot.climate.v1.ClimateExplanation.
|
|
591
|
+
* Use `create(ClimateExplanationSchema)` to create a new message.
|
|
592
|
+
*/
|
|
593
|
+
export declare const ClimateExplanationSchema: GenMessage<ClimateExplanation>;
|
|
594
|
+
|
|
595
|
+
/**
|
|
596
|
+
* A mode on a home ends when whoever switched it on stops being one of its residents: a new
|
|
597
|
+
* tenant does not inherit the previous one's holiday. A mode on a room ends when the room
|
|
598
|
+
* joins a home, whose rooms follow the apartment's mode alone. Any other mode — one switched on by
|
|
599
|
+
* someone who is not one of its residents now: who never lived there, or a member still
|
|
600
|
+
* recorded with no relation — ends when the
|
|
601
|
+
* home gains a resident: when anyone other than its setter, not already its resident, is
|
|
602
|
+
* assigned RESIDENT on the apartment, a member recorded with no relation included, or the
|
|
603
|
+
* space becomes an apartment with RESIDENT members on it other than its setter. A mode's
|
|
604
|
+
* setter recorded with no relation being assigned RESIDENT ends none of their own modes;
|
|
605
|
+
* being assigned SERVICE or removed ends them.
|
|
606
|
+
*
|
|
607
|
+
* A mode set on an apartment — or, for rooms that are not in one, on their floor or
|
|
608
|
+
* common area. While it is on it sets back every room below that space, except that a
|
|
609
|
+
* room inside an apartment follows only its apartment's mode: a mode on a floor does not
|
|
610
|
+
* reach into the flats on it. Where more than one mode could apply, the nearest enclosing
|
|
611
|
+
* space's wins. A room somebody changes during the mode keeps its own target
|
|
612
|
+
* (RoomClimate.overrides_mode) until the mode ends.
|
|
613
|
+
*
|
|
614
|
+
* @generated from message kusinta.iot.climate.v1.ClimateMode
|
|
615
|
+
*/
|
|
616
|
+
export declare type ClimateMode = Message<"kusinta.iot.climate.v1.ClimateMode"> & {
|
|
617
|
+
/**
|
|
618
|
+
* @generated from field: kusinta.iot.identity.v1.SpaceId space_id = 1;
|
|
619
|
+
*/
|
|
620
|
+
spaceId?: SpaceId | undefined;
|
|
621
|
+
|
|
622
|
+
/**
|
|
623
|
+
* @generated from field: kusinta.iot.climate.v1.ClimateModeKind kind = 2;
|
|
624
|
+
*/
|
|
625
|
+
kind: ClimateModeKind;
|
|
626
|
+
|
|
627
|
+
/**
|
|
628
|
+
* The temperature every room is set back to, in centidegrees. Required while a mode is
|
|
629
|
+
* on — a mode with nothing to set back to is refused, not defaulted. Clamped in each room as
|
|
630
|
+
* OuterRoomLimits (HELD) orders, the away floor being what the building needs.
|
|
631
|
+
*
|
|
632
|
+
* @generated from field: optional sint32 setback_centidegrees = 3;
|
|
633
|
+
*/
|
|
634
|
+
setbackCentidegrees?: number | undefined;
|
|
635
|
+
|
|
636
|
+
/**
|
|
637
|
+
* HOLIDAY: when the setback begins and when the rooms are to be back at their own
|
|
638
|
+
* targets — warm by then, not starting to heat (see warm_from). AWAY: starts_at is when it
|
|
639
|
+
* was switched on; ends_at is unset. starts_at is unset when it dates from before the
|
|
640
|
+
* recipient's current residency in the home, or from a home they did not live in at the
|
|
641
|
+
* time, save to the property owner and the gateway administrators for a mode on a home while
|
|
642
|
+
* it is empty (webrtc.v1 household.proto, EMPTY HOME); an ends_at ahead is always sent.
|
|
643
|
+
*
|
|
644
|
+
* @generated from field: google.protobuf.Timestamp starts_at = 4;
|
|
645
|
+
*/
|
|
646
|
+
startsAt?: Timestamp | undefined;
|
|
647
|
+
|
|
648
|
+
/**
|
|
649
|
+
* @generated from field: google.protobuf.Timestamp ends_at = 5;
|
|
650
|
+
*/
|
|
651
|
+
endsAt?: Timestamp | undefined;
|
|
652
|
+
|
|
653
|
+
/**
|
|
654
|
+
* Who switched it on. Unset when it is withheld from the recipient: from service in a
|
|
655
|
+
* home, and from anyone when it dates from before their current residency in the home, or
|
|
656
|
+
* from a home they did not live in at the time (see access.v1.MembershipRelation). The
|
|
657
|
+
* property owner and the gateway administrators are given it for a mode on a home while it is
|
|
658
|
+
* empty, which only they can have switched on (webrtc.v1 household.proto, EMPTY HOME).
|
|
659
|
+
*
|
|
660
|
+
* @generated from field: kusinta.iot.identity.v1.UserId set_by = 6;
|
|
661
|
+
*/
|
|
662
|
+
setBy?: UserId | undefined;
|
|
663
|
+
|
|
664
|
+
/**
|
|
665
|
+
* Read-only: filled by the gateway, ignored if sent to it. The moment the setback ends
|
|
666
|
+
* ahead of ends_at, so that the rooms are warm by ends_at. Absent when there is no
|
|
667
|
+
* lead — an AWAY mode, or one the gateway has not computed.
|
|
668
|
+
*
|
|
669
|
+
* @generated from field: optional google.protobuf.Timestamp warm_from = 7;
|
|
670
|
+
*/
|
|
671
|
+
warmFrom?: Timestamp | undefined;
|
|
672
|
+
};
|
|
673
|
+
|
|
674
|
+
/**
|
|
675
|
+
* Describes the message kusinta.iot.climate.v1.ClimateMode.
|
|
676
|
+
* Use `create(ClimateModeSchema)` to create a new message.
|
|
677
|
+
*/
|
|
678
|
+
export declare const ClimateModeSchema: GenMessage<ClimateMode>;
|
|
679
|
+
|
|
680
|
+
/**
|
|
681
|
+
* Every room climate and mode a caller may see, in reply to a listing.
|
|
682
|
+
*
|
|
683
|
+
* @generated from message kusinta.iot.climate.v1.RoomClimateList
|
|
684
|
+
*/
|
|
685
|
+
export declare type RoomClimateList = Message<"kusinta.iot.climate.v1.RoomClimateList"> & {
|
|
686
|
+
/**
|
|
687
|
+
* @generated from field: repeated kusinta.iot.climate.v1.RoomClimate rooms = 1;
|
|
688
|
+
*/
|
|
689
|
+
rooms: RoomClimate[];
|
|
690
|
+
|
|
691
|
+
/**
|
|
692
|
+
* @generated from field: repeated kusinta.iot.climate.v1.ClimateMode modes = 2;
|
|
693
|
+
*/
|
|
694
|
+
modes: ClimateMode[];
|
|
695
|
+
};
|
|
696
|
+
|
|
697
|
+
/**
|
|
698
|
+
* Describes the message kusinta.iot.climate.v1.RoomClimateList.
|
|
699
|
+
* Use `create(RoomClimateListSchema)` to create a new message.
|
|
700
|
+
*/
|
|
701
|
+
export declare const RoomClimateListSchema: GenMessage<RoomClimateList>;
|
|
702
|
+
|
|
703
|
+
/**
|
|
704
|
+
* One bucket of a room's history, of the length RoomHistory.resolution names. Every reading
|
|
705
|
+
* is optional: absent means nothing was known for that bucket, never zero.
|
|
706
|
+
*
|
|
707
|
+
* An hour is made of its quarter hours, each reading as stated beside it. A reading none of
|
|
708
|
+
* the hour's quarter hours knew is absent in the hour too; a mean is taken over the quarter
|
|
709
|
+
* hours that knew one, and a sum likewise, so an hour partly unknown sums only what was known.
|
|
710
|
+
*
|
|
711
|
+
* @generated from message kusinta.iot.climate.v1.RoomHistorySample
|
|
712
|
+
*/
|
|
713
|
+
export declare type RoomHistorySample = Message<"kusinta.iot.climate.v1.RoomHistorySample"> & {
|
|
714
|
+
/**
|
|
715
|
+
* The start of the bucket.
|
|
716
|
+
*
|
|
717
|
+
* @generated from field: google.protobuf.Timestamp at = 1;
|
|
718
|
+
*/
|
|
719
|
+
at?: Timestamp | undefined;
|
|
720
|
+
|
|
721
|
+
/**
|
|
722
|
+
* The mean of the room's measured temperature over the bucket, in centidegrees. An hour:
|
|
723
|
+
* the mean of its quarter hours' means.
|
|
724
|
+
*
|
|
725
|
+
* @generated from field: optional sint32 measured_centidegrees = 2;
|
|
726
|
+
*/
|
|
727
|
+
measuredCentidegrees?: number | undefined;
|
|
728
|
+
|
|
729
|
+
/**
|
|
730
|
+
* RoomClimate.target_centidegrees and .effective_target_centidegrees as they were in
|
|
731
|
+
* force at the bucket's start, in centidegrees. An hour: its first quarter hour's, and so
|
|
732
|
+
* absent when that quarter hour did not know them, whatever the later ones knew.
|
|
733
|
+
*
|
|
734
|
+
* @generated from field: optional sint32 target_centidegrees = 3;
|
|
735
|
+
*/
|
|
736
|
+
targetCentidegrees?: number | undefined;
|
|
737
|
+
|
|
738
|
+
/**
|
|
739
|
+
* @generated from field: optional sint32 effective_target_centidegrees = 4;
|
|
740
|
+
*/
|
|
741
|
+
effectiveTargetCentidegrees?: number | undefined;
|
|
742
|
+
|
|
743
|
+
/**
|
|
744
|
+
* The mean opening over the bucket across the room's valves that report one, in
|
|
745
|
+
* thousandths of fully open. Absent if none of them does. An hour: the mean of its quarter
|
|
746
|
+
* hours' means.
|
|
747
|
+
*
|
|
748
|
+
* @generated from field: optional uint32 valve_open_permille = 5;
|
|
749
|
+
*/
|
|
750
|
+
valveOpenPermille?: number | undefined;
|
|
751
|
+
|
|
752
|
+
/**
|
|
753
|
+
* The seconds within the bucket during which any of the room's valves was open. An hour:
|
|
754
|
+
* the sum of its quarter hours', so up to 3600.
|
|
755
|
+
*
|
|
756
|
+
* @generated from field: optional uint32 valve_open_seconds = 6;
|
|
757
|
+
*/
|
|
758
|
+
valveOpenSeconds?: number | undefined;
|
|
759
|
+
|
|
760
|
+
/**
|
|
761
|
+
* The seconds within the bucket during which any floor zone heating the room was heating
|
|
762
|
+
* (heating.v1.FloorZone), counted from the contact state the zone's output reports, read
|
|
763
|
+
* through its closed_value, not from what was commanded. Kept apart from the valve
|
|
764
|
+
* fields: a zone's duty and a valve's opening are different controls with different time
|
|
765
|
+
* scales. Absent where no floor zone heats the room. An hour: the sum of its quarter
|
|
766
|
+
* hours', as valve_open_seconds.
|
|
767
|
+
*
|
|
768
|
+
* @generated from field: optional uint32 floor_heating_seconds = 7;
|
|
769
|
+
*/
|
|
770
|
+
floorHeatingSeconds?: number | undefined;
|
|
771
|
+
};
|
|
772
|
+
|
|
773
|
+
/**
|
|
774
|
+
* Describes the message kusinta.iot.climate.v1.RoomHistorySample.
|
|
775
|
+
* Use `create(RoomHistorySampleSchema)` to create a new message.
|
|
776
|
+
*/
|
|
777
|
+
export declare const RoomHistorySampleSchema: GenMessage<RoomHistorySample>;
|
|
778
|
+
|
|
779
|
+
/**
|
|
780
|
+
* A room's history at one resolution, in reply to GetRoomHistory.
|
|
781
|
+
*
|
|
782
|
+
* A bucket is given only once the gateway has made it, never before it ends, and only where
|
|
783
|
+
* all of it lies within what the recipient may read. The covered range is over bucket starts,
|
|
784
|
+
* as the request's range is: a bucket is within it when covered_from <= at < covered_to. A
|
|
785
|
+
* bucket within it that is not among the samples is one for which nothing is known; of any
|
|
786
|
+
* other bucket this answer says nothing, and an app MUST NOT show it as empty on its account.
|
|
787
|
+
*
|
|
788
|
+
* @generated from message kusinta.iot.climate.v1.RoomHistory
|
|
789
|
+
*/
|
|
790
|
+
export declare type RoomHistory = Message<"kusinta.iot.climate.v1.RoomHistory"> & {
|
|
791
|
+
/**
|
|
792
|
+
* @generated from field: kusinta.iot.identity.v1.SpaceId room_id = 1;
|
|
793
|
+
*/
|
|
794
|
+
roomId?: SpaceId | undefined;
|
|
795
|
+
|
|
796
|
+
/**
|
|
797
|
+
* The start of the earliest bucket the gateway still holds for this room at this resolution
|
|
798
|
+
* that the recipient may read. The request's from_time and to_time are clamped to
|
|
799
|
+
* [kept_from, now], so nothing before kept_from is ever returned. For a room in the
|
|
800
|
+
* recipient's own home it is no earlier than the start of their current residency, nor than
|
|
801
|
+
* when the room last joined their home; for any other room, no earlier than when it last
|
|
802
|
+
* left a home. How far back the room's history reaches for the recipient, whether or not
|
|
803
|
+
* this answer reaches that far. Always set: where nothing is held for the recipient at this
|
|
804
|
+
* resolution, it is no earlier than covered_to.
|
|
805
|
+
*
|
|
806
|
+
* @generated from field: google.protobuf.Timestamp kept_from = 2;
|
|
807
|
+
*/
|
|
808
|
+
keptFrom?: Timestamp | undefined;
|
|
809
|
+
|
|
810
|
+
/**
|
|
811
|
+
* The buckets within [covered_from, covered_to), in order of `at`.
|
|
812
|
+
*
|
|
813
|
+
* @generated from field: repeated kusinta.iot.climate.v1.RoomHistorySample samples = 3;
|
|
814
|
+
*/
|
|
815
|
+
samples: RoomHistorySample[];
|
|
816
|
+
|
|
817
|
+
/**
|
|
818
|
+
* The length of the samples' buckets. An app labels and plots them by this, never by the
|
|
819
|
+
* resolution it asked for.
|
|
820
|
+
*
|
|
821
|
+
* @generated from field: kusinta.iot.climate.v1.RoomHistoryResolution resolution = 4;
|
|
822
|
+
*/
|
|
823
|
+
resolution: RoomHistoryResolution;
|
|
824
|
+
|
|
825
|
+
/**
|
|
826
|
+
* The range this answer covers, [covered_from, covered_to). Both unset only in an answer
|
|
827
|
+
* from a gateway that predates them, which caps nothing: it covers the range asked, clamped.
|
|
828
|
+
*
|
|
829
|
+
* covered_to is the request's to_time as clamped, but never later than the start of the
|
|
830
|
+
* oldest bucket at this resolution the gateway has still to make — for an hour, possibly
|
|
831
|
+
* days after it ends — so no bucket within the range is made later. The time after it may be
|
|
832
|
+
* held at a finer resolution, and an app asks for it there.
|
|
833
|
+
*
|
|
834
|
+
* covered_from is the request's from_time as clamped, unless more than 768 samples fall
|
|
835
|
+
* between it and covered_to: then the answer is capped, keeping the newest 768, and
|
|
836
|
+
* covered_from is samples[0].at. Either way it is never later than covered_to, and an answer
|
|
837
|
+
* that covers nothing has the two equal.
|
|
838
|
+
*
|
|
839
|
+
* An answer is capped exactly when covered_from is later than kept_from and than the
|
|
840
|
+
* from_time asked for, if one was. The app asks for the next page with the same from_time,
|
|
841
|
+
* this answer's resolution, and to_time = covered_from, until an answer is not capped.
|
|
842
|
+
*
|
|
843
|
+
* @generated from field: google.protobuf.Timestamp covered_from = 5;
|
|
844
|
+
*/
|
|
845
|
+
coveredFrom?: Timestamp | undefined;
|
|
846
|
+
|
|
847
|
+
/**
|
|
848
|
+
* @generated from field: google.protobuf.Timestamp covered_to = 6;
|
|
849
|
+
*/
|
|
850
|
+
coveredTo?: Timestamp | undefined;
|
|
851
|
+
};
|
|
852
|
+
|
|
853
|
+
/**
|
|
854
|
+
* Describes the message kusinta.iot.climate.v1.RoomHistory.
|
|
855
|
+
* Use `create(RoomHistorySchema)` to create a new message.
|
|
856
|
+
*/
|
|
857
|
+
export declare const RoomHistorySchema: GenMessage<RoomHistory>;
|
|
858
|
+
|
|
859
|
+
/**
|
|
860
|
+
* One bucket of a heat source's history (PlantHistory), of the length PlantHistory.resolution
|
|
861
|
+
* names, from its plant's readings (device.v1.HeatSourceReadings, read from
|
|
862
|
+
* heating.v1.HeatingPlant.readings_device_id while that device is bound to it). Every reading
|
|
863
|
+
* is optional: absent means nothing fresh was known for that bucket, never zero.
|
|
864
|
+
*
|
|
865
|
+
* A mean or a share is weighted by time: each reading counts for as long as it held within the
|
|
866
|
+
* bucket, from its report until the next, carried forward no longer than a reading stays fresh
|
|
867
|
+
* (45 minutes after the time it was known current, device.v1.PropertyUpdate.timestamp); a
|
|
868
|
+
* bucket whose only reading has gone stale knows nothing of it. An hour is made of its quarter
|
|
869
|
+
* hours as RoomHistorySample's are: a mean of the quarter hours' means, a sum of their sums, and
|
|
870
|
+
* for a last value the last one known among its quarter hours.
|
|
871
|
+
*
|
|
872
|
+
* @generated from message kusinta.iot.climate.v1.PlantHistorySample
|
|
873
|
+
*/
|
|
874
|
+
export declare type PlantHistorySample = Message<"kusinta.iot.climate.v1.PlantHistorySample"> & {
|
|
875
|
+
/**
|
|
876
|
+
* The start of the bucket.
|
|
877
|
+
*
|
|
878
|
+
* @generated from field: google.protobuf.Timestamp at = 1;
|
|
879
|
+
*/
|
|
880
|
+
at?: Timestamp | undefined;
|
|
881
|
+
|
|
882
|
+
/**
|
|
883
|
+
* Means over the bucket, in centidegrees, of the readings of the same names.
|
|
884
|
+
*
|
|
885
|
+
* @generated from field: optional sint32 outdoor_centidegrees = 2;
|
|
886
|
+
*/
|
|
887
|
+
outdoorCentidegrees?: number | undefined;
|
|
888
|
+
|
|
889
|
+
/**
|
|
890
|
+
* @generated from field: optional sint32 supply_centidegrees = 3;
|
|
891
|
+
*/
|
|
892
|
+
supplyCentidegrees?: number | undefined;
|
|
893
|
+
|
|
894
|
+
/**
|
|
895
|
+
* @generated from field: optional sint32 return_centidegrees = 4;
|
|
896
|
+
*/
|
|
897
|
+
returnCentidegrees?: number | undefined;
|
|
898
|
+
|
|
899
|
+
/**
|
|
900
|
+
* @generated from field: optional sint32 calculated_supply_centidegrees = 5;
|
|
901
|
+
*/
|
|
902
|
+
calculatedSupplyCentidegrees?: number | undefined;
|
|
903
|
+
|
|
904
|
+
/**
|
|
905
|
+
* @generated from field: optional sint32 hot_water_top_centidegrees = 6;
|
|
906
|
+
*/
|
|
907
|
+
hotWaterTopCentidegrees?: number | undefined;
|
|
908
|
+
|
|
909
|
+
/**
|
|
910
|
+
* The lowest and highest outdoor reading held within the bucket, in centidegrees. An hour:
|
|
911
|
+
* the lowest and highest of its quarter hours'.
|
|
912
|
+
*
|
|
913
|
+
* @generated from field: optional sint32 outdoor_min_centidegrees = 7;
|
|
914
|
+
*/
|
|
915
|
+
outdoorMinCentidegrees?: number | undefined;
|
|
916
|
+
|
|
917
|
+
/**
|
|
918
|
+
* @generated from field: optional sint32 outdoor_max_centidegrees = 8;
|
|
919
|
+
*/
|
|
920
|
+
outdoorMaxCentidegrees?: number | undefined;
|
|
921
|
+
|
|
922
|
+
/**
|
|
923
|
+
* The last degree-minutes reading held in the bucket.
|
|
924
|
+
*
|
|
925
|
+
* @generated from field: optional sint32 degree_minutes = 9;
|
|
926
|
+
*/
|
|
927
|
+
degreeMinutes?: number | undefined;
|
|
928
|
+
|
|
929
|
+
/**
|
|
930
|
+
* The mean power of the internal add-on heat over the bucket, in watts.
|
|
931
|
+
*
|
|
932
|
+
* @generated from field: optional uint32 add_on_heat_watts = 10;
|
|
933
|
+
*/
|
|
934
|
+
addOnHeatWatts?: number | undefined;
|
|
935
|
+
|
|
936
|
+
/**
|
|
937
|
+
* Shares of the bucket, in thousandths, during which the heat source reported producing
|
|
938
|
+
* space heating, producing hot water, producing nothing (device.v1.HeatSourceProduction), its
|
|
939
|
+
* compressor running, and its compressor blocked (device.v1.CompressorState). Each over the
|
|
940
|
+
* part of the bucket the reading was known for; absent where it was never known.
|
|
941
|
+
*
|
|
942
|
+
* @generated from field: optional uint32 space_heating_permille = 11;
|
|
943
|
+
*/
|
|
944
|
+
spaceHeatingPermille?: number | undefined;
|
|
945
|
+
|
|
946
|
+
/**
|
|
947
|
+
* @generated from field: optional uint32 hot_water_permille = 12;
|
|
948
|
+
*/
|
|
949
|
+
hotWaterPermille?: number | undefined;
|
|
950
|
+
|
|
951
|
+
/**
|
|
952
|
+
* @generated from field: optional uint32 producing_nothing_permille = 13;
|
|
953
|
+
*/
|
|
954
|
+
producingNothingPermille?: number | undefined;
|
|
955
|
+
|
|
956
|
+
/**
|
|
957
|
+
* @generated from field: optional uint32 compressor_running_permille = 14;
|
|
958
|
+
*/
|
|
959
|
+
compressorRunningPermille?: number | undefined;
|
|
960
|
+
|
|
961
|
+
/**
|
|
962
|
+
* @generated from field: optional uint32 compressor_blocked_permille = 15;
|
|
963
|
+
*/
|
|
964
|
+
compressorBlockedPermille?: number | undefined;
|
|
965
|
+
|
|
966
|
+
/**
|
|
967
|
+
* How many times an alarm began (alarm_active turning true) within the bucket.
|
|
968
|
+
*
|
|
969
|
+
* @generated from field: optional uint32 alarms_begun = 16;
|
|
970
|
+
*/
|
|
971
|
+
alarmsBegun?: number | undefined;
|
|
972
|
+
|
|
973
|
+
/**
|
|
974
|
+
* The energy counter of the plant's meter (heating.v1.HeatingPlant.meter) as last read in the
|
|
975
|
+
* bucket, imported, in milliwatt-hours: with the heat delivered, what a coefficient of
|
|
976
|
+
* performance is worked out from. Absent where the plant binds no meter, or where the meter was
|
|
977
|
+
* not read in the bucket.
|
|
978
|
+
*
|
|
979
|
+
* @generated from field: optional uint64 meter_imported_mwh = 17;
|
|
980
|
+
*/
|
|
981
|
+
meterImportedMwh?: bigint | undefined;
|
|
982
|
+
|
|
983
|
+
/**
|
|
984
|
+
* The vendor's code (device.v1.HeatSourceReadings.alarm_code) last reported in the bucket
|
|
985
|
+
* while an alarm was active: a code reported a little after its alarm began is kept with the
|
|
986
|
+
* bucket it arrived in. Absent where no code was reported in the bucket while an alarm was
|
|
987
|
+
* active, or where the heat source reports none. Read only as the bucket is: never given to service, who are told of an alarm as a
|
|
988
|
+
* fault alone (device.v1.HeatSourceReadings).
|
|
989
|
+
*
|
|
990
|
+
* @generated from field: optional uint32 last_alarm_code = 18;
|
|
991
|
+
*/
|
|
992
|
+
lastAlarmCode?: number | undefined;
|
|
993
|
+
};
|
|
994
|
+
|
|
995
|
+
/**
|
|
996
|
+
* Describes the message kusinta.iot.climate.v1.PlantHistorySample.
|
|
997
|
+
* Use `create(PlantHistorySampleSchema)` to create a new message.
|
|
998
|
+
*/
|
|
999
|
+
export declare const PlantHistorySampleSchema: GenMessage<PlantHistorySample>;
|
|
1000
|
+
|
|
1001
|
+
/**
|
|
1002
|
+
* A heat source's history at one resolution, in reply to webrtc.v1.GetPlantHistory, read as
|
|
1003
|
+
* RoomHistory is: the same half-open range, kept_from, covered_from and covered_to, the same
|
|
1004
|
+
* cap and paging.
|
|
1005
|
+
*
|
|
1006
|
+
* Whose it is is fixed when each bucket is made, by where the plant was then: a plant in a
|
|
1007
|
+
* home is its household's, and its buckets are read by that home's residents only, from the
|
|
1008
|
+
* start of their current residency, and erased with the home's wipe and its household's Clear
|
|
1009
|
+
* history (webrtc.v1 household.proto, WIPE; ClearClimateHistory); a plant outside homes is the
|
|
1010
|
+
* building's, read by the property owner and the gateway administrators. A bucket made while
|
|
1011
|
+
* the plant was in one place is never read as of another, wherever the plant is now.
|
|
1012
|
+
*
|
|
1013
|
+
* Kept, for every plant, a home's as a building's: quarter hours for 180 days and hours for 25
|
|
1014
|
+
* months, so that a year's coefficient of performance can be set beside the year before. The
|
|
1015
|
+
* gateway's records hold no other tier for a plant.
|
|
1016
|
+
*
|
|
1017
|
+
* @generated from message kusinta.iot.climate.v1.PlantHistory
|
|
1018
|
+
*/
|
|
1019
|
+
export declare type PlantHistory = Message<"kusinta.iot.climate.v1.PlantHistory"> & {
|
|
1020
|
+
/**
|
|
1021
|
+
* The plant (heating.v1.HeatingPlant.plant_id).
|
|
1022
|
+
*
|
|
1023
|
+
* @generated from field: string plant_id = 1;
|
|
1024
|
+
*/
|
|
1025
|
+
plantId: string;
|
|
1026
|
+
|
|
1027
|
+
/**
|
|
1028
|
+
* @generated from field: google.protobuf.Timestamp kept_from = 2;
|
|
1029
|
+
*/
|
|
1030
|
+
keptFrom?: Timestamp | undefined;
|
|
1031
|
+
|
|
1032
|
+
/**
|
|
1033
|
+
* @generated from field: repeated kusinta.iot.climate.v1.PlantHistorySample samples = 3;
|
|
1034
|
+
*/
|
|
1035
|
+
samples: PlantHistorySample[];
|
|
1036
|
+
|
|
1037
|
+
/**
|
|
1038
|
+
* @generated from field: kusinta.iot.climate.v1.RoomHistoryResolution resolution = 4;
|
|
1039
|
+
*/
|
|
1040
|
+
resolution: RoomHistoryResolution;
|
|
1041
|
+
|
|
1042
|
+
/**
|
|
1043
|
+
* @generated from field: google.protobuf.Timestamp covered_from = 5;
|
|
1044
|
+
*/
|
|
1045
|
+
coveredFrom?: Timestamp | undefined;
|
|
1046
|
+
|
|
1047
|
+
/**
|
|
1048
|
+
* @generated from field: google.protobuf.Timestamp covered_to = 6;
|
|
1049
|
+
*/
|
|
1050
|
+
coveredTo?: Timestamp | undefined;
|
|
1051
|
+
};
|
|
1052
|
+
|
|
1053
|
+
/**
|
|
1054
|
+
* Describes the message kusinta.iot.climate.v1.PlantHistory.
|
|
1055
|
+
* Use `create(PlantHistorySchema)` to create a new message.
|
|
1056
|
+
*/
|
|
1057
|
+
export declare const PlantHistorySchema: GenMessage<PlantHistory>;
|
|
1058
|
+
|
|
1059
|
+
/**
|
|
1060
|
+
* An apartment's climate over one period.
|
|
1061
|
+
*
|
|
1062
|
+
* Each room's mean is taken over the quarter hours of the period in which it was in this
|
|
1063
|
+
* apartment and had a value; coverage likewise counts only the quarter hours it was here,
|
|
1064
|
+
* and the apartment's mean is formed from the rooms' means as the summary's weighting says.
|
|
1065
|
+
* Every mean is optional: absent means nothing was known, never zero.
|
|
1066
|
+
*
|
|
1067
|
+
* @generated from message kusinta.iot.climate.v1.ClimatePeriodMean
|
|
1068
|
+
*/
|
|
1069
|
+
export declare type ClimatePeriodMean = Message<"kusinta.iot.climate.v1.ClimatePeriodMean"> & {
|
|
1070
|
+
/**
|
|
1071
|
+
* The period, half-open: starts_at <= t < ends_at.
|
|
1072
|
+
*
|
|
1073
|
+
* @generated from field: google.protobuf.Timestamp starts_at = 1;
|
|
1074
|
+
*/
|
|
1075
|
+
startsAt?: Timestamp | undefined;
|
|
1076
|
+
|
|
1077
|
+
/**
|
|
1078
|
+
* @generated from field: google.protobuf.Timestamp ends_at = 2;
|
|
1079
|
+
*/
|
|
1080
|
+
endsAt?: Timestamp | undefined;
|
|
1081
|
+
|
|
1082
|
+
/**
|
|
1083
|
+
* The mean measured temperature, in centidegrees, taken from the building's own sensors
|
|
1084
|
+
* only: in each room, the first of its building sensors that was heard. A reading from a
|
|
1085
|
+
* sensor a resident owns never enters it.
|
|
1086
|
+
*
|
|
1087
|
+
* @generated from field: optional sint32 measured_centidegrees = 3;
|
|
1088
|
+
*/
|
|
1089
|
+
measuredCentidegrees?: number | undefined;
|
|
1090
|
+
|
|
1091
|
+
/**
|
|
1092
|
+
* The mean target, in centidegrees: RoomClimate.target_centidegrees — the temperature
|
|
1093
|
+
* somebody asked for, not the effective target a mode set it back to, so that a
|
|
1094
|
+
* setback is not reported as what the residents chose. The measured mean still falls
|
|
1095
|
+
* while a home is set back; how much that reveals is governed by how long a period
|
|
1096
|
+
* service may ask for (webrtc.v1.PrivacyDisclosure.climate_summary_period).
|
|
1097
|
+
*
|
|
1098
|
+
* @generated from field: optional sint32 target_centidegrees = 4;
|
|
1099
|
+
*/
|
|
1100
|
+
targetCentidegrees?: number | undefined;
|
|
1101
|
+
|
|
1102
|
+
/**
|
|
1103
|
+
* How much of the period the means rest on, in thousandths: the quarter hours with a
|
|
1104
|
+
* value, summed over the apartment's rooms, divided by the quarter hours each room was in
|
|
1105
|
+
* the apartment during the period, summed likewise. A room with no sensor, or one that
|
|
1106
|
+
* went quiet, lowers it — a mean with low coverage describes part of the apartment, or
|
|
1107
|
+
* part of the period.
|
|
1108
|
+
*
|
|
1109
|
+
* @generated from field: uint32 measured_coverage_permille = 5;
|
|
1110
|
+
*/
|
|
1111
|
+
measuredCoveragePermille: number;
|
|
1112
|
+
|
|
1113
|
+
/**
|
|
1114
|
+
* @generated from field: uint32 target_coverage_permille = 6;
|
|
1115
|
+
*/
|
|
1116
|
+
targetCoveragePermille: number;
|
|
1117
|
+
|
|
1118
|
+
/**
|
|
1119
|
+
* The rooms that contributed a measured value, of the rooms the apartment had at any time
|
|
1120
|
+
* in the period.
|
|
1121
|
+
*
|
|
1122
|
+
* @generated from field: uint32 rooms_measured = 7;
|
|
1123
|
+
*/
|
|
1124
|
+
roomsMeasured: number;
|
|
1125
|
+
|
|
1126
|
+
/**
|
|
1127
|
+
* @generated from field: uint32 rooms = 8;
|
|
1128
|
+
*/
|
|
1129
|
+
rooms: number;
|
|
1130
|
+
};
|
|
1131
|
+
|
|
1132
|
+
/**
|
|
1133
|
+
* Describes the message kusinta.iot.climate.v1.ClimatePeriodMean.
|
|
1134
|
+
* Use `create(ClimatePeriodMeanSchema)` to create a new message.
|
|
1135
|
+
*/
|
|
1136
|
+
export declare const ClimatePeriodMeanSchema: GenMessage<ClimatePeriodMean>;
|
|
1137
|
+
|
|
1138
|
+
/**
|
|
1139
|
+
* An apartment's climate as means over whole periods, in reply to
|
|
1140
|
+
* webrtc.v1.GetApartmentClimateSummary. What a party who does not live there may know of
|
|
1141
|
+
* how warm it is kept — see webrtc.v1.PrivacyDisclosure.
|
|
1142
|
+
*
|
|
1143
|
+
* Only CLOSED periods are given. The period running now is never included, so that a
|
|
1144
|
+
* summary cannot be polled into a live reading.
|
|
1145
|
+
*
|
|
1146
|
+
* @generated from message kusinta.iot.climate.v1.ApartmentClimateSummary
|
|
1147
|
+
*/
|
|
1148
|
+
export declare type ApartmentClimateSummary = Message<"kusinta.iot.climate.v1.ApartmentClimateSummary"> & {
|
|
1149
|
+
/**
|
|
1150
|
+
* @generated from field: kusinta.iot.identity.v1.SpaceId apartment_id = 1;
|
|
1151
|
+
*/
|
|
1152
|
+
apartmentId?: SpaceId | undefined;
|
|
1153
|
+
|
|
1154
|
+
/**
|
|
1155
|
+
* @generated from field: kusinta.iot.climate.v1.ClimateSummaryPeriod period = 2;
|
|
1156
|
+
*/
|
|
1157
|
+
period: ClimateSummaryPeriod;
|
|
1158
|
+
|
|
1159
|
+
/**
|
|
1160
|
+
* @generated from field: kusinta.iot.climate.v1.ClimateSummaryWeighting weighting = 3;
|
|
1161
|
+
*/
|
|
1162
|
+
weighting: ClimateSummaryWeighting;
|
|
1163
|
+
|
|
1164
|
+
/**
|
|
1165
|
+
* The start of the earliest period the gateway still holds that the recipient may be
|
|
1166
|
+
* given: for a resident of this apartment, no earlier than their current residency; for
|
|
1167
|
+
* anyone else, of the length disclosed now, and no earlier than the first such period
|
|
1168
|
+
* after it was last changed (see webrtc.v1.PrivacyDisclosure.climate_summary_period).
|
|
1169
|
+
*
|
|
1170
|
+
* @generated from field: google.protobuf.Timestamp kept_from = 4;
|
|
1171
|
+
*/
|
|
1172
|
+
keptFrom?: Timestamp | undefined;
|
|
1173
|
+
|
|
1174
|
+
/**
|
|
1175
|
+
* The periods within the requested range, in order of starts_at.
|
|
1176
|
+
*
|
|
1177
|
+
* @generated from field: repeated kusinta.iot.climate.v1.ClimatePeriodMean periods = 5;
|
|
1178
|
+
*/
|
|
1179
|
+
periods: ClimatePeriodMean[];
|
|
1180
|
+
};
|
|
1181
|
+
|
|
1182
|
+
/**
|
|
1183
|
+
* Describes the message kusinta.iot.climate.v1.ApartmentClimateSummary.
|
|
1184
|
+
* Use `create(ApartmentClimateSummarySchema)` to create a new message.
|
|
1185
|
+
*/
|
|
1186
|
+
export declare const ApartmentClimateSummarySchema: GenMessage<ApartmentClimateSummary>;
|
|
1187
|
+
|
|
1188
|
+
/**
|
|
1189
|
+
* What a room is doing right now, in one word. Details live in the fields of
|
|
1190
|
+
* RoomClimate; this is what a list row shows.
|
|
1191
|
+
*
|
|
1192
|
+
* Where several hold at once the room reports the first that applies, in this order:
|
|
1193
|
+
* NO_TARGET, NO_HEATING, WINDOW_OPEN, HEATING_UNREACHABLE, SENSOR_LOST, NO_SENSOR,
|
|
1194
|
+
* HOLDING — the one that most changes what a person should expect of the room.
|
|
1195
|
+
*
|
|
1196
|
+
* @generated from enum kusinta.iot.climate.v1.RoomClimateCondition
|
|
1197
|
+
*/
|
|
1198
|
+
export enum RoomClimateCondition {
|
|
1199
|
+
/**
|
|
1200
|
+
* @generated from enum value: ROOM_CLIMATE_CONDITION_UNSPECIFIED = 0;
|
|
1201
|
+
*/
|
|
1202
|
+
UNSPECIFIED = 0,
|
|
1203
|
+
|
|
1204
|
+
/**
|
|
1205
|
+
* Being held at its effective target from a sensor's reading.
|
|
1206
|
+
*
|
|
1207
|
+
* @generated from enum value: ROOM_CLIMATE_CONDITION_HOLDING = 1;
|
|
1208
|
+
*/
|
|
1209
|
+
HOLDING = 1,
|
|
1210
|
+
|
|
1211
|
+
/**
|
|
1212
|
+
* Nobody has set a target yet. Not a fault: a room that was just created.
|
|
1213
|
+
*
|
|
1214
|
+
* @generated from enum value: ROOM_CLIMATE_CONDITION_NO_TARGET = 2;
|
|
1215
|
+
*/
|
|
1216
|
+
NO_TARGET = 2,
|
|
1217
|
+
|
|
1218
|
+
/**
|
|
1219
|
+
* Every sensor the room uses has gone quiet. The valves regulate on their own probes
|
|
1220
|
+
* towards the target meanwhile — worse comfort, never a frozen reading.
|
|
1221
|
+
*
|
|
1222
|
+
* @generated from enum value: ROOM_CLIMATE_CONDITION_SENSOR_LOST = 3;
|
|
1223
|
+
*/
|
|
1224
|
+
SENSOR_LOST = 3,
|
|
1225
|
+
|
|
1226
|
+
/**
|
|
1227
|
+
* A window in the room is open, so heating is paused.
|
|
1228
|
+
*
|
|
1229
|
+
* @generated from enum value: ROOM_CLIMATE_CONDITION_WINDOW_OPEN = 4;
|
|
1230
|
+
*/
|
|
1231
|
+
WINDOW_OPEN = 4,
|
|
1232
|
+
|
|
1233
|
+
/**
|
|
1234
|
+
* The room has a target but nothing in it can heat.
|
|
1235
|
+
*
|
|
1236
|
+
* @generated from enum value: ROOM_CLIMATE_CONDITION_NO_HEATING = 5;
|
|
1237
|
+
*/
|
|
1238
|
+
NO_HEATING = 5,
|
|
1239
|
+
|
|
1240
|
+
/**
|
|
1241
|
+
* Every heating device in the room has gone quiet, so nothing is being held however
|
|
1242
|
+
* the target is set.
|
|
1243
|
+
*
|
|
1244
|
+
* @generated from enum value: ROOM_CLIMATE_CONDITION_HEATING_UNREACHABLE = 6;
|
|
1245
|
+
*/
|
|
1246
|
+
HEATING_UNREACHABLE = 6,
|
|
1247
|
+
|
|
1248
|
+
/**
|
|
1249
|
+
* The room has no temperature sensor, so its valves regulate on their own probes
|
|
1250
|
+
* towards the target. Not a fault; a room can be set up that way.
|
|
1251
|
+
*
|
|
1252
|
+
* @generated from enum value: ROOM_CLIMATE_CONDITION_NO_SENSOR = 7;
|
|
1253
|
+
*/
|
|
1254
|
+
NO_SENSOR = 7,
|
|
1255
|
+
}
|
|
1256
|
+
|
|
1257
|
+
/**
|
|
1258
|
+
* Describes the enum kusinta.iot.climate.v1.RoomClimateCondition.
|
|
1259
|
+
*/
|
|
1260
|
+
export declare const RoomClimateConditionSchema: GenEnum<RoomClimateCondition>;
|
|
1261
|
+
|
|
1262
|
+
/**
|
|
1263
|
+
* Which bound of a room's outer limits clamps the outputs it binds.
|
|
1264
|
+
*
|
|
1265
|
+
* @generated from enum kusinta.iot.climate.v1.OuterLimitKind
|
|
1266
|
+
*/
|
|
1267
|
+
export enum OuterLimitKind {
|
|
1268
|
+
/**
|
|
1269
|
+
* @generated from enum value: OUTER_LIMIT_KIND_UNSPECIFIED = 0;
|
|
1270
|
+
*/
|
|
1271
|
+
UNSPECIFIED = 0,
|
|
1272
|
+
|
|
1273
|
+
/**
|
|
1274
|
+
* Also when min stands in as the AWAY FLOOR for an unset away_min.
|
|
1275
|
+
*
|
|
1276
|
+
* @generated from enum value: OUTER_LIMIT_KIND_MIN = 1;
|
|
1277
|
+
*/
|
|
1278
|
+
MIN = 1,
|
|
1279
|
+
|
|
1280
|
+
/**
|
|
1281
|
+
* @generated from enum value: OUTER_LIMIT_KIND_MAX = 2;
|
|
1282
|
+
*/
|
|
1283
|
+
MAX = 2,
|
|
1284
|
+
|
|
1285
|
+
/**
|
|
1286
|
+
* @generated from enum value: OUTER_LIMIT_KIND_AWAY_MIN = 3;
|
|
1287
|
+
*/
|
|
1288
|
+
AWAY_MIN = 3,
|
|
1289
|
+
}
|
|
1290
|
+
|
|
1291
|
+
/**
|
|
1292
|
+
* Describes the enum kusinta.iot.climate.v1.OuterLimitKind.
|
|
1293
|
+
*/
|
|
1294
|
+
export declare const OuterLimitKindSchema: GenEnum<OuterLimitKind>;
|
|
1295
|
+
|
|
1296
|
+
/**
|
|
1297
|
+
* How many of a room's heating outputs its outer limits bind (OuterRoomLimits, WHAT THEY BIND).
|
|
1298
|
+
*
|
|
1299
|
+
* @generated from enum kusinta.iot.climate.v1.OuterLimitsCoverage
|
|
1300
|
+
*/
|
|
1301
|
+
export enum OuterLimitsCoverage {
|
|
1302
|
+
/**
|
|
1303
|
+
* Not stated: withheld, or the room has no outer limits.
|
|
1304
|
+
*
|
|
1305
|
+
* @generated from enum value: OUTER_LIMITS_COVERAGE_UNSPECIFIED = 0;
|
|
1306
|
+
*/
|
|
1307
|
+
UNSPECIFIED = 0,
|
|
1308
|
+
|
|
1309
|
+
/**
|
|
1310
|
+
* The room has outer limits and they bind none of its heating outputs: it heats only with a
|
|
1311
|
+
* household's own devices, or with nothing.
|
|
1312
|
+
*
|
|
1313
|
+
* @generated from enum value: OUTER_LIMITS_COVERAGE_NONE = 1;
|
|
1314
|
+
*/
|
|
1315
|
+
NONE = 1,
|
|
1316
|
+
|
|
1317
|
+
/**
|
|
1318
|
+
* Some of its heating outputs and not others.
|
|
1319
|
+
*
|
|
1320
|
+
* @generated from enum value: OUTER_LIMITS_COVERAGE_SOME = 2;
|
|
1321
|
+
*/
|
|
1322
|
+
SOME = 2,
|
|
1323
|
+
|
|
1324
|
+
/**
|
|
1325
|
+
* Every heating output in it.
|
|
1326
|
+
*
|
|
1327
|
+
* @generated from enum value: OUTER_LIMITS_COVERAGE_ALL = 3;
|
|
1328
|
+
*/
|
|
1329
|
+
ALL = 3,
|
|
1330
|
+
}
|
|
1331
|
+
|
|
1332
|
+
/**
|
|
1333
|
+
* Describes the enum kusinta.iot.climate.v1.OuterLimitsCoverage.
|
|
1334
|
+
*/
|
|
1335
|
+
export declare const OuterLimitsCoverageSchema: GenEnum<OuterLimitsCoverage>;
|
|
1336
|
+
|
|
1337
|
+
/**
|
|
1338
|
+
* Whether a plan steers a room: one that looks ahead at prices, weather and the heat
|
|
1339
|
+
* source and moves the room within its comfort band. A standing state of the room, not a
|
|
1340
|
+
* reason, so it is a field of its own rather than an explanation.
|
|
1341
|
+
*
|
|
1342
|
+
* @generated from enum kusinta.iot.climate.v1.RoomPlanning
|
|
1343
|
+
*/
|
|
1344
|
+
export enum RoomPlanning {
|
|
1345
|
+
/**
|
|
1346
|
+
* Not stated.
|
|
1347
|
+
*
|
|
1348
|
+
* @generated from enum value: ROOM_PLANNING_UNSPECIFIED = 0;
|
|
1349
|
+
*/
|
|
1350
|
+
UNSPECIFIED = 0,
|
|
1351
|
+
|
|
1352
|
+
/**
|
|
1353
|
+
* A plan steers the room. Its explanations say what it is doing.
|
|
1354
|
+
*
|
|
1355
|
+
* @generated from enum value: ROOM_PLANNING_PLANNED = 1;
|
|
1356
|
+
*/
|
|
1357
|
+
PLANNED = 1,
|
|
1358
|
+
|
|
1359
|
+
/**
|
|
1360
|
+
* No plan steers the room: planning is switched off for it, or was never set up. The
|
|
1361
|
+
* room follows its target and schedule.
|
|
1362
|
+
*
|
|
1363
|
+
* @generated from enum value: ROOM_PLANNING_NOT_PLANNED = 2;
|
|
1364
|
+
*/
|
|
1365
|
+
NOT_PLANNED = 2,
|
|
1366
|
+
|
|
1367
|
+
/**
|
|
1368
|
+
* A plan would steer the room but cannot be made — prices or a forecast are missing —
|
|
1369
|
+
* so the room follows its target and schedule until one can.
|
|
1370
|
+
*
|
|
1371
|
+
* @generated from enum value: ROOM_PLANNING_UNAVAILABLE = 3;
|
|
1372
|
+
*/
|
|
1373
|
+
UNAVAILABLE = 3,
|
|
1374
|
+
}
|
|
1375
|
+
|
|
1376
|
+
/**
|
|
1377
|
+
* Describes the enum kusinta.iot.climate.v1.RoomPlanning.
|
|
1378
|
+
*/
|
|
1379
|
+
export declare const RoomPlanningSchema: GenEnum<RoomPlanning>;
|
|
1380
|
+
|
|
1381
|
+
/**
|
|
1382
|
+
* What held a room, or a part of its heating, where it is. A closed list of causes: the
|
|
1383
|
+
* gateway sends a kind, never a sentence, and the app names each kind in its user's
|
|
1384
|
+
* language. What the cause acts on is ClimateExplanation.subject, and each kind lists the
|
|
1385
|
+
* subjects it may carry. A pair a kind does not list is shown as nothing, so a pair added
|
|
1386
|
+
* later reaches an older app as nothing rather than as a guess.
|
|
1387
|
+
*
|
|
1388
|
+
* No kind identifies another household or anything about one, its activity included.
|
|
1389
|
+
* Where a limit is shared — a building's power, a shared heat source — the explanation
|
|
1390
|
+
* says that this room was limited, never by whom or because of whom. A kind that a source
|
|
1391
|
+
* or limit shared with other homes drives — HOT_WATER_PRIORITY on a shared heat source,
|
|
1392
|
+
* SHARED_POWER_BUDGET, DISTRICT_HEATING_PEAK on a shared connection — is sent only where at
|
|
1393
|
+
* least three homes share that source or limit, in rooms in homes and outside them alike.
|
|
1394
|
+
* Below that, its onset and end would track another home's use as it happens, and the
|
|
1395
|
+
* room carries no explanation for it.
|
|
1396
|
+
*
|
|
1397
|
+
* @generated from enum kusinta.iot.climate.v1.ClimateExplanationKind
|
|
1398
|
+
*/
|
|
1399
|
+
export enum ClimateExplanationKind {
|
|
1400
|
+
/**
|
|
1401
|
+
* Sender did not set a kind, or sent one this client's schema does not know. An app
|
|
1402
|
+
* shows nothing for it rather than guessing.
|
|
1403
|
+
*
|
|
1404
|
+
* @generated from enum value: CLIMATE_EXPLANATION_KIND_UNSPECIFIED = 0;
|
|
1405
|
+
*/
|
|
1406
|
+
UNSPECIFIED = 0,
|
|
1407
|
+
|
|
1408
|
+
/**
|
|
1409
|
+
* Heated ahead of a dearer or colder period, within the comfort band, so less is needed
|
|
1410
|
+
* then. Subjects: ROOM, FLOOR_ZONE.
|
|
1411
|
+
*
|
|
1412
|
+
* @generated from enum value: CLIMATE_EXPLANATION_KIND_PRE_HEAT = 1;
|
|
1413
|
+
*/
|
|
1414
|
+
PRE_HEAT = 1,
|
|
1415
|
+
|
|
1416
|
+
/**
|
|
1417
|
+
* Held back while stored heat carries the room, within the comfort band. Subjects: ROOM,
|
|
1418
|
+
* FLOOR_ZONE.
|
|
1419
|
+
*
|
|
1420
|
+
* @generated from enum value: CLIMATE_EXPLANATION_KIND_COASTING = 2;
|
|
1421
|
+
*/
|
|
1422
|
+
COASTING = 2,
|
|
1423
|
+
|
|
1424
|
+
/**
|
|
1425
|
+
* Held back while energy is expensive, within the comfort band. Subjects: ROOM,
|
|
1426
|
+
* FLOOR_ZONE, COMFORT_LOAD, ADD_ON_HEATER.
|
|
1427
|
+
*
|
|
1428
|
+
* @generated from enum value: CLIMATE_EXPLANATION_KIND_PRICE_HIGH = 3;
|
|
1429
|
+
*/
|
|
1430
|
+
PRICE_HIGH = 3,
|
|
1431
|
+
|
|
1432
|
+
/**
|
|
1433
|
+
* Held back to keep the home's own electricity use below a peak it is charged for.
|
|
1434
|
+
* Subjects: ROOM, FLOOR_ZONE, COMFORT_LOAD, ADD_ON_HEATER.
|
|
1435
|
+
*
|
|
1436
|
+
* @generated from enum value: CLIMATE_EXPLANATION_KIND_PEAK_GUARD = 4;
|
|
1437
|
+
*/
|
|
1438
|
+
PEAK_GUARD = 4,
|
|
1439
|
+
|
|
1440
|
+
/**
|
|
1441
|
+
* Paused while the heat source heats domestic hot water. Subjects: ROOM, FLOOR_ZONE.
|
|
1442
|
+
*
|
|
1443
|
+
* @generated from enum value: CLIMATE_EXPLANATION_KIND_HOT_WATER_PRIORITY = 5;
|
|
1444
|
+
*/
|
|
1445
|
+
HOT_WATER_PRIORITY = 5,
|
|
1446
|
+
|
|
1447
|
+
/**
|
|
1448
|
+
* Held back to keep electricity that several homes share — a building's connection, a
|
|
1449
|
+
* shared heat source — within its limit. Subjects: ROOM, FLOOR_ZONE, COMFORT_LOAD,
|
|
1450
|
+
* ADD_ON_HEATER.
|
|
1451
|
+
*
|
|
1452
|
+
* @generated from enum value: CLIMATE_EXPLANATION_KIND_SHARED_POWER_BUDGET = 6;
|
|
1453
|
+
*/
|
|
1454
|
+
SHARED_POWER_BUDGET = 6,
|
|
1455
|
+
|
|
1456
|
+
/**
|
|
1457
|
+
* Held back to keep a district-heating connection below its charged peak. Subjects:
|
|
1458
|
+
* ROOM, FLOOR_ZONE.
|
|
1459
|
+
*
|
|
1460
|
+
* @generated from enum value: CLIMATE_EXPLANATION_KIND_DISTRICT_HEATING_PEAK = 7;
|
|
1461
|
+
*/
|
|
1462
|
+
DISTRICT_HEATING_PEAK = 7,
|
|
1463
|
+
|
|
1464
|
+
/**
|
|
1465
|
+
* Not heated further because the room is at the top of its comfort band, even though
|
|
1466
|
+
* energy is cheap. Subjects: ROOM, FLOOR_ZONE.
|
|
1467
|
+
*
|
|
1468
|
+
* @generated from enum value: CLIMATE_EXPLANATION_KIND_AT_COMFORT_CEILING = 8;
|
|
1469
|
+
*/
|
|
1470
|
+
AT_COMFORT_CEILING = 8,
|
|
1471
|
+
|
|
1472
|
+
/**
|
|
1473
|
+
* Run on a cautious fixed share of the time because the reading that steers it has gone
|
|
1474
|
+
* quiet. Subjects: FLOOR_ZONE only — a room's own lost sensor is told by condition. In
|
|
1475
|
+
* the room whose sensor steers the zone, condition says the sensor is lost and this says
|
|
1476
|
+
* what the zone does about it.
|
|
1477
|
+
*
|
|
1478
|
+
* @generated from enum value: CLIMATE_EXPLANATION_KIND_NO_READING = 9;
|
|
1479
|
+
*/
|
|
1480
|
+
NO_READING = 9,
|
|
1481
|
+
|
|
1482
|
+
/**
|
|
1483
|
+
* Off because it is outside its time window — a heated floor kept warm for comfort, a
|
|
1484
|
+
* towel heater. Subjects: COMFORT_LOAD only.
|
|
1485
|
+
*
|
|
1486
|
+
* @generated from enum value: CLIMATE_EXPLANATION_KIND_OUTSIDE_WINDOW = 10;
|
|
1487
|
+
*/
|
|
1488
|
+
OUTSIDE_WINDOW = 10,
|
|
1489
|
+
}
|
|
1490
|
+
|
|
1491
|
+
/**
|
|
1492
|
+
* Describes the enum kusinta.iot.climate.v1.ClimateExplanationKind.
|
|
1493
|
+
*/
|
|
1494
|
+
export declare const ClimateExplanationKindSchema: GenEnum<ClimateExplanationKind>;
|
|
1495
|
+
|
|
1496
|
+
/**
|
|
1497
|
+
* What a cause acts on.
|
|
1498
|
+
*
|
|
1499
|
+
* @generated from enum kusinta.iot.climate.v1.ClimateExplanationSubject
|
|
1500
|
+
*/
|
|
1501
|
+
export enum ClimateExplanationSubject {
|
|
1502
|
+
/**
|
|
1503
|
+
* Sender did not set a subject, or sent one this client's schema does not know — some
|
|
1504
|
+
* decoders read an unknown value as this one. Never the room as a whole.
|
|
1505
|
+
*
|
|
1506
|
+
* @generated from enum value: CLIMATE_EXPLANATION_SUBJECT_UNSPECIFIED = 0;
|
|
1507
|
+
*/
|
|
1508
|
+
UNSPECIFIED = 0,
|
|
1509
|
+
|
|
1510
|
+
/**
|
|
1511
|
+
* The room's heating as a whole.
|
|
1512
|
+
*
|
|
1513
|
+
* @generated from enum value: CLIMATE_EXPLANATION_SUBJECT_ROOM = 1;
|
|
1514
|
+
*/
|
|
1515
|
+
ROOM = 1,
|
|
1516
|
+
|
|
1517
|
+
/**
|
|
1518
|
+
* A floor zone heating this room. A zone's explanation is sent only in rooms on the same
|
|
1519
|
+
* side of a home's boundary as the zone's control room: rooms in the same home as it, or
|
|
1520
|
+
* rooms outside homes when it is outside one. A zone that heats rooms on both sides
|
|
1521
|
+
* explains itself on its control room's side alone, so a fact withheld across that
|
|
1522
|
+
* boundary does not cross it here.
|
|
1523
|
+
*
|
|
1524
|
+
* @generated from enum value: CLIMATE_EXPLANATION_SUBJECT_FLOOR_ZONE = 2;
|
|
1525
|
+
*/
|
|
1526
|
+
FLOOR_ZONE = 2,
|
|
1527
|
+
|
|
1528
|
+
/**
|
|
1529
|
+
* A comfort load in the room: a heated floor kept warm for comfort, a towel heater.
|
|
1530
|
+
*
|
|
1531
|
+
* @generated from enum value: CLIMATE_EXPLANATION_SUBJECT_COMFORT_LOAD = 3;
|
|
1532
|
+
*/
|
|
1533
|
+
COMFORT_LOAD = 3,
|
|
1534
|
+
|
|
1535
|
+
/**
|
|
1536
|
+
* The heat source's add-on heater.
|
|
1537
|
+
*
|
|
1538
|
+
* @generated from enum value: CLIMATE_EXPLANATION_SUBJECT_ADD_ON_HEATER = 4;
|
|
1539
|
+
*/
|
|
1540
|
+
ADD_ON_HEATER = 4,
|
|
1541
|
+
}
|
|
1542
|
+
|
|
1543
|
+
/**
|
|
1544
|
+
* Describes the enum kusinta.iot.climate.v1.ClimateExplanationSubject.
|
|
1545
|
+
*/
|
|
1546
|
+
export declare const ClimateExplanationSubjectSchema: GenEnum<ClimateExplanationSubject>;
|
|
1547
|
+
|
|
1548
|
+
/**
|
|
1549
|
+
* A setback that applies to every room in a space while it is on.
|
|
1550
|
+
*
|
|
1551
|
+
* @generated from enum kusinta.iot.climate.v1.ClimateModeKind
|
|
1552
|
+
*/
|
|
1553
|
+
export enum ClimateModeKind {
|
|
1554
|
+
/**
|
|
1555
|
+
* No mode: every room at its own target.
|
|
1556
|
+
*
|
|
1557
|
+
* @generated from enum value: CLIMATE_MODE_KIND_UNSPECIFIED = 0;
|
|
1558
|
+
*/
|
|
1559
|
+
UNSPECIFIED = 0,
|
|
1560
|
+
|
|
1561
|
+
/**
|
|
1562
|
+
* Every room to the setback until the mode is switched off.
|
|
1563
|
+
*
|
|
1564
|
+
* @generated from enum value: CLIMATE_MODE_KIND_AWAY = 1;
|
|
1565
|
+
*/
|
|
1566
|
+
AWAY = 1,
|
|
1567
|
+
|
|
1568
|
+
/**
|
|
1569
|
+
* Every room to the setback between starts_at and ends_at, then back to normal on its
|
|
1570
|
+
* own — timed so the rooms are warm again at ends_at, not starting to heat then.
|
|
1571
|
+
*
|
|
1572
|
+
* @generated from enum value: CLIMATE_MODE_KIND_HOLIDAY = 2;
|
|
1573
|
+
*/
|
|
1574
|
+
HOLIDAY = 2,
|
|
1575
|
+
}
|
|
1576
|
+
|
|
1577
|
+
/**
|
|
1578
|
+
* Describes the enum kusinta.iot.climate.v1.ClimateModeKind.
|
|
1579
|
+
*/
|
|
1580
|
+
export declare const ClimateModeKindSchema: GenEnum<ClimateModeKind>;
|
|
1581
|
+
|
|
1582
|
+
/**
|
|
1583
|
+
* The length of the buckets a room's history is given in. Buckets are fixed and aligned to
|
|
1584
|
+
* UTC, whatever the building's time zone.
|
|
1585
|
+
*
|
|
1586
|
+
* @generated from enum kusinta.iot.climate.v1.RoomHistoryResolution
|
|
1587
|
+
*/
|
|
1588
|
+
export enum RoomHistoryResolution {
|
|
1589
|
+
/**
|
|
1590
|
+
* In a request: the gateway chooses (webrtc.v1.GetRoomHistory). In an answer: quarter hours,
|
|
1591
|
+
* from a gateway that predates this field.
|
|
1592
|
+
*
|
|
1593
|
+
* Rollout note: an app that predates this field asks with it unset and reads every sample as
|
|
1594
|
+
* a quarter hour and every answer as whole. A gateway may therefore give hours, or cap an
|
|
1595
|
+
* answer, only to apps that read RoomHistory.resolution and its covered range: app handling
|
|
1596
|
+
* ships before or with the gateway that does.
|
|
1597
|
+
*
|
|
1598
|
+
* @generated from enum value: ROOM_HISTORY_RESOLUTION_UNSPECIFIED = 0;
|
|
1599
|
+
*/
|
|
1600
|
+
UNSPECIFIED = 0,
|
|
1601
|
+
|
|
1602
|
+
/**
|
|
1603
|
+
* 15-minute buckets (:00, :15, :30, :45).
|
|
1604
|
+
*
|
|
1605
|
+
* @generated from enum value: ROOM_HISTORY_RESOLUTION_QUARTER_HOUR = 1;
|
|
1606
|
+
*/
|
|
1607
|
+
QUARTER_HOUR = 1,
|
|
1608
|
+
|
|
1609
|
+
/**
|
|
1610
|
+
* Hour buckets, each made of its four quarter hours as RoomHistorySample says. An hour is
|
|
1611
|
+
* given only where all of it lies within what the recipient may read (RoomHistory): one
|
|
1612
|
+
* that straddles the start of their residency, or the room joining their home, is left out,
|
|
1613
|
+
* never trimmed or averaged again from its readable part.
|
|
1614
|
+
*
|
|
1615
|
+
* @generated from enum value: ROOM_HISTORY_RESOLUTION_HOUR = 2;
|
|
1616
|
+
*/
|
|
1617
|
+
HOUR = 2,
|
|
1618
|
+
}
|
|
1619
|
+
|
|
1620
|
+
/**
|
|
1621
|
+
* Describes the enum kusinta.iot.climate.v1.RoomHistoryResolution.
|
|
1622
|
+
*/
|
|
1623
|
+
export declare const RoomHistoryResolutionSchema: GenEnum<RoomHistoryResolution>;
|
|
1624
|
+
|
|
1625
|
+
/**
|
|
1626
|
+
* The length of the periods an ApartmentClimateSummary is given in. Each period runs from
|
|
1627
|
+
* the start of one local date to the start of another in the building's time zone
|
|
1628
|
+
* (space.v1.Space.time_zone) — midnight, or the first moment of the date where daylight
|
|
1629
|
+
* saving skips midnight — so a day is 23 or 25 hours long across a change of daylight
|
|
1630
|
+
* saving time. A period is cut by the time zone in force when it opened, and kept as cut.
|
|
1631
|
+
* After a change of zone, the next period runs from that cut to the first boundary of its
|
|
1632
|
+
* length in the new zone — a midnight, a Monday or a first of the month — that leaves it
|
|
1633
|
+
* covering at least one whole day, week or month of the new zone's calendar, so no period
|
|
1634
|
+
* covers less than one whole day, week or month of its calendar, however many hours that
|
|
1635
|
+
* is. While the zone is unknown — never set, or cleared — nothing is summarised, and the
|
|
1636
|
+
* period open when it was cleared ends unsummarised; once it is known again, the first
|
|
1637
|
+
* period begins at the first boundary of its length after that.
|
|
1638
|
+
*
|
|
1639
|
+
* @generated from enum kusinta.iot.climate.v1.ClimateSummaryPeriod
|
|
1640
|
+
*/
|
|
1641
|
+
export enum ClimateSummaryPeriod {
|
|
1642
|
+
/**
|
|
1643
|
+
* @generated from enum value: CLIMATE_SUMMARY_PERIOD_UNSPECIFIED = 0;
|
|
1644
|
+
*/
|
|
1645
|
+
UNSPECIFIED = 0,
|
|
1646
|
+
|
|
1647
|
+
/**
|
|
1648
|
+
* @generated from enum value: CLIMATE_SUMMARY_PERIOD_DAY = 1;
|
|
1649
|
+
*/
|
|
1650
|
+
DAY = 1,
|
|
1651
|
+
|
|
1652
|
+
/**
|
|
1653
|
+
* ISO weeks, Monday to Monday.
|
|
1654
|
+
*
|
|
1655
|
+
* @generated from enum value: CLIMATE_SUMMARY_PERIOD_WEEK = 2;
|
|
1656
|
+
*/
|
|
1657
|
+
WEEK = 2,
|
|
1658
|
+
|
|
1659
|
+
/**
|
|
1660
|
+
* Calendar months.
|
|
1661
|
+
*
|
|
1662
|
+
* @generated from enum value: CLIMATE_SUMMARY_PERIOD_MONTH = 3;
|
|
1663
|
+
*/
|
|
1664
|
+
MONTH = 3,
|
|
1665
|
+
}
|
|
1666
|
+
|
|
1667
|
+
/**
|
|
1668
|
+
* Describes the enum kusinta.iot.climate.v1.ClimateSummaryPeriod.
|
|
1669
|
+
*/
|
|
1670
|
+
export declare const ClimateSummaryPeriodSchema: GenEnum<ClimateSummaryPeriod>;
|
|
1671
|
+
|
|
1672
|
+
/**
|
|
1673
|
+
* How an apartment's mean is formed from its rooms' means.
|
|
1674
|
+
*
|
|
1675
|
+
* @generated from enum kusinta.iot.climate.v1.ClimateSummaryWeighting
|
|
1676
|
+
*/
|
|
1677
|
+
export enum ClimateSummaryWeighting {
|
|
1678
|
+
/**
|
|
1679
|
+
* @generated from enum value: CLIMATE_SUMMARY_WEIGHTING_UNSPECIFIED = 0;
|
|
1680
|
+
*/
|
|
1681
|
+
UNSPECIFIED = 0,
|
|
1682
|
+
|
|
1683
|
+
/**
|
|
1684
|
+
* Each room counts once, whatever its size: a bathroom weighs as much as a living room.
|
|
1685
|
+
*
|
|
1686
|
+
* @generated from enum value: CLIMATE_SUMMARY_WEIGHTING_ROOMS_EQUAL = 1;
|
|
1687
|
+
*/
|
|
1688
|
+
ROOMS_EQUAL = 1,
|
|
1689
|
+
}
|
|
1690
|
+
|
|
1691
|
+
/**
|
|
1692
|
+
* Describes the enum kusinta.iot.climate.v1.ClimateSummaryWeighting.
|
|
1693
|
+
*/
|
|
1694
|
+
export declare const ClimateSummaryWeightingSchema: GenEnum<ClimateSummaryWeighting>;
|
|
1695
|
+
|