@kusinta/iot-schema 0.1.0-beta.9 → 0.2.0-beta.2
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 +13 -2
- package/src/kusinta/iot/access/v1/acl_pb.d.ts +230 -11
- package/src/kusinta/iot/access/v1/acl_pb.js +25 -4
- package/src/kusinta/iot/access/v1/roles_pb.d.ts +95 -2
- package/src/kusinta/iot/access/v1/roles_pb.js +37 -1
- package/src/kusinta/iot/connector/v1/connector_pb.d.ts +60 -30
- package/src/kusinta/iot/connector/v1/connector_pb.js +12 -11
- package/src/kusinta/iot/connector/v1/connector_service_pb.d.ts +5 -5
- package/src/kusinta/iot/connector/v1/connector_service_pb.js +1 -1
- package/src/kusinta/iot/device/v1/cluster_state_pb.d.ts +238 -0
- package/src/kusinta/iot/device/v1/cluster_state_pb.js +54 -0
- package/src/kusinta/iot/device/v1/descriptor_pb.d.ts +37 -8
- package/src/kusinta/iot/device/v1/descriptor_pb.js +2 -1
- package/src/kusinta/iot/device/v1/device_event_pb.d.ts +162 -0
- package/src/kusinta/iot/device/v1/device_event_pb.js +45 -0
- package/src/kusinta/iot/device/v1/device_pb.d.ts +154 -28
- package/src/kusinta/iot/device/v1/device_pb.js +10 -2
- package/src/kusinta/iot/device/v1/matter_options_pb.d.ts +84 -0
- package/src/kusinta/iot/device/v1/matter_options_pb.js +91 -0
- package/src/kusinta/iot/device/v1/properties_pb.d.ts +228 -207
- package/src/kusinta/iot/device/v1/properties_pb.js +9 -1
- package/src/kusinta/iot/device/v1/property_update_pb.d.ts +197 -8
- package/src/kusinta/iot/device/v1/property_update_pb.js +20 -2
- package/src/kusinta/iot/registration/v1/registration_pb.d.ts +170 -0
- package/src/kusinta/iot/registration/v1/registration_pb.js +61 -0
- package/src/kusinta/iot/registration/v1/registration_service_pb.d.ts +34 -0
- package/src/kusinta/iot/registration/v1/registration_service_pb.js +19 -0
- package/src/kusinta/iot/signaling/v1/signaling_pb.d.ts +320 -0
- package/src/kusinta/iot/signaling/v1/signaling_pb.js +83 -0
- package/src/kusinta/iot/signaling/v1/signaling_service_pb.d.ts +34 -0
- package/src/kusinta/iot/signaling/v1/signaling_service_pb.js +19 -0
- package/src/kusinta/iot/vendor/homematic/v1/homematic_pb.d.ts +65 -47
- package/src/kusinta/iot/vendor/homematic/v1/homematic_pb.js +8 -7
- package/src/kusinta/iot/vendor/v1/vendor_options_pb.d.ts +50 -0
- package/src/kusinta/iot/vendor/v1/vendor_options_pb.js +53 -0
- package/src/kusinta/iot/webrtc/v1/app_token_pb.d.ts +152 -0
- package/src/kusinta/iot/webrtc/v1/app_token_pb.js +28 -0
- package/src/kusinta/iot/webrtc/v1/command_pb.d.ts +276 -39
- package/src/kusinta/iot/webrtc/v1/command_pb.js +28 -2
- package/src/kusinta/iot/webrtc/v1/device_state_pb.d.ts +76 -7
- package/src/kusinta/iot/webrtc/v1/device_state_pb.js +19 -4
- package/src/kusinta/iot/webrtc/v1/envelope_pb.d.ts +371 -24
- package/src/kusinta/iot/webrtc/v1/envelope_pb.js +68 -5
- package/src/kusinta/iot/webrtc/v1/management_pb.d.ts +451 -0
- package/src/kusinta/iot/webrtc/v1/management_pb.js +106 -0
- package/src/kusinta/iot/webrtc/v1/permission_push_pb.d.ts +7 -1
|
@@ -6,12 +6,13 @@ import { fileDesc, messageDesc } from "@bufbuild/protobuf/codegenv2";
|
|
|
6
6
|
import { file_google_protobuf_timestamp } from "@bufbuild/protobuf/wkt";
|
|
7
7
|
import { file_kusinta_iot_common_v1_types } from "../../common/v1/types_pb.js";
|
|
8
8
|
import { file_kusinta_iot_identity_v1_identity } from "../../identity/v1/identity_pb.js";
|
|
9
|
+
import { file_kusinta_iot_vendor_homematic_v1_homematic } from "../../vendor/homematic/v1/homematic_pb.js";
|
|
9
10
|
|
|
10
11
|
/**
|
|
11
12
|
* Describes the file kusinta/iot/device/v1/descriptor.proto.
|
|
12
13
|
*/
|
|
13
14
|
export const file_kusinta_iot_device_v1_descriptor = /*@__PURE__*/
|
|
14
|
-
fileDesc("
|
|
15
|
+
fileDesc("CiZrdXNpbnRhL2lvdC9kZXZpY2UvdjEvZGVzY3JpcHRvci5wcm90bxIVa3VzaW50YS5pb3QuZGV2aWNlLnYxIrkGChBEZXZpY2VEZXNjcmlwdG9yEjQKCWRldmljZV9pZBgBIAEoCzIhLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLkRldmljZUlkEhMKC3ZlbmRvcl9uYW1lGAMgASgJEhQKDHByb2R1Y3RfbmFtZRgEIAEoCRIVCg1zZXJpYWxfbnVtYmVyGAUgASgJEhIKCm5vZGVfbGFiZWwYBiABKAkSEQoJdmVuZG9yX2lkGAcgASgNEhIKCnByb2R1Y3RfaWQYCCABKA0SHwoXaGFyZHdhcmVfdmVyc2lvbl9zdHJpbmcYCSABKAkSHwoXc29mdHdhcmVfdmVyc2lvbl9zdHJpbmcYCiABKAkSOgoMY29ubmVjdG9yX2lkGAsgASgLMiQua3VzaW50YS5pb3QuaWRlbnRpdHkudjEuQ29ubmVjdG9ySWQSMgoIc3BhY2VfaWQYDCABKAsyIC5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5TcGFjZUlkEj0KCW93bmVyc2hpcBgNIAEoDjIqLmt1c2ludGEuaW90LmNvbW1vbi52MS5EZXZpY2VPd25lcnNoaXBUeXBlEj4KCWxpZmVjeWNsZRgOIAEoDjIrLmt1c2ludGEuaW90LmNvbW1vbi52MS5EZXZpY2VMaWZlY3ljbGVTdGF0ZRI2Cg1vd25lcl91c2VyX2lkGA8gASgLMh8ua3VzaW50YS5pb3QuaWRlbnRpdHkudjEuVXNlcklkEi4KCmNsYWltZWRfYXQYECABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEjoKCmJyaWRnZWRfYnkYEyABKAsyIS5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5EZXZpY2VJZEgBiAEBEk0KCWhvbWVtYXRpYxgSIAEoCzI4Lmt1c2ludGEuaW90LnZlbmRvci5ob21lbWF0aWMudjEuSG9tZW1hdGljRGV2aWNlSWRlbnRpdHlIAEIRCg92ZW5kb3JfaWRlbnRpdHlCDQoLX2JyaWRnZWRfYnlKBAgCEANKBAgREBJSFW1hdHRlcl9kZXZpY2VfdHlwZV9pZFIJZW5kcG9pbnRzQgJIAWIGcHJvdG8z", [file_google_protobuf_timestamp, file_kusinta_iot_common_v1_types, file_kusinta_iot_identity_v1_identity, file_kusinta_iot_vendor_homematic_v1_homematic]);
|
|
15
16
|
|
|
16
17
|
/**
|
|
17
18
|
* Describes the message kusinta.iot.device.v1.DeviceDescriptor.
|
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
// @generated by protoc-gen-es v2.12.0 with parameter "target=js+dts,import_extension=js"
|
|
2
|
+
// @generated from file kusinta/iot/device/v1/device_event.proto (package kusinta.iot.device.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 { DeviceId } from "../../identity/v1/identity_pb.js";
|
|
8
|
+
import type { Timestamp } from "@bufbuild/protobuf/wkt";
|
|
9
|
+
import type { AttributeValue } from "./cluster_state_pb.js";
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* Describes the file kusinta/iot/device/v1/device_event.proto.
|
|
13
|
+
*/
|
|
14
|
+
export declare const file_kusinta_iot_device_v1_device_event: GenFile;
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* Something that HAPPENED on a device, as opposed to what a device currently IS.
|
|
18
|
+
*
|
|
19
|
+
* PropertyUpdate answers "what is the lock's state now" — latest wins, order does not
|
|
20
|
+
* matter, a missed one is corrected by the next. DeviceEvent answers "what happened to the
|
|
21
|
+
* lock" — each is a distinct occurrence, order matters, and a missed one is gone unless it
|
|
22
|
+
* is fetched by its number. Matter models both for the same reason, and neither substitutes
|
|
23
|
+
* for the other: a lock's LockState attribute cannot say who unlocked it, with what
|
|
24
|
+
* credential, at what time, and an event log cannot cheaply answer what the state is now.
|
|
25
|
+
*
|
|
26
|
+
* This is the audit surface. In a building with several residents sharing a device, "the
|
|
27
|
+
* door is unlocked" and "this credential unlocked the door at 14:02" are different
|
|
28
|
+
* questions with different consumers.
|
|
29
|
+
*
|
|
30
|
+
* Events do NOT feed Device.endpoints. A consumer must not merge an event into a properties
|
|
31
|
+
* field or a ClusterState — an event's data is its own payload, not an attribute value, and
|
|
32
|
+
* the attribute it relates to reports separately. The resolution rule in
|
|
33
|
+
* property_update.proto has nothing to do with events.
|
|
34
|
+
*
|
|
35
|
+
* @generated from message kusinta.iot.device.v1.DeviceEvent
|
|
36
|
+
*/
|
|
37
|
+
export declare type DeviceEvent = Message<"kusinta.iot.device.v1.DeviceEvent"> & {
|
|
38
|
+
/**
|
|
39
|
+
* @generated from field: kusinta.iot.identity.v1.DeviceId device_id = 1;
|
|
40
|
+
*/
|
|
41
|
+
deviceId?: DeviceId | undefined;
|
|
42
|
+
|
|
43
|
+
/**
|
|
44
|
+
* Which endpoint emitted it, and which cluster defines it. Required, as for an update.
|
|
45
|
+
*
|
|
46
|
+
* @generated from field: optional uint32 endpoint_id = 2;
|
|
47
|
+
*/
|
|
48
|
+
endpointId?: number | undefined;
|
|
49
|
+
|
|
50
|
+
/**
|
|
51
|
+
* @generated from field: uint32 cluster_id = 3;
|
|
52
|
+
*/
|
|
53
|
+
clusterId: number;
|
|
54
|
+
|
|
55
|
+
/**
|
|
56
|
+
* The Matter event ID within that cluster.
|
|
57
|
+
*
|
|
58
|
+
* @generated from field: uint32 event_id = 4;
|
|
59
|
+
*/
|
|
60
|
+
eventId: number;
|
|
61
|
+
|
|
62
|
+
/**
|
|
63
|
+
* Matter's EventNumber: monotonically increasing per node, and the reason an event log
|
|
64
|
+
* can be resumed rather than merely replayed. A consumer that sees a gap knows it missed
|
|
65
|
+
* something and can say so — the one guarantee a PropertyUpdate stream cannot give.
|
|
66
|
+
*
|
|
67
|
+
* Monotonic within one device. Do NOT compare across devices; they are unrelated
|
|
68
|
+
* sequences.
|
|
69
|
+
*
|
|
70
|
+
* @generated from field: uint64 event_number = 5;
|
|
71
|
+
*/
|
|
72
|
+
eventNumber: bigint;
|
|
73
|
+
|
|
74
|
+
/**
|
|
75
|
+
* When the device says it happened, which is not when the gateway saw it. On a
|
|
76
|
+
* battery-powered device that wakes on a cycle, the two can differ by minutes.
|
|
77
|
+
*
|
|
78
|
+
* @generated from field: google.protobuf.Timestamp timestamp = 6;
|
|
79
|
+
*/
|
|
80
|
+
timestamp?: Timestamp | undefined;
|
|
81
|
+
|
|
82
|
+
/**
|
|
83
|
+
* @generated from field: kusinta.iot.device.v1.EventPriority priority = 7;
|
|
84
|
+
*/
|
|
85
|
+
priority: EventPriority;
|
|
86
|
+
|
|
87
|
+
/**
|
|
88
|
+
* The event's own payload. Matter events carry a struct, so this is normally
|
|
89
|
+
* AttributeValue.struct_value keyed by context tag; a scalar-payload event uses a scalar
|
|
90
|
+
* case directly.
|
|
91
|
+
*
|
|
92
|
+
* @generated from field: kusinta.iot.device.v1.AttributeValue data = 8;
|
|
93
|
+
*/
|
|
94
|
+
data?: AttributeValue | undefined;
|
|
95
|
+
};
|
|
96
|
+
|
|
97
|
+
/**
|
|
98
|
+
* Describes the message kusinta.iot.device.v1.DeviceEvent.
|
|
99
|
+
* Use `create(DeviceEventSchema)` to create a new message.
|
|
100
|
+
*/
|
|
101
|
+
export declare const DeviceEventSchema: GenMessage<DeviceEvent>;
|
|
102
|
+
|
|
103
|
+
/**
|
|
104
|
+
* @generated from message kusinta.iot.device.v1.DeviceEventBatch
|
|
105
|
+
*/
|
|
106
|
+
export declare type DeviceEventBatch = Message<"kusinta.iot.device.v1.DeviceEventBatch"> & {
|
|
107
|
+
/**
|
|
108
|
+
* @generated from field: repeated kusinta.iot.device.v1.DeviceEvent events = 1;
|
|
109
|
+
*/
|
|
110
|
+
events: DeviceEvent[];
|
|
111
|
+
|
|
112
|
+
/**
|
|
113
|
+
* When the gateway received these, as distinct from each event's own timestamp, which is
|
|
114
|
+
* when the device says it happened. The two differ by however long a sleeping device took
|
|
115
|
+
* to wake, and for an audit trail both matter: one is what occurred, the other is when
|
|
116
|
+
* anyone could have known.
|
|
117
|
+
*
|
|
118
|
+
* @generated from field: google.protobuf.Timestamp received_at = 2;
|
|
119
|
+
*/
|
|
120
|
+
receivedAt?: Timestamp | undefined;
|
|
121
|
+
};
|
|
122
|
+
|
|
123
|
+
/**
|
|
124
|
+
* Describes the message kusinta.iot.device.v1.DeviceEventBatch.
|
|
125
|
+
* Use `create(DeviceEventBatchSchema)` to create a new message.
|
|
126
|
+
*/
|
|
127
|
+
export declare const DeviceEventBatchSchema: GenMessage<DeviceEventBatch>;
|
|
128
|
+
|
|
129
|
+
/**
|
|
130
|
+
* Matter's event priority. Governs retention and delivery urgency, not severity in a
|
|
131
|
+
* logging sense: CRITICAL events are retained and delivered with the most effort, DEBUG
|
|
132
|
+
* with the least.
|
|
133
|
+
*
|
|
134
|
+
* @generated from enum kusinta.iot.device.v1.EventPriority
|
|
135
|
+
*/
|
|
136
|
+
export enum EventPriority {
|
|
137
|
+
/**
|
|
138
|
+
* @generated from enum value: EVENT_PRIORITY_UNSPECIFIED = 0;
|
|
139
|
+
*/
|
|
140
|
+
UNSPECIFIED = 0,
|
|
141
|
+
|
|
142
|
+
/**
|
|
143
|
+
* @generated from enum value: EVENT_PRIORITY_DEBUG = 1;
|
|
144
|
+
*/
|
|
145
|
+
DEBUG = 1,
|
|
146
|
+
|
|
147
|
+
/**
|
|
148
|
+
* @generated from enum value: EVENT_PRIORITY_INFO = 2;
|
|
149
|
+
*/
|
|
150
|
+
INFO = 2,
|
|
151
|
+
|
|
152
|
+
/**
|
|
153
|
+
* @generated from enum value: EVENT_PRIORITY_CRITICAL = 3;
|
|
154
|
+
*/
|
|
155
|
+
CRITICAL = 3,
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
/**
|
|
159
|
+
* Describes the enum kusinta.iot.device.v1.EventPriority.
|
|
160
|
+
*/
|
|
161
|
+
export declare const EventPrioritySchema: GenEnum<EventPriority>;
|
|
162
|
+
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
// @generated by protoc-gen-es v2.12.0 with parameter "target=js+dts,import_extension=js"
|
|
2
|
+
// @generated from file kusinta/iot/device/v1/device_event.proto (package kusinta.iot.device.v1, syntax proto3)
|
|
3
|
+
/* eslint-disable */
|
|
4
|
+
|
|
5
|
+
import { enumDesc, fileDesc, messageDesc, tsEnum } from "@bufbuild/protobuf/codegenv2";
|
|
6
|
+
import { file_google_protobuf_timestamp } from "@bufbuild/protobuf/wkt";
|
|
7
|
+
import { file_kusinta_iot_device_v1_cluster_state } from "./cluster_state_pb.js";
|
|
8
|
+
import { file_kusinta_iot_identity_v1_identity } from "../../identity/v1/identity_pb.js";
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* Describes the file kusinta/iot/device/v1/device_event.proto.
|
|
12
|
+
*/
|
|
13
|
+
export const file_kusinta_iot_device_v1_device_event = /*@__PURE__*/
|
|
14
|
+
fileDesc("CihrdXNpbnRhL2lvdC9kZXZpY2UvdjEvZGV2aWNlX2V2ZW50LnByb3RvEhVrdXNpbnRhLmlvdC5kZXZpY2UudjEixQIKC0RldmljZUV2ZW50EjQKCWRldmljZV9pZBgBIAEoCzIhLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLkRldmljZUlkEhgKC2VuZHBvaW50X2lkGAIgASgNSACIAQESEgoKY2x1c3Rlcl9pZBgDIAEoDRIQCghldmVudF9pZBgEIAEoDRIUCgxldmVudF9udW1iZXIYBSABKAQSLQoJdGltZXN0YW1wGAYgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBI2Cghwcmlvcml0eRgHIAEoDjIkLmt1c2ludGEuaW90LmRldmljZS52MS5FdmVudFByaW9yaXR5EjMKBGRhdGEYCCABKAsyJS5rdXNpbnRhLmlvdC5kZXZpY2UudjEuQXR0cmlidXRlVmFsdWVCDgoMX2VuZHBvaW50X2lkIncKEERldmljZUV2ZW50QmF0Y2gSMgoGZXZlbnRzGAEgAygLMiIua3VzaW50YS5pb3QuZGV2aWNlLnYxLkRldmljZUV2ZW50Ei8KC3JlY2VpdmVkX2F0GAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcCp/Cg1FdmVudFByaW9yaXR5Eh4KGkVWRU5UX1BSSU9SSVRZX1VOU1BFQ0lGSUVEEAASGAoURVZFTlRfUFJJT1JJVFlfREVCVUcQARIXChNFVkVOVF9QUklPUklUWV9JTkZPEAISGwoXRVZFTlRfUFJJT1JJVFlfQ1JJVElDQUwQA0ICSAFiBnByb3RvMw", [file_google_protobuf_timestamp, file_kusinta_iot_device_v1_cluster_state, file_kusinta_iot_identity_v1_identity]);
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* Describes the message kusinta.iot.device.v1.DeviceEvent.
|
|
18
|
+
* Use `create(DeviceEventSchema)` to create a new message.
|
|
19
|
+
*/
|
|
20
|
+
export const DeviceEventSchema = /*@__PURE__*/
|
|
21
|
+
messageDesc(file_kusinta_iot_device_v1_device_event, 0);
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* Describes the message kusinta.iot.device.v1.DeviceEventBatch.
|
|
25
|
+
* Use `create(DeviceEventBatchSchema)` to create a new message.
|
|
26
|
+
*/
|
|
27
|
+
export const DeviceEventBatchSchema = /*@__PURE__*/
|
|
28
|
+
messageDesc(file_kusinta_iot_device_v1_device_event, 1);
|
|
29
|
+
|
|
30
|
+
/**
|
|
31
|
+
* Describes the enum kusinta.iot.device.v1.EventPriority.
|
|
32
|
+
*/
|
|
33
|
+
export const EventPrioritySchema = /*@__PURE__*/
|
|
34
|
+
enumDesc(file_kusinta_iot_device_v1_device_event, 0);
|
|
35
|
+
|
|
36
|
+
/**
|
|
37
|
+
* Matter's event priority. Governs retention and delivery urgency, not severity in a
|
|
38
|
+
* logging sense: CRITICAL events are retained and delivered with the most effort, DEBUG
|
|
39
|
+
* with the least.
|
|
40
|
+
*
|
|
41
|
+
* @generated from enum kusinta.iot.device.v1.EventPriority
|
|
42
|
+
*/
|
|
43
|
+
export const EventPriority = /*@__PURE__*/
|
|
44
|
+
tsEnum(EventPrioritySchema);
|
|
45
|
+
|
|
@@ -4,9 +4,10 @@
|
|
|
4
4
|
|
|
5
5
|
import type { GenFile, GenMessage } from "@bufbuild/protobuf/codegenv2";
|
|
6
6
|
import type { Message } from "@bufbuild/protobuf";
|
|
7
|
+
import type { ColorTemperatureLightProperties, ContactSensorProperties, DimmableLightProperties, DoorLockProperties, EnergySensorProperties, HumiditySensorProperties, OccupancySensorProperties, OnOffLightProperties, PowerSourceProperties, PressureSensorProperties, TemperatureSensorProperties, ThermostatProperties, WindowCoveringProperties } from "./properties_pb.js";
|
|
8
|
+
import type { HmThermostatProps } from "../../vendor/homematic/v1/homematic_pb.js";
|
|
9
|
+
import type { ClusterState } from "./cluster_state_pb.js";
|
|
7
10
|
import type { DeviceDescriptor } from "./descriptor_pb.js";
|
|
8
|
-
import type { ColorTemperatureLightProperties, ContactSensorProperties, DimmableLightProperties, DoorLockProperties, EnergySensorProperties, HumiditySensorProperties, OccupancySensorProperties, OnOffLightProperties, PressureSensorProperties, TemperatureSensorProperties, ThermostatProperties, WindowCoveringProperties } from "./properties_pb.js";
|
|
9
|
-
import type { HomematicVendorExtension } from "../../vendor/homematic/v1/homematic_pb.js";
|
|
10
11
|
import type { Timestamp } from "@bufbuild/protobuf/wkt";
|
|
11
12
|
|
|
12
13
|
/**
|
|
@@ -15,109 +16,234 @@ import type { Timestamp } from "@bufbuild/protobuf/wkt";
|
|
|
15
16
|
export declare const file_kusinta_iot_device_v1_device: GenFile;
|
|
16
17
|
|
|
17
18
|
/**
|
|
18
|
-
*
|
|
19
|
-
* Field number convention: 1 = descriptor, 2-49 = standard Matter device types,
|
|
20
|
-
* 50-99 = vendor extensions, 20+ = timestamps.
|
|
19
|
+
* The state one Matter endpoint reports.
|
|
21
20
|
*
|
|
22
|
-
*
|
|
21
|
+
* Matter nodes present several endpoints, each with its own device type, and real
|
|
22
|
+
* devices need it — a wall thermostat is a Thermostat AND a Humidity Sensor, a
|
|
23
|
+
* 4-channel actuator is four On/Off Lights, almost any battery device is also a Power
|
|
24
|
+
* Source. Endpoints are the only thing that buys; filing, ownership and DeviceId stay
|
|
25
|
+
* per physical device, so a device is still one row, one claim, one placement.
|
|
26
|
+
*
|
|
27
|
+
* Field numbers: 1-2 identity, 3-49 standard Matter device types, 50-99 vendor
|
|
28
|
+
* extensions.
|
|
29
|
+
*
|
|
30
|
+
* endpoint_id is Matter's own endpoint number, and it is scoped to ONE DEVICE — not
|
|
31
|
+
* global, and nothing coordinates numbering between devices. Endpoint 1 on one valve and
|
|
32
|
+
* endpoint 1 on another are unrelated; what identifies an endpoint is the pair
|
|
33
|
+
* (DeviceId, endpoint_id). PropertyUpdate carries device_id for exactly that reason.
|
|
34
|
+
*
|
|
35
|
+
* Endpoint 0 is the Matter root node and carries BasicInformation, which DeviceDescriptor
|
|
36
|
+
* already holds — so 0 never appears here and a producer emitting it is wrong. Device
|
|
37
|
+
* endpoints are 1..n.
|
|
38
|
+
*
|
|
39
|
+
* Two producer obligations, neither enforceable by the schema:
|
|
40
|
+
*
|
|
41
|
+
* 1. UNIQUE within the device. Two entries sharing an endpoint_id make step 1 of the
|
|
42
|
+
* resolution rule ambiguous, and nothing rejects it.
|
|
43
|
+
* 2. STABLE for the life of the device. This is the one that bites. Access grants and
|
|
44
|
+
* property constraints reference (DeviceId, endpoint_id) — see access/v1/acl.proto —
|
|
45
|
+
* so a connector that renumbers across a restart does not fail loudly, it silently
|
|
46
|
+
* retargets permissions: a grant on channel 1 starts applying to channel 3. A
|
|
47
|
+
* duplicate id produces visible nonsense quickly; renumbering produces a working
|
|
48
|
+
* system with the wrong permissions.
|
|
49
|
+
*
|
|
50
|
+
* Where the number comes from depends on what is behind the connector. A Matter device
|
|
51
|
+
* declares its own: endpoint 0's Descriptor cluster carries a PartsList, and each
|
|
52
|
+
* endpoint's Descriptor a DeviceTypeList. A bridged non-Matter device has no Matter
|
|
53
|
+
* endpoints at all, so the connector must synthesise them — derive from something the
|
|
54
|
+
* upstream system holds stable, typically its own channel number, never from enumeration
|
|
55
|
+
* order.
|
|
56
|
+
*
|
|
57
|
+
* A typed case and the generic clusters list are not alternatives. An endpoint uses its
|
|
58
|
+
* typed case for the attributes this schema models and clusters for everything else,
|
|
59
|
+
* including cluster metadata for the modelled ones. See cluster_state.proto.
|
|
60
|
+
*
|
|
61
|
+
* matter_properties and vendor_properties are separate oneofs on purpose. An endpoint
|
|
62
|
+
* carries its typed Matter properties AND its vendor extension — one oneof spanning both
|
|
63
|
+
* would make them mutually exclusive, which left every vendor field unreachable in
|
|
64
|
+
* practice. Named in parallel because they are the same kind of thing addressed through
|
|
65
|
+
* two annotation namespaces: (matter_attribute) resolves one, (vendor_attribute) the
|
|
66
|
+
* other. See property_update.proto for the two branches.
|
|
67
|
+
*
|
|
68
|
+
* @generated from message kusinta.iot.device.v1.Endpoint
|
|
23
69
|
*/
|
|
24
|
-
export declare type
|
|
70
|
+
export declare type Endpoint = Message<"kusinta.iot.device.v1.Endpoint"> & {
|
|
25
71
|
/**
|
|
26
|
-
* @generated from field:
|
|
72
|
+
* @generated from field: uint32 endpoint_id = 1;
|
|
27
73
|
*/
|
|
28
|
-
|
|
74
|
+
endpointId: number;
|
|
75
|
+
|
|
76
|
+
/**
|
|
77
|
+
* @generated from field: uint32 matter_device_type_id = 2;
|
|
78
|
+
*/
|
|
79
|
+
matterDeviceTypeId: number;
|
|
29
80
|
|
|
30
81
|
/**
|
|
31
|
-
* @generated from oneof kusinta.iot.device.v1.
|
|
82
|
+
* @generated from oneof kusinta.iot.device.v1.Endpoint.matter_properties
|
|
32
83
|
*/
|
|
33
|
-
|
|
84
|
+
matterProperties: {
|
|
34
85
|
/**
|
|
35
|
-
* @generated from field: kusinta.iot.device.v1.ThermostatProperties thermostat =
|
|
86
|
+
* @generated from field: kusinta.iot.device.v1.ThermostatProperties thermostat = 3;
|
|
36
87
|
*/
|
|
37
88
|
value: ThermostatProperties;
|
|
38
89
|
case: "thermostat";
|
|
39
90
|
} | {
|
|
40
91
|
/**
|
|
41
|
-
* @generated from field: kusinta.iot.device.v1.TemperatureSensorProperties temperature_sensor =
|
|
92
|
+
* @generated from field: kusinta.iot.device.v1.TemperatureSensorProperties temperature_sensor = 4;
|
|
42
93
|
*/
|
|
43
94
|
value: TemperatureSensorProperties;
|
|
44
95
|
case: "temperatureSensor";
|
|
45
96
|
} | {
|
|
46
97
|
/**
|
|
47
|
-
* @generated from field: kusinta.iot.device.v1.HumiditySensorProperties humidity_sensor =
|
|
98
|
+
* @generated from field: kusinta.iot.device.v1.HumiditySensorProperties humidity_sensor = 5;
|
|
48
99
|
*/
|
|
49
100
|
value: HumiditySensorProperties;
|
|
50
101
|
case: "humiditySensor";
|
|
51
102
|
} | {
|
|
52
103
|
/**
|
|
53
|
-
* @generated from field: kusinta.iot.device.v1.OccupancySensorProperties occupancy_sensor =
|
|
104
|
+
* @generated from field: kusinta.iot.device.v1.OccupancySensorProperties occupancy_sensor = 6;
|
|
54
105
|
*/
|
|
55
106
|
value: OccupancySensorProperties;
|
|
56
107
|
case: "occupancySensor";
|
|
57
108
|
} | {
|
|
58
109
|
/**
|
|
59
|
-
* @generated from field: kusinta.iot.device.v1.ContactSensorProperties contact_sensor =
|
|
110
|
+
* @generated from field: kusinta.iot.device.v1.ContactSensorProperties contact_sensor = 7;
|
|
60
111
|
*/
|
|
61
112
|
value: ContactSensorProperties;
|
|
62
113
|
case: "contactSensor";
|
|
63
114
|
} | {
|
|
64
115
|
/**
|
|
65
|
-
* @generated from field: kusinta.iot.device.v1.WindowCoveringProperties window_covering =
|
|
116
|
+
* @generated from field: kusinta.iot.device.v1.WindowCoveringProperties window_covering = 8;
|
|
66
117
|
*/
|
|
67
118
|
value: WindowCoveringProperties;
|
|
68
119
|
case: "windowCovering";
|
|
69
120
|
} | {
|
|
70
121
|
/**
|
|
71
|
-
* @generated from field: kusinta.iot.device.v1.DoorLockProperties door_lock =
|
|
122
|
+
* @generated from field: kusinta.iot.device.v1.DoorLockProperties door_lock = 9;
|
|
72
123
|
*/
|
|
73
124
|
value: DoorLockProperties;
|
|
74
125
|
case: "doorLock";
|
|
75
126
|
} | {
|
|
76
127
|
/**
|
|
77
|
-
* @generated from field: kusinta.iot.device.v1.OnOffLightProperties on_off_light =
|
|
128
|
+
* @generated from field: kusinta.iot.device.v1.OnOffLightProperties on_off_light = 10;
|
|
78
129
|
*/
|
|
79
130
|
value: OnOffLightProperties;
|
|
80
131
|
case: "onOffLight";
|
|
81
132
|
} | {
|
|
82
133
|
/**
|
|
83
|
-
* @generated from field: kusinta.iot.device.v1.DimmableLightProperties dimmable_light =
|
|
134
|
+
* @generated from field: kusinta.iot.device.v1.DimmableLightProperties dimmable_light = 11;
|
|
84
135
|
*/
|
|
85
136
|
value: DimmableLightProperties;
|
|
86
137
|
case: "dimmableLight";
|
|
87
138
|
} | {
|
|
88
139
|
/**
|
|
89
|
-
* @generated from field: kusinta.iot.device.v1.ColorTemperatureLightProperties color_temp_light =
|
|
140
|
+
* @generated from field: kusinta.iot.device.v1.ColorTemperatureLightProperties color_temp_light = 12;
|
|
90
141
|
*/
|
|
91
142
|
value: ColorTemperatureLightProperties;
|
|
92
143
|
case: "colorTempLight";
|
|
93
144
|
} | {
|
|
94
145
|
/**
|
|
95
|
-
* @generated from field: kusinta.iot.device.v1.EnergySensorProperties energy_sensor =
|
|
146
|
+
* @generated from field: kusinta.iot.device.v1.EnergySensorProperties energy_sensor = 13;
|
|
96
147
|
*/
|
|
97
148
|
value: EnergySensorProperties;
|
|
98
149
|
case: "energySensor";
|
|
99
150
|
} | {
|
|
100
151
|
/**
|
|
101
|
-
* @generated from field: kusinta.iot.device.v1.PressureSensorProperties pressure_sensor =
|
|
152
|
+
* @generated from field: kusinta.iot.device.v1.PressureSensorProperties pressure_sensor = 14;
|
|
102
153
|
*/
|
|
103
154
|
value: PressureSensorProperties;
|
|
104
155
|
case: "pressureSensor";
|
|
105
156
|
} | {
|
|
106
157
|
/**
|
|
107
|
-
*
|
|
108
|
-
*
|
|
109
|
-
* @generated from field: kusinta.iot.vendor.homematic.v1.HomematicVendorExtension homematic = 50;
|
|
158
|
+
* @generated from field: kusinta.iot.device.v1.PowerSourceProperties power_source = 15;
|
|
110
159
|
*/
|
|
111
|
-
value:
|
|
112
|
-
case: "
|
|
160
|
+
value: PowerSourceProperties;
|
|
161
|
+
case: "powerSource";
|
|
113
162
|
} | { case: undefined; value?: undefined };
|
|
114
163
|
|
|
115
164
|
/**
|
|
165
|
+
* Vendor readings for this endpoint, beside its Matter properties rather than instead
|
|
166
|
+
* of them. Vendor IDENTITY — who the physical device is — is on DeviceDescriptor.
|
|
167
|
+
*
|
|
168
|
+
* @generated from oneof kusinta.iot.device.v1.Endpoint.vendor_properties
|
|
169
|
+
*/
|
|
170
|
+
vendorProperties: {
|
|
171
|
+
/**
|
|
172
|
+
* @generated from field: kusinta.iot.vendor.homematic.v1.HmThermostatProps hm_thermostat = 50;
|
|
173
|
+
*/
|
|
174
|
+
value: HmThermostatProps;
|
|
175
|
+
case: "hmThermostat";
|
|
176
|
+
} | { case: undefined; value?: undefined };
|
|
177
|
+
|
|
178
|
+
/**
|
|
179
|
+
* Every cluster this endpoint hosts: what it supports, and any attribute value that has
|
|
180
|
+
* no typed field above. This is what makes a device the schema does not model usable
|
|
181
|
+
* rather than silent — and what carries the optional clusters the Matter specification
|
|
182
|
+
* lets an endpoint add beyond its device type's set.
|
|
183
|
+
*
|
|
184
|
+
* Field 16 rather than a one-byte number: 1-15 are spent on identity and the typed
|
|
185
|
+
* cases, and a ClusterState's tag is amortised over the attributes it carries.
|
|
186
|
+
*
|
|
187
|
+
* @generated from field: repeated kusinta.iot.device.v1.ClusterState clusters = 16;
|
|
188
|
+
*/
|
|
189
|
+
clusters: ClusterState[];
|
|
190
|
+
};
|
|
191
|
+
|
|
192
|
+
/**
|
|
193
|
+
* Describes the message kusinta.iot.device.v1.Endpoint.
|
|
194
|
+
* Use `create(EndpointSchema)` to create a new message.
|
|
195
|
+
*/
|
|
196
|
+
export declare const EndpointSchema: GenMessage<Endpoint>;
|
|
197
|
+
|
|
198
|
+
/**
|
|
199
|
+
* Device is a DeviceDescriptor plus the endpoints it presents.
|
|
200
|
+
*
|
|
201
|
+
* It travels on BOTH legs — a connector announces one with connector.v1.DeviceAnnouncement,
|
|
202
|
+
* and the gateway sends one to the app. One shape everywhere, so the endpoint list has a
|
|
203
|
+
* single home and nothing has to be kept in step with a parallel copy.
|
|
204
|
+
*
|
|
205
|
+
* Resolving an endpoint's device type to a properties case is read from the descriptor via
|
|
206
|
+
* (matter_device_type), never hard-coded. property_update.proto states the rule normatively;
|
|
207
|
+
* matter_options.proto defines the annotations.
|
|
208
|
+
*
|
|
209
|
+
* An empty endpoints list means the device presents nothing this schema models, or has
|
|
210
|
+
* reported nothing yet. Keep the Device either way — it exists and belongs in a list.
|
|
211
|
+
*
|
|
212
|
+
* @generated from message kusinta.iot.device.v1.Device
|
|
213
|
+
*/
|
|
214
|
+
export declare type Device = Message<"kusinta.iot.device.v1.Device"> & {
|
|
215
|
+
/**
|
|
216
|
+
* @generated from field: kusinta.iot.device.v1.DeviceDescriptor descriptor = 1;
|
|
217
|
+
*/
|
|
218
|
+
descriptor?: DeviceDescriptor | undefined;
|
|
219
|
+
|
|
220
|
+
/**
|
|
221
|
+
* 15-19 are free; 20+ is the timestamp band.
|
|
222
|
+
*
|
|
223
|
+
* @generated from field: repeated kusinta.iot.device.v1.Endpoint endpoints = 14;
|
|
224
|
+
*/
|
|
225
|
+
endpoints: Endpoint[];
|
|
226
|
+
|
|
227
|
+
/**
|
|
228
|
+
* When the gateway last had evidence this device exists and is reachable — the
|
|
229
|
+
* most recent PropertyUpdate, announcement, or command result concerning it.
|
|
230
|
+
* Gateway-observed, not connector-reported: no message on either leg carries a
|
|
231
|
+
* per-device liveness timestamp, so this is as precise as the device's own report
|
|
232
|
+
* interval. A device that reports every 15 minutes looks stale for 15 minutes.
|
|
233
|
+
*
|
|
234
|
+
* Survives a connector reconnect. Losing the route to a device is not evidence the
|
|
235
|
+
* device is gone, so last_seen keeps its value; only fresh evidence advances it.
|
|
236
|
+
*
|
|
237
|
+
* Advisory, for showing staleness in a UI. It is not a removal signal — that is
|
|
238
|
+
* webrtc.v1.DeviceRemoved, sent only when a connector reports the device gone.
|
|
239
|
+
*
|
|
116
240
|
* @generated from field: google.protobuf.Timestamp last_seen = 20;
|
|
117
241
|
*/
|
|
118
242
|
lastSeen?: Timestamp | undefined;
|
|
119
243
|
|
|
120
244
|
/**
|
|
245
|
+
* When any field of this Device last changed value.
|
|
246
|
+
*
|
|
121
247
|
* @generated from field: google.protobuf.Timestamp last_updated = 21;
|
|
122
248
|
*/
|
|
123
249
|
lastUpdated?: Timestamp | undefined;
|
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
import { fileDesc, messageDesc } from "@bufbuild/protobuf/codegenv2";
|
|
6
6
|
import { file_google_protobuf_timestamp } from "@bufbuild/protobuf/wkt";
|
|
7
|
+
import { file_kusinta_iot_device_v1_cluster_state } from "./cluster_state_pb.js";
|
|
7
8
|
import { file_kusinta_iot_device_v1_descriptor } from "./descriptor_pb.js";
|
|
8
9
|
import { file_kusinta_iot_device_v1_properties } from "./properties_pb.js";
|
|
9
10
|
import { file_kusinta_iot_vendor_homematic_v1_homematic } from "../../vendor/homematic/v1/homematic_pb.js";
|
|
@@ -12,12 +13,19 @@ import { file_kusinta_iot_vendor_homematic_v1_homematic } from "../../vendor/hom
|
|
|
12
13
|
* Describes the file kusinta/iot/device/v1/device.proto.
|
|
13
14
|
*/
|
|
14
15
|
export const file_kusinta_iot_device_v1_device = /*@__PURE__*/
|
|
15
|
-
fileDesc("
|
|
16
|
+
fileDesc("CiJrdXNpbnRhL2lvdC9kZXZpY2UvdjEvZGV2aWNlLnByb3RvEhVrdXNpbnRhLmlvdC5kZXZpY2UudjEirgkKCEVuZHBvaW50EhMKC2VuZHBvaW50X2lkGAEgASgNEh0KFW1hdHRlcl9kZXZpY2VfdHlwZV9pZBgCIAEoDRJBCgp0aGVybW9zdGF0GAMgASgLMisua3VzaW50YS5pb3QuZGV2aWNlLnYxLlRoZXJtb3N0YXRQcm9wZXJ0aWVzSAASUAoSdGVtcGVyYXR1cmVfc2Vuc29yGAQgASgLMjIua3VzaW50YS5pb3QuZGV2aWNlLnYxLlRlbXBlcmF0dXJlU2Vuc29yUHJvcGVydGllc0gAEkoKD2h1bWlkaXR5X3NlbnNvchgFIAEoCzIvLmt1c2ludGEuaW90LmRldmljZS52MS5IdW1pZGl0eVNlbnNvclByb3BlcnRpZXNIABJMChBvY2N1cGFuY3lfc2Vuc29yGAYgASgLMjAua3VzaW50YS5pb3QuZGV2aWNlLnYxLk9jY3VwYW5jeVNlbnNvclByb3BlcnRpZXNIABJICg5jb250YWN0X3NlbnNvchgHIAEoCzIuLmt1c2ludGEuaW90LmRldmljZS52MS5Db250YWN0U2Vuc29yUHJvcGVydGllc0gAEkoKD3dpbmRvd19jb3ZlcmluZxgIIAEoCzIvLmt1c2ludGEuaW90LmRldmljZS52MS5XaW5kb3dDb3ZlcmluZ1Byb3BlcnRpZXNIABI+Cglkb29yX2xvY2sYCSABKAsyKS5rdXNpbnRhLmlvdC5kZXZpY2UudjEuRG9vckxvY2tQcm9wZXJ0aWVzSAASQwoMb25fb2ZmX2xpZ2h0GAogASgLMisua3VzaW50YS5pb3QuZGV2aWNlLnYxLk9uT2ZmTGlnaHRQcm9wZXJ0aWVzSAASSAoOZGltbWFibGVfbGlnaHQYCyABKAsyLi5rdXNpbnRhLmlvdC5kZXZpY2UudjEuRGltbWFibGVMaWdodFByb3BlcnRpZXNIABJSChBjb2xvcl90ZW1wX2xpZ2h0GAwgASgLMjYua3VzaW50YS5pb3QuZGV2aWNlLnYxLkNvbG9yVGVtcGVyYXR1cmVMaWdodFByb3BlcnRpZXNIABJGCg1lbmVyZ3lfc2Vuc29yGA0gASgLMi0ua3VzaW50YS5pb3QuZGV2aWNlLnYxLkVuZXJneVNlbnNvclByb3BlcnRpZXNIABJKCg9wcmVzc3VyZV9zZW5zb3IYDiABKAsyLy5rdXNpbnRhLmlvdC5kZXZpY2UudjEuUHJlc3N1cmVTZW5zb3JQcm9wZXJ0aWVzSAASRAoMcG93ZXJfc291cmNlGA8gASgLMiwua3VzaW50YS5pb3QuZGV2aWNlLnYxLlBvd2VyU291cmNlUHJvcGVydGllc0gAEksKDWhtX3RoZXJtb3N0YXQYMiABKAsyMi5rdXNpbnRhLmlvdC52ZW5kb3IuaG9tZW1hdGljLnYxLkhtVGhlcm1vc3RhdFByb3BzSAESNQoIY2x1c3RlcnMYECADKAsyIy5rdXNpbnRhLmlvdC5kZXZpY2UudjEuQ2x1c3RlclN0YXRlQhMKEW1hdHRlcl9wcm9wZXJ0aWVzQhMKEXZlbmRvcl9wcm9wZXJ0aWVzIrADCgZEZXZpY2USOwoKZGVzY3JpcHRvchgBIAEoCzInLmt1c2ludGEuaW90LmRldmljZS52MS5EZXZpY2VEZXNjcmlwdG9yEjIKCWVuZHBvaW50cxgOIAMoCzIfLmt1c2ludGEuaW90LmRldmljZS52MS5FbmRwb2ludBItCglsYXN0X3NlZW4YFCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEjAKDGxhc3RfdXBkYXRlZBgVIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBKBAgCEA5KBAgyEDNSCnRoZXJtb3N0YXRSEnRlbXBlcmF0dXJlX3NlbnNvclIPaHVtaWRpdHlfc2Vuc29yUhBvY2N1cGFuY3lfc2Vuc29yUg5jb250YWN0X3NlbnNvclIPd2luZG93X2NvdmVyaW5nUglkb29yX2xvY2tSDG9uX29mZl9saWdodFIOZGltbWFibGVfbGlnaHRSEGNvbG9yX3RlbXBfbGlnaHRSDWVuZXJneV9zZW5zb3JSD3ByZXNzdXJlX3NlbnNvclIJaG9tZW1hdGljQgJIAWIGcHJvdG8z", [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]);
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* Describes the message kusinta.iot.device.v1.Endpoint.
|
|
20
|
+
* Use `create(EndpointSchema)` to create a new message.
|
|
21
|
+
*/
|
|
22
|
+
export const EndpointSchema = /*@__PURE__*/
|
|
23
|
+
messageDesc(file_kusinta_iot_device_v1_device, 0);
|
|
16
24
|
|
|
17
25
|
/**
|
|
18
26
|
* Describes the message kusinta.iot.device.v1.Device.
|
|
19
27
|
* Use `create(DeviceSchema)` to create a new message.
|
|
20
28
|
*/
|
|
21
29
|
export const DeviceSchema = /*@__PURE__*/
|
|
22
|
-
messageDesc(file_kusinta_iot_device_v1_device,
|
|
30
|
+
messageDesc(file_kusinta_iot_device_v1_device, 1);
|
|
23
31
|
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
// @generated by protoc-gen-es v2.12.0 with parameter "target=js+dts,import_extension=js"
|
|
2
|
+
// @generated from file kusinta/iot/device/v1/matter_options.proto (package kusinta.iot.device.v1, syntax proto3)
|
|
3
|
+
/* eslint-disable */
|
|
4
|
+
|
|
5
|
+
import type { GenExtension, GenFile } from "@bufbuild/protobuf/codegenv2";
|
|
6
|
+
import type { FieldOptions, MessageOptions } from "@bufbuild/protobuf/wkt";
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* Describes the file kusinta/iot/device/v1/matter_options.proto.
|
|
10
|
+
*/
|
|
11
|
+
export declare const file_kusinta_iot_device_v1_matter_options: GenFile;
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* The Matter cluster this attribute belongs to, e.g. 0x0201 for Thermostat.
|
|
15
|
+
*
|
|
16
|
+
* Required alongside matter_attribute because a properties message may span
|
|
17
|
+
* clusters: DimmableLightProperties.on_off is On/Off (0x0006) while its
|
|
18
|
+
* current_level is Level Control (0x0008). Matches PropertyUpdate.cluster_id, which
|
|
19
|
+
* is a uint32 too, so the comparison needs no parsing.
|
|
20
|
+
*
|
|
21
|
+
* @generated from extension: uint32 matter_cluster_id = 50001;
|
|
22
|
+
*/
|
|
23
|
+
export declare const matter_cluster_id: GenExtension<FieldOptions, number>;
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* The Matter attribute name in the spec's own PascalCase, e.g.
|
|
27
|
+
* "PIROccupiedToUnoccupiedDelay". This is the authoritative spelling; the proto
|
|
28
|
+
* field name is not derived from it and must not be assumed to be. Matches
|
|
29
|
+
* PropertyUpdate.attribute_name byte for byte.
|
|
30
|
+
*
|
|
31
|
+
* @generated from extension: string matter_attribute = 50002;
|
|
32
|
+
*/
|
|
33
|
+
export declare const matter_attribute: GenExtension<FieldOptions, string>;
|
|
34
|
+
|
|
35
|
+
/**
|
|
36
|
+
* The Matter attribute ID within that cluster, e.g. 0x0012 for OccupiedHeatingSetpoint.
|
|
37
|
+
* This is what a PropertyUpdate resolves on — Matter addresses attributes numerically and
|
|
38
|
+
* so does this schema, because the generic cluster carrier must address attributes of
|
|
39
|
+
* clusters this schema does not model, and a vendor-defined cluster has no spec name to
|
|
40
|
+
* address it by. One scheme rather than two.
|
|
41
|
+
*
|
|
42
|
+
* matter_attribute above stays as the authoritative spelling for logs and for anything
|
|
43
|
+
* rendering an attribute to a human; it is not what resolution matches on.
|
|
44
|
+
*
|
|
45
|
+
* @generated from extension: uint32 matter_attribute_id = 50006;
|
|
46
|
+
*/
|
|
47
|
+
export declare const matter_attribute_id: GenExtension<FieldOptions, number>;
|
|
48
|
+
|
|
49
|
+
/**
|
|
50
|
+
* The Matter device type IDs this properties message models, e.g. 0x0301 for
|
|
51
|
+
* Thermostat. Repeated because one shape of properties can serve several device
|
|
52
|
+
* types; empty on vendor extension messages, which have no Matter device type.
|
|
53
|
+
*
|
|
54
|
+
* A device type appears on at most one properties message, so the mapping from
|
|
55
|
+
* Endpoint.matter_device_type_id to an Endpoint.matter_properties case is a
|
|
56
|
+
* function.
|
|
57
|
+
*
|
|
58
|
+
* @generated from extension: repeated uint32 matter_device_type = 50003;
|
|
59
|
+
*/
|
|
60
|
+
export declare const matter_device_type: GenExtension<MessageOptions, number[]>;
|
|
61
|
+
|
|
62
|
+
/**
|
|
63
|
+
* The Matter cluster a command-parameters message belongs to, e.g. 0x0006 for On/Off.
|
|
64
|
+
* Always exactly one — a parameters message never spans clusters.
|
|
65
|
+
*
|
|
66
|
+
* @generated from extension: uint32 matter_command_cluster = 50007;
|
|
67
|
+
*/
|
|
68
|
+
export declare const matter_command_cluster: GenExtension<MessageOptions, number>;
|
|
69
|
+
|
|
70
|
+
/**
|
|
71
|
+
* The Matter command ID this parameters message carries arguments for, e.g. 0x00 for
|
|
72
|
+
* Thermostat's SetpointRaiseLower.
|
|
73
|
+
*
|
|
74
|
+
* Singular on purpose. An earlier form was repeated, so that one message could cover
|
|
75
|
+
* several commands and choose between them by its own fields — but a message that
|
|
76
|
+
* encodes WHICH command it is duplicates DeviceCommand.matter_command_id, in a second
|
|
77
|
+
* numbering, with nothing reconciling the two. The parameters carry arguments; the
|
|
78
|
+
* command ID says which command. A message shared by several commands that take the
|
|
79
|
+
* same arguments simply omits this and lets matter_command_id stand alone.
|
|
80
|
+
*
|
|
81
|
+
* @generated from extension: optional uint32 matter_command_id = 50008;
|
|
82
|
+
*/
|
|
83
|
+
export declare const matter_command_id: GenExtension<MessageOptions, number>;
|
|
84
|
+
|