@homebridge-plugins/homebridge-smarthq 0.5.0-beta.6 → 0.5.0-beta.8
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/.github/workflows/release.yml +0 -4
- package/CHANGELOG.md +563 -18
- package/dist/devices/advantium.d.ts +10 -0
- package/dist/devices/advantium.d.ts.map +1 -0
- package/dist/devices/advantium.js +75 -0
- package/dist/devices/advantium.js.map +1 -0
- package/dist/devices/beverageCenter.d.ts +10 -0
- package/dist/devices/beverageCenter.d.ts.map +1 -0
- package/dist/devices/beverageCenter.js +125 -0
- package/dist/devices/beverageCenter.js.map +1 -0
- package/dist/devices/clothesDryer.d.ts +10 -0
- package/dist/devices/clothesDryer.d.ts.map +1 -0
- package/dist/devices/clothesDryer.js +84 -0
- package/dist/devices/clothesDryer.js.map +1 -0
- package/dist/devices/clothesWasher.d.ts +10 -0
- package/dist/devices/clothesWasher.d.ts.map +1 -0
- package/dist/devices/clothesWasher.js +84 -0
- package/dist/devices/clothesWasher.js.map +1 -0
- package/dist/devices/coffeeMaker.d.ts +10 -0
- package/dist/devices/coffeeMaker.d.ts.map +1 -0
- package/dist/devices/coffeeMaker.js +79 -0
- package/dist/devices/coffeeMaker.js.map +1 -0
- package/dist/devices/device.js +1 -1
- package/dist/devices/device.js.map +1 -1
- package/dist/devices/dishwasher.d.ts +0 -1
- package/dist/devices/dishwasher.d.ts.map +1 -1
- package/dist/devices/dishwasher.js +47 -12
- package/dist/devices/dishwasher.js.map +1 -1
- package/dist/devices/hood.d.ts +34 -0
- package/dist/devices/hood.d.ts.map +1 -0
- package/dist/devices/hood.js +306 -0
- package/dist/devices/hood.js.map +1 -0
- package/dist/devices/microwave.d.ts +10 -0
- package/dist/devices/microwave.d.ts.map +1 -0
- package/dist/devices/microwave.js +84 -0
- package/dist/devices/microwave.js.map +1 -0
- package/dist/devices/oven.d.ts.map +1 -1
- package/dist/devices/oven.js +78 -32
- package/dist/devices/oven.js.map +1 -1
- package/dist/devices/refrigerator.d.ts.map +1 -1
- package/dist/devices/refrigerator.js +173 -12
- package/dist/devices/refrigerator.js.map +1 -1
- package/dist/devices/waterFilter.d.ts +10 -0
- package/dist/devices/waterFilter.d.ts.map +1 -0
- package/dist/devices/waterFilter.js +67 -0
- package/dist/devices/waterFilter.js.map +1 -0
- package/dist/devices/waterHeater.d.ts +10 -0
- package/dist/devices/waterHeater.d.ts.map +1 -0
- package/dist/devices/waterHeater.js +95 -0
- package/dist/devices/waterHeater.js.map +1 -0
- package/dist/devices/waterSoftener.d.ts +10 -0
- package/dist/devices/waterSoftener.d.ts.map +1 -0
- package/dist/devices/waterSoftener.js +67 -0
- package/dist/devices/waterSoftener.js.map +1 -0
- package/dist/platform.d.ts +10 -0
- package/dist/platform.d.ts.map +1 -1
- package/dist/platform.js +383 -0
- package/dist/platform.js.map +1 -1
- package/dist/settings.d.ts +13 -0
- package/dist/settings.d.ts.map +1 -1
- package/dist/settings.js +3 -0
- package/dist/settings.js.map +1 -1
- package/docs/assets/search.js +1 -1
- package/docs/assets/style.css +3 -3
- package/docs/classes/SmartHQPlatform.html +8 -8
- package/docs/interfaces/DeviceOptions.html +2 -2
- package/docs/interfaces/SmartHQPlatformConfig.html +2 -2
- package/docs/interfaces/SmartHqContext.html +5 -2
- package/docs/interfaces/SmartHqERDResponse.html +2 -2
- package/docs/interfaces/credentials.html +2 -2
- package/docs/interfaces/devicesConfig.html +2 -2
- package/docs/interfaces/options.html +2 -2
- 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/docs/variables/default.html +1 -1
- package/package.json +6 -5
package/dist/devices/oven.js
CHANGED
|
@@ -10,43 +10,87 @@ export class SmartHQOven extends deviceBase {
|
|
|
10
10
|
this.platform = platform;
|
|
11
11
|
this.device = device;
|
|
12
12
|
this.debugLog(`Oven Features: ${JSON.stringify(accessory.context.device.features)}`);
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
13
|
+
// Oven Light
|
|
14
|
+
const ovenLight = this.accessory.getService('Oven Light') ?? this.accessory.addService(this.platform.Service.Lightbulb, 'Oven Light', 'OvenLight');
|
|
15
|
+
ovenLight.setCharacteristic(this.platform.Characteristic.Name, 'Oven Light');
|
|
16
|
+
ovenLight
|
|
17
|
+
.getCharacteristic(this.platform.Characteristic.On)
|
|
18
|
+
.onGet(async () => {
|
|
19
|
+
try {
|
|
20
|
+
return await this.readErd(ERD_TYPES.UPPER_OVEN_LIGHT).then(r => Number.parseInt(r) !== 0);
|
|
21
|
+
}
|
|
22
|
+
catch (error) {
|
|
23
|
+
this.warnLog?.(`Oven Light handleGetOn error: ${error?.message ?? error}`);
|
|
24
|
+
return false;
|
|
25
|
+
}
|
|
26
|
+
})
|
|
27
|
+
.onSet(async (value) => {
|
|
28
|
+
try {
|
|
29
|
+
await this.writeErd(ERD_TYPES.UPPER_OVEN_LIGHT, value);
|
|
30
|
+
}
|
|
31
|
+
catch (error) {
|
|
32
|
+
this.warnLog?.(`Oven Light handleSetOn error: ${error?.message ?? error}`);
|
|
33
|
+
}
|
|
34
|
+
});
|
|
35
|
+
// Oven Current Temperature Sensor
|
|
36
|
+
const ovenTempSensor = this.accessory.getService('Oven Temperature') ?? this.accessory.addService(this.platform.Service.TemperatureSensor, 'Oven Temperature', 'OvenTemp');
|
|
37
|
+
ovenTempSensor.setCharacteristic(this.platform.Characteristic.Name, 'Oven Temperature');
|
|
38
|
+
ovenTempSensor
|
|
39
|
+
.getCharacteristic(this.platform.Characteristic.CurrentTemperature)
|
|
40
|
+
.onGet(async () => {
|
|
41
|
+
try {
|
|
42
|
+
const erdVal = await this.readErd(ERD_TYPES.UPPER_OVEN_COOK_MODE);
|
|
43
|
+
const b = Buffer.from(erdVal, 'hex');
|
|
44
|
+
return fToC(b.readUint16BE(1));
|
|
45
|
+
}
|
|
46
|
+
catch (error) {
|
|
47
|
+
this.warnLog?.(`Oven Temperature error: ${error?.message ?? error}`);
|
|
48
|
+
return 0;
|
|
49
|
+
}
|
|
50
|
+
});
|
|
51
|
+
// Oven Door Lock (Security System for lock state)
|
|
52
|
+
const ovenDoorLock = this.accessory.getService('Oven Door Lock') ?? this.accessory.addService(this.platform.Service.LockMechanism, 'Oven Door Lock', 'OvenDoorLock');
|
|
53
|
+
ovenDoorLock.setCharacteristic(this.platform.Characteristic.Name, 'Oven Door Lock');
|
|
54
|
+
ovenDoorLock
|
|
55
|
+
.getCharacteristic(this.platform.Characteristic.LockCurrentState)
|
|
56
|
+
.onGet(async () => {
|
|
57
|
+
try {
|
|
58
|
+
// TODO: Use actual ERD for door lock state when available
|
|
59
|
+
return this.platform.Characteristic.LockCurrentState.UNSECURED;
|
|
60
|
+
}
|
|
61
|
+
catch (error) {
|
|
62
|
+
this.warnLog?.(`Oven Door Lock error: ${error?.message ?? error}`);
|
|
63
|
+
return this.platform.Characteristic.LockCurrentState.UNSECURED;
|
|
64
|
+
}
|
|
65
|
+
});
|
|
66
|
+
ovenDoorLock
|
|
67
|
+
.getCharacteristic(this.platform.Characteristic.LockTargetState)
|
|
68
|
+
.onGet(async () => {
|
|
69
|
+
try {
|
|
70
|
+
// TODO: Use actual ERD for door lock state when available
|
|
71
|
+
return this.platform.Characteristic.LockTargetState.UNSECURED;
|
|
72
|
+
}
|
|
73
|
+
catch (error) {
|
|
74
|
+
this.warnLog?.(`Oven Door Lock error: ${error?.message ?? error}`);
|
|
75
|
+
return this.platform.Characteristic.LockTargetState.UNSECURED;
|
|
76
|
+
}
|
|
77
|
+
})
|
|
78
|
+
.onSet(async (value) => {
|
|
79
|
+
try {
|
|
80
|
+
// TODO: Implement door lock control when ERD is available
|
|
81
|
+
this.debugLog(`Oven Door Lock set to: ${value}`);
|
|
82
|
+
}
|
|
83
|
+
catch (error) {
|
|
84
|
+
this.warnLog?.(`Oven Door Lock set error: ${error?.message ?? error}`);
|
|
39
85
|
}
|
|
40
86
|
});
|
|
41
87
|
}
|
|
42
88
|
async readErd(erd) {
|
|
43
|
-
const d = await axios
|
|
44
|
-
.get(`/appliance/${this.accessory.context.device.applianceId}/erd/${erd}`);
|
|
89
|
+
const d = await axios.get(`/appliance/${this.accessory.context.device.applianceId}/erd/${erd}`);
|
|
45
90
|
return String(d.data.value);
|
|
46
91
|
}
|
|
47
92
|
async writeErd(erd, value) {
|
|
48
|
-
await axios
|
|
49
|
-
.post(`/appliance/${this.accessory.context.device.applianceId}/erd/${erd}`, {
|
|
93
|
+
await axios.post(`/appliance/${this.accessory.context.device.applianceId}/erd/${erd}`, {
|
|
50
94
|
kind: 'appliance#erdListEntry',
|
|
51
95
|
userId: this.accessory.context.userId,
|
|
52
96
|
applianceId: this.accessory.context.device.applianceId,
|
|
@@ -56,9 +100,11 @@ export class SmartHQOven extends deviceBase {
|
|
|
56
100
|
return undefined;
|
|
57
101
|
}
|
|
58
102
|
}
|
|
59
|
-
|
|
60
|
-
|
|
103
|
+
/*
|
|
104
|
+
function cToF(celsius: number) {
|
|
105
|
+
return (celsius * 9) / 5 + 32
|
|
61
106
|
}
|
|
107
|
+
*/
|
|
62
108
|
function fToC(fahrenheit) {
|
|
63
109
|
return ((fahrenheit - 32) * 5) / 9;
|
|
64
110
|
}
|
package/dist/devices/oven.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"oven.js","sourceRoot":"","sources":["../../src/devices/oven.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAEpC,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAC1C,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAExC,MAAM,OAAO,WAAY,SAAQ,UAAU;IAE9B;IAEA;IAHX,YACW,QAAyB,EAClC,SAA4C,EACnC,MAAgD;QAEzD,KAAK,CAAC,QAAQ,EAAE,SAAS,EAAE,MAAM,CAAC,CAAA;QAJzB,aAAQ,GAAR,QAAQ,CAAiB;QAEzB,WAAM,GAAN,MAAM,CAA0C;QAIzD,IAAI,CAAC,QAAQ,CAAC,kBAAkB,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAA;
|
|
1
|
+
{"version":3,"file":"oven.js","sourceRoot":"","sources":["../../src/devices/oven.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"refrigerator.d.ts","sourceRoot":"","sources":["../../src/devices/refrigerator.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA;AAEnD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA;AACrD,OAAO,KAAK,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAMnE,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAExC,qBAAa,mBAAoB,SAAQ,UAAU;IAM/C,QAAQ,CAAC,QAAQ,EAAE,eAAe;IAElC,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC,QAAQ,CAAC,GAAG,aAAa;IAN3D,sBAAsB,EAAG,OAAO,CAAA;IAChC,YAAY,EAAE,GAAG,CAAA;gBAGN,QAAQ,EAAE,eAAe,EAClC,SAAS,EAAE,iBAAiB,CAAC,cAAc,CAAC,EACnC,MAAM,EAAE,cAAc,CAAC,QAAQ,CAAC,GAAG,aAAa;
|
|
1
|
+
{"version":3,"file":"refrigerator.d.ts","sourceRoot":"","sources":["../../src/devices/refrigerator.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA;AAEnD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA;AACrD,OAAO,KAAK,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAMnE,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAExC,qBAAa,mBAAoB,SAAQ,UAAU;IAM/C,QAAQ,CAAC,QAAQ,EAAE,eAAe;IAElC,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC,QAAQ,CAAC,GAAG,aAAa;IAN3D,sBAAsB,EAAG,OAAO,CAAA;IAChC,YAAY,EAAE,GAAG,CAAA;gBAGN,QAAQ,EAAE,eAAe,EAClC,SAAS,EAAE,iBAAiB,CAAC,cAAc,CAAC,EACnC,MAAM,EAAE,cAAc,CAAC,QAAQ,CAAC,GAAG,aAAa;IAuMrD,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAMrC,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO;CAWpD"}
|
|
@@ -13,19 +13,180 @@ export class SmartHQRefrigerator extends deviceBase {
|
|
|
13
13
|
this.platform = platform;
|
|
14
14
|
this.device = device;
|
|
15
15
|
this.debugLog(`Refrigerator Features: ${JSON.stringify(accessory.context.device.features)}`);
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
16
|
+
// Refrigerator Door Sensor
|
|
17
|
+
const doorSensorService = this.accessory.getService('Refrigerator Door') ?? this.accessory.addService(this.platform.Service.ContactSensor, 'Refrigerator Door', 'RefrigeratorDoor');
|
|
18
|
+
doorSensorService.setCharacteristic(this.platform.Characteristic.Name, 'Refrigerator Door');
|
|
19
|
+
doorSensorService
|
|
20
|
+
.getCharacteristic(this.platform.Characteristic.ContactSensorState)
|
|
21
|
+
.onGet(async () => {
|
|
22
|
+
try {
|
|
23
|
+
const r = await this.readErd(ERD_TYPES.DOOR_STATUS);
|
|
24
|
+
return Number.parseInt(r) !== 0;
|
|
25
|
+
}
|
|
26
|
+
catch (error) {
|
|
27
|
+
this.warnLog?.(`Refrigerator Door Sensor readErd error: ${error?.message ?? error}`);
|
|
28
|
+
return false;
|
|
29
|
+
}
|
|
30
|
+
});
|
|
31
|
+
// Fridge Temperature Sensor
|
|
32
|
+
const fridgeTempService = this.accessory.getService('Fridge Temperature') ?? this.accessory.addService(this.platform.Service.TemperatureSensor, 'Fridge Temperature', 'FridgeTemp');
|
|
33
|
+
fridgeTempService.setCharacteristic(this.platform.Characteristic.Name, 'Fridge Temperature');
|
|
34
|
+
fridgeTempService
|
|
35
|
+
.getCharacteristic(this.platform.Characteristic.CurrentTemperature)
|
|
36
|
+
.onGet(async () => {
|
|
37
|
+
try {
|
|
38
|
+
const r = await this.readErd(ERD_TYPES.CURRENT_TEMPERATURE);
|
|
39
|
+
this.debugLog(`Raw CURRENT_TEMPERATURE ERD response: ${r}`);
|
|
40
|
+
// Check if response is valid
|
|
41
|
+
if (!r || r === 'undefined' || r === 'null') {
|
|
42
|
+
this.warnLog?.(`Fridge Temperature: Invalid ERD response`);
|
|
43
|
+
return 2.8; // Default to ~37°F in Celsius
|
|
44
|
+
}
|
|
45
|
+
// The CURRENT_TEMPERATURE ERD returns a JSON object with fridge and freezer properties
|
|
46
|
+
// Parse the JSON to access the fridge property
|
|
47
|
+
try {
|
|
48
|
+
const temps = JSON.parse(r);
|
|
49
|
+
const fridgeTempF = temps.fridge || temps.Fridge;
|
|
50
|
+
this.debugLog(`Fridge temp: ${fridgeTempF}°F`);
|
|
51
|
+
if (!fridgeTempF || Number.isNaN(Number(fridgeTempF))) {
|
|
52
|
+
this.warnLog?.(`Fridge Temperature: Failed to parse temperature from ${r}`);
|
|
53
|
+
return 2.8; // Default to ~37°F in Celsius
|
|
54
|
+
}
|
|
55
|
+
// Convert Fahrenheit to Celsius for HomeKit
|
|
56
|
+
const fridgeTempC = (Number(fridgeTempF) - 32) * 5 / 9;
|
|
57
|
+
return fridgeTempC;
|
|
28
58
|
}
|
|
59
|
+
catch (parseError) {
|
|
60
|
+
this.warnLog?.(`Fridge Temperature: JSON parse error: ${parseError}`);
|
|
61
|
+
return 2.8;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
catch (error) {
|
|
65
|
+
this.warnLog?.(`Fridge Temperature readErd error: ${error?.message ?? error}`);
|
|
66
|
+
return 2.8; // Default to ~37°F in Celsius
|
|
67
|
+
}
|
|
68
|
+
});
|
|
69
|
+
// Freezer Temperature Sensor
|
|
70
|
+
const freezerTempService = this.accessory.getService('Freezer Temperature') ?? this.accessory.addService(this.platform.Service.TemperatureSensor, 'Freezer Temperature', 'FreezerTemp');
|
|
71
|
+
freezerTempService.setCharacteristic(this.platform.Characteristic.Name, 'Freezer Temperature');
|
|
72
|
+
freezerTempService
|
|
73
|
+
.getCharacteristic(this.platform.Characteristic.CurrentTemperature)
|
|
74
|
+
.onGet(async () => {
|
|
75
|
+
try {
|
|
76
|
+
const r = await this.readErd(ERD_TYPES.CURRENT_TEMPERATURE);
|
|
77
|
+
this.debugLog(`Raw CURRENT_TEMPERATURE ERD response: ${r}`);
|
|
78
|
+
// Check if response is valid
|
|
79
|
+
if (!r || r === 'undefined' || r === 'null') {
|
|
80
|
+
this.warnLog?.(`Freezer Temperature: Invalid ERD response`);
|
|
81
|
+
return -17.8; // Default to ~0°F in Celsius
|
|
82
|
+
}
|
|
83
|
+
// The CURRENT_TEMPERATURE ERD returns a JSON object with fridge and freezer properties
|
|
84
|
+
try {
|
|
85
|
+
const temps = JSON.parse(r);
|
|
86
|
+
const freezerTempF = temps.freezer || temps.Freezer;
|
|
87
|
+
this.debugLog(`Freezer temp: ${freezerTempF}°F`);
|
|
88
|
+
if (!freezerTempF || Number.isNaN(Number(freezerTempF))) {
|
|
89
|
+
this.warnLog?.(`Freezer Temperature: Failed to parse temperature from ${r}`);
|
|
90
|
+
return -17.8; // Default to ~0°F in Celsius
|
|
91
|
+
}
|
|
92
|
+
// Convert Fahrenheit to Celsius for HomeKit
|
|
93
|
+
const freezerTempC = (Number(freezerTempF) - 32) * 5 / 9;
|
|
94
|
+
return freezerTempC;
|
|
95
|
+
}
|
|
96
|
+
catch (parseError) {
|
|
97
|
+
this.warnLog?.(`Freezer Temperature: JSON parse error: ${parseError}`);
|
|
98
|
+
return -17.8;
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
catch (error) {
|
|
102
|
+
this.warnLog?.(`Freezer Temperature readErd error: ${error?.message ?? error}`);
|
|
103
|
+
return -17.8; // Default to ~0°F in Celsius
|
|
104
|
+
}
|
|
105
|
+
});
|
|
106
|
+
// Air Filter Maintenance
|
|
107
|
+
const filterService = this.accessory.getService('Air Filter') ?? this.accessory.addService(this.platform.Service.FilterMaintenance, 'Air Filter', 'AirFilter');
|
|
108
|
+
filterService.setCharacteristic(this.platform.Characteristic.Name, 'Air Filter');
|
|
109
|
+
filterService
|
|
110
|
+
.getCharacteristic(this.platform.Characteristic.FilterChangeIndication)
|
|
111
|
+
.onGet(async () => {
|
|
112
|
+
try {
|
|
113
|
+
const r = await this.readErd(ERD_TYPES.AIR_FILTER_STATUS);
|
|
114
|
+
return Number.parseInt(r) === 1
|
|
115
|
+
? this.platform.Characteristic.FilterChangeIndication.CHANGE_FILTER
|
|
116
|
+
: this.platform.Characteristic.FilterChangeIndication.FILTER_OK;
|
|
117
|
+
}
|
|
118
|
+
catch (error) {
|
|
119
|
+
this.warnLog?.(`Air Filter Status readErd error: ${error?.message ?? error}`);
|
|
120
|
+
return this.platform.Characteristic.FilterChangeIndication.FILTER_OK;
|
|
121
|
+
}
|
|
122
|
+
});
|
|
123
|
+
// Ice Maker Control (Switch)
|
|
124
|
+
const iceMakerService = this.accessory.getService('Ice Maker') ?? this.accessory.addService(this.platform.Service.Switch, 'Ice Maker', 'IceMaker');
|
|
125
|
+
iceMakerService.setCharacteristic(this.platform.Characteristic.Name, 'Ice Maker');
|
|
126
|
+
iceMakerService
|
|
127
|
+
.getCharacteristic(this.platform.Characteristic.On)
|
|
128
|
+
.onGet(async () => {
|
|
129
|
+
try {
|
|
130
|
+
const r = await this.readErd(ERD_TYPES.ICE_MAKER_CONTROL);
|
|
131
|
+
return Number.parseInt(r) !== 0;
|
|
132
|
+
}
|
|
133
|
+
catch (error) {
|
|
134
|
+
this.warnLog?.(`Ice Maker Control readErd error: ${error?.message ?? error}`);
|
|
135
|
+
return false;
|
|
136
|
+
}
|
|
137
|
+
})
|
|
138
|
+
.onSet(async (value) => {
|
|
139
|
+
try {
|
|
140
|
+
await this.writeErd(ERD_TYPES.ICE_MAKER_CONTROL, value);
|
|
141
|
+
}
|
|
142
|
+
catch (error) {
|
|
143
|
+
this.warnLog?.(`Ice Maker Control writeErd error: ${error?.message ?? error}`);
|
|
144
|
+
}
|
|
145
|
+
});
|
|
146
|
+
// Turbo Cool Switch
|
|
147
|
+
const turboCoolService = this.accessory.getService('Turbo Cool') ?? this.accessory.addService(this.platform.Service.Switch, 'Turbo Cool', 'TurboCool');
|
|
148
|
+
turboCoolService.setCharacteristic(this.platform.Characteristic.Name, 'Turbo Cool');
|
|
149
|
+
turboCoolService
|
|
150
|
+
.getCharacteristic(this.platform.Characteristic.On)
|
|
151
|
+
.onGet(async () => {
|
|
152
|
+
try {
|
|
153
|
+
const r = await this.readErd(ERD_TYPES.TURBO_COOL_STATUS);
|
|
154
|
+
return Number.parseInt(r) !== 0;
|
|
155
|
+
}
|
|
156
|
+
catch (error) {
|
|
157
|
+
this.warnLog?.(`Turbo Cool Status readErd error: ${error?.message ?? error}`);
|
|
158
|
+
return false;
|
|
159
|
+
}
|
|
160
|
+
})
|
|
161
|
+
.onSet(async (value) => {
|
|
162
|
+
try {
|
|
163
|
+
await this.writeErd(ERD_TYPES.TURBO_COOL_STATUS, value);
|
|
164
|
+
}
|
|
165
|
+
catch (error) {
|
|
166
|
+
this.warnLog?.(`Turbo Cool Status writeErd error: ${error?.message ?? error}`);
|
|
167
|
+
}
|
|
168
|
+
});
|
|
169
|
+
// Turbo Freeze Switch
|
|
170
|
+
const turboFreezeService = this.accessory.getService('Turbo Freeze') ?? this.accessory.addService(this.platform.Service.Switch, 'Turbo Freeze', 'TurboFreeze');
|
|
171
|
+
turboFreezeService.setCharacteristic(this.platform.Characteristic.Name, 'Turbo Freeze');
|
|
172
|
+
turboFreezeService
|
|
173
|
+
.getCharacteristic(this.platform.Characteristic.On)
|
|
174
|
+
.onGet(async () => {
|
|
175
|
+
try {
|
|
176
|
+
const r = await this.readErd(ERD_TYPES.TURBO_FREEZE_STATUS);
|
|
177
|
+
return Number.parseInt(r) !== 0;
|
|
178
|
+
}
|
|
179
|
+
catch (error) {
|
|
180
|
+
this.warnLog?.(`Turbo Freeze Status readErd error: ${error?.message ?? error}`);
|
|
181
|
+
return false;
|
|
182
|
+
}
|
|
183
|
+
})
|
|
184
|
+
.onSet(async (value) => {
|
|
185
|
+
try {
|
|
186
|
+
await this.writeErd(ERD_TYPES.TURBO_FREEZE_STATUS, value);
|
|
187
|
+
}
|
|
188
|
+
catch (error) {
|
|
189
|
+
this.warnLog?.(`Turbo Freeze Status writeErd error: ${error?.message ?? error}`);
|
|
29
190
|
}
|
|
30
191
|
});
|
|
31
192
|
// this is subject we use to track when we need to POST changes to the SmartHQ API
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"refrigerator.js","sourceRoot":"","sources":["../../src/devices/refrigerator.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,MAAM,CAAA;AAE1C,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAC1C,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAExC,MAAM,OAAO,mBAAoB,SAAQ,UAAU;IAMtC;IAEA;IAPX,UAAU;IACV,sBAAsB,CAAU;IAChC,YAAY,CAAK;IAEjB,YACW,QAAyB,EAClC,SAA4C,EACnC,MAAgD;QAEzD,KAAK,CAAC,QAAQ,EAAE,SAAS,EAAE,MAAM,CAAC,CAAA;QAJzB,aAAQ,GAAR,QAAQ,CAAiB;QAEzB,WAAM,GAAN,MAAM,CAA0C;QAIzD,IAAI,CAAC,QAAQ,CAAC,0BAA0B,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAA;
|
|
1
|
+
{"version":3,"file":"refrigerator.js","sourceRoot":"","sources":["../../src/devices/refrigerator.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { PlatformAccessory } from 'homebridge';
|
|
2
|
+
import type { SmartHQPlatform } from '../platform.js';
|
|
3
|
+
import type { devicesConfig, SmartHqContext } from '../settings.js';
|
|
4
|
+
import { deviceBase } from './device.js';
|
|
5
|
+
export declare class SmartHQWaterFilter extends deviceBase {
|
|
6
|
+
readonly platform: SmartHQPlatform;
|
|
7
|
+
readonly device: SmartHqContext['device'] & devicesConfig;
|
|
8
|
+
constructor(platform: SmartHQPlatform, accessory: PlatformAccessory<SmartHqContext>, device: SmartHqContext['device'] & devicesConfig);
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=waterFilter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"waterFilter.d.ts","sourceRoot":"","sources":["../../src/devices/waterFilter.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA;AAEnD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA;AACrD,OAAO,KAAK,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAEnE,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAExC,qBAAa,kBAAmB,SAAQ,UAAU;IAE9C,QAAQ,CAAC,QAAQ,EAAE,eAAe;IAElC,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC,QAAQ,CAAC,GAAG,aAAa;gBAFhD,QAAQ,EAAE,eAAe,EAClC,SAAS,EAAE,iBAAiB,CAAC,cAAc,CAAC,EACnC,MAAM,EAAE,cAAc,CAAC,QAAQ,CAAC,GAAG,aAAa;CA4D5D"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import { deviceBase } from './device.js';
|
|
2
|
+
export class SmartHQWaterFilter extends deviceBase {
|
|
3
|
+
platform;
|
|
4
|
+
device;
|
|
5
|
+
constructor(platform, accessory, device) {
|
|
6
|
+
super(platform, accessory, device);
|
|
7
|
+
this.platform = platform;
|
|
8
|
+
this.device = device;
|
|
9
|
+
this.debugLog(`Water Filter Features: ${JSON.stringify(accessory.context.device.features)}`);
|
|
10
|
+
// Water Filter Maintenance
|
|
11
|
+
const filterService = this.accessory.getService('Water Filter') ?? this.accessory.addService(this.platform.Service.FilterMaintenance, 'Water Filter', 'WaterFilter');
|
|
12
|
+
filterService.setCharacteristic(this.platform.Characteristic.Name, 'Water Filter');
|
|
13
|
+
filterService
|
|
14
|
+
.getCharacteristic(this.platform.Characteristic.FilterChangeIndication)
|
|
15
|
+
.onGet(async () => {
|
|
16
|
+
try {
|
|
17
|
+
// TODO: Implement filter status ERD
|
|
18
|
+
return this.platform.Characteristic.FilterChangeIndication.FILTER_OK;
|
|
19
|
+
}
|
|
20
|
+
catch (error) {
|
|
21
|
+
this.warnLog?.(`Water Filter Status error: ${error?.message ?? error}`);
|
|
22
|
+
return this.platform.Characteristic.FilterChangeIndication.FILTER_OK;
|
|
23
|
+
}
|
|
24
|
+
});
|
|
25
|
+
filterService
|
|
26
|
+
.getCharacteristic(this.platform.Characteristic.FilterLifeLevel)
|
|
27
|
+
.onGet(async () => {
|
|
28
|
+
try {
|
|
29
|
+
// TODO: Implement filter life percentage ERD
|
|
30
|
+
return 100;
|
|
31
|
+
}
|
|
32
|
+
catch (error) {
|
|
33
|
+
this.warnLog?.(`Water Filter Life error: ${error?.message ?? error}`);
|
|
34
|
+
return 100;
|
|
35
|
+
}
|
|
36
|
+
});
|
|
37
|
+
// Water Flow Valve
|
|
38
|
+
const valveService = this.accessory.getService('Water Flow') ?? this.accessory.addService(this.platform.Service.Valve, 'Water Flow', 'WaterFlow');
|
|
39
|
+
valveService.setCharacteristic(this.platform.Characteristic.Name, 'Water Flow');
|
|
40
|
+
valveService.setCharacteristic(this.platform.Characteristic.ValveType, this.platform.Characteristic.ValveType.WATER_FAUCET);
|
|
41
|
+
valveService
|
|
42
|
+
.getCharacteristic(this.platform.Characteristic.Active)
|
|
43
|
+
.onGet(async () => {
|
|
44
|
+
try {
|
|
45
|
+
// TODO: Implement water flow state ERD
|
|
46
|
+
return this.platform.Characteristic.Active.ACTIVE;
|
|
47
|
+
}
|
|
48
|
+
catch (error) {
|
|
49
|
+
this.warnLog?.(`Water Flow error: ${error?.message ?? error}`);
|
|
50
|
+
return this.platform.Characteristic.Active.INACTIVE;
|
|
51
|
+
}
|
|
52
|
+
});
|
|
53
|
+
valveService
|
|
54
|
+
.getCharacteristic(this.platform.Characteristic.InUse)
|
|
55
|
+
.onGet(async () => {
|
|
56
|
+
try {
|
|
57
|
+
// TODO: Implement water flow state ERD
|
|
58
|
+
return this.platform.Characteristic.InUse.IN_USE;
|
|
59
|
+
}
|
|
60
|
+
catch (error) {
|
|
61
|
+
this.warnLog?.(`Water Flow InUse error: ${error?.message ?? error}`);
|
|
62
|
+
return this.platform.Characteristic.InUse.NOT_IN_USE;
|
|
63
|
+
}
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
//# sourceMappingURL=waterFilter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"waterFilter.js","sourceRoot":"","sources":["../../src/devices/waterFilter.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { PlatformAccessory } from 'homebridge';
|
|
2
|
+
import type { SmartHQPlatform } from '../platform.js';
|
|
3
|
+
import type { devicesConfig, SmartHqContext } from '../settings.js';
|
|
4
|
+
import { deviceBase } from './device.js';
|
|
5
|
+
export declare class SmartHQWaterHeater extends deviceBase {
|
|
6
|
+
readonly platform: SmartHQPlatform;
|
|
7
|
+
readonly device: SmartHqContext['device'] & devicesConfig;
|
|
8
|
+
constructor(platform: SmartHQPlatform, accessory: PlatformAccessory<SmartHqContext>, device: SmartHqContext['device'] & devicesConfig);
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=waterHeater.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"waterHeater.d.ts","sourceRoot":"","sources":["../../src/devices/waterHeater.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA;AAEnD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA;AACrD,OAAO,KAAK,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAEnE,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAExC,qBAAa,kBAAmB,SAAQ,UAAU;IAE9C,QAAQ,CAAC,QAAQ,EAAE,eAAe;IAElC,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC,QAAQ,CAAC,GAAG,aAAa;gBAFhD,QAAQ,EAAE,eAAe,EAClC,SAAS,EAAE,iBAAiB,CAAC,cAAc,CAAC,EACnC,MAAM,EAAE,cAAc,CAAC,QAAQ,CAAC,GAAG,aAAa;CAwF5D"}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
import { deviceBase } from './device.js';
|
|
2
|
+
export class SmartHQWaterHeater extends deviceBase {
|
|
3
|
+
platform;
|
|
4
|
+
device;
|
|
5
|
+
constructor(platform, accessory, device) {
|
|
6
|
+
super(platform, accessory, device);
|
|
7
|
+
this.platform = platform;
|
|
8
|
+
this.device = device;
|
|
9
|
+
this.debugLog(`Water Heater Features: ${JSON.stringify(accessory.context.device.features)}`);
|
|
10
|
+
// Water Heater as Thermostat
|
|
11
|
+
const heaterService = this.accessory.getService('Water Heater') ?? this.accessory.addService(this.platform.Service.Thermostat, 'Water Heater', 'WaterHeater');
|
|
12
|
+
heaterService.setCharacteristic(this.platform.Characteristic.Name, 'Water Heater');
|
|
13
|
+
heaterService
|
|
14
|
+
.getCharacteristic(this.platform.Characteristic.CurrentHeatingCoolingState)
|
|
15
|
+
.onGet(async () => {
|
|
16
|
+
try {
|
|
17
|
+
// TODO: Implement heating state ERD
|
|
18
|
+
return this.platform.Characteristic.CurrentHeatingCoolingState.HEAT;
|
|
19
|
+
}
|
|
20
|
+
catch (error) {
|
|
21
|
+
this.warnLog?.(`Water Heater State error: ${error?.message ?? error}`);
|
|
22
|
+
return this.platform.Characteristic.CurrentHeatingCoolingState.OFF;
|
|
23
|
+
}
|
|
24
|
+
});
|
|
25
|
+
heaterService
|
|
26
|
+
.getCharacteristic(this.platform.Characteristic.TargetHeatingCoolingState)
|
|
27
|
+
.setProps({
|
|
28
|
+
validValues: [this.platform.Characteristic.TargetHeatingCoolingState.OFF, this.platform.Characteristic.TargetHeatingCoolingState.HEAT],
|
|
29
|
+
})
|
|
30
|
+
.onGet(async () => {
|
|
31
|
+
try {
|
|
32
|
+
// TODO: Implement target state ERD
|
|
33
|
+
return this.platform.Characteristic.TargetHeatingCoolingState.HEAT;
|
|
34
|
+
}
|
|
35
|
+
catch (error) {
|
|
36
|
+
this.warnLog?.(`Water Heater Target State error: ${error?.message ?? error}`);
|
|
37
|
+
return this.platform.Characteristic.TargetHeatingCoolingState.OFF;
|
|
38
|
+
}
|
|
39
|
+
})
|
|
40
|
+
.onSet(async (value) => {
|
|
41
|
+
try {
|
|
42
|
+
// TODO: Implement target state control ERD
|
|
43
|
+
this.debugLog(`Water Heater set to: ${value}`);
|
|
44
|
+
}
|
|
45
|
+
catch (error) {
|
|
46
|
+
this.warnLog?.(`Water Heater Target State set error: ${error?.message ?? error}`);
|
|
47
|
+
}
|
|
48
|
+
});
|
|
49
|
+
heaterService
|
|
50
|
+
.getCharacteristic(this.platform.Characteristic.CurrentTemperature)
|
|
51
|
+
.onGet(async () => {
|
|
52
|
+
try {
|
|
53
|
+
// TODO: Implement current temperature ERD
|
|
54
|
+
return 50;
|
|
55
|
+
}
|
|
56
|
+
catch (error) {
|
|
57
|
+
this.warnLog?.(`Water Heater Current Temp error: ${error?.message ?? error}`);
|
|
58
|
+
return 50;
|
|
59
|
+
}
|
|
60
|
+
});
|
|
61
|
+
heaterService
|
|
62
|
+
.getCharacteristic(this.platform.Characteristic.TargetTemperature)
|
|
63
|
+
.setProps({
|
|
64
|
+
minValue: 40,
|
|
65
|
+
maxValue: 60,
|
|
66
|
+
minStep: 1,
|
|
67
|
+
})
|
|
68
|
+
.onGet(async () => {
|
|
69
|
+
try {
|
|
70
|
+
// TODO: Implement target temperature ERD
|
|
71
|
+
return 50;
|
|
72
|
+
}
|
|
73
|
+
catch (error) {
|
|
74
|
+
this.warnLog?.(`Water Heater Target Temp error: ${error?.message ?? error}`);
|
|
75
|
+
return 50;
|
|
76
|
+
}
|
|
77
|
+
})
|
|
78
|
+
.onSet(async (value) => {
|
|
79
|
+
try {
|
|
80
|
+
// TODO: Implement target temperature control ERD
|
|
81
|
+
this.debugLog(`Water Heater temperature set to: ${value}°C`);
|
|
82
|
+
}
|
|
83
|
+
catch (error) {
|
|
84
|
+
this.warnLog?.(`Water Heater Target Temp set error: ${error?.message ?? error}`);
|
|
85
|
+
}
|
|
86
|
+
});
|
|
87
|
+
heaterService
|
|
88
|
+
.getCharacteristic(this.platform.Characteristic.TemperatureDisplayUnits)
|
|
89
|
+
.onGet(async () => this.platform.Characteristic.TemperatureDisplayUnits.CELSIUS)
|
|
90
|
+
.onSet(async (value) => {
|
|
91
|
+
this.debugLog(`Water Heater display units set to: ${value}`);
|
|
92
|
+
});
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
//# sourceMappingURL=waterHeater.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"waterHeater.js","sourceRoot":"","sources":["../../src/devices/waterHeater.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAExC,MAAM,OAAO,kBAAmB,SAAQ,UAAU;IAErC;IAEA;IAHX,YACW,QAAyB,EAClC,SAA4C,EACnC,MAAgD;QAEzD,KAAK,CAAC,QAAQ,EAAE,SAAS,EAAE,MAAM,CAAC,CAAA;QAJzB,aAAQ,GAAR,QAAQ,CAAiB;QAEzB,WAAM,GAAN,MAAM,CAA0C;QAGzD,IAAI,CAAC,QAAQ,CAAC,0BAA0B,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAA;QAE5F,6BAA6B;QAC7B,MAAM,aAAa,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,cAAc,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,EAAE,cAAc,EAAE,aAAa,CAAC,CAAA;QAC7J,aAAa,CAAC,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,EAAE,cAAc,CAAC,CAAA;QAElF,aAAa;aACV,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,0BAA0B,CAAC;aAC1E,KAAK,CAAC,KAAK,IAAI,EAAE;YAChB,IAAI,CAAC;gBACH,oCAAoC;gBACpC,OAAO,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,0BAA0B,CAAC,IAAI,CAAA;YACrE,CAAC;YAAC,OAAO,KAAU,EAAE,CAAC;gBACpB,IAAI,CAAC,OAAO,EAAE,CAAC,6BAA6B,KAAK,EAAE,OAAO,IAAI,KAAK,EAAE,CAAC,CAAA;gBACtE,OAAO,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,0BAA0B,CAAC,GAAG,CAAA;YACpE,CAAC;QACH,CAAC,CAAC,CAAA;QAEJ,aAAa;aACV,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,yBAAyB,CAAC;aACzE,QAAQ,CAAC;YACR,WAAW,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,yBAAyB,CAAC,GAAG,EAAE,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,yBAAyB,CAAC,IAAI,CAAC;SACvI,CAAC;aACD,KAAK,CAAC,KAAK,IAAI,EAAE;YAChB,IAAI,CAAC;gBACH,mCAAmC;gBACnC,OAAO,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,yBAAyB,CAAC,IAAI,CAAA;YACpE,CAAC;YAAC,OAAO,KAAU,EAAE,CAAC;gBACpB,IAAI,CAAC,OAAO,EAAE,CAAC,oCAAoC,KAAK,EAAE,OAAO,IAAI,KAAK,EAAE,CAAC,CAAA;gBAC7E,OAAO,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,yBAAyB,CAAC,GAAG,CAAA;YACnE,CAAC;QACH,CAAC,CAAC;aACD,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;YACrB,IAAI,CAAC;gBACH,2CAA2C;gBAC3C,IAAI,CAAC,QAAQ,CAAC,wBAAwB,KAAK,EAAE,CAAC,CAAA;YAChD,CAAC;YAAC,OAAO,KAAU,EAAE,CAAC;gBACpB,IAAI,CAAC,OAAO,EAAE,CAAC,wCAAwC,KAAK,EAAE,OAAO,IAAI,KAAK,EAAE,CAAC,CAAA;YACnF,CAAC;QACH,CAAC,CAAC,CAAA;QAEJ,aAAa;aACV,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,kBAAkB,CAAC;aAClE,KAAK,CAAC,KAAK,IAAI,EAAE;YAChB,IAAI,CAAC;gBACH,0CAA0C;gBAC1C,OAAO,EAAE,CAAA;YACX,CAAC;YAAC,OAAO,KAAU,EAAE,CAAC;gBACpB,IAAI,CAAC,OAAO,EAAE,CAAC,oCAAoC,KAAK,EAAE,OAAO,IAAI,KAAK,EAAE,CAAC,CAAA;gBAC7E,OAAO,EAAE,CAAA;YACX,CAAC;QACH,CAAC,CAAC,CAAA;QAEJ,aAAa;aACV,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,iBAAiB,CAAC;aACjE,QAAQ,CAAC;YACR,QAAQ,EAAE,EAAE;YACZ,QAAQ,EAAE,EAAE;YACZ,OAAO,EAAE,CAAC;SACX,CAAC;aACD,KAAK,CAAC,KAAK,IAAI,EAAE;YAChB,IAAI,CAAC;gBACH,yCAAyC;gBACzC,OAAO,EAAE,CAAA;YACX,CAAC;YAAC,OAAO,KAAU,EAAE,CAAC;gBACpB,IAAI,CAAC,OAAO,EAAE,CAAC,mCAAmC,KAAK,EAAE,OAAO,IAAI,KAAK,EAAE,CAAC,CAAA;gBAC5E,OAAO,EAAE,CAAA;YACX,CAAC;QACH,CAAC,CAAC;aACD,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;YACrB,IAAI,CAAC;gBACH,iDAAiD;gBACjD,IAAI,CAAC,QAAQ,CAAC,oCAAoC,KAAK,IAAI,CAAC,CAAA;YAC9D,CAAC;YAAC,OAAO,KAAU,EAAE,CAAC;gBACpB,IAAI,CAAC,OAAO,EAAE,CAAC,uCAAuC,KAAK,EAAE,OAAO,IAAI,KAAK,EAAE,CAAC,CAAA;YAClF,CAAC;QACH,CAAC,CAAC,CAAA;QAEJ,aAAa;aACV,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,uBAAuB,CAAC;aACvE,KAAK,CAAC,KAAK,IAAI,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,uBAAuB,CAAC,OAAO,CAAC;aAC/E,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;YACrB,IAAI,CAAC,QAAQ,CAAC,sCAAsC,KAAK,EAAE,CAAC,CAAA;QAC9D,CAAC,CAAC,CAAA;IACN,CAAC;CACF"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { PlatformAccessory } from 'homebridge';
|
|
2
|
+
import type { SmartHQPlatform } from '../platform.js';
|
|
3
|
+
import type { devicesConfig, SmartHqContext } from '../settings.js';
|
|
4
|
+
import { deviceBase } from './device.js';
|
|
5
|
+
export declare class SmartHQWaterSoftener extends deviceBase {
|
|
6
|
+
readonly platform: SmartHQPlatform;
|
|
7
|
+
readonly device: SmartHqContext['device'] & devicesConfig;
|
|
8
|
+
constructor(platform: SmartHQPlatform, accessory: PlatformAccessory<SmartHqContext>, device: SmartHqContext['device'] & devicesConfig);
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=waterSoftener.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"waterSoftener.d.ts","sourceRoot":"","sources":["../../src/devices/waterSoftener.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA;AAEnD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA;AACrD,OAAO,KAAK,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAEnE,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAExC,qBAAa,oBAAqB,SAAQ,UAAU;IAEhD,QAAQ,CAAC,QAAQ,EAAE,eAAe;IAElC,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC,QAAQ,CAAC,GAAG,aAAa;gBAFhD,QAAQ,EAAE,eAAe,EAClC,SAAS,EAAE,iBAAiB,CAAC,cAAc,CAAC,EACnC,MAAM,EAAE,cAAc,CAAC,QAAQ,CAAC,GAAG,aAAa;CA4D5D"}
|