@kusinta/iot-schema 0.1.0-beta.9 → 0.2.0-beta.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (53) hide show
  1. package/package.json +19 -2
  2. package/src/kusinta/iot/access/v1/acl_pb.d.ts +230 -11
  3. package/src/kusinta/iot/access/v1/acl_pb.js +26 -5
  4. package/src/kusinta/iot/access/v1/roles_pb.d.ts +95 -2
  5. package/src/kusinta/iot/access/v1/roles_pb.js +37 -1
  6. package/src/kusinta/iot/common/v1/pairing_pb.d.ts +201 -0
  7. package/src/kusinta/iot/common/v1/pairing_pb.js +50 -0
  8. package/src/kusinta/iot/connector/v1/connector_pb.d.ts +481 -34
  9. package/src/kusinta/iot/connector/v1/connector_pb.js +81 -22
  10. package/src/kusinta/iot/connector/v1/connector_service_pb.d.ts +5 -5
  11. package/src/kusinta/iot/connector/v1/connector_service_pb.js +1 -1
  12. package/src/kusinta/iot/device/v1/cluster_state_pb.d.ts +263 -0
  13. package/src/kusinta/iot/device/v1/cluster_state_pb.js +54 -0
  14. package/src/kusinta/iot/device/v1/descriptor_pb.d.ts +53 -9
  15. package/src/kusinta/iot/device/v1/descriptor_pb.js +3 -1
  16. package/src/kusinta/iot/device/v1/device_event_pb.d.ts +162 -0
  17. package/src/kusinta/iot/device/v1/device_event_pb.js +45 -0
  18. package/src/kusinta/iot/device/v1/device_pb.d.ts +185 -28
  19. package/src/kusinta/iot/device/v1/device_pb.js +10 -2
  20. package/src/kusinta/iot/device/v1/matter_options_pb.d.ts +110 -0
  21. package/src/kusinta/iot/device/v1/matter_options_pb.js +118 -0
  22. package/src/kusinta/iot/device/v1/properties_pb.d.ts +240 -205
  23. package/src/kusinta/iot/device/v1/properties_pb.js +9 -1
  24. package/src/kusinta/iot/device/v1/property_update_pb.d.ts +197 -8
  25. package/src/kusinta/iot/device/v1/property_update_pb.js +20 -2
  26. package/src/kusinta/iot/link/v1/link_pb.d.ts +419 -0
  27. package/src/kusinta/iot/link/v1/link_pb.js +121 -0
  28. package/src/kusinta/iot/registration/v1/registration_pb.d.ts +170 -0
  29. package/src/kusinta/iot/registration/v1/registration_pb.js +61 -0
  30. package/src/kusinta/iot/registration/v1/registration_service_pb.d.ts +34 -0
  31. package/src/kusinta/iot/registration/v1/registration_service_pb.js +19 -0
  32. package/src/kusinta/iot/signaling/v1/signaling_pb.d.ts +320 -0
  33. package/src/kusinta/iot/signaling/v1/signaling_pb.js +83 -0
  34. package/src/kusinta/iot/signaling/v1/signaling_service_pb.d.ts +34 -0
  35. package/src/kusinta/iot/signaling/v1/signaling_service_pb.js +19 -0
  36. package/src/kusinta/iot/vendor/homematic/v1/homematic_pb.d.ts +202 -35
  37. package/src/kusinta/iot/vendor/homematic/v1/homematic_pb.js +14 -6
  38. package/src/kusinta/iot/vendor/v1/vendor_options_pb.d.ts +71 -0
  39. package/src/kusinta/iot/vendor/v1/vendor_options_pb.js +75 -0
  40. package/src/kusinta/iot/webrtc/v1/app_token_pb.d.ts +152 -0
  41. package/src/kusinta/iot/webrtc/v1/app_token_pb.js +28 -0
  42. package/src/kusinta/iot/webrtc/v1/command_pb.d.ts +277 -39
  43. package/src/kusinta/iot/webrtc/v1/command_pb.js +29 -2
  44. package/src/kusinta/iot/webrtc/v1/device_state_pb.d.ts +76 -7
  45. package/src/kusinta/iot/webrtc/v1/device_state_pb.js +20 -5
  46. package/src/kusinta/iot/webrtc/v1/envelope_pb.d.ts +603 -25
  47. package/src/kusinta/iot/webrtc/v1/envelope_pb.js +99 -5
  48. package/src/kusinta/iot/webrtc/v1/management_pb.d.ts +627 -0
  49. package/src/kusinta/iot/webrtc/v1/management_pb.js +135 -0
  50. package/src/kusinta/iot/webrtc/v1/permission_push_pb.d.ts +7 -1
  51. package/src/kusinta/iot/webrtc/v1/permission_push_pb.js +2 -2
  52. package/src/kusinta/iot/webrtc/v1/setpoint_mode_pb.d.ts +63 -0
  53. package/src/kusinta/iot/webrtc/v1/setpoint_mode_pb.js +45 -0
@@ -0,0 +1,34 @@
1
+ // @generated by protoc-gen-es v2.12.0 with parameter "target=js+dts,import_extension=js"
2
+ // @generated from file kusinta/iot/signaling/v1/signaling_service.proto (package kusinta.iot.signaling.v1, syntax proto3)
3
+ /* eslint-disable */
4
+
5
+ import type { GenFile, GenService } from "@bufbuild/protobuf/codegenv2";
6
+ import type { GatewayConnectRequestSchema, GatewayConnectResponseSchema, UserConnectRequestSchema, UserConnectResponseSchema } from "./signaling_pb.js";
7
+
8
+ /**
9
+ * Describes the file kusinta/iot/signaling/v1/signaling_service.proto.
10
+ */
11
+ export declare const file_kusinta_iot_signaling_v1_signaling_service: GenFile;
12
+
13
+ /**
14
+ * @generated from service kusinta.iot.signaling.v1.GatewaySignalingService
15
+ */
16
+ export declare const GatewaySignalingService: GenService<{
17
+ /**
18
+ * @generated from rpc kusinta.iot.signaling.v1.GatewaySignalingService.GatewayConnect
19
+ */
20
+ gatewayConnect: {
21
+ methodKind: "bidi_streaming";
22
+ input: typeof GatewayConnectRequestSchema;
23
+ output: typeof GatewayConnectResponseSchema;
24
+ },
25
+ /**
26
+ * @generated from rpc kusinta.iot.signaling.v1.GatewaySignalingService.UserConnect
27
+ */
28
+ userConnect: {
29
+ methodKind: "bidi_streaming";
30
+ input: typeof UserConnectRequestSchema;
31
+ output: typeof UserConnectResponseSchema;
32
+ },
33
+ }>;
34
+
@@ -0,0 +1,19 @@
1
+ // @generated by protoc-gen-es v2.12.0 with parameter "target=js+dts,import_extension=js"
2
+ // @generated from file kusinta/iot/signaling/v1/signaling_service.proto (package kusinta.iot.signaling.v1, syntax proto3)
3
+ /* eslint-disable */
4
+
5
+ import { fileDesc, serviceDesc } from "@bufbuild/protobuf/codegenv2";
6
+ import { file_kusinta_iot_signaling_v1_signaling } from "./signaling_pb.js";
7
+
8
+ /**
9
+ * Describes the file kusinta/iot/signaling/v1/signaling_service.proto.
10
+ */
11
+ export const file_kusinta_iot_signaling_v1_signaling_service = /*@__PURE__*/
12
+ fileDesc("CjBrdXNpbnRhL2lvdC9zaWduYWxpbmcvdjEvc2lnbmFsaW5nX3NlcnZpY2UucHJvdG8SGGt1c2ludGEuaW90LnNpZ25hbGluZy52MTKCAgoXR2F0ZXdheVNpZ25hbGluZ1NlcnZpY2USdwoOR2F0ZXdheUNvbm5lY3QSLy5rdXNpbnRhLmlvdC5zaWduYWxpbmcudjEuR2F0ZXdheUNvbm5lY3RSZXF1ZXN0GjAua3VzaW50YS5pb3Quc2lnbmFsaW5nLnYxLkdhdGV3YXlDb25uZWN0UmVzcG9uc2UoATABEm4KC1VzZXJDb25uZWN0Eiwua3VzaW50YS5pb3Quc2lnbmFsaW5nLnYxLlVzZXJDb25uZWN0UmVxdWVzdBotLmt1c2ludGEuaW90LnNpZ25hbGluZy52MS5Vc2VyQ29ubmVjdFJlc3BvbnNlKAEwAUICSAFiBnByb3RvMw", [file_kusinta_iot_signaling_v1_signaling]);
13
+
14
+ /**
15
+ * @generated from service kusinta.iot.signaling.v1.GatewaySignalingService
16
+ */
17
+ export const GatewaySignalingService = /*@__PURE__*/
18
+ serviceDesc(file_kusinta_iot_signaling_v1_signaling_service, 0);
19
+
@@ -11,40 +11,140 @@ import type { Message } from "@bufbuild/protobuf";
11
11
  export declare const file_kusinta_iot_vendor_homematic_v1_homematic: GenFile;
12
12
 
13
13
  /**
14
- * HomeMatic-specific thermostat properties not available in Matter Thermostat cluster.
15
- * Add new fields at the next available field number — never reuse a removed number.
14
+ * Who a HomeMatic device is, in its own terms. Identity, not readings — it describes the
15
+ * physical device, so it hangs off device.v1.DeviceDescriptor rather than off any one
16
+ * endpoint.
17
+ *
18
+ * @generated from message kusinta.iot.vendor.homematic.v1.HomematicDeviceIdentity
19
+ */
20
+ export declare type HomematicDeviceIdentity = Message<"kusinta.iot.vendor.homematic.v1.HomematicDeviceIdentity"> & {
21
+ /**
22
+ * upstream device address, e.g. "MEQ1234567"
23
+ *
24
+ * @generated from field: string address = 1;
25
+ */
26
+ address: string;
27
+
28
+ /**
29
+ * aiohomematic device type string, e.g. "HmIP-eTRV-C"
30
+ *
31
+ * @generated from field: string type = 2;
32
+ */
33
+ type: string;
34
+ };
35
+
36
+ /**
37
+ * Describes the message kusinta.iot.vendor.homematic.v1.HomematicDeviceIdentity.
38
+ * Use `create(HomematicDeviceIdentitySchema)` to create a new message.
39
+ */
40
+ export declare const HomematicDeviceIdentitySchema: GenMessage<HomematicDeviceIdentity>;
41
+
42
+ /**
43
+ * HomeMatic thermostat parameters with no Matter equivalent, carried on the same endpoint
44
+ * as that thermostat's Matter properties rather than instead of them.
45
+ *
46
+ * "No Matter equivalent" is the entry test, and it is the one to apply before adding a
47
+ * field here. Valve position failed it: LEVEL is Thermostat/PIHeatingDemand, and it lived
48
+ * here for a while under the claim that Matter had nothing for it. It is now
49
+ * device.v1.ThermostatProperties.pi_heating_demand, and field 6 is burned.
50
+ *
51
+ * Battery state is deliberately NOT here. LOW_BAT and OPERATING_VOLTAGE are Matter's
52
+ * PowerSource cluster, which every battery device from every technology needs, so they
53
+ * belong on a Power Source endpoint. See device/v1/properties.proto.
54
+ *
55
+ * Every field is `optional`, for the same reason as device/v1/properties.proto: these are
56
+ * assembled from a PropertyUpdate stream, and zero is a real reading here too — boost_mode
57
+ * false means not boosting, control_mode 0 is an HmIP ControlMode value. Absent means never
58
+ * reported; present means a reading, including zero.
59
+ *
60
+ * Enum parameters cross the wire as the CCU's own index, not as a type this schema defines,
61
+ * so each one lists its values in its comment. The order is the CCU's; do not renumber it.
62
+ *
63
+ * Add new fields at the next available number — never reuse a removed one.
16
64
  *
17
65
  * @generated from message kusinta.iot.vendor.homematic.v1.HmThermostatProps
18
66
  */
19
67
  export declare type HmThermostatProps = Message<"kusinta.iot.vendor.homematic.v1.HmThermostatProps"> & {
20
68
  /**
21
- * @generated from field: bool boost_mode = 1;
69
+ * @generated from field: optional bool boost_mode = 1;
70
+ */
71
+ boostMode?: boolean | undefined;
72
+
73
+ /**
74
+ * Seconds remaining, 0-2048 — the CCU counts boost in whole seconds, not minutes.
75
+ * Default boost is 5 min (300), maximum 30 min (1800).
76
+ *
77
+ * @generated from field: optional uint32 boost_time_remaining = 2;
78
+ */
79
+ boostTimeRemaining?: number | undefined;
80
+
81
+ /**
82
+ * Write-only on the CCU: it accepts a ControlMode and never reports one back. Carried
83
+ * here for a future write path, not as a reading — a connector that emits it as a
84
+ * PropertyUpdate is sending a value the device never gave. 0-3.
85
+ *
86
+ * @generated from field: optional uint32 control_mode = 3;
87
+ */
88
+ controlMode?: number | undefined;
89
+
90
+ /**
91
+ * @generated from field: optional bool frost_protection = 4;
92
+ */
93
+ frostProtection?: boolean | undefined;
94
+
95
+ /**
96
+ * Party mode active. A boolean, whatever the old field name suggested.
97
+ *
98
+ * @generated from field: optional bool party_mode = 5;
99
+ */
100
+ partyMode?: boolean | undefined;
101
+
102
+ /**
103
+ * CLOSED = 0, OPEN = 1
104
+ *
105
+ * @generated from field: optional uint32 window_state = 7;
22
106
  */
23
- boostMode: boolean;
107
+ windowState?: number | undefined;
24
108
 
25
109
  /**
26
- * minutes remaining in boost
110
+ * Valve fault and adaption state, nine CCU-defined values. Radiator valves only — a wall
111
+ * thermostat drives no valve and never reports it.
27
112
  *
28
- * @generated from field: float boost_time_period = 2;
113
+ * @generated from field: optional uint32 valve_state = 8;
29
114
  */
30
- boostTimePeriod: number;
115
+ valveState?: number | undefined;
31
116
 
32
117
  /**
33
- * HmIP ControlMode enum
118
+ * Which schedule the thermostat is following: AUTO = 0, MANU = 1, AWAY = 2, plus a
119
+ * fourth CCU value. NOT webrtc.v1.SetpointAdjustMode, which names which setpoint a
120
+ * command targets — a different enum over a different set of concepts.
34
121
  *
35
- * @generated from field: uint32 control_mode = 3;
122
+ * @generated from field: optional uint32 set_point_mode = 9;
36
123
  */
37
- controlMode: number;
124
+ setPointMode?: number | undefined;
38
125
 
39
126
  /**
40
- * @generated from field: bool frost_protection = 4;
127
+ * The active weekly profile: 1-3 on a radiator valve, 1-6 on a wall thermostat. The
128
+ * upper bound is the device's, not the protocol's.
129
+ *
130
+ * @generated from field: optional uint32 active_profile = 10;
41
131
  */
42
- frostProtection: boolean;
132
+ activeProfile?: number | undefined;
43
133
 
44
134
  /**
45
- * @generated from field: float current_profile_period = 5;
135
+ * Whether the measured temperature is usable: NORMAL = 0, UNKNOWN = 1, OVERFLOW = 2,
136
+ * UNDERFLOW = 3. A reading beside ACTUAL_TEMPERATURE, not a substitute for it.
137
+ *
138
+ * @generated from field: optional uint32 actual_temperature_status = 11;
139
+ */
140
+ actualTemperatureStatus?: number | undefined;
141
+
142
+ /**
143
+ * Valve adaption run: writing true starts the valve's stroke calibration.
144
+ *
145
+ * @generated from field: optional bool valve_adaption = 12;
46
146
  */
47
- currentProfilePeriod: number;
147
+ valveAdaption?: boolean | undefined;
48
148
  };
49
149
 
50
150
  /**
@@ -54,41 +154,108 @@ export declare type HmThermostatProps = Message<"kusinta.iot.vendor.homematic.v1
54
154
  export declare const HmThermostatPropsSchema: GenMessage<HmThermostatProps>;
55
155
 
56
156
  /**
57
- * Top-level vendor extension attached to Device.properties field 50.
58
- * Carries the CCU3 device address + aiohomematic type string + device-type-specific props.
157
+ * The maintenance channel every HomeMatic device carries — device health and radio state,
158
+ * not what the device measures or controls.
59
159
  *
60
- * @generated from message kusinta.iot.vendor.homematic.v1.HomematicVendorExtension
160
+ * It is device-agnostic: a radiator valve, a wall thermostat and a switch actuator all
161
+ * report the same core set on the same channel, which is why this is one message rather
162
+ * than a per-device-type one. Which of these a given device actually has is model-
163
+ * dependent, and stated per device in device.v1.Endpoint.vendor_attribute_names — SABOTAGE
164
+ * especially, where "no tamper detected" and "cannot detect tamper" must not render alike.
165
+ *
166
+ * Not a Matter endpoint of its own: the maintenance channel is channel 0 upstream, and
167
+ * Matter reserves endpoint 0 for the root node. A connector puts these readings on the
168
+ * endpoint whose Matter properties they belong beside — the Power Source endpoint, whose
169
+ * battery attributes are derived from this same channel's LOW_BAT and OPERATING_VOLTAGE.
170
+ *
171
+ * LOW_BAT, OPERATING_VOLTAGE and OPERATING_VOLTAGE_LEVEL are deliberately absent: they are
172
+ * Matter's PowerSource cluster, and PowerSourceProperties carries them. Only the derived
173
+ * Matter value has a home there, so the raw OPERATING_VOLTAGE_STATUS enum is kept here.
174
+ *
175
+ * Every field is `optional`, for the reason HmThermostatProps gives: ERROR_CODE 0 is "no
176
+ * error", a reading, and SABOTAGE false is a safety claim.
177
+ *
178
+ * @generated from message kusinta.iot.vendor.homematic.v1.HmMaintenanceProps
61
179
  */
62
- export declare type HomematicVendorExtension = Message<"kusinta.iot.vendor.homematic.v1.HomematicVendorExtension"> & {
180
+ export declare type HmMaintenanceProps = Message<"kusinta.iot.vendor.homematic.v1.HmMaintenanceProps"> & {
181
+ /**
182
+ * Device-defined fault code, 0-255, where 0 is no error. Present only on models that
183
+ * have one.
184
+ *
185
+ * @generated from field: optional uint32 error_code = 1;
186
+ */
187
+ errorCode?: number | undefined;
188
+
189
+ /**
190
+ * Tamper detection: true means the device reports having been removed or opened. Present
191
+ * only on models with the hardware for it.
192
+ *
193
+ * @generated from field: optional bool sabotage = 2;
194
+ */
195
+ sabotage?: boolean | undefined;
196
+
197
+ /**
198
+ * Received signal strength in dBm, -128 to 127, as this device measures it.
199
+ *
200
+ * sint32, not uint32: these are negative in normal operation, and an unsigned field would
201
+ * carry -72 dBm as 4294967224.
202
+ *
203
+ * @generated from field: optional sint32 rssi_device = 3;
204
+ */
205
+ rssiDevice?: number | undefined;
206
+
207
+ /**
208
+ * The same measurement made at the other end of the link, as reported back.
209
+ *
210
+ * @generated from field: optional sint32 rssi_peer = 4;
211
+ */
212
+ rssiPeer?: number | undefined;
213
+
63
214
  /**
64
- * e.g. "MEQ1234567" (CCU3 device address)
215
+ * Supply state as the CCU reports it: NORMAL = 0, UNKNOWN = 1, OVERFLOW = 2,
216
+ * EXTERNAL = 3. The raw enum; PowerSourceProperties.status carries the Matter
217
+ * PowerSourceStatusEnum value derived from it, and the two are not interchangeable.
65
218
  *
66
- * @generated from field: string homematic_address = 1;
219
+ * @generated from field: optional uint32 operating_voltage_status = 5;
67
220
  */
68
- homematicAddress: string;
221
+ operatingVoltageStatus?: number | undefined;
69
222
 
70
223
  /**
71
- * aiohomematic device type string e.g. "HmIP-eTRV-C"
224
+ * True when the gateway has lost contact with the device. Reachability as the upstream
225
+ * system sees it, which is not the same claim as device.v1.Device.last_seen — that is
226
+ * when the gateway last had evidence of the device, observed one hop further out.
72
227
  *
73
- * @generated from field: string homematic_type = 2;
228
+ * @generated from field: optional bool unreach = 6;
74
229
  */
75
- homematicType: string;
230
+ unreach?: boolean | undefined;
76
231
 
77
232
  /**
78
- * @generated from oneof kusinta.iot.vendor.homematic.v1.HomematicVendorExtension.homematic_props
233
+ * True while a configuration change is queued for a device that has not yet woken to
234
+ * take it. A battery device can sit here for its whole report interval.
235
+ *
236
+ * @generated from field: optional bool config_pending = 7;
237
+ */
238
+ configPending?: boolean | undefined;
239
+
240
+ /**
241
+ * True while the device has spent its share of the radio band's transmit budget and
242
+ * must wait before sending again. The 868 MHz band permits roughly one percent duty
243
+ * cycle, and it regenerates at about that rate per half minute.
244
+ *
245
+ * Worth carrying rather than leaving to the connector, because a spent budget is
246
+ * indistinguishable from a working device that simply has nothing to say: it stays
247
+ * reachable, reports no error, and silently drops what it was asked to do. Anything
248
+ * that writes on a schedule needs to be able to see this before it concludes a device
249
+ * is ignoring it.
250
+ *
251
+ * @generated from field: optional bool duty_cycle = 8;
79
252
  */
80
- homematicProps: {
81
- /**
82
- * @generated from field: kusinta.iot.vendor.homematic.v1.HmThermostatProps hm_thermostat = 10;
83
- */
84
- value: HmThermostatProps;
85
- case: "hmThermostat";
86
- } | { case: undefined; value?: undefined };
253
+ dutyCycle?: boolean | undefined;
87
254
  };
88
255
 
89
256
  /**
90
- * Describes the message kusinta.iot.vendor.homematic.v1.HomematicVendorExtension.
91
- * Use `create(HomematicVendorExtensionSchema)` to create a new message.
257
+ * Describes the message kusinta.iot.vendor.homematic.v1.HmMaintenanceProps.
258
+ * Use `create(HmMaintenancePropsSchema)` to create a new message.
92
259
  */
93
- export declare const HomematicVendorExtensionSchema: GenMessage<HomematicVendorExtension>;
260
+ export declare const HmMaintenancePropsSchema: GenMessage<HmMaintenanceProps>;
94
261
 
@@ -3,24 +3,32 @@
3
3
  /* eslint-disable */
4
4
 
5
5
  import { fileDesc, messageDesc } from "@bufbuild/protobuf/codegenv2";
6
+ import { file_kusinta_iot_vendor_v1_vendor_options } from "../../v1/vendor_options_pb.js";
6
7
 
7
8
  /**
8
9
  * Describes the file kusinta/iot/vendor/homematic/v1/homematic.proto.
9
10
  */
10
11
  export const file_kusinta_iot_vendor_homematic_v1_homematic = /*@__PURE__*/
11
- fileDesc("Ci9rdXNpbnRhL2lvdC92ZW5kb3IvaG9tZW1hdGljL3YxL2hvbWVtYXRpYy5wcm90bxIfa3VzaW50YS5pb3QudmVuZG9yLmhvbWVtYXRpYy52MSKSAQoRSG1UaGVybW9zdGF0UHJvcHMSEgoKYm9vc3RfbW9kZRgBIAEoCBIZChFib29zdF90aW1lX3BlcmlvZBgCIAEoAhIUCgxjb250cm9sX21vZGUYAyABKA0SGAoQZnJvc3RfcHJvdGVjdGlvbhgEIAEoCBIeChZjdXJyZW50X3Byb2ZpbGVfcGVyaW9kGAUgASgCIq0BChhIb21lbWF0aWNWZW5kb3JFeHRlbnNpb24SGQoRaG9tZW1hdGljX2FkZHJlc3MYASABKAkSFgoOaG9tZW1hdGljX3R5cGUYAiABKAkSSwoNaG1fdGhlcm1vc3RhdBgKIAEoCzIyLmt1c2ludGEuaW90LnZlbmRvci5ob21lbWF0aWMudjEuSG1UaGVybW9zdGF0UHJvcHNIAEIRCg9ob21lbWF0aWNfcHJvcHNCAkgBYgZwcm90bzM");
12
+ fileDesc("Ci9rdXNpbnRhL2lvdC92ZW5kb3IvaG9tZW1hdGljL3YxL2hvbWVtYXRpYy5wcm90bxIfa3VzaW50YS5pb3QudmVuZG9yLmhvbWVtYXRpYy52MSI4ChdIb21lbWF0aWNEZXZpY2VJZGVudGl0eRIPCgdhZGRyZXNzGAEgASgJEgwKBHR5cGUYAiABKAki/wYKEUhtVGhlcm1vc3RhdFByb3BzEisKCmJvb3N0X21vZGUYASABKAhCEqK1GApCT09TVF9NT0RF0LUYBkgAiAEBEjUKFGJvb3N0X3RpbWVfcmVtYWluaW5nGAIgASgNQhKitRgKQk9PU1RfVElNRdC1GAVIAYgBARIvCgxjb250cm9sX21vZGUYAyABKA1CFKK1GAxDT05UUk9MX01PREXQtRgCSAKIAQESNwoQZnJvc3RfcHJvdGVjdGlvbhgEIAEoCEIYorUYEEZST1NUX1BST1RFQ1RJT07QtRgFSAOIAQESKwoKcGFydHlfbW9kZRgFIAEoCEISorUYClBBUlRZX01PREXQtRgFSASIAQESLwoMd2luZG93X3N0YXRlGAcgASgNQhSitRgMV0lORE9XX1NUQVRF0LUYB0gFiAEBEi0KC3ZhbHZlX3N0YXRlGAggASgNQhOitRgLVkFMVkVfU1RBVEXQtRgFSAaIAQESMwoOc2V0X3BvaW50X21vZGUYCSABKA1CFqK1GA5TRVRfUE9JTlRfTU9ERdC1GAdIB4gBARIzCg5hY3RpdmVfcHJvZmlsZRgKIAEoDUIWorUYDkFDVElWRV9QUk9GSUxF0LUYB0gIiAEBEkkKGWFjdHVhbF90ZW1wZXJhdHVyZV9zdGF0dXMYCyABKA1CIaK1GBlBQ1RVQUxfVEVNUEVSQVRVUkVfU1RBVFVT0LUYBUgJiAEBEjMKDnZhbHZlX2FkYXB0aW9uGAwgASgIQhaitRgOVkFMVkVfQURBUFRJT07QtRgHSAqIAQE6GKq1GBRob21lbWF0aWMudGhlcm1vc3RhdEINCgtfYm9vc3RfbW9kZUIXChVfYm9vc3RfdGltZV9yZW1haW5pbmdCDwoNX2NvbnRyb2xfbW9kZUITChFfZnJvc3RfcHJvdGVjdGlvbkINCgtfcGFydHlfbW9kZUIPCg1fd2luZG93X3N0YXRlQg4KDF92YWx2ZV9zdGF0ZUIRCg9fc2V0X3BvaW50X21vZGVCEQoPX2FjdGl2ZV9wcm9maWxlQhwKGl9hY3R1YWxfdGVtcGVyYXR1cmVfc3RhdHVzQhEKD192YWx2ZV9hZGFwdGlvbkoECAYQB1IFbGV2ZWxSFmN1cnJlbnRfcHJvZmlsZV9wZXJpb2RSEWJvb3N0X3RpbWVfcGVyaW9kIrYEChJIbU1haW50ZW5hbmNlUHJvcHMSKwoKZXJyb3JfY29kZRgBIAEoDUISorUYCkVSUk9SX0NPREXQtRgFSACIAQESJwoIc2Fib3RhZ2UYAiABKAhCEKK1GAhTQUJPVEFHRdC1GAVIAYgBARItCgtyc3NpX2RldmljZRgDIAEoEUITorUYC1JTU0lfREVWSUNF0LUYBUgCiAEBEikKCXJzc2lfcGVlchgEIAEoEUIRorUYCVJTU0lfUEVFUtC1GAVIA4gBARJHChhvcGVyYXRpbmdfdm9sdGFnZV9zdGF0dXMYBSABKA1CIKK1GBhPUEVSQVRJTkdfVk9MVEFHRV9TVEFUVVPQtRgFSASIAQESJQoHdW5yZWFjaBgGIAEoCEIPorUYB1VOUkVBQ0jQtRgFSAWIAQESMwoOY29uZmlnX3BlbmRpbmcYByABKAhCFqK1GA5DT05GSUdfUEVORElOR9C1GAVIBogBARIrCgpkdXR5X2N5Y2xlGAggASgIQhKitRgKRFVUWV9DWUNMRdC1GAVIB4gBAToZqrUYFWhvbWVtYXRpYy5tYWludGVuYW5jZUINCgtfZXJyb3JfY29kZUILCglfc2Fib3RhZ2VCDgoMX3Jzc2lfZGV2aWNlQgwKCl9yc3NpX3BlZXJCGwoZX29wZXJhdGluZ192b2x0YWdlX3N0YXR1c0IKCghfdW5yZWFjaEIRCg9fY29uZmlnX3BlbmRpbmdCDQoLX2R1dHlfY3ljbGVCAkgBYgZwcm90bzM", [file_kusinta_iot_vendor_v1_vendor_options]);
13
+
14
+ /**
15
+ * Describes the message kusinta.iot.vendor.homematic.v1.HomematicDeviceIdentity.
16
+ * Use `create(HomematicDeviceIdentitySchema)` to create a new message.
17
+ */
18
+ export const HomematicDeviceIdentitySchema = /*@__PURE__*/
19
+ messageDesc(file_kusinta_iot_vendor_homematic_v1_homematic, 0);
12
20
 
13
21
  /**
14
22
  * Describes the message kusinta.iot.vendor.homematic.v1.HmThermostatProps.
15
23
  * Use `create(HmThermostatPropsSchema)` to create a new message.
16
24
  */
17
25
  export const HmThermostatPropsSchema = /*@__PURE__*/
18
- messageDesc(file_kusinta_iot_vendor_homematic_v1_homematic, 0);
26
+ messageDesc(file_kusinta_iot_vendor_homematic_v1_homematic, 1);
19
27
 
20
28
  /**
21
- * Describes the message kusinta.iot.vendor.homematic.v1.HomematicVendorExtension.
22
- * Use `create(HomematicVendorExtensionSchema)` to create a new message.
29
+ * Describes the message kusinta.iot.vendor.homematic.v1.HmMaintenanceProps.
30
+ * Use `create(HmMaintenancePropsSchema)` to create a new message.
23
31
  */
24
- export const HomematicVendorExtensionSchema = /*@__PURE__*/
25
- messageDesc(file_kusinta_iot_vendor_homematic_v1_homematic, 1);
32
+ export const HmMaintenancePropsSchema = /*@__PURE__*/
33
+ messageDesc(file_kusinta_iot_vendor_homematic_v1_homematic, 2);
26
34
 
@@ -0,0 +1,71 @@
1
+ // @generated by protoc-gen-es v2.12.0 with parameter "target=js+dts,import_extension=js"
2
+ // @generated from file kusinta/iot/vendor/v1/vendor_options.proto (package kusinta.iot.vendor.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/vendor/v1/vendor_options.proto.
10
+ */
11
+ export declare const file_kusinta_iot_vendor_v1_vendor_options: GenFile;
12
+
13
+ /**
14
+ * The vendor parameter this field carries, in the vendor's own spelling — e.g.
15
+ * "LEVEL", not "level". Matches device.v1.PropertyUpdate.attribute_name byte for byte
16
+ * when that update names a vendor extension.
17
+ *
18
+ * This and the Matter annotations are mutually exclusive: a field is either a Matter
19
+ * attribute or a vendor parameter. Which branch a PropertyUpdate takes is decided by
20
+ * whether it names a vendor extension, never by inspecting both.
21
+ *
22
+ * Must be unique within the message it appears in — the vendor branch matches one
23
+ * field of one message, so a repeat would make resolution ambiguous.
24
+ *
25
+ * @generated from extension: string vendor_attribute = 50004;
26
+ */
27
+ export declare const vendor_attribute: GenExtension<FieldOptions, string>;
28
+
29
+ /**
30
+ * What this vendor parameter supports, as the same bitmask device/v1/matter_options.proto
31
+ * defines: READ = 1, WRITE = 2, REPORT = 4.
32
+ *
33
+ * One mask across both branches on purpose. Bit 4 is Matter's reportable quality and, for
34
+ * HomeMatic, the parameter's EVENT bit — the same fact under two names, so a consumer
35
+ * deciding whether to draw a control or a reading asks one question either way.
36
+ *
37
+ * Where the value comes from is the difference. The Matter side reads its mask off the
38
+ * specification; a vendor parameter has no spec to defer to, so this is the upstream
39
+ * system's own answer about its own parameter — for HomeMatic, the OPERATIONS value the
40
+ * CCU reports in getParamsetDescription().
41
+ *
42
+ * Not permission, and not the implemented set: see matter_attribute_capabilities for both
43
+ * distinctions. The vendor mirror of the implemented set is
44
+ * device.v1.Endpoint.vendor_attribute_names.
45
+ *
46
+ * @generated from extension: uint32 vendor_attribute_capabilities = 50010;
47
+ */
48
+ export declare const vendor_attribute_capabilities: GenExtension<FieldOptions, number>;
49
+
50
+ /**
51
+ * The stable key identifying a vendor extension message, e.g. "homematic.thermostat".
52
+ * Matches device.v1.PropertyUpdate.vendor_extension byte for byte, and is what selects
53
+ * the Endpoint.vendor_properties case.
54
+ *
55
+ * One key per message carried in Endpoint.vendor_properties, so the vendor branch of the
56
+ * resolution rule is the same shape as the Matter branch: pick a message by a message
57
+ * option, then one field by a field option. Nothing nests.
58
+ *
59
+ * Form: "<vendor>.<what the message models>", lower_snake_case on both sides —
60
+ * "homematic.thermostat", and a humidity one would be "homematic.humidity_sensor". The
61
+ * vendor half alone is NOT a key: a vendor has one message per device type it extends,
62
+ * and two sharing a key would make the branch non-deterministic. A test asserts they
63
+ * are distinct, but it cannot tell you which of two is wrong, so keep to the form.
64
+ *
65
+ * Not derived from the package or message name — this is the authoritative spelling,
66
+ * exactly as matter_attribute is on the Matter side.
67
+ *
68
+ * @generated from extension: string vendor_extension = 50005;
69
+ */
70
+ export declare const vendor_extension: GenExtension<MessageOptions, string>;
71
+
@@ -0,0 +1,75 @@
1
+ // @generated by protoc-gen-es v2.12.0 with parameter "target=js+dts,import_extension=js"
2
+ // @generated from file kusinta/iot/vendor/v1/vendor_options.proto (package kusinta.iot.vendor.v1, syntax proto3)
3
+ /* eslint-disable */
4
+
5
+ import { extDesc, fileDesc } from "@bufbuild/protobuf/codegenv2";
6
+ import { file_google_protobuf_descriptor } from "@bufbuild/protobuf/wkt";
7
+
8
+ /**
9
+ * Describes the file kusinta/iot/vendor/v1/vendor_options.proto.
10
+ */
11
+ export const file_kusinta_iot_vendor_v1_vendor_options = /*@__PURE__*/
12
+ fileDesc("CiprdXNpbnRhL2lvdC92ZW5kb3IvdjEvdmVuZG9yX29wdGlvbnMucHJvdG8SFWt1c2ludGEuaW90LnZlbmRvci52MTpKChB2ZW5kb3JfYXR0cmlidXRlEh0uZ29vZ2xlLnByb3RvYnVmLkZpZWxkT3B0aW9ucxjUhgMgASgJUg92ZW5kb3JBdHRyaWJ1dGU6YwoddmVuZG9yX2F0dHJpYnV0ZV9jYXBhYmlsaXRpZXMSHS5nb29nbGUucHJvdG9idWYuRmllbGRPcHRpb25zGNqGAyABKA1SG3ZlbmRvckF0dHJpYnV0ZUNhcGFiaWxpdGllczpMChB2ZW5kb3JfZXh0ZW5zaW9uEh8uZ29vZ2xlLnByb3RvYnVmLk1lc3NhZ2VPcHRpb25zGNWGAyABKAlSD3ZlbmRvckV4dGVuc2lvbmIGcHJvdG8z", [file_google_protobuf_descriptor]);
13
+
14
+ /**
15
+ * The vendor parameter this field carries, in the vendor's own spelling — e.g.
16
+ * "LEVEL", not "level". Matches device.v1.PropertyUpdate.attribute_name byte for byte
17
+ * when that update names a vendor extension.
18
+ *
19
+ * This and the Matter annotations are mutually exclusive: a field is either a Matter
20
+ * attribute or a vendor parameter. Which branch a PropertyUpdate takes is decided by
21
+ * whether it names a vendor extension, never by inspecting both.
22
+ *
23
+ * Must be unique within the message it appears in — the vendor branch matches one
24
+ * field of one message, so a repeat would make resolution ambiguous.
25
+ *
26
+ * @generated from extension: string vendor_attribute = 50004;
27
+ */
28
+ export const vendor_attribute = /*@__PURE__*/
29
+ extDesc(file_kusinta_iot_vendor_v1_vendor_options, 0);
30
+
31
+ /**
32
+ * What this vendor parameter supports, as the same bitmask device/v1/matter_options.proto
33
+ * defines: READ = 1, WRITE = 2, REPORT = 4.
34
+ *
35
+ * One mask across both branches on purpose. Bit 4 is Matter's reportable quality and, for
36
+ * HomeMatic, the parameter's EVENT bit — the same fact under two names, so a consumer
37
+ * deciding whether to draw a control or a reading asks one question either way.
38
+ *
39
+ * Where the value comes from is the difference. The Matter side reads its mask off the
40
+ * specification; a vendor parameter has no spec to defer to, so this is the upstream
41
+ * system's own answer about its own parameter — for HomeMatic, the OPERATIONS value the
42
+ * CCU reports in getParamsetDescription().
43
+ *
44
+ * Not permission, and not the implemented set: see matter_attribute_capabilities for both
45
+ * distinctions. The vendor mirror of the implemented set is
46
+ * device.v1.Endpoint.vendor_attribute_names.
47
+ *
48
+ * @generated from extension: uint32 vendor_attribute_capabilities = 50010;
49
+ */
50
+ export const vendor_attribute_capabilities = /*@__PURE__*/
51
+ extDesc(file_kusinta_iot_vendor_v1_vendor_options, 1);
52
+
53
+ /**
54
+ * The stable key identifying a vendor extension message, e.g. "homematic.thermostat".
55
+ * Matches device.v1.PropertyUpdate.vendor_extension byte for byte, and is what selects
56
+ * the Endpoint.vendor_properties case.
57
+ *
58
+ * One key per message carried in Endpoint.vendor_properties, so the vendor branch of the
59
+ * resolution rule is the same shape as the Matter branch: pick a message by a message
60
+ * option, then one field by a field option. Nothing nests.
61
+ *
62
+ * Form: "<vendor>.<what the message models>", lower_snake_case on both sides —
63
+ * "homematic.thermostat", and a humidity one would be "homematic.humidity_sensor". The
64
+ * vendor half alone is NOT a key: a vendor has one message per device type it extends,
65
+ * and two sharing a key would make the branch non-deterministic. A test asserts they
66
+ * are distinct, but it cannot tell you which of two is wrong, so keep to the form.
67
+ *
68
+ * Not derived from the package or message name — this is the authoritative spelling,
69
+ * exactly as matter_attribute is on the Matter side.
70
+ *
71
+ * @generated from extension: string vendor_extension = 50005;
72
+ */
73
+ export const vendor_extension = /*@__PURE__*/
74
+ extDesc(file_kusinta_iot_vendor_v1_vendor_options, 2);
75
+