@camstack/addon-training 0.1.83 → 0.1.85

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 (20) hide show
  1. package/dist/{MotionZonesSettings-ua7eMlj6.mjs → MotionZonesSettings-DTU9fMJZ.mjs} +2 -2
  2. package/dist/{PrivacyMaskSettings-tOwuzUR7.mjs → PrivacyMaskSettings-8MmRT5Ow.mjs} +2 -2
  3. package/dist/{SceneMonitorEditor-D70yDpkr.mjs → SceneMonitorEditor-qbsyyldN.mjs} +1 -1
  4. package/dist/_stub.js +4552 -4466
  5. package/dist/{_virtual_mf-localSharedImportMap___mfe_internal__addon_training_page-CX_OmaCS.mjs → _virtual_mf-localSharedImportMap___mfe_internal__addon_training_page-_MdKeniv.mjs} +3 -3
  6. package/dist/_virtual_mf___mfe_internal__addon_training_page__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-CHXZ7Vwy.mjs +26 -0
  7. package/dist/{dist-BinKWWJ5.js → dist-DIvqaK45.js} +446 -10
  8. package/dist/{dist-BK5jIqgk.mjs → dist-vmoGj7S3.mjs} +446 -10
  9. package/dist/{hostInit-DR72gpW3.mjs → hostInit-BKy0E1EU.mjs} +2 -2
  10. package/dist/index.js +1 -1
  11. package/dist/orchestrator/training.addon.js +1 -1
  12. package/dist/orchestrator/training.addon.mjs +1 -1
  13. package/dist/{player-overlays-DCStC-vp.mjs → player-overlays-B_I7m2Ml.mjs} +1 -1
  14. package/dist/providers/modal/training-modal.addon.js +1 -1
  15. package/dist/providers/modal/training-modal.addon.mjs +1 -1
  16. package/dist/remoteEntry.js +1 -1
  17. package/dist/{responsive-DsQ48pYk.mjs → responsive-BlFhgdjv.mjs} +1 -1
  18. package/dist/{virtual_mf-REMOTE_ENTRY_ID___mfe_internal__addon_training_page__remoteEntry_js-BToJVQAB.mjs → virtual_mf-REMOTE_ENTRY_ID___mfe_internal__addon_training_page__remoteEntry_js-BH-X_-uQ.mjs} +1 -1
  19. package/package.json +1 -1
  20. package/dist/_virtual_mf___mfe_internal__addon_training_page__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-CF6J142s.mjs +0 -26
@@ -5600,7 +5600,7 @@ var ZodIssueCode = {
5600
5600
  var ZodFirstPartyTypeKind;
5601
5601
  ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {});
5602
5602
  //#endregion
5603
- //#region ../types/dist/sleep-CARd6wZF.mjs
5603
+ //#region ../types/dist/sleep-B81gwQuR.mjs
5604
5604
  /**
5605
5605
  * The audio chunk plane's byte format, and the ONE expansion from a coded
5606
5606
  * window to float samples (D455).
@@ -8374,6 +8374,53 @@ var READING_QUANTITIES = [
8374
8374
  ];
8375
8375
  var ReadingQuantitySchema = _enum(READING_QUANTITIES);
8376
8376
  new Set(READING_QUANTITIES);
8377
+ /**
8378
+ * Stored unit symbol for a quantity. `none` means the number is dimensionless
8379
+ * (or an index / ratio / count). `device` means the cap has no single unit.
8380
+ */
8381
+ var QUANTITY_BASE = {
8382
+ temperature: "°C",
8383
+ pressure: "hPa",
8384
+ speed: "m/s",
8385
+ precipitation: "mm",
8386
+ "precipitation-rate": "mm/h",
8387
+ length: "m",
8388
+ area: "m²",
8389
+ illuminance: "lx",
8390
+ irradiance: "W/m²",
8391
+ power: "W",
8392
+ energy: "kWh",
8393
+ voltage: "V",
8394
+ current: "A",
8395
+ "apparent-power": "VA",
8396
+ humidity: "%",
8397
+ percentage: "%",
8398
+ "concentration-volume": "ppm",
8399
+ "concentration-mass": "µg/m³",
8400
+ "concentration-ppb": "ppb",
8401
+ volume: "L",
8402
+ duration: "s",
8403
+ "duration-ms": "ms",
8404
+ information: "B",
8405
+ "sound-level": "dBFS",
8406
+ "signal-level": "dBm",
8407
+ "colour-temperature": "mired",
8408
+ angle: "°",
8409
+ bitrate: "kbps",
8410
+ rate: "fps",
8411
+ mass: "kg",
8412
+ index: "none",
8413
+ ratio: "none",
8414
+ count: "none",
8415
+ none: "none",
8416
+ device: "device"
8417
+ };
8418
+ /** The stored unit, or `undefined` when the quantity has no unit symbol. */
8419
+ function baseUnitOf(quantity) {
8420
+ const symbol = QUANTITY_BASE[quantity];
8421
+ if (symbol === "none" || symbol === "device") return void 0;
8422
+ return symbol;
8423
+ }
8377
8424
  function readingMeta(quantity, extras) {
8378
8425
  return {
8379
8426
  quantity,
@@ -8923,6 +8970,7 @@ var CAP_NAMES = Object.freeze([
8923
8970
  "filesystem-browse",
8924
8971
  "flood",
8925
8972
  "gas",
8973
+ "group-status",
8926
8974
  "heating-valve",
8927
8975
  "humidifier",
8928
8976
  "humidity-sensor",
@@ -9741,6 +9789,20 @@ Object.freeze({
9741
9789
  "path": "detected",
9742
9790
  "valueType": "boolean"
9743
9791
  }],
9792
+ "group-status": [
9793
+ {
9794
+ "path": "included",
9795
+ "valueType": "number"
9796
+ },
9797
+ {
9798
+ "path": "excluded",
9799
+ "valueType": "number"
9800
+ },
9801
+ {
9802
+ "path": "total",
9803
+ "valueType": "number"
9804
+ }
9805
+ ],
9744
9806
  "heating-valve": [{
9745
9807
  "path": "position",
9746
9808
  "valueType": "number"
@@ -11072,7 +11134,7 @@ var DeviceRole = /* @__PURE__ */ function(DeviceRole) {
11072
11134
  return DeviceRole;
11073
11135
  }({});
11074
11136
  //#endregion
11075
- //#region ../types/dist/composition-kEl9mevu.mjs
11137
+ //#region ../types/dist/composition-B85l9j1M.mjs
11076
11138
  /**
11077
11139
  * The ffmpeg build every CamStack node downloads, per platform and arch.
11078
11140
  *
@@ -11827,15 +11889,67 @@ function validateExpressionSource(src) {
11827
11889
  }
11828
11890
  return null;
11829
11891
  }
11830
- /** A composed device's stableId is this prefix plus the block id. */
11831
- var COMPOSED_DEVICE_STABLE_ID_PREFIX = "composed-";
11832
- /** Longest snippet a `code` source may carry (slice 4). */
11833
- var MAX_COMPOSITION_CODE_LENGTH = 2e4;
11892
+ /**
11893
+ * A composition source identity: `(addonId, stableId)`, never a numeric device
11894
+ * id. Split out so helper schemas can name it without a cycle through
11895
+ * `composition.ts` (D659).
11896
+ */
11834
11897
  var CompositionSourceRefSchema = object({
11835
11898
  /** The owning addon; `stableId` is unique only within it. */
11836
11899
  addonId: string().min(1),
11837
11900
  stableId: string().min(1)
11838
11901
  });
11902
+ var GROUP_TEMPLATE_IDS = [
11903
+ "temperature",
11904
+ "humidity",
11905
+ "pressure",
11906
+ "illuminance",
11907
+ "power",
11908
+ "energy",
11909
+ "battery",
11910
+ "numeric",
11911
+ "motion",
11912
+ "contact",
11913
+ "leak",
11914
+ "smoke",
11915
+ "occupancy",
11916
+ "binary"
11917
+ ];
11918
+ var NUMERIC_AGGREGATES = [
11919
+ "mean",
11920
+ "median",
11921
+ "min",
11922
+ "max",
11923
+ "sum"
11924
+ ];
11925
+ var BINARY_AGGREGATES = ["any", "all"];
11926
+ var AGGREGATE_REDUCERS = [
11927
+ "mean",
11928
+ "median",
11929
+ "min",
11930
+ "max",
11931
+ "sum",
11932
+ "any",
11933
+ "all"
11934
+ ];
11935
+ var GroupTemplateIdSchema = _enum(GROUP_TEMPLATE_IDS);
11936
+ var AggregateReducerSchema = _enum(AGGREGATE_REDUCERS);
11937
+ /** One member. The field is stored so occupancy can name motion or binary. */
11938
+ var HelperMemberSchema = object({
11939
+ source: CompositionSourceRefSchema,
11940
+ cap: string().min(1),
11941
+ fieldPath: string().min(1)
11942
+ });
11943
+ var HelperSpecSchema = discriminatedUnion("kind", [object({
11944
+ kind: literal("group"),
11945
+ templateId: GroupTemplateIdSchema,
11946
+ aggregate: AggregateReducerSchema,
11947
+ members: array(HelperMemberSchema).min(1).max(64)
11948
+ })]);
11949
+ /** A composed device's stableId is this prefix plus the block id. */
11950
+ var COMPOSED_DEVICE_STABLE_ID_PREFIX = "composed-";
11951
+ /** Longest snippet a `code` source may carry (slice 4). */
11952
+ var MAX_COMPOSITION_CODE_LENGTH = 2e4;
11839
11953
  /** One field of one capability of one source device. */
11840
11954
  var CompositionFieldReadSchema = object({
11841
11955
  source: CompositionSourceRefSchema,
@@ -11879,7 +11993,33 @@ var CompositionCodeSourceSchema = object({
11879
11993
  var CompositionFieldSourceSchema = discriminatedUnion("kind", [
11880
11994
  CompositionFromSourceSchema,
11881
11995
  CompositionExpressionSourceSchema,
11882
- CompositionCodeSourceSchema
11996
+ CompositionCodeSourceSchema,
11997
+ object({
11998
+ kind: literal("aggregate"),
11999
+ reducer: _enum([
12000
+ "mean",
12001
+ "median",
12002
+ "min",
12003
+ "max",
12004
+ "sum",
12005
+ "any",
12006
+ "all"
12007
+ ]),
12008
+ reads: array(CompositionFieldReadSchema).min(1).max(64),
12009
+ /** `value` is the reading; the others are the member counts. */
12010
+ publish: _enum([
12011
+ "value",
12012
+ "included",
12013
+ "excluded",
12014
+ "total"
12015
+ ]),
12016
+ /** What a `value` publish does when nobody is included. Counts ignore this. */
12017
+ empty: _enum([
12018
+ "null",
12019
+ "omit",
12020
+ "offline"
12021
+ ])
12022
+ })
11883
12023
  ]);
11884
12024
  var CompositionCommandTargetSchema = discriminatedUnion("kind", [object({
11885
12025
  kind: literal("forward"),
@@ -11925,7 +12065,13 @@ var CompositionSchema = object({
11925
12065
  kind: literal("existing"),
11926
12066
  device: CompositionSourceRefSchema
11927
12067
  })]),
11928
- features: array(CompositionFeatureSchema).min(1).max(16)
12068
+ features: array(CompositionFeatureSchema).min(1).max(16),
12069
+ /**
12070
+ * Present when the block is a helper template. Absent on a free
12071
+ * composition (the room example, device 4603). The editor reads this,
12072
+ * never the compiled features.
12073
+ */
12074
+ helper: HelperSpecSchema.optional()
11929
12075
  }).superRefine((composition, ctx) => {
11930
12076
  const seen = /* @__PURE__ */ new Set();
11931
12077
  composition.features.forEach((feature, index) => {
@@ -18063,7 +18209,10 @@ var CompositionProblemSchema = object({
18063
18209
  "target-missing",
18064
18210
  "target-unreadable",
18065
18211
  "not-replaceable",
18066
- "native-capability-replace"
18212
+ "native-capability-replace",
18213
+ "mixed-quantity",
18214
+ "helper-mismatch",
18215
+ "member-constraint"
18067
18216
  ]),
18068
18217
  path: string(),
18069
18218
  message: string()
@@ -18084,7 +18233,8 @@ var CompositionUnavailableModeSchema = _enum([
18084
18233
  "null",
18085
18234
  "offline",
18086
18235
  "unknown",
18087
- "release"
18236
+ "release",
18237
+ "omit"
18088
18238
  ]);
18089
18239
  /**
18090
18240
  * `derived` reads a source · `clock` reads only `now`, recomputed when a sibling
@@ -18298,6 +18448,235 @@ Object.freeze({
18298
18448
  result: ["number", "null"]
18299
18449
  }
18300
18450
  });
18451
+ /**
18452
+ * One catalog row per base reading a group helper can build (D944 §3).
18453
+ * Data, not a form default written into the block.
18454
+ */
18455
+ var NOW = {
18456
+ fieldPath: "lastFetchedAt",
18457
+ expr: "now"
18458
+ };
18459
+ var CHANGED = {
18460
+ fieldPath: "lastChangedAt",
18461
+ expr: "now"
18462
+ };
18463
+ function numeric(input) {
18464
+ return {
18465
+ ...input,
18466
+ family: "numeric",
18467
+ deviceType: DeviceType.Sensor,
18468
+ memberDeviceType: DeviceType.Sensor,
18469
+ baseUnit: baseUnitOf(input.quantity),
18470
+ aggregates: NUMERIC_AGGREGATES,
18471
+ accept: [{
18472
+ cap: input.outputCap,
18473
+ fieldPath: input.outputField
18474
+ }]
18475
+ };
18476
+ }
18477
+ function binary(input) {
18478
+ return {
18479
+ ...input,
18480
+ family: "binary",
18481
+ deviceType: DeviceType.Sensor,
18482
+ memberDeviceType: DeviceType.Sensor,
18483
+ quantity: "none",
18484
+ baseUnit: void 0,
18485
+ aggregates: BINARY_AGGREGATES,
18486
+ empty: "offline"
18487
+ };
18488
+ }
18489
+ var GROUP_TEMPLATES = [
18490
+ numeric({
18491
+ id: "temperature",
18492
+ summary: "Mean, median, min, max or sum of temperatures. Offline and unknown members are left out, never read as 0 °C.",
18493
+ role: DeviceRole.TemperatureSensor,
18494
+ outputCap: "temperature-sensor",
18495
+ outputField: "celsius",
18496
+ quantity: "temperature",
18497
+ defaultAggregate: "mean",
18498
+ empty: "null",
18499
+ companions: [NOW]
18500
+ }),
18501
+ numeric({
18502
+ id: "humidity",
18503
+ summary: "Humidity in percent. Offline and unknown members are left out, never read as 0 %.",
18504
+ role: DeviceRole.HumiditySensor,
18505
+ outputCap: "humidity-sensor",
18506
+ outputField: "percent",
18507
+ quantity: "humidity",
18508
+ defaultAggregate: "mean",
18509
+ empty: "null",
18510
+ companions: [NOW]
18511
+ }),
18512
+ numeric({
18513
+ id: "pressure",
18514
+ summary: "Pressure in hectopascals. Offline and unknown members are left out, never read as 0 hPa.",
18515
+ role: DeviceRole.PressureSensor,
18516
+ outputCap: "pressure-sensor",
18517
+ outputField: "hpa",
18518
+ quantity: "pressure",
18519
+ defaultAggregate: "mean",
18520
+ empty: "null",
18521
+ companions: [NOW]
18522
+ }),
18523
+ numeric({
18524
+ id: "illuminance",
18525
+ summary: "Illuminance in lux. Offline and unknown members are left out, never read as 0 lx.",
18526
+ role: DeviceRole.AmbientLightSensor,
18527
+ outputCap: "ambient-light-sensor",
18528
+ outputField: "lux",
18529
+ quantity: "illuminance",
18530
+ defaultAggregate: "mean",
18531
+ empty: "null",
18532
+ companions: [NOW]
18533
+ }),
18534
+ numeric({
18535
+ id: "power",
18536
+ summary: "Power in watts, summed by default. Nobody reporting omits the key rather than writing 0 W.",
18537
+ role: DeviceRole.PowerSensor,
18538
+ outputCap: "power-meter",
18539
+ outputField: "watts",
18540
+ quantity: "power",
18541
+ defaultAggregate: "sum",
18542
+ empty: "omit",
18543
+ companions: [NOW]
18544
+ }),
18545
+ numeric({
18546
+ id: "energy",
18547
+ summary: "Energy in kilowatt-hours, summed by default. Nobody reporting omits the key rather than writing 0 kWh.",
18548
+ role: DeviceRole.EnergySensor,
18549
+ outputCap: "power-meter",
18550
+ outputField: "kwhTotal",
18551
+ quantity: "energy",
18552
+ defaultAggregate: "sum",
18553
+ empty: "omit",
18554
+ companions: [NOW]
18555
+ }),
18556
+ numeric({
18557
+ id: "battery",
18558
+ summary: "Battery charge in percent. Offline and unknown members are left out, never read as 0 %.",
18559
+ role: DeviceRole.BatterySensor,
18560
+ outputCap: "battery",
18561
+ outputField: "percentage",
18562
+ quantity: "percentage",
18563
+ defaultAggregate: "mean",
18564
+ empty: "null",
18565
+ companions: [
18566
+ {
18567
+ fieldPath: "charging",
18568
+ expr: "\"unknown\""
18569
+ },
18570
+ {
18571
+ fieldPath: "sleeping",
18572
+ expr: "false"
18573
+ },
18574
+ {
18575
+ fieldPath: "lastUpdated",
18576
+ expr: "now"
18577
+ }
18578
+ ]
18579
+ }),
18580
+ numeric({
18581
+ id: "numeric",
18582
+ summary: "A numeric reading in the members’ shared quantity. Mixed quantities are refused. Nobody reporting publishes null, not 0.",
18583
+ role: DeviceRole.NumericSensor,
18584
+ outputCap: "numeric-sensor",
18585
+ outputField: "value",
18586
+ quantity: "device",
18587
+ defaultAggregate: "mean",
18588
+ empty: "null",
18589
+ companions: [NOW]
18590
+ }),
18591
+ binary({
18592
+ id: "motion",
18593
+ summary: "Any or all motion. Offline and unknown members are left out, never read as off. Nobody reporting takes the device offline.",
18594
+ role: DeviceRole.MotionSensor,
18595
+ outputCap: "motion",
18596
+ outputField: "detected",
18597
+ defaultAggregate: "any",
18598
+ accept: [{
18599
+ cap: "motion",
18600
+ fieldPath: "detected"
18601
+ }],
18602
+ companions: [{
18603
+ fieldPath: "lastDetectedAt",
18604
+ expr: "null"
18605
+ }, {
18606
+ fieldPath: "autoClearAfterMs",
18607
+ expr: "null"
18608
+ }]
18609
+ }),
18610
+ binary({
18611
+ id: "contact",
18612
+ summary: "Any or all open contacts. Offline and unknown members are left out, never read as closed.",
18613
+ role: DeviceRole.ContactSensor,
18614
+ outputCap: "contact",
18615
+ outputField: "entryOpen",
18616
+ defaultAggregate: "any",
18617
+ accept: [{
18618
+ cap: "contact",
18619
+ fieldPath: "entryOpen"
18620
+ }],
18621
+ companions: [CHANGED]
18622
+ }),
18623
+ binary({
18624
+ id: "leak",
18625
+ summary: "Any or all leak detections. Offline and unknown members are left out, never read as dry.",
18626
+ role: DeviceRole.LeakSensor,
18627
+ outputCap: "flood",
18628
+ outputField: "flooded",
18629
+ defaultAggregate: "any",
18630
+ accept: [{
18631
+ cap: "flood",
18632
+ fieldPath: "flooded"
18633
+ }],
18634
+ companions: [CHANGED]
18635
+ }),
18636
+ binary({
18637
+ id: "smoke",
18638
+ summary: "Any or all smoke detections. Offline and unknown members are left out, never read as clear.",
18639
+ role: DeviceRole.SmokeSensor,
18640
+ outputCap: "smoke",
18641
+ outputField: "detected",
18642
+ defaultAggregate: "any",
18643
+ accept: [{
18644
+ cap: "smoke",
18645
+ fieldPath: "detected"
18646
+ }],
18647
+ companions: [CHANGED]
18648
+ }),
18649
+ binary({
18650
+ id: "occupancy",
18651
+ summary: "Any or all of motion or binary sensors, published as a binary. Presence zones are not aggregated. Nobody reporting is offline, not off.",
18652
+ role: DeviceRole.BinarySensor,
18653
+ outputCap: "binary",
18654
+ outputField: "on",
18655
+ defaultAggregate: "any",
18656
+ accept: [{
18657
+ cap: "motion",
18658
+ fieldPath: "detected"
18659
+ }, {
18660
+ cap: "binary",
18661
+ fieldPath: "on"
18662
+ }],
18663
+ companions: [CHANGED]
18664
+ }),
18665
+ binary({
18666
+ id: "binary",
18667
+ summary: "Any or all generic binary sensors. Offline and unknown members are left out, never read as off.",
18668
+ role: DeviceRole.BinarySensor,
18669
+ outputCap: "binary",
18670
+ outputField: "on",
18671
+ defaultAggregate: "any",
18672
+ accept: [{
18673
+ cap: "binary",
18674
+ fieldPath: "on"
18675
+ }],
18676
+ companions: [CHANGED]
18677
+ })
18678
+ ];
18679
+ new Map(GROUP_TEMPLATES.map((template) => [template.id, template]));
18301
18680
  `${COMPOSED_DEVICE_STABLE_ID_PREFIX}`;
18302
18681
  /**
18303
18682
  * What a composition may BUILD on a device type (G2, D676): the caps a new
@@ -58118,6 +58497,24 @@ object({
58118
58497
  lastChangedAt: number()
58119
58498
  });
58120
58499
  DeviceType.Sensor;
58500
+ object({
58501
+ /** Members whose current value entered the aggregate. */
58502
+ included: number().int().nonnegative().meta(readingMeta("count", {
58503
+ precision: 0,
58504
+ label: "Reporting"
58505
+ })),
58506
+ /** Members left out: offline, unknown, or not a finite reading (D393). */
58507
+ excluded: number().int().nonnegative().meta(readingMeta("count", {
58508
+ precision: 0,
58509
+ label: "Excluded"
58510
+ })),
58511
+ /** `included` + `excluded`. */
58512
+ total: number().int().nonnegative().meta(readingMeta("count", {
58513
+ precision: 0,
58514
+ label: "Members"
58515
+ }))
58516
+ });
58517
+ DeviceType.Sensor;
58121
58518
  object({
58122
58519
  /** Radiator valve opening 0 (closed) .. 100 (open). Null = not yet known. */
58123
58520
  position: number().min(0).max(100).nullable().meta(readingMeta("percentage")),
@@ -68499,6 +68896,13 @@ Object.freeze({
68499
68896
  access: "view",
68500
68897
  role: "viewer"
68501
68898
  },
68899
+ "groupStatus.getStatus": {
68900
+ capName: "group-status",
68901
+ capScope: "device",
68902
+ addonId: null,
68903
+ access: "view",
68904
+ role: "viewer"
68905
+ },
68502
68906
  "heatingValve.getStatus": {
68503
68907
  capName: "heating-valve",
68504
68908
  capScope: "device",
@@ -78321,6 +78725,33 @@ var SENSOR_CAP_VOCABULARY = {
78321
78725
  icon: "flame"
78322
78726
  }]
78323
78727
  },
78728
+ "group-status": {
78729
+ scope: "device",
78730
+ noun: t("Group", "Gruppo"),
78731
+ state: [
78732
+ {
78733
+ kind: "numeric",
78734
+ field: "included",
78735
+ quantity: t("the members reporting", "i membri che rispondono"),
78736
+ label: t("Reporting", "Rispondono"),
78737
+ icon: "users"
78738
+ },
78739
+ {
78740
+ kind: "numeric",
78741
+ field: "excluded",
78742
+ quantity: t("the members left out", "i membri esclusi"),
78743
+ label: t("Excluded", "Esclusi"),
78744
+ icon: "users"
78745
+ },
78746
+ {
78747
+ kind: "numeric",
78748
+ field: "total",
78749
+ quantity: t("the member count", "il numero di membri"),
78750
+ label: t("Members", "Membri"),
78751
+ icon: "sigma"
78752
+ }
78753
+ ]
78754
+ },
78324
78755
  "humidity-sensor": {
78325
78756
  scope: "device",
78326
78757
  noun: t("Humidity", "Umidità"),
@@ -79786,6 +80217,11 @@ Object.freeze({
79786
80217
  form: "single",
79787
80218
  optional: false
79788
80219
  }],
80220
+ "groupStatus.getStatus": [{
80221
+ name: "deviceId",
80222
+ form: "single",
80223
+ optional: false
80224
+ }],
79789
80225
  "heatingValve.getStatus": [{
79790
80226
  name: "deviceId",
79791
80227
  form: "single",