homebridge-plugin-klares4 2.1.2 → 2.1.3-rc.2

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.
@@ -17,7 +17,6 @@ interface MapperDeps {
17
17
  }
18
18
  /**
19
19
  * Fallback mapping: register a thermostat as a Matter TemperatureSensor.
20
- * Used only when the regular Thermostat registration fails upstream (matter.js bug).
21
20
  * HAP continues to expose the full Thermostat — Matter loses write control but keeps read.
22
21
  */
23
22
  export declare function mapThermostatAsTemperatureSensor(device: KseniaThermostat, deps: MapperDeps): MatterAccessory;
@@ -1 +1 @@
1
- {"version":3,"file":"matter-device-mapper.d.ts","sourceRoot":"","sources":["../../src/platform/matter-device-mapper.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAClD,OAAO,KAAK,EAER,YAAY,EAKZ,gBAAgB,EAEnB,MAAM,UAAU,CAAC;AAElB,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AACjE,OAAO,EAAE,0BAA0B,EAAE,0BAA0B,EAAkE,MAAM,4BAA4B,CAAC;AAGpK,OAAO,EAAE,0BAA0B,IAAI,cAAc,EAAE,CAAC;AACxD,OAAO,EAAE,0BAA0B,EAAE,CAAC;AACtC,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAErD;AAGD,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,KAAK,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,CAOrF;AAID,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAG1D;AAED,UAAU,UAAU;IAChB,GAAG,EAAE,GAAG,CAAC;IACT,GAAG,EAAE,OAAO,YAAY,EAAE,MAAM,CAAC;IACjC,WAAW,EAAE,MAAM,qBAAqB,GAAG,SAAS,CAAC;IACrD,yFAAyF;IACzF,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC/B;AAwHD;;;;GAIG;AACH,wBAAgB,gCAAgC,CAAC,MAAM,EAAE,gBAAgB,EAAE,IAAI,EAAE,UAAU,GAAG,eAAe,CAY5G;AA2GD,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,YAAY,EAAE,IAAI,EAAE,UAAU,GAAG,eAAe,GAAG,SAAS,CAmB3G"}
1
+ {"version":3,"file":"matter-device-mapper.d.ts","sourceRoot":"","sources":["../../src/platform/matter-device-mapper.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAClD,OAAO,KAAK,EAER,YAAY,EAKZ,gBAAgB,EAEnB,MAAM,UAAU,CAAC;AAElB,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AACjE,OAAO,EACH,0BAA0B,EAAE,0BAA0B,EAIzD,MAAM,4BAA4B,CAAC;AAMpC,OAAO,EAAE,0BAA0B,IAAI,cAAc,EAAE,CAAC;AACxD,OAAO,EAAE,0BAA0B,EAAE,CAAC;AACtC,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAErD;AAGD,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,KAAK,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,CAOrF;AAID,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAG1D;AAED,UAAU,UAAU;IAChB,GAAG,EAAE,GAAG,CAAC;IACT,GAAG,EAAE,OAAO,YAAY,EAAE,MAAM,CAAC;IACjC,WAAW,EAAE,MAAM,qBAAqB,GAAG,SAAS,CAAC;IACrD,yFAAyF;IACzF,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC/B;AAoJD;;;GAGG;AACH,wBAAgB,gCAAgC,CAAC,MAAM,EAAE,gBAAgB,EAAE,IAAI,EAAE,UAAU,GAAG,eAAe,CAO5G;AAwCD,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,YAAY,EAAE,IAAI,EAAE,UAAU,GAAG,eAAe,GAAG,SAAS,CAmB3G"}
@@ -10,6 +10,8 @@ const plugin_version_1 = require("../plugin-version");
10
10
  const matter_thermostat_mapper_1 = require("./matter-thermostat-mapper");
11
11
  Object.defineProperty(exports, "buildThermostatMatterState", { enumerable: true, get: function () { return matter_thermostat_mapper_1.buildThermostatMatterState; } });
12
12
  Object.defineProperty(exports, "toCentidegrees", { enumerable: true, get: function () { return matter_thermostat_mapper_1.toMatterTemperatureCelsius; } });
13
+ const matter_name_sanitizer_1 = require("./matter-name-sanitizer");
14
+ const matterNameRegistry = new matter_name_sanitizer_1.MatterNameRegistry();
13
15
  function clampCentidegrees(val) {
14
16
  return (0, matter_thermostat_mapper_1.clampMatterTemperature)(val, matter_thermostat_mapper_1.TEMP_ABS_MIN_CENTI, matter_thermostat_mapper_1.TEMP_ABS_MAX_CENTI);
15
17
  }
@@ -39,10 +41,13 @@ function scheduleMomentaryAutoOff(uuid, deps) {
39
41
  });
40
42
  }, delay);
41
43
  }
42
- function baseFields(device) {
44
+ function baseFields(device, log) {
45
+ const sanitized = matterNameRegistry.resolve(device.id, (0, matter_name_sanitizer_1.sanitizeMatterAccessoryName)(device.name, device.id));
46
+ if (log && sanitized !== device.name)
47
+ log.debug(`[Matter] Accessory name sanitized: "${device.name}" -> "${sanitized}"`);
43
48
  return {
44
49
  UUID: device.id,
45
- displayName: device.name,
50
+ displayName: sanitized,
46
51
  serialNumber: device.id,
47
52
  manufacturer: 'Ksenia',
48
53
  model: `Lares4 ${device.type}`,
@@ -82,7 +87,7 @@ function mapLight(device, deps) {
82
87
  };
83
88
  }
84
89
  return {
85
- ...baseFields(device),
90
+ ...baseFields(device, deps.log),
86
91
  deviceType: isDimmable
87
92
  ? api.matter.deviceTypes.DimmableLight
88
93
  : api.matter.deviceTypes.OnOffLight,
@@ -96,7 +101,7 @@ function mapCover(device, deps) {
96
101
  // Lares4: 0=closed, 100=open. Matter: 0=open (0%), 10000=closed (100%).
97
102
  const matterPos = Math.round((100 - pos) * 100);
98
103
  return {
99
- ...baseFields(device),
104
+ ...baseFields(device, deps.log),
100
105
  deviceType: api.matter.deviceTypes.WindowCovering,
101
106
  clusters: {
102
107
  windowCovering: {
@@ -116,10 +121,12 @@ function mapCover(device, deps) {
116
121
  };
117
122
  }
118
123
  function mapThermostat(device, deps) {
119
- const { api, getWsClient } = deps;
124
+ const { api, log, getWsClient } = deps;
120
125
  const { base, schemaInvariants } = (0, matter_thermostat_mapper_1.buildThermostatMatterState)(device);
126
+ const supportsCooling = (0, matter_thermostat_mapper_1.thermostatSupportsCooling)(device);
127
+ const echoGuard = new matter_thermostat_mapper_1.ThermostatEchoGuard();
121
128
  return {
122
- ...baseFields(device),
129
+ ...baseFields(device, log),
123
130
  deviceType: api.matter.deviceTypes.Thermostat,
124
131
  clusters: {
125
132
  thermostat: { ...base, ...schemaInvariants },
@@ -128,8 +135,37 @@ function mapThermostat(device, deps) {
128
135
  thermostat: {
129
136
  setpointRaiseLower: async (args) => {
130
137
  const delta = args.amount / 10;
131
- const newTarget = (device.targetTemperature ?? 21) + delta;
132
- await getWsClient()?.setThermostatTemperature(device.id, newTarget);
138
+ const raw = (device.targetTemperature ?? 21) + delta;
139
+ const { value } = (0, matter_thermostat_mapper_1.normalizeMatterSetpointC)(raw * 100, matter_thermostat_mapper_1.DEFAULT_MIN_HEAT_C, matter_thermostat_mapper_1.DEFAULT_MAX_HEAT_C);
140
+ echoGuard.record('heat', Math.round(value * 100));
141
+ await getWsClient()?.setThermostatTemperature(device.id, value);
142
+ },
143
+ occupiedHeatingSetpointChange: async (args) => {
144
+ if (echoGuard.isEcho('heat', args.occupiedHeatingSetpoint))
145
+ return;
146
+ const { value } = (0, matter_thermostat_mapper_1.normalizeMatterSetpointC)(args.occupiedHeatingSetpoint, matter_thermostat_mapper_1.DEFAULT_MIN_HEAT_C, matter_thermostat_mapper_1.DEFAULT_MAX_HEAT_C);
147
+ echoGuard.record('heat', args.occupiedHeatingSetpoint);
148
+ await getWsClient()?.setThermostatTemperature(device.id, value);
149
+ },
150
+ occupiedCoolingSetpointChange: async (args) => {
151
+ if (!supportsCooling) {
152
+ log.warn(`[Matter] ${device.name}: cooling setpoint change ignored (device does not support cooling)`);
153
+ return;
154
+ }
155
+ if (echoGuard.isEcho('cool', args.occupiedCoolingSetpoint))
156
+ return;
157
+ const { value } = (0, matter_thermostat_mapper_1.normalizeMatterSetpointC)(args.occupiedCoolingSetpoint, matter_thermostat_mapper_1.DEFAULT_MIN_COOL_C, matter_thermostat_mapper_1.DEFAULT_MAX_COOL_C);
158
+ echoGuard.record('cool', args.occupiedCoolingSetpoint);
159
+ await getWsClient()?.setThermostatTemperature(device.id, value);
160
+ },
161
+ systemModeChange: async (args) => {
162
+ const klares4Mode = (0, matter_thermostat_mapper_1.matterSystemModeToKlares4Mode)(args.systemMode, supportsCooling);
163
+ if (klares4Mode === null) {
164
+ log.warn(`[Matter] ${device.name}: unsupported Matter systemMode ${args.systemMode} ignored`);
165
+ return;
166
+ }
167
+ log.debug(`[Matter] ${device.name} systemMode ${args.systemMode} -> ${klares4Mode}`);
168
+ await getWsClient()?.setThermostatMode(device.id, klares4Mode);
133
169
  },
134
170
  },
135
171
  },
@@ -137,121 +173,48 @@ function mapThermostat(device, deps) {
137
173
  }
138
174
  /**
139
175
  * Fallback mapping: register a thermostat as a Matter TemperatureSensor.
140
- * Used only when the regular Thermostat registration fails upstream (matter.js bug).
141
176
  * HAP continues to expose the full Thermostat — Matter loses write control but keeps read.
142
177
  */
143
178
  function mapThermostatAsTemperatureSensor(device, deps) {
144
- const { api } = deps;
145
179
  const currentC = device.currentTemperature ?? 21;
146
180
  return {
147
- ...baseFields(device),
148
- deviceType: api.matter.deviceTypes.TemperatureSensor,
149
- clusters: {
150
- temperatureMeasurement: {
151
- measuredValue: clampCentidegrees((0, matter_thermostat_mapper_1.toMatterTemperatureCelsius)(currentC)),
152
- },
153
- },
181
+ ...baseFields(device, deps.log),
182
+ deviceType: deps.api.matter.deviceTypes.TemperatureSensor,
183
+ clusters: { temperatureMeasurement: { measuredValue: clampCentidegrees((0, matter_thermostat_mapper_1.toMatterTemperatureCelsius)(currentC)) } },
154
184
  };
155
185
  }
156
186
  function mapSensor(device, deps) {
157
187
  const { api } = deps;
188
+ const bf = baseFields(device, deps.log);
158
189
  const val = device.status.value;
159
190
  switch (device.status.sensorType) {
160
- case 'temperature':
161
- return {
162
- ...baseFields(device),
163
- deviceType: api.matter.deviceTypes.TemperatureSensor,
164
- clusters: {
165
- temperatureMeasurement: {
166
- measuredValue: clampCentidegrees((0, matter_thermostat_mapper_1.toMatterTemperatureCelsius)(val)),
167
- },
168
- },
169
- };
170
- case 'humidity':
171
- return {
172
- ...baseFields(device),
173
- deviceType: api.matter.deviceTypes.HumiditySensor,
174
- clusters: {
175
- relativeHumidityMeasurement: {
176
- measuredValue: Math.round(Math.max(0, Math.min(100, val)) * 100),
177
- },
178
- },
179
- };
180
- case 'light':
181
- return {
182
- ...baseFields(device),
183
- deviceType: api.matter.deviceTypes.LightSensor,
184
- clusters: {
185
- illuminanceMeasurement: { measuredValue: luxToMatterIlluminance(val) },
186
- },
187
- };
188
- case 'motion':
189
- return {
190
- ...baseFields(device),
191
- deviceType: api.matter.deviceTypes.MotionSensor,
192
- clusters: {
193
- occupancySensing: { occupancy: { occupied: val > 0 } },
194
- },
195
- };
196
- case 'contact':
197
- return {
198
- ...baseFields(device),
199
- deviceType: api.matter.deviceTypes.ContactSensor,
200
- clusters: {
201
- booleanState: { stateValue: val === 0 },
202
- },
203
- };
204
- default:
205
- return undefined;
191
+ case 'temperature': return { ...bf, deviceType: api.matter.deviceTypes.TemperatureSensor, clusters: { temperatureMeasurement: { measuredValue: clampCentidegrees((0, matter_thermostat_mapper_1.toMatterTemperatureCelsius)(val)) } } };
192
+ case 'humidity': return { ...bf, deviceType: api.matter.deviceTypes.HumiditySensor, clusters: { relativeHumidityMeasurement: { measuredValue: Math.round(Math.max(0, Math.min(100, val)) * 100) } } };
193
+ case 'light': return { ...bf, deviceType: api.matter.deviceTypes.LightSensor, clusters: { illuminanceMeasurement: { measuredValue: luxToMatterIlluminance(val) } } };
194
+ case 'motion': return { ...bf, deviceType: api.matter.deviceTypes.MotionSensor, clusters: { occupancySensing: { occupancy: { occupied: val > 0 } } } };
195
+ case 'contact': return { ...bf, deviceType: api.matter.deviceTypes.ContactSensor, clusters: { booleanState: { stateValue: val === 0 } } };
196
+ default: return undefined;
206
197
  }
207
198
  }
208
199
  function mapZone(device, deps) {
209
- const { api } = deps;
210
- return {
211
- ...baseFields(device),
212
- deviceType: api.matter.deviceTypes.ContactSensor,
213
- clusters: {
214
- booleanState: { stateValue: !device.status.open },
215
- },
216
- };
200
+ return { ...baseFields(device, deps.log), deviceType: deps.api.matter.deviceTypes.ContactSensor, clusters: { booleanState: { stateValue: !device.status.open } } };
217
201
  }
218
- function mapScenario(device, deps) {
219
- const { api, getWsClient } = deps;
202
+ function mapMomentarySwitch(device, trigger, deps) {
220
203
  return {
221
- ...baseFields(device),
222
- deviceType: api.matter.deviceTypes.OnOffSwitch,
223
- clusters: {
224
- onOff: { onOff: false },
225
- },
226
- handlers: {
227
- onOff: {
228
- on: async () => {
229
- await getWsClient()?.triggerScenario(device.id);
230
- scheduleMomentaryAutoOff(device.id, deps);
231
- },
204
+ ...baseFields(device, deps.log),
205
+ deviceType: deps.api.matter.deviceTypes.OnOffSwitch,
206
+ clusters: { onOff: { onOff: false } },
207
+ handlers: { onOff: {
208
+ on: async () => { await trigger(); scheduleMomentaryAutoOff(device.id, deps); },
232
209
  off: async () => { },
233
- },
234
- },
210
+ } },
235
211
  };
236
212
  }
213
+ function mapScenario(device, deps) {
214
+ return mapMomentarySwitch(device, async () => { await deps.getWsClient()?.triggerScenario(device.id); }, deps);
215
+ }
237
216
  function mapGate(device, deps) {
238
- const { api, getWsClient } = deps;
239
- return {
240
- ...baseFields(device),
241
- deviceType: api.matter.deviceTypes.OnOffSwitch,
242
- clusters: {
243
- onOff: { onOff: false },
244
- },
245
- handlers: {
246
- onOff: {
247
- on: async () => {
248
- await getWsClient()?.toggleGate(device.id);
249
- scheduleMomentaryAutoOff(device.id, deps);
250
- },
251
- off: async () => { },
252
- },
253
- },
254
- };
217
+ return mapMomentarySwitch(device, async () => { await deps.getWsClient()?.toggleGate(device.id); }, deps);
255
218
  }
256
219
  function deviceToMatterAccessory(device, deps) {
257
220
  if (!deps.api.matter) {
@@ -1 +1 @@
1
- {"version":3,"file":"matter-device-mapper.js","sourceRoot":"","sources":["../../src/platform/matter-device-mapper.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"matter-device-mapper.js","sourceRoot":"","sources":["../../src/platform/matter-device-mapper.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,38 @@
1
+ /**
2
+ * Matter-only accessory name sanitisation.
3
+ *
4
+ * Normalises display names for Matter / Homebridge 2 controllers without
5
+ * touching HAP names, UUIDs, or the original klares4 device names.
6
+ *
7
+ * Pure functions + a stateful collision registry (one instance per registry object).
8
+ */
9
+ /**
10
+ * Sanitise a device name for use as a Matter accessory `displayName`.
11
+ *
12
+ * Rules (applied in order):
13
+ * 1. Replace `+` with ` e `.
14
+ * 2. Remove parentheses / brackets but keep their content.
15
+ * 3. Normalise typographic apostrophes / single quotes to nothing.
16
+ * 4. Replace slashes, backslashes and other shell-like special chars with space.
17
+ * 5. Collapse multiple whitespace to a single space.
18
+ * 6. Trim leading/trailing whitespace.
19
+ * 7. Truncate to MAX_NAME_LENGTH characters (trim again after truncation).
20
+ * 8. If the result is empty, use `fallback` (default 'Device').
21
+ */
22
+ export declare function sanitizeMatterAccessoryName(name: string, fallback?: string): string;
23
+ /**
24
+ * Tracks sanitised names per registry instance so that two devices whose names
25
+ * normalise to the same string receive distinct suffixes.
26
+ *
27
+ * Instantiate once per plugin boot (module-level in matter-device-mapper).
28
+ * For tests, instantiate a fresh registry per test to avoid cross-test pollution.
29
+ */
30
+ export declare class MatterNameRegistry {
31
+ private readonly nameToUuid;
32
+ /**
33
+ * Return `sanitized` if it has not been used yet (or was used by the same uuid).
34
+ * Otherwise append a stable 4-char hex suffix derived from the uuid.
35
+ */
36
+ resolve(uuid: string, sanitized: string): string;
37
+ }
38
+ //# sourceMappingURL=matter-name-sanitizer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"matter-name-sanitizer.d.ts","sourceRoot":"","sources":["../../src/platform/matter-name-sanitizer.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH;;;;;;;;;;;;GAYG;AACH,wBAAgB,2BAA2B,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,SAAW,GAAG,MAAM,CAkBrF;AAED;;;;;;GAMG;AACH,qBAAa,kBAAkB;IAC3B,OAAO,CAAC,QAAQ,CAAC,UAAU,CAA6B;IAExD;;;OAGG;IACH,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM;CAcnD"}
@@ -0,0 +1,75 @@
1
+ "use strict";
2
+ /**
3
+ * Matter-only accessory name sanitisation.
4
+ *
5
+ * Normalises display names for Matter / Homebridge 2 controllers without
6
+ * touching HAP names, UUIDs, or the original klares4 device names.
7
+ *
8
+ * Pure functions + a stateful collision registry (one instance per registry object).
9
+ */
10
+ Object.defineProperty(exports, "__esModule", { value: true });
11
+ exports.MatterNameRegistry = void 0;
12
+ exports.sanitizeMatterAccessoryName = sanitizeMatterAccessoryName;
13
+ const MAX_NAME_LENGTH = 64;
14
+ /**
15
+ * Sanitise a device name for use as a Matter accessory `displayName`.
16
+ *
17
+ * Rules (applied in order):
18
+ * 1. Replace `+` with ` e `.
19
+ * 2. Remove parentheses / brackets but keep their content.
20
+ * 3. Normalise typographic apostrophes / single quotes to nothing.
21
+ * 4. Replace slashes, backslashes and other shell-like special chars with space.
22
+ * 5. Collapse multiple whitespace to a single space.
23
+ * 6. Trim leading/trailing whitespace.
24
+ * 7. Truncate to MAX_NAME_LENGTH characters (trim again after truncation).
25
+ * 8. If the result is empty, use `fallback` (default 'Device').
26
+ */
27
+ function sanitizeMatterAccessoryName(name, fallback = 'Device') {
28
+ if (!name || typeof name !== 'string')
29
+ return fallback || 'Device';
30
+ let s = name;
31
+ s = s.replace(/\+/g, ' e ');
32
+ s = s.replace(/[()[\]]/g, ' ');
33
+ // Typographic apostrophes, right/left single quotes
34
+ s = s.replace(/[\u2018\u2019\u201a\u201b']/g, '');
35
+ // Slash, backslash, pipe and similar structural chars → space
36
+ s = s.replace(/[/\\|<>{}*?!@#$%^&=~`]/g, ' ');
37
+ s = s.replace(/\s+/g, ' ');
38
+ s = s.trim();
39
+ if (s.length > MAX_NAME_LENGTH) {
40
+ s = s.slice(0, MAX_NAME_LENGTH).trim();
41
+ }
42
+ return s || (fallback.trim() || 'Device');
43
+ }
44
+ /**
45
+ * Tracks sanitised names per registry instance so that two devices whose names
46
+ * normalise to the same string receive distinct suffixes.
47
+ *
48
+ * Instantiate once per plugin boot (module-level in matter-device-mapper).
49
+ * For tests, instantiate a fresh registry per test to avoid cross-test pollution.
50
+ */
51
+ class MatterNameRegistry {
52
+ constructor() {
53
+ this.nameToUuid = new Map();
54
+ }
55
+ /**
56
+ * Return `sanitized` if it has not been used yet (or was used by the same uuid).
57
+ * Otherwise append a stable 4-char hex suffix derived from the uuid.
58
+ */
59
+ resolve(uuid, sanitized) {
60
+ const existing = this.nameToUuid.get(sanitized);
61
+ if (!existing || existing === uuid) {
62
+ this.nameToUuid.set(sanitized, uuid);
63
+ return sanitized;
64
+ }
65
+ // Collision: derive a stable suffix from the last 4 chars of the uuid.
66
+ const suffix = uuid.replace(/-/g, '').slice(-4);
67
+ const candidate = sanitized.length + 5 <= MAX_NAME_LENGTH
68
+ ? `${sanitized} ${suffix}`
69
+ : `${sanitized.slice(0, MAX_NAME_LENGTH - 5).trim()} ${suffix}`;
70
+ this.nameToUuid.set(candidate, uuid);
71
+ return candidate;
72
+ }
73
+ }
74
+ exports.MatterNameRegistry = MatterNameRegistry;
75
+ //# sourceMappingURL=matter-name-sanitizer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"matter-name-sanitizer.js","sourceRoot":"","sources":["../../src/platform/matter-name-sanitizer.ts"],"names":[],"mappings":";AAAA;;;;;;;GAOG;;;AAiBH,kEAkBC;AAjCD,MAAM,eAAe,GAAG,EAAE,CAAC;AAE3B;;;;;;;;;;;;GAYG;AACH,SAAgB,2BAA2B,CAAC,IAAY,EAAE,QAAQ,GAAG,QAAQ;IACzE,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ;QAAE,OAAO,QAAQ,IAAI,QAAQ,CAAC;IAEnE,IAAI,CAAC,GAAG,IAAI,CAAC;IACb,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IAC5B,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;IAC/B,oDAAoD;IACpD,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,8BAA8B,EAAE,EAAE,CAAC,CAAC;IAClD,8DAA8D;IAC9D,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,yBAAyB,EAAE,GAAG,CAAC,CAAC;IAC9C,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC3B,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;IAEb,IAAI,CAAC,CAAC,MAAM,GAAG,eAAe,EAAE,CAAC;QAC7B,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,eAAe,CAAC,CAAC,IAAI,EAAE,CAAC;IAC3C,CAAC;IAED,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,QAAQ,CAAC,CAAC;AAC9C,CAAC;AAED;;;;;;GAMG;AACH,MAAa,kBAAkB;IAA/B;QACqB,eAAU,GAAG,IAAI,GAAG,EAAkB,CAAC;IAoB5D,CAAC;IAlBG;;;OAGG;IACH,OAAO,CAAC,IAAY,EAAE,SAAiB;QACnC,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAChD,IAAI,CAAC,QAAQ,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;YACjC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;YACrC,OAAO,SAAS,CAAC;QACrB,CAAC;QACD,uEAAuE;QACvE,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAChD,MAAM,SAAS,GAAG,SAAS,CAAC,MAAM,GAAG,CAAC,IAAI,eAAe;YACrD,CAAC,CAAC,GAAG,SAAS,IAAI,MAAM,EAAE;YAC1B,CAAC,CAAC,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,eAAe,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,MAAM,EAAE,CAAC;QACpE,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;QACrC,OAAO,SAAS,CAAC;IACrB,CAAC;CACJ;AArBD,gDAqBC"}
@@ -47,6 +47,20 @@ export declare function domainModeToMatterSystemMode(mode: DomainThermostatMode
47
47
  * Tracking: https://github.com/project-chip/matter.js/issues (search "presetTypes")
48
48
  */
49
49
  export declare function getThermostatPresetWorkaroundAttributes(): Record<string, unknown>;
50
+ /**
51
+ * Map a Matter SystemMode value (Matter spec §4.3.7.32) back to a klares4 domain mode.
52
+ * Returns null for modes the device does not support (e.g. Cool/Auto on a heating-only
53
+ * thermostat) so callers can log a warning and skip the command instead of crashing.
54
+ */
55
+ export declare function matterSystemModeToKlares4Mode(matterMode: number, supportsCooling: boolean): DomainThermostatMode | null;
56
+ /**
57
+ * Convert a Matter setpoint (centidegrees) to °C, clamped to [minC, maxC].
58
+ * Returns the (possibly clamped) value and a flag indicating whether clamping occurred.
59
+ */
60
+ export declare function normalizeMatterSetpointC(centidegrees: number, minC: number, maxC: number): {
61
+ value: number;
62
+ clamped: boolean;
63
+ };
50
64
  /**
51
65
  * Decide whether a Lares4 thermostat should expose Matter cooling.
52
66
  * The Lares4 system itself does not expose this metadata in the WS payload,
@@ -74,4 +88,20 @@ export interface ThermostatMatterState {
74
88
  * @param device Lares4 thermostat device
75
89
  */
76
90
  export declare function buildThermostatMatterState(device: KseniaThermostat): ThermostatMatterState;
91
+ /**
92
+ * Prevents feedback loops when Matter attribute-change handlers send commands to
93
+ * Lares4, which then echoes the change back as a state update: the plugin pushes
94
+ * the update via `api.matter.updateAccessoryState`, which writes the Matter attribute,
95
+ * which re-fires the handler — an infinite loop.
96
+ *
97
+ * Usage: call `record(key, centi)` immediately before sending a command; the handler
98
+ * checks `isEcho(key, centi)` first and returns early if the invocation is an echo.
99
+ */
100
+ export declare class ThermostatEchoGuard {
101
+ private readonly sent;
102
+ private readonly ttlMs;
103
+ constructor(ttlMs?: number);
104
+ record(key: string, centi: number): void;
105
+ isEcho(key: string, centi: number): boolean;
106
+ }
77
107
  //# sourceMappingURL=matter-thermostat-mapper.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"matter-thermostat-mapper.d.ts","sourceRoot":"","sources":["../../src/platform/matter-thermostat-mapper.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAMjD,eAAO,MAAM,kBAAkB,IAAI,CAAC;AACpC,eAAO,MAAM,kBAAkB,KAAK,CAAC;AACrC,eAAO,MAAM,kBAAkB,KAAK,CAAC;AACrC,eAAO,MAAM,kBAAkB,KAAK,CAAC;AACrC,eAAO,MAAM,kBAAkB,IAAI,CAAC;AACpC,eAAO,MAAM,0BAA0B,KAAK,CAAC;AAC7C,eAAO,MAAM,0BAA0B,KAAK,CAAC;AAC7C,eAAO,MAAM,2BAA2B,KAAK,CAAC;AAG9C,eAAO,MAAM,kBAAkB,SAAS,CAAC;AACzC,eAAO,MAAM,kBAAkB,QAAQ,CAAC;AAGxC,eAAO,MAAM,wBAAwB,IAAI,CAAC;AAC1C,eAAO,MAAM,+BAA+B,IAAI,CAAC;AAGjD,eAAO,MAAM,eAAe,IAAI,CAAC;AACjC,eAAO,MAAM,gBAAgB,IAAI,CAAC;AAClC,eAAO,MAAM,gBAAgB,IAAI,CAAC;AAClC,eAAO,MAAM,gBAAgB,IAAI,CAAC;AAGlC,eAAO,MAAM,wBAAwB,IAAI,CAAC;AAM1C;;;GAGG;AACH,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,OAAO,EAAE,SAAS,SAAI,GAAG,MAAM,CAIhF;AAED,8CAA8C;AAC9C,wBAAgB,4BAA4B,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAElE;AAED,+EAA+E;AAC/E,wBAAgB,sBAAsB,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAGrG;AAYD,MAAM,MAAM,oBAAoB,GAAG,KAAK,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;AAEpE,wBAAgB,4BAA4B,CAAC,IAAI,EAAE,oBAAoB,GAAG,SAAS,GAAG,MAAM,CAO3F;AAMD;;;;;;;;;GASG;AACH,wBAAgB,uCAAuC,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAWjF;AAMD;;;;;;;;GAQG;AACH,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAO3E;AAMD,MAAM,WAAW,qBAAqB;IAClC,uFAAuF;IACvF,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC9B,oGAAoG;IACpG,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC7C;AAED;;;;;;;;;GASG;AACH,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,gBAAgB,GAAG,qBAAqB,CAqE1F"}
1
+ {"version":3,"file":"matter-thermostat-mapper.d.ts","sourceRoot":"","sources":["../../src/platform/matter-thermostat-mapper.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAMjD,eAAO,MAAM,kBAAkB,IAAI,CAAC;AACpC,eAAO,MAAM,kBAAkB,KAAK,CAAC;AACrC,eAAO,MAAM,kBAAkB,KAAK,CAAC;AACrC,eAAO,MAAM,kBAAkB,KAAK,CAAC;AACrC,eAAO,MAAM,kBAAkB,IAAI,CAAC;AACpC,eAAO,MAAM,0BAA0B,KAAK,CAAC;AAC7C,eAAO,MAAM,0BAA0B,KAAK,CAAC;AAC7C,eAAO,MAAM,2BAA2B,KAAK,CAAC;AAG9C,eAAO,MAAM,kBAAkB,SAAS,CAAC;AACzC,eAAO,MAAM,kBAAkB,QAAQ,CAAC;AAGxC,eAAO,MAAM,wBAAwB,IAAI,CAAC;AAC1C,eAAO,MAAM,+BAA+B,IAAI,CAAC;AAGjD,eAAO,MAAM,eAAe,IAAI,CAAC;AACjC,eAAO,MAAM,gBAAgB,IAAI,CAAC;AAClC,eAAO,MAAM,gBAAgB,IAAI,CAAC;AAClC,eAAO,MAAM,gBAAgB,IAAI,CAAC;AAGlC,eAAO,MAAM,wBAAwB,IAAI,CAAC;AAM1C;;;GAGG;AACH,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,OAAO,EAAE,SAAS,SAAI,GAAG,MAAM,CAIhF;AAED,8CAA8C;AAC9C,wBAAgB,4BAA4B,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAElE;AAED,+EAA+E;AAC/E,wBAAgB,sBAAsB,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAGrG;AAYD,MAAM,MAAM,oBAAoB,GAAG,KAAK,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;AAEpE,wBAAgB,4BAA4B,CAAC,IAAI,EAAE,oBAAoB,GAAG,SAAS,GAAG,MAAM,CAO3F;AAMD;;;;;;;;;GASG;AACH,wBAAgB,uCAAuC,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAWjF;AAMD;;;;GAIG;AACH,wBAAgB,6BAA6B,CACzC,UAAU,EAAE,MAAM,EAClB,eAAe,EAAE,OAAO,GACzB,oBAAoB,GAAG,IAAI,CAQ7B;AAED;;;GAGG;AACH,wBAAgB,wBAAwB,CACpC,YAAY,EAAE,MAAM,EACpB,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,GACb;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,CAIrC;AAMD;;;;;;;;GAQG;AACH,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAO3E;AAMD,MAAM,WAAW,qBAAqB;IAClC,uFAAuF;IACvF,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC9B,oGAAoG;IACpG,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC7C;AAED;;;;;;;;;GASG;AACH,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,gBAAgB,GAAG,qBAAqB,CAqE1F;AAMD;;;;;;;;GAQG;AACH,qBAAa,mBAAmB;IAC5B,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAsD;IAC3E,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAS;gBACnB,KAAK,SAAO;IACxB,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IACxC,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO;CAI9C"}
@@ -9,12 +9,14 @@
9
9
  * Pure functions only — no side effects, no I/O — to keep the unit tests trivial.
10
10
  */
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.PRESET_SCENARIO_OCCUPIED = exports.SYSTEM_MODE_HEAT = exports.SYSTEM_MODE_COOL = exports.SYSTEM_MODE_AUTO = exports.SYSTEM_MODE_OFF = exports.CONTROL_SEQ_COOLING_AND_HEATING = exports.CONTROL_SEQ_HEATING_ONLY = exports.TEMP_ABS_MAX_CENTI = exports.TEMP_ABS_MIN_CENTI = exports.DEFAULT_LOCAL_TEMPERATURE_C = exports.DEFAULT_COOLING_SETPOINT_C = exports.DEFAULT_HEATING_SETPOINT_C = exports.DEFAULT_DEADBAND_C = exports.DEFAULT_MAX_COOL_C = exports.DEFAULT_MIN_COOL_C = exports.DEFAULT_MAX_HEAT_C = exports.DEFAULT_MIN_HEAT_C = void 0;
12
+ exports.ThermostatEchoGuard = exports.PRESET_SCENARIO_OCCUPIED = exports.SYSTEM_MODE_HEAT = exports.SYSTEM_MODE_COOL = exports.SYSTEM_MODE_AUTO = exports.SYSTEM_MODE_OFF = exports.CONTROL_SEQ_COOLING_AND_HEATING = exports.CONTROL_SEQ_HEATING_ONLY = exports.TEMP_ABS_MAX_CENTI = exports.TEMP_ABS_MIN_CENTI = exports.DEFAULT_LOCAL_TEMPERATURE_C = exports.DEFAULT_COOLING_SETPOINT_C = exports.DEFAULT_HEATING_SETPOINT_C = exports.DEFAULT_DEADBAND_C = exports.DEFAULT_MAX_COOL_C = exports.DEFAULT_MIN_COOL_C = exports.DEFAULT_MAX_HEAT_C = exports.DEFAULT_MIN_HEAT_C = void 0;
13
13
  exports.toMatterTemperatureCelsius = toMatterTemperatureCelsius;
14
14
  exports.fromMatterTemperatureCelsius = fromMatterTemperatureCelsius;
15
15
  exports.clampMatterTemperature = clampMatterTemperature;
16
16
  exports.domainModeToMatterSystemMode = domainModeToMatterSystemMode;
17
17
  exports.getThermostatPresetWorkaroundAttributes = getThermostatPresetWorkaroundAttributes;
18
+ exports.matterSystemModeToKlares4Mode = matterSystemModeToKlares4Mode;
19
+ exports.normalizeMatterSetpointC = normalizeMatterSetpointC;
18
20
  exports.thermostatSupportsCooling = thermostatSupportsCooling;
19
21
  exports.buildThermostatMatterState = buildThermostatMatterState;
20
22
  // ---------------------------------------------------------------------------
@@ -104,6 +106,32 @@ function getThermostatPresetWorkaroundAttributes() {
104
106
  };
105
107
  }
106
108
  // ---------------------------------------------------------------------------
109
+ // Handler helpers — used by mapThermostat command handlers
110
+ // ---------------------------------------------------------------------------
111
+ /**
112
+ * Map a Matter SystemMode value (Matter spec §4.3.7.32) back to a klares4 domain mode.
113
+ * Returns null for modes the device does not support (e.g. Cool/Auto on a heating-only
114
+ * thermostat) so callers can log a warning and skip the command instead of crashing.
115
+ */
116
+ function matterSystemModeToKlares4Mode(matterMode, supportsCooling) {
117
+ switch (matterMode) {
118
+ case exports.SYSTEM_MODE_OFF: return 'off';
119
+ case exports.SYSTEM_MODE_HEAT: return 'heat';
120
+ case exports.SYSTEM_MODE_COOL: return supportsCooling ? 'cool' : null;
121
+ case exports.SYSTEM_MODE_AUTO: return supportsCooling ? 'auto' : null;
122
+ default: return null;
123
+ }
124
+ }
125
+ /**
126
+ * Convert a Matter setpoint (centidegrees) to °C, clamped to [minC, maxC].
127
+ * Returns the (possibly clamped) value and a flag indicating whether clamping occurred.
128
+ */
129
+ function normalizeMatterSetpointC(centidegrees, minC, maxC) {
130
+ const raw = fromMatterTemperatureCelsius(centidegrees);
131
+ const value = Math.max(minC, Math.min(maxC, raw));
132
+ return { value, clamped: value !== raw };
133
+ }
134
+ // ---------------------------------------------------------------------------
107
135
  // Capability detection (heuristic — Lares4 zone names follow Italian conventions)
108
136
  // ---------------------------------------------------------------------------
109
137
  /**
@@ -189,4 +217,28 @@ function buildThermostatMatterState(device) {
189
217
  };
190
218
  return { base, schemaInvariants };
191
219
  }
220
+ // ---------------------------------------------------------------------------
221
+ // Echo-suppression guard for Matter attribute-change handlers
222
+ // ---------------------------------------------------------------------------
223
+ /**
224
+ * Prevents feedback loops when Matter attribute-change handlers send commands to
225
+ * Lares4, which then echoes the change back as a state update: the plugin pushes
226
+ * the update via `api.matter.updateAccessoryState`, which writes the Matter attribute,
227
+ * which re-fires the handler — an infinite loop.
228
+ *
229
+ * Usage: call `record(key, centi)` immediately before sending a command; the handler
230
+ * checks `isEcho(key, centi)` first and returns early if the invocation is an echo.
231
+ */
232
+ class ThermostatEchoGuard {
233
+ constructor(ttlMs = 8000) {
234
+ this.sent = new Map();
235
+ this.ttlMs = ttlMs;
236
+ }
237
+ record(key, centi) { this.sent.set(key, { centi, time: Date.now() }); }
238
+ isEcho(key, centi) {
239
+ const s = this.sent.get(key);
240
+ return !!s && s.centi === centi && (Date.now() - s.time) < this.ttlMs;
241
+ }
242
+ }
243
+ exports.ThermostatEchoGuard = ThermostatEchoGuard;
192
244
  //# sourceMappingURL=matter-thermostat-mapper.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"matter-thermostat-mapper.js","sourceRoot":"","sources":["../../src/platform/matter-thermostat-mapper.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"matter-thermostat-mapper.js","sourceRoot":"","sources":["../../src/platform/matter-thermostat-mapper.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "homebridge-plugin-klares4",
3
- "version": "2.1.2",
3
+ "version": "2.1.3-rc.2",
4
4
  "description": "Plugin completo per sistemi Ksenia Lares4 - Zone, Luci, Tapparelle, Termostati, Sensori",
5
5
  "main": "dist/index.js",
6
6
  "scripts": {