homebridge-plugin-klares4 1.1.1-beta.5 → 1.1.1-beta.6

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 (43) hide show
  1. package/CHANGELOG.md +30 -6
  2. package/README.md +34 -34
  3. package/dist/accessories/cover-accessory.d.ts +8 -4
  4. package/dist/accessories/cover-accessory.d.ts.map +1 -1
  5. package/dist/accessories/cover-accessory.js +36 -37
  6. package/dist/accessories/cover-accessory.js.map +1 -1
  7. package/dist/accessories/light-accessory.d.ts +7 -3
  8. package/dist/accessories/light-accessory.d.ts.map +1 -1
  9. package/dist/accessories/light-accessory.js +27 -24
  10. package/dist/accessories/light-accessory.js.map +1 -1
  11. package/dist/accessories/scenario-accessory.d.ts +8 -4
  12. package/dist/accessories/scenario-accessory.d.ts.map +1 -1
  13. package/dist/accessories/scenario-accessory.js +23 -19
  14. package/dist/accessories/scenario-accessory.js.map +1 -1
  15. package/dist/accessories/sensor-accessory.d.ts +5 -1
  16. package/dist/accessories/sensor-accessory.d.ts.map +1 -1
  17. package/dist/accessories/sensor-accessory.js +49 -36
  18. package/dist/accessories/sensor-accessory.js.map +1 -1
  19. package/dist/accessories/thermostat-accessory.d.ts +5 -1
  20. package/dist/accessories/thermostat-accessory.d.ts.map +1 -1
  21. package/dist/accessories/thermostat-accessory.js +68 -55
  22. package/dist/accessories/thermostat-accessory.js.map +1 -1
  23. package/dist/accessories/zone-accessory.d.ts +5 -1
  24. package/dist/accessories/zone-accessory.d.ts.map +1 -1
  25. package/dist/accessories/zone-accessory.js +32 -32
  26. package/dist/accessories/zone-accessory.js.map +1 -1
  27. package/dist/mqtt-bridge.d.ts +6 -12
  28. package/dist/mqtt-bridge.d.ts.map +1 -1
  29. package/dist/mqtt-bridge.js +148 -104
  30. package/dist/mqtt-bridge.js.map +1 -1
  31. package/dist/platform.d.ts +26 -37
  32. package/dist/platform.d.ts.map +1 -1
  33. package/dist/platform.js +177 -132
  34. package/dist/platform.js.map +1 -1
  35. package/dist/types.d.ts +203 -21
  36. package/dist/types.d.ts.map +1 -1
  37. package/dist/types.js +78 -0
  38. package/dist/types.js.map +1 -1
  39. package/dist/websocket-client.d.ts +6 -5
  40. package/dist/websocket-client.d.ts.map +1 -1
  41. package/dist/websocket-client.js +257 -313
  42. package/dist/websocket-client.js.map +1 -1
  43. package/package.json +4 -4
@@ -35,24 +35,30 @@ var __importStar = (this && this.__importStar) || (function () {
35
35
  Object.defineProperty(exports, "__esModule", { value: true });
36
36
  exports.MqttBridge = void 0;
37
37
  const mqtt = __importStar(require("mqtt"));
38
+ const types_1 = require("./types");
39
+ /**
40
+ * MQTT Bridge for Ksenia Lares4
41
+ * Publishes device states and receives commands via MQTT
42
+ */
38
43
  class MqttBridge {
39
44
  constructor(config, log, platform) {
40
45
  this.config = config;
41
46
  this.log = log;
42
47
  this.platform = platform;
43
- this.topicPrefix = config.topicPrefix || 'homebridge/klares4';
48
+ this.topicPrefix = config.topicPrefix ?? 'homebridge/klares4';
44
49
  if (config.enabled) {
45
50
  this.connect();
46
51
  }
47
52
  }
48
53
  connect() {
49
54
  if (!this.config.broker) {
50
- this.log.warn('🚫 MQTT: Broker non configurato');
55
+ this.log.warn('MQTT: Broker not configured');
51
56
  return;
52
57
  }
53
58
  const options = {
54
- port: this.config.port || 1883,
55
- clientId: this.config.clientId || `homebridge-klares4-${Math.random().toString(16).substr(2, 8)}`,
59
+ port: this.config.port ?? 1883,
60
+ clientId: this.config.clientId ??
61
+ `homebridge-klares4-${Math.random().toString(16).substring(2, 10)}`,
56
62
  clean: true,
57
63
  reconnectPeriod: 5000,
58
64
  connectTimeout: 30000,
@@ -66,24 +72,24 @@ class MqttBridge {
66
72
  this.setupEventHandlers();
67
73
  }
68
74
  catch (error) {
69
- this.log.error('MQTT: Errore connessione:', error);
75
+ this.log.error('MQTT: Connection error:', error instanceof Error ? error.message : String(error));
70
76
  }
71
77
  }
72
78
  setupEventHandlers() {
73
79
  if (!this.client)
74
80
  return;
75
81
  this.client.on('connect', () => {
76
- this.log.info('MQTT: Connesso al broker', this.config.broker);
82
+ this.log.info('MQTT: Connected to broker', this.config.broker);
77
83
  this.subscribeToCommands();
78
84
  });
79
85
  this.client.on('error', (error) => {
80
- this.log.error('MQTT: Errore:', error);
86
+ this.log.error('MQTT: Error:', error.message);
81
87
  });
82
88
  this.client.on('reconnect', () => {
83
- this.log.info('🔄 MQTT: Riconnessione...');
89
+ this.log.info('MQTT: Reconnecting...');
84
90
  });
85
91
  this.client.on('offline', () => {
86
- this.log.warn('📴 MQTT: Disconnesso');
92
+ this.log.warn('MQTT: Disconnected');
87
93
  });
88
94
  this.client.on('message', (topic, payload) => {
89
95
  this.handleIncomingMessage(topic, payload.toString());
@@ -92,15 +98,17 @@ class MqttBridge {
92
98
  subscribeToCommands() {
93
99
  if (!this.client)
94
100
  return;
95
- // Sottoscrivi ai comandi in tutti i formati supportati
96
- const directCommandTopic = `${this.topicPrefix}/+/+/set`; // homebridge/klares4/{type}/{device}/set
97
- const roomCommandTopic = `${this.topicPrefix}/+/+/+/set`; // homebridge/klares4/{room}/{type}/{device}/set
98
- this.client.subscribe([directCommandTopic, roomCommandTopic], { qos: this.config.qos || 1 }, (error) => {
101
+ const directCommandTopic = `${this.topicPrefix}/+/+/set`;
102
+ const roomCommandTopic = `${this.topicPrefix}/+/+/+/set`;
103
+ this.client.subscribe([directCommandTopic, roomCommandTopic], { qos: this.config.qos ?? 1 }, (error) => {
99
104
  if (error) {
100
- this.log.error('MQTT: Errore sottoscrizione:', error);
105
+ this.log.error('MQTT: Subscription error:', error.message);
101
106
  }
102
107
  else {
103
- this.log.info('📥 MQTT: Sottoscritto ai comandi:', [directCommandTopic, roomCommandTopic]);
108
+ this.log.info('MQTT: Subscribed to commands:', [
109
+ directCommandTopic,
110
+ roomCommandTopic,
111
+ ]);
104
112
  }
105
113
  });
106
114
  }
@@ -109,67 +117,66 @@ class MqttBridge {
109
117
  const topicParts = topic.split('/');
110
118
  let deviceType;
111
119
  let deviceIdentifier;
112
- // Supporta entrambi i formati:
113
- // Diretto: homebridge/klares4/{deviceType}/{deviceSlug}/set
114
- // Con stanza: homebridge/klares4/{room}/{deviceType}/{deviceSlug}/set
115
120
  if (topicParts.length === 5 && topicParts[4] === 'set') {
116
- // Formato diretto (senza stanza)
117
121
  deviceType = topicParts[2];
118
122
  deviceIdentifier = topicParts[3];
119
123
  }
120
124
  else if (topicParts.length === 6 && topicParts[5] === 'set') {
121
- // Formato con stanza
122
125
  deviceType = topicParts[3];
123
126
  deviceIdentifier = topicParts[4];
124
127
  }
125
128
  else {
126
- this.log.warn('⚠️ MQTT: Formato topic non valido:', topic);
129
+ this.log.warn('MQTT: Invalid topic format:', topic);
127
130
  return;
128
131
  }
129
- this.log.debug(`📥 MQTT: Comando ricevuto - Type: ${deviceType}, Identifier: ${deviceIdentifier}, Payload: ${payload}`);
132
+ this.log.debug(`MQTT: Command received - Type: ${deviceType}, Identifier: ${deviceIdentifier}, Payload: ${payload}`);
130
133
  this.executeCommand(deviceType, deviceIdentifier, payload);
131
134
  }
132
135
  catch (error) {
133
- this.log.error('MQTT: Errore elaborazione messaggio:', error);
136
+ this.log.error('MQTT: Message processing error:', error instanceof Error ? error.message : String(error));
134
137
  }
135
138
  }
136
139
  executeCommand(deviceType, deviceIdentifier, payload) {
137
140
  try {
138
141
  const command = JSON.parse(payload);
139
- // Trova l'accessorio corrispondente (supporta sia ID che slug del nome)
140
142
  const accessory = this.findAccessoryByDevice(deviceType, deviceIdentifier);
141
143
  if (!accessory) {
142
- this.log.warn(`⚠️ MQTT: Accessorio non trovato - Type: ${deviceType}, Identifier: ${deviceIdentifier}`);
144
+ this.log.warn(`MQTT: Accessory not found - Type: ${deviceType}, Identifier: ${deviceIdentifier}`);
143
145
  return;
144
146
  }
145
- // Esegui il comando in base al tipo di dispositivo
146
147
  switch (deviceType) {
147
148
  case 'light':
148
- this.handleLightCommand(accessory, command);
149
+ if ((0, types_1.isMqttLightCommand)(command)) {
150
+ this.handleLightCommand(accessory, command);
151
+ }
149
152
  break;
150
153
  case 'cover':
151
- this.handleCoverCommand(accessory, command);
154
+ if ((0, types_1.isMqttCoverCommand)(command)) {
155
+ this.handleCoverCommand(accessory, command);
156
+ }
152
157
  break;
153
158
  case 'thermostat':
154
- this.handleThermostatCommand(accessory, command);
159
+ if ((0, types_1.isMqttThermostatCommand)(command)) {
160
+ this.handleThermostatCommand(accessory, command);
161
+ }
155
162
  break;
156
163
  case 'scenario':
157
- this.handleScenarioCommand(accessory, command);
164
+ if ((0, types_1.isMqttScenarioCommand)(command)) {
165
+ this.handleScenarioCommand(accessory, command);
166
+ }
158
167
  break;
159
168
  default:
160
- this.log.warn(`⚠️ MQTT: Tipo dispositivo non supportato per comandi: ${deviceType}`);
169
+ this.log.warn(`MQTT: Unsupported device type for commands: ${deviceType}`);
161
170
  }
162
171
  }
163
172
  catch (error) {
164
- this.log.error('MQTT: Errore esecuzione comando:', error);
173
+ this.log.error('MQTT: Command execution error:', error instanceof Error ? error.message : String(error));
165
174
  }
166
175
  }
167
176
  findAccessoryByDevice(deviceType, deviceIdentifier) {
168
- // Cerca nell'handler degli accessori
169
- for (const [uuid, handler] of this.platform.accessoryHandlers) {
170
- const device = handler.device || handler.accessory?.context?.device;
177
+ for (const [, handler] of this.platform.accessoryHandlers) {
178
+ const device = this.getDeviceFromHandler(handler);
171
179
  if (device && device.type === deviceType) {
172
- // Supporta sia ID che slug del nome
173
180
  const deviceSlug = this.createDeviceSlug(device.name);
174
181
  if (device.id === deviceIdentifier || deviceSlug === deviceIdentifier) {
175
182
  return handler;
@@ -178,67 +185,90 @@ class MqttBridge {
178
185
  }
179
186
  return null;
180
187
  }
188
+ getDeviceFromHandler(handler) {
189
+ if ('device' in handler && handler.device) {
190
+ return handler.device;
191
+ }
192
+ return undefined;
193
+ }
181
194
  handleLightCommand(accessory, command) {
182
195
  if (command.on !== undefined) {
183
- accessory.setOn(command.on);
184
- this.log.info(`💡 MQTT: Luce ${accessory.device.name} ${command.on ? 'ON' : 'OFF'}`);
196
+ accessory.setOn(command.on).catch((error) => {
197
+ this.log.error('MQTT: Light command error:', error instanceof Error ? error.message : String(error));
198
+ });
199
+ this.log.info(`MQTT: Light -> ${command.on ? 'ON' : 'OFF'}`);
185
200
  }
186
- if (command.brightness !== undefined && accessory.setBrightness) {
187
- accessory.setBrightness(command.brightness);
188
- this.log.info(`💡 MQTT: Luminosità ${accessory.device.name} ${command.brightness}%`);
201
+ if (command.brightness !== undefined && 'setBrightness' in accessory) {
202
+ accessory.setBrightness(command.brightness).catch((error) => {
203
+ this.log.error('MQTT: Brightness command error:', error instanceof Error ? error.message : String(error));
204
+ });
205
+ this.log.info(`MQTT: Brightness -> ${command.brightness}%`);
189
206
  }
190
207
  }
191
208
  handleCoverCommand(accessory, command) {
192
209
  if (command.position !== undefined) {
193
- accessory.setTargetPosition(command.position);
194
- this.log.info(`🪟 MQTT: Tapparella ${accessory.device.name} ${command.position}%`);
210
+ accessory.setTargetPosition(command.position).catch((error) => {
211
+ this.log.error('MQTT: Cover command error:', error instanceof Error ? error.message : String(error));
212
+ });
213
+ this.log.info(`MQTT: Cover -> ${command.position}%`);
195
214
  }
196
215
  }
197
216
  handleThermostatCommand(accessory, command) {
198
217
  if (command.targetTemperature !== undefined) {
199
- accessory.setTargetTemperature(command.targetTemperature);
200
- this.log.info(`🌡️ MQTT: Termostato ${accessory.device.name} ${command.targetTemperature}°C`);
218
+ accessory.setTargetTemperature(command.targetTemperature).catch((error) => {
219
+ this.log.error('MQTT: Thermostat temperature error:', error instanceof Error ? error.message : String(error));
220
+ });
221
+ this.log.info(`MQTT: Thermostat -> ${command.targetTemperature}C`);
201
222
  }
202
223
  if (command.mode !== undefined) {
203
- accessory.setTargetHeatingCoolingState(this.getModeValue(command.mode));
204
- this.log.info(`🌡️ MQTT: Modalità termostato ${accessory.device.name} → ${command.mode}`);
224
+ accessory
225
+ .setTargetHeatingCoolingState(this.getModeValue(command.mode))
226
+ .catch((error) => {
227
+ this.log.error('MQTT: Thermostat mode error:', error instanceof Error ? error.message : String(error));
228
+ });
229
+ this.log.info(`MQTT: Thermostat mode -> ${command.mode}`);
205
230
  }
206
231
  }
207
232
  handleScenarioCommand(accessory, command) {
208
233
  if (command.active !== undefined && command.active) {
209
- accessory.setOn(true);
210
- this.log.info(`🎬 MQTT: Scenario ${accessory.device.name} Attivato`);
234
+ accessory.setOn(true).catch((error) => {
235
+ this.log.error('MQTT: Scenario command error:', error instanceof Error ? error.message : String(error));
236
+ });
237
+ this.log.info('MQTT: Scenario -> Activated');
211
238
  }
212
239
  }
213
240
  getModeValue(mode) {
214
241
  switch (mode) {
215
- case 'off': return 0;
216
- case 'heat': return 1;
217
- case 'cool': return 2;
218
- case 'auto': return 3;
219
- default: return 0;
242
+ case 'off':
243
+ return 0;
244
+ case 'heat':
245
+ return 1;
246
+ case 'cool':
247
+ return 2;
248
+ case 'auto':
249
+ return 3;
250
+ default:
251
+ return 0;
220
252
  }
221
253
  }
222
254
  createDeviceSlug(deviceName) {
223
255
  return deviceName
224
256
  .toLowerCase()
225
- .replace(/\s+/g, '_') // spazi → underscore
226
- .replace(/[àáâãäå]/g, 'a') // caratteri accentati
257
+ .replace(/\s+/g, '_')
258
+ .replace(/[àáâãäå]/g, 'a')
227
259
  .replace(/[èéêë]/g, 'e')
228
260
  .replace(/[ìíîï]/g, 'i')
229
261
  .replace(/[òóôõö]/g, 'o')
230
262
  .replace(/[ùúûü]/g, 'u')
231
263
  .replace(/[ç]/g, 'c')
232
- .replace(/[^a-z0-9_]/g, '') // rimuovi caratteri speciali
233
- .replace(/_+/g, '_') // rimuovi underscore multipli
234
- .replace(/^_|_$/g, ''); // rimuovi underscore iniziali/finali
264
+ .replace(/[^a-z0-9_]/g, '')
265
+ .replace(/_+/g, '_')
266
+ .replace(/^_|_$/g, '');
235
267
  }
236
268
  getRoomForDevice(deviceId) {
237
- // Se la mappatura stanze non è abilitata, non usare stanze
238
269
  if (!this.platform.config.roomMapping?.enabled) {
239
270
  return null;
240
271
  }
241
- // Cerca il dispositivo nelle stanze configurate
242
272
  if (this.platform.config.roomMapping.rooms) {
243
273
  for (const room of this.platform.config.roomMapping.rooms) {
244
274
  if (room.devices) {
@@ -250,16 +280,13 @@ class MqttBridge {
250
280
  }
251
281
  }
252
282
  }
253
- // Se non trovato in nessuna stanza, non usare stanze
254
283
  return null;
255
284
  }
256
- // Metodo pubblico per pubblicare stati dispositivi
257
285
  publishDeviceState(device) {
258
286
  if (!this.client || !this.config.enabled)
259
287
  return;
260
288
  const room = this.getRoomForDevice(device.id);
261
289
  const deviceSlug = this.createDeviceSlug(device.name);
262
- // Costruisci topic seguendo le best practice MQTT
263
290
  let topic;
264
291
  if (room) {
265
292
  topic = `${this.topicPrefix}/${room}/${device.type}/${deviceSlug}/state`;
@@ -269,15 +296,17 @@ class MqttBridge {
269
296
  }
270
297
  const payload = this.createStatePayload(device);
271
298
  this.client.publish(topic, JSON.stringify(payload), {
272
- qos: this.config.qos || 1,
273
- retain: this.config.retain || true
299
+ qos: this.config.qos ?? 1,
300
+ retain: this.config.retain ?? true,
274
301
  }, (error) => {
275
302
  if (error) {
276
- this.log.error('MQTT: Errore pubblicazione:', error);
303
+ this.log.error('MQTT: Publish error:', error.message);
277
304
  }
278
305
  else {
279
- const topicPath = room ? `${room}/${device.type}/${deviceSlug}` : `${device.type}/${deviceSlug}`;
280
- this.log.debug(`📤 MQTT: Pubblicato stato ${topicPath}`);
306
+ const topicPath = room
307
+ ? `${room}/${device.type}/${deviceSlug}`
308
+ : `${device.type}/${deviceSlug}`;
309
+ this.log.debug(`MQTT: Published state ${topicPath}`);
281
310
  }
282
311
  });
283
312
  }
@@ -286,66 +315,81 @@ class MqttBridge {
286
315
  id: device.id,
287
316
  name: device.name,
288
317
  type: device.type,
289
- timestamp: new Date().toISOString()
318
+ timestamp: new Date().toISOString(),
290
319
  };
291
- // Aggiungi dati specifici per tipo di dispositivo
292
320
  switch (device.type) {
293
- case 'light':
321
+ case 'light': {
294
322
  const light = device;
295
- return {
323
+ const lightPayload = {
296
324
  ...basePayload,
297
- on: light.status?.on || false,
298
- brightness: light.status?.brightness || 0,
299
- dimmable: light.status?.dimmable || false
325
+ on: light.status?.on ?? false,
326
+ brightness: light.status?.brightness ?? 0,
327
+ dimmable: light.status?.dimmable ?? false,
300
328
  };
301
- case 'cover':
329
+ return lightPayload;
330
+ }
331
+ case 'cover': {
302
332
  const cover = device;
303
- return {
333
+ const coverPayload = {
304
334
  ...basePayload,
305
- position: cover.status?.position || 0,
306
- state: cover.status?.state || 'stopped'
335
+ position: cover.status?.position ?? 0,
336
+ state: cover.status?.state ?? 'stopped',
307
337
  };
308
- case 'thermostat':
338
+ return coverPayload;
339
+ }
340
+ case 'thermostat': {
309
341
  const thermostat = device;
310
- return {
342
+ const thermostatPayload = {
311
343
  ...basePayload,
312
- currentTemperature: thermostat.currentTemperature || 0,
313
- targetTemperature: thermostat.targetTemperature || 20,
314
- mode: thermostat.mode || 'off',
315
- humidity: thermostat.humidity
344
+ currentTemperature: thermostat.currentTemperature ?? 0,
345
+ targetTemperature: thermostat.targetTemperature ?? 20,
346
+ mode: thermostat.mode ?? 'off',
347
+ humidity: thermostat.humidity,
316
348
  };
317
- case 'sensor':
349
+ return thermostatPayload;
350
+ }
351
+ case 'sensor': {
318
352
  const sensor = device;
319
- return {
353
+ const sensorPayload = {
320
354
  ...basePayload,
321
- sensorType: sensor.status?.sensorType || 'unknown',
322
- value: sensor.status?.value || 0,
323
- unit: sensor.status?.unit || ''
355
+ sensorType: sensor.status?.sensorType ?? 'unknown',
356
+ value: sensor.status?.value ?? 0,
357
+ unit: sensor.status?.unit ?? '',
324
358
  };
325
- case 'zone':
359
+ return sensorPayload;
360
+ }
361
+ case 'zone': {
326
362
  const zone = device;
327
- return {
363
+ const zonePayload = {
328
364
  ...basePayload,
329
- open: zone.status?.open || false,
330
- armed: zone.status?.armed || false,
331
- fault: zone.status?.fault || false,
332
- bypassed: zone.status?.bypassed || false
365
+ open: zone.status?.open ?? false,
366
+ armed: zone.status?.armed ?? false,
367
+ fault: zone.status?.fault ?? false,
368
+ bypassed: zone.status?.bypassed ?? false,
333
369
  };
334
- case 'scenario':
370
+ return zonePayload;
371
+ }
372
+ case 'scenario': {
335
373
  const scenario = device;
336
- return {
374
+ const scenarioPayload = {
337
375
  ...basePayload,
338
- active: scenario.active || false
376
+ active: scenario.status?.active ?? false,
339
377
  };
340
- default:
341
- return basePayload;
378
+ return scenarioPayload;
379
+ }
380
+ default: {
381
+ const unknownPayload = {
382
+ ...basePayload,
383
+ active: false,
384
+ };
385
+ return unknownPayload;
386
+ }
342
387
  }
343
388
  }
344
- // Metodo per disconnettere MQTT
345
389
  disconnect() {
346
390
  if (this.client) {
347
391
  this.client.end();
348
- this.log.info('📴 MQTT: Disconnesso');
392
+ this.log.info('MQTT: Disconnected');
349
393
  }
350
394
  }
351
395
  }
@@ -1 +1 @@
1
- {"version":3,"file":"mqtt-bridge.js","sourceRoot":"","sources":["../src/mqtt-bridge.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mqtt-bridge.js","sourceRoot":"","sources":["../src/mqtt-bridge.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,20 @@
1
1
  import type { API, Characteristic, DynamicPlatformPlugin, Logger, PlatformAccessory, PlatformConfig, Service } from 'homebridge';
2
2
  import { KseniaWebSocketClient } from './websocket-client';
3
- import { KseniaDevice } from './types';
3
+ import type { KseniaDevice, MqttConfig, RoomMappingConfig } from './types';
4
4
  import { MqttBridge } from './mqtt-bridge';
5
+ import { LightAccessory } from './accessories/light-accessory';
6
+ import { CoverAccessory } from './accessories/cover-accessory';
7
+ import { SensorAccessory } from './accessories/sensor-accessory';
8
+ import { ZoneAccessory } from './accessories/zone-accessory';
9
+ import { ThermostatAccessory } from './accessories/thermostat-accessory';
10
+ import { ScenarioAccessory } from './accessories/scenario-accessory';
11
+ /**
12
+ * Union type for all accessory handlers
13
+ */
14
+ export type AccessoryHandler = LightAccessory | CoverAccessory | SensorAccessory | ZoneAccessory | ThermostatAccessory | ScenarioAccessory;
15
+ /**
16
+ * Platform configuration interface
17
+ */
5
18
  export interface Lares4Config extends PlatformConfig {
6
19
  ip?: string;
7
20
  sender?: string;
@@ -17,18 +30,10 @@ export interface Lares4Config extends PlatformConfig {
17
30
  excludeSensors?: string[];
18
31
  excludeScenarios?: string[];
19
32
  customNames?: {
20
- zones?: {
21
- [id: string]: string;
22
- };
23
- outputs?: {
24
- [id: string]: string;
25
- };
26
- sensors?: {
27
- [id: string]: string;
28
- };
29
- scenarios?: {
30
- [id: string]: string;
31
- };
33
+ zones?: Record<string, string>;
34
+ outputs?: Record<string, string>;
35
+ sensors?: Record<string, string>;
36
+ scenarios?: Record<string, string>;
32
37
  };
33
38
  scenarioAutoOffDelay?: number;
34
39
  coverStepSize?: number;
@@ -39,28 +44,12 @@ export interface Lares4Config extends PlatformConfig {
39
44
  step?: number;
40
45
  };
41
46
  devicesSummaryDelay?: number;
42
- mqtt?: {
43
- enabled: boolean;
44
- broker: string;
45
- port?: number;
46
- username?: string;
47
- password?: string;
48
- clientId?: string;
49
- topicPrefix?: string;
50
- qos?: 0 | 1 | 2;
51
- retain?: boolean;
52
- };
53
- roomMapping?: {
54
- enabled: boolean;
55
- rooms?: Array<{
56
- roomName: string;
57
- devices?: Array<{
58
- deviceId: string;
59
- deviceName?: string;
60
- }>;
61
- }>;
62
- };
47
+ mqtt?: MqttConfig;
48
+ roomMapping?: RoomMappingConfig;
63
49
  }
50
+ /**
51
+ * Main platform class implementing DynamicPlatformPlugin
52
+ */
64
53
  export declare class Lares4Platform implements DynamicPlatformPlugin {
65
54
  readonly log: Logger;
66
55
  readonly config: Lares4Config;
@@ -69,11 +58,11 @@ export declare class Lares4Platform implements DynamicPlatformPlugin {
69
58
  readonly Characteristic: typeof Characteristic;
70
59
  readonly accessories: Map<string, PlatformAccessory>;
71
60
  readonly discoveredCacheUUIDs: string[];
72
- readonly accessoryHandlers: Map<string, any>;
61
+ readonly accessoryHandlers: Map<string, AccessoryHandler>;
73
62
  wsClient?: KseniaWebSocketClient;
74
63
  mqttBridge?: MqttBridge;
75
- private discoveredDevices;
76
- private devicesFilePath;
64
+ private readonly discoveredDevices;
65
+ private readonly devicesFilePath;
77
66
  private summaryTimeout?;
78
67
  constructor(log: Logger, config: Lares4Config, api: API);
79
68
  private initializeLares4;
@@ -1 +1 @@
1
- {"version":3,"file":"platform.d.ts","sourceRoot":"","sources":["../src/platform.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"platform.d.ts","sourceRoot":"","sources":["../src/platform.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACR,GAAG,EACH,cAAc,EACd,qBAAqB,EACrB,MAAM,EACN,iBAAiB,EACjB,cAAc,EACd,OAAO,EACV,MAAM,YAAY,CAAC;AAKpB,OAAO,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAC3D,OAAO,KAAK,EACR,YAAY,EAOZ,UAAU,EACV,iBAAiB,EACpB,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAC/D,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAC/D,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AACjE,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAC7D,OAAO,EAAE,mBAAmB,EAAE,MAAM,oCAAoC,CAAC;AACzE,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AAErE;;GAEG;AACH,MAAM,MAAM,gBAAgB,GACtB,cAAc,GACd,cAAc,GACd,eAAe,GACf,aAAa,GACb,mBAAmB,GACnB,iBAAiB,CAAC;AAExB;;GAEG;AACH,MAAM,WAAW,YAAa,SAAQ,cAAc;IAChD,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC5B,WAAW,CAAC,EAAE;QACV,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAC/B,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACjC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACjC,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;KACtC,CAAC;IACF,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,mBAAmB,CAAC,EAAE;QAClB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,GAAG,CAAC,EAAE,MAAM,CAAC;QACb,GAAG,CAAC,EAAE,MAAM,CAAC;QACb,IAAI,CAAC,EAAE,MAAM,CAAC;KACjB,CAAC;IACF,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,WAAW,CAAC,EAAE,iBAAiB,CAAC;CACnC;AAqBD;;GAEG;AACH,qBAAa,cAAe,YAAW,qBAAqB;aAiBpC,GAAG,EAAE,MAAM;aACX,MAAM,EAAE,YAAY;aACpB,GAAG,EAAE,GAAG;IAlB5B,SAAgB,OAAO,EAAE,OAAO,OAAO,CAAC;IACxC,SAAgB,cAAc,EAAE,OAAO,cAAc,CAAC;IAEtD,SAAgB,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAa;IACxE,SAAgB,oBAAoB,EAAE,MAAM,EAAE,CAAM;IAEpD,SAAgB,iBAAiB,EAAE,GAAG,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAa;IAEtE,QAAQ,CAAC,EAAE,qBAAqB,CAAC;IACjC,UAAU,CAAC,EAAE,UAAU,CAAC;IAE/B,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAwC;IAC1E,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAS;IACzC,OAAO,CAAC,cAAc,CAAC,CAAiB;gBAGpB,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,YAAY,EACpB,GAAG,EAAE,GAAG;YAmCd,gBAAgB;IA4C9B,OAAO,CAAC,sBAAsB;IAoB9B,OAAO,CAAC,eAAe;IA+DvB,OAAO,CAAC,mBAAmB;IA6D3B,OAAO,CAAC,0BAA0B;IA4DlC,OAAO,CAAC,wBAAwB;IAgDhC,OAAO,CAAC,mBAAmB;IA+B3B,OAAO,CAAC,aAAa;IA2BrB,OAAO,CAAC,wBAAwB;IASzB,kBAAkB,CAAC,SAAS,EAAE,iBAAiB,GAAG,IAAI;IAKtD,YAAY,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI;IAkBxC,eAAe,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI;IAgClD,OAAO,CAAC,sBAAsB;IA4CvB,eAAe,CAAC,SAAS,EAAE,iBAAiB,GAAG,IAAI;CAK7D"}