@kusinta/iot-schema 0.2.0-beta.1 → 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.
- package/package.json +7 -1
- package/src/kusinta/iot/access/v1/acl_pb.d.ts +130 -0
- package/src/kusinta/iot/access/v1/acl_pb.js +19 -5
- package/src/kusinta/iot/access/v1/roles_pb.d.ts +80 -14
- package/src/kusinta/iot/access/v1/roles_pb.js +33 -1
- package/src/kusinta/iot/common/v1/pairing_pb.d.ts +201 -0
- package/src/kusinta/iot/common/v1/pairing_pb.js +50 -0
- package/src/kusinta/iot/connector/v1/connector_pb.d.ts +423 -6
- package/src/kusinta/iot/connector/v1/connector_pb.js +70 -12
- package/src/kusinta/iot/device/v1/cluster_state_pb.d.ts +25 -0
- package/src/kusinta/iot/device/v1/cluster_state_pb.js +1 -1
- package/src/kusinta/iot/device/v1/descriptor_pb.d.ts +16 -1
- package/src/kusinta/iot/device/v1/descriptor_pb.js +2 -1
- package/src/kusinta/iot/device/v1/device_pb.d.ts +34 -3
- package/src/kusinta/iot/device/v1/device_pb.js +1 -1
- package/src/kusinta/iot/device/v1/matter_options_pb.d.ts +26 -0
- package/src/kusinta/iot/device/v1/matter_options_pb.js +31 -4
- package/src/kusinta/iot/device/v1/properties_pb.d.ts +14 -0
- package/src/kusinta/iot/device/v1/properties_pb.js +1 -1
- package/src/kusinta/iot/link/v1/link_pb.d.ts +419 -0
- package/src/kusinta/iot/link/v1/link_pb.js +121 -0
- package/src/kusinta/iot/vendor/homematic/v1/homematic_pb.d.ts +162 -13
- package/src/kusinta/iot/vendor/homematic/v1/homematic_pb.js +8 -1
- package/src/kusinta/iot/vendor/v1/vendor_options_pb.d.ts +21 -0
- package/src/kusinta/iot/vendor/v1/vendor_options_pb.js +24 -2
- package/src/kusinta/iot/webrtc/v1/command_pb.d.ts +14 -6
- package/src/kusinta/iot/webrtc/v1/command_pb.js +2 -1
- package/src/kusinta/iot/webrtc/v1/device_state_pb.d.ts +12 -6
- package/src/kusinta/iot/webrtc/v1/device_state_pb.js +5 -5
- package/src/kusinta/iot/webrtc/v1/envelope_pb.d.ts +236 -5
- package/src/kusinta/iot/webrtc/v1/envelope_pb.js +34 -3
- package/src/kusinta/iot/webrtc/v1/management_pb.d.ts +178 -2
- package/src/kusinta/iot/webrtc/v1/management_pb.js +31 -2
- package/src/kusinta/iot/webrtc/v1/permission_push_pb.js +2 -2
- package/src/kusinta/iot/webrtc/v1/setpoint_mode_pb.d.ts +63 -0
- package/src/kusinta/iot/webrtc/v1/setpoint_mode_pb.js +45 -0
|
@@ -43,6 +43,11 @@ export declare const HomematicDeviceIdentitySchema: GenMessage<HomematicDeviceId
|
|
|
43
43
|
* HomeMatic thermostat parameters with no Matter equivalent, carried on the same endpoint
|
|
44
44
|
* as that thermostat's Matter properties rather than instead of them.
|
|
45
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
|
+
*
|
|
46
51
|
* Battery state is deliberately NOT here. LOW_BAT and OPERATING_VOLTAGE are Matter's
|
|
47
52
|
* PowerSource cluster, which every battery device from every technology needs, so they
|
|
48
53
|
* belong on a Power Source endpoint. See device/v1/properties.proto.
|
|
@@ -52,6 +57,9 @@ export declare const HomematicDeviceIdentitySchema: GenMessage<HomematicDeviceId
|
|
|
52
57
|
* false means not boosting, control_mode 0 is an HmIP ControlMode value. Absent means never
|
|
53
58
|
* reported; present means a reading, including zero.
|
|
54
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
|
+
*
|
|
55
63
|
* Add new fields at the next available number — never reuse a removed one.
|
|
56
64
|
*
|
|
57
65
|
* @generated from message kusinta.iot.vendor.homematic.v1.HmThermostatProps
|
|
@@ -63,13 +71,18 @@ export declare type HmThermostatProps = Message<"kusinta.iot.vendor.homematic.v1
|
|
|
63
71
|
boostMode?: boolean | undefined;
|
|
64
72
|
|
|
65
73
|
/**
|
|
66
|
-
*
|
|
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).
|
|
67
76
|
*
|
|
68
|
-
* @generated from field: optional
|
|
77
|
+
* @generated from field: optional uint32 boost_time_remaining = 2;
|
|
69
78
|
*/
|
|
70
|
-
|
|
79
|
+
boostTimeRemaining?: number | undefined;
|
|
71
80
|
|
|
72
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
|
+
*
|
|
73
86
|
* @generated from field: optional uint32 control_mode = 3;
|
|
74
87
|
*/
|
|
75
88
|
controlMode?: number | undefined;
|
|
@@ -80,28 +93,58 @@ export declare type HmThermostatProps = Message<"kusinta.iot.vendor.homematic.v1
|
|
|
80
93
|
frostProtection?: boolean | undefined;
|
|
81
94
|
|
|
82
95
|
/**
|
|
83
|
-
*
|
|
84
|
-
*/
|
|
85
|
-
currentProfilePeriod?: number | undefined;
|
|
86
|
-
|
|
87
|
-
/**
|
|
88
|
-
* Valve position, 0.0-1.0 — how far the radiator valve is actually open. The reading
|
|
89
|
-
* this extension exists for: it has no Matter equivalent, and it is what an automatic
|
|
90
|
-
* or learned control strategy needs.
|
|
96
|
+
* Party mode active. A boolean, whatever the old field name suggested.
|
|
91
97
|
*
|
|
92
|
-
* @generated from field: optional
|
|
98
|
+
* @generated from field: optional bool party_mode = 5;
|
|
93
99
|
*/
|
|
94
|
-
|
|
100
|
+
partyMode?: boolean | undefined;
|
|
95
101
|
|
|
96
102
|
/**
|
|
103
|
+
* CLOSED = 0, OPEN = 1
|
|
104
|
+
*
|
|
97
105
|
* @generated from field: optional uint32 window_state = 7;
|
|
98
106
|
*/
|
|
99
107
|
windowState?: number | undefined;
|
|
100
108
|
|
|
101
109
|
/**
|
|
110
|
+
* Valve fault and adaption state, nine CCU-defined values. Radiator valves only — a wall
|
|
111
|
+
* thermostat drives no valve and never reports it.
|
|
112
|
+
*
|
|
102
113
|
* @generated from field: optional uint32 valve_state = 8;
|
|
103
114
|
*/
|
|
104
115
|
valveState?: number | undefined;
|
|
116
|
+
|
|
117
|
+
/**
|
|
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.
|
|
121
|
+
*
|
|
122
|
+
* @generated from field: optional uint32 set_point_mode = 9;
|
|
123
|
+
*/
|
|
124
|
+
setPointMode?: number | undefined;
|
|
125
|
+
|
|
126
|
+
/**
|
|
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;
|
|
131
|
+
*/
|
|
132
|
+
activeProfile?: number | undefined;
|
|
133
|
+
|
|
134
|
+
/**
|
|
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;
|
|
146
|
+
*/
|
|
147
|
+
valveAdaption?: boolean | undefined;
|
|
105
148
|
};
|
|
106
149
|
|
|
107
150
|
/**
|
|
@@ -110,3 +153,109 @@ export declare type HmThermostatProps = Message<"kusinta.iot.vendor.homematic.v1
|
|
|
110
153
|
*/
|
|
111
154
|
export declare const HmThermostatPropsSchema: GenMessage<HmThermostatProps>;
|
|
112
155
|
|
|
156
|
+
/**
|
|
157
|
+
* The maintenance channel every HomeMatic device carries — device health and radio state,
|
|
158
|
+
* not what the device measures or controls.
|
|
159
|
+
*
|
|
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
|
|
179
|
+
*/
|
|
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
|
+
|
|
214
|
+
/**
|
|
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.
|
|
218
|
+
*
|
|
219
|
+
* @generated from field: optional uint32 operating_voltage_status = 5;
|
|
220
|
+
*/
|
|
221
|
+
operatingVoltageStatus?: number | undefined;
|
|
222
|
+
|
|
223
|
+
/**
|
|
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.
|
|
227
|
+
*
|
|
228
|
+
* @generated from field: optional bool unreach = 6;
|
|
229
|
+
*/
|
|
230
|
+
unreach?: boolean | undefined;
|
|
231
|
+
|
|
232
|
+
/**
|
|
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;
|
|
252
|
+
*/
|
|
253
|
+
dutyCycle?: boolean | undefined;
|
|
254
|
+
};
|
|
255
|
+
|
|
256
|
+
/**
|
|
257
|
+
* Describes the message kusinta.iot.vendor.homematic.v1.HmMaintenanceProps.
|
|
258
|
+
* Use `create(HmMaintenancePropsSchema)` to create a new message.
|
|
259
|
+
*/
|
|
260
|
+
export declare const HmMaintenancePropsSchema: GenMessage<HmMaintenanceProps>;
|
|
261
|
+
|
|
@@ -9,7 +9,7 @@ import { file_kusinta_iot_vendor_v1_vendor_options } from "../../v1/vendor_optio
|
|
|
9
9
|
* Describes the file kusinta/iot/vendor/homematic/v1/homematic.proto.
|
|
10
10
|
*/
|
|
11
11
|
export const file_kusinta_iot_vendor_homematic_v1_homematic = /*@__PURE__*/
|
|
12
|
-
fileDesc("
|
|
12
|
+
fileDesc("Ci9rdXNpbnRhL2lvdC92ZW5kb3IvaG9tZW1hdGljL3YxL2hvbWVtYXRpYy5wcm90bxIfa3VzaW50YS5pb3QudmVuZG9yLmhvbWVtYXRpYy52MSI4ChdIb21lbWF0aWNEZXZpY2VJZGVudGl0eRIPCgdhZGRyZXNzGAEgASgJEgwKBHR5cGUYAiABKAki/wYKEUhtVGhlcm1vc3RhdFByb3BzEisKCmJvb3N0X21vZGUYASABKAhCEqK1GApCT09TVF9NT0RF0LUYBkgAiAEBEjUKFGJvb3N0X3RpbWVfcmVtYWluaW5nGAIgASgNQhKitRgKQk9PU1RfVElNRdC1GAVIAYgBARIvCgxjb250cm9sX21vZGUYAyABKA1CFKK1GAxDT05UUk9MX01PREXQtRgCSAKIAQESNwoQZnJvc3RfcHJvdGVjdGlvbhgEIAEoCEIYorUYEEZST1NUX1BST1RFQ1RJT07QtRgFSAOIAQESKwoKcGFydHlfbW9kZRgFIAEoCEISorUYClBBUlRZX01PREXQtRgFSASIAQESLwoMd2luZG93X3N0YXRlGAcgASgNQhSitRgMV0lORE9XX1NUQVRF0LUYB0gFiAEBEi0KC3ZhbHZlX3N0YXRlGAggASgNQhOitRgLVkFMVkVfU1RBVEXQtRgFSAaIAQESMwoOc2V0X3BvaW50X21vZGUYCSABKA1CFqK1GA5TRVRfUE9JTlRfTU9ERdC1GAdIB4gBARIzCg5hY3RpdmVfcHJvZmlsZRgKIAEoDUIWorUYDkFDVElWRV9QUk9GSUxF0LUYB0gIiAEBEkkKGWFjdHVhbF90ZW1wZXJhdHVyZV9zdGF0dXMYCyABKA1CIaK1GBlBQ1RVQUxfVEVNUEVSQVRVUkVfU1RBVFVT0LUYBUgJiAEBEjMKDnZhbHZlX2FkYXB0aW9uGAwgASgIQhaitRgOVkFMVkVfQURBUFRJT07QtRgHSAqIAQE6GKq1GBRob21lbWF0aWMudGhlcm1vc3RhdEINCgtfYm9vc3RfbW9kZUIXChVfYm9vc3RfdGltZV9yZW1haW5pbmdCDwoNX2NvbnRyb2xfbW9kZUITChFfZnJvc3RfcHJvdGVjdGlvbkINCgtfcGFydHlfbW9kZUIPCg1fd2luZG93X3N0YXRlQg4KDF92YWx2ZV9zdGF0ZUIRCg9fc2V0X3BvaW50X21vZGVCEQoPX2FjdGl2ZV9wcm9maWxlQhwKGl9hY3R1YWxfdGVtcGVyYXR1cmVfc3RhdHVzQhEKD192YWx2ZV9hZGFwdGlvbkoECAYQB1IFbGV2ZWxSFmN1cnJlbnRfcHJvZmlsZV9wZXJpb2RSEWJvb3N0X3RpbWVfcGVyaW9kIrYEChJIbU1haW50ZW5hbmNlUHJvcHMSKwoKZXJyb3JfY29kZRgBIAEoDUISorUYCkVSUk9SX0NPREXQtRgFSACIAQESJwoIc2Fib3RhZ2UYAiABKAhCEKK1GAhTQUJPVEFHRdC1GAVIAYgBARItCgtyc3NpX2RldmljZRgDIAEoEUITorUYC1JTU0lfREVWSUNF0LUYBUgCiAEBEikKCXJzc2lfcGVlchgEIAEoEUIRorUYCVJTU0lfUEVFUtC1GAVIA4gBARJHChhvcGVyYXRpbmdfdm9sdGFnZV9zdGF0dXMYBSABKA1CIKK1GBhPUEVSQVRJTkdfVk9MVEFHRV9TVEFUVVPQtRgFSASIAQESJQoHdW5yZWFjaBgGIAEoCEIPorUYB1VOUkVBQ0jQtRgFSAWIAQESMwoOY29uZmlnX3BlbmRpbmcYByABKAhCFqK1GA5DT05GSUdfUEVORElOR9C1GAVIBogBARIrCgpkdXR5X2N5Y2xlGAggASgIQhKitRgKRFVUWV9DWUNMRdC1GAVIB4gBAToZqrUYFWhvbWVtYXRpYy5tYWludGVuYW5jZUINCgtfZXJyb3JfY29kZUILCglfc2Fib3RhZ2VCDgoMX3Jzc2lfZGV2aWNlQgwKCl9yc3NpX3BlZXJCGwoZX29wZXJhdGluZ192b2x0YWdlX3N0YXR1c0IKCghfdW5yZWFjaEIRCg9fY29uZmlnX3BlbmRpbmdCDQoLX2R1dHlfY3ljbGVCAkgBYgZwcm90bzM", [file_kusinta_iot_vendor_v1_vendor_options]);
|
|
13
13
|
|
|
14
14
|
/**
|
|
15
15
|
* Describes the message kusinta.iot.vendor.homematic.v1.HomematicDeviceIdentity.
|
|
@@ -25,3 +25,10 @@ export const HomematicDeviceIdentitySchema = /*@__PURE__*/
|
|
|
25
25
|
export const HmThermostatPropsSchema = /*@__PURE__*/
|
|
26
26
|
messageDesc(file_kusinta_iot_vendor_homematic_v1_homematic, 1);
|
|
27
27
|
|
|
28
|
+
/**
|
|
29
|
+
* Describes the message kusinta.iot.vendor.homematic.v1.HmMaintenanceProps.
|
|
30
|
+
* Use `create(HmMaintenancePropsSchema)` to create a new message.
|
|
31
|
+
*/
|
|
32
|
+
export const HmMaintenancePropsSchema = /*@__PURE__*/
|
|
33
|
+
messageDesc(file_kusinta_iot_vendor_homematic_v1_homematic, 2);
|
|
34
|
+
|
|
@@ -26,6 +26,27 @@ export declare const file_kusinta_iot_vendor_v1_vendor_options: GenFile;
|
|
|
26
26
|
*/
|
|
27
27
|
export declare const vendor_attribute: GenExtension<FieldOptions, string>;
|
|
28
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
|
+
|
|
29
50
|
/**
|
|
30
51
|
* The stable key identifying a vendor extension message, e.g. "homematic.thermostat".
|
|
31
52
|
* Matches device.v1.PropertyUpdate.vendor_extension byte for byte, and is what selects
|
|
@@ -9,7 +9,7 @@ import { file_google_protobuf_descriptor } from "@bufbuild/protobuf/wkt";
|
|
|
9
9
|
* Describes the file kusinta/iot/vendor/v1/vendor_options.proto.
|
|
10
10
|
*/
|
|
11
11
|
export const file_kusinta_iot_vendor_v1_vendor_options = /*@__PURE__*/
|
|
12
|
-
fileDesc("
|
|
12
|
+
fileDesc("CiprdXNpbnRhL2lvdC92ZW5kb3IvdjEvdmVuZG9yX29wdGlvbnMucHJvdG8SFWt1c2ludGEuaW90LnZlbmRvci52MTpKChB2ZW5kb3JfYXR0cmlidXRlEh0uZ29vZ2xlLnByb3RvYnVmLkZpZWxkT3B0aW9ucxjUhgMgASgJUg92ZW5kb3JBdHRyaWJ1dGU6YwoddmVuZG9yX2F0dHJpYnV0ZV9jYXBhYmlsaXRpZXMSHS5nb29nbGUucHJvdG9idWYuRmllbGRPcHRpb25zGNqGAyABKA1SG3ZlbmRvckF0dHJpYnV0ZUNhcGFiaWxpdGllczpMChB2ZW5kb3JfZXh0ZW5zaW9uEh8uZ29vZ2xlLnByb3RvYnVmLk1lc3NhZ2VPcHRpb25zGNWGAyABKAlSD3ZlbmRvckV4dGVuc2lvbmIGcHJvdG8z", [file_google_protobuf_descriptor]);
|
|
13
13
|
|
|
14
14
|
/**
|
|
15
15
|
* The vendor parameter this field carries, in the vendor's own spelling — e.g.
|
|
@@ -28,6 +28,28 @@ export const file_kusinta_iot_vendor_v1_vendor_options = /*@__PURE__*/
|
|
|
28
28
|
export const vendor_attribute = /*@__PURE__*/
|
|
29
29
|
extDesc(file_kusinta_iot_vendor_v1_vendor_options, 0);
|
|
30
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
|
+
|
|
31
53
|
/**
|
|
32
54
|
* The stable key identifying a vendor extension message, e.g. "homematic.thermostat".
|
|
33
55
|
* Matches device.v1.PropertyUpdate.vendor_extension byte for byte, and is what selects
|
|
@@ -49,5 +71,5 @@ export const vendor_attribute = /*@__PURE__*/
|
|
|
49
71
|
* @generated from extension: string vendor_extension = 50005;
|
|
50
72
|
*/
|
|
51
73
|
export const vendor_extension = /*@__PURE__*/
|
|
52
|
-
extDesc(file_kusinta_iot_vendor_v1_vendor_options,
|
|
74
|
+
extDesc(file_kusinta_iot_vendor_v1_vendor_options, 2);
|
|
53
75
|
|
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
import type { GenEnum, GenFile, GenMessage } from "@bufbuild/protobuf/codegenv2";
|
|
6
6
|
import type { Message } from "@bufbuild/protobuf";
|
|
7
|
+
import type { SetpointAdjustMode } from "./setpoint_mode_pb.js";
|
|
7
8
|
import type { DeviceId } from "../../identity/v1/identity_pb.js";
|
|
8
9
|
import type { Timestamp } from "@bufbuild/protobuf/wkt";
|
|
9
10
|
import type { AttributeRef } from "../../access/v1/acl_pb.js";
|
|
@@ -28,11 +29,11 @@ export declare const file_kusinta_iot_webrtc_v1_command: GenFile;
|
|
|
28
29
|
*/
|
|
29
30
|
export declare type ThermostatSetpointParams = Message<"kusinta.iot.webrtc.v1.ThermostatSetpointParams"> & {
|
|
30
31
|
/**
|
|
31
|
-
*
|
|
32
|
+
* absent = the producer stated no mode
|
|
32
33
|
*
|
|
33
|
-
* @generated from field: optional
|
|
34
|
+
* @generated from field: optional kusinta.iot.webrtc.v1.SetpointAdjustMode mode = 1;
|
|
34
35
|
*/
|
|
35
|
-
mode?:
|
|
36
|
+
mode?: SetpointAdjustMode | undefined;
|
|
36
37
|
|
|
37
38
|
/**
|
|
38
39
|
* centidegrees delta
|
|
@@ -147,9 +148,16 @@ export declare const DoorLockParamsSchema: GenMessage<DoorLockParams>;
|
|
|
147
148
|
*
|
|
148
149
|
* An app MAY send any command; it does not decide whether it is allowed. The gateway
|
|
149
150
|
* authorizes every DeviceCommand against the caller's access.v1.DeviceAcl for the target
|
|
150
|
-
* device before forwarding it to a connector
|
|
151
|
-
*
|
|
152
|
-
*
|
|
151
|
+
* device before forwarding it to a connector: PERMISSION_ACTION_INVOKE must be granted,
|
|
152
|
+
* and allowed_command_refs must reach this (endpoint, cluster_id, matter_command_id).
|
|
153
|
+
*
|
|
154
|
+
* NOT allowed_attribute_refs, and NOT PropertyConstraint. Both name attributes, and a
|
|
155
|
+
* command is not an attribute — the two are numbered independently within a cluster, so an
|
|
156
|
+
* attribute ref cannot name a command at all. A constraint bounds an attribute's value;
|
|
157
|
+
* this message carries command arguments, and ThermostatSetpointParams.amount is a DELTA,
|
|
158
|
+
* which cannot be compared against a bound without first resolving it to an absolute using
|
|
159
|
+
* a base the gateway may not hold. Where a setpoint must be bounded, bound the write:
|
|
160
|
+
* AttributeWriteRequest carries the absolute value a PropertyConstraint can be applied to.
|
|
153
161
|
*
|
|
154
162
|
* A refusal comes back as an ordinary CommandResult with success = false and an error,
|
|
155
163
|
* NOT as a session-level GatewayError: one command being refused says nothing about the
|
|
@@ -8,12 +8,13 @@ import { file_kusinta_iot_access_v1_acl } from "../../access/v1/acl_pb.js";
|
|
|
8
8
|
import { file_kusinta_iot_device_v1_cluster_state } from "../../device/v1/cluster_state_pb.js";
|
|
9
9
|
import { file_kusinta_iot_device_v1_matter_options } from "../../device/v1/matter_options_pb.js";
|
|
10
10
|
import { file_kusinta_iot_identity_v1_identity } from "../../identity/v1/identity_pb.js";
|
|
11
|
+
import { file_kusinta_iot_webrtc_v1_setpoint_mode } from "./setpoint_mode_pb.js";
|
|
11
12
|
|
|
12
13
|
/**
|
|
13
14
|
* Describes the file kusinta/iot/webrtc/v1/command.proto.
|
|
14
15
|
*/
|
|
15
16
|
export const file_kusinta_iot_webrtc_v1_command = /*@__PURE__*/
|
|
16
|
-
fileDesc("
|
|
17
|
+
fileDesc("CiNrdXNpbnRhL2lvdC93ZWJydGMvdjEvY29tbWFuZC5wcm90bxIVa3VzaW50YS5pb3Qud2VicnRjLnYxInwKGFRoZXJtb3N0YXRTZXRwb2ludFBhcmFtcxI8CgRtb2RlGAEgASgOMikua3VzaW50YS5pb3Qud2VicnRjLnYxLlNldHBvaW50QWRqdXN0TW9kZUgAiAEBEg4KBmFtb3VudBgCIAEoEToJuLUYgQTAtRgAQgcKBV9tb2RlIkYKEkxldmVsQ29udHJvbFBhcmFtcxINCgVsZXZlbBgBIAEoDRIXCg90cmFuc2l0aW9uX3RpbWUYAiABKA06CLi1GAjAtRgAIisKC09uT2ZmUGFyYW1zOgS4tRgGSgQIARACSgQIAhADUgJvblIGdG9nZ2xlIkEKGFdpbmRvd0NvdmVyaW5nTGlmdFBhcmFtcxIaChJsaWZ0X3BlcmNlbnQxMDB0aHMYASABKA06Cbi1GIICwLUYBSI7Cg5Eb29yTG9ja1BhcmFtcxIQCghwaW5fY29kZRgCIAEoCToFuLUYgQJKBAgBEAJSCmxvY2tfc3RhdGUikgUKDURldmljZUNvbW1hbmQSEgoKcmVxdWVzdF9pZBgBIAEoCRI0CglkZXZpY2VfaWQYAiABKAsyIS5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5EZXZpY2VJZBIUCgxjb21tYW5kX25hbWUYBCABKAkSEgoKY2x1c3Rlcl9pZBgMIAEoDRIeChFtYXR0ZXJfY29tbWFuZF9pZBgNIAEoDUgBiAEBEhgKC2VuZHBvaW50X2lkGAsgASgNSAKIAQESTgoTdGhlcm1vc3RhdF9zZXRwb2ludBgFIAEoCzIvLmt1c2ludGEuaW90LndlYnJ0Yy52MS5UaGVybW9zdGF0U2V0cG9pbnRQYXJhbXNIABJCCg1sZXZlbF9jb250cm9sGAYgASgLMikua3VzaW50YS5pb3Qud2VicnRjLnYxLkxldmVsQ29udHJvbFBhcmFtc0gAEjQKBm9uX29mZhgHIAEoCzIiLmt1c2ludGEuaW90LndlYnJ0Yy52MS5Pbk9mZlBhcmFtc0gAEk8KFHdpbmRvd19jb3ZlcmluZ19saWZ0GAggASgLMi8ua3VzaW50YS5pb3Qud2VicnRjLnYxLldpbmRvd0NvdmVyaW5nTGlmdFBhcmFtc0gAEjoKCWRvb3JfbG9jaxgJIAEoCzIlLmt1c2ludGEuaW90LndlYnJ0Yy52MS5Eb29yTG9ja1BhcmFtc0gAEhEKB3Jhd190bHYYYyABKAxIAEIMCgpwYXJhbWV0ZXJzQhQKEl9tYXR0ZXJfY29tbWFuZF9pZEIOCgxfZW5kcG9pbnRfaWRKBAgDEARKBAgKEAtSDmNsdXN0ZXJfaWRfaGV4Uhl0aGVybW9zdGF0X3NldHBvaW50X3dyaXRlIlwKDENvbW1hbmRFcnJvchIPCgdtZXNzYWdlGAIgASgJEjUKBGNvZGUYAyABKA4yJy5rdXNpbnRhLmlvdC53ZWJydGMudjEuQ29tbWFuZEVycm9yQ29kZUoECAEQAiLeAQoNQ29tbWFuZFJlc3VsdBISCgpyZXF1ZXN0X2lkGAEgASgJEg8KB3N1Y2Nlc3MYAiABKAgSMgoFZXJyb3IYAyABKAsyIy5rdXNpbnRhLmlvdC53ZWJydGMudjEuQ29tbWFuZEVycm9yEjAKDGNvbXBsZXRlZF9hdBgEIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASMwoKc2V0dGxlc19ieRgFIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAIgBAUINCgtfc2V0dGxlc19ieSLMAQoVQXR0cmlidXRlV3JpdGVSZXF1ZXN0EhIKCnJlcXVlc3RfaWQYASABKAkSNAoJZGV2aWNlX2lkGAIgASgLMiEua3VzaW50YS5pb3QuaWRlbnRpdHkudjEuRGV2aWNlSWQSMwoGdGFyZ2V0GAMgASgLMiMua3VzaW50YS5pb3QuYWNjZXNzLnYxLkF0dHJpYnV0ZVJlZhI0CgV2YWx1ZRgEIAEoCzIlLmt1c2ludGEuaW90LmRldmljZS52MS5BdHRyaWJ1dGVWYWx1ZSq/AgoQQ29tbWFuZEVycm9yQ29kZRIiCh5DT01NQU5EX0VSUk9SX0NPREVfVU5TUEVDSUZJRUQQABIjCh9DT01NQU5EX0VSUk9SX0NPREVfTk9UX0VOVElUTEVEEAESKgomQ09NTUFORF9FUlJPUl9DT0RFX0NPTlNUUkFJTlRfVklPTEFURUQQAhImCiJDT01NQU5EX0VSUk9SX0NPREVfSU5WQUxJRF9DT01NQU5EEAMSIgoeQ09NTUFORF9FUlJPUl9DT0RFX1VOUkVBQ0hBQkxFEAQSHgoaQ09NTUFORF9FUlJPUl9DT0RFX1RJTUVPVVQQBRIpCiVDT01NQU5EX0VSUk9SX0NPREVfUkVKRUNURURfQllfREVWSUNFEAYSHwobQ09NTUFORF9FUlJPUl9DT0RFX0lOVEVSTkFMEAdCAkgBYgZwcm90bzM", [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]);
|
|
17
18
|
|
|
18
19
|
/**
|
|
19
20
|
* Describes the message kusinta.iot.webrtc.v1.ThermostatSetpointParams.
|
|
@@ -44,11 +44,17 @@ export declare type DeviceStateSnapshot = Message<"kusinta.iot.webrtc.v1.DeviceS
|
|
|
44
44
|
export declare const DeviceStateSnapshotSchema: GenMessage<DeviceStateSnapshot>;
|
|
45
45
|
|
|
46
46
|
/**
|
|
47
|
-
*
|
|
47
|
+
* One attribute reading streamed to the app as it happens — Matter's Report Data Action,
|
|
48
|
+
* for a single attribute.
|
|
48
49
|
*
|
|
49
|
-
*
|
|
50
|
+
* Was DevicePropertyEvent. Renamed because it carries a device.v1.PropertyUpdate, which is
|
|
51
|
+
* STATE, while device.v1.DeviceEvent carries a journal entry. Two messages with "Event" in
|
|
52
|
+
* the name meaning opposite things is a trap, and this one was never the event: latest
|
|
53
|
+
* wins, order does not matter, and a missed one is corrected by the next.
|
|
54
|
+
*
|
|
55
|
+
* @generated from message kusinta.iot.webrtc.v1.PropertyReport
|
|
50
56
|
*/
|
|
51
|
-
export declare type
|
|
57
|
+
export declare type PropertyReport = Message<"kusinta.iot.webrtc.v1.PropertyReport"> & {
|
|
52
58
|
/**
|
|
53
59
|
* @generated from field: kusinta.iot.device.v1.PropertyUpdate update = 1;
|
|
54
60
|
*/
|
|
@@ -61,10 +67,10 @@ export declare type DevicePropertyEvent = Message<"kusinta.iot.webrtc.v1.DeviceP
|
|
|
61
67
|
};
|
|
62
68
|
|
|
63
69
|
/**
|
|
64
|
-
* Describes the message kusinta.iot.webrtc.v1.
|
|
65
|
-
* Use `create(
|
|
70
|
+
* Describes the message kusinta.iot.webrtc.v1.PropertyReport.
|
|
71
|
+
* Use `create(PropertyReportSchema)` to create a new message.
|
|
66
72
|
*/
|
|
67
|
-
export declare const
|
|
73
|
+
export declare const PropertyReportSchema: GenMessage<PropertyReport>;
|
|
68
74
|
|
|
69
75
|
/**
|
|
70
76
|
* A device appeared while the app was connected — the app leg's counterpart to
|
|
@@ -4,16 +4,16 @@
|
|
|
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_access_v1_acl } from "../../access/v1/acl_pb.js";
|
|
7
8
|
import { file_kusinta_iot_device_v1_device } from "../../device/v1/device_pb.js";
|
|
8
9
|
import { file_kusinta_iot_device_v1_property_update } from "../../device/v1/property_update_pb.js";
|
|
9
|
-
import { file_kusinta_iot_access_v1_acl } from "../../access/v1/acl_pb.js";
|
|
10
10
|
import { file_kusinta_iot_identity_v1_identity } from "../../identity/v1/identity_pb.js";
|
|
11
11
|
|
|
12
12
|
/**
|
|
13
13
|
* Describes the file kusinta/iot/webrtc/v1/device_state.proto.
|
|
14
14
|
*/
|
|
15
15
|
export const file_kusinta_iot_webrtc_v1_device_state = /*@__PURE__*/
|
|
16
|
-
fileDesc("
|
|
16
|
+
fileDesc("CihrdXNpbnRhL2lvdC93ZWJydGMvdjEvZGV2aWNlX3N0YXRlLnByb3RvEhVrdXNpbnRhLmlvdC53ZWJydGMudjEiuwEKE0RldmljZVN0YXRlU25hcHNob3QSLgoHZGV2aWNlcxgBIAMoCzIdLmt1c2ludGEuaW90LmRldmljZS52MS5EZXZpY2USQAoLcGVybWlzc2lvbnMYAiABKAsyKy5rdXNpbnRhLmlvdC5hY2Nlc3MudjEuRWZmZWN0aXZlUGVybWlzc2lvbnMSMgoOc25hcHNob3R0ZWRfYXQYAyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wIoEBCg5Qcm9wZXJ0eVJlcG9ydBI1CgZ1cGRhdGUYASABKAsyJS5rdXNpbnRhLmlvdC5kZXZpY2UudjEuUHJvcGVydHlVcGRhdGUSOAoUZ2F0ZXdheV9wcm9jZXNzZWRfYXQYAiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wIjwKC0RldmljZUFkZGVkEi0KBmRldmljZRgBIAEoCzIdLmt1c2ludGEuaW90LmRldmljZS52MS5EZXZpY2UiVQoNRGV2aWNlUmVtb3ZlZBI0CglkZXZpY2VfaWQYASABKAsyIS5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5EZXZpY2VJZBIOCgZyZWFzb24YAiABKAlCAkgBYgZwcm90bzM", [file_google_protobuf_timestamp, file_kusinta_iot_access_v1_acl, file_kusinta_iot_device_v1_device, file_kusinta_iot_device_v1_property_update, file_kusinta_iot_identity_v1_identity]);
|
|
17
17
|
|
|
18
18
|
/**
|
|
19
19
|
* Describes the message kusinta.iot.webrtc.v1.DeviceStateSnapshot.
|
|
@@ -23,10 +23,10 @@ export const DeviceStateSnapshotSchema = /*@__PURE__*/
|
|
|
23
23
|
messageDesc(file_kusinta_iot_webrtc_v1_device_state, 0);
|
|
24
24
|
|
|
25
25
|
/**
|
|
26
|
-
* Describes the message kusinta.iot.webrtc.v1.
|
|
27
|
-
* Use `create(
|
|
26
|
+
* Describes the message kusinta.iot.webrtc.v1.PropertyReport.
|
|
27
|
+
* Use `create(PropertyReportSchema)` to create a new message.
|
|
28
28
|
*/
|
|
29
|
-
export const
|
|
29
|
+
export const PropertyReportSchema = /*@__PURE__*/
|
|
30
30
|
messageDesc(file_kusinta_iot_webrtc_v1_device_state, 1);
|
|
31
31
|
|
|
32
32
|
/**
|