@camstack/addon-provider-homematic 1.2.151 → 1.2.153

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
@@ -8,7 +8,7 @@ let http = require("http");
8
8
  let crypto$1 = require("crypto");
9
9
  let fs_promises = require("fs/promises");
10
10
  let path = require("path");
11
- //#region ../types/dist/event-category-7pZEBmVg.mjs
11
+ //#region ../types/dist/event-category-BfJwUd2S.mjs
12
12
  var EventCategory = /* @__PURE__ */ function(EventCategory) {
13
13
  EventCategory["SystemBoot"] = "system.boot";
14
14
  EventCategory["SystemAddonsReady"] = "system.addons-ready";
@@ -325,6 +325,15 @@ var EventCategory = /* @__PURE__ */ function(EventCategory) {
325
325
  */
326
326
  EventCategory["PipelineDetectionBlind"] = "pipeline.detection-blind";
327
327
  /**
328
+ * A camera's motion source has fired constantly with no subject for an hour
329
+ * (motion duty or session count over the bar, zero detections) — it is not
330
+ * blind, its motion zones or sensitivity want tuning (D907). Paired with
331
+ * {@link PipelineMotionCalm}.
332
+ */
333
+ EventCategory["PipelineMotionNoisy"] = "pipeline.motion-noisy";
334
+ /** The recovery edge of {@link PipelineMotionNoisy}: the motion fell back, or a detection arrived. */
335
+ EventCategory["PipelineMotionCalm"] = "pipeline.motion-calm";
336
+ /**
328
337
  * Per-camera pipeline config was mutated by the orchestrator
329
338
  * (3-level settings change via `setAgentAddonDefaults` /
330
339
  * `setCameraStepToggle` / `setCameraPipelineForAgent` or a
@@ -5564,7 +5573,7 @@ var ZodIssueCode = {
5564
5573
  var ZodFirstPartyTypeKind;
5565
5574
  ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {});
5566
5575
  //#endregion
5567
- //#region ../types/dist/sleep-CueztlR1.mjs
5576
+ //#region ../types/dist/sleep-DJFUfKvA.mjs
5568
5577
  /**
5569
5578
  * The audio chunk plane's byte format, and the ONE expansion from a coded
5570
5579
  * window to float samples (D455).
@@ -8163,7 +8172,7 @@ var EntryDescriptorSchema = object({
8163
8172
  /** JSON Schema of the entry body; `secret: true` marks a password field. */
8164
8173
  fields: record(string(), unknown())
8165
8174
  }).strict();
8166
- /** What crosses the wire and sits in the engine's catalog: JSON only, no Zod. */
8175
+ /** What crosses the wire from an addon: JSON only, no Zod. An unknown key is refused. */
8167
8176
  var RecordKindDeclarationSchema = object({
8168
8177
  database: _enum(RECORD_DATABASES).default("settings"),
8169
8178
  class: _enum(RECORD_CLASSES),
@@ -8182,14 +8191,6 @@ var RecordKindDeclarationSchema = object({
8182
8191
  secretPaths: array(string().min(1)).default([]),
8183
8192
  /** The id key of each array that carries a secret (`{ headers: 'name' }`). */
8184
8193
  secretArrayKeys: record(string(), string()).default({}),
8185
- /**
8186
- * RETIRED (D900): the legacy table a kind adopted from during the records
8187
- * migration. Nothing declares it any more and nothing reads it; the schema
8188
- * still ACCEPTS it because the catalog rows the migration wrote carry it
8189
- * (an orphaned kind is never redeclared) and an addon built before the
8190
- * removal still sends it. Never set it.
8191
- */
8192
- adoptsFrom: string().min(1).optional(),
8193
8194
  /** Kinds that must agree through `transact` sit in one file under one family name. */
8194
8195
  transactFamily: string().min(1).optional(),
8195
8196
  entry: EntryDescriptorSchema.optional()
@@ -12985,17 +12986,6 @@ object({
12985
12986
  createdAt: number(),
12986
12987
  updatedAt: number()
12987
12988
  });
12988
- object({
12989
- id: string(),
12990
- label: string(),
12991
- isAdmin: boolean().default(false),
12992
- allowedProviders: AllowedProviderSchema,
12993
- allowedDevices: AllowedDevicesSchema,
12994
- tokenHash: string(),
12995
- tokenPrefix: string(),
12996
- createdAt: number(),
12997
- lastUsedAt: number().optional()
12998
- });
12999
12989
  object({
13000
12990
  id: string(),
13001
12991
  userId: string(),
@@ -17026,16 +17016,36 @@ var RecordKindStateSchema = _enum([
17026
17016
  var DeclareKindResultSchema = object({
17027
17017
  kindId: number().int(),
17028
17018
  state: RecordKindStateSchema,
17029
- createdIndexes: array(string()),
17030
- /**
17031
- * RETIRED (D900): always `null`. It carried the records-migration boot guard;
17032
- * it stays on the wire, null, because an addon built before the removal reads
17033
- * an ABSENT field as "adoption pending" and refuses to start.
17034
- */
17035
- adoptionPending: _null()
17019
+ createdIndexes: array(string())
17036
17020
  });
17037
17021
  /** Keychain refs a write released (the old marker is gone from the row): the owner deletes the values. */
17038
17022
  var SecretRefsList = array(string());
17023
+ /**
17024
+ * One op of a `transact`: the single-row writes, each on a kind of the caller.
17025
+ * All ops of one call share ONE database file and ONE `transactFamily`.
17026
+ */
17027
+ var RecordTransactOpSchema = discriminatedUnion("op", [
17028
+ object({
17029
+ op: literal("put"),
17030
+ kind: RecordKindNameSchema,
17031
+ record: RecordInputSchema,
17032
+ ifRev: number().int().min(0).optional()
17033
+ }),
17034
+ object({
17035
+ op: literal("patch"),
17036
+ kind: RecordKindNameSchema,
17037
+ id: RecordIdSchema,
17038
+ data: RecordBodySchema,
17039
+ at: number().int().nullable().optional(),
17040
+ expiresAt: number().int().nullable().optional(),
17041
+ ifRev: number().int().min(1).optional()
17042
+ }),
17043
+ object({
17044
+ op: literal("delete"),
17045
+ kind: RecordKindNameSchema,
17046
+ id: RecordIdSchema
17047
+ })
17048
+ ]);
17039
17049
  var RecordSecretRefsSchema = record(string(), record(string(), string()));
17040
17050
  method(object({ kinds: record(RecordKindNameSchema, RecordKindDeclarationSchema) }), object({ kinds: record(string(), DeclareKindResultSchema) }), {
17041
17051
  kind: "mutation",
@@ -17142,6 +17152,16 @@ method(object({ kinds: record(RecordKindNameSchema, RecordKindDeclarationSchema)
17142
17152
  }), {
17143
17153
  kind: "mutation",
17144
17154
  auth: "admin"
17155
+ }), method(object({ ops: array(RecordTransactOpSchema).min(1).max(RECORD_BATCH_MAX) }), object({
17156
+ results: array(object({
17157
+ rev: number().int().nullable(),
17158
+ deleted: boolean()
17159
+ })),
17160
+ releasedRefs: SecretRefsList,
17161
+ secretRefs: SecretRefsList
17162
+ }), {
17163
+ kind: "mutation",
17164
+ auth: "admin"
17145
17165
  }), method(object({
17146
17166
  deviceId: number().int(),
17147
17167
  kinds: array(RecordKindNameSchema).optional()
@@ -42866,9 +42886,13 @@ var NcSystemEventKindSchema = _enum([
42866
42886
  "node-updating",
42867
42887
  "node-inference-unavailable",
42868
42888
  "detection-blind",
42889
+ "motion-noisy",
42890
+ "motion-calm",
42869
42891
  "recording-stalled",
42870
42892
  "recording-healthy",
42871
42893
  "recording-degraded",
42894
+ "device-attention-required",
42895
+ "device-attention-resolved",
42872
42896
  "storage-location-low",
42873
42897
  "storage-location-critical",
42874
42898
  "storage-location-ok",
@@ -48429,7 +48453,6 @@ var RecommendationReasonSchema = discriminatedUnion("kind", [
48429
48453
  modelId: string()
48430
48454
  }),
48431
48455
  object({ kind: literal("cpu-device") }),
48432
- object({ kind: literal("coral-untouched") }),
48433
48456
  object({ kind: literal("device-disabled") }),
48434
48457
  object({ kind: literal("device-unavailable") }),
48435
48458
  object({ kind: literal("node-offline") }),
@@ -48527,11 +48550,6 @@ var AutoTuneWarningSchema = discriminatedUnion("kind", [
48527
48550
  kind: literal("detector-store-unreadable"),
48528
48551
  error: string()
48529
48552
  }),
48530
- object({
48531
- kind: literal("coral-enabled"),
48532
- nodeId: string(),
48533
- deviceKey: string()
48534
- }),
48535
48553
  object({
48536
48554
  kind: literal("custom-pin-kept"),
48537
48555
  nodeId: string(),
@@ -56192,6 +56210,16 @@ var DishwasherStatusSchema = object({
56192
56210
  powerState: string().nullable(),
56193
56211
  saltLevel: DishwasherConsumableLevelSchema.nullable(),
56194
56212
  rinseAidLevel: DishwasherConsumableLevelSchema.nullable(),
56213
+ /**
56214
+ * True while the appliance asks for its filter to be cleaned (smart-filter, filter-system or
56215
+ * combined care-and-filter reminder raised); false when every such reminder reads clear; null
56216
+ * when none is reported. A cleared reminder is not an unknown one.
56217
+ */
56218
+ filterCleaningDue: boolean().nullable(),
56219
+ /** True while the machine-care (descaling / cleaning-program) reminder is raised; false when clear; null when not reported. */
56220
+ machineCareDue: boolean().nullable(),
56221
+ /** Program runs left before the machine-care reminder is due; null when the appliance does not say. */
56222
+ machineCareRemainingRuns: number().int().nonnegative().nullable(),
56195
56223
  /** Option states: null when the appliance does not expose the option or has not said. */
56196
56224
  halfLoad: boolean().nullable(),
56197
56225
  hygienePlus: boolean().nullable(),
@@ -64842,16 +64870,6 @@ var UpdateUserInputSchema = object({
64842
64870
  allowedDevices: record(string(), union([array(string()), literal("*")])).optional(),
64843
64871
  scopes: array(TokenScopeSchema).optional()
64844
64872
  });
64845
- var ApiKeySummarySchema = object({
64846
- id: string(),
64847
- label: string(),
64848
- isAdmin: boolean().default(false),
64849
- allowedProviders: union([array(string()), literal("*")]).optional(),
64850
- allowedDevices: record(string(), union([array(string()), literal("*")])).optional(),
64851
- tokenPrefix: string(),
64852
- createdAt: number(),
64853
- lastUsedAt: number().optional()
64854
- });
64855
64873
  var OauthSessionSummarySchema = object({
64856
64874
  id: string(),
64857
64875
  userId: string(),
@@ -64873,8 +64891,7 @@ var TotpStatusSchema = object({
64873
64891
  confirmedAt: number().nullable()
64874
64892
  });
64875
64893
  /**
64876
- * user-management — singleton capability for user accounts and the
64877
- * legacy API-key rows.
64894
+ * user-management — singleton capability for user accounts.
64878
64895
  *
64879
64896
  * v2 model: every method gated by `auth: 'admin'`. Admin-only delegation
64880
64897
  * — the subset check on `setUserScopes` is moot
@@ -64930,10 +64947,6 @@ method(_void(), array(UserSummarySchema), { auth: "admin" }), method(CreateUserI
64930
64947
  }), UserSummarySchema.extend({ passwordHash: string() }).nullable(), {
64931
64948
  kind: "mutation",
64932
64949
  access: "view"
64933
- }), method(_void(), array(ApiKeySummarySchema), { auth: "admin" }), method(object({ id: string() }), object({ success: literal(true) }), {
64934
- kind: "mutation",
64935
- auth: "admin",
64936
- access: "delete"
64937
64950
  }), method(object({ userId: string() }), TotpSetupResultSchema, {
64938
64951
  kind: "mutation",
64939
64952
  auth: "admin",
@@ -74389,6 +74402,12 @@ Object.freeze({
74389
74402
  addonId: null,
74390
74403
  access: "view"
74391
74404
  },
74405
+ "records.transact": {
74406
+ capName: "records",
74407
+ capScope: "system",
74408
+ addonId: null,
74409
+ access: "create"
74410
+ },
74392
74411
  "sceneMonitor.captureReference": {
74393
74412
  capName: "scene-monitor",
74394
74413
  capScope: "device",
@@ -75721,12 +75740,6 @@ Object.freeze({
75721
75740
  addonId: null,
75722
75741
  access: "view"
75723
75742
  },
75724
- "userManagement.listApiKeys": {
75725
- capName: "user-management",
75726
- capScope: "system",
75727
- addonId: null,
75728
- access: "view"
75729
- },
75730
75743
  "userManagement.listExternalIdentities": {
75731
75744
  capName: "user-management",
75732
75745
  capScope: "system",
@@ -75781,12 +75794,6 @@ Object.freeze({
75781
75794
  addonId: null,
75782
75795
  access: "create"
75783
75796
  },
75784
- "userManagement.revokeApiKey": {
75785
- capName: "user-management",
75786
- capScope: "system",
75787
- addonId: null,
75788
- access: "delete"
75789
- },
75790
75797
  "userManagement.revokeOauthSession": {
75791
75798
  capName: "user-management",
75792
75799
  capScope: "system",
@@ -79151,9 +79158,13 @@ new Map(Object.entries({
79151
79158
  "stream-online": "device-events",
79152
79159
  "stream-offline": "device-events",
79153
79160
  "detection-blind": "device-events",
79161
+ "motion-noisy": "device-events",
79162
+ "motion-calm": "device-events",
79154
79163
  "recording-stalled": "device-events",
79155
79164
  "recording-healthy": "device-events",
79156
79165
  "recording-degraded": "device-events",
79166
+ "device-attention-required": "device-events",
79167
+ "device-attention-resolved": "device-events",
79157
79168
  "node-online": "system",
79158
79169
  "node-offline": "system",
79159
79170
  "node-restarting": "system",
@@ -79236,6 +79247,12 @@ var NC_SYSTEM_EVENT_KIND_GROUP_SPECS = [
79236
79247
  label: "Detecting nothing",
79237
79248
  kinds: ["detection-blind"]
79238
79249
  },
79250
+ {
79251
+ id: "motion-noise",
79252
+ family: "device-events",
79253
+ label: "Motion without a subject",
79254
+ kinds: ["motion-noisy", "motion-calm"]
79255
+ },
79239
79256
  {
79240
79257
  id: "recording",
79241
79258
  family: "device-events",
@@ -79246,6 +79263,12 @@ var NC_SYSTEM_EVENT_KIND_GROUP_SPECS = [
79246
79263
  "recording-degraded"
79247
79264
  ]
79248
79265
  },
79266
+ {
79267
+ id: "device-attention",
79268
+ family: "device-events",
79269
+ label: "Needs attention",
79270
+ kinds: ["device-attention-required", "device-attention-resolved"]
79271
+ },
79249
79272
  {
79250
79273
  id: "nodes",
79251
79274
  family: "system",
@@ -79385,6 +79408,7 @@ var ALERT_EPISODE = [
79385
79408
  "alert-error",
79386
79409
  "alert-critical-resolved"
79387
79410
  ];
79411
+ var DEVICE_ATTENTION = ["device-attention-required", "device-attention-resolved"];
79388
79412
  var UPDATES = [
79389
79413
  "addon-update-available",
79390
79414
  "server-update-available",
@@ -79414,9 +79438,12 @@ var DEVICE_EVENTS = [
79414
79438
  "stream-online",
79415
79439
  "stream-offline",
79416
79440
  "detection-blind",
79441
+ "motion-noisy",
79442
+ "motion-calm",
79417
79443
  "recording-stalled",
79418
79444
  "recording-healthy",
79419
79445
  "recording-degraded",
79446
+ ...DEVICE_ATTENTION,
79420
79447
  ...ALARM
79421
79448
  ];
79422
79449
  /** Every kind a summary may speak about — the two summarisable families. */
@@ -79584,7 +79611,9 @@ var STATE_SUMMARY_VARS = [
79584
79611
  [...RULE_TEXT],
79585
79612
  [...RULE_TEXT],
79586
79613
  [...RULE_TEXT],
79587
- ([...RULE_TEXT], [...ALERT_EPISODE]),
79614
+ [...RULE_TEXT],
79615
+ [...RULE_TEXT],
79616
+ ([...RULE_TEXT], [...DEVICE_ATTENTION, ...ALERT_EPISODE]),
79588
79617
  [...RULE_TEXT],
79589
79618
  [...RULE_TEXT],
79590
79619
  [...RULE_TEXT],
@@ -79606,11 +79635,11 @@ var STATE_SUMMARY_VARS = [
79606
79635
  [...RULE_TEXT],
79607
79636
  [...RULE_TEXT],
79608
79637
  [...RULE_TEXT],
79638
+ ([...RULE_TEXT], [...DEVICE_ATTENTION, ...ALERT_EPISODE]),
79609
79639
  ([...RULE_TEXT], [...ALERT_EPISODE]),
79640
+ ([...RULE_TEXT], [...DEVICE_ATTENTION, ...ALERT_EPISODE]),
79610
79641
  ([...RULE_TEXT], [...ALERT_EPISODE]),
79611
- ([...RULE_TEXT], [...ALERT_EPISODE]),
79612
- ([...RULE_TEXT], [...ALERT_EPISODE]),
79613
- ([...RULE_TEXT], [...ALERT_EPISODE]),
79642
+ ([...RULE_TEXT], [...DEVICE_ATTENTION, ...ALERT_EPISODE]),
79614
79643
  [...RULE_TEXT],
79615
79644
  [...RULE_TEXT],
79616
79645
  [...RULE_TEXT],
@@ -79686,6 +79715,15 @@ new Map([
79686
79715
  snapshotLabel: "Tanks low or full now",
79687
79716
  snapshotSection: "tanks"
79688
79717
  },
79718
+ {
79719
+ id: "motion-noise",
79720
+ family: "device-events",
79721
+ label: "Motion without a subject (constant / calm again)",
79722
+ bad: ["motion-noisy"],
79723
+ recovery: ["motion-calm"],
79724
+ snapshotLabel: "Cameras with constant motion now",
79725
+ snapshotSection: null
79726
+ },
79689
79727
  {
79690
79728
  id: "recording-health",
79691
79729
  family: "device-events",
@@ -79695,6 +79733,15 @@ new Map([
79695
79733
  snapshotLabel: "Recordings stalled now",
79696
79734
  snapshotSection: null
79697
79735
  },
79736
+ {
79737
+ id: "device-attention",
79738
+ family: "device-events",
79739
+ label: "Device needs attention (raised / resolved)",
79740
+ bad: ["device-attention-required"],
79741
+ recovery: ["device-attention-resolved"],
79742
+ snapshotLabel: "Devices needing attention now",
79743
+ snapshotSection: null
79744
+ },
79698
79745
  {
79699
79746
  id: "node-connectivity",
79700
79747
  family: "system",
@@ -80459,8 +80506,6 @@ function buildConnectionFormSchema() {
80459
80506
  id: "connection",
80460
80507
  title: "CCU connection",
80461
80508
  titleKey: "provider-homematic:connection.s_connection.title",
80462
- description: "Connect to a Homematic CCU3 or RaspberryMatic hub on your network.",
80463
- descriptionKey: "provider-homematic:connection.s_connection.description",
80464
80509
  columns: 1,
80465
80510
  fields: [{
80466
80511
  type: "text",
@@ -80475,7 +80520,7 @@ function buildConnectionFormSchema() {
80475
80520
  id: "interfaces",
80476
80521
  title: "Interfaces",
80477
80522
  titleKey: "provider-homematic:connection.s_interfaces.title",
80478
- description: "Select which CCU XML-RPC interfaces to bind. Only the four interfaces natively supported by the backend are listed — CCU-Jack and CUxD are not supported.",
80523
+ description: "CCU-Jack and CUxD are not supported.",
80479
80524
  descriptionKey: "provider-homematic:connection.s_interfaces.description",
80480
80525
  columns: 1,
80481
80526
  fields: [
@@ -80513,7 +80558,7 @@ function buildConnectionFormSchema() {
80513
80558
  id: "callback",
80514
80559
  title: "Event callback",
80515
80560
  titleKey: "provider-homematic:connection.s_callback.title",
80516
- description: "The CCU pushes value changes back to this address. Optional — when left blank the hub auto-infers its LAN IPv4 on the same subnet as the CCU. Must be reachable FROM the CCU (not 127.0.0.1).",
80561
+ description: "Optional; must be reachable from the CCU (not 127.0.0.1). Blank auto-infers the hub LAN address.",
80517
80562
  descriptionKey: "provider-homematic:connection.s_callback.description",
80518
80563
  columns: 2,
80519
80564
  fields: [{
@@ -80536,7 +80581,7 @@ function buildConnectionFormSchema() {
80536
80581
  id: "credentials",
80537
80582
  title: "WebUI credentials",
80538
80583
  titleKey: "provider-homematic:connection.s_credentials.title",
80539
- description: "Optional. Unlocks friendly names, rooms, system variables and programs via the CCU JSON-RPC API.",
80584
+ description: "Optional. Unlocks friendly names, rooms, system variables and programs.",
80540
80585
  descriptionKey: "provider-homematic:connection.s_credentials.description",
80541
80586
  columns: 2,
80542
80587
  fields: [{
@@ -106762,15 +106807,13 @@ var HomematicProviderAddon = class extends BaseDeviceProvider {
106762
106807
  id: "hm-broker",
106763
106808
  title: "Homematic broker",
106764
106809
  titleKey: "provider-homematic:globalSettings.s_hm-broker.title",
106765
- description: "Homematic CCU brokers are managed in the External systems → Brokers tab.",
106766
- descriptionKey: "provider-homematic:globalSettings.s_hm-broker.description",
106767
106810
  columns: 1,
106768
106811
  fields: [{
106769
106812
  type: "info",
106770
106813
  key: "brokerHelp",
106771
106814
  label: "Brokers are managed separately",
106772
106815
  labelKey: "provider-homematic:globalSettings.s_hm-broker.brokerHelp.label",
106773
- content: "This integration links to a Homematic CCU broker. Add, edit, or remove brokers from External systems → Brokers. The integration only stores a reference to its broker — credentials live on the broker."
106816
+ content: "This integration links to a Homematic CCU broker managed under External systems → Brokers."
106774
106817
  }]
106775
106818
  }] });
106776
106819
  }
package/dist/addon.mjs CHANGED
@@ -9,7 +9,7 @@ import { join } from "path";
9
9
  var __commonJSMin = (cb, mod) => () => (mod || (cb((mod = { exports: {} }).exports, mod), cb = null), mod.exports);
10
10
  var __require = /* @__PURE__ */ createRequire(import.meta.url);
11
11
  //#endregion
12
- //#region ../types/dist/event-category-7pZEBmVg.mjs
12
+ //#region ../types/dist/event-category-BfJwUd2S.mjs
13
13
  var EventCategory = /* @__PURE__ */ function(EventCategory) {
14
14
  EventCategory["SystemBoot"] = "system.boot";
15
15
  EventCategory["SystemAddonsReady"] = "system.addons-ready";
@@ -326,6 +326,15 @@ var EventCategory = /* @__PURE__ */ function(EventCategory) {
326
326
  */
327
327
  EventCategory["PipelineDetectionBlind"] = "pipeline.detection-blind";
328
328
  /**
329
+ * A camera's motion source has fired constantly with no subject for an hour
330
+ * (motion duty or session count over the bar, zero detections) — it is not
331
+ * blind, its motion zones or sensitivity want tuning (D907). Paired with
332
+ * {@link PipelineMotionCalm}.
333
+ */
334
+ EventCategory["PipelineMotionNoisy"] = "pipeline.motion-noisy";
335
+ /** The recovery edge of {@link PipelineMotionNoisy}: the motion fell back, or a detection arrived. */
336
+ EventCategory["PipelineMotionCalm"] = "pipeline.motion-calm";
337
+ /**
329
338
  * Per-camera pipeline config was mutated by the orchestrator
330
339
  * (3-level settings change via `setAgentAddonDefaults` /
331
340
  * `setCameraStepToggle` / `setCameraPipelineForAgent` or a
@@ -5565,7 +5574,7 @@ var ZodIssueCode = {
5565
5574
  var ZodFirstPartyTypeKind;
5566
5575
  ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {});
5567
5576
  //#endregion
5568
- //#region ../types/dist/sleep-CueztlR1.mjs
5577
+ //#region ../types/dist/sleep-DJFUfKvA.mjs
5569
5578
  /**
5570
5579
  * The audio chunk plane's byte format, and the ONE expansion from a coded
5571
5580
  * window to float samples (D455).
@@ -8164,7 +8173,7 @@ var EntryDescriptorSchema = object({
8164
8173
  /** JSON Schema of the entry body; `secret: true` marks a password field. */
8165
8174
  fields: record(string(), unknown())
8166
8175
  }).strict();
8167
- /** What crosses the wire and sits in the engine's catalog: JSON only, no Zod. */
8176
+ /** What crosses the wire from an addon: JSON only, no Zod. An unknown key is refused. */
8168
8177
  var RecordKindDeclarationSchema = object({
8169
8178
  database: _enum(RECORD_DATABASES).default("settings"),
8170
8179
  class: _enum(RECORD_CLASSES),
@@ -8183,14 +8192,6 @@ var RecordKindDeclarationSchema = object({
8183
8192
  secretPaths: array(string().min(1)).default([]),
8184
8193
  /** The id key of each array that carries a secret (`{ headers: 'name' }`). */
8185
8194
  secretArrayKeys: record(string(), string()).default({}),
8186
- /**
8187
- * RETIRED (D900): the legacy table a kind adopted from during the records
8188
- * migration. Nothing declares it any more and nothing reads it; the schema
8189
- * still ACCEPTS it because the catalog rows the migration wrote carry it
8190
- * (an orphaned kind is never redeclared) and an addon built before the
8191
- * removal still sends it. Never set it.
8192
- */
8193
- adoptsFrom: string().min(1).optional(),
8194
8195
  /** Kinds that must agree through `transact` sit in one file under one family name. */
8195
8196
  transactFamily: string().min(1).optional(),
8196
8197
  entry: EntryDescriptorSchema.optional()
@@ -12986,17 +12987,6 @@ object({
12986
12987
  createdAt: number(),
12987
12988
  updatedAt: number()
12988
12989
  });
12989
- object({
12990
- id: string(),
12991
- label: string(),
12992
- isAdmin: boolean().default(false),
12993
- allowedProviders: AllowedProviderSchema,
12994
- allowedDevices: AllowedDevicesSchema,
12995
- tokenHash: string(),
12996
- tokenPrefix: string(),
12997
- createdAt: number(),
12998
- lastUsedAt: number().optional()
12999
- });
13000
12990
  object({
13001
12991
  id: string(),
13002
12992
  userId: string(),
@@ -17027,16 +17017,36 @@ var RecordKindStateSchema = _enum([
17027
17017
  var DeclareKindResultSchema = object({
17028
17018
  kindId: number().int(),
17029
17019
  state: RecordKindStateSchema,
17030
- createdIndexes: array(string()),
17031
- /**
17032
- * RETIRED (D900): always `null`. It carried the records-migration boot guard;
17033
- * it stays on the wire, null, because an addon built before the removal reads
17034
- * an ABSENT field as "adoption pending" and refuses to start.
17035
- */
17036
- adoptionPending: _null()
17020
+ createdIndexes: array(string())
17037
17021
  });
17038
17022
  /** Keychain refs a write released (the old marker is gone from the row): the owner deletes the values. */
17039
17023
  var SecretRefsList = array(string());
17024
+ /**
17025
+ * One op of a `transact`: the single-row writes, each on a kind of the caller.
17026
+ * All ops of one call share ONE database file and ONE `transactFamily`.
17027
+ */
17028
+ var RecordTransactOpSchema = discriminatedUnion("op", [
17029
+ object({
17030
+ op: literal("put"),
17031
+ kind: RecordKindNameSchema,
17032
+ record: RecordInputSchema,
17033
+ ifRev: number().int().min(0).optional()
17034
+ }),
17035
+ object({
17036
+ op: literal("patch"),
17037
+ kind: RecordKindNameSchema,
17038
+ id: RecordIdSchema,
17039
+ data: RecordBodySchema,
17040
+ at: number().int().nullable().optional(),
17041
+ expiresAt: number().int().nullable().optional(),
17042
+ ifRev: number().int().min(1).optional()
17043
+ }),
17044
+ object({
17045
+ op: literal("delete"),
17046
+ kind: RecordKindNameSchema,
17047
+ id: RecordIdSchema
17048
+ })
17049
+ ]);
17040
17050
  var RecordSecretRefsSchema = record(string(), record(string(), string()));
17041
17051
  method(object({ kinds: record(RecordKindNameSchema, RecordKindDeclarationSchema) }), object({ kinds: record(string(), DeclareKindResultSchema) }), {
17042
17052
  kind: "mutation",
@@ -17143,6 +17153,16 @@ method(object({ kinds: record(RecordKindNameSchema, RecordKindDeclarationSchema)
17143
17153
  }), {
17144
17154
  kind: "mutation",
17145
17155
  auth: "admin"
17156
+ }), method(object({ ops: array(RecordTransactOpSchema).min(1).max(RECORD_BATCH_MAX) }), object({
17157
+ results: array(object({
17158
+ rev: number().int().nullable(),
17159
+ deleted: boolean()
17160
+ })),
17161
+ releasedRefs: SecretRefsList,
17162
+ secretRefs: SecretRefsList
17163
+ }), {
17164
+ kind: "mutation",
17165
+ auth: "admin"
17146
17166
  }), method(object({
17147
17167
  deviceId: number().int(),
17148
17168
  kinds: array(RecordKindNameSchema).optional()
@@ -42867,9 +42887,13 @@ var NcSystemEventKindSchema = _enum([
42867
42887
  "node-updating",
42868
42888
  "node-inference-unavailable",
42869
42889
  "detection-blind",
42890
+ "motion-noisy",
42891
+ "motion-calm",
42870
42892
  "recording-stalled",
42871
42893
  "recording-healthy",
42872
42894
  "recording-degraded",
42895
+ "device-attention-required",
42896
+ "device-attention-resolved",
42873
42897
  "storage-location-low",
42874
42898
  "storage-location-critical",
42875
42899
  "storage-location-ok",
@@ -48430,7 +48454,6 @@ var RecommendationReasonSchema = discriminatedUnion("kind", [
48430
48454
  modelId: string()
48431
48455
  }),
48432
48456
  object({ kind: literal("cpu-device") }),
48433
- object({ kind: literal("coral-untouched") }),
48434
48457
  object({ kind: literal("device-disabled") }),
48435
48458
  object({ kind: literal("device-unavailable") }),
48436
48459
  object({ kind: literal("node-offline") }),
@@ -48528,11 +48551,6 @@ var AutoTuneWarningSchema = discriminatedUnion("kind", [
48528
48551
  kind: literal("detector-store-unreadable"),
48529
48552
  error: string()
48530
48553
  }),
48531
- object({
48532
- kind: literal("coral-enabled"),
48533
- nodeId: string(),
48534
- deviceKey: string()
48535
- }),
48536
48554
  object({
48537
48555
  kind: literal("custom-pin-kept"),
48538
48556
  nodeId: string(),
@@ -56193,6 +56211,16 @@ var DishwasherStatusSchema = object({
56193
56211
  powerState: string().nullable(),
56194
56212
  saltLevel: DishwasherConsumableLevelSchema.nullable(),
56195
56213
  rinseAidLevel: DishwasherConsumableLevelSchema.nullable(),
56214
+ /**
56215
+ * True while the appliance asks for its filter to be cleaned (smart-filter, filter-system or
56216
+ * combined care-and-filter reminder raised); false when every such reminder reads clear; null
56217
+ * when none is reported. A cleared reminder is not an unknown one.
56218
+ */
56219
+ filterCleaningDue: boolean().nullable(),
56220
+ /** True while the machine-care (descaling / cleaning-program) reminder is raised; false when clear; null when not reported. */
56221
+ machineCareDue: boolean().nullable(),
56222
+ /** Program runs left before the machine-care reminder is due; null when the appliance does not say. */
56223
+ machineCareRemainingRuns: number().int().nonnegative().nullable(),
56196
56224
  /** Option states: null when the appliance does not expose the option or has not said. */
56197
56225
  halfLoad: boolean().nullable(),
56198
56226
  hygienePlus: boolean().nullable(),
@@ -64843,16 +64871,6 @@ var UpdateUserInputSchema = object({
64843
64871
  allowedDevices: record(string(), union([array(string()), literal("*")])).optional(),
64844
64872
  scopes: array(TokenScopeSchema).optional()
64845
64873
  });
64846
- var ApiKeySummarySchema = object({
64847
- id: string(),
64848
- label: string(),
64849
- isAdmin: boolean().default(false),
64850
- allowedProviders: union([array(string()), literal("*")]).optional(),
64851
- allowedDevices: record(string(), union([array(string()), literal("*")])).optional(),
64852
- tokenPrefix: string(),
64853
- createdAt: number(),
64854
- lastUsedAt: number().optional()
64855
- });
64856
64874
  var OauthSessionSummarySchema = object({
64857
64875
  id: string(),
64858
64876
  userId: string(),
@@ -64874,8 +64892,7 @@ var TotpStatusSchema = object({
64874
64892
  confirmedAt: number().nullable()
64875
64893
  });
64876
64894
  /**
64877
- * user-management — singleton capability for user accounts and the
64878
- * legacy API-key rows.
64895
+ * user-management — singleton capability for user accounts.
64879
64896
  *
64880
64897
  * v2 model: every method gated by `auth: 'admin'`. Admin-only delegation
64881
64898
  * — the subset check on `setUserScopes` is moot
@@ -64931,10 +64948,6 @@ method(_void(), array(UserSummarySchema), { auth: "admin" }), method(CreateUserI
64931
64948
  }), UserSummarySchema.extend({ passwordHash: string() }).nullable(), {
64932
64949
  kind: "mutation",
64933
64950
  access: "view"
64934
- }), method(_void(), array(ApiKeySummarySchema), { auth: "admin" }), method(object({ id: string() }), object({ success: literal(true) }), {
64935
- kind: "mutation",
64936
- auth: "admin",
64937
- access: "delete"
64938
64951
  }), method(object({ userId: string() }), TotpSetupResultSchema, {
64939
64952
  kind: "mutation",
64940
64953
  auth: "admin",
@@ -74390,6 +74403,12 @@ Object.freeze({
74390
74403
  addonId: null,
74391
74404
  access: "view"
74392
74405
  },
74406
+ "records.transact": {
74407
+ capName: "records",
74408
+ capScope: "system",
74409
+ addonId: null,
74410
+ access: "create"
74411
+ },
74393
74412
  "sceneMonitor.captureReference": {
74394
74413
  capName: "scene-monitor",
74395
74414
  capScope: "device",
@@ -75722,12 +75741,6 @@ Object.freeze({
75722
75741
  addonId: null,
75723
75742
  access: "view"
75724
75743
  },
75725
- "userManagement.listApiKeys": {
75726
- capName: "user-management",
75727
- capScope: "system",
75728
- addonId: null,
75729
- access: "view"
75730
- },
75731
75744
  "userManagement.listExternalIdentities": {
75732
75745
  capName: "user-management",
75733
75746
  capScope: "system",
@@ -75782,12 +75795,6 @@ Object.freeze({
75782
75795
  addonId: null,
75783
75796
  access: "create"
75784
75797
  },
75785
- "userManagement.revokeApiKey": {
75786
- capName: "user-management",
75787
- capScope: "system",
75788
- addonId: null,
75789
- access: "delete"
75790
- },
75791
75798
  "userManagement.revokeOauthSession": {
75792
75799
  capName: "user-management",
75793
75800
  capScope: "system",
@@ -79152,9 +79159,13 @@ new Map(Object.entries({
79152
79159
  "stream-online": "device-events",
79153
79160
  "stream-offline": "device-events",
79154
79161
  "detection-blind": "device-events",
79162
+ "motion-noisy": "device-events",
79163
+ "motion-calm": "device-events",
79155
79164
  "recording-stalled": "device-events",
79156
79165
  "recording-healthy": "device-events",
79157
79166
  "recording-degraded": "device-events",
79167
+ "device-attention-required": "device-events",
79168
+ "device-attention-resolved": "device-events",
79158
79169
  "node-online": "system",
79159
79170
  "node-offline": "system",
79160
79171
  "node-restarting": "system",
@@ -79237,6 +79248,12 @@ var NC_SYSTEM_EVENT_KIND_GROUP_SPECS = [
79237
79248
  label: "Detecting nothing",
79238
79249
  kinds: ["detection-blind"]
79239
79250
  },
79251
+ {
79252
+ id: "motion-noise",
79253
+ family: "device-events",
79254
+ label: "Motion without a subject",
79255
+ kinds: ["motion-noisy", "motion-calm"]
79256
+ },
79240
79257
  {
79241
79258
  id: "recording",
79242
79259
  family: "device-events",
@@ -79247,6 +79264,12 @@ var NC_SYSTEM_EVENT_KIND_GROUP_SPECS = [
79247
79264
  "recording-degraded"
79248
79265
  ]
79249
79266
  },
79267
+ {
79268
+ id: "device-attention",
79269
+ family: "device-events",
79270
+ label: "Needs attention",
79271
+ kinds: ["device-attention-required", "device-attention-resolved"]
79272
+ },
79250
79273
  {
79251
79274
  id: "nodes",
79252
79275
  family: "system",
@@ -79386,6 +79409,7 @@ var ALERT_EPISODE = [
79386
79409
  "alert-error",
79387
79410
  "alert-critical-resolved"
79388
79411
  ];
79412
+ var DEVICE_ATTENTION = ["device-attention-required", "device-attention-resolved"];
79389
79413
  var UPDATES = [
79390
79414
  "addon-update-available",
79391
79415
  "server-update-available",
@@ -79415,9 +79439,12 @@ var DEVICE_EVENTS = [
79415
79439
  "stream-online",
79416
79440
  "stream-offline",
79417
79441
  "detection-blind",
79442
+ "motion-noisy",
79443
+ "motion-calm",
79418
79444
  "recording-stalled",
79419
79445
  "recording-healthy",
79420
79446
  "recording-degraded",
79447
+ ...DEVICE_ATTENTION,
79421
79448
  ...ALARM
79422
79449
  ];
79423
79450
  /** Every kind a summary may speak about — the two summarisable families. */
@@ -79585,7 +79612,9 @@ var STATE_SUMMARY_VARS = [
79585
79612
  [...RULE_TEXT],
79586
79613
  [...RULE_TEXT],
79587
79614
  [...RULE_TEXT],
79588
- ([...RULE_TEXT], [...ALERT_EPISODE]),
79615
+ [...RULE_TEXT],
79616
+ [...RULE_TEXT],
79617
+ ([...RULE_TEXT], [...DEVICE_ATTENTION, ...ALERT_EPISODE]),
79589
79618
  [...RULE_TEXT],
79590
79619
  [...RULE_TEXT],
79591
79620
  [...RULE_TEXT],
@@ -79607,11 +79636,11 @@ var STATE_SUMMARY_VARS = [
79607
79636
  [...RULE_TEXT],
79608
79637
  [...RULE_TEXT],
79609
79638
  [...RULE_TEXT],
79639
+ ([...RULE_TEXT], [...DEVICE_ATTENTION, ...ALERT_EPISODE]),
79610
79640
  ([...RULE_TEXT], [...ALERT_EPISODE]),
79641
+ ([...RULE_TEXT], [...DEVICE_ATTENTION, ...ALERT_EPISODE]),
79611
79642
  ([...RULE_TEXT], [...ALERT_EPISODE]),
79612
- ([...RULE_TEXT], [...ALERT_EPISODE]),
79613
- ([...RULE_TEXT], [...ALERT_EPISODE]),
79614
- ([...RULE_TEXT], [...ALERT_EPISODE]),
79643
+ ([...RULE_TEXT], [...DEVICE_ATTENTION, ...ALERT_EPISODE]),
79615
79644
  [...RULE_TEXT],
79616
79645
  [...RULE_TEXT],
79617
79646
  [...RULE_TEXT],
@@ -79687,6 +79716,15 @@ new Map([
79687
79716
  snapshotLabel: "Tanks low or full now",
79688
79717
  snapshotSection: "tanks"
79689
79718
  },
79719
+ {
79720
+ id: "motion-noise",
79721
+ family: "device-events",
79722
+ label: "Motion without a subject (constant / calm again)",
79723
+ bad: ["motion-noisy"],
79724
+ recovery: ["motion-calm"],
79725
+ snapshotLabel: "Cameras with constant motion now",
79726
+ snapshotSection: null
79727
+ },
79690
79728
  {
79691
79729
  id: "recording-health",
79692
79730
  family: "device-events",
@@ -79696,6 +79734,15 @@ new Map([
79696
79734
  snapshotLabel: "Recordings stalled now",
79697
79735
  snapshotSection: null
79698
79736
  },
79737
+ {
79738
+ id: "device-attention",
79739
+ family: "device-events",
79740
+ label: "Device needs attention (raised / resolved)",
79741
+ bad: ["device-attention-required"],
79742
+ recovery: ["device-attention-resolved"],
79743
+ snapshotLabel: "Devices needing attention now",
79744
+ snapshotSection: null
79745
+ },
79699
79746
  {
79700
79747
  id: "node-connectivity",
79701
79748
  family: "system",
@@ -80460,8 +80507,6 @@ function buildConnectionFormSchema() {
80460
80507
  id: "connection",
80461
80508
  title: "CCU connection",
80462
80509
  titleKey: "provider-homematic:connection.s_connection.title",
80463
- description: "Connect to a Homematic CCU3 or RaspberryMatic hub on your network.",
80464
- descriptionKey: "provider-homematic:connection.s_connection.description",
80465
80510
  columns: 1,
80466
80511
  fields: [{
80467
80512
  type: "text",
@@ -80476,7 +80521,7 @@ function buildConnectionFormSchema() {
80476
80521
  id: "interfaces",
80477
80522
  title: "Interfaces",
80478
80523
  titleKey: "provider-homematic:connection.s_interfaces.title",
80479
- description: "Select which CCU XML-RPC interfaces to bind. Only the four interfaces natively supported by the backend are listed — CCU-Jack and CUxD are not supported.",
80524
+ description: "CCU-Jack and CUxD are not supported.",
80480
80525
  descriptionKey: "provider-homematic:connection.s_interfaces.description",
80481
80526
  columns: 1,
80482
80527
  fields: [
@@ -80514,7 +80559,7 @@ function buildConnectionFormSchema() {
80514
80559
  id: "callback",
80515
80560
  title: "Event callback",
80516
80561
  titleKey: "provider-homematic:connection.s_callback.title",
80517
- description: "The CCU pushes value changes back to this address. Optional — when left blank the hub auto-infers its LAN IPv4 on the same subnet as the CCU. Must be reachable FROM the CCU (not 127.0.0.1).",
80562
+ description: "Optional; must be reachable from the CCU (not 127.0.0.1). Blank auto-infers the hub LAN address.",
80518
80563
  descriptionKey: "provider-homematic:connection.s_callback.description",
80519
80564
  columns: 2,
80520
80565
  fields: [{
@@ -80537,7 +80582,7 @@ function buildConnectionFormSchema() {
80537
80582
  id: "credentials",
80538
80583
  title: "WebUI credentials",
80539
80584
  titleKey: "provider-homematic:connection.s_credentials.title",
80540
- description: "Optional. Unlocks friendly names, rooms, system variables and programs via the CCU JSON-RPC API.",
80585
+ description: "Optional. Unlocks friendly names, rooms, system variables and programs.",
80541
80586
  descriptionKey: "provider-homematic:connection.s_credentials.description",
80542
80587
  columns: 2,
80543
80588
  fields: [{
@@ -106763,15 +106808,13 @@ var HomematicProviderAddon = class extends BaseDeviceProvider {
106763
106808
  id: "hm-broker",
106764
106809
  title: "Homematic broker",
106765
106810
  titleKey: "provider-homematic:globalSettings.s_hm-broker.title",
106766
- description: "Homematic CCU brokers are managed in the External systems → Brokers tab.",
106767
- descriptionKey: "provider-homematic:globalSettings.s_hm-broker.description",
106768
106811
  columns: 1,
106769
106812
  fields: [{
106770
106813
  type: "info",
106771
106814
  key: "brokerHelp",
106772
106815
  label: "Brokers are managed separately",
106773
106816
  labelKey: "provider-homematic:globalSettings.s_hm-broker.brokerHelp.label",
106774
- content: "This integration links to a Homematic CCU broker. Add, edit, or remove brokers from External systems → Brokers. The integration only stores a reference to its broker — credentials live on the broker."
106817
+ content: "This integration links to a Homematic CCU broker managed under External systems → Brokers."
106775
106818
  }]
106776
106819
  }] });
106777
106820
  }
package/i18n/en.json CHANGED
@@ -1,22 +1,20 @@
1
1
  {
2
2
  "globalSettings.s_hm-broker.title": "Homematic broker",
3
- "globalSettings.s_hm-broker.description": "Homematic CCU brokers are managed in the External systems → Brokers tab.",
4
3
  "globalSettings.s_hm-broker.brokerHelp.label": "Brokers are managed separately",
5
4
  "connection.s_connection.title": "CCU connection",
6
- "connection.s_connection.description": "Connect to a Homematic CCU3 or RaspberryMatic hub on your network.",
7
5
  "connection.s_connection.host.label": "Host / IP",
8
6
  "connection.s_interfaces.title": "Interfaces",
9
- "connection.s_interfaces.description": "Select which CCU XML-RPC interfaces to bind. Only the four interfaces natively supported by the backend are listed — CCU-Jack and CUxD are not supported.",
7
+ "connection.s_interfaces.description": "CCU-Jack and CUxD are not supported.",
10
8
  "connection.s_interfaces.enableHmipRf.label": "Enable Homematic IP",
11
9
  "connection.s_interfaces.enableBidcosRf.label": "Enable Homematic (BidCos-RF)",
12
10
  "connection.s_interfaces.enableGroups.label": "Enable groups (heating groups)",
13
11
  "connection.s_interfaces.enableBidcosWired.label": "Enable BidCos-Wired (HM-Wired)",
14
12
  "connection.s_callback.title": "Event callback",
15
- "connection.s_callback.description": "The CCU pushes value changes back to this address. Optional — when left blank the hub auto-infers its LAN IPv4 on the same subnet as the CCU. Must be reachable FROM the CCU (not 127.0.0.1).",
13
+ "connection.s_callback.description": "Optional; must be reachable from the CCU (not 127.0.0.1). Blank auto-infers the hub LAN address.",
16
14
  "connection.s_callback.callbackHost.label": "Callback host (optional — auto-inferred when blank)",
17
15
  "connection.s_callback.callbackPort.label": "Callback port",
18
16
  "connection.s_credentials.title": "WebUI credentials",
19
- "connection.s_credentials.description": "Optional. Unlocks friendly names, rooms, system variables and programs via the CCU JSON-RPC API.",
17
+ "connection.s_credentials.description": "Optional. Unlocks friendly names, rooms, system variables and programs.",
20
18
  "connection.s_credentials.username.label": "Username",
21
19
  "connection.s_credentials.password.label": "Password",
22
20
  "connection.s_advanced.title": "Advanced",
package/i18n/it.json CHANGED
@@ -1,22 +1,20 @@
1
1
  {
2
2
  "globalSettings.s_hm-broker.title": "Broker Homematic",
3
- "globalSettings.s_hm-broker.description": "I broker della CCU Homematic si gestiscono nella scheda Sistemi esterni → Broker.",
4
3
  "globalSettings.s_hm-broker.brokerHelp.label": "I broker si gestiscono separatamente",
5
4
  "connection.s_connection.title": "Connessione alla CCU",
6
- "connection.s_connection.description": "Collegati a un hub Homematic CCU3 o RaspberryMatic presente in rete.",
7
5
  "connection.s_connection.host.label": "Host / IP",
8
6
  "connection.s_interfaces.title": "Interfacce",
9
- "connection.s_interfaces.description": "Seleziona quali interfacce XML-RPC della CCU collegare. Sono elencate solo le quattro interfacce supportate nativamente dal backend: CCU-Jack e CUxD non sono supportati.",
7
+ "connection.s_interfaces.description": "CCU-Jack e CUxD non sono supportati.",
10
8
  "connection.s_interfaces.enableHmipRf.label": "Attiva Homematic IP",
11
9
  "connection.s_interfaces.enableBidcosRf.label": "Attiva Homematic (BidCos-RF)",
12
10
  "connection.s_interfaces.enableGroups.label": "Attiva i gruppi (gruppi di riscaldamento)",
13
11
  "connection.s_interfaces.enableBidcosWired.label": "Attiva BidCos-Wired (HM-Wired)",
14
12
  "connection.s_callback.title": "Callback eventi",
15
- "connection.s_callback.description": "La CCU invia a questo indirizzo le variazioni dei valori. Facoltativo: se lasciato vuoto, l'hub rileva da solo il suo IPv4 di rete sulla stessa sottorete della CCU. Deve essere raggiungibile DALLA CCU (non 127.0.0.1).",
13
+ "connection.s_callback.description": "Facoltativo; deve essere raggiungibile dalla CCU (non 127.0.0.1). Se vuoto ricava l'indirizzo LAN dell'hub.",
16
14
  "connection.s_callback.callbackHost.label": "Host di callback (facoltativo: rilevato automaticamente se vuoto)",
17
15
  "connection.s_callback.callbackPort.label": "Porta di callback",
18
16
  "connection.s_credentials.title": "Credenziali dell'interfaccia web",
19
- "connection.s_credentials.description": "Facoltativo. Sblocca nomi, stanze, variabili di sistema e programmi tramite l'API JSON-RPC della CCU.",
17
+ "connection.s_credentials.description": "Facoltativo. Abilita nomi, stanze, variabili di sistema e programmi.",
20
18
  "connection.s_credentials.username.label": "Nome utente",
21
19
  "connection.s_credentials.password.label": "Password",
22
20
  "connection.s_advanced.title": "Avanzate",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@camstack/addon-provider-homematic",
3
- "version": "1.2.151",
3
+ "version": "1.2.153",
4
4
  "description": "Homematic / HomematicIP (CCU3 / RaspberryMatic) device-provider addon for CamStack — wraps the nodehomematic library",
5
5
  "keywords": [
6
6
  "camstack",