@kusinta/iot-schema 0.2.0-beta.35 → 0.2.0-beta.36
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 +1 -1
- package/src/kusinta/iot/climate/v1/climate_pb.d.ts +304 -0
- package/src/kusinta/iot/climate/v1/climate_pb.js +74 -10
- package/src/kusinta/iot/device/v1/cluster_state_pb.d.ts +194 -1
- package/src/kusinta/iot/device/v1/cluster_state_pb.js +37 -2
- package/src/kusinta/iot/device/v1/device_pb.d.ts +39 -2
- package/src/kusinta/iot/device/v1/device_pb.js +1 -1
- package/src/kusinta/iot/webrtc/v1/command_pb.d.ts +42 -0
- package/src/kusinta/iot/webrtc/v1/command_pb.js +1 -1
package/package.json
CHANGED
|
@@ -207,9 +207,63 @@ export declare type RoomClimate = Message<"kusinta.iot.climate.v1.RoomClimate">
|
|
|
207
207
|
* the sensors service may see are still sent, since setting a room up is service work.
|
|
208
208
|
* Its climate over time is available to service only as an ApartmentClimateSummary.
|
|
209
209
|
*
|
|
210
|
+
* explanations, target_held_until, planning and the comfort band are withheld in the
|
|
211
|
+
* same way.
|
|
212
|
+
*
|
|
210
213
|
* @generated from field: bool state_withheld = 15;
|
|
211
214
|
*/
|
|
212
215
|
stateWithheld: boolean;
|
|
216
|
+
|
|
217
|
+
/**
|
|
218
|
+
* Why the room is being held where it is, when that differs from simply holding its
|
|
219
|
+
* target: a plan heating ahead of an expensive hour, the heat source busy with hot water,
|
|
220
|
+
* a floor zone held back. Most significant first. An app that shows one shows the first
|
|
221
|
+
* it can show: a kind and subject it knows, a pair that kind lists, and not past its
|
|
222
|
+
* ends_at. Empty: nothing beyond the target and condition needs explaining.
|
|
223
|
+
*
|
|
224
|
+
* A window, a lost sensor and the rest of RoomClimateCondition are told by condition and
|
|
225
|
+
* never repeated here; a target a person set is told by target_change and
|
|
226
|
+
* target_held_until; whether the room is planned for at all is told by planning — one
|
|
227
|
+
* fact, one place.
|
|
228
|
+
*
|
|
229
|
+
* Sent with the room, so a replaced room replaces its list: an explanation absent from
|
|
230
|
+
* the latest RoomClimate no longer holds.
|
|
231
|
+
*
|
|
232
|
+
* @generated from field: repeated kusinta.iot.climate.v1.ClimateExplanation explanations = 16;
|
|
233
|
+
*/
|
|
234
|
+
explanations: ClimateExplanation[];
|
|
235
|
+
|
|
236
|
+
/**
|
|
237
|
+
* When a target a person set will next be moved by the gateway on its own — a schedule
|
|
238
|
+
* step, a plan taking over again. Unset: it holds until somebody changes it. Told so that
|
|
239
|
+
* a person is not surprised when their change ends. Unset whenever target_change is
|
|
240
|
+
* withheld from the recipient, for the same reasons: it describes the same change.
|
|
241
|
+
*
|
|
242
|
+
* @generated from field: google.protobuf.Timestamp target_held_until = 17;
|
|
243
|
+
*/
|
|
244
|
+
targetHeldUntil?: Timestamp | undefined;
|
|
245
|
+
|
|
246
|
+
/**
|
|
247
|
+
* Whether a plan steers the room. See RoomPlanning.
|
|
248
|
+
*
|
|
249
|
+
* @generated from field: kusinta.iot.climate.v1.RoomPlanning planning = 18;
|
|
250
|
+
*/
|
|
251
|
+
planning: RoomPlanning;
|
|
252
|
+
|
|
253
|
+
/**
|
|
254
|
+
* The comfort band in force, in centidegrees: the lowest and highest a plan may hold the
|
|
255
|
+
* room at while it heats ahead, coasts or saves on dear energy. Both set or neither, low
|
|
256
|
+
* no higher than high, and within [min_centidegrees, max_centidegrees] where those are
|
|
257
|
+
* set. Absent: no band, and a plan holds the room at its target — never 0 °C.
|
|
258
|
+
*
|
|
259
|
+
* @generated from field: optional sint32 comfort_band_low_centidegrees = 19;
|
|
260
|
+
*/
|
|
261
|
+
comfortBandLowCentidegrees?: number | undefined;
|
|
262
|
+
|
|
263
|
+
/**
|
|
264
|
+
* @generated from field: optional sint32 comfort_band_high_centidegrees = 20;
|
|
265
|
+
*/
|
|
266
|
+
comfortBandHighCentidegrees?: number | undefined;
|
|
213
267
|
};
|
|
214
268
|
|
|
215
269
|
/**
|
|
@@ -218,6 +272,45 @@ export declare type RoomClimate = Message<"kusinta.iot.climate.v1.RoomClimate">
|
|
|
218
272
|
*/
|
|
219
273
|
export declare const RoomClimateSchema: GenMessage<RoomClimate>;
|
|
220
274
|
|
|
275
|
+
/**
|
|
276
|
+
* One reason a room, or a part of its heating, is where it is.
|
|
277
|
+
*
|
|
278
|
+
* @generated from message kusinta.iot.climate.v1.ClimateExplanation
|
|
279
|
+
*/
|
|
280
|
+
export declare type ClimateExplanation = Message<"kusinta.iot.climate.v1.ClimateExplanation"> & {
|
|
281
|
+
/**
|
|
282
|
+
* @generated from field: kusinta.iot.climate.v1.ClimateExplanationKind kind = 1;
|
|
283
|
+
*/
|
|
284
|
+
kind: ClimateExplanationKind;
|
|
285
|
+
|
|
286
|
+
/**
|
|
287
|
+
* What the cause acts on. The gateway always sets it. An app shows nothing for an
|
|
288
|
+
* explanation whose subject is unspecified or unknown to it, rather than presenting it
|
|
289
|
+
* as the room's.
|
|
290
|
+
*
|
|
291
|
+
* @generated from field: kusinta.iot.climate.v1.ClimateExplanationSubject subject = 2;
|
|
292
|
+
*/
|
|
293
|
+
subject: ClimateExplanationSubject;
|
|
294
|
+
|
|
295
|
+
/**
|
|
296
|
+
* When the explanation stops holding. Unset: while the room's latest RoomClimate carries
|
|
297
|
+
* it. An app MUST NOT show an explanation past its ends_at, also while it cannot reach
|
|
298
|
+
* the gateway, and while it cannot reach the gateway it shows none without an ends_at:
|
|
299
|
+
* an explanation that outlives its window is a claim about the room nobody is making any
|
|
300
|
+
* more. An explanation that holds because of a leased write ends no later than that
|
|
301
|
+
* lease, after which the output is back at its lapse value whatever the gateway does.
|
|
302
|
+
*
|
|
303
|
+
* @generated from field: google.protobuf.Timestamp ends_at = 3;
|
|
304
|
+
*/
|
|
305
|
+
endsAt?: Timestamp | undefined;
|
|
306
|
+
};
|
|
307
|
+
|
|
308
|
+
/**
|
|
309
|
+
* Describes the message kusinta.iot.climate.v1.ClimateExplanation.
|
|
310
|
+
* Use `create(ClimateExplanationSchema)` to create a new message.
|
|
311
|
+
*/
|
|
312
|
+
export declare const ClimateExplanationSchema: GenMessage<ClimateExplanation>;
|
|
313
|
+
|
|
221
314
|
/**
|
|
222
315
|
* A mode on a home ends when whoever switched it on stops being one of its residents: a new
|
|
223
316
|
* tenant does not inherit the previous one's holiday. A mode on a room ends when the room
|
|
@@ -619,6 +712,217 @@ export enum RoomClimateCondition {
|
|
|
619
712
|
*/
|
|
620
713
|
export declare const RoomClimateConditionSchema: GenEnum<RoomClimateCondition>;
|
|
621
714
|
|
|
715
|
+
/**
|
|
716
|
+
* Whether a plan steers a room: one that looks ahead at prices, weather and the heat
|
|
717
|
+
* source and moves the room within its comfort band. A standing state of the room, not a
|
|
718
|
+
* reason, so it is a field of its own rather than an explanation.
|
|
719
|
+
*
|
|
720
|
+
* @generated from enum kusinta.iot.climate.v1.RoomPlanning
|
|
721
|
+
*/
|
|
722
|
+
export enum RoomPlanning {
|
|
723
|
+
/**
|
|
724
|
+
* Not stated.
|
|
725
|
+
*
|
|
726
|
+
* @generated from enum value: ROOM_PLANNING_UNSPECIFIED = 0;
|
|
727
|
+
*/
|
|
728
|
+
UNSPECIFIED = 0,
|
|
729
|
+
|
|
730
|
+
/**
|
|
731
|
+
* A plan steers the room. Its explanations say what it is doing.
|
|
732
|
+
*
|
|
733
|
+
* @generated from enum value: ROOM_PLANNING_PLANNED = 1;
|
|
734
|
+
*/
|
|
735
|
+
PLANNED = 1,
|
|
736
|
+
|
|
737
|
+
/**
|
|
738
|
+
* No plan steers the room: planning is switched off for it, or was never set up. The
|
|
739
|
+
* room follows its target and schedule.
|
|
740
|
+
*
|
|
741
|
+
* @generated from enum value: ROOM_PLANNING_NOT_PLANNED = 2;
|
|
742
|
+
*/
|
|
743
|
+
NOT_PLANNED = 2,
|
|
744
|
+
|
|
745
|
+
/**
|
|
746
|
+
* A plan would steer the room but cannot be made — prices or a forecast are missing —
|
|
747
|
+
* so the room follows its target and schedule until one can.
|
|
748
|
+
*
|
|
749
|
+
* @generated from enum value: ROOM_PLANNING_UNAVAILABLE = 3;
|
|
750
|
+
*/
|
|
751
|
+
UNAVAILABLE = 3,
|
|
752
|
+
}
|
|
753
|
+
|
|
754
|
+
/**
|
|
755
|
+
* Describes the enum kusinta.iot.climate.v1.RoomPlanning.
|
|
756
|
+
*/
|
|
757
|
+
export declare const RoomPlanningSchema: GenEnum<RoomPlanning>;
|
|
758
|
+
|
|
759
|
+
/**
|
|
760
|
+
* What held a room, or a part of its heating, where it is. A closed list of causes: the
|
|
761
|
+
* gateway sends a kind, never a sentence, and the app names each kind in its user's
|
|
762
|
+
* language. What the cause acts on is ClimateExplanation.subject, and each kind lists the
|
|
763
|
+
* subjects it may carry. A pair a kind does not list is shown as nothing, so a pair added
|
|
764
|
+
* later reaches an older app as nothing rather than as a guess.
|
|
765
|
+
*
|
|
766
|
+
* No kind identifies another household or anything about one, its activity included.
|
|
767
|
+
* Where a limit is shared — a building's power, a shared heat source — the explanation
|
|
768
|
+
* says that this room was limited, never by whom or because of whom. A kind that a source
|
|
769
|
+
* or limit shared with other homes drives — HOT_WATER_PRIORITY on a shared heat source,
|
|
770
|
+
* SHARED_POWER_BUDGET, DISTRICT_HEATING_PEAK on a shared connection — is sent only where at
|
|
771
|
+
* least three homes share that source or limit, in rooms in homes and outside them alike.
|
|
772
|
+
* Below that, its onset and end would track another home's use as it happens, and the
|
|
773
|
+
* room carries no explanation for it.
|
|
774
|
+
*
|
|
775
|
+
* @generated from enum kusinta.iot.climate.v1.ClimateExplanationKind
|
|
776
|
+
*/
|
|
777
|
+
export enum ClimateExplanationKind {
|
|
778
|
+
/**
|
|
779
|
+
* Sender did not set a kind, or sent one this client's schema does not know. An app
|
|
780
|
+
* shows nothing for it rather than guessing.
|
|
781
|
+
*
|
|
782
|
+
* @generated from enum value: CLIMATE_EXPLANATION_KIND_UNSPECIFIED = 0;
|
|
783
|
+
*/
|
|
784
|
+
UNSPECIFIED = 0,
|
|
785
|
+
|
|
786
|
+
/**
|
|
787
|
+
* Heated ahead of a dearer or colder period, within the comfort band, so less is needed
|
|
788
|
+
* then. Subjects: ROOM, FLOOR_ZONE.
|
|
789
|
+
*
|
|
790
|
+
* @generated from enum value: CLIMATE_EXPLANATION_KIND_PRE_HEAT = 1;
|
|
791
|
+
*/
|
|
792
|
+
PRE_HEAT = 1,
|
|
793
|
+
|
|
794
|
+
/**
|
|
795
|
+
* Held back while stored heat carries the room, within the comfort band. Subjects: ROOM,
|
|
796
|
+
* FLOOR_ZONE.
|
|
797
|
+
*
|
|
798
|
+
* @generated from enum value: CLIMATE_EXPLANATION_KIND_COASTING = 2;
|
|
799
|
+
*/
|
|
800
|
+
COASTING = 2,
|
|
801
|
+
|
|
802
|
+
/**
|
|
803
|
+
* Held back while energy is expensive, within the comfort band. Subjects: ROOM,
|
|
804
|
+
* FLOOR_ZONE, COMFORT_LOAD, ADD_ON_HEATER.
|
|
805
|
+
*
|
|
806
|
+
* @generated from enum value: CLIMATE_EXPLANATION_KIND_PRICE_HIGH = 3;
|
|
807
|
+
*/
|
|
808
|
+
PRICE_HIGH = 3,
|
|
809
|
+
|
|
810
|
+
/**
|
|
811
|
+
* Held back to keep the home's own electricity use below a peak it is charged for.
|
|
812
|
+
* Subjects: ROOM, FLOOR_ZONE, COMFORT_LOAD, ADD_ON_HEATER.
|
|
813
|
+
*
|
|
814
|
+
* @generated from enum value: CLIMATE_EXPLANATION_KIND_PEAK_GUARD = 4;
|
|
815
|
+
*/
|
|
816
|
+
PEAK_GUARD = 4,
|
|
817
|
+
|
|
818
|
+
/**
|
|
819
|
+
* Paused while the heat source heats domestic hot water. Subjects: ROOM, FLOOR_ZONE.
|
|
820
|
+
*
|
|
821
|
+
* @generated from enum value: CLIMATE_EXPLANATION_KIND_HOT_WATER_PRIORITY = 5;
|
|
822
|
+
*/
|
|
823
|
+
HOT_WATER_PRIORITY = 5,
|
|
824
|
+
|
|
825
|
+
/**
|
|
826
|
+
* Held back to keep electricity that several homes share — a building's connection, a
|
|
827
|
+
* shared heat source — within its limit. Subjects: ROOM, FLOOR_ZONE, COMFORT_LOAD,
|
|
828
|
+
* ADD_ON_HEATER.
|
|
829
|
+
*
|
|
830
|
+
* @generated from enum value: CLIMATE_EXPLANATION_KIND_SHARED_POWER_BUDGET = 6;
|
|
831
|
+
*/
|
|
832
|
+
SHARED_POWER_BUDGET = 6,
|
|
833
|
+
|
|
834
|
+
/**
|
|
835
|
+
* Held back to keep a district-heating connection below its charged peak. Subjects:
|
|
836
|
+
* ROOM, FLOOR_ZONE.
|
|
837
|
+
*
|
|
838
|
+
* @generated from enum value: CLIMATE_EXPLANATION_KIND_DISTRICT_HEATING_PEAK = 7;
|
|
839
|
+
*/
|
|
840
|
+
DISTRICT_HEATING_PEAK = 7,
|
|
841
|
+
|
|
842
|
+
/**
|
|
843
|
+
* Not heated further because the room is at the top of its comfort band, even though
|
|
844
|
+
* energy is cheap. Subjects: ROOM, FLOOR_ZONE.
|
|
845
|
+
*
|
|
846
|
+
* @generated from enum value: CLIMATE_EXPLANATION_KIND_AT_COMFORT_CEILING = 8;
|
|
847
|
+
*/
|
|
848
|
+
AT_COMFORT_CEILING = 8,
|
|
849
|
+
|
|
850
|
+
/**
|
|
851
|
+
* Run on a cautious fixed share of the time because the reading that steers it has gone
|
|
852
|
+
* quiet. Subjects: FLOOR_ZONE only — a room's own lost sensor is told by condition. In
|
|
853
|
+
* the room whose sensor steers the zone, condition says the sensor is lost and this says
|
|
854
|
+
* what the zone does about it.
|
|
855
|
+
*
|
|
856
|
+
* @generated from enum value: CLIMATE_EXPLANATION_KIND_NO_READING = 9;
|
|
857
|
+
*/
|
|
858
|
+
NO_READING = 9,
|
|
859
|
+
|
|
860
|
+
/**
|
|
861
|
+
* Off because it is outside its time window — a heated floor kept warm for comfort, a
|
|
862
|
+
* towel heater. Subjects: COMFORT_LOAD only.
|
|
863
|
+
*
|
|
864
|
+
* @generated from enum value: CLIMATE_EXPLANATION_KIND_OUTSIDE_WINDOW = 10;
|
|
865
|
+
*/
|
|
866
|
+
OUTSIDE_WINDOW = 10,
|
|
867
|
+
}
|
|
868
|
+
|
|
869
|
+
/**
|
|
870
|
+
* Describes the enum kusinta.iot.climate.v1.ClimateExplanationKind.
|
|
871
|
+
*/
|
|
872
|
+
export declare const ClimateExplanationKindSchema: GenEnum<ClimateExplanationKind>;
|
|
873
|
+
|
|
874
|
+
/**
|
|
875
|
+
* What a cause acts on.
|
|
876
|
+
*
|
|
877
|
+
* @generated from enum kusinta.iot.climate.v1.ClimateExplanationSubject
|
|
878
|
+
*/
|
|
879
|
+
export enum ClimateExplanationSubject {
|
|
880
|
+
/**
|
|
881
|
+
* Sender did not set a subject, or sent one this client's schema does not know — some
|
|
882
|
+
* decoders read an unknown value as this one. Never the room as a whole.
|
|
883
|
+
*
|
|
884
|
+
* @generated from enum value: CLIMATE_EXPLANATION_SUBJECT_UNSPECIFIED = 0;
|
|
885
|
+
*/
|
|
886
|
+
UNSPECIFIED = 0,
|
|
887
|
+
|
|
888
|
+
/**
|
|
889
|
+
* The room's heating as a whole.
|
|
890
|
+
*
|
|
891
|
+
* @generated from enum value: CLIMATE_EXPLANATION_SUBJECT_ROOM = 1;
|
|
892
|
+
*/
|
|
893
|
+
ROOM = 1,
|
|
894
|
+
|
|
895
|
+
/**
|
|
896
|
+
* A floor zone heating this room. A zone's explanation is sent only in rooms on the same
|
|
897
|
+
* side of a home's boundary as the zone's control room: rooms in the same home as it, or
|
|
898
|
+
* rooms outside homes when it is outside one. A zone that heats rooms on both sides
|
|
899
|
+
* explains itself on its control room's side alone, so a fact withheld across that
|
|
900
|
+
* boundary does not cross it here.
|
|
901
|
+
*
|
|
902
|
+
* @generated from enum value: CLIMATE_EXPLANATION_SUBJECT_FLOOR_ZONE = 2;
|
|
903
|
+
*/
|
|
904
|
+
FLOOR_ZONE = 2,
|
|
905
|
+
|
|
906
|
+
/**
|
|
907
|
+
* A comfort load in the room: a heated floor kept warm for comfort, a towel heater.
|
|
908
|
+
*
|
|
909
|
+
* @generated from enum value: CLIMATE_EXPLANATION_SUBJECT_COMFORT_LOAD = 3;
|
|
910
|
+
*/
|
|
911
|
+
COMFORT_LOAD = 3,
|
|
912
|
+
|
|
913
|
+
/**
|
|
914
|
+
* The heat source's add-on heater.
|
|
915
|
+
*
|
|
916
|
+
* @generated from enum value: CLIMATE_EXPLANATION_SUBJECT_ADD_ON_HEATER = 4;
|
|
917
|
+
*/
|
|
918
|
+
ADD_ON_HEATER = 4,
|
|
919
|
+
}
|
|
920
|
+
|
|
921
|
+
/**
|
|
922
|
+
* Describes the enum kusinta.iot.climate.v1.ClimateExplanationSubject.
|
|
923
|
+
*/
|
|
924
|
+
export declare const ClimateExplanationSubjectSchema: GenEnum<ClimateExplanationSubject>;
|
|
925
|
+
|
|
622
926
|
/**
|
|
623
927
|
* A setback that applies to every room in a space while it is on.
|
|
624
928
|
*
|
|
@@ -10,7 +10,7 @@ import { file_kusinta_iot_identity_v1_identity } from "../../identity/v1/identit
|
|
|
10
10
|
* Describes the file kusinta/iot/climate/v1/climate.proto.
|
|
11
11
|
*/
|
|
12
12
|
export const file_kusinta_iot_climate_v1_climate = /*@__PURE__*/
|
|
13
|
-
fileDesc("
|
|
13
|
+
fileDesc("CiRrdXNpbnRhL2lvdC9jbGltYXRlL3YxL2NsaW1hdGUucHJvdG8SFmt1c2ludGEuaW90LmNsaW1hdGUudjEiogEKDFRhcmdldENoYW5nZRImCgJhdBgBIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASLwoEdXNlchgCIAEoCzIfLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLlVzZXJJZEgAEjMKBmRldmljZRgDIAEoCzIhLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLkRldmljZUlkSABCBAoCYnkizggKC1Jvb21DbGltYXRlEjIKCHNwYWNlX2lkGAEgASgLMiAua3VzaW50YS5pb3QuaWRlbnRpdHkudjEuU3BhY2VJZBIgChN0YXJnZXRfY2VudGlkZWdyZWVzGAIgASgRSACIAQESOwoNdGFyZ2V0X2NoYW5nZRgDIAEoCzIkLmt1c2ludGEuaW90LmNsaW1hdGUudjEuVGFyZ2V0Q2hhbmdlEioKHWVmZmVjdGl2ZV90YXJnZXRfY2VudGlkZWdyZWVzGAQgASgRSAGIAQESFgoOb3ZlcnJpZGVzX21vZGUYBSABKAgSNwoNbW9kZV9zcGFjZV9pZBgNIAEoCzIgLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLlNwYWNlSWQSHQoQbWluX2NlbnRpZGVncmVlcxgGIAEoEUgCiAEBEh0KEG1heF9jZW50aWRlZ3JlZXMYByABKBFIA4gBARI1CgpzZW5zb3JfaWRzGAggAygLMiEua3VzaW50YS5pb3QuaWRlbnRpdHkudjEuRGV2aWNlSWQSGgoSc2Vuc29yc19jb25maWd1cmVkGA4gASgIEiIKFW1lYXN1cmVkX2NlbnRpZGVncmVlcxgJIAEoEUgEiAEBEjYKC21lYXN1cmVkX2J5GAogASgLMiEua3VzaW50YS5pb3QuaWRlbnRpdHkudjEuRGV2aWNlSWQSPwoJY29uZGl0aW9uGAsgASgOMiwua3VzaW50YS5pb3QuY2xpbWF0ZS52MS5Sb29tQ2xpbWF0ZUNvbmRpdGlvbhIcChRsb2NrX2RldmljZV9jb250cm9scxgMIAEoCBIWCg5zdGF0ZV93aXRoaGVsZBgPIAEoCBJACgxleHBsYW5hdGlvbnMYECADKAsyKi5rdXNpbnRhLmlvdC5jbGltYXRlLnYxLkNsaW1hdGVFeHBsYW5hdGlvbhI1ChF0YXJnZXRfaGVsZF91bnRpbBgRIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASNgoIcGxhbm5pbmcYEiABKA4yJC5rdXNpbnRhLmlvdC5jbGltYXRlLnYxLlJvb21QbGFubmluZxIqCh1jb21mb3J0X2JhbmRfbG93X2NlbnRpZGVncmVlcxgTIAEoEUgFiAEBEisKHmNvbWZvcnRfYmFuZF9oaWdoX2NlbnRpZGVncmVlcxgUIAEoEUgGiAEBQhYKFF90YXJnZXRfY2VudGlkZWdyZWVzQiAKHl9lZmZlY3RpdmVfdGFyZ2V0X2NlbnRpZGVncmVlc0ITChFfbWluX2NlbnRpZGVncmVlc0ITChFfbWF4X2NlbnRpZGVncmVlc0IYChZfbWVhc3VyZWRfY2VudGlkZWdyZWVzQiAKHl9jb21mb3J0X2JhbmRfbG93X2NlbnRpZGVncmVlc0IhCh9fY29tZm9ydF9iYW5kX2hpZ2hfY2VudGlkZWdyZWVzIsMBChJDbGltYXRlRXhwbGFuYXRpb24SPAoEa2luZBgBIAEoDjIuLmt1c2ludGEuaW90LmNsaW1hdGUudjEuQ2xpbWF0ZUV4cGxhbmF0aW9uS2luZBJCCgdzdWJqZWN0GAIgASgOMjEua3VzaW50YS5pb3QuY2xpbWF0ZS52MS5DbGltYXRlRXhwbGFuYXRpb25TdWJqZWN0EisKB2VuZHNfYXQYAyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wIoMDCgtDbGltYXRlTW9kZRIyCghzcGFjZV9pZBgBIAEoCzIgLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLlNwYWNlSWQSNQoEa2luZBgCIAEoDjInLmt1c2ludGEuaW90LmNsaW1hdGUudjEuQ2xpbWF0ZU1vZGVLaW5kEiEKFHNldGJhY2tfY2VudGlkZWdyZWVzGAMgASgRSACIAQESLQoJc3RhcnRzX2F0GAQgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIrCgdlbmRzX2F0GAUgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIvCgZzZXRfYnkYBiABKAsyHy5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5Vc2VySWQSMgoJd2FybV9mcm9tGAcgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgBiAEBQhcKFV9zZXRiYWNrX2NlbnRpZGVncmVlc0IMCgpfd2FybV9mcm9tInkKD1Jvb21DbGltYXRlTGlzdBIyCgVyb29tcxgBIAMoCzIjLmt1c2ludGEuaW90LmNsaW1hdGUudjEuUm9vbUNsaW1hdGUSMgoFbW9kZXMYAiADKAsyIy5rdXNpbnRhLmlvdC5jbGltYXRlLnYxLkNsaW1hdGVNb2RlIvMCChFSb29tSGlzdG9yeVNhbXBsZRImCgJhdBgBIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASIgoVbWVhc3VyZWRfY2VudGlkZWdyZWVzGAIgASgRSACIAQESIAoTdGFyZ2V0X2NlbnRpZGVncmVlcxgDIAEoEUgBiAEBEioKHWVmZmVjdGl2ZV90YXJnZXRfY2VudGlkZWdyZWVzGAQgASgRSAKIAQESIAoTdmFsdmVfb3Blbl9wZXJtaWxsZRgFIAEoDUgDiAEBEh8KEnZhbHZlX29wZW5fc2Vjb25kcxgGIAEoDUgEiAEBQhgKFl9tZWFzdXJlZF9jZW50aWRlZ3JlZXNCFgoUX3RhcmdldF9jZW50aWRlZ3JlZXNCIAoeX2VmZmVjdGl2ZV90YXJnZXRfY2VudGlkZWdyZWVzQhYKFF92YWx2ZV9vcGVuX3Blcm1pbGxlQhUKE192YWx2ZV9vcGVuX3NlY29uZHMiqwEKC1Jvb21IaXN0b3J5EjEKB3Jvb21faWQYASABKAsyIC5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5TcGFjZUlkEi0KCWtlcHRfZnJvbRgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASOgoHc2FtcGxlcxgDIAMoCzIpLmt1c2ludGEuaW90LmNsaW1hdGUudjEuUm9vbUhpc3RvcnlTYW1wbGUi1AIKEUNsaW1hdGVQZXJpb2RNZWFuEi0KCXN0YXJ0c19hdBgBIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASKwoHZW5kc19hdBgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASIgoVbWVhc3VyZWRfY2VudGlkZWdyZWVzGAMgASgRSACIAQESIAoTdGFyZ2V0X2NlbnRpZGVncmVlcxgEIAEoEUgBiAEBEiIKGm1lYXN1cmVkX2NvdmVyYWdlX3Blcm1pbGxlGAUgASgNEiAKGHRhcmdldF9jb3ZlcmFnZV9wZXJtaWxsZRgGIAEoDRIWCg5yb29tc19tZWFzdXJlZBgHIAEoDRINCgVyb29tcxgIIAEoDUIYChZfbWVhc3VyZWRfY2VudGlkZWdyZWVzQhYKFF90YXJnZXRfY2VudGlkZWdyZWVzIr4CChdBcGFydG1lbnRDbGltYXRlU3VtbWFyeRI2CgxhcGFydG1lbnRfaWQYASABKAsyIC5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5TcGFjZUlkEjwKBnBlcmlvZBgCIAEoDjIsLmt1c2ludGEuaW90LmNsaW1hdGUudjEuQ2xpbWF0ZVN1bW1hcnlQZXJpb2QSQgoJd2VpZ2h0aW5nGAMgASgOMi8ua3VzaW50YS5pb3QuY2xpbWF0ZS52MS5DbGltYXRlU3VtbWFyeVdlaWdodGluZxItCglrZXB0X2Zyb20YBCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEjoKB3BlcmlvZHMYBSADKAsyKS5rdXNpbnRhLmlvdC5jbGltYXRlLnYxLkNsaW1hdGVQZXJpb2RNZWFuKtUCChRSb29tQ2xpbWF0ZUNvbmRpdGlvbhImCiJST09NX0NMSU1BVEVfQ09ORElUSU9OX1VOU1BFQ0lGSUVEEAASIgoeUk9PTV9DTElNQVRFX0NPTkRJVElPTl9IT0xESU5HEAESJAogUk9PTV9DTElNQVRFX0NPTkRJVElPTl9OT19UQVJHRVQQAhImCiJST09NX0NMSU1BVEVfQ09ORElUSU9OX1NFTlNPUl9MT1NUEAMSJgoiUk9PTV9DTElNQVRFX0NPTkRJVElPTl9XSU5ET1dfT1BFThAEEiUKIVJPT01fQ0xJTUFURV9DT05ESVRJT05fTk9fSEVBVElORxAFEi4KKlJPT01fQ0xJTUFURV9DT05ESVRJT05fSEVBVElOR19VTlJFQUNIQUJMRRAGEiQKIFJPT01fQ0xJTUFURV9DT05ESVRJT05fTk9fU0VOU09SEAcqhgEKDFJvb21QbGFubmluZxIdChlST09NX1BMQU5OSU5HX1VOU1BFQ0lGSUVEEAASGQoVUk9PTV9QTEFOTklOR19QTEFOTkVEEAESHQoZUk9PTV9QTEFOTklOR19OT1RfUExBTk5FRBACEh0KGVJPT01fUExBTk5JTkdfVU5BVkFJTEFCTEUQAyqABAoWQ2xpbWF0ZUV4cGxhbmF0aW9uS2luZBIoCiRDTElNQVRFX0VYUExBTkFUSU9OX0tJTkRfVU5TUEVDSUZJRUQQABIlCiFDTElNQVRFX0VYUExBTkFUSU9OX0tJTkRfUFJFX0hFQVQQARIlCiFDTElNQVRFX0VYUExBTkFUSU9OX0tJTkRfQ09BU1RJTkcQAhInCiNDTElNQVRFX0VYUExBTkFUSU9OX0tJTkRfUFJJQ0VfSElHSBADEicKI0NMSU1BVEVfRVhQTEFOQVRJT05fS0lORF9QRUFLX0dVQVJEEAQSLworQ0xJTUFURV9FWFBMQU5BVElPTl9LSU5EX0hPVF9XQVRFUl9QUklPUklUWRAFEjAKLENMSU1BVEVfRVhQTEFOQVRJT05fS0lORF9TSEFSRURfUE9XRVJfQlVER0VUEAYSMgouQ0xJTUFURV9FWFBMQU5BVElPTl9LSU5EX0RJU1RSSUNUX0hFQVRJTkdfUEVBSxAHEi8KK0NMSU1BVEVfRVhQTEFOQVRJT05fS0lORF9BVF9DT01GT1JUX0NFSUxJTkcQCBInCiNDTElNQVRFX0VYUExBTkFUSU9OX0tJTkRfTk9fUkVBRElORxAJEisKJ0NMSU1BVEVfRVhQTEFOQVRJT05fS0lORF9PVVRTSURFX1dJTkRPVxAKKvcBChlDbGltYXRlRXhwbGFuYXRpb25TdWJqZWN0EisKJ0NMSU1BVEVfRVhQTEFOQVRJT05fU1VCSkVDVF9VTlNQRUNJRklFRBAAEiQKIENMSU1BVEVfRVhQTEFOQVRJT05fU1VCSkVDVF9ST09NEAESKgomQ0xJTUFURV9FWFBMQU5BVElPTl9TVUJKRUNUX0ZMT09SX1pPTkUQAhIsCihDTElNQVRFX0VYUExBTkFUSU9OX1NVQkpFQ1RfQ09NRk9SVF9MT0FEEAMSLQopQ0xJTUFURV9FWFBMQU5BVElPTl9TVUJKRUNUX0FERF9PTl9IRUFURVIQBCpvCg9DbGltYXRlTW9kZUtpbmQSIQodQ0xJTUFURV9NT0RFX0tJTkRfVU5TUEVDSUZJRUQQABIaChZDTElNQVRFX01PREVfS0lORF9BV0FZEAESHQoZQ0xJTUFURV9NT0RFX0tJTkRfSE9MSURBWRACKqEBChRDbGltYXRlU3VtbWFyeVBlcmlvZBImCiJDTElNQVRFX1NVTU1BUllfUEVSSU9EX1VOU1BFQ0lGSUVEEAASHgoaQ0xJTUFURV9TVU1NQVJZX1BFUklPRF9EQVkQARIfChtDTElNQVRFX1NVTU1BUllfUEVSSU9EX1dFRUsQAhIgChxDTElNQVRFX1NVTU1BUllfUEVSSU9EX01PTlRIEAMqbwoXQ2xpbWF0ZVN1bW1hcnlXZWlnaHRpbmcSKQolQ0xJTUFURV9TVU1NQVJZX1dFSUdIVElOR19VTlNQRUNJRklFRBAAEikKJUNMSU1BVEVfU1VNTUFSWV9XRUlHSFRJTkdfUk9PTVNfRVFVQUwQAUICSAFiBnByb3RvMw", [file_google_protobuf_timestamp, file_kusinta_iot_identity_v1_identity]);
|
|
14
14
|
|
|
15
15
|
/**
|
|
16
16
|
* Describes the message kusinta.iot.climate.v1.TargetChange.
|
|
@@ -26,47 +26,54 @@ export const TargetChangeSchema = /*@__PURE__*/
|
|
|
26
26
|
export const RoomClimateSchema = /*@__PURE__*/
|
|
27
27
|
messageDesc(file_kusinta_iot_climate_v1_climate, 1);
|
|
28
28
|
|
|
29
|
+
/**
|
|
30
|
+
* Describes the message kusinta.iot.climate.v1.ClimateExplanation.
|
|
31
|
+
* Use `create(ClimateExplanationSchema)` to create a new message.
|
|
32
|
+
*/
|
|
33
|
+
export const ClimateExplanationSchema = /*@__PURE__*/
|
|
34
|
+
messageDesc(file_kusinta_iot_climate_v1_climate, 2);
|
|
35
|
+
|
|
29
36
|
/**
|
|
30
37
|
* Describes the message kusinta.iot.climate.v1.ClimateMode.
|
|
31
38
|
* Use `create(ClimateModeSchema)` to create a new message.
|
|
32
39
|
*/
|
|
33
40
|
export const ClimateModeSchema = /*@__PURE__*/
|
|
34
|
-
messageDesc(file_kusinta_iot_climate_v1_climate,
|
|
41
|
+
messageDesc(file_kusinta_iot_climate_v1_climate, 3);
|
|
35
42
|
|
|
36
43
|
/**
|
|
37
44
|
* Describes the message kusinta.iot.climate.v1.RoomClimateList.
|
|
38
45
|
* Use `create(RoomClimateListSchema)` to create a new message.
|
|
39
46
|
*/
|
|
40
47
|
export const RoomClimateListSchema = /*@__PURE__*/
|
|
41
|
-
messageDesc(file_kusinta_iot_climate_v1_climate,
|
|
48
|
+
messageDesc(file_kusinta_iot_climate_v1_climate, 4);
|
|
42
49
|
|
|
43
50
|
/**
|
|
44
51
|
* Describes the message kusinta.iot.climate.v1.RoomHistorySample.
|
|
45
52
|
* Use `create(RoomHistorySampleSchema)` to create a new message.
|
|
46
53
|
*/
|
|
47
54
|
export const RoomHistorySampleSchema = /*@__PURE__*/
|
|
48
|
-
messageDesc(file_kusinta_iot_climate_v1_climate,
|
|
55
|
+
messageDesc(file_kusinta_iot_climate_v1_climate, 5);
|
|
49
56
|
|
|
50
57
|
/**
|
|
51
58
|
* Describes the message kusinta.iot.climate.v1.RoomHistory.
|
|
52
59
|
* Use `create(RoomHistorySchema)` to create a new message.
|
|
53
60
|
*/
|
|
54
61
|
export const RoomHistorySchema = /*@__PURE__*/
|
|
55
|
-
messageDesc(file_kusinta_iot_climate_v1_climate,
|
|
62
|
+
messageDesc(file_kusinta_iot_climate_v1_climate, 6);
|
|
56
63
|
|
|
57
64
|
/**
|
|
58
65
|
* Describes the message kusinta.iot.climate.v1.ClimatePeriodMean.
|
|
59
66
|
* Use `create(ClimatePeriodMeanSchema)` to create a new message.
|
|
60
67
|
*/
|
|
61
68
|
export const ClimatePeriodMeanSchema = /*@__PURE__*/
|
|
62
|
-
messageDesc(file_kusinta_iot_climate_v1_climate,
|
|
69
|
+
messageDesc(file_kusinta_iot_climate_v1_climate, 7);
|
|
63
70
|
|
|
64
71
|
/**
|
|
65
72
|
* Describes the message kusinta.iot.climate.v1.ApartmentClimateSummary.
|
|
66
73
|
* Use `create(ApartmentClimateSummarySchema)` to create a new message.
|
|
67
74
|
*/
|
|
68
75
|
export const ApartmentClimateSummarySchema = /*@__PURE__*/
|
|
69
|
-
messageDesc(file_kusinta_iot_climate_v1_climate,
|
|
76
|
+
messageDesc(file_kusinta_iot_climate_v1_climate, 8);
|
|
70
77
|
|
|
71
78
|
/**
|
|
72
79
|
* Describes the enum kusinta.iot.climate.v1.RoomClimateCondition.
|
|
@@ -87,11 +94,68 @@ export const RoomClimateConditionSchema = /*@__PURE__*/
|
|
|
87
94
|
export const RoomClimateCondition = /*@__PURE__*/
|
|
88
95
|
tsEnum(RoomClimateConditionSchema);
|
|
89
96
|
|
|
97
|
+
/**
|
|
98
|
+
* Describes the enum kusinta.iot.climate.v1.RoomPlanning.
|
|
99
|
+
*/
|
|
100
|
+
export const RoomPlanningSchema = /*@__PURE__*/
|
|
101
|
+
enumDesc(file_kusinta_iot_climate_v1_climate, 1);
|
|
102
|
+
|
|
103
|
+
/**
|
|
104
|
+
* Whether a plan steers a room: one that looks ahead at prices, weather and the heat
|
|
105
|
+
* source and moves the room within its comfort band. A standing state of the room, not a
|
|
106
|
+
* reason, so it is a field of its own rather than an explanation.
|
|
107
|
+
*
|
|
108
|
+
* @generated from enum kusinta.iot.climate.v1.RoomPlanning
|
|
109
|
+
*/
|
|
110
|
+
export const RoomPlanning = /*@__PURE__*/
|
|
111
|
+
tsEnum(RoomPlanningSchema);
|
|
112
|
+
|
|
113
|
+
/**
|
|
114
|
+
* Describes the enum kusinta.iot.climate.v1.ClimateExplanationKind.
|
|
115
|
+
*/
|
|
116
|
+
export const ClimateExplanationKindSchema = /*@__PURE__*/
|
|
117
|
+
enumDesc(file_kusinta_iot_climate_v1_climate, 2);
|
|
118
|
+
|
|
119
|
+
/**
|
|
120
|
+
* What held a room, or a part of its heating, where it is. A closed list of causes: the
|
|
121
|
+
* gateway sends a kind, never a sentence, and the app names each kind in its user's
|
|
122
|
+
* language. What the cause acts on is ClimateExplanation.subject, and each kind lists the
|
|
123
|
+
* subjects it may carry. A pair a kind does not list is shown as nothing, so a pair added
|
|
124
|
+
* later reaches an older app as nothing rather than as a guess.
|
|
125
|
+
*
|
|
126
|
+
* No kind identifies another household or anything about one, its activity included.
|
|
127
|
+
* Where a limit is shared — a building's power, a shared heat source — the explanation
|
|
128
|
+
* says that this room was limited, never by whom or because of whom. A kind that a source
|
|
129
|
+
* or limit shared with other homes drives — HOT_WATER_PRIORITY on a shared heat source,
|
|
130
|
+
* SHARED_POWER_BUDGET, DISTRICT_HEATING_PEAK on a shared connection — is sent only where at
|
|
131
|
+
* least three homes share that source or limit, in rooms in homes and outside them alike.
|
|
132
|
+
* Below that, its onset and end would track another home's use as it happens, and the
|
|
133
|
+
* room carries no explanation for it.
|
|
134
|
+
*
|
|
135
|
+
* @generated from enum kusinta.iot.climate.v1.ClimateExplanationKind
|
|
136
|
+
*/
|
|
137
|
+
export const ClimateExplanationKind = /*@__PURE__*/
|
|
138
|
+
tsEnum(ClimateExplanationKindSchema);
|
|
139
|
+
|
|
140
|
+
/**
|
|
141
|
+
* Describes the enum kusinta.iot.climate.v1.ClimateExplanationSubject.
|
|
142
|
+
*/
|
|
143
|
+
export const ClimateExplanationSubjectSchema = /*@__PURE__*/
|
|
144
|
+
enumDesc(file_kusinta_iot_climate_v1_climate, 3);
|
|
145
|
+
|
|
146
|
+
/**
|
|
147
|
+
* What a cause acts on.
|
|
148
|
+
*
|
|
149
|
+
* @generated from enum kusinta.iot.climate.v1.ClimateExplanationSubject
|
|
150
|
+
*/
|
|
151
|
+
export const ClimateExplanationSubject = /*@__PURE__*/
|
|
152
|
+
tsEnum(ClimateExplanationSubjectSchema);
|
|
153
|
+
|
|
90
154
|
/**
|
|
91
155
|
* Describes the enum kusinta.iot.climate.v1.ClimateModeKind.
|
|
92
156
|
*/
|
|
93
157
|
export const ClimateModeKindSchema = /*@__PURE__*/
|
|
94
|
-
enumDesc(file_kusinta_iot_climate_v1_climate,
|
|
158
|
+
enumDesc(file_kusinta_iot_climate_v1_climate, 4);
|
|
95
159
|
|
|
96
160
|
/**
|
|
97
161
|
* A setback that applies to every room in a space while it is on.
|
|
@@ -105,7 +169,7 @@ export const ClimateModeKind = /*@__PURE__*/
|
|
|
105
169
|
* Describes the enum kusinta.iot.climate.v1.ClimateSummaryPeriod.
|
|
106
170
|
*/
|
|
107
171
|
export const ClimateSummaryPeriodSchema = /*@__PURE__*/
|
|
108
|
-
enumDesc(file_kusinta_iot_climate_v1_climate,
|
|
172
|
+
enumDesc(file_kusinta_iot_climate_v1_climate, 5);
|
|
109
173
|
|
|
110
174
|
/**
|
|
111
175
|
* The length of the periods an ApartmentClimateSummary is given in. Each period runs from
|
|
@@ -130,7 +194,7 @@ export const ClimateSummaryPeriod = /*@__PURE__*/
|
|
|
130
194
|
* Describes the enum kusinta.iot.climate.v1.ClimateSummaryWeighting.
|
|
131
195
|
*/
|
|
132
196
|
export const ClimateSummaryWeightingSchema = /*@__PURE__*/
|
|
133
|
-
enumDesc(file_kusinta_iot_climate_v1_climate,
|
|
197
|
+
enumDesc(file_kusinta_iot_climate_v1_climate, 6);
|
|
134
198
|
|
|
135
199
|
/**
|
|
136
200
|
* How an apartment's mean is formed from its rooms' means.
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
// @generated from file kusinta/iot/device/v1/cluster_state.proto (package kusinta.iot.device.v1, syntax proto3)
|
|
3
3
|
/* eslint-disable */
|
|
4
4
|
|
|
5
|
-
import type { GenFile, GenMessage } from "@bufbuild/protobuf/codegenv2";
|
|
5
|
+
import type { GenEnum, GenFile, GenMessage } from "@bufbuild/protobuf/codegenv2";
|
|
6
6
|
import type { Message } from "@bufbuild/protobuf";
|
|
7
7
|
|
|
8
8
|
/**
|
|
@@ -272,6 +272,21 @@ export declare type ClusterState = Message<"kusinta.iot.device.v1.ClusterState">
|
|
|
272
272
|
* @generated from field: map<uint32, uint32> attribute_steps = 7;
|
|
273
273
|
*/
|
|
274
274
|
attributeSteps: { [key: number]: number };
|
|
275
|
+
|
|
276
|
+
/**
|
|
277
|
+
* What a write to each attribute leaves behind, and how late its reports arrive, keyed by
|
|
278
|
+
* attribute id. See AttributeBehaviour. Its step stays in attribute_steps.
|
|
279
|
+
*
|
|
280
|
+
* Per endpoint because a ClusterState belongs to one endpoint: a device with several
|
|
281
|
+
* independently switched outputs states each output's behaviour on that output's
|
|
282
|
+
* endpoint. A vendor parameter, which has no cluster, states its behaviour in
|
|
283
|
+
* Endpoint.vendor_attribute_behaviours.
|
|
284
|
+
*
|
|
285
|
+
* Stated by the producer at announcement. An absent key is "not stated".
|
|
286
|
+
*
|
|
287
|
+
* @generated from field: map<uint32, kusinta.iot.device.v1.AttributeBehaviour> attribute_behaviours = 8;
|
|
288
|
+
*/
|
|
289
|
+
attributeBehaviours: { [key: number]: AttributeBehaviour };
|
|
275
290
|
};
|
|
276
291
|
|
|
277
292
|
/**
|
|
@@ -280,3 +295,181 @@ export declare type ClusterState = Message<"kusinta.iot.device.v1.ClusterState">
|
|
|
280
295
|
*/
|
|
281
296
|
export declare const ClusterStateSchema: GenMessage<ClusterState>;
|
|
282
297
|
|
|
298
|
+
/**
|
|
299
|
+
* What a write to one attribute leaves behind, and how late its reports arrive. Stated per
|
|
300
|
+
* attribute, per endpoint, by the producer that knows the device.
|
|
301
|
+
*
|
|
302
|
+
* A consumer that leaves a written value in place while it is gone — a gateway steering
|
|
303
|
+
* heat — needs to know what the device does on its own. Not stated is read as the worst
|
|
304
|
+
* case: a write whose kind is not stated is held as if sticky, and a reading whose latency
|
|
305
|
+
* is not stated is never treated as real-time.
|
|
306
|
+
*
|
|
307
|
+
* A gateway MUST NOT drive a heat source, a heating circuit or a floor zone through an
|
|
308
|
+
* attribute whose write kind is not stated here: it refuses the write. This is the
|
|
309
|
+
* opposite default to attribute_ids or a connector's known_links, where not stated only
|
|
310
|
+
* means not known; for an output that heats a home, not stated means no. Rollout order: a
|
|
311
|
+
* producer that carries such outputs states their behaviour before a gateway that drives
|
|
312
|
+
* them takes the release that enforces this.
|
|
313
|
+
*
|
|
314
|
+
* @generated from message kusinta.iot.device.v1.AttributeBehaviour
|
|
315
|
+
*/
|
|
316
|
+
export declare type AttributeBehaviour = Message<"kusinta.iot.device.v1.AttributeBehaviour"> & {
|
|
317
|
+
/**
|
|
318
|
+
* What a write leaves behind when its writer goes quiet. Unset: not stated.
|
|
319
|
+
*
|
|
320
|
+
* @generated from oneof kusinta.iot.device.v1.AttributeBehaviour.write
|
|
321
|
+
*/
|
|
322
|
+
write: {
|
|
323
|
+
/**
|
|
324
|
+
* @generated from field: kusinta.iot.device.v1.StickyWrite sticky = 1;
|
|
325
|
+
*/
|
|
326
|
+
value: StickyWrite;
|
|
327
|
+
case: "sticky";
|
|
328
|
+
} | {
|
|
329
|
+
/**
|
|
330
|
+
* @generated from field: kusinta.iot.device.v1.LeasedWrite leased = 2;
|
|
331
|
+
*/
|
|
332
|
+
value: LeasedWrite;
|
|
333
|
+
case: "leased";
|
|
334
|
+
} | { case: undefined; value?: undefined };
|
|
335
|
+
|
|
336
|
+
/**
|
|
337
|
+
* The value the attribute takes when the device's power returns. Stated only for an
|
|
338
|
+
* attribute whose cluster has no startup attribute of its own: where the cluster has one
|
|
339
|
+
* (OnOff's StartUpOnOff, Level Control's StartUpCurrentLevel), that attribute says it and
|
|
340
|
+
* this stays unset, so the value lives in one place. Unset: not stated.
|
|
341
|
+
*
|
|
342
|
+
* @generated from field: kusinta.iot.device.v1.AttributeValue power_on_value = 3;
|
|
343
|
+
*/
|
|
344
|
+
powerOnValue?: AttributeValue | undefined;
|
|
345
|
+
|
|
346
|
+
/**
|
|
347
|
+
* How late a reported value reaches the producer. Unset: not stated, never REAL_TIME.
|
|
348
|
+
*
|
|
349
|
+
* @generated from field: kusinta.iot.device.v1.ReadLatency read_latency = 4;
|
|
350
|
+
*/
|
|
351
|
+
readLatency: ReadLatency;
|
|
352
|
+
};
|
|
353
|
+
|
|
354
|
+
/**
|
|
355
|
+
* Describes the message kusinta.iot.device.v1.AttributeBehaviour.
|
|
356
|
+
* Use `create(AttributeBehaviourSchema)` to create a new message.
|
|
357
|
+
*/
|
|
358
|
+
export declare const AttributeBehaviourSchema: GenMessage<AttributeBehaviour>;
|
|
359
|
+
|
|
360
|
+
/**
|
|
361
|
+
* The device holds a written value until something writes it again: through the writer's
|
|
362
|
+
* absence and a lost network. A writer that may go quiet writes a value it can live with
|
|
363
|
+
* being left in place.
|
|
364
|
+
*
|
|
365
|
+
* @generated from message kusinta.iot.device.v1.StickyWrite
|
|
366
|
+
*/
|
|
367
|
+
export declare type StickyWrite = Message<"kusinta.iot.device.v1.StickyWrite"> & {
|
|
368
|
+
};
|
|
369
|
+
|
|
370
|
+
/**
|
|
371
|
+
* Describes the message kusinta.iot.device.v1.StickyWrite.
|
|
372
|
+
* Use `create(StickyWriteSchema)` to create a new message.
|
|
373
|
+
*/
|
|
374
|
+
export declare const StickyWriteSchema: GenMessage<StickyWrite>;
|
|
375
|
+
|
|
376
|
+
/**
|
|
377
|
+
* The device itself returns the attribute to lapse_value when a write's lease runs out,
|
|
378
|
+
* whether or not anything is still talking to it. The lease is kept by the device — a
|
|
379
|
+
* timer, or a watchdog on the device's own link — never by the writer re-sending: a value
|
|
380
|
+
* that lapses only because its writer keeps renewing it is sticky to anyone who has to
|
|
381
|
+
* plan for the writer failing.
|
|
382
|
+
*
|
|
383
|
+
* @generated from message kusinta.iot.device.v1.LeasedWrite
|
|
384
|
+
*/
|
|
385
|
+
export declare type LeasedWrite = Message<"kusinta.iot.device.v1.LeasedWrite"> & {
|
|
386
|
+
/**
|
|
387
|
+
* The shortest and longest lease, in seconds, the device accepts. Absent: no bound on
|
|
388
|
+
* that side, never zero. A lease outside them is refused rather than clamped. Where the
|
|
389
|
+
* device fixes the length itself — a boost time set as a device parameter — the producer
|
|
390
|
+
* states that length as both bounds, so it never accepts a lease it cannot keep.
|
|
391
|
+
*
|
|
392
|
+
* @generated from field: optional uint32 min_lease_seconds = 1;
|
|
393
|
+
*/
|
|
394
|
+
minLeaseSeconds?: number | undefined;
|
|
395
|
+
|
|
396
|
+
/**
|
|
397
|
+
* @generated from field: optional uint32 max_lease_seconds = 2;
|
|
398
|
+
*/
|
|
399
|
+
maxLeaseSeconds?: number | undefined;
|
|
400
|
+
|
|
401
|
+
/**
|
|
402
|
+
* Whether a write that arrives before the lease runs out starts the lease again from
|
|
403
|
+
* that write. False or unset (not stated): a writer MUST NOT assume that writing the
|
|
404
|
+
* same value again extends how long it holds.
|
|
405
|
+
*
|
|
406
|
+
* @generated from field: optional bool renewal_restarts_lease = 3;
|
|
407
|
+
*/
|
|
408
|
+
renewalRestartsLease?: boolean | undefined;
|
|
409
|
+
|
|
410
|
+
/**
|
|
411
|
+
* The value the attribute returns to when the lease runs out. It is the state a site
|
|
412
|
+
* falls back to whenever its writer is gone, so it is what an installer checks first and
|
|
413
|
+
* what a consumer shows as "what happens if this stops". A producer always states it; a
|
|
414
|
+
* consumer reads a lease without it as a write kind not stated.
|
|
415
|
+
*
|
|
416
|
+
* A fixed value. A device whose timer returns the output to whatever it held before the
|
|
417
|
+
* write is leased only if its producer guarantees that earlier value is the lapse value
|
|
418
|
+
* — by accepting timed writes only while the output is at its lapse value, or by
|
|
419
|
+
* writing the lapse value untimed before each one — and is otherwise stated sticky.
|
|
420
|
+
*
|
|
421
|
+
* A write of the lapse value itself needs no lease: it ends any lease running, and a
|
|
422
|
+
* lease carried on it is ignored rather than refused. That is how a writer ends a lease
|
|
423
|
+
* early.
|
|
424
|
+
*
|
|
425
|
+
* A report of the lapse value after a lease has run out is the lease ending, not a
|
|
426
|
+
* change from outside: a consumer that adopts values it did not write — a turned dial —
|
|
427
|
+
* MUST NOT adopt that one as a person's.
|
|
428
|
+
*
|
|
429
|
+
* @generated from field: kusinta.iot.device.v1.AttributeValue lapse_value = 4;
|
|
430
|
+
*/
|
|
431
|
+
lapseValue?: AttributeValue | undefined;
|
|
432
|
+
};
|
|
433
|
+
|
|
434
|
+
/**
|
|
435
|
+
* Describes the message kusinta.iot.device.v1.LeasedWrite.
|
|
436
|
+
* Use `create(LeasedWriteSchema)` to create a new message.
|
|
437
|
+
*/
|
|
438
|
+
export declare const LeasedWriteSchema: GenMessage<LeasedWrite>;
|
|
439
|
+
|
|
440
|
+
/**
|
|
441
|
+
* How late a reported value reaches the producer after it changes at the device.
|
|
442
|
+
*
|
|
443
|
+
* @generated from enum kusinta.iot.device.v1.ReadLatency
|
|
444
|
+
*/
|
|
445
|
+
export enum ReadLatency {
|
|
446
|
+
/**
|
|
447
|
+
* Not stated. Never treated as REAL_TIME.
|
|
448
|
+
*
|
|
449
|
+
* @generated from enum value: READ_LATENCY_UNSPECIFIED = 0;
|
|
450
|
+
*/
|
|
451
|
+
UNSPECIFIED = 0,
|
|
452
|
+
|
|
453
|
+
/**
|
|
454
|
+
* Within a few minutes of the change, every time. A value relayed through a vendor's
|
|
455
|
+
* service is not stated REAL_TIME unless that has been measured.
|
|
456
|
+
*
|
|
457
|
+
* @generated from enum value: READ_LATENCY_REAL_TIME = 1;
|
|
458
|
+
*/
|
|
459
|
+
REAL_TIME = 1,
|
|
460
|
+
|
|
461
|
+
/**
|
|
462
|
+
* Late enough that acting on it as current would be wrong: values collected by a
|
|
463
|
+
* vendor's service and handed on in batches, hourly values made available the next day.
|
|
464
|
+
* Fit for records, models and reports; not for a decision that has to be made now.
|
|
465
|
+
*
|
|
466
|
+
* @generated from enum value: READ_LATENCY_DELAYED = 2;
|
|
467
|
+
*/
|
|
468
|
+
DELAYED = 2,
|
|
469
|
+
}
|
|
470
|
+
|
|
471
|
+
/**
|
|
472
|
+
* Describes the enum kusinta.iot.device.v1.ReadLatency.
|
|
473
|
+
*/
|
|
474
|
+
export declare const ReadLatencySchema: GenEnum<ReadLatency>;
|
|
475
|
+
|
|
@@ -2,13 +2,13 @@
|
|
|
2
2
|
// @generated from file kusinta/iot/device/v1/cluster_state.proto (package kusinta.iot.device.v1, syntax proto3)
|
|
3
3
|
/* eslint-disable */
|
|
4
4
|
|
|
5
|
-
import { fileDesc, messageDesc } from "@bufbuild/protobuf/codegenv2";
|
|
5
|
+
import { enumDesc, fileDesc, messageDesc, tsEnum } from "@bufbuild/protobuf/codegenv2";
|
|
6
6
|
|
|
7
7
|
/**
|
|
8
8
|
* Describes the file kusinta/iot/device/v1/cluster_state.proto.
|
|
9
9
|
*/
|
|
10
10
|
export const file_kusinta_iot_device_v1_cluster_state = /*@__PURE__*/
|
|
11
|
-
fileDesc("
|
|
11
|
+
fileDesc("CilrdXNpbnRhL2lvdC9kZXZpY2UvdjEvY2x1c3Rlcl9zdGF0ZS5wcm90bxIVa3VzaW50YS5pb3QuZGV2aWNlLnYxIgsKCU51bGxWYWx1ZSLfAgoOQXR0cmlidXRlVmFsdWUSFAoKYm9vbF92YWx1ZRgBIAEoCEgAEhMKCWludF92YWx1ZRgCIAEoEkgAEhQKCnVpbnRfdmFsdWUYAyABKARIABIWCgxkb3VibGVfdmFsdWUYBCABKAFIABIWCgxzdHJpbmdfdmFsdWUYBSABKAlIABIVCgtieXRlc192YWx1ZRgGIAEoDEgAEj8KCmxpc3RfdmFsdWUYByABKAsyKS5rdXNpbnRhLmlvdC5kZXZpY2UudjEuQXR0cmlidXRlVmFsdWVMaXN0SAASQwoMc3RydWN0X3ZhbHVlGAggASgLMisua3VzaW50YS5pb3QuZGV2aWNlLnYxLkF0dHJpYnV0ZVZhbHVlU3RydWN0SAASNgoKbnVsbF92YWx1ZRgJIAEoCzIgLmt1c2ludGEuaW90LmRldmljZS52MS5OdWxsVmFsdWVIAEIHCgV2YWx1ZSJLChJBdHRyaWJ1dGVWYWx1ZUxpc3QSNQoGdmFsdWVzGAEgAygLMiUua3VzaW50YS5pb3QuZGV2aWNlLnYxLkF0dHJpYnV0ZVZhbHVlIrUBChRBdHRyaWJ1dGVWYWx1ZVN0cnVjdBJHCgZmaWVsZHMYASADKAsyNy5rdXNpbnRhLmlvdC5kZXZpY2UudjEuQXR0cmlidXRlVmFsdWVTdHJ1Y3QuRmllbGRzRW50cnkaVAoLRmllbGRzRW50cnkSCwoDa2V5GAEgASgNEjQKBXZhbHVlGAIgASgLMiUua3VzaW50YS5pb3QuZGV2aWNlLnYxLkF0dHJpYnV0ZVZhbHVlOgI4ASJcCg5BdHRyaWJ1dGVTdGF0ZRIUCgxhdHRyaWJ1dGVfaWQYASABKA0SNAoFdmFsdWUYAiABKAsyJS5rdXNpbnRhLmlvdC5kZXZpY2UudjEuQXR0cmlidXRlVmFsdWUivAQKDENsdXN0ZXJTdGF0ZRISCgpjbHVzdGVyX2lkGAEgASgNEh0KEGNsdXN0ZXJfcmV2aXNpb24YAiABKA1IAIgBARIYCgtmZWF0dXJlX21hcBgDIAEoDUgBiAEBEjkKCmF0dHJpYnV0ZXMYBCADKAsyJS5rdXNpbnRhLmlvdC5kZXZpY2UudjEuQXR0cmlidXRlU3RhdGUSHAoUYWNjZXB0ZWRfY29tbWFuZF9pZHMYBSADKA0SFQoNYXR0cmlidXRlX2lkcxgGIAMoDRJQCg9hdHRyaWJ1dGVfc3RlcHMYByADKAsyNy5rdXNpbnRhLmlvdC5kZXZpY2UudjEuQ2x1c3RlclN0YXRlLkF0dHJpYnV0ZVN0ZXBzRW50cnkSWgoUYXR0cmlidXRlX2JlaGF2aW91cnMYCCADKAsyPC5rdXNpbnRhLmlvdC5kZXZpY2UudjEuQ2x1c3RlclN0YXRlLkF0dHJpYnV0ZUJlaGF2aW91cnNFbnRyeRo1ChNBdHRyaWJ1dGVTdGVwc0VudHJ5EgsKA2tleRgBIAEoDRINCgV2YWx1ZRgCIAEoDToCOAEaZQoYQXR0cmlidXRlQmVoYXZpb3Vyc0VudHJ5EgsKA2tleRgBIAEoDRI4CgV2YWx1ZRgCIAEoCzIpLmt1c2ludGEuaW90LmRldmljZS52MS5BdHRyaWJ1dGVCZWhhdmlvdXI6AjgBQhMKEV9jbHVzdGVyX3JldmlzaW9uQg4KDF9mZWF0dXJlX21hcCKCAgoSQXR0cmlidXRlQmVoYXZpb3VyEjQKBnN0aWNreRgBIAEoCzIiLmt1c2ludGEuaW90LmRldmljZS52MS5TdGlja3lXcml0ZUgAEjQKBmxlYXNlZBgCIAEoCzIiLmt1c2ludGEuaW90LmRldmljZS52MS5MZWFzZWRXcml0ZUgAEj0KDnBvd2VyX29uX3ZhbHVlGAMgASgLMiUua3VzaW50YS5pb3QuZGV2aWNlLnYxLkF0dHJpYnV0ZVZhbHVlEjgKDHJlYWRfbGF0ZW5jeRgEIAEoDjIiLmt1c2ludGEuaW90LmRldmljZS52MS5SZWFkTGF0ZW5jeUIHCgV3cml0ZSINCgtTdGlja3lXcml0ZSL1AQoLTGVhc2VkV3JpdGUSHgoRbWluX2xlYXNlX3NlY29uZHMYASABKA1IAIgBARIeChFtYXhfbGVhc2Vfc2Vjb25kcxgCIAEoDUgBiAEBEiMKFnJlbmV3YWxfcmVzdGFydHNfbGVhc2UYAyABKAhIAogBARI6CgtsYXBzZV92YWx1ZRgEIAEoCzIlLmt1c2ludGEuaW90LmRldmljZS52MS5BdHRyaWJ1dGVWYWx1ZUIUChJfbWluX2xlYXNlX3NlY29uZHNCFAoSX21heF9sZWFzZV9zZWNvbmRzQhkKF19yZW5ld2FsX3Jlc3RhcnRzX2xlYXNlKmEKC1JlYWRMYXRlbmN5EhwKGFJFQURfTEFURU5DWV9VTlNQRUNJRklFRBAAEhoKFlJFQURfTEFURU5DWV9SRUFMX1RJTUUQARIYChRSRUFEX0xBVEVOQ1lfREVMQVlFRBACQgJIAWIGcHJvdG8z");
|
|
12
12
|
|
|
13
13
|
/**
|
|
14
14
|
* Describes the message kusinta.iot.device.v1.NullValue.
|
|
@@ -52,3 +52,38 @@ export const AttributeStateSchema = /*@__PURE__*/
|
|
|
52
52
|
export const ClusterStateSchema = /*@__PURE__*/
|
|
53
53
|
messageDesc(file_kusinta_iot_device_v1_cluster_state, 5);
|
|
54
54
|
|
|
55
|
+
/**
|
|
56
|
+
* Describes the message kusinta.iot.device.v1.AttributeBehaviour.
|
|
57
|
+
* Use `create(AttributeBehaviourSchema)` to create a new message.
|
|
58
|
+
*/
|
|
59
|
+
export const AttributeBehaviourSchema = /*@__PURE__*/
|
|
60
|
+
messageDesc(file_kusinta_iot_device_v1_cluster_state, 6);
|
|
61
|
+
|
|
62
|
+
/**
|
|
63
|
+
* Describes the message kusinta.iot.device.v1.StickyWrite.
|
|
64
|
+
* Use `create(StickyWriteSchema)` to create a new message.
|
|
65
|
+
*/
|
|
66
|
+
export const StickyWriteSchema = /*@__PURE__*/
|
|
67
|
+
messageDesc(file_kusinta_iot_device_v1_cluster_state, 7);
|
|
68
|
+
|
|
69
|
+
/**
|
|
70
|
+
* Describes the message kusinta.iot.device.v1.LeasedWrite.
|
|
71
|
+
* Use `create(LeasedWriteSchema)` to create a new message.
|
|
72
|
+
*/
|
|
73
|
+
export const LeasedWriteSchema = /*@__PURE__*/
|
|
74
|
+
messageDesc(file_kusinta_iot_device_v1_cluster_state, 8);
|
|
75
|
+
|
|
76
|
+
/**
|
|
77
|
+
* Describes the enum kusinta.iot.device.v1.ReadLatency.
|
|
78
|
+
*/
|
|
79
|
+
export const ReadLatencySchema = /*@__PURE__*/
|
|
80
|
+
enumDesc(file_kusinta_iot_device_v1_cluster_state, 0);
|
|
81
|
+
|
|
82
|
+
/**
|
|
83
|
+
* How late a reported value reaches the producer after it changes at the device.
|
|
84
|
+
*
|
|
85
|
+
* @generated from enum kusinta.iot.device.v1.ReadLatency
|
|
86
|
+
*/
|
|
87
|
+
export const ReadLatency = /*@__PURE__*/
|
|
88
|
+
tsEnum(ReadLatencySchema);
|
|
89
|
+
|
|
@@ -6,7 +6,7 @@ import type { GenEnum, GenFile, GenMessage } from "@bufbuild/protobuf/codegenv2"
|
|
|
6
6
|
import type { Message } from "@bufbuild/protobuf";
|
|
7
7
|
import type { ColorTemperatureLightProperties, ContactSensorProperties, DimmableLightProperties, DoorLockProperties, EnergySensorProperties, HumiditySensorProperties, OccupancySensorProperties, OnOffLightProperties, PowerSourceProperties, PressureSensorProperties, TemperatureSensorProperties, ThermostatProperties, WindowCoveringProperties } from "./properties_pb.js";
|
|
8
8
|
import type { HmMaintenanceProps, HmThermostatProps } from "../../vendor/homematic/v1/homematic_pb.js";
|
|
9
|
-
import type { ClusterState } from "./cluster_state_pb.js";
|
|
9
|
+
import type { AttributeBehaviour, ClusterState } from "./cluster_state_pb.js";
|
|
10
10
|
import type { DeviceDescriptor } from "./descriptor_pb.js";
|
|
11
11
|
import type { Timestamp } from "@bufbuild/protobuf/wkt";
|
|
12
12
|
|
|
@@ -230,6 +230,18 @@ export declare type Endpoint = Message<"kusinta.iot.device.v1.Endpoint"> & {
|
|
|
230
230
|
* @generated from field: repeated string vendor_attribute_names = 17;
|
|
231
231
|
*/
|
|
232
232
|
vendorAttributeNames: string[];
|
|
233
|
+
|
|
234
|
+
/**
|
|
235
|
+
* What a write to each vendor parameter leaves behind, and how late its reports arrive,
|
|
236
|
+
* keyed by the parameter's vendor name as vendor_attribute_names spells it. The vendor
|
|
237
|
+
* mirror of ClusterState.attribute_behaviours, with the same rules: an absent key is
|
|
238
|
+
* "not stated", and not stated is read as the worst case. For a parameter reached through
|
|
239
|
+
* a vendor's service, the name is the vendor's stable parameter id where it has one,
|
|
240
|
+
* never a display name that is translated or renamed between firmware versions.
|
|
241
|
+
*
|
|
242
|
+
* @generated from field: map<string, kusinta.iot.device.v1.AttributeBehaviour> vendor_attribute_behaviours = 18;
|
|
243
|
+
*/
|
|
244
|
+
vendorAttributeBehaviours: { [key: string]: AttributeBehaviour };
|
|
233
245
|
};
|
|
234
246
|
|
|
235
247
|
/**
|
|
@@ -261,12 +273,37 @@ export declare type Device = Message<"kusinta.iot.device.v1.Device"> & {
|
|
|
261
273
|
descriptor?: DeviceDescriptor | undefined;
|
|
262
274
|
|
|
263
275
|
/**
|
|
264
|
-
*
|
|
276
|
+
* 17-19 are free; 20+ is the timestamp band.
|
|
265
277
|
*
|
|
266
278
|
* @generated from field: repeated kusinta.iot.device.v1.Endpoint endpoints = 14;
|
|
267
279
|
*/
|
|
268
280
|
endpoints: Endpoint[];
|
|
269
281
|
|
|
282
|
+
/**
|
|
283
|
+
* The fewest seconds this device needs between two writes, to any of its attributes on
|
|
284
|
+
* any endpoint, without dropping one: a radio limited to a share of airtime, a battery
|
|
285
|
+
* device that wakes on a schedule. A device-wide budget rather than a per-attribute one,
|
|
286
|
+
* because two attributes each written at their own pace still share one radio. Stated by
|
|
287
|
+
* the producer at announcement. Absent: not stated, never zero.
|
|
288
|
+
*
|
|
289
|
+
* A lower bound, not the whole budget: devices behind one radio gateway or one hub share
|
|
290
|
+
* its airtime, and a vendor's service limits an account rather than a device, so a writer
|
|
291
|
+
* may have to space writes further apart than this says.
|
|
292
|
+
*
|
|
293
|
+
* @generated from field: optional uint32 min_write_interval_seconds = 15;
|
|
294
|
+
*/
|
|
295
|
+
minWriteIntervalSeconds?: number | undefined;
|
|
296
|
+
|
|
297
|
+
/**
|
|
298
|
+
* The longest a write can take to reach the device: a device that listens only after
|
|
299
|
+
* its own report takes a write at its next one. Stated by the producer at announcement.
|
|
300
|
+
* Absent: not stated, never zero. A writer that renews a lease renews it this long, plus
|
|
301
|
+
* a margin, before the lease runs out, or the output lapses between renewals.
|
|
302
|
+
*
|
|
303
|
+
* @generated from field: optional uint32 max_write_delay_seconds = 16;
|
|
304
|
+
*/
|
|
305
|
+
maxWriteDelaySeconds?: number | undefined;
|
|
306
|
+
|
|
270
307
|
/**
|
|
271
308
|
* When the gateway last had evidence this device itself — the
|
|
272
309
|
* most recent PropertyUpdate (wheter or not the property changed) or command
|
|
@@ -14,7 +14,7 @@ import { file_kusinta_iot_vendor_v1_vendor_options } from "../../vendor/v1/vendo
|
|
|
14
14
|
* Describes the file kusinta/iot/device/v1/device.proto.
|
|
15
15
|
*/
|
|
16
16
|
export const file_kusinta_iot_device_v1_device = /*@__PURE__*/
|
|
17
|
-
fileDesc("
|
|
17
|
+
fileDesc("CiJrdXNpbnRhL2lvdC9kZXZpY2UvdjEvZGV2aWNlLnByb3RvEhVrdXNpbnRhLmlvdC5kZXZpY2UudjEipQwKCEVuZHBvaW50EhMKC2VuZHBvaW50X2lkGAEgASgNEh0KFW1hdHRlcl9kZXZpY2VfdHlwZV9pZBgCIAEoDRJBCgp0aGVybW9zdGF0GAMgASgLMisua3VzaW50YS5pb3QuZGV2aWNlLnYxLlRoZXJtb3N0YXRQcm9wZXJ0aWVzSAASUAoSdGVtcGVyYXR1cmVfc2Vuc29yGAQgASgLMjIua3VzaW50YS5pb3QuZGV2aWNlLnYxLlRlbXBlcmF0dXJlU2Vuc29yUHJvcGVydGllc0gAEkoKD2h1bWlkaXR5X3NlbnNvchgFIAEoCzIvLmt1c2ludGEuaW90LmRldmljZS52MS5IdW1pZGl0eVNlbnNvclByb3BlcnRpZXNIABJMChBvY2N1cGFuY3lfc2Vuc29yGAYgASgLMjAua3VzaW50YS5pb3QuZGV2aWNlLnYxLk9jY3VwYW5jeVNlbnNvclByb3BlcnRpZXNIABJICg5jb250YWN0X3NlbnNvchgHIAEoCzIuLmt1c2ludGEuaW90LmRldmljZS52MS5Db250YWN0U2Vuc29yUHJvcGVydGllc0gAEkoKD3dpbmRvd19jb3ZlcmluZxgIIAEoCzIvLmt1c2ludGEuaW90LmRldmljZS52MS5XaW5kb3dDb3ZlcmluZ1Byb3BlcnRpZXNIABI+Cglkb29yX2xvY2sYCSABKAsyKS5rdXNpbnRhLmlvdC5kZXZpY2UudjEuRG9vckxvY2tQcm9wZXJ0aWVzSAASQwoMb25fb2ZmX2xpZ2h0GAogASgLMisua3VzaW50YS5pb3QuZGV2aWNlLnYxLk9uT2ZmTGlnaHRQcm9wZXJ0aWVzSAASSAoOZGltbWFibGVfbGlnaHQYCyABKAsyLi5rdXNpbnRhLmlvdC5kZXZpY2UudjEuRGltbWFibGVMaWdodFByb3BlcnRpZXNIABJSChBjb2xvcl90ZW1wX2xpZ2h0GAwgASgLMjYua3VzaW50YS5pb3QuZGV2aWNlLnYxLkNvbG9yVGVtcGVyYXR1cmVMaWdodFByb3BlcnRpZXNIABJGCg1lbmVyZ3lfc2Vuc29yGA0gASgLMi0ua3VzaW50YS5pb3QuZGV2aWNlLnYxLkVuZXJneVNlbnNvclByb3BlcnRpZXNIABJKCg9wcmVzc3VyZV9zZW5zb3IYDiABKAsyLy5rdXNpbnRhLmlvdC5kZXZpY2UudjEuUHJlc3N1cmVTZW5zb3JQcm9wZXJ0aWVzSAASRAoMcG93ZXJfc291cmNlGA8gASgLMiwua3VzaW50YS5pb3QuZGV2aWNlLnYxLlBvd2VyU291cmNlUHJvcGVydGllc0gAEksKDWhtX3RoZXJtb3N0YXQYMiABKAsyMi5rdXNpbnRhLmlvdC52ZW5kb3IuaG9tZW1hdGljLnYxLkhtVGhlcm1vc3RhdFByb3BzSAESTQoOaG1fbWFpbnRlbmFuY2UYMyABKAsyMy5rdXNpbnRhLmlvdC52ZW5kb3IuaG9tZW1hdGljLnYxLkhtTWFpbnRlbmFuY2VQcm9wc0gBEjQKCnJhZGlvX2xpbmsYNCABKAsyIC5rdXNpbnRhLmlvdC5kZXZpY2UudjEuUmFkaW9MaW5rEjUKCGNsdXN0ZXJzGBAgAygLMiMua3VzaW50YS5pb3QuZGV2aWNlLnYxLkNsdXN0ZXJTdGF0ZRIeChZ2ZW5kb3JfYXR0cmlidXRlX25hbWVzGBEgAygJEmMKG3ZlbmRvcl9hdHRyaWJ1dGVfYmVoYXZpb3VycxgSIAMoCzI+Lmt1c2ludGEuaW90LmRldmljZS52MS5FbmRwb2ludC5WZW5kb3JBdHRyaWJ1dGVCZWhhdmlvdXJzRW50cnkaawoeVmVuZG9yQXR0cmlidXRlQmVoYXZpb3Vyc0VudHJ5EgsKA2tleRgBIAEoCRI4CgV2YWx1ZRgCIAEoCzIpLmt1c2ludGEuaW90LmRldmljZS52MS5BdHRyaWJ1dGVCZWhhdmlvdXI6AjgBQhMKEW1hdHRlcl9wcm9wZXJ0aWVzQhMKEXZlbmRvcl9wcm9wZXJ0aWVzIroECgZEZXZpY2USOwoKZGVzY3JpcHRvchgBIAEoCzInLmt1c2ludGEuaW90LmRldmljZS52MS5EZXZpY2VEZXNjcmlwdG9yEjIKCWVuZHBvaW50cxgOIAMoCzIfLmt1c2ludGEuaW90LmRldmljZS52MS5FbmRwb2ludBInChptaW5fd3JpdGVfaW50ZXJ2YWxfc2Vjb25kcxgPIAEoDUgAiAEBEiQKF21heF93cml0ZV9kZWxheV9zZWNvbmRzGBAgASgNSAGIAQESLQoJbGFzdF9zZWVuGBQgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIwCgxsYXN0X3VwZGF0ZWQYFSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQh0KG19taW5fd3JpdGVfaW50ZXJ2YWxfc2Vjb25kc0IaChhfbWF4X3dyaXRlX2RlbGF5X3NlY29uZHNKBAgCEA5KBAgyEDNSCnRoZXJtb3N0YXRSEnRlbXBlcmF0dXJlX3NlbnNvclIPaHVtaWRpdHlfc2Vuc29yUhBvY2N1cGFuY3lfc2Vuc29yUg5jb250YWN0X3NlbnNvclIPd2luZG93X2NvdmVyaW5nUglkb29yX2xvY2tSDG9uX29mZl9saWdodFIOZGltbWFibGVfbGlnaHRSEGNvbG9yX3RlbXBfbGlnaHRSDWVuZXJneV9zZW5zb3JSD3ByZXNzdXJlX3NlbnNvclIJaG9tZW1hdGljIrcBCglSYWRpb0xpbmsSJQoHcXVhbGl0eRgBIAEoDUIPorUYB3F1YWxpdHnQtRgFSACIAQESJwoIcnNzaV9kYm0YAiABKBFCEKK1GAhyc3NpX2RibdC1GAVIAYgBARIjCgZzbnJfZGIYAyABKAJCDqK1GAZzbnJfZGLQtRgFSAKIAQE6Eaq1GA1rdXNpbnRhLnJhZGlvQgoKCF9xdWFsaXR5QgsKCV9yc3NpX2RibUIJCgdfc25yX2RiKnUKDFJhZGlvUXVhbGl0eRIdChlSQURJT19RVUFMSVRZX1VOU1BFQ0lGSUVEEAASFgoSUkFESU9fUVVBTElUWV9HT09EEAESFgoSUkFESU9fUVVBTElUWV9GQUlSEAISFgoSUkFESU9fUVVBTElUWV9QT09SEANCAkgBYgZwcm90bzM", [file_google_protobuf_timestamp, file_kusinta_iot_device_v1_cluster_state, file_kusinta_iot_device_v1_descriptor, file_kusinta_iot_device_v1_properties, file_kusinta_iot_vendor_homematic_v1_homematic, file_kusinta_iot_vendor_v1_vendor_options]);
|
|
18
18
|
|
|
19
19
|
/**
|
|
20
20
|
* Describes the message kusinta.iot.device.v1.Endpoint.
|
|
@@ -281,6 +281,16 @@ export declare type DeviceCommand = Message<"kusinta.iot.webrtc.v1.DeviceCommand
|
|
|
281
281
|
value: Uint8Array;
|
|
282
282
|
case: "rawTlv";
|
|
283
283
|
} | { case: undefined; value?: undefined };
|
|
284
|
+
|
|
285
|
+
/**
|
|
286
|
+
* How long, in seconds, the value the command sets holds, for a command that sets an
|
|
287
|
+
* attribute the producer states as leased: OnOff is set by the On and Off commands, not
|
|
288
|
+
* by a write. The same rules as AttributeWriteRequest.lease_seconds, applied to the
|
|
289
|
+
* attribute the command sets.
|
|
290
|
+
*
|
|
291
|
+
* @generated from field: optional uint32 lease_seconds = 14;
|
|
292
|
+
*/
|
|
293
|
+
leaseSeconds?: number | undefined;
|
|
284
294
|
};
|
|
285
295
|
|
|
286
296
|
/**
|
|
@@ -434,6 +444,28 @@ export declare type AttributeWriteRequest = Message<"kusinta.iot.webrtc.v1.Attri
|
|
|
434
444
|
* @generated from field: kusinta.iot.device.v1.AttributeValue value = 4;
|
|
435
445
|
*/
|
|
436
446
|
value?: AttributeValue | undefined;
|
|
447
|
+
|
|
448
|
+
/**
|
|
449
|
+
* How long, in seconds, the written value holds before the device itself returns the
|
|
450
|
+
* attribute to its lapse value — for an attribute the producer states as leased
|
|
451
|
+
* (device.v1.LeasedWrite, on the attribute's cluster or as a vendor parameter). At least
|
|
452
|
+
* one second, and within the stated minimum and maximum.
|
|
453
|
+
*
|
|
454
|
+
* The producer MUST refuse, with COMMAND_ERROR_CODE_INVALID_COMMAND, a write to a leased
|
|
455
|
+
* attribute that carries no lease, a lease of zero or outside the stated bounds, and a
|
|
456
|
+
* lease on an attribute it does not state as leased. A write of the attribute's lapse
|
|
457
|
+
* value is the exception: it needs no lease, ends any lease running, and a lease on it
|
|
458
|
+
* is ignored (device.v1.LeasedWrite.lapse_value). Rollout order: a writer sends a
|
|
459
|
+
* lease for an attribute before the attribute's producer states it as leased.
|
|
460
|
+
*
|
|
461
|
+
* Set only by the gateway, towards a producer: a leased attribute is written by the
|
|
462
|
+
* gateway alone. A gateway MUST refuse a request from an app that carries a lease, with
|
|
463
|
+
* COMMAND_ERROR_CODE_INVALID_COMMAND, and an app's write or command to an attribute its
|
|
464
|
+
* producer states as leased, with COMMAND_ERROR_CODE_HELD_BY_GATEWAY.
|
|
465
|
+
*
|
|
466
|
+
* @generated from field: optional uint32 lease_seconds = 5;
|
|
467
|
+
*/
|
|
468
|
+
leaseSeconds?: number | undefined;
|
|
437
469
|
};
|
|
438
470
|
|
|
439
471
|
/**
|
|
@@ -514,6 +546,16 @@ export enum CommandErrorCode {
|
|
|
514
546
|
* @generated from enum value: COMMAND_ERROR_CODE_INTERNAL = 7;
|
|
515
547
|
*/
|
|
516
548
|
INTERNAL = 7,
|
|
549
|
+
|
|
550
|
+
/**
|
|
551
|
+
* The attribute is one the gateway drives under a lease — a floor zone, a heat source's
|
|
552
|
+
* add-on heater block — and a person changes it through the room's target and comfort
|
|
553
|
+
* band, not directly. Permanent for this attribute: do not retry; tell the user where to
|
|
554
|
+
* change it instead.
|
|
555
|
+
*
|
|
556
|
+
* @generated from enum value: COMMAND_ERROR_CODE_HELD_BY_GATEWAY = 8;
|
|
557
|
+
*/
|
|
558
|
+
HELD_BY_GATEWAY = 8,
|
|
517
559
|
}
|
|
518
560
|
|
|
519
561
|
/**
|
|
@@ -14,7 +14,7 @@ import { file_kusinta_iot_webrtc_v1_setpoint_mode } from "./setpoint_mode_pb.js"
|
|
|
14
14
|
* Describes the file kusinta/iot/webrtc/v1/command.proto.
|
|
15
15
|
*/
|
|
16
16
|
export const file_kusinta_iot_webrtc_v1_command = /*@__PURE__*/
|
|
17
|
-
fileDesc("
|
|
17
|
+
fileDesc("CiNrdXNpbnRhL2lvdC93ZWJydGMvdjEvY29tbWFuZC5wcm90bxIVa3VzaW50YS5pb3Qud2VicnRjLnYxInwKGFRoZXJtb3N0YXRTZXRwb2ludFBhcmFtcxI8CgRtb2RlGAEgASgOMikua3VzaW50YS5pb3Qud2VicnRjLnYxLlNldHBvaW50QWRqdXN0TW9kZUgAiAEBEg4KBmFtb3VudBgCIAEoEToJuLUYgQTAtRgAQgcKBV9tb2RlIkYKEkxldmVsQ29udHJvbFBhcmFtcxINCgVsZXZlbBgBIAEoDRIXCg90cmFuc2l0aW9uX3RpbWUYAiABKA06CLi1GAjAtRgAIisKC09uT2ZmUGFyYW1zOgS4tRgGSgQIARACSgQIAhADUgJvblIGdG9nZ2xlIkEKGFdpbmRvd0NvdmVyaW5nTGlmdFBhcmFtcxIaChJsaWZ0X3BlcmNlbnQxMDB0aHMYASABKA06Cbi1GIICwLUYBSI7Cg5Eb29yTG9ja1BhcmFtcxIQCghwaW5fY29kZRgCIAEoCToFuLUYgQJKBAgBEAJSCmxvY2tfc3RhdGUiwAUKDURldmljZUNvbW1hbmQSEgoKcmVxdWVzdF9pZBgBIAEoCRI0CglkZXZpY2VfaWQYAiABKAsyIS5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5EZXZpY2VJZBIUCgxjb21tYW5kX25hbWUYBCABKAkSEgoKY2x1c3Rlcl9pZBgMIAEoDRIeChFtYXR0ZXJfY29tbWFuZF9pZBgNIAEoDUgBiAEBEhgKC2VuZHBvaW50X2lkGAsgASgNSAKIAQESTgoTdGhlcm1vc3RhdF9zZXRwb2ludBgFIAEoCzIvLmt1c2ludGEuaW90LndlYnJ0Yy52MS5UaGVybW9zdGF0U2V0cG9pbnRQYXJhbXNIABJCCg1sZXZlbF9jb250cm9sGAYgASgLMikua3VzaW50YS5pb3Qud2VicnRjLnYxLkxldmVsQ29udHJvbFBhcmFtc0gAEjQKBm9uX29mZhgHIAEoCzIiLmt1c2ludGEuaW90LndlYnJ0Yy52MS5Pbk9mZlBhcmFtc0gAEk8KFHdpbmRvd19jb3ZlcmluZ19saWZ0GAggASgLMi8ua3VzaW50YS5pb3Qud2VicnRjLnYxLldpbmRvd0NvdmVyaW5nTGlmdFBhcmFtc0gAEjoKCWRvb3JfbG9jaxgJIAEoCzIlLmt1c2ludGEuaW90LndlYnJ0Yy52MS5Eb29yTG9ja1BhcmFtc0gAEhEKB3Jhd190bHYYYyABKAxIABIaCg1sZWFzZV9zZWNvbmRzGA4gASgNSAOIAQFCDAoKcGFyYW1ldGVyc0IUChJfbWF0dGVyX2NvbW1hbmRfaWRCDgoMX2VuZHBvaW50X2lkQhAKDl9sZWFzZV9zZWNvbmRzSgQIAxAESgQIChALUg5jbHVzdGVyX2lkX2hleFIZdGhlcm1vc3RhdF9zZXRwb2ludF93cml0ZSLSAQoMQ29tbWFuZEVycm9yEg8KB21lc3NhZ2UYAiABKAkSNQoEY29kZRgDIAEoDjInLmt1c2ludGEuaW90LndlYnJ0Yy52MS5Db21tYW5kRXJyb3JDb2RlEkMKCG1ldGFkYXRhGAQgAygLMjEua3VzaW50YS5pb3Qud2VicnRjLnYxLkNvbW1hbmRFcnJvci5NZXRhZGF0YUVudHJ5Gi8KDU1ldGFkYXRhRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4AUoECAEQAiLeAQoNQ29tbWFuZFJlc3VsdBISCgpyZXF1ZXN0X2lkGAEgASgJEg8KB3N1Y2Nlc3MYAiABKAgSMgoFZXJyb3IYAyABKAsyIy5rdXNpbnRhLmlvdC53ZWJydGMudjEuQ29tbWFuZEVycm9yEjAKDGNvbXBsZXRlZF9hdBgEIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASMwoKc2V0dGxlc19ieRgFIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAIgBAUINCgtfc2V0dGxlc19ieSL6AQoVQXR0cmlidXRlV3JpdGVSZXF1ZXN0EhIKCnJlcXVlc3RfaWQYASABKAkSNAoJZGV2aWNlX2lkGAIgASgLMiEua3VzaW50YS5pb3QuaWRlbnRpdHkudjEuRGV2aWNlSWQSMwoGdGFyZ2V0GAMgASgLMiMua3VzaW50YS5pb3QuYWNjZXNzLnYxLkF0dHJpYnV0ZVJlZhI0CgV2YWx1ZRgEIAEoCzIlLmt1c2ludGEuaW90LmRldmljZS52MS5BdHRyaWJ1dGVWYWx1ZRIaCg1sZWFzZV9zZWNvbmRzGAUgASgNSACIAQFCEAoOX2xlYXNlX3NlY29uZHMq5wIKEENvbW1hbmRFcnJvckNvZGUSIgoeQ09NTUFORF9FUlJPUl9DT0RFX1VOU1BFQ0lGSUVEEAASIwofQ09NTUFORF9FUlJPUl9DT0RFX05PVF9FTlRJVExFRBABEioKJkNPTU1BTkRfRVJST1JfQ09ERV9DT05TVFJBSU5UX1ZJT0xBVEVEEAISJgoiQ09NTUFORF9FUlJPUl9DT0RFX0lOVkFMSURfQ09NTUFORBADEiIKHkNPTU1BTkRfRVJST1JfQ09ERV9VTlJFQUNIQUJMRRAEEh4KGkNPTU1BTkRfRVJST1JfQ09ERV9USU1FT1VUEAUSKQolQ09NTUFORF9FUlJPUl9DT0RFX1JFSkVDVEVEX0JZX0RFVklDRRAGEh8KG0NPTU1BTkRfRVJST1JfQ09ERV9JTlRFUk5BTBAHEiYKIkNPTU1BTkRfRVJST1JfQ09ERV9IRUxEX0JZX0dBVEVXQVkQCEICSAFiBnByb3RvMw", [file_google_protobuf_timestamp, file_kusinta_iot_access_v1_acl, file_kusinta_iot_device_v1_cluster_state, file_kusinta_iot_device_v1_matter_options, file_kusinta_iot_identity_v1_identity, file_kusinta_iot_webrtc_v1_setpoint_mode]);
|
|
18
18
|
|
|
19
19
|
/**
|
|
20
20
|
* Describes the message kusinta.iot.webrtc.v1.ThermostatSetpointParams.
|