@kusinta/iot-schema 0.2.0-beta.18 → 0.2.0-beta.19
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/src/kusinta/iot/device/v1/device_pb.d.ts +111 -6
- package/src/kusinta/iot/device/v1/device_pb.js +33 -2
- package/src/kusinta/iot/device/v1/property_update_pb.d.ts +3 -2
- package/src/kusinta/iot/vendor/v1/vendor_options_pb.d.ts +4 -4
- package/src/kusinta/iot/vendor/v1/vendor_options_pb.js +4 -4
package/package.json
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
// @generated from file kusinta/iot/device/v1/device.proto (package kusinta.iot.device.v1, syntax proto3)
|
|
3
3
|
/* eslint-disable */
|
|
4
4
|
|
|
5
|
-
import type { GenFile, GenMessage } from "@bufbuild/protobuf/codegenv2";
|
|
5
|
+
import type { GenEnum, GenFile, GenMessage } from "@bufbuild/protobuf/codegenv2";
|
|
6
6
|
import type { Message } from "@bufbuild/protobuf";
|
|
7
7
|
import type { ColorTemperatureLightProperties, ContactSensorProperties, DimmableLightProperties, DoorLockProperties, EnergySensorProperties, HumiditySensorProperties, OccupancySensorProperties, OnOffLightProperties, PowerSourceProperties, PressureSensorProperties, TemperatureSensorProperties, ThermostatProperties, WindowCoveringProperties } from "./properties_pb.js";
|
|
8
8
|
import type { HmMaintenanceProps, HmThermostatProps } from "../../vendor/homematic/v1/homematic_pb.js";
|
|
@@ -25,7 +25,7 @@ export declare const file_kusinta_iot_device_v1_device: GenFile;
|
|
|
25
25
|
* per physical device, so a device is still one row, one claim, one placement.
|
|
26
26
|
*
|
|
27
27
|
* Field numbers: 1-2 identity, 3-49 standard Matter device types, 50-99 vendor
|
|
28
|
-
* extensions.
|
|
28
|
+
* extensions — the vendor_properties cases, and radio_link (52) outside that oneof.
|
|
29
29
|
*
|
|
30
30
|
* endpoint_id is Matter's own endpoint number, and it is scoped to ONE DEVICE — not
|
|
31
31
|
* global, and nothing coordinates numbering between devices. Endpoint 1 on one valve and
|
|
@@ -181,6 +181,18 @@ export declare type Endpoint = Message<"kusinta.iot.device.v1.Endpoint"> & {
|
|
|
181
181
|
case: "hmMaintenance";
|
|
182
182
|
} | { case: undefined; value?: undefined };
|
|
183
183
|
|
|
184
|
+
/**
|
|
185
|
+
* How well this device's radio link is doing, on whichever endpoint its connector
|
|
186
|
+
* reports it. Outside vendor_properties on purpose: it is not a vendor's extension of
|
|
187
|
+
* one device type but a reading any radio device has, so it must be able to sit beside
|
|
188
|
+
* whichever vendor case the endpoint already carries — on a HomeMatic device's Power
|
|
189
|
+
* Source endpoint, beside hm_maintenance. Selected by the vendor branch like a
|
|
190
|
+
* vendor_properties case, by its (vendor_extension) key "kusinta.radio".
|
|
191
|
+
*
|
|
192
|
+
* @generated from field: kusinta.iot.device.v1.RadioLink radio_link = 52;
|
|
193
|
+
*/
|
|
194
|
+
radioLink?: RadioLink | undefined;
|
|
195
|
+
|
|
184
196
|
/**
|
|
185
197
|
* Every cluster this endpoint hosts: what it supports, and any attribute value that has
|
|
186
198
|
* no typed field above. This is what makes a device the schema does not model usable
|
|
@@ -195,14 +207,17 @@ export declare type Endpoint = Message<"kusinta.iot.device.v1.Endpoint"> & {
|
|
|
195
207
|
clusters: ClusterState[];
|
|
196
208
|
|
|
197
209
|
/**
|
|
198
|
-
* Which vendor parameters this endpoint's vendor
|
|
210
|
+
* Which vendor parameters this endpoint's vendor extensions actually implement, in the
|
|
199
211
|
* vendor's own spelling — "SABOTAGE", matching (vendor_attribute) byte for byte.
|
|
200
212
|
*
|
|
201
213
|
* The vendor mirror of ClusterState.attribute_ids, and it needs its own field because a
|
|
202
214
|
* vendor parameter has no cluster and so no ClusterState to be listed in. A name list
|
|
203
|
-
* rather than an id list because the vendor branch addresses by name
|
|
204
|
-
* rather than a per-extension map because an endpoint carries at most one
|
|
205
|
-
*
|
|
215
|
+
* rather than an id list because the vendor branch addresses by name. A bare list
|
|
216
|
+
* rather than a per-extension map because an endpoint carries at most one
|
|
217
|
+
* vendor_properties case and at most a radio_link beside it, and the schema keeps
|
|
218
|
+
* radio_link's attribute names disjoint from every vendor_properties case's — a test
|
|
219
|
+
* enforces it — so a name here never needs its extension to be read. radio_link's
|
|
220
|
+
* parameters are listed here the same way as a vendor's.
|
|
206
221
|
*
|
|
207
222
|
* Same reading as the Matter side: named here with no value = implemented, not yet
|
|
208
223
|
* reported. Absent from the list = this device does not have it. Empty = not stated,
|
|
@@ -286,3 +301,93 @@ export declare type Device = Message<"kusinta.iot.device.v1.Device"> & {
|
|
|
286
301
|
*/
|
|
287
302
|
export declare const DeviceSchema: GenMessage<Device>;
|
|
288
303
|
|
|
304
|
+
/**
|
|
305
|
+
* A device's radio link, as its connector reports it.
|
|
306
|
+
*
|
|
307
|
+
* Travels as vendor-branch PropertyUpdates with vendor_extension "kusinta.radio" and
|
|
308
|
+
* these attribute names, the value case following the field type as everywhere on the
|
|
309
|
+
* vendor branch: "quality" as uint_value, "rssi_dbm" as int_value, "snr_db" as
|
|
310
|
+
* float_value.
|
|
311
|
+
*
|
|
312
|
+
* Every field is `optional`, for the reason vendor readings always are: absent means
|
|
313
|
+
* never reported, present means a reading.
|
|
314
|
+
*
|
|
315
|
+
* Technology-agnostic: the same message for every radio. A vendor's own raw radio
|
|
316
|
+
* readings, such as HmMaintenanceProps.rssi_device, stay in that vendor's extension.
|
|
317
|
+
*
|
|
318
|
+
* @generated from message kusinta.iot.device.v1.RadioLink
|
|
319
|
+
*/
|
|
320
|
+
export declare type RadioLink = Message<"kusinta.iot.device.v1.RadioLink"> & {
|
|
321
|
+
/**
|
|
322
|
+
* The connector's rating: GOOD = 1, FAIR = 2, POOR = 3 (RadioQuality); 0 is not used.
|
|
323
|
+
* A number, not the name, as every enum-valued reading travels.
|
|
324
|
+
*
|
|
325
|
+
* @generated from field: optional uint32 quality = 1;
|
|
326
|
+
*/
|
|
327
|
+
quality?: number | undefined;
|
|
328
|
+
|
|
329
|
+
/**
|
|
330
|
+
* Received signal strength in dBm. sint32: negative in normal operation.
|
|
331
|
+
*
|
|
332
|
+
* @generated from field: optional sint32 rssi_dbm = 2;
|
|
333
|
+
*/
|
|
334
|
+
rssiDbm?: number | undefined;
|
|
335
|
+
|
|
336
|
+
/**
|
|
337
|
+
* Signal-to-noise ratio in dB, for technologies that measure one — LoRaWAN does.
|
|
338
|
+
* Absent elsewhere. Negative values are normal for LoRa.
|
|
339
|
+
*
|
|
340
|
+
* @generated from field: optional float snr_db = 3;
|
|
341
|
+
*/
|
|
342
|
+
snrDb?: number | undefined;
|
|
343
|
+
};
|
|
344
|
+
|
|
345
|
+
/**
|
|
346
|
+
* Describes the message kusinta.iot.device.v1.RadioLink.
|
|
347
|
+
* Use `create(RadioLinkSchema)` to create a new message.
|
|
348
|
+
*/
|
|
349
|
+
export declare const RadioLinkSchema: GenMessage<RadioLink>;
|
|
350
|
+
|
|
351
|
+
/**
|
|
352
|
+
* The value set of RadioLink.quality: how well a link is doing, as the device's
|
|
353
|
+
* connector rates it. Not a field type — quality is a uint32 like every enum-valued
|
|
354
|
+
* reading, so it keeps explicit presence — but the named constants for its numbers.
|
|
355
|
+
* Defined here, unlike the HomeMatic enum parameters, because this vocabulary is the
|
|
356
|
+
* schema's own rather than an upstream system's.
|
|
357
|
+
*
|
|
358
|
+
* The rating is radio-specific and made by the connector that reaches the device, from
|
|
359
|
+
* whatever its technology measures; the thresholds behind it are not part of this
|
|
360
|
+
* contract and may differ between technologies. A consumer shows the rating, and treats
|
|
361
|
+
* the raw readings as detail.
|
|
362
|
+
*
|
|
363
|
+
* @generated from enum kusinta.iot.device.v1.RadioQuality
|
|
364
|
+
*/
|
|
365
|
+
export enum RadioQuality {
|
|
366
|
+
/**
|
|
367
|
+
* Never sent; an unreported quality is an absent field.
|
|
368
|
+
*
|
|
369
|
+
* @generated from enum value: RADIO_QUALITY_UNSPECIFIED = 0;
|
|
370
|
+
*/
|
|
371
|
+
UNSPECIFIED = 0,
|
|
372
|
+
|
|
373
|
+
/**
|
|
374
|
+
* @generated from enum value: RADIO_QUALITY_GOOD = 1;
|
|
375
|
+
*/
|
|
376
|
+
GOOD = 1,
|
|
377
|
+
|
|
378
|
+
/**
|
|
379
|
+
* @generated from enum value: RADIO_QUALITY_FAIR = 2;
|
|
380
|
+
*/
|
|
381
|
+
FAIR = 2,
|
|
382
|
+
|
|
383
|
+
/**
|
|
384
|
+
* @generated from enum value: RADIO_QUALITY_POOR = 3;
|
|
385
|
+
*/
|
|
386
|
+
POOR = 3,
|
|
387
|
+
}
|
|
388
|
+
|
|
389
|
+
/**
|
|
390
|
+
* Describes the enum kusinta.iot.device.v1.RadioQuality.
|
|
391
|
+
*/
|
|
392
|
+
export declare const RadioQualitySchema: GenEnum<RadioQuality>;
|
|
393
|
+
|
|
@@ -2,18 +2,19 @@
|
|
|
2
2
|
// @generated from file kusinta/iot/device/v1/device.proto (package kusinta.iot.device.v1, syntax proto3)
|
|
3
3
|
/* eslint-disable */
|
|
4
4
|
|
|
5
|
-
import { fileDesc, messageDesc } from "@bufbuild/protobuf/codegenv2";
|
|
5
|
+
import { enumDesc, fileDesc, messageDesc, tsEnum } from "@bufbuild/protobuf/codegenv2";
|
|
6
6
|
import { file_google_protobuf_timestamp } from "@bufbuild/protobuf/wkt";
|
|
7
7
|
import { file_kusinta_iot_device_v1_cluster_state } from "./cluster_state_pb.js";
|
|
8
8
|
import { file_kusinta_iot_device_v1_descriptor } from "./descriptor_pb.js";
|
|
9
9
|
import { file_kusinta_iot_device_v1_properties } from "./properties_pb.js";
|
|
10
10
|
import { file_kusinta_iot_vendor_homematic_v1_homematic } from "../../vendor/homematic/v1/homematic_pb.js";
|
|
11
|
+
import { file_kusinta_iot_vendor_v1_vendor_options } from "../../vendor/v1/vendor_options_pb.js";
|
|
11
12
|
|
|
12
13
|
/**
|
|
13
14
|
* Describes the file kusinta/iot/device/v1/device.proto.
|
|
14
15
|
*/
|
|
15
16
|
export const file_kusinta_iot_device_v1_device = /*@__PURE__*/
|
|
16
|
-
fileDesc("
|
|
17
|
+
fileDesc("CiJrdXNpbnRhL2lvdC9kZXZpY2UvdjEvZGV2aWNlLnByb3RvEhVrdXNpbnRhLmlvdC5kZXZpY2UudjEi0woKCEVuZHBvaW50EhMKC2VuZHBvaW50X2lkGAEgASgNEh0KFW1hdHRlcl9kZXZpY2VfdHlwZV9pZBgCIAEoDRJBCgp0aGVybW9zdGF0GAMgASgLMisua3VzaW50YS5pb3QuZGV2aWNlLnYxLlRoZXJtb3N0YXRQcm9wZXJ0aWVzSAASUAoSdGVtcGVyYXR1cmVfc2Vuc29yGAQgASgLMjIua3VzaW50YS5pb3QuZGV2aWNlLnYxLlRlbXBlcmF0dXJlU2Vuc29yUHJvcGVydGllc0gAEkoKD2h1bWlkaXR5X3NlbnNvchgFIAEoCzIvLmt1c2ludGEuaW90LmRldmljZS52MS5IdW1pZGl0eVNlbnNvclByb3BlcnRpZXNIABJMChBvY2N1cGFuY3lfc2Vuc29yGAYgASgLMjAua3VzaW50YS5pb3QuZGV2aWNlLnYxLk9jY3VwYW5jeVNlbnNvclByb3BlcnRpZXNIABJICg5jb250YWN0X3NlbnNvchgHIAEoCzIuLmt1c2ludGEuaW90LmRldmljZS52MS5Db250YWN0U2Vuc29yUHJvcGVydGllc0gAEkoKD3dpbmRvd19jb3ZlcmluZxgIIAEoCzIvLmt1c2ludGEuaW90LmRldmljZS52MS5XaW5kb3dDb3ZlcmluZ1Byb3BlcnRpZXNIABI+Cglkb29yX2xvY2sYCSABKAsyKS5rdXNpbnRhLmlvdC5kZXZpY2UudjEuRG9vckxvY2tQcm9wZXJ0aWVzSAASQwoMb25fb2ZmX2xpZ2h0GAogASgLMisua3VzaW50YS5pb3QuZGV2aWNlLnYxLk9uT2ZmTGlnaHRQcm9wZXJ0aWVzSAASSAoOZGltbWFibGVfbGlnaHQYCyABKAsyLi5rdXNpbnRhLmlvdC5kZXZpY2UudjEuRGltbWFibGVMaWdodFByb3BlcnRpZXNIABJSChBjb2xvcl90ZW1wX2xpZ2h0GAwgASgLMjYua3VzaW50YS5pb3QuZGV2aWNlLnYxLkNvbG9yVGVtcGVyYXR1cmVMaWdodFByb3BlcnRpZXNIABJGCg1lbmVyZ3lfc2Vuc29yGA0gASgLMi0ua3VzaW50YS5pb3QuZGV2aWNlLnYxLkVuZXJneVNlbnNvclByb3BlcnRpZXNIABJKCg9wcmVzc3VyZV9zZW5zb3IYDiABKAsyLy5rdXNpbnRhLmlvdC5kZXZpY2UudjEuUHJlc3N1cmVTZW5zb3JQcm9wZXJ0aWVzSAASRAoMcG93ZXJfc291cmNlGA8gASgLMiwua3VzaW50YS5pb3QuZGV2aWNlLnYxLlBvd2VyU291cmNlUHJvcGVydGllc0gAEksKDWhtX3RoZXJtb3N0YXQYMiABKAsyMi5rdXNpbnRhLmlvdC52ZW5kb3IuaG9tZW1hdGljLnYxLkhtVGhlcm1vc3RhdFByb3BzSAESTQoOaG1fbWFpbnRlbmFuY2UYMyABKAsyMy5rdXNpbnRhLmlvdC52ZW5kb3IuaG9tZW1hdGljLnYxLkhtTWFpbnRlbmFuY2VQcm9wc0gBEjQKCnJhZGlvX2xpbmsYNCABKAsyIC5rdXNpbnRhLmlvdC5kZXZpY2UudjEuUmFkaW9MaW5rEjUKCGNsdXN0ZXJzGBAgAygLMiMua3VzaW50YS5pb3QuZGV2aWNlLnYxLkNsdXN0ZXJTdGF0ZRIeChZ2ZW5kb3JfYXR0cmlidXRlX25hbWVzGBEgAygJQhMKEW1hdHRlcl9wcm9wZXJ0aWVzQhMKEXZlbmRvcl9wcm9wZXJ0aWVzIrADCgZEZXZpY2USOwoKZGVzY3JpcHRvchgBIAEoCzInLmt1c2ludGEuaW90LmRldmljZS52MS5EZXZpY2VEZXNjcmlwdG9yEjIKCWVuZHBvaW50cxgOIAMoCzIfLmt1c2ludGEuaW90LmRldmljZS52MS5FbmRwb2ludBItCglsYXN0X3NlZW4YFCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEjAKDGxhc3RfdXBkYXRlZBgVIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBKBAgCEA5KBAgyEDNSCnRoZXJtb3N0YXRSEnRlbXBlcmF0dXJlX3NlbnNvclIPaHVtaWRpdHlfc2Vuc29yUhBvY2N1cGFuY3lfc2Vuc29yUg5jb250YWN0X3NlbnNvclIPd2luZG93X2NvdmVyaW5nUglkb29yX2xvY2tSDG9uX29mZl9saWdodFIOZGltbWFibGVfbGlnaHRSEGNvbG9yX3RlbXBfbGlnaHRSDWVuZXJneV9zZW5zb3JSD3ByZXNzdXJlX3NlbnNvclIJaG9tZW1hdGljIrcBCglSYWRpb0xpbmsSJQoHcXVhbGl0eRgBIAEoDUIPorUYB3F1YWxpdHnQtRgFSACIAQESJwoIcnNzaV9kYm0YAiABKBFCEKK1GAhyc3NpX2RibdC1GAVIAYgBARIjCgZzbnJfZGIYAyABKAJCDqK1GAZzbnJfZGLQtRgFSAKIAQE6Eaq1GA1rdXNpbnRhLnJhZGlvQgoKCF9xdWFsaXR5QgsKCV9yc3NpX2RibUIJCgdfc25yX2RiKnUKDFJhZGlvUXVhbGl0eRIdChlSQURJT19RVUFMSVRZX1VOU1BFQ0lGSUVEEAASFgoSUkFESU9fUVVBTElUWV9HT09EEAESFgoSUkFESU9fUVVBTElUWV9GQUlSEAISFgoSUkFESU9fUVVBTElUWV9QT09SEANCAkgBYgZwcm90bzM", [file_google_protobuf_timestamp, file_kusinta_iot_device_v1_cluster_state, file_kusinta_iot_device_v1_descriptor, file_kusinta_iot_device_v1_properties, file_kusinta_iot_vendor_homematic_v1_homematic, file_kusinta_iot_vendor_v1_vendor_options]);
|
|
17
18
|
|
|
18
19
|
/**
|
|
19
20
|
* Describes the message kusinta.iot.device.v1.Endpoint.
|
|
@@ -29,3 +30,33 @@ export const EndpointSchema = /*@__PURE__*/
|
|
|
29
30
|
export const DeviceSchema = /*@__PURE__*/
|
|
30
31
|
messageDesc(file_kusinta_iot_device_v1_device, 1);
|
|
31
32
|
|
|
33
|
+
/**
|
|
34
|
+
* Describes the message kusinta.iot.device.v1.RadioLink.
|
|
35
|
+
* Use `create(RadioLinkSchema)` to create a new message.
|
|
36
|
+
*/
|
|
37
|
+
export const RadioLinkSchema = /*@__PURE__*/
|
|
38
|
+
messageDesc(file_kusinta_iot_device_v1_device, 2);
|
|
39
|
+
|
|
40
|
+
/**
|
|
41
|
+
* Describes the enum kusinta.iot.device.v1.RadioQuality.
|
|
42
|
+
*/
|
|
43
|
+
export const RadioQualitySchema = /*@__PURE__*/
|
|
44
|
+
enumDesc(file_kusinta_iot_device_v1_device, 0);
|
|
45
|
+
|
|
46
|
+
/**
|
|
47
|
+
* The value set of RadioLink.quality: how well a link is doing, as the device's
|
|
48
|
+
* connector rates it. Not a field type — quality is a uint32 like every enum-valued
|
|
49
|
+
* reading, so it keeps explicit presence — but the named constants for its numbers.
|
|
50
|
+
* Defined here, unlike the HomeMatic enum parameters, because this vocabulary is the
|
|
51
|
+
* schema's own rather than an upstream system's.
|
|
52
|
+
*
|
|
53
|
+
* The rating is radio-specific and made by the connector that reaches the device, from
|
|
54
|
+
* whatever its technology measures; the thresholds behind it are not part of this
|
|
55
|
+
* contract and may differ between technologies. A consumer shows the rating, and treats
|
|
56
|
+
* the raw readings as detail.
|
|
57
|
+
*
|
|
58
|
+
* @generated from enum kusinta.iot.device.v1.RadioQuality
|
|
59
|
+
*/
|
|
60
|
+
export const RadioQuality = /*@__PURE__*/
|
|
61
|
+
tsEnum(RadioQualitySchema);
|
|
62
|
+
|
|
@@ -26,8 +26,9 @@ export declare const file_kusinta_iot_device_v1_property_update: GenFile;
|
|
|
26
26
|
* 2. Pick the message. Two branches, chosen by whether vendor_extension is set:
|
|
27
27
|
* - absent (Matter): the Endpoint.matter_properties case whose message type declares
|
|
28
28
|
* (matter_device_type) == Endpoint.matter_device_type_id.
|
|
29
|
-
* - present (vendor): the Endpoint
|
|
30
|
-
* (vendor_extension) == the update's vendor_extension
|
|
29
|
+
* - present (vendor): the Endpoint field whose message type declares
|
|
30
|
+
* (vendor_extension) == the update's vendor_extension — a vendor_properties case,
|
|
31
|
+
* or radio_link ("kusinta.radio"), which sits outside that oneof.
|
|
31
32
|
* 3. Pick the field:
|
|
32
33
|
* - Matter branch: the one field whose (matter_cluster_id) equals cluster_id AND
|
|
33
34
|
* whose (matter_attribute_id) equals attribute_id.
|
|
@@ -50,11 +50,11 @@ export declare const vendor_attribute_capabilities: GenExtension<FieldOptions, n
|
|
|
50
50
|
/**
|
|
51
51
|
* The stable key identifying a vendor extension message, e.g. "homematic.thermostat".
|
|
52
52
|
* Matches device.v1.PropertyUpdate.vendor_extension byte for byte, and is what selects
|
|
53
|
-
* the Endpoint.vendor_properties case.
|
|
53
|
+
* the Endpoint.vendor_properties case — or Endpoint.radio_link, for "kusinta.radio".
|
|
54
54
|
*
|
|
55
|
-
* One key per message carried in Endpoint.vendor_properties, so the vendor
|
|
56
|
-
* resolution rule is the same shape as the Matter branch: pick a message
|
|
57
|
-
* option, then one field by a field option. Nothing nests.
|
|
55
|
+
* One key per message carried in Endpoint.vendor_properties or radio_link, so the vendor
|
|
56
|
+
* branch of the resolution rule is the same shape as the Matter branch: pick a message
|
|
57
|
+
* by a message option, then one field by a field option. Nothing nests.
|
|
58
58
|
*
|
|
59
59
|
* Form: "<vendor>.<what the message models>", lower_snake_case on both sides —
|
|
60
60
|
* "homematic.thermostat", and a humidity one would be "homematic.humidity_sensor". The
|
|
@@ -53,11 +53,11 @@ export const vendor_attribute_capabilities = /*@__PURE__*/
|
|
|
53
53
|
/**
|
|
54
54
|
* The stable key identifying a vendor extension message, e.g. "homematic.thermostat".
|
|
55
55
|
* Matches device.v1.PropertyUpdate.vendor_extension byte for byte, and is what selects
|
|
56
|
-
* the Endpoint.vendor_properties case.
|
|
56
|
+
* the Endpoint.vendor_properties case — or Endpoint.radio_link, for "kusinta.radio".
|
|
57
57
|
*
|
|
58
|
-
* One key per message carried in Endpoint.vendor_properties, so the vendor
|
|
59
|
-
* resolution rule is the same shape as the Matter branch: pick a message
|
|
60
|
-
* option, then one field by a field option. Nothing nests.
|
|
58
|
+
* One key per message carried in Endpoint.vendor_properties or radio_link, so the vendor
|
|
59
|
+
* branch of the resolution rule is the same shape as the Matter branch: pick a message
|
|
60
|
+
* by a message option, then one field by a field option. Nothing nests.
|
|
61
61
|
*
|
|
62
62
|
* Form: "<vendor>.<what the message models>", lower_snake_case on both sides —
|
|
63
63
|
* "homematic.thermostat", and a humidity one would be "homematic.humidity_sensor". The
|