@camstack/addon-provider-homematic 1.2.22 → 1.2.24

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/dist/addon.js CHANGED
@@ -20297,6 +20297,14 @@ var ClipSchema = object({
20297
20297
  endMs: number()
20298
20298
  }),
20299
20299
  /**
20300
+ * Distinct object classes attached to this visit (`person`, `car`, …),
20301
+ * dominant first, capped at {@link MAX_CLIP_LABELS}. The ribbon renders these
20302
+ * instead of the bare kind — "Object" tells the operator nothing a colour bar
20303
+ * did not. Absent (never empty) when the visit attached no classified object
20304
+ * event, so a motion/audio-only visit keeps its kind label.
20305
+ */
20306
+ labels: array(string()).max(3).optional(),
20307
+ /**
20300
20308
  * Lazy thumbnail URL, never inlined.
20301
20309
  *
20302
20310
  * Recording-derived clips (events-mode keep-window, and the prepared
@@ -26319,9 +26327,21 @@ var RecordingLocationUsageSchema = object({
26319
26327
  * previously rendered as two identical "disks" with a nonsensical used
26320
26328
  * split — hydrate attribution across aliases is arbitrary by nature. */
26321
26329
  locationIds: array(string()).optional(),
26322
- /** Bytes of recordings stored on this PHYSICAL volume (all aliases). */
26330
+ /**
26331
+ * Filesystem root of the physical volume this row accounts — the only
26332
+ * operator-legible identity when a location has no `displayName` yet, and
26333
+ * what a "which disk is full" alert has to name. OPTIONAL for the same
26334
+ * train-skew reason as `oldestMs`: a recorder that predates the field omits
26335
+ * it, and this schema must keep validating that older provider's payload.
26336
+ */
26337
+ root: string().optional(),
26338
+ /** Bytes of recordings stored on this PHYSICAL volume (all aliases). This is
26339
+ * the footage's SHARE of the volume, not how full the volume is — the disk
26340
+ * also holds everything that is not recordings. Volume fill is
26341
+ * `(totalBytes - availableBytes) / totalBytes`. */
26323
26342
  usedBytes: number(),
26324
- /** Free bytes on the location's volume; null when capacity is unknown (remote). */
26343
+ /** Free bytes on the location's volume; null when capacity is unknown
26344
+ * (remote/unstattable — the recorder logs the statfs failure with the root). */
26325
26345
  availableBytes: number().nullable(),
26326
26346
  /** Total bytes of the location's volume; null when unknown. */
26327
26347
  totalBytes: number().nullable()
@@ -26333,7 +26353,15 @@ var RecordingStorageUsageSchema = object({
26333
26353
  nodeId: string(),
26334
26354
  totalUsedBytes: number(),
26335
26355
  devices: array(RecordingDeviceUsageSchema),
26336
- locations: array(RecordingLocationUsageSchema)
26356
+ /**
26357
+ * Per-physical-volume capacity. OPTIONAL, and consumers must render the rest
26358
+ * of the payload without it: the hub serves this method through a BAKED
26359
+ * router, so a hub whose framework train predates a change to this array
26360
+ * strips it out of an answer a newer recorder happily produced. A UI that
26361
+ * dereferences it unconditionally crashes the whole Storage page over a
26362
+ * missing disk bar.
26363
+ */
26364
+ locations: array(RecordingLocationUsageSchema).optional()
26337
26365
  });
26338
26366
  /**
26339
26367
  * The OPERATOR-ARMED half of multi-location recordings (D116).
@@ -37118,8 +37146,14 @@ Object.freeze({
37118
37146
  "network-access": "ingress",
37119
37147
  "smtp-provider": "email"
37120
37148
  });
37149
+ /** Schema defaults — an untouched sub-field must author exactly these. */
37150
+ var NC_AUDIO_DEFAULTS = {
37151
+ hitPercent: 60,
37152
+ samplingSeconds: 10
37153
+ };
37121
37154
  new Map(AUDIO_MACRO_LABELS.flatMap((macro) => macro.icon === void 0 ? [] : [[macro.id, macro.icon]]));
37122
37155
  new Set(["devices", "classes"]);
37156
+ NC_AUDIO_DEFAULTS.hitPercent, NC_AUDIO_DEFAULTS.samplingSeconds;
37123
37157
  /**
37124
37158
  * TimelapseRule — the STANDALONE scheduled timelapse producer's rule model.
37125
37159
  *
package/dist/addon.mjs CHANGED
@@ -20298,6 +20298,14 @@ var ClipSchema = object({
20298
20298
  endMs: number()
20299
20299
  }),
20300
20300
  /**
20301
+ * Distinct object classes attached to this visit (`person`, `car`, …),
20302
+ * dominant first, capped at {@link MAX_CLIP_LABELS}. The ribbon renders these
20303
+ * instead of the bare kind — "Object" tells the operator nothing a colour bar
20304
+ * did not. Absent (never empty) when the visit attached no classified object
20305
+ * event, so a motion/audio-only visit keeps its kind label.
20306
+ */
20307
+ labels: array(string()).max(3).optional(),
20308
+ /**
20301
20309
  * Lazy thumbnail URL, never inlined.
20302
20310
  *
20303
20311
  * Recording-derived clips (events-mode keep-window, and the prepared
@@ -26320,9 +26328,21 @@ var RecordingLocationUsageSchema = object({
26320
26328
  * previously rendered as two identical "disks" with a nonsensical used
26321
26329
  * split — hydrate attribution across aliases is arbitrary by nature. */
26322
26330
  locationIds: array(string()).optional(),
26323
- /** Bytes of recordings stored on this PHYSICAL volume (all aliases). */
26331
+ /**
26332
+ * Filesystem root of the physical volume this row accounts — the only
26333
+ * operator-legible identity when a location has no `displayName` yet, and
26334
+ * what a "which disk is full" alert has to name. OPTIONAL for the same
26335
+ * train-skew reason as `oldestMs`: a recorder that predates the field omits
26336
+ * it, and this schema must keep validating that older provider's payload.
26337
+ */
26338
+ root: string().optional(),
26339
+ /** Bytes of recordings stored on this PHYSICAL volume (all aliases). This is
26340
+ * the footage's SHARE of the volume, not how full the volume is — the disk
26341
+ * also holds everything that is not recordings. Volume fill is
26342
+ * `(totalBytes - availableBytes) / totalBytes`. */
26324
26343
  usedBytes: number(),
26325
- /** Free bytes on the location's volume; null when capacity is unknown (remote). */
26344
+ /** Free bytes on the location's volume; null when capacity is unknown
26345
+ * (remote/unstattable — the recorder logs the statfs failure with the root). */
26326
26346
  availableBytes: number().nullable(),
26327
26347
  /** Total bytes of the location's volume; null when unknown. */
26328
26348
  totalBytes: number().nullable()
@@ -26334,7 +26354,15 @@ var RecordingStorageUsageSchema = object({
26334
26354
  nodeId: string(),
26335
26355
  totalUsedBytes: number(),
26336
26356
  devices: array(RecordingDeviceUsageSchema),
26337
- locations: array(RecordingLocationUsageSchema)
26357
+ /**
26358
+ * Per-physical-volume capacity. OPTIONAL, and consumers must render the rest
26359
+ * of the payload without it: the hub serves this method through a BAKED
26360
+ * router, so a hub whose framework train predates a change to this array
26361
+ * strips it out of an answer a newer recorder happily produced. A UI that
26362
+ * dereferences it unconditionally crashes the whole Storage page over a
26363
+ * missing disk bar.
26364
+ */
26365
+ locations: array(RecordingLocationUsageSchema).optional()
26338
26366
  });
26339
26367
  /**
26340
26368
  * The OPERATOR-ARMED half of multi-location recordings (D116).
@@ -37119,8 +37147,14 @@ Object.freeze({
37119
37147
  "network-access": "ingress",
37120
37148
  "smtp-provider": "email"
37121
37149
  });
37150
+ /** Schema defaults — an untouched sub-field must author exactly these. */
37151
+ var NC_AUDIO_DEFAULTS = {
37152
+ hitPercent: 60,
37153
+ samplingSeconds: 10
37154
+ };
37122
37155
  new Map(AUDIO_MACRO_LABELS.flatMap((macro) => macro.icon === void 0 ? [] : [[macro.id, macro.icon]]));
37123
37156
  new Set(["devices", "classes"]);
37157
+ NC_AUDIO_DEFAULTS.hitPercent, NC_AUDIO_DEFAULTS.samplingSeconds;
37124
37158
  /**
37125
37159
  * TimelapseRule — the STANDALONE scheduled timelapse producer's rule model.
37126
37160
  *
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@camstack/addon-provider-homematic",
3
- "version": "1.2.22",
3
+ "version": "1.2.24",
4
4
  "description": "Homematic / HomematicIP (CCU3 / RaspberryMatic) device-provider addon for CamStack — wraps the nodehomematic library",
5
5
  "keywords": [
6
6
  "camstack",