homebridge-plugin-klares4 1.1.1-beta.4 → 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 +53 -7
  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
@@ -1,28 +1,34 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.LightAccessory = void 0;
4
+ /**
5
+ * Light Accessory Handler
6
+ * Handles HomeKit Lightbulb service for Ksenia Lares4 lights
7
+ */
4
8
  class LightAccessory {
5
9
  constructor(platform, accessory) {
6
10
  this.platform = platform;
7
11
  this.accessory = accessory;
8
12
  this.device = accessory.context.device;
9
- // Imposta le informazioni dell'accessorio
10
- this.accessory.getService(this.platform.Service.AccessoryInformation)
11
- .setCharacteristic(this.platform.Characteristic.Manufacturer, 'Ksenia')
12
- .setCharacteristic(this.platform.Characteristic.Model, 'Lares4 Light')
13
- .setCharacteristic(this.platform.Characteristic.SerialNumber, this.device.id)
14
- .setCharacteristic(this.platform.Characteristic.FirmwareRevision, '2.0.0');
15
- // Ottieni o crea il servizio Lightbulb
16
- this.service = this.accessory.getService(this.platform.Service.Lightbulb)
17
- || this.accessory.addService(this.platform.Service.Lightbulb);
13
+ const accessoryInfoService = this.accessory.getService(this.platform.Service.AccessoryInformation);
14
+ if (accessoryInfoService) {
15
+ accessoryInfoService
16
+ .setCharacteristic(this.platform.Characteristic.Manufacturer, 'Ksenia')
17
+ .setCharacteristic(this.platform.Characteristic.Model, 'Lares4 Light')
18
+ .setCharacteristic(this.platform.Characteristic.SerialNumber, this.device.id)
19
+ .setCharacteristic(this.platform.Characteristic.FirmwareRevision, '2.0.0');
20
+ }
21
+ this.service =
22
+ this.accessory.getService(this.platform.Service.Lightbulb) ??
23
+ this.accessory.addService(this.platform.Service.Lightbulb);
18
24
  this.service.setCharacteristic(this.platform.Characteristic.Name, this.device.name);
19
- // Imposta gli handlers per le caratteristiche
20
- this.service.getCharacteristic(this.platform.Characteristic.On)
25
+ this.service
26
+ .getCharacteristic(this.platform.Characteristic.On)
21
27
  .onSet(this.setOn.bind(this))
22
28
  .onGet(this.getOn.bind(this));
23
- // Se la luce è dimmerabile, aggiungi la caratteristica Brightness
24
29
  if (this.device.status?.dimmable) {
25
- this.service.getCharacteristic(this.platform.Characteristic.Brightness)
30
+ this.service
31
+ .getCharacteristic(this.platform.Characteristic.Brightness)
26
32
  .onSet(this.setBrightness.bind(this))
27
33
  .onGet(this.getBrightness.bind(this));
28
34
  }
@@ -32,15 +38,15 @@ class LightAccessory {
32
38
  try {
33
39
  await this.platform.wsClient?.switchLight(this.device.id, on);
34
40
  this.device.status.on = on;
35
- this.platform.log.info(`💡 ${this.device.name}: ${on ? 'Accesa' : 'Spenta'}`);
41
+ this.platform.log.info(`${this.device.name}: ${on ? 'On' : 'Off'}`);
36
42
  }
37
43
  catch (error) {
38
- this.platform.log.error(`❌ Errore controllo luce ${this.device.name}:`, error);
44
+ this.platform.log.error(`Light control error ${this.device.name}:`, error instanceof Error ? error.message : String(error));
39
45
  throw new this.platform.api.hap.HapStatusError(-70402 /* this.platform.api.hap.HAPStatus.SERVICE_COMMUNICATION_FAILURE */);
40
46
  }
41
47
  }
42
48
  async getOn() {
43
- return this.device.status?.on || false;
49
+ return this.device.status?.on ?? false;
44
50
  }
45
51
  async setBrightness(value) {
46
52
  const brightness = value;
@@ -51,27 +57,24 @@ class LightAccessory {
51
57
  await this.platform.wsClient?.dimLight(this.device.id, brightness);
52
58
  this.device.status.brightness = brightness;
53
59
  this.device.status.on = brightness > 0;
54
- // Aggiorna anche la caratteristica On
55
60
  this.service.updateCharacteristic(this.platform.Characteristic.On, this.device.status.on);
56
- this.platform.log.info(`💡 ${this.device.name}: Luminosità ${brightness}%`);
61
+ this.platform.log.info(`${this.device.name}: Brightness ${brightness}%`);
57
62
  }
58
63
  catch (error) {
59
- this.platform.log.error(`❌ Errore dimmer luce ${this.device.name}:`, error);
64
+ this.platform.log.error(`Dimmer error ${this.device.name}:`, error instanceof Error ? error.message : String(error));
60
65
  throw new this.platform.api.hap.HapStatusError(-70402 /* this.platform.api.hap.HAPStatus.SERVICE_COMMUNICATION_FAILURE */);
61
66
  }
62
67
  }
63
68
  async getBrightness() {
64
- return this.device.status?.brightness || (this.device.status?.on ? 100 : 0);
69
+ return this.device.status?.brightness ?? (this.device.status?.on ? 100 : 0);
65
70
  }
66
- // Metodo per aggiornare lo stato dall'esterno (aggiornamenti real-time)
67
71
  updateStatus(newDevice) {
68
72
  this.device = newDevice;
69
- // Aggiorna le caratteristiche
70
- this.service.updateCharacteristic(this.platform.Characteristic.On, this.device.status?.on || false);
73
+ this.service.updateCharacteristic(this.platform.Characteristic.On, this.device.status?.on ?? false);
71
74
  if (this.device.status?.dimmable && this.device.status?.brightness !== undefined) {
72
75
  this.service.updateCharacteristic(this.platform.Characteristic.Brightness, this.device.status.brightness);
73
76
  }
74
- this.platform.log.debug(`🔄 Aggiornato stato luce ${this.device.name}: ${this.device.status?.on ? 'ON' : 'OFF'}`);
77
+ this.platform.log.debug(`Updated light state ${this.device.name}: ${this.device.status?.on ? 'ON' : 'OFF'}`);
75
78
  }
76
79
  }
77
80
  exports.LightAccessory = LightAccessory;
@@ -1 +1 @@
1
- {"version":3,"file":"light-accessory.js","sourceRoot":"","sources":["../../src/accessories/light-accessory.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"light-accessory.js","sourceRoot":"","sources":["../../src/accessories/light-accessory.ts"],"names":[],"mappings":"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"}
@@ -1,12 +1,16 @@
1
1
  import type { PlatformAccessory, CharacteristicValue } from 'homebridge';
2
- import { Lares4Platform } from '../platform';
3
- import { KseniaDevice } from '../types';
2
+ import type { Lares4Platform } from '../platform';
3
+ import type { KseniaScenario } from '../types';
4
+ /**
5
+ * Scenario Accessory Handler
6
+ * Handles HomeKit Switch service for Ksenia Lares4 scenarios
7
+ */
4
8
  export declare class ScenarioAccessory {
5
9
  private readonly platform;
6
10
  private readonly accessory;
7
- private readonly device;
8
11
  private service;
9
- constructor(platform: Lares4Platform, accessory: PlatformAccessory, device: KseniaDevice);
12
+ readonly device: KseniaScenario;
13
+ constructor(platform: Lares4Platform, accessory: PlatformAccessory, device: KseniaScenario);
10
14
  setOn(value: CharacteristicValue): Promise<void>;
11
15
  getOn(): Promise<CharacteristicValue>;
12
16
  }
@@ -1 +1 @@
1
- {"version":3,"file":"scenario-accessory.d.ts","sourceRoot":"","sources":["../../src/accessories/scenario-accessory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAER,iBAAiB,EACjB,mBAAmB,EACtB,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAExC,qBAAa,iBAAiB;IAItB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,MAAM;IAL3B,OAAO,CAAC,OAAO,CAAU;gBAGJ,QAAQ,EAAE,cAAc,EACxB,SAAS,EAAE,iBAAiB,EAC5B,MAAM,EAAE,YAAY;IAqBnC,KAAK,CAAC,KAAK,EAAE,mBAAmB;IA4BhC,KAAK,IAAI,OAAO,CAAC,mBAAmB,CAAC;CAI9C"}
1
+ {"version":3,"file":"scenario-accessory.d.ts","sourceRoot":"","sources":["../../src/accessories/scenario-accessory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAW,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAElF,OAAO,KAAK,EAAE,cAAc,EAAgB,MAAM,aAAa,CAAC;AAChE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAE/C;;;GAGG;AACH,qBAAa,iBAAiB;IAKtB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,SAAS;IAL9B,OAAO,CAAC,OAAO,CAAU;IACzB,SAAgB,MAAM,EAAE,cAAc,CAAC;gBAGlB,QAAQ,EAAE,cAAc,EACxB,SAAS,EAAE,iBAAiB,EAC7C,MAAM,EAAE,cAAc;IA0Bb,KAAK,CAAC,KAAK,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC;IAkChD,KAAK,IAAI,OAAO,CAAC,mBAAmB,CAAC;CAIrD"}
@@ -1,23 +1,28 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.ScenarioAccessory = void 0;
4
+ /**
5
+ * Scenario Accessory Handler
6
+ * Handles HomeKit Switch service for Ksenia Lares4 scenarios
7
+ */
4
8
  class ScenarioAccessory {
5
9
  constructor(platform, accessory, device) {
6
10
  this.platform = platform;
7
11
  this.accessory = accessory;
8
12
  this.device = device;
9
- // Imposta le informazioni dell'accessorio
10
- this.accessory.getService(this.platform.Service.AccessoryInformation)
11
- .setCharacteristic(this.platform.Characteristic.Manufacturer, 'Ksenia')
12
- .setCharacteristic(this.platform.Characteristic.Model, 'Lares4 Scenario')
13
- .setCharacteristic(this.platform.Characteristic.SerialNumber, device.id);
14
- // Ottieni il servizio Switch o crealo se non esiste
15
- this.service = this.accessory.getService(this.platform.Service.Switch) ||
16
- this.accessory.addService(this.platform.Service.Switch);
17
- // Imposta il nome del servizio
13
+ const accessoryInfoService = this.accessory.getService(this.platform.Service.AccessoryInformation);
14
+ if (accessoryInfoService) {
15
+ accessoryInfoService
16
+ .setCharacteristic(this.platform.Characteristic.Manufacturer, 'Ksenia')
17
+ .setCharacteristic(this.platform.Characteristic.Model, 'Lares4 Scenario')
18
+ .setCharacteristic(this.platform.Characteristic.SerialNumber, device.id);
19
+ }
20
+ this.service =
21
+ this.accessory.getService(this.platform.Service.Switch) ??
22
+ this.accessory.addService(this.platform.Service.Switch);
18
23
  this.service.setCharacteristic(this.platform.Characteristic.Name, device.name);
19
- // Registra gli handler per le caratteristiche
20
- this.service.getCharacteristic(this.platform.Characteristic.On)
24
+ this.service
25
+ .getCharacteristic(this.platform.Characteristic.On)
21
26
  .onSet(this.setOn.bind(this))
22
27
  .onGet(this.getOn.bind(this));
23
28
  }
@@ -26,28 +31,27 @@ class ScenarioAccessory {
26
31
  if (isOn) {
27
32
  try {
28
33
  if (!this.platform.wsClient) {
29
- throw new Error('WebSocket client non inizializzato');
34
+ throw new Error('WebSocket client not initialized');
30
35
  }
31
36
  await this.platform.wsClient.triggerScenario(this.device.id);
32
- this.platform.log.info(`🎬 Scenario ${this.device.name} eseguito`);
33
- // Spegni automaticamente dopo timeout configurabile (gli scenari sono momentanei)
34
- const autoOffDelay = this.platform.config.scenarioAutoOffDelay || 500;
37
+ this.platform.log.info(`Scenario ${this.device.name} executed`);
38
+ const autoOffDelay = this.platform.config.scenarioAutoOffDelay ?? 500;
35
39
  setTimeout(() => {
36
40
  if (this.service) {
37
41
  this.service.updateCharacteristic(this.platform.Characteristic.On, false);
38
- this.platform.log.debug(`🔄 Scenario ${this.device.name} automaticamente spento dopo ${autoOffDelay}ms`);
42
+ this.platform.log.debug(`Scenario ${this.device.name} automatically turned off after ${autoOffDelay}ms`);
39
43
  }
40
44
  }, autoOffDelay);
41
45
  }
42
46
  catch (error) {
43
- this.platform.log.error(`❌ Errore esecuzione scenario ${this.device.name}:`, error);
47
+ this.platform.log.error(`Scenario execution error ${this.device.name}:`, error instanceof Error ? error.message : String(error));
44
48
  throw new this.platform.api.hap.HapStatusError(-70402 /* this.platform.api.hap.HAPStatus.SERVICE_COMMUNICATION_FAILURE */);
45
49
  }
46
50
  }
47
- // Non facciamo nulla per "spegnere" uno scenario
51
+ // Do nothing for "off" - scenarios are momentary
48
52
  }
49
53
  async getOn() {
50
- // Gli scenari non hanno uno stato persistente, tornano sempre false
54
+ // Scenarios don't have persistent state, always return false
51
55
  return false;
52
56
  }
53
57
  }
@@ -1 +1 @@
1
- {"version":3,"file":"scenario-accessory.js","sourceRoot":"","sources":["../../src/accessories/scenario-accessory.ts"],"names":[],"mappings":";;;AASA,MAAa,iBAAiB;IAG1B,YACqB,QAAwB,EACxB,SAA4B,EAC5B,MAAoB;QAFpB,aAAQ,GAAR,QAAQ,CAAgB;QACxB,cAAS,GAAT,SAAS,CAAmB;QAC5B,WAAM,GAAN,MAAM,CAAc;QAErC,0CAA0C;QAC1C,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,oBAAoB,CAAE;aACjE,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,YAAY,EAAE,QAAQ,CAAC;aACtE,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,KAAK,EAAE,iBAAiB,CAAC;aACxE,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,YAAY,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC;QAE7E,oDAAoD;QACpD,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC;YAClE,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAE5D,+BAA+B;QAC/B,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;QAE/E,8CAA8C;QAC9C,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC;aAC1D,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;aAC5B,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IACtC,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,KAA0B;QAClC,MAAM,IAAI,GAAG,KAAgB,CAAC;QAE9B,IAAI,IAAI,EAAE,CAAC;YACP,IAAI,CAAC;gBACD,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC;oBAC1B,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;gBAC1D,CAAC;gBACD,MAAM,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;gBAC7D,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,eAAe,IAAI,CAAC,MAAM,CAAC,IAAI,WAAW,CAAC,CAAC;gBAEnE,kFAAkF;gBAClF,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,oBAAoB,IAAI,GAAG,CAAC;gBACtE,UAAU,CAAC,GAAG,EAAE;oBACZ,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;wBACf,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;wBAC1E,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,eAAe,IAAI,CAAC,MAAM,CAAC,IAAI,gCAAgC,YAAY,IAAI,CAAC,CAAC;oBAC7G,CAAC;gBACL,CAAC,EAAE,YAAY,CAAC,CAAC;YAErB,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACb,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,gCAAgC,IAAI,CAAC,MAAM,CAAC,IAAI,GAAG,EAAE,KAAK,CAAC,CAAC;gBACpF,MAAM,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,cAAc,4EAA+D,CAAC;YAClH,CAAC;QACL,CAAC;QACD,iDAAiD;IACrD,CAAC;IAED,KAAK,CAAC,KAAK;QACP,oEAAoE;QACpE,OAAO,KAAK,CAAC;IACjB,CAAC;CACJ;AA3DD,8CA2DC"}
1
+ {"version":3,"file":"scenario-accessory.js","sourceRoot":"","sources":["../../src/accessories/scenario-accessory.ts"],"names":[],"mappings":"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"}
@@ -1,11 +1,15 @@
1
1
  import type { CharacteristicValue, PlatformAccessory } from 'homebridge';
2
2
  import type { Lares4Platform } from '../platform';
3
3
  import type { KseniaSensor } from '../types';
4
+ /**
5
+ * Sensor Accessory Handler
6
+ * Handles HomeKit sensor services for Ksenia Lares4 sensors
7
+ */
4
8
  export declare class SensorAccessory {
5
9
  private readonly platform;
6
10
  private readonly accessory;
7
11
  private service;
8
- private device;
12
+ device: KseniaSensor;
9
13
  constructor(platform: Lares4Platform, accessory: PlatformAccessory);
10
14
  private createSensorService;
11
15
  private createTemperatureSensor;
@@ -1 +1 @@
1
- {"version":3,"file":"sensor-accessory.d.ts","sourceRoot":"","sources":["../../src/accessories/sensor-accessory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,iBAAiB,EAAW,MAAM,YAAY,CAAC;AAClF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAE7C,qBAAa,eAAe;IAKpB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,SAAS;IAL9B,OAAO,CAAC,OAAO,CAAU;IACzB,OAAO,CAAC,MAAM,CAAe;gBAGR,QAAQ,EAAE,cAAc,EACxB,SAAS,EAAE,iBAAiB;IAgBjD,OAAO,CAAC,mBAAmB;IAkB3B,OAAO,CAAC,uBAAuB;IAU/B,OAAO,CAAC,oBAAoB;IAU5B,OAAO,CAAC,iBAAiB;IAUzB,OAAO,CAAC,kBAAkB;IAU1B,OAAO,CAAC,mBAAmB;IAUrB,qBAAqB,IAAI,OAAO,CAAC,mBAAmB,CAAC;IAMrD,kBAAkB,IAAI,OAAO,CAAC,mBAAmB,CAAC;IAMlD,oBAAoB,IAAI,OAAO,CAAC,mBAAmB,CAAC;IAMpD,iBAAiB,IAAI,OAAO,CAAC,mBAAmB,CAAC;IAIjD,eAAe,IAAI,OAAO,CAAC,mBAAmB,CAAC;IAKrD,OAAO,CAAC,kBAAkB;IAY1B,YAAY,CAAC,SAAS,EAAE,YAAY,GAAG,IAAI;CAuC9C"}
1
+ {"version":3,"file":"sensor-accessory.d.ts","sourceRoot":"","sources":["../../src/accessories/sensor-accessory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,iBAAiB,EAAW,MAAM,YAAY,CAAC;AAClF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,KAAK,EAAE,YAAY,EAAgB,MAAM,UAAU,CAAC;AAE3D;;;GAGG;AACH,qBAAa,eAAe;IAKpB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,SAAS;IAL9B,OAAO,CAAC,OAAO,CAAU;IAClB,MAAM,EAAE,YAAY,CAAC;gBAGP,QAAQ,EAAE,cAAc,EACxB,SAAS,EAAE,iBAAiB;IAsBjD,OAAO,CAAC,mBAAmB;IAiB3B,OAAO,CAAC,uBAAuB;IAY/B,OAAO,CAAC,oBAAoB;IAY5B,OAAO,CAAC,iBAAiB;IAYzB,OAAO,CAAC,kBAAkB;IAY1B,OAAO,CAAC,mBAAmB;IAYd,qBAAqB,IAAI,OAAO,CAAC,mBAAmB,CAAC;IAMrD,kBAAkB,IAAI,OAAO,CAAC,mBAAmB,CAAC;IAMlD,oBAAoB,IAAI,OAAO,CAAC,mBAAmB,CAAC;IAMpD,iBAAiB,IAAI,OAAO,CAAC,mBAAmB,CAAC;IAIjD,eAAe,IAAI,OAAO,CAAC,mBAAmB,CAAC;IAK5D,OAAO,CAAC,kBAAkB;IAiBnB,YAAY,CAAC,SAAS,EAAE,YAAY,GAAG,IAAI;CAwCrD"}
@@ -1,18 +1,23 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.SensorAccessory = void 0;
4
+ /**
5
+ * Sensor Accessory Handler
6
+ * Handles HomeKit sensor services for Ksenia Lares4 sensors
7
+ */
4
8
  class SensorAccessory {
5
9
  constructor(platform, accessory) {
6
10
  this.platform = platform;
7
11
  this.accessory = accessory;
8
12
  this.device = accessory.context.device;
9
- // Imposta le informazioni dell'accessorio
10
- this.accessory.getService(this.platform.Service.AccessoryInformation)
11
- .setCharacteristic(this.platform.Characteristic.Manufacturer, 'Ksenia')
12
- .setCharacteristic(this.platform.Characteristic.Model, `Lares4 ${this.getSensorTypeLabel()}`)
13
- .setCharacteristic(this.platform.Characteristic.SerialNumber, this.device.id)
14
- .setCharacteristic(this.platform.Characteristic.FirmwareRevision, '2.0.0');
15
- // Crea il servizio appropriato in base al tipo di sensore
13
+ const accessoryInfoService = this.accessory.getService(this.platform.Service.AccessoryInformation);
14
+ if (accessoryInfoService) {
15
+ accessoryInfoService
16
+ .setCharacteristic(this.platform.Characteristic.Manufacturer, 'Ksenia')
17
+ .setCharacteristic(this.platform.Characteristic.Model, `Lares4 ${this.getSensorTypeLabel()}`)
18
+ .setCharacteristic(this.platform.Characteristic.SerialNumber, this.device.id)
19
+ .setCharacteristic(this.platform.Characteristic.FirmwareRevision, '2.0.0');
20
+ }
16
21
  this.service = this.createSensorService();
17
22
  this.service.setCharacteristic(this.platform.Characteristic.Name, this.device.name);
18
23
  }
@@ -29,81 +34,89 @@ class SensorAccessory {
29
34
  case 'contact':
30
35
  return this.createContactSensor();
31
36
  default:
32
- // Default a temperature sensor
33
37
  return this.createTemperatureSensor();
34
38
  }
35
39
  }
36
40
  createTemperatureSensor() {
37
- const service = this.accessory.getService(this.platform.Service.TemperatureSensor)
38
- || this.accessory.addService(this.platform.Service.TemperatureSensor);
39
- service.getCharacteristic(this.platform.Characteristic.CurrentTemperature)
41
+ const service = this.accessory.getService(this.platform.Service.TemperatureSensor) ??
42
+ this.accessory.addService(this.platform.Service.TemperatureSensor);
43
+ service
44
+ .getCharacteristic(this.platform.Characteristic.CurrentTemperature)
40
45
  .onGet(this.getCurrentTemperature.bind(this));
41
46
  return service;
42
47
  }
43
48
  createHumiditySensor() {
44
- const service = this.accessory.getService(this.platform.Service.HumiditySensor)
45
- || this.accessory.addService(this.platform.Service.HumiditySensor);
46
- service.getCharacteristic(this.platform.Characteristic.CurrentRelativeHumidity)
49
+ const service = this.accessory.getService(this.platform.Service.HumiditySensor) ??
50
+ this.accessory.addService(this.platform.Service.HumiditySensor);
51
+ service
52
+ .getCharacteristic(this.platform.Characteristic.CurrentRelativeHumidity)
47
53
  .onGet(this.getCurrentHumidity.bind(this));
48
54
  return service;
49
55
  }
50
56
  createLightSensor() {
51
- const service = this.accessory.getService(this.platform.Service.LightSensor)
52
- || this.accessory.addService(this.platform.Service.LightSensor);
53
- service.getCharacteristic(this.platform.Characteristic.CurrentAmbientLightLevel)
57
+ const service = this.accessory.getService(this.platform.Service.LightSensor) ??
58
+ this.accessory.addService(this.platform.Service.LightSensor);
59
+ service
60
+ .getCharacteristic(this.platform.Characteristic.CurrentAmbientLightLevel)
54
61
  .onGet(this.getCurrentLightLevel.bind(this));
55
62
  return service;
56
63
  }
57
64
  createMotionSensor() {
58
- const service = this.accessory.getService(this.platform.Service.MotionSensor)
59
- || this.accessory.addService(this.platform.Service.MotionSensor);
60
- service.getCharacteristic(this.platform.Characteristic.MotionDetected)
65
+ const service = this.accessory.getService(this.platform.Service.MotionSensor) ??
66
+ this.accessory.addService(this.platform.Service.MotionSensor);
67
+ service
68
+ .getCharacteristic(this.platform.Characteristic.MotionDetected)
61
69
  .onGet(this.getMotionDetected.bind(this));
62
70
  return service;
63
71
  }
64
72
  createContactSensor() {
65
- const service = this.accessory.getService(this.platform.Service.ContactSensor)
66
- || this.accessory.addService(this.platform.Service.ContactSensor);
67
- service.getCharacteristic(this.platform.Characteristic.ContactSensorState)
73
+ const service = this.accessory.getService(this.platform.Service.ContactSensor) ??
74
+ this.accessory.addService(this.platform.Service.ContactSensor);
75
+ service
76
+ .getCharacteristic(this.platform.Characteristic.ContactSensorState)
68
77
  .onGet(this.getContactState.bind(this));
69
78
  return service;
70
79
  }
71
80
  async getCurrentTemperature() {
72
81
  const value = this.device.status.value;
73
- // HomeKit richiede temperature tra -270 e 100°C
82
+ // HomeKit requires temperature between -270 and 100C
74
83
  return Math.max(-270, Math.min(100, value));
75
84
  }
76
85
  async getCurrentHumidity() {
77
86
  const value = this.device.status.value;
78
- // HomeKit richiede umidità tra 0 e 100%
87
+ // HomeKit requires humidity between 0 and 100%
79
88
  return Math.max(0, Math.min(100, value));
80
89
  }
81
90
  async getCurrentLightLevel() {
82
91
  const value = this.device.status.value;
83
- // HomeKit richiede lux tra 0.0001 e 100000
92
+ // HomeKit requires lux between 0.0001 and 100000
84
93
  return Math.max(0.0001, Math.min(100000, value));
85
94
  }
86
95
  async getMotionDetected() {
87
96
  return this.device.status.value > 0;
88
97
  }
89
98
  async getContactState() {
90
- // 0 = contact detected (chiuso), 1 = contact not detected (aperto)
99
+ // 0 = contact detected (closed), 1 = contact not detected (open)
91
100
  return this.device.status.value > 0 ? 1 : 0;
92
101
  }
93
102
  getSensorTypeLabel() {
94
103
  switch (this.device.status.sensorType) {
95
- case 'temperature': return 'Temperature Sensor';
96
- case 'humidity': return 'Humidity Sensor';
97
- case 'light': return 'Light Sensor';
98
- case 'motion': return 'Motion Sensor';
99
- case 'contact': return 'Contact Sensor';
100
- default: return 'Sensor';
104
+ case 'temperature':
105
+ return 'Temperature Sensor';
106
+ case 'humidity':
107
+ return 'Humidity Sensor';
108
+ case 'light':
109
+ return 'Light Sensor';
110
+ case 'motion':
111
+ return 'Motion Sensor';
112
+ case 'contact':
113
+ return 'Contact Sensor';
114
+ default:
115
+ return 'Sensor';
101
116
  }
102
117
  }
103
- // Metodo per aggiornare lo stato dall'esterno (aggiornamenti real-time)
104
118
  updateStatus(newDevice) {
105
119
  this.device = newDevice;
106
- // Aggiorna la caratteristica appropriata in base al tipo di sensore
107
120
  switch (this.device.status.sensorType) {
108
121
  case 'temperature':
109
122
  this.service.updateCharacteristic(this.platform.Characteristic.CurrentTemperature, Math.max(-270, Math.min(100, this.device.status.value)));
@@ -121,7 +134,7 @@ class SensorAccessory {
121
134
  this.service.updateCharacteristic(this.platform.Characteristic.ContactSensorState, this.device.status.value > 0 ? 1 : 0);
122
135
  break;
123
136
  }
124
- this.platform.log.debug(`🔄 Aggiornato sensore ${this.device.name}: ${this.device.status.value}${this.device.status.unit || ''}`);
137
+ this.platform.log.debug(`Updated sensor ${this.device.name}: ${this.device.status.value}${this.device.status.unit ?? ''}`);
125
138
  }
126
139
  }
127
140
  exports.SensorAccessory = SensorAccessory;
@@ -1 +1 @@
1
- {"version":3,"file":"sensor-accessory.js","sourceRoot":"","sources":["../../src/accessories/sensor-accessory.ts"],"names":[],"mappings":";;;AAIA,MAAa,eAAe;IAIxB,YACqB,QAAwB,EACxB,SAA4B;QAD5B,aAAQ,GAAR,QAAQ,CAAgB;QACxB,cAAS,GAAT,SAAS,CAAmB;QAE7C,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC,OAAO,CAAC,MAAsB,CAAC;QAEvD,0CAA0C;QAC1C,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,oBAAoB,CAAE;aACjE,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,YAAY,EAAE,QAAQ,CAAC;aACtE,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,KAAK,EAAE,UAAU,IAAI,CAAC,kBAAkB,EAAE,EAAE,CAAC;aAC5F,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,YAAY,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;aAC5E,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,gBAAgB,EAAE,OAAO,CAAC,CAAC;QAE/E,0DAA0D;QAC1D,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAC1C,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACxF,CAAC;IAEO,mBAAmB;QACvB,QAAQ,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;YACpC,KAAK,aAAa;gBACd,OAAO,IAAI,CAAC,uBAAuB,EAAE,CAAC;YAC1C,KAAK,UAAU;gBACX,OAAO,IAAI,CAAC,oBAAoB,EAAE,CAAC;YACvC,KAAK,OAAO;gBACR,OAAO,IAAI,CAAC,iBAAiB,EAAE,CAAC;YACpC,KAAK,QAAQ;gBACT,OAAO,IAAI,CAAC,kBAAkB,EAAE,CAAC;YACrC,KAAK,SAAS;gBACV,OAAO,IAAI,CAAC,mBAAmB,EAAE,CAAC;YACtC;gBACI,+BAA+B;gBAC/B,OAAO,IAAI,CAAC,uBAAuB,EAAE,CAAC;QAC9C,CAAC;IACL,CAAC;IAEO,uBAAuB;QAC3B,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,iBAAiB,CAAC;eAC3E,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC;QAE1E,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,kBAAkB,CAAC;aACrE,KAAK,CAAC,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAElD,OAAO,OAAO,CAAC;IACnB,CAAC;IAEO,oBAAoB;QACxB,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,cAAc,CAAC;eACxE,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;QAEvE,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,uBAAuB,CAAC;aAC1E,KAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAE/C,OAAO,OAAO,CAAC;IACnB,CAAC;IAEO,iBAAiB;QACrB,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,WAAW,CAAC;eACrE,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;QAEpE,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,wBAAwB,CAAC;aAC3E,KAAK,CAAC,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAEjD,OAAO,OAAO,CAAC;IACnB,CAAC;IAEO,kBAAkB;QACtB,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,YAAY,CAAC;eACtE,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;QAErE,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,cAAc,CAAC;aACjE,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAE9C,OAAO,OAAO,CAAC;IACnB,CAAC;IAEO,mBAAmB;QACvB,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,aAAa,CAAC;eACvE,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;QAEtE,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,kBAAkB,CAAC;aACrE,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAE5C,OAAO,OAAO,CAAC;IACnB,CAAC;IAED,KAAK,CAAC,qBAAqB;QACvB,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC;QACvC,gDAAgD;QAChD,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC;IAChD,CAAC;IAED,KAAK,CAAC,kBAAkB;QACpB,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC;QACvC,wCAAwC;QACxC,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC;IAC7C,CAAC;IAED,KAAK,CAAC,oBAAoB;QACtB,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC;QACvC,2CAA2C;QAC3C,OAAO,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC;IACrD,CAAC;IAED,KAAK,CAAC,iBAAiB;QACnB,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC;IACxC,CAAC;IAED,KAAK,CAAC,eAAe;QACjB,mEAAmE;QACnE,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAChD,CAAC;IAEO,kBAAkB;QACtB,QAAQ,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;YACpC,KAAK,aAAa,CAAC,CAAC,OAAO,oBAAoB,CAAC;YAChD,KAAK,UAAU,CAAC,CAAC,OAAO,iBAAiB,CAAC;YAC1C,KAAK,OAAO,CAAC,CAAC,OAAO,cAAc,CAAC;YACpC,KAAK,QAAQ,CAAC,CAAC,OAAO,eAAe,CAAC;YACtC,KAAK,SAAS,CAAC,CAAC,OAAO,gBAAgB,CAAC;YACxC,OAAO,CAAC,CAAC,OAAO,QAAQ,CAAC;QAC7B,CAAC;IACL,CAAC;IAED,wEAAwE;IACxE,YAAY,CAAC,SAAuB;QAChC,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC;QAExB,oEAAoE;QACpE,QAAQ,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;YACpC,KAAK,aAAa;gBACd,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAC7B,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,kBAAkB,EAC/C,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAC1D,CAAC;gBACF,MAAM;YACV,KAAK,UAAU;gBACX,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAC7B,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,uBAAuB,EACpD,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CACvD,CAAC;gBACF,MAAM;YACV,KAAK,OAAO;gBACR,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAC7B,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,wBAAwB,EACrD,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAC/D,CAAC;gBACF,MAAM;YACV,KAAK,QAAQ;gBACT,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAC7B,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,cAAc,EAC3C,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC,CAC/B,CAAC;gBACF,MAAM;YACV,KAAK,SAAS;gBACV,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAC7B,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,kBAAkB,EAC/C,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CACvC,CAAC;gBACF,MAAM;QACd,CAAC;QAED,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,yBAAyB,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,IAAI,EAAE,EAAE,CAAC,CAAC;IACtI,CAAC;CACJ;AAxKD,0CAwKC"}
1
+ {"version":3,"file":"sensor-accessory.js","sourceRoot":"","sources":["../../src/accessories/sensor-accessory.ts"],"names":[],"mappings":";;;AAIA;;;GAGG;AACH,MAAa,eAAe;IAIxB,YACqB,QAAwB,EACxB,SAA4B;QAD5B,aAAQ,GAAR,QAAQ,CAAgB;QACxB,cAAS,GAAT,SAAS,CAAmB;QAE7C,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC,OAAO,CAAC,MAAsB,CAAC;QAEvD,MAAM,oBAAoB,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAClD,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,oBAAoB,CAC7C,CAAC;QACF,IAAI,oBAAoB,EAAE,CAAC;YACvB,oBAAoB;iBACf,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,YAAY,EAAE,QAAQ,CAAC;iBACtE,iBAAiB,CACd,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,KAAK,EAClC,UAAU,IAAI,CAAC,kBAAkB,EAAE,EAAE,CACxC;iBACA,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,YAAY,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;iBAC5E,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,gBAAgB,EAAE,OAAO,CAAC,CAAC;QACnF,CAAC;QAED,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAC1C,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACxF,CAAC;IAEO,mBAAmB;QACvB,QAAQ,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;YACpC,KAAK,aAAa;gBACd,OAAO,IAAI,CAAC,uBAAuB,EAAE,CAAC;YAC1C,KAAK,UAAU;gBACX,OAAO,IAAI,CAAC,oBAAoB,EAAE,CAAC;YACvC,KAAK,OAAO;gBACR,OAAO,IAAI,CAAC,iBAAiB,EAAE,CAAC;YACpC,KAAK,QAAQ;gBACT,OAAO,IAAI,CAAC,kBAAkB,EAAE,CAAC;YACrC,KAAK,SAAS;gBACV,OAAO,IAAI,CAAC,mBAAmB,EAAE,CAAC;YACtC;gBACI,OAAO,IAAI,CAAC,uBAAuB,EAAE,CAAC;QAC9C,CAAC;IACL,CAAC;IAEO,uBAAuB;QAC3B,MAAM,OAAO,GACT,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,iBAAiB,CAAC;YAClE,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC;QAEvE,OAAO;aACF,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,kBAAkB,CAAC;aAClE,KAAK,CAAC,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAElD,OAAO,OAAO,CAAC;IACnB,CAAC;IAEO,oBAAoB;QACxB,MAAM,OAAO,GACT,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,cAAc,CAAC;YAC/D,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;QAEpE,OAAO;aACF,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,uBAAuB,CAAC;aACvE,KAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAE/C,OAAO,OAAO,CAAC;IACnB,CAAC;IAEO,iBAAiB;QACrB,MAAM,OAAO,GACT,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,WAAW,CAAC;YAC5D,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;QAEjE,OAAO;aACF,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,wBAAwB,CAAC;aACxE,KAAK,CAAC,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAEjD,OAAO,OAAO,CAAC;IACnB,CAAC;IAEO,kBAAkB;QACtB,MAAM,OAAO,GACT,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,YAAY,CAAC;YAC7D,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;QAElE,OAAO;aACF,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,cAAc,CAAC;aAC9D,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAE9C,OAAO,OAAO,CAAC;IACnB,CAAC;IAEO,mBAAmB;QACvB,MAAM,OAAO,GACT,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,aAAa,CAAC;YAC9D,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;QAEnE,OAAO;aACF,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,kBAAkB,CAAC;aAClE,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAE5C,OAAO,OAAO,CAAC;IACnB,CAAC;IAEM,KAAK,CAAC,qBAAqB;QAC9B,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC;QACvC,qDAAqD;QACrD,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC;IAChD,CAAC;IAEM,KAAK,CAAC,kBAAkB;QAC3B,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC;QACvC,+CAA+C;QAC/C,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC;IAC7C,CAAC;IAEM,KAAK,CAAC,oBAAoB;QAC7B,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC;QACvC,iDAAiD;QACjD,OAAO,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC;IACrD,CAAC;IAEM,KAAK,CAAC,iBAAiB;QAC1B,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC;IACxC,CAAC;IAEM,KAAK,CAAC,eAAe;QACxB,iEAAiE;QACjE,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAChD,CAAC;IAEO,kBAAkB;QACtB,QAAQ,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;YACpC,KAAK,aAAa;gBACd,OAAO,oBAAoB,CAAC;YAChC,KAAK,UAAU;gBACX,OAAO,iBAAiB,CAAC;YAC7B,KAAK,OAAO;gBACR,OAAO,cAAc,CAAC;YAC1B,KAAK,QAAQ;gBACT,OAAO,eAAe,CAAC;YAC3B,KAAK,SAAS;gBACV,OAAO,gBAAgB,CAAC;YAC5B;gBACI,OAAO,QAAQ,CAAC;QACxB,CAAC;IACL,CAAC;IAEM,YAAY,CAAC,SAAuB;QACvC,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC;QAExB,QAAQ,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;YACpC,KAAK,aAAa;gBACd,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAC7B,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,kBAAkB,EAC/C,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAC1D,CAAC;gBACF,MAAM;YACV,KAAK,UAAU;gBACX,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAC7B,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,uBAAuB,EACpD,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CACvD,CAAC;gBACF,MAAM;YACV,KAAK,OAAO;gBACR,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAC7B,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,wBAAwB,EACrD,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAC/D,CAAC;gBACF,MAAM;YACV,KAAK,QAAQ;gBACT,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAC7B,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,cAAc,EAC3C,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC,CAC/B,CAAC;gBACF,MAAM;YACV,KAAK,SAAS;gBACV,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAC7B,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,kBAAkB,EAC/C,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CACvC,CAAC;gBACF,MAAM;QACd,CAAC;QAED,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CACnB,kBAAkB,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,IAAI,EAAE,EAAE,CACpG,CAAC;IACN,CAAC;CACJ;AA7LD,0CA6LC"}
@@ -1,11 +1,15 @@
1
1
  import type { CharacteristicValue, PlatformAccessory } from 'homebridge';
2
2
  import type { Lares4Platform } from '../platform';
3
3
  import type { KseniaThermostat } from '../types';
4
+ /**
5
+ * Thermostat Accessory Handler
6
+ * Handles HomeKit Thermostat service for Ksenia Lares4 thermostats
7
+ */
4
8
  export declare class ThermostatAccessory {
5
9
  private readonly platform;
6
10
  private readonly accessory;
7
11
  private service;
8
- private device;
12
+ device: KseniaThermostat;
9
13
  constructor(platform: Lares4Platform, accessory: PlatformAccessory);
10
14
  getCurrentHeatingCoolingState(): Promise<CharacteristicValue>;
11
15
  getTargetHeatingCoolingState(): Promise<CharacteristicValue>;
@@ -1 +1 @@
1
- {"version":3,"file":"thermostat-accessory.d.ts","sourceRoot":"","sources":["../../src/accessories/thermostat-accessory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,iBAAiB,EAAW,MAAM,YAAY,CAAC;AAClF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAEjD,qBAAa,mBAAmB;IAKxB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,SAAS;IAL9B,OAAO,CAAC,OAAO,CAAU;IACzB,OAAO,CAAC,MAAM,CAAmB;gBAGZ,QAAQ,EAAE,cAAc,EACxB,SAAS,EAAE,iBAAiB;IAsD3C,6BAA6B,IAAI,OAAO,CAAC,mBAAmB,CAAC;IAY7D,4BAA4B,IAAI,OAAO,CAAC,mBAAmB,CAAC;IAU5D,4BAA4B,CAAC,KAAK,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC;IAuBvE,qBAAqB,IAAI,OAAO,CAAC,mBAAmB,CAAC;IASrD,oBAAoB,IAAI,OAAO,CAAC,mBAAmB,CAAC;IAUpD,oBAAoB,CAAC,KAAK,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC;IAe/D,0BAA0B,IAAI,OAAO,CAAC,mBAAmB,CAAC;IAI1D,0BAA0B,IAAI,OAAO,CAAC,mBAAmB,CAAC;IAOhE,OAAO,CAAC,qBAAqB;IAyC7B,YAAY,CAAC,SAAS,EAAE,gBAAgB,GAAG,IAAI;CAkDlD"}
1
+ {"version":3,"file":"thermostat-accessory.d.ts","sourceRoot":"","sources":["../../src/accessories/thermostat-accessory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,iBAAiB,EAAW,MAAM,YAAY,CAAC;AAClF,OAAO,KAAK,EAAE,cAAc,EAAgB,MAAM,aAAa,CAAC;AAChE,OAAO,KAAK,EAAE,gBAAgB,EAAoB,MAAM,UAAU,CAAC;AAEnE;;;GAGG;AACH,qBAAa,mBAAmB;IAKxB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,SAAS;IAL9B,OAAO,CAAC,OAAO,CAAU;IAClB,MAAM,EAAE,gBAAgB,CAAC;gBAGX,QAAQ,EAAE,cAAc,EACxB,SAAS,EAAE,iBAAiB;IA2DpC,6BAA6B,IAAI,OAAO,CAAC,mBAAmB,CAAC;IAY7D,4BAA4B,IAAI,OAAO,CAAC,mBAAmB,CAAC;IAc5D,4BAA4B,CAAC,KAAK,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC;IAmCvE,qBAAqB,IAAI,OAAO,CAAC,mBAAmB,CAAC;IAWrD,oBAAoB,IAAI,OAAO,CAAC,mBAAmB,CAAC;IAepD,oBAAoB,CAAC,KAAK,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC;IAmB/D,0BAA0B,IAAI,OAAO,CAAC,mBAAmB,CAAC;IAI1D,0BAA0B,IAAI,OAAO,CAAC,mBAAmB,CAAC;IAOvE,OAAO,CAAC,qBAAqB;IAkEtB,YAAY,CAAC,SAAS,EAAE,gBAAgB,GAAG,IAAI;CAiEzD"}