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.
- package/CHANGELOG.md +53 -7
- package/README.md +34 -34
- package/dist/accessories/cover-accessory.d.ts +8 -4
- package/dist/accessories/cover-accessory.d.ts.map +1 -1
- package/dist/accessories/cover-accessory.js +36 -37
- package/dist/accessories/cover-accessory.js.map +1 -1
- package/dist/accessories/light-accessory.d.ts +7 -3
- package/dist/accessories/light-accessory.d.ts.map +1 -1
- package/dist/accessories/light-accessory.js +27 -24
- package/dist/accessories/light-accessory.js.map +1 -1
- package/dist/accessories/scenario-accessory.d.ts +8 -4
- package/dist/accessories/scenario-accessory.d.ts.map +1 -1
- package/dist/accessories/scenario-accessory.js +23 -19
- package/dist/accessories/scenario-accessory.js.map +1 -1
- package/dist/accessories/sensor-accessory.d.ts +5 -1
- package/dist/accessories/sensor-accessory.d.ts.map +1 -1
- package/dist/accessories/sensor-accessory.js +49 -36
- package/dist/accessories/sensor-accessory.js.map +1 -1
- package/dist/accessories/thermostat-accessory.d.ts +5 -1
- package/dist/accessories/thermostat-accessory.d.ts.map +1 -1
- package/dist/accessories/thermostat-accessory.js +68 -55
- package/dist/accessories/thermostat-accessory.js.map +1 -1
- package/dist/accessories/zone-accessory.d.ts +5 -1
- package/dist/accessories/zone-accessory.d.ts.map +1 -1
- package/dist/accessories/zone-accessory.js +32 -32
- package/dist/accessories/zone-accessory.js.map +1 -1
- package/dist/mqtt-bridge.d.ts +6 -12
- package/dist/mqtt-bridge.d.ts.map +1 -1
- package/dist/mqtt-bridge.js +148 -104
- package/dist/mqtt-bridge.js.map +1 -1
- package/dist/platform.d.ts +26 -37
- package/dist/platform.d.ts.map +1 -1
- package/dist/platform.js +177 -132
- package/dist/platform.js.map +1 -1
- package/dist/types.d.ts +203 -21
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +78 -0
- package/dist/types.js.map +1 -1
- package/dist/websocket-client.d.ts +6 -5
- package/dist/websocket-client.d.ts.map +1 -1
- package/dist/websocket-client.js +257 -313
- package/dist/websocket-client.js.map +1 -1
- 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
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
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
|
-
|
|
20
|
-
|
|
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
|
|
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(
|
|
41
|
+
this.platform.log.info(`${this.device.name}: ${on ? 'On' : 'Off'}`);
|
|
36
42
|
}
|
|
37
43
|
catch (error) {
|
|
38
|
-
this.platform.log.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
|
|
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(
|
|
61
|
+
this.platform.log.info(`${this.device.name}: Brightness ${brightness}%`);
|
|
57
62
|
}
|
|
58
63
|
catch (error) {
|
|
59
|
-
this.platform.log.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
|
|
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
|
-
|
|
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(
|
|
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":";;;AAIA,MAAa,cAAc;IAIvB,YACqB,QAAwB,EACxB,SAA4B;QAD5B,aAAQ,GAAR,QAAQ,CAAgB;QACxB,cAAS,GAAT,SAAS,CAAmB;QAE7C,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC,OAAO,CAAC,
|
|
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 {
|
|
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
|
-
|
|
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,
|
|
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
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
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
|
-
|
|
20
|
-
|
|
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
|
|
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(
|
|
33
|
-
|
|
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(
|
|
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(
|
|
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
|
-
//
|
|
51
|
+
// Do nothing for "off" - scenarios are momentary
|
|
48
52
|
}
|
|
49
53
|
async getOn() {
|
|
50
|
-
//
|
|
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":";;;
|
|
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
|
-
|
|
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,
|
|
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
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
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
|
-
|
|
39
|
-
service
|
|
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
|
-
|
|
46
|
-
service
|
|
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
|
-
|
|
53
|
-
service
|
|
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
|
-
|
|
60
|
-
service
|
|
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
|
-
|
|
67
|
-
service
|
|
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
|
|
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
|
|
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
|
|
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 (
|
|
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':
|
|
96
|
-
|
|
97
|
-
case '
|
|
98
|
-
|
|
99
|
-
case '
|
|
100
|
-
|
|
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(
|
|
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,
|
|
1
|
+
{"version":3,"file":"sensor-accessory.js","sourceRoot":"","sources":["../../src/accessories/sensor-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 { 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
|
-
|
|
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,
|
|
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"}
|