@homebridge-plugins/homebridge-smarthq 0.4.0-beta.2 → 0.4.0-beta.4
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/README.md +2 -1
- package/dist/devices/OpalIceMaker/Managers/OpalDescaleSvcManager.d.ts +17 -0
- package/dist/devices/OpalIceMaker/Managers/OpalDescaleSvcManager.d.ts.map +1 -0
- package/dist/devices/OpalIceMaker/Managers/OpalDescaleSvcManager.js +54 -0
- package/dist/devices/OpalIceMaker/Managers/OpalDescaleSvcManager.js.map +1 -0
- package/dist/devices/OpalIceMaker/Managers/OpalFilterMaintenanceSvcManager.d.ts +3 -0
- package/dist/devices/OpalIceMaker/Managers/OpalFilterMaintenanceSvcManager.d.ts.map +1 -1
- package/dist/devices/OpalIceMaker/Managers/OpalFilterMaintenanceSvcManager.js +29 -12
- package/dist/devices/OpalIceMaker/Managers/OpalFilterMaintenanceSvcManager.js.map +1 -1
- package/dist/devices/OpalIceMaker/Managers/OpalMetadataSvcManager.d.ts +5 -1
- package/dist/devices/OpalIceMaker/Managers/OpalMetadataSvcManager.d.ts.map +1 -1
- package/dist/devices/OpalIceMaker/Managers/OpalMetadataSvcManager.js +26 -19
- package/dist/devices/OpalIceMaker/Managers/OpalMetadataSvcManager.js.map +1 -1
- package/dist/devices/OpalIceMaker/Managers/OpalMonitorManager.d.ts +3 -7
- package/dist/devices/OpalIceMaker/Managers/OpalMonitorManager.d.ts.map +1 -1
- package/dist/devices/OpalIceMaker/Managers/OpalMonitorManager.js +12 -17
- package/dist/devices/OpalIceMaker/Managers/OpalMonitorManager.js.map +1 -1
- package/dist/devices/OpalIceMaker/Managers/OpalNightlightSvcManager.d.ts +2 -0
- package/dist/devices/OpalIceMaker/Managers/OpalNightlightSvcManager.d.ts.map +1 -1
- package/dist/devices/OpalIceMaker/Managers/OpalNightlightSvcManager.js +19 -4
- package/dist/devices/OpalIceMaker/Managers/OpalNightlightSvcManager.js.map +1 -1
- package/dist/devices/OpalIceMaker/Managers/OpalPowerSvcManager.d.ts +3 -0
- package/dist/devices/OpalIceMaker/Managers/OpalPowerSvcManager.d.ts.map +1 -1
- package/dist/devices/OpalIceMaker/Managers/OpalPowerSvcManager.js +19 -3
- package/dist/devices/OpalIceMaker/Managers/OpalPowerSvcManager.js.map +1 -1
- package/dist/devices/OpalIceMaker/Managers/OpalProgressSvcManager.d.ts +2 -0
- package/dist/devices/OpalIceMaker/Managers/OpalProgressSvcManager.d.ts.map +1 -1
- package/dist/devices/OpalIceMaker/Managers/OpalProgressSvcManager.js +12 -3
- package/dist/devices/OpalIceMaker/Managers/OpalProgressSvcManager.js.map +1 -1
- package/dist/devices/OpalIceMaker/Managers/StatusManagers/OpalAddWaterStatusSvcManager.d.ts +8 -3
- package/dist/devices/OpalIceMaker/Managers/StatusManagers/OpalAddWaterStatusSvcManager.d.ts.map +1 -1
- package/dist/devices/OpalIceMaker/Managers/StatusManagers/OpalAddWaterStatusSvcManager.js +26 -6
- package/dist/devices/OpalIceMaker/Managers/StatusManagers/OpalAddWaterStatusSvcManager.js.map +1 -1
- package/dist/devices/OpalIceMaker/Managers/StatusManagers/OpalIceBucketStatusSvcManager.d.ts +8 -3
- package/dist/devices/OpalIceMaker/Managers/StatusManagers/OpalIceBucketStatusSvcManager.d.ts.map +1 -1
- package/dist/devices/OpalIceMaker/Managers/StatusManagers/OpalIceBucketStatusSvcManager.js +26 -6
- package/dist/devices/OpalIceMaker/Managers/StatusManagers/OpalIceBucketStatusSvcManager.js.map +1 -1
- package/dist/devices/OpalIceMaker/Managers/StatusManagers/OpalStatusBase.d.ts +1 -2
- package/dist/devices/OpalIceMaker/Managers/StatusManagers/OpalStatusBase.d.ts.map +1 -1
- package/dist/devices/OpalIceMaker/Managers/StatusManagers/OpalStatusBase.js +1 -1
- package/dist/devices/OpalIceMaker/Managers/StatusManagers/OpalStatusBase.js.map +1 -1
- package/dist/devices/OpalIceMaker/Managers/StatusManagers/index.d.ts +7 -3
- package/dist/devices/OpalIceMaker/Managers/StatusManagers/index.d.ts.map +1 -1
- package/dist/devices/OpalIceMaker/Managers/StatusManagers/index.js +5 -3
- package/dist/devices/OpalIceMaker/Managers/StatusManagers/index.js.map +1 -1
- package/dist/devices/OpalIceMaker/Managers/index.d.ts +1 -0
- package/dist/devices/OpalIceMaker/Managers/index.d.ts.map +1 -1
- package/dist/devices/OpalIceMaker/Managers/index.js +1 -0
- package/dist/devices/OpalIceMaker/Managers/index.js.map +1 -1
- package/dist/devices/OpalIceMaker/index.d.ts +7 -4
- package/dist/devices/OpalIceMaker/index.d.ts.map +1 -1
- package/dist/devices/OpalIceMaker/index.js +10 -6
- package/dist/devices/OpalIceMaker/index.js.map +1 -1
- package/dist/devices/device.js +1 -1
- package/dist/homebridge-ui/public/index.html +41 -17
- package/dist/platform.d.ts.map +1 -1
- package/dist/platform.js +1 -0
- package/dist/platform.js.map +1 -1
- package/dist/settings.d.ts +10 -1
- package/dist/settings.d.ts.map +1 -1
- package/dist/settings.js.map +1 -1
- package/docs/assets/dmt/dmt-component-data.js +1 -1
- package/docs/assets/dmt/dmt-search.cmp +0 -0
- package/docs/classes/SmartHQPlatform.html +8 -8
- package/docs/functions/default.html +1 -1
- package/docs/index.html +1 -0
- package/docs/interfaces/DeviceOptions.html +3 -0
- package/docs/interfaces/SmartHQPlatformConfig.html +4 -3
- package/docs/interfaces/SmartHqContext.html +2 -2
- package/docs/interfaces/credentials.html +2 -2
- package/docs/interfaces/devicesConfig.html +2 -2
- package/docs/interfaces/options.html +2 -7
- package/docs/modules.html +1 -1
- package/docs/variables/API_URL.html +1 -1
- package/docs/variables/ERD_CODES.html +1 -1
- package/docs/variables/ERD_TYPES.html +1 -1
- package/docs/variables/KEEPALIVE_TIMEOUT.html +1 -1
- package/docs/variables/LOGIN_URL.html +1 -1
- package/docs/variables/OAUTH2_CLIENT_ID.html +1 -1
- package/docs/variables/OAUTH2_CLIENT_SECRET.html +1 -1
- package/docs/variables/OAUTH2_REDIRECT_URI.html +1 -1
- package/docs/variables/PLATFORM_NAME.html +1 -1
- package/docs/variables/PLUGIN_NAME.html +1 -1
- package/docs/variables/SECURE_URL.html +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -32,10 +32,11 @@ This plugin is in development
|
|
|
32
32
|
|
|
33
33
|
## Homekit Controller Notifications
|
|
34
34
|
|
|
35
|
-
Currently Homekit Controller Notifications are supported for the Opal Ice Maker, to setup, install Homekit Controller App and configure notifications for each respective event. Put your Homekit Controller client secret in the Plugin Advanced Options, and the path associated with each available notifcation in the Opal device options.
|
|
35
|
+
Currently Homekit Controller Notifications are supported for the Opal Ice Maker, to setup, install Homekit Controller App and configure notifications for each respective event. Put your Homekit Controller client secret in the Plugin Advanced Options, and the path associated with each available notifcation in the Opal device options.
|
|
36
36
|
These are the events that are currently supported:
|
|
37
37
|
|
|
38
38
|
- Ice Bucket Full
|
|
39
39
|
- Production Progress Complete
|
|
40
40
|
- Filter Maintenance Change Alert
|
|
41
|
+
- Descale Needed Alert
|
|
41
42
|
- Add Water Alert
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { SmartHQPlatform } from '../../../index.js';
|
|
2
|
+
import { type devicesConfig, type SmartHqContext } from '../../../index.js';
|
|
3
|
+
import { OpalDeviceBase } from '../OpalDeviceBase.js';
|
|
4
|
+
import type { PlatformAccessory, Service } from 'homebridge';
|
|
5
|
+
export declare class OpalDescaleSvcManager extends OpalDeviceBase {
|
|
6
|
+
service: Service;
|
|
7
|
+
advancedOptionQueryStrs: string[];
|
|
8
|
+
serviceName: string;
|
|
9
|
+
private configuredName;
|
|
10
|
+
descaleStatus: 0 | 1;
|
|
11
|
+
constructor(platform: SmartHQPlatform, accessory: PlatformAccessory<SmartHqContext>, device: SmartHqContext['device'] & devicesConfig);
|
|
12
|
+
getDescaleStatus(): Promise<void>;
|
|
13
|
+
setOpalDescaleStatus(updateValue: 0 | 1): void;
|
|
14
|
+
private createService;
|
|
15
|
+
getService(): Service;
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=OpalDescaleSvcManager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"OpalDescaleSvcManager.d.ts","sourceRoot":"","sources":["../../../../src/devices/OpalIceMaker/Managers/OpalDescaleSvcManager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,OAAO,CAAA;AAC5C,OAAO,EAAa,KAAK,aAAa,EAAE,KAAK,cAAc,EAAE,MAAM,OAAO,CAAA;AAC1E,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAA;AACxD,OAAO,KAAK,EAAE,iBAAiB,EAAE,OAAO,EAAE,MAAM,YAAY,CAAA;AAE5D,qBAAa,qBAAsB,SAAQ,cAAc;IAChD,OAAO,EAAE,OAAO,CAAA;IAChB,uBAAuB,EAAE,MAAM,EAAE,CAA8F;IAC/H,WAAW,EAAE,MAAM,CAAiB;IAC3C,OAAO,CAAC,cAAc,CAAiB;IAEvC,aAAa,EAAE,CAAC,GAAG,CAAC,CAAI;gBAEtB,QAAQ,EAAE,eAAe,EACzB,SAAS,EAAE,iBAAiB,CAAC,cAAc,CAAC,EAC5C,MAAM,EAAE,cAAc,CAAC,QAAQ,CAAC,GAAG,aAAa;IAO5C,gBAAgB;IAOtB,oBAAoB,CAAC,WAAW,EAAE,CAAC,GAAG,CAAC;IAMvC,OAAO,CAAC,aAAa;IA+BrB,UAAU,IAAI,OAAO;CAGtB"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { ERD_TYPES } from '../../../index.js';
|
|
2
|
+
import { OpalDeviceBase } from '../OpalDeviceBase.js';
|
|
3
|
+
export class OpalDescaleSvcManager extends OpalDeviceBase {
|
|
4
|
+
service;
|
|
5
|
+
advancedOptionQueryStrs = ['device=opal&label=HKC_Descale_Notification_Path&indicator=oplHKCDescaleNotificationPath'];
|
|
6
|
+
serviceName = 'Opal Descale';
|
|
7
|
+
configuredName = 'Opal Descale';
|
|
8
|
+
descaleStatus = 0;
|
|
9
|
+
constructor(platform, accessory, device) {
|
|
10
|
+
super(platform, accessory, device);
|
|
11
|
+
this.service = this.createService();
|
|
12
|
+
}
|
|
13
|
+
async getDescaleStatus() {
|
|
14
|
+
const currentDescaleStatus = await this.readErd(ERD_TYPES.OIM_NEEDS_DESCALING);
|
|
15
|
+
this.platform.infoLog('CURRENT DESCALE STATUS');
|
|
16
|
+
this.platform.infoLog(currentDescaleStatus);
|
|
17
|
+
this.setOpalDescaleStatus(Number.parseInt(currentDescaleStatus));
|
|
18
|
+
}
|
|
19
|
+
setOpalDescaleStatus(updateValue) {
|
|
20
|
+
this.descaleStatus = updateValue;
|
|
21
|
+
// Stimulate on change handler for native notification
|
|
22
|
+
this.service.getCharacteristic(this.platform.Characteristic.FilterChangeIndication).setValue(updateValue);
|
|
23
|
+
}
|
|
24
|
+
createService() {
|
|
25
|
+
// Check if service already exists
|
|
26
|
+
const existingService = this.accessory.getService(this.serviceName);
|
|
27
|
+
// Remove existing service if it exists
|
|
28
|
+
if (existingService) {
|
|
29
|
+
this.accessory.removeService(existingService);
|
|
30
|
+
}
|
|
31
|
+
const service = this.accessory.addService(this.platform.Service.FilterMaintenance, this.serviceName, 'descale-status');
|
|
32
|
+
service
|
|
33
|
+
.getCharacteristic(this.platform.Characteristic.ConfiguredName)
|
|
34
|
+
.onGet(() => this.configuredName)
|
|
35
|
+
.setValue(this.configuredName);
|
|
36
|
+
service
|
|
37
|
+
.getCharacteristic(this.platform.Characteristic.FilterChangeIndication)
|
|
38
|
+
.onGet(() => {
|
|
39
|
+
return this.descaleStatus;
|
|
40
|
+
}).on('change', async (chg) => {
|
|
41
|
+
if (chg.oldValue === this.platform.Characteristic.FilterChangeIndication.FILTER_OK && chg.newValue === this.platform.Characteristic.FilterChangeIndication.CHANGE_FILTER) {
|
|
42
|
+
const notificationPath = this.platform.config.deviceOptions?.opal?.oplHKCDescaleNotificationPath;
|
|
43
|
+
if (notificationPath) {
|
|
44
|
+
await this.sendHomeKitControllerNotification(notificationPath);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
});
|
|
48
|
+
return service;
|
|
49
|
+
}
|
|
50
|
+
getService() {
|
|
51
|
+
return this.service;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
//# sourceMappingURL=OpalDescaleSvcManager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"OpalDescaleSvcManager.js","sourceRoot":"","sources":["../../../../src/devices/OpalIceMaker/Managers/OpalDescaleSvcManager.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,10 +5,13 @@ import type { PlatformAccessory, Service } from 'homebridge';
|
|
|
5
5
|
export declare class OpalFilterMaintenanceSvcManager extends OpalDeviceBase {
|
|
6
6
|
service: Service;
|
|
7
7
|
serviceName: string;
|
|
8
|
+
private configuredName;
|
|
9
|
+
advancedOptionQueryStrs: string[];
|
|
8
10
|
filterMaintenanceStatus: 0 | 1;
|
|
9
11
|
constructor(platform: SmartHQPlatform, accessory: PlatformAccessory<SmartHqContext>, device: SmartHqContext['device'] & devicesConfig);
|
|
10
12
|
getFilterMaintenaceStatus(): Promise<void>;
|
|
11
13
|
setFilterMaintenaceStatus(updateValue: 0 | 1): void;
|
|
14
|
+
private createService;
|
|
12
15
|
getService(): Service;
|
|
13
16
|
}
|
|
14
17
|
//# sourceMappingURL=OpalFilterMaintenanceSvcManager.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OpalFilterMaintenanceSvcManager.d.ts","sourceRoot":"","sources":["../../../../src/devices/OpalIceMaker/Managers/OpalFilterMaintenanceSvcManager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,OAAO,CAAA;AAC5C,OAAO,EAAa,KAAK,aAAa,EAAE,KAAK,cAAc,EAAE,MAAM,OAAO,CAAA;AAC1E,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAA;AACxD,OAAO,KAAK,EAAE,iBAAiB,EAAE,OAAO,EAAE,MAAM,YAAY,CAAA;AAE5D,qBAAa,+BAAgC,SAAQ,cAAc;IAC1D,OAAO,EAAE,OAAO,CAAA;IAChB,WAAW,EAAE,MAAM,CAA4B;IACtD,uBAAuB,EAAE,CAAC,GAAG,CAAC,CAAI;gBAEhC,QAAQ,EAAE,eAAe,EACzB,SAAS,EAAE,iBAAiB,CAAC,cAAc,CAAC,EAC5C,MAAM,EAAE,cAAc,CAAC,QAAQ,CAAC,GAAG,aAAa;
|
|
1
|
+
{"version":3,"file":"OpalFilterMaintenanceSvcManager.d.ts","sourceRoot":"","sources":["../../../../src/devices/OpalIceMaker/Managers/OpalFilterMaintenanceSvcManager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,OAAO,CAAA;AAC5C,OAAO,EAAa,KAAK,aAAa,EAAE,KAAK,cAAc,EAAE,MAAM,OAAO,CAAA;AAC1E,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAA;AACxD,OAAO,KAAK,EAAE,iBAAiB,EAAE,OAAO,EAAE,MAAM,YAAY,CAAA;AAE5D,qBAAa,+BAAgC,SAAQ,cAAc;IAC1D,OAAO,EAAE,OAAO,CAAA;IAChB,WAAW,EAAE,MAAM,CAA4B;IACtD,OAAO,CAAC,cAAc,CAAuB;IACtC,uBAAuB,EAAE,MAAM,EAAE,CAAkH;IAE1J,uBAAuB,EAAE,CAAC,GAAG,CAAC,CAAI;gBAEhC,QAAQ,EAAE,eAAe,EACzB,SAAS,EAAE,iBAAiB,CAAC,cAAc,CAAC,EAC5C,MAAM,EAAE,cAAc,CAAC,QAAQ,CAAC,GAAG,aAAa;IAO5C,yBAAyB;IAK/B,yBAAyB,CAAC,WAAW,EAAE,CAAC,GAAG,CAAC;IAM5C,OAAO,CAAC,aAAa;IA+BrB,UAAU,IAAI,OAAO;CAGtB"}
|
|
@@ -3,21 +3,12 @@ import { OpalDeviceBase } from '../OpalDeviceBase.js';
|
|
|
3
3
|
export class OpalFilterMaintenanceSvcManager extends OpalDeviceBase {
|
|
4
4
|
service;
|
|
5
5
|
serviceName = 'Opal Filter Maintenance';
|
|
6
|
+
configuredName = 'Filter Maintenance';
|
|
7
|
+
advancedOptionQueryStrs = ['device=opal&label=HKC_Filter_Maintenace_Notification_Path&indicator=oplHKCFilterMaintenanceNotificationPath'];
|
|
6
8
|
filterMaintenanceStatus = 0;
|
|
7
9
|
constructor(platform, accessory, device) {
|
|
8
10
|
super(platform, accessory, device);
|
|
9
|
-
this.service = this.
|
|
10
|
-
|| this.accessory.addService(this.platform.Service.FilterMaintenance, this.serviceName);
|
|
11
|
-
this.service.getCharacteristic(this.platform.Characteristic.FilterChangeIndication).onGet(() => {
|
|
12
|
-
return this.filterMaintenanceStatus;
|
|
13
|
-
}).on('change', async (chg) => {
|
|
14
|
-
if (chg.oldValue === this.platform.Characteristic.FilterChangeIndication.FILTER_OK && chg.newValue === this.platform.Characteristic.FilterChangeIndication.CHANGE_FILTER) {
|
|
15
|
-
const notificationPath = this.platform.config.options?.oplHKCFilterMaintenanceNotificationPath;
|
|
16
|
-
if (notificationPath) {
|
|
17
|
-
await this.sendHomeKitControllerNotification(notificationPath);
|
|
18
|
-
}
|
|
19
|
-
}
|
|
20
|
-
});
|
|
11
|
+
this.service = this.createService();
|
|
21
12
|
}
|
|
22
13
|
async getFilterMaintenaceStatus() {
|
|
23
14
|
const currentFilterStatus = await this.readErd(ERD_TYPES.OIM_FILTER_STATUS);
|
|
@@ -28,6 +19,32 @@ export class OpalFilterMaintenanceSvcManager extends OpalDeviceBase {
|
|
|
28
19
|
// Stimulate on change handler for native notification
|
|
29
20
|
this.service.getCharacteristic(this.platform.Characteristic.FilterChangeIndication).setValue(updateValue);
|
|
30
21
|
}
|
|
22
|
+
createService() {
|
|
23
|
+
// Check if service already exists
|
|
24
|
+
const existingService = this.accessory.getService(this.serviceName);
|
|
25
|
+
// Remove existing service if it exists
|
|
26
|
+
if (existingService) {
|
|
27
|
+
this.accessory.removeService(existingService);
|
|
28
|
+
}
|
|
29
|
+
const service = this.accessory.addService(this.platform.Service.FilterMaintenance, this.serviceName, 'filter-maintenance-status');
|
|
30
|
+
service
|
|
31
|
+
.getCharacteristic(this.platform.Characteristic.ConfiguredName)
|
|
32
|
+
.onGet(() => this.configuredName)
|
|
33
|
+
.setValue(this.configuredName);
|
|
34
|
+
service
|
|
35
|
+
.getCharacteristic(this.platform.Characteristic.FilterChangeIndication)
|
|
36
|
+
.onGet(() => {
|
|
37
|
+
return this.filterMaintenanceStatus;
|
|
38
|
+
}).on('change', async (chg) => {
|
|
39
|
+
if (chg.oldValue === this.platform.Characteristic.FilterChangeIndication.FILTER_OK && chg.newValue === this.platform.Characteristic.FilterChangeIndication.CHANGE_FILTER) {
|
|
40
|
+
const notificationPath = this.platform.config.deviceOptions?.opal?.oplHKCFilterMaintenanceNotificationPath;
|
|
41
|
+
if (notificationPath) {
|
|
42
|
+
await this.sendHomeKitControllerNotification(notificationPath);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
});
|
|
46
|
+
return service;
|
|
47
|
+
}
|
|
31
48
|
getService() {
|
|
32
49
|
return this.service;
|
|
33
50
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OpalFilterMaintenanceSvcManager.js","sourceRoot":"","sources":["../../../../src/devices/OpalIceMaker/Managers/OpalFilterMaintenanceSvcManager.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAA2C,MAAM,OAAO,CAAA;AAC1E,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAA;AAGxD,MAAM,OAAO,+BAAgC,SAAQ,cAAc;IAC1D,OAAO,CAAS;IAChB,WAAW,GAAW,yBAAyB,CAAA;
|
|
1
|
+
{"version":3,"file":"OpalFilterMaintenanceSvcManager.js","sourceRoot":"","sources":["../../../../src/devices/OpalIceMaker/Managers/OpalFilterMaintenanceSvcManager.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAA2C,MAAM,OAAO,CAAA;AAC1E,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAA;AAGxD,MAAM,OAAO,+BAAgC,SAAQ,cAAc;IAC1D,OAAO,CAAS;IAChB,WAAW,GAAW,yBAAyB,CAAA;IAC9C,cAAc,GAAG,oBAAoB,CAAA;IACtC,uBAAuB,GAAa,CAAC,6GAA6G,CAAC,CAAA;IAE1J,uBAAuB,GAAU,CAAC,CAAA;IAClC,YACE,QAAyB,EACzB,SAA4C,EAC5C,MAAgD;QAEhD,KAAK,CAAC,QAAQ,EAAE,SAAS,EAAE,MAAM,CAAC,CAAA;QAElC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,aAAa,EAAE,CAAA;IACrC,CAAC;IAED,KAAK,CAAC,yBAAyB;QAC7B,MAAM,mBAAmB,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAA;QAC3E,IAAI,CAAC,yBAAyB,CAAC,MAAM,CAAC,QAAQ,CAAC,mBAAmB,CAAU,CAAC,CAAA;IAC/E,CAAC;IAED,yBAAyB,CAAC,WAAkB;QAC1C,IAAI,CAAC,uBAAuB,GAAG,WAAW,CAAA;QAC1C,sDAAsD;QACtD,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,sBAAsB,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAA;IAC3G,CAAC;IAEO,aAAa;QACnB,kCAAkC;QAClC,MAAM,eAAe,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;QAEnE,uCAAuC;QACvC,IAAI,eAAe,EAAE,CAAC;YACpB,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,eAAe,CAAC,CAAA;QAC/C,CAAC;QAED,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,iBAAiB,EAAE,IAAI,CAAC,WAAW,EAAE,2BAA2B,CAAC,CAAA;QAEjI,OAAO;aACJ,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,cAAc,CAAC;aAC9D,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC;aAChC,QAAQ,CAAC,IAAI,CAAC,cAAc,CAAC,CAAA;QAEhC,OAAO;aACJ,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,sBAAsB,CAAC;aACtE,KAAK,CAAC,GAAG,EAAE;YACV,OAAO,IAAI,CAAC,uBAAuB,CAAA;QACrC,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE;YAC5B,IAAI,GAAG,CAAC,QAAQ,KAAK,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,sBAAsB,CAAC,SAAS,IAAI,GAAG,CAAC,QAAQ,KAAK,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,sBAAsB,CAAC,aAAa,EAAE,CAAC;gBACzK,MAAM,gBAAgB,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,aAAa,EAAE,IAAI,EAAE,uCAAuC,CAAA;gBAC1G,IAAI,gBAAgB,EAAE,CAAC;oBACrB,MAAM,IAAI,CAAC,iCAAiC,CAAC,gBAAgB,CAAC,CAAA;gBAChE,CAAC;YACH,CAAC;QACH,CAAC,CAAC,CAAA;QAEJ,OAAO,OAAO,CAAA;IAChB,CAAC;IACD,UAAU;QACR,OAAO,IAAI,CAAC,OAAO,CAAA;IACrB,CAAC;CACF"}
|
|
@@ -1,9 +1,13 @@
|
|
|
1
1
|
import type { PlatformAccessory, Service } from 'homebridge';
|
|
2
2
|
import type { SmartHQPlatform, devicesConfig, SmartHqContext } from '../../../index.js';
|
|
3
3
|
import { OpalDeviceBase } from '../OpalDeviceBase.js';
|
|
4
|
+
import { SmartHQIceMaker } from '../index.js';
|
|
4
5
|
export declare class OpalMetadataSvcManager extends OpalDeviceBase {
|
|
5
6
|
service: Service;
|
|
6
|
-
|
|
7
|
+
private configuredName;
|
|
8
|
+
opalIceMaker: SmartHQIceMaker;
|
|
9
|
+
constructor(opalIceMaker: SmartHQIceMaker, platform: SmartHQPlatform, accessory: PlatformAccessory<SmartHqContext>, device: SmartHqContext['device'] & devicesConfig);
|
|
10
|
+
createService(): Service;
|
|
7
11
|
getService(): Service;
|
|
8
12
|
}
|
|
9
13
|
//# sourceMappingURL=OpalMetadataSvcManager.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OpalMetadataSvcManager.d.ts","sourceRoot":"","sources":["../../../../src/devices/OpalIceMaker/Managers/OpalMetadataSvcManager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,OAAO,EAAE,MAAM,YAAY,CAAA;AAE5D,OAAO,KAAK,EAAE,eAAe,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,OAAO,CAAA;AAE3E,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAA;
|
|
1
|
+
{"version":3,"file":"OpalMetadataSvcManager.d.ts","sourceRoot":"","sources":["../../../../src/devices/OpalIceMaker/Managers/OpalMetadataSvcManager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,OAAO,EAAE,MAAM,YAAY,CAAA;AAE5D,OAAO,KAAK,EAAE,eAAe,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,OAAO,CAAA;AAE3E,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAA;AACxD,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA;AAEhD,qBAAa,sBAAuB,SAAQ,cAAc;IACjD,OAAO,EAAE,OAAO,CAAA;IACvB,OAAO,CAAC,cAAc,CAAa;IAC5B,YAAY,EAAE,eAAe,CAAA;gBAGlC,YAAY,EAAE,eAAe,EAC7B,QAAQ,EAAE,eAAe,EACzB,SAAS,EAAE,iBAAiB,CAAC,cAAc,CAAC,EAC5C,MAAM,EAAE,cAAc,CAAC,QAAQ,CAAC,GAAG,aAAa;IAOlD,aAAa,IAAI,OAAO;IAgCxB,UAAU,IAAI,OAAO;CAGtB"}
|
|
@@ -1,32 +1,39 @@
|
|
|
1
1
|
import { OpalDeviceBase } from '../OpalDeviceBase.js';
|
|
2
2
|
export class OpalMetadataSvcManager extends OpalDeviceBase {
|
|
3
3
|
service;
|
|
4
|
-
|
|
4
|
+
configuredName = 'Metadata';
|
|
5
|
+
opalIceMaker;
|
|
6
|
+
constructor(opalIceMaker, platform, accessory, device) {
|
|
5
7
|
super(platform, accessory, device);
|
|
6
|
-
|
|
7
|
-
this.service = this.
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
const
|
|
12
|
-
|
|
13
|
-
|
|
8
|
+
this.opalIceMaker = opalIceMaker;
|
|
9
|
+
this.service = this.createService();
|
|
10
|
+
}
|
|
11
|
+
createService() {
|
|
12
|
+
// Check if service already exists
|
|
13
|
+
const service = this.accessory.getService('');
|
|
14
|
+
service
|
|
15
|
+
.getCharacteristic(this.platform.Characteristic.ConfiguredName)
|
|
16
|
+
.onGet(() => this.configuredName)
|
|
17
|
+
.setValue(this.configuredName);
|
|
14
18
|
const fullQueryStr = [
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
19
|
+
this.opalIceMaker.progressManager?.advancedOptionQueryStrs || [],
|
|
20
|
+
this.opalIceMaker.statusManager.iceBucketStatusManager.advancedOptionQueryStrs,
|
|
21
|
+
this.opalIceMaker.statusManager.addWaterStatusManager.advancedOptionQueryStrs,
|
|
22
|
+
this.opalIceMaker.filterMaintenanceManager.advancedOptionQueryStrs,
|
|
23
|
+
this.opalIceMaker.descaleManager.advancedOptionQueryStrs,
|
|
24
|
+
this.opalIceMaker.powerManager.advancedOptionQueryStrs
|
|
20
25
|
]
|
|
21
26
|
.reduce((acc, qs, index) => {
|
|
22
27
|
if (index === 0) {
|
|
23
28
|
return acc.concat(qs);
|
|
24
29
|
}
|
|
25
|
-
return acc.concat(
|
|
26
|
-
}, '');
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
.onGet(() => fullQueryStr)
|
|
30
|
+
return acc.concat(qs);
|
|
31
|
+
}, []).join(',');
|
|
32
|
+
service
|
|
33
|
+
.getCharacteristic(this.platform.Characteristic.ProductData)
|
|
34
|
+
.onGet(() => fullQueryStr)
|
|
35
|
+
.updateValue(fullQueryStr);
|
|
36
|
+
return service;
|
|
30
37
|
}
|
|
31
38
|
getService() {
|
|
32
39
|
return this.service;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OpalMetadataSvcManager.js","sourceRoot":"","sources":["../../../../src/devices/OpalIceMaker/Managers/OpalMetadataSvcManager.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAA;
|
|
1
|
+
{"version":3,"file":"OpalMetadataSvcManager.js","sourceRoot":"","sources":["../../../../src/devices/OpalIceMaker/Managers/OpalMetadataSvcManager.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAA;AAGxD,MAAM,OAAO,sBAAuB,SAAQ,cAAc;IACjD,OAAO,CAAS;IACf,cAAc,GAAG,UAAU,CAAA;IAC5B,YAAY,CAAiB;IAEpC,YACE,YAA6B,EAC7B,QAAyB,EACzB,SAA4C,EAC5C,MAAgD;QAEhD,KAAK,CAAC,QAAQ,EAAE,SAAS,EAAE,MAAM,CAAC,CAAA;QAClC,IAAI,CAAC,YAAY,GAAG,YAAY,CAAA;QAChC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,aAAa,EAAE,CAAA;IACrC,CAAC;IAED,aAAa;QACX,kCAAkC;QAClC,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,EAAE,CAAE,CAAA;QAE9C,OAAO;aACJ,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,cAAc,CAAC;aAC9D,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC;aAChC,QAAQ,CAAC,IAAI,CAAC,cAAc,CAAC,CAAA;QAEhC,MAAM,YAAY,GAAG;YACnB,IAAI,CAAC,YAAY,CAAC,eAAe,EAAE,uBAAuB,IAAI,EAAE;YAChE,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,sBAAsB,CAAC,uBAAuB;YAC9E,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,qBAAqB,CAAC,uBAAuB;YAC7E,IAAI,CAAC,YAAY,CAAC,wBAAwB,CAAC,uBAAuB;YAClE,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,uBAAuB;YACxD,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,uBAAuB;SACvD;aACE,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE;YACzB,IAAI,KAAK,KAAK,CAAC,EAAE,CAAC;gBAChB,OAAO,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;YACvB,CAAC;YACD,OAAO,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;QACvB,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;QAElB,OAAO;aACJ,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,WAAW,CAAC;aAC3D,KAAK,CAAC,GAAG,EAAE,CAAC,YAAY,CAAC;aACzB,WAAW,CAAC,YAAY,CAAC,CAAA;QAE5B,OAAO,OAAO,CAAA;IAChB,CAAC;IAED,UAAU;QACR,OAAO,IAAI,CAAC,OAAO,CAAA;IACrB,CAAC;CACF"}
|
|
@@ -1,18 +1,14 @@
|
|
|
1
1
|
import type { PlatformAccessory } from 'homebridge';
|
|
2
|
+
import { SmartHQIceMaker } from '../index.js';
|
|
2
3
|
import type { SmartHQPlatform, devicesConfig, SmartHqContext } from '../../../index.js';
|
|
3
|
-
import type { OpalFilterMaintenanceSvcManager, OpalPowerSvcManager, OpalProgressSvcManager } from '../Managers/index.js';
|
|
4
|
-
import type { OpalStatusSvcManager } from '../Managers/StatusManagers/index.js';
|
|
5
4
|
import { OpalDeviceBase } from '../OpalDeviceBase.js';
|
|
6
5
|
export declare class OpalMonitorManager extends OpalDeviceBase {
|
|
7
6
|
readonly platform: SmartHQPlatform;
|
|
8
7
|
accessory: PlatformAccessory<SmartHqContext>;
|
|
9
8
|
readonly device: SmartHqContext['device'] & devicesConfig;
|
|
10
|
-
private statusManager;
|
|
11
|
-
private powerManager;
|
|
12
|
-
private progressManager;
|
|
13
|
-
private filterMaintenanceManager;
|
|
14
9
|
private subscription;
|
|
15
|
-
|
|
10
|
+
opalIceMaker: SmartHQIceMaker;
|
|
11
|
+
constructor(opalIceMaker: SmartHQIceMaker, platform: SmartHQPlatform, accessory: PlatformAccessory<SmartHqContext>, device: SmartHqContext['device'] & devicesConfig);
|
|
16
12
|
startMonitoring(): void;
|
|
17
13
|
stopMonitoring(): void;
|
|
18
14
|
updateRefreshRate(newRate: number): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OpalMonitorManager.d.ts","sourceRoot":"","sources":["../../../../src/devices/OpalIceMaker/Managers/OpalMonitorManager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA;AAGnD,OAAO,
|
|
1
|
+
{"version":3,"file":"OpalMonitorManager.d.ts","sourceRoot":"","sources":["../../../../src/devices/OpalIceMaker/Managers/OpalMonitorManager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA;AAGnD,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA;AAChD,OAAO,KAAK,EAAE,eAAe,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,OAAO,CAAA;AAI3E,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAA;AAGxD,qBAAa,kBAAmB,SAAQ,cAAc;IAMlD,QAAQ,CAAC,QAAQ,EAAE,eAAe;IAC3B,SAAS,EAAE,iBAAiB,CAAC,cAAc,CAAC;IACnD,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC,QAAQ,CAAC,GAAG,aAAa;IAP3D,OAAO,CAAC,YAAY,CAA4B;IACzC,YAAY,EAAE,eAAe,CAAA;gBAGlC,YAAY,EAAE,eAAe,EACpB,QAAQ,EAAE,eAAe,EAC3B,SAAS,EAAE,iBAAiB,CAAC,cAAc,CAAC,EAC1C,MAAM,EAAE,cAAc,CAAC,QAAQ,CAAC,GAAG,aAAa;IAO3D,eAAe,IAAI,IAAI;IA8BvB,cAAc,IAAI,IAAI;IAStB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;CAOzC"}
|
|
@@ -4,37 +4,32 @@ export class OpalMonitorManager extends OpalDeviceBase {
|
|
|
4
4
|
platform;
|
|
5
5
|
accessory;
|
|
6
6
|
device;
|
|
7
|
-
statusManager;
|
|
8
|
-
powerManager;
|
|
9
|
-
progressManager;
|
|
10
|
-
filterMaintenanceManager;
|
|
11
7
|
subscription = null;
|
|
12
|
-
|
|
8
|
+
opalIceMaker;
|
|
9
|
+
constructor(opalIceMaker, platform, accessory, device) {
|
|
13
10
|
super(platform, accessory, device);
|
|
14
11
|
this.platform = platform;
|
|
15
12
|
this.accessory = accessory;
|
|
16
13
|
this.device = device;
|
|
17
|
-
this.
|
|
18
|
-
this.powerManager = powerManager;
|
|
19
|
-
this.progressManager = progressManager;
|
|
20
|
-
this.filterMaintenanceManager = filterMaintenanceManager;
|
|
14
|
+
this.opalIceMaker = opalIceMaker;
|
|
21
15
|
}
|
|
22
16
|
// Start the monitoring
|
|
23
17
|
startMonitoring() {
|
|
24
18
|
// Stop any existing subscription first
|
|
25
19
|
this.stopMonitoring();
|
|
26
20
|
this.subscription = interval((this.device.refreshRate || 30) * 1000)
|
|
27
|
-
.pipe(skipWhile(() => !this.progressManager && !this.platform.config.options?.homekitControllerNotificationsSecret))
|
|
21
|
+
.pipe(skipWhile(() => !this.opalIceMaker.progressManager && !this.platform.config.options?.homekitControllerNotificationsSecret))
|
|
28
22
|
.subscribe(async () => {
|
|
29
|
-
await this.statusManager.getOpalCurrentStatus();
|
|
30
|
-
await this.filterMaintenanceManager.getFilterMaintenaceStatus();
|
|
31
|
-
|
|
23
|
+
await this.opalIceMaker.statusManager.getOpalCurrentStatus();
|
|
24
|
+
await this.opalIceMaker.filterMaintenanceManager.getFilterMaintenaceStatus();
|
|
25
|
+
await this.opalIceMaker.descaleManager.getDescaleStatus();
|
|
26
|
+
if (this.opalIceMaker.progressManager?.hasService()) {
|
|
32
27
|
try {
|
|
33
|
-
const currentProductionValue = await this.progressManager.processProductionProgress();
|
|
28
|
+
const currentProductionValue = await this.opalIceMaker.progressManager.processProductionProgress();
|
|
34
29
|
// Auto-shutoff if production exceeds limit
|
|
35
|
-
if (this.progressManager.opalProductionLimit && currentProductionValue >= this.progressManager.opalProductionLimit) {
|
|
36
|
-
this.powerManager.setOpalPowerState(false);
|
|
37
|
-
this.platform.debugLog(`Auto-shutoff triggered: Production (${currentProductionValue}) > Limit (${this.progressManager.opalProductionLimit})`);
|
|
30
|
+
if (this.opalIceMaker.progressManager.opalProductionLimit && currentProductionValue >= this.opalIceMaker.progressManager.opalProductionLimit) {
|
|
31
|
+
this.opalIceMaker.powerManager.setOpalPowerState(false);
|
|
32
|
+
this.platform.debugLog(`Auto-shutoff triggered: Production (${currentProductionValue}) > Limit (${this.opalIceMaker.progressManager.opalProductionLimit})`);
|
|
38
33
|
}
|
|
39
34
|
}
|
|
40
35
|
catch (error) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OpalMonitorManager.js","sourceRoot":"","sources":["../../../../src/devices/OpalIceMaker/Managers/OpalMonitorManager.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,MAAM,CAAA;AAC1C,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAA;AAGxD,MAAM,OAAO,kBAAmB,SAAQ,cAAc;
|
|
1
|
+
{"version":3,"file":"OpalMonitorManager.js","sourceRoot":"","sources":["../../../../src/devices/OpalIceMaker/Managers/OpalMonitorManager.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,7 +4,9 @@ import { OpalDeviceBase } from '../OpalDeviceBase.js';
|
|
|
4
4
|
export declare class OpalNightlightSvcManager extends OpalDeviceBase {
|
|
5
5
|
private service;
|
|
6
6
|
private serviceName;
|
|
7
|
+
private configuredName;
|
|
7
8
|
constructor(platform: SmartHQPlatform, accessory: PlatformAccessory<SmartHqContext>, device: SmartHqContext['device'] & devicesConfig);
|
|
9
|
+
private createService;
|
|
8
10
|
getService(): Service;
|
|
9
11
|
}
|
|
10
12
|
//# sourceMappingURL=OpalNightlightSvcManager.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OpalNightlightSvcManager.d.ts","sourceRoot":"","sources":["../../../../src/devices/OpalIceMaker/Managers/OpalNightlightSvcManager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,OAAO,EAAE,MAAM,YAAY,CAAA;AAC5D,OAAO,KAAK,EAAE,eAAe,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,OAAO,CAAA;AAG3E,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAA;AAExD,qBAAa,wBAAyB,SAAQ,cAAc;IAC1D,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,WAAW,CAAoB;
|
|
1
|
+
{"version":3,"file":"OpalNightlightSvcManager.d.ts","sourceRoot":"","sources":["../../../../src/devices/OpalIceMaker/Managers/OpalNightlightSvcManager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,OAAO,EAAE,MAAM,YAAY,CAAA;AAC5D,OAAO,KAAK,EAAE,eAAe,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,OAAO,CAAA;AAG3E,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAA;AAExD,qBAAa,wBAAyB,SAAQ,cAAc;IAC1D,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,WAAW,CAAoB;IACvC,OAAO,CAAC,cAAc,CAAe;gBAGnC,QAAQ,EAAE,eAAe,EACzB,SAAS,EAAE,iBAAiB,CAAC,cAAc,CAAC,EAC5C,MAAM,EAAE,cAAc,CAAC,QAAQ,CAAC,GAAG,aAAa;IAOlD,OAAO,CAAC,aAAa;IA0ErB,UAAU,IAAI,OAAO;CAGtB"}
|
|
@@ -3,11 +3,25 @@ import { OpalDeviceBase } from '../OpalDeviceBase.js';
|
|
|
3
3
|
export class OpalNightlightSvcManager extends OpalDeviceBase {
|
|
4
4
|
service;
|
|
5
5
|
serviceName = 'Opal Nightlight';
|
|
6
|
+
configuredName = 'Nightlight';
|
|
6
7
|
constructor(platform, accessory, device) {
|
|
7
8
|
super(platform, accessory, device);
|
|
8
|
-
this.service = this.
|
|
9
|
-
|
|
10
|
-
|
|
9
|
+
this.service = this.createService();
|
|
10
|
+
}
|
|
11
|
+
createService() {
|
|
12
|
+
// Check if service already exists
|
|
13
|
+
const existingService = this.accessory.getService(this.serviceName);
|
|
14
|
+
// Remove existing service if it exists
|
|
15
|
+
if (existingService) {
|
|
16
|
+
this.accessory.removeService(existingService);
|
|
17
|
+
}
|
|
18
|
+
const service = this.accessory.addService(this.platform.Service.Lightbulb, this.serviceName);
|
|
19
|
+
service
|
|
20
|
+
.getCharacteristic(this.platform.Characteristic.ConfiguredName)
|
|
21
|
+
.onGet(() => this.configuredName)
|
|
22
|
+
.setValue(this.configuredName);
|
|
23
|
+
service
|
|
24
|
+
.getCharacteristic(this.platform.Characteristic.On)
|
|
11
25
|
.onGet(async () => {
|
|
12
26
|
const currentLevel = await this.readErd(ERD_TYPES.OIM_LIGHT_LEVEL);
|
|
13
27
|
return currentLevel !== '00'; // If the level is not OFF (00), return true (ON)
|
|
@@ -29,7 +43,7 @@ export class OpalNightlightSvcManager extends OpalDeviceBase {
|
|
|
29
43
|
}
|
|
30
44
|
await this.writeErd(ERD_TYPES.OIM_LIGHT_LEVEL, newState);
|
|
31
45
|
});
|
|
32
|
-
|
|
46
|
+
service.getCharacteristic(this.platform.Characteristic.Brightness)
|
|
33
47
|
.setProps({
|
|
34
48
|
minValue: 0, // Minimum value for brightness (OFF)
|
|
35
49
|
maxValue: 100, // Maximum value for brightness (HIGH)
|
|
@@ -61,6 +75,7 @@ export class OpalNightlightSvcManager extends OpalDeviceBase {
|
|
|
61
75
|
}
|
|
62
76
|
await this.writeErd(ERD_TYPES.OIM_LIGHT_LEVEL, newState);
|
|
63
77
|
});
|
|
78
|
+
return service;
|
|
64
79
|
}
|
|
65
80
|
getService() {
|
|
66
81
|
return this.service;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OpalNightlightSvcManager.js","sourceRoot":"","sources":["../../../../src/devices/OpalIceMaker/Managers/OpalNightlightSvcManager.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AACjC,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAA;AAExD,MAAM,OAAO,wBAAyB,SAAQ,cAAc;IAClD,OAAO,CAAS;IAChB,WAAW,GAAG,iBAAiB,CAAA;
|
|
1
|
+
{"version":3,"file":"OpalNightlightSvcManager.js","sourceRoot":"","sources":["../../../../src/devices/OpalIceMaker/Managers/OpalNightlightSvcManager.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,7 +4,10 @@ import { OpalDeviceBase } from '../OpalDeviceBase.js';
|
|
|
4
4
|
export declare class OpalPowerSvcManager extends OpalDeviceBase {
|
|
5
5
|
service: Service;
|
|
6
6
|
private serviceName;
|
|
7
|
+
private configuredName;
|
|
8
|
+
advancedOptionQueryStrs: string[];
|
|
7
9
|
constructor(platform: SmartHQPlatform, accessory: PlatformAccessory<SmartHqContext>, device: SmartHqContext['device'] & devicesConfig);
|
|
10
|
+
createService(): Service;
|
|
8
11
|
getService(): Service;
|
|
9
12
|
setOpalPowerState(newPowerState: boolean): void;
|
|
10
13
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OpalPowerSvcManager.d.ts","sourceRoot":"","sources":["../../../../src/devices/OpalIceMaker/Managers/OpalPowerSvcManager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,OAAO,EAAE,MAAM,YAAY,CAAA;AAC5D,OAAO,KAAK,EAAE,eAAe,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,OAAO,CAAA;AAG3E,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAA;AAExD,qBAAa,mBAAoB,SAAQ,cAAc;IAC9C,OAAO,EAAE,OAAO,CAAA;IACvB,OAAO,CAAC,WAAW,CAAe;
|
|
1
|
+
{"version":3,"file":"OpalPowerSvcManager.d.ts","sourceRoot":"","sources":["../../../../src/devices/OpalIceMaker/Managers/OpalPowerSvcManager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,OAAO,EAAE,MAAM,YAAY,CAAA;AAC5D,OAAO,KAAK,EAAE,eAAe,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,OAAO,CAAA;AAG3E,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAA;AAExD,qBAAa,mBAAoB,SAAQ,cAAc;IAC9C,OAAO,EAAE,OAAO,CAAA;IACvB,OAAO,CAAC,WAAW,CAAe;IAClC,OAAO,CAAC,cAAc,CAAU;IACzB,uBAAuB,EAAE,MAAM,EAAE,CAA+H;gBAGrK,QAAQ,EAAE,eAAe,EACzB,SAAS,EAAE,iBAAiB,CAAC,cAAc,CAAC,EAC5C,MAAM,EAAE,cAAc,CAAC,QAAQ,CAAC,GAAG,aAAa;IAOlD,aAAa,IAAI,OAAO;IAwBxB,UAAU,IAAI,OAAO;IAId,iBAAiB,CAAC,aAAa,EAAE,OAAO;CAMhD"}
|
|
@@ -3,14 +3,30 @@ import { OpalDeviceBase } from '../OpalDeviceBase.js';
|
|
|
3
3
|
export class OpalPowerSvcManager extends OpalDeviceBase {
|
|
4
4
|
service;
|
|
5
5
|
serviceName = 'Opal Power';
|
|
6
|
+
configuredName = 'Power';
|
|
7
|
+
advancedOptionQueryStrs = ['device=opal&label=Auto_Shutoff_on_Blocking_Event&indicator=oplAutoShutoffOnBlockingEvent&type=boolean&defaultValue=false'];
|
|
6
8
|
constructor(platform, accessory, device) {
|
|
7
9
|
super(platform, accessory, device);
|
|
8
|
-
this.service = this.
|
|
9
|
-
|
|
10
|
-
|
|
10
|
+
this.service = this.createService();
|
|
11
|
+
}
|
|
12
|
+
createService() {
|
|
13
|
+
// Check if service already exists
|
|
14
|
+
const existingService = this.accessory.getService(this.serviceName);
|
|
15
|
+
// Remove existing service if it exists
|
|
16
|
+
if (existingService) {
|
|
17
|
+
this.accessory.removeService(existingService);
|
|
18
|
+
}
|
|
19
|
+
const service = this.accessory.addService(this.platform.Service.Switch, this.serviceName, 'opal-power');
|
|
20
|
+
service.setPrimaryService();
|
|
21
|
+
service
|
|
22
|
+
.getCharacteristic(this.platform.Characteristic.ConfiguredName)
|
|
23
|
+
.onGet(() => this.configuredName)
|
|
24
|
+
.setValue(this.configuredName);
|
|
25
|
+
service
|
|
11
26
|
.getCharacteristic(this.platform.Characteristic.On)
|
|
12
27
|
.onGet(() => this.readErd(ERD_TYPES.OIM_POWER).then(r => Number.parseInt(r) !== 0))
|
|
13
28
|
.onSet(value => this.writeErd(ERD_TYPES.OIM_POWER, value));
|
|
29
|
+
return service;
|
|
14
30
|
}
|
|
15
31
|
getService() {
|
|
16
32
|
return this.service;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OpalPowerSvcManager.js","sourceRoot":"","sources":["../../../../src/devices/OpalIceMaker/Managers/OpalPowerSvcManager.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AACjC,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAA;AAExD,MAAM,OAAO,mBAAoB,SAAQ,cAAc;IAC9C,OAAO,CAAS;IACf,WAAW,GAAG,YAAY,CAAA;
|
|
1
|
+
{"version":3,"file":"OpalPowerSvcManager.js","sourceRoot":"","sources":["../../../../src/devices/OpalIceMaker/Managers/OpalPowerSvcManager.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AACjC,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAA;AAExD,MAAM,OAAO,mBAAoB,SAAQ,cAAc;IAC9C,OAAO,CAAS;IACf,WAAW,GAAG,YAAY,CAAA;IAC1B,cAAc,GAAG,OAAO,CAAA;IACzB,uBAAuB,GAAa,CAAC,0HAA0H,CAAC,CAAA;IAEvK,YACE,QAAyB,EACzB,SAA4C,EAC5C,MAAgD;QAEhD,KAAK,CAAC,QAAQ,EAAE,SAAS,EAAE,MAAM,CAAC,CAAA;QAElC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,aAAa,EAAE,CAAA;IACrC,CAAC;IAED,aAAa;QACX,kCAAkC;QAClC,MAAM,eAAe,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;QAEnE,uCAAuC;QACvC,IAAI,eAAe,EAAE,CAAC;YACpB,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,eAAe,CAAC,CAAA;QAC/C,CAAC;QAED,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,WAAW,EAAE,YAAY,CAAC,CAAA;QACvG,OAAO,CAAC,iBAAiB,EAAE,CAAA;QAC3B,OAAO;aACJ,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,cAAc,CAAC;aAC9D,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC;aAChC,QAAQ,CAAC,IAAI,CAAC,cAAc,CAAC,CAAA;QAChC,OAAO;aACJ,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC;aAClD,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;aAClF,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,SAAS,EAAE,KAAgB,CAAC,CAAC,CAAA;QAEvE,OAAO,OAAO,CAAA;IAEhB,CAAC;IAED,UAAU;QACR,OAAO,IAAI,CAAC,OAAO,CAAA;IACrB,CAAC;IAEM,iBAAiB,CAAC,aAAsB;QAC7C,IAAI,CAAC,OAAO,EAAE,iBAAiB,CAC7B,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,EAC/B,aAAa,CACd,CAAA;IACH,CAAC;CACF"}
|
|
@@ -5,8 +5,10 @@ export declare class OpalProgressSvcManager extends OpalDeviceBase {
|
|
|
5
5
|
readonly platform: SmartHQPlatform;
|
|
6
6
|
accessory: PlatformAccessory<SmartHqContext>;
|
|
7
7
|
readonly device: SmartHqContext['device'] & devicesConfig;
|
|
8
|
+
advancedOptionQueryStrs: string[];
|
|
8
9
|
serviceName: string;
|
|
9
10
|
service: Service | null;
|
|
11
|
+
private configuredName;
|
|
10
12
|
opalProductionLimit?: number;
|
|
11
13
|
constructor(platform: SmartHQPlatform, accessory: PlatformAccessory<SmartHqContext>, device: SmartHqContext['device'] & devicesConfig);
|
|
12
14
|
private createService;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OpalProgressSvcManager.d.ts","sourceRoot":"","sources":["../../../../src/devices/OpalIceMaker/Managers/OpalProgressSvcManager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,OAAO,EAAE,MAAM,YAAY,CAAA;AAC5D,OAAO,KAAK,EAAE,eAAe,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,OAAO,CAAA;AAO3E,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAA;AAExD,qBAAa,sBAAuB,SAAQ,cAAc;
|
|
1
|
+
{"version":3,"file":"OpalProgressSvcManager.d.ts","sourceRoot":"","sources":["../../../../src/devices/OpalIceMaker/Managers/OpalProgressSvcManager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,OAAO,EAAE,MAAM,YAAY,CAAA;AAC5D,OAAO,KAAK,EAAE,eAAe,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,OAAO,CAAA;AAO3E,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAA;AAExD,qBAAa,sBAAuB,SAAQ,cAAc;IAUtD,QAAQ,CAAC,QAAQ,EAAE,eAAe;IAC3B,SAAS,EAAE,iBAAiB,CAAC,cAAc,CAAC;IACnD,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC,QAAQ,CAAC,GAAG,aAAa;IAXpD,uBAAuB,EAAE,MAAM,EAAE,CAGvC;IACM,WAAW,EAAE,MAAM,CAAkB;IACrC,OAAO,EAAE,OAAO,GAAG,IAAI,CAAO;IACrC,OAAO,CAAC,cAAc,CAAiB;IAChC,mBAAmB,CAAC,EAAE,MAAM,CAAW;gBAEnC,QAAQ,EAAE,eAAe,EAC3B,SAAS,EAAE,iBAAiB,CAAC,cAAc,CAAC,EAC1C,MAAM,EAAE,cAAc,CAAC,QAAQ,CAAC,GAAG,aAAa;IAkB3D,OAAO,CAAC,aAAa;IA8CrB,oBAAoB,CAAC,cAAc,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,GAAG,IAAI;IAO3D,UAAU,IAAI,OAAO;IAKrB,UAAU,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;IASrB,yBAAyB;IAuBtC,qBAAqB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;YAM/B,kBAAkB;CAiBjC"}
|
|
@@ -5,17 +5,22 @@ export class OpalProgressSvcManager extends OpalDeviceBase {
|
|
|
5
5
|
platform;
|
|
6
6
|
accessory;
|
|
7
7
|
device;
|
|
8
|
+
advancedOptionQueryStrs = [
|
|
9
|
+
'device=opal&label=Production_Duration_Minutes&indicator=opalProductionLimit&type=number&defaultValue=0&placeholder=Number._0_for_Infinite',
|
|
10
|
+
'device=opal&label=HKC_Progress_Complete_Notification_Path&indicator=oplHKCProgressCompleteNotificationPath'
|
|
11
|
+
];
|
|
8
12
|
serviceName = 'Opal Progress';
|
|
9
13
|
service = null;
|
|
14
|
+
configuredName = 'Ice Progress';
|
|
10
15
|
opalProductionLimit = Infinity;
|
|
11
16
|
constructor(platform, accessory, device) {
|
|
12
17
|
super(platform, accessory, device);
|
|
13
18
|
this.platform = platform;
|
|
14
19
|
this.accessory = accessory;
|
|
15
20
|
this.device = device;
|
|
16
|
-
if (platform.config.
|
|
21
|
+
if (platform.config.deviceOptions?.opal?.opalProductionLimit) {
|
|
17
22
|
this.createService();
|
|
18
|
-
this.opalProductionLimit = platform.config.
|
|
23
|
+
this.opalProductionLimit = platform.config.deviceOptions.opal.opalProductionLimit;
|
|
19
24
|
}
|
|
20
25
|
else {
|
|
21
26
|
// If the service exists but condition is false, remove it
|
|
@@ -36,6 +41,10 @@ export class OpalProgressSvcManager extends OpalDeviceBase {
|
|
|
36
41
|
}
|
|
37
42
|
// Create new service
|
|
38
43
|
this.service = this.accessory.addService(this.platform.Service.Fanv2, this.serviceName);
|
|
44
|
+
this.service
|
|
45
|
+
.getCharacteristic(this.platform.Characteristic.ConfiguredName)
|
|
46
|
+
.onGet(() => this.configuredName)
|
|
47
|
+
.setValue(this.configuredName);
|
|
39
48
|
// Configure Active characteristic
|
|
40
49
|
this.service.getCharacteristic(this.platform.Characteristic.Active)
|
|
41
50
|
.setProps({
|
|
@@ -55,7 +64,7 @@ export class OpalProgressSvcManager extends OpalDeviceBase {
|
|
|
55
64
|
.removeOnSet()
|
|
56
65
|
.on('change', async (chg) => {
|
|
57
66
|
if (chg.oldValue !== 100 && chg.newValue === 100) {
|
|
58
|
-
const notificationPath = this.platform.config.
|
|
67
|
+
const notificationPath = this.platform.config.deviceOptions?.opal?.oplHKCProgressCompleteNotificationPath;
|
|
59
68
|
if (notificationPath) {
|
|
60
69
|
await this.sendHomeKitControllerNotification(notificationPath);
|
|
61
70
|
}
|