@homebridge-plugins/homebridge-smarthq 0.2.0-beta.13 → 0.2.0-beta.14
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/npm-version-script-esm.js +34 -22
- package/CHANGELOG.md +11 -2
- package/dist/devices/dishwasher.d.ts.map +1 -1
- package/dist/devices/dishwasher.js +1 -2
- package/dist/devices/dishwasher.js.map +1 -1
- package/dist/devices/icemaker.d.ts +12 -0
- package/dist/devices/icemaker.d.ts.map +1 -0
- package/dist/devices/icemaker.js +100 -0
- package/dist/devices/icemaker.js.map +1 -0
- package/dist/devices/oven.d.ts.map +1 -1
- package/dist/devices/oven.js +15 -18
- package/dist/devices/oven.js.map +1 -1
- package/dist/devices/refrigerator.d.ts.map +1 -1
- package/dist/devices/refrigerator.js +1 -2
- package/dist/devices/refrigerator.js.map +1 -1
- package/dist/getAccessToken.js +2 -2
- package/dist/getAccessToken.js.map +1 -1
- package/dist/index.test.d.ts +2 -0
- package/dist/index.test.d.ts.map +1 -0
- package/dist/index.test.js +14 -0
- package/dist/index.test.js.map +1 -0
- package/dist/platform.d.ts +1 -0
- package/dist/platform.d.ts.map +1 -1
- package/dist/platform.js +50 -0
- package/dist/platform.js.map +1 -1
- package/dist/settings.d.ts +7 -0
- package/dist/settings.d.ts.map +1 -1
- package/dist/settings.js +8 -0
- package/dist/settings.js.map +1 -1
- package/dist/settings.test.d.ts +2 -0
- package/dist/settings.test.d.ts.map +1 -0
- package/dist/settings.test.js +17 -0
- package/dist/settings.test.js.map +1 -0
- package/docs/assets/dmt/dmt-component-data.js +1 -0
- package/docs/assets/dmt/dmt-components.css +20 -0
- package/docs/assets/dmt/dmt-components.js +67 -0
- package/docs/assets/dmt/dmt-search.cmp +0 -0
- package/docs/assets/dmt/dmt-theme.css +1 -0
- package/docs/assets/hierarchy.js +1 -0
- package/docs/assets/icons.js +1 -1
- package/docs/assets/icons.svg +1 -1
- package/docs/assets/main.js +5 -5
- package/docs/assets/style.css +1406 -1288
- package/docs/functions/default.html +2 -1
- package/docs/index.html +22 -166
- package/docs/modules.html +2 -2
- package/package.json +32 -28
- package/typedoc.json +4 -0
- package/docs/assets/navigation.js +0 -1
- package/docs/assets/search.js +0 -1
|
@@ -9,8 +9,6 @@ import child_process from 'node:child_process'
|
|
|
9
9
|
import fs from 'node:fs'
|
|
10
10
|
import process from 'node:process'
|
|
11
11
|
|
|
12
|
-
import semver from 'semver'
|
|
13
|
-
|
|
14
12
|
const BRANCH_VERSION_PATTERN = /^([A-Z]+)-(\d+\.\d+\.\d+)$/i
|
|
15
13
|
|
|
16
14
|
// Load the contents of the package.json file
|
|
@@ -19,24 +17,29 @@ const packageJSON = JSON.parse(fs.readFileSync('package.json', 'utf8'))
|
|
|
19
17
|
const refArgument = process.argv[2]
|
|
20
18
|
const tagArgument = process.argv[3] || 'latest'
|
|
21
19
|
|
|
22
|
-
if (refArgument
|
|
20
|
+
if (!refArgument) {
|
|
23
21
|
console.error('ref argument is missing')
|
|
24
22
|
console.error('Usage: npm-version-script-esm.js <ref> [tag]')
|
|
25
23
|
process.exit(1)
|
|
26
24
|
}
|
|
27
25
|
|
|
28
26
|
/**
|
|
29
|
-
* Queries the NPM registry for the latest version for the provided tag.
|
|
30
|
-
*
|
|
31
|
-
*
|
|
27
|
+
* Queries the NPM registry for the latest version for the provided base version and tag.
|
|
28
|
+
* If the tag is latest, then the base version is returned if it exists. For other tags, the latest
|
|
29
|
+
* version found for that base version and tag is returned.
|
|
30
|
+
* @param baseVersion The base version to query for, e.g. 2.0.0
|
|
31
|
+
* @param tag The tag to query for, e.g. beta or latest
|
|
32
|
+
* @returns {string} Returns the version, or '' if not found
|
|
32
33
|
*/
|
|
33
|
-
function getTagVersionFromNpm(tag) {
|
|
34
|
+
function getTagVersionFromNpm(baseVersion, tag) {
|
|
34
35
|
try {
|
|
35
|
-
return child_process.execSync(`npm info ${packageJSON.name}
|
|
36
|
+
return JSON.parse(child_process.execSync(`npm info ${packageJSON.name} versions --json`).toString('utf8').trim())
|
|
37
|
+
.filter(v => tag === 'latest' ? v === baseVersion : v.startsWith(`${baseVersion}-${tag}.`)) // find all published versions for this base version and tag
|
|
38
|
+
.reduce((_, current) => current, '') // choose the last as they're sorted in ascending order, or '' if there are none
|
|
36
39
|
} catch (e) {
|
|
37
|
-
console.error(`Failed to query the npm registry for the latest version for tag: ${tag}
|
|
40
|
+
console.error(`Failed to query the npm registry for the latest version for tag: ${tag}`, e)
|
|
38
41
|
// throw e;
|
|
39
|
-
return '
|
|
42
|
+
return ''
|
|
40
43
|
}
|
|
41
44
|
}
|
|
42
45
|
|
|
@@ -65,21 +68,30 @@ function desiredTargetVersion(ref) {
|
|
|
65
68
|
const baseVersion = desiredTargetVersion(refArgument)
|
|
66
69
|
|
|
67
70
|
// query the npm registry for the latest version of the provided tag name
|
|
68
|
-
const latestReleasedVersion = getTagVersionFromNpm(tagArgument) // e.g. 0.7.0-beta.12
|
|
69
|
-
const latestReleaseBase = semver.inc(latestReleasedVersion, 'patch') // will produce 0.7.0 (removing the preid, needed for the equality check below)
|
|
71
|
+
const latestReleasedVersion = getTagVersionFromNpm(baseVersion, tagArgument) // e.g. 0.7.0-beta.12
|
|
70
72
|
|
|
71
73
|
let publishTag
|
|
72
|
-
|
|
73
|
-
|
|
74
|
+
|
|
75
|
+
if (latestReleasedVersion) {
|
|
76
|
+
console.warn(`Latest published version for ${baseVersion} with tag ${tagArgument} is ${latestReleasedVersion}`)
|
|
77
|
+
publishTag = latestReleasedVersion // set this released beta or alpha to be incremented
|
|
74
78
|
} else {
|
|
75
|
-
|
|
79
|
+
console.warn(`No published versions for ${baseVersion} with tag ${tagArgument}`)
|
|
80
|
+
publishTag = baseVersion // start off with a new beta or alpha version
|
|
76
81
|
}
|
|
77
82
|
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
83
|
+
if (packageJSON.version !== publishTag) {
|
|
84
|
+
// report the change for CI
|
|
85
|
+
console.warn(`Changing version in package.json from ${packageJSON.version} to ${publishTag}`)
|
|
86
|
+
|
|
87
|
+
// save the package.json
|
|
88
|
+
packageJSON.version = publishTag
|
|
89
|
+
fs.writeFileSync('package.json', JSON.stringify(packageJSON, null, 2))
|
|
81
90
|
|
|
82
|
-
// perform the same change to the package-lock.json
|
|
83
|
-
const packageLockJSON = JSON.parse(fs.readFileSync('package-lock.json', 'utf8'))
|
|
84
|
-
packageLockJSON.version = publishTag
|
|
85
|
-
fs.writeFileSync('package-lock.json', JSON.stringify(packageLockJSON, null, 2))
|
|
91
|
+
// perform the same change to the package-lock.json
|
|
92
|
+
const packageLockJSON = JSON.parse(fs.readFileSync('package-lock.json', 'utf8'))
|
|
93
|
+
packageLockJSON.version = publishTag
|
|
94
|
+
fs.writeFileSync('package-lock.json', JSON.stringify(packageLockJSON, null, 2))
|
|
95
|
+
} else {
|
|
96
|
+
console.warn(`Leaving version in package.json at ${packageJSON.version}`)
|
|
97
|
+
}
|
package/CHANGELOG.md
CHANGED
|
@@ -2,13 +2,22 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to this project will be documented in this file. This project uses [Semantic Versioning](https://semver.org/)
|
|
4
4
|
|
|
5
|
-
## [1.0.0](https://github.com/homebridge-plugins/homebridge-smarthq/
|
|
5
|
+
## [1.0.0](https://github.com/homebridge-plugins/homebridge-smarthq/releases/tag/v1.0.0) (2025-XX-XX)
|
|
6
6
|
|
|
7
7
|
### What's Changes
|
|
8
8
|
|
|
9
9
|
- Release of [@homebridge-plugins/homebridge-smarthq](https://github.com/homebridge-plugins/homebridge-smarthq) which allows to interact with SmartHQ API.
|
|
10
10
|
|
|
11
|
-
**Full Changelog**: https://github.com/homebridge-plugins/homebridge-smarthq/compare/v0.
|
|
11
|
+
**Full Changelog**: https://github.com/homebridge-plugins/homebridge-smarthq/compare/v0.2.0...v1.0.0
|
|
12
|
+
|
|
13
|
+
## [0.2.0](https://github.com/homebridge-plugins/homebridge-smarthq/releases/tag/v0.2.0) (2025-02-23)
|
|
14
|
+
|
|
15
|
+
### What's Changes
|
|
16
|
+
|
|
17
|
+
- Basic Support for Opal Ice Maker 2.0. [#14](https://github.com/homebridge-plugins/homebridge-smarthq/pull/14), Thanks [@jamesh48](https://github.com/jamesh48)
|
|
18
|
+
- Basic Support for Ovens
|
|
19
|
+
|
|
20
|
+
**Full Changelog**: https://github.com/homebridge-plugins/homebridge-smarthq/compare/v0.1.0...v0.2.0
|
|
12
21
|
|
|
13
22
|
## [0.1.0](https://github.com/homebridge-plugins/homebridge-smarthq/releases/tag/v0.1.0) (2024-09-07)
|
|
14
23
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dishwasher.d.ts","sourceRoot":"","sources":["../../src/devices/dishwasher.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAuB,iBAAiB,EAAW,MAAM,YAAY,CAAA;AAEjF,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,iBAAkB,SAAQ,UAAU;IAa7C,QAAQ,CAAC,QAAQ,EAAE,eAAe;IAElC,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC,QAAQ,CAAC,GAAG,aAAa;IAb3D,OAAO,CAAC,UAAU,CAIjB;IAGD,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":"dishwasher.d.ts","sourceRoot":"","sources":["../../src/devices/dishwasher.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAuB,iBAAiB,EAAW,MAAM,YAAY,CAAA;AAEjF,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,iBAAkB,SAAQ,UAAU;IAa7C,QAAQ,CAAC,QAAQ,EAAE,eAAe;IAElC,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC,QAAQ,CAAC,GAAG,aAAa;IAb3D,OAAO,CAAC,UAAU,CAIjB;IAGD,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;IAiCrD,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAMrC,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO;CAWpD"}
|
|
@@ -18,8 +18,7 @@ export class SmartHQDishWasher extends deviceBase {
|
|
|
18
18
|
accessory.context.device.features.forEach((feature) => {
|
|
19
19
|
switch (feature) {
|
|
20
20
|
case 'DISHWASHER_V1_FOUNDATION': {
|
|
21
|
-
const dishwasher = this.accessory.getService(accessory.displayName)
|
|
22
|
-
|| this.accessory.addService(this.platform.Service.Lightbulb, accessory.displayName, 'Dishwasher');
|
|
21
|
+
const dishwasher = this.accessory.getService(accessory.displayName) ?? this.accessory.addService(this.platform.Service.Lightbulb, accessory.displayName, 'Dishwasher');
|
|
23
22
|
dishwasher
|
|
24
23
|
.getCharacteristic(this.platform.Characteristic.On)
|
|
25
24
|
.onGet(() => this.readErd(ERD_TYPES.DISHWASHER_CYCLE).then(r => Number.parseInt(r) !== 0))
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dishwasher.js","sourceRoot":"","sources":["../../src/devices/dishwasher.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,iBAAkB,SAAQ,UAAU;IAapC;IAEA;IAdX,UAAU;IACF,UAAU,CAIjB;IAED,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,wBAAwB,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAA;QAC1F,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;YACpD,QAAQ,OAAO,EAAE,CAAC;gBAChB,KAAK,0BAA0B,CAAC,CAAC,CAAC;oBAChC,MAAM,UAAU,
|
|
1
|
+
{"version":3,"file":"dishwasher.js","sourceRoot":"","sources":["../../src/devices/dishwasher.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
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 SmartHQIceMaker extends deviceBase {
|
|
6
|
+
readonly platform: SmartHQPlatform;
|
|
7
|
+
readonly device: SmartHqContext['device'] & devicesConfig;
|
|
8
|
+
constructor(platform: SmartHQPlatform, accessory: PlatformAccessory<SmartHqContext>, device: SmartHqContext['device'] & devicesConfig);
|
|
9
|
+
readErd(erd: string): Promise<string>;
|
|
10
|
+
writeErd(erd: string, value: string | boolean): Promise<undefined>;
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=icemaker.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"icemaker.d.ts","sourceRoot":"","sources":["../../src/devices/icemaker.ts"],"names":[],"mappings":"AAAA,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;AAKnE,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAExC,qBAAa,eAAgB,SAAQ,UAAU;IAE3C,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;IA8ErD,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAMrC,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO;CAWpD"}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
import axios from 'axios';
|
|
2
|
+
import { ERD_TYPES } from '../settings.js';
|
|
3
|
+
import { deviceBase } from './device.js';
|
|
4
|
+
export class SmartHQIceMaker extends deviceBase {
|
|
5
|
+
platform;
|
|
6
|
+
device;
|
|
7
|
+
constructor(platform, accessory, device) {
|
|
8
|
+
super(platform, accessory, device);
|
|
9
|
+
this.platform = platform;
|
|
10
|
+
this.device = device;
|
|
11
|
+
this.debugLog(`Opal IceMaker Features: ${JSON.stringify(accessory.context.device.features)}`);
|
|
12
|
+
accessory.context.device.features.forEach((feature) => {
|
|
13
|
+
switch (feature) {
|
|
14
|
+
case 'OPAL_NUGGET_ICE_MAKER_V1_FOUNDATION': {
|
|
15
|
+
const opalIceMaker = this.accessory.getService(`${accessory.displayName} Power`) ?? this.accessory.addService(this.platform.Service.Switch, `${accessory.displayName} Power`, 'opal-power');
|
|
16
|
+
opalIceMaker
|
|
17
|
+
.getCharacteristic(this.platform.Characteristic.On)
|
|
18
|
+
.onGet(() => this.readErd(ERD_TYPES.OIM_POWER).then(r => Number.parseInt(r) !== 0))
|
|
19
|
+
.onSet(value => this.writeErd(ERD_TYPES.OIM_POWER, value));
|
|
20
|
+
const lightbulb = this.accessory.getService(`${accessory.displayName} Nightlight`)
|
|
21
|
+
|| this.accessory.addService(this.platform.Service.Lightbulb, `${accessory.displayName} Nightlight`);
|
|
22
|
+
lightbulb.getCharacteristic(this.platform.Characteristic.On)
|
|
23
|
+
.onGet(async () => {
|
|
24
|
+
const currentLevel = await this.readErd(ERD_TYPES.OIM_LIGHT_LEVEL);
|
|
25
|
+
return currentLevel !== '00'; // If the level is not OFF (00), return true (ON)
|
|
26
|
+
})
|
|
27
|
+
.onSet(async (value) => {
|
|
28
|
+
let newState;
|
|
29
|
+
const currentLevel = await this.readErd(ERD_TYPES.OIM_LIGHT_LEVEL);
|
|
30
|
+
if (value) {
|
|
31
|
+
// If turning the light ON, cycle through states
|
|
32
|
+
if (currentLevel === '00') {
|
|
33
|
+
newState = '02'; // LOW
|
|
34
|
+
}
|
|
35
|
+
else if (currentLevel === '02') {
|
|
36
|
+
newState = '01'; // HIGH
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
else {
|
|
40
|
+
newState = '00'; // OFF
|
|
41
|
+
}
|
|
42
|
+
await this.writeErd(ERD_TYPES.OIM_LIGHT_LEVEL, newState);
|
|
43
|
+
this.debugLog(`Light state changed to: ${newState}`);
|
|
44
|
+
});
|
|
45
|
+
lightbulb.getCharacteristic(this.platform.Characteristic.Brightness)
|
|
46
|
+
.setProps({
|
|
47
|
+
minValue: 0, // Minimum value for brightness (OFF)
|
|
48
|
+
maxValue: 100, // Maximum value for brightness (HIGH)
|
|
49
|
+
minStep: 50, // Step value (only allow OFF, LOW, and HIGH)
|
|
50
|
+
})
|
|
51
|
+
.onGet(async () => {
|
|
52
|
+
const currentLevel = await this.readErd(ERD_TYPES.OIM_LIGHT_LEVEL);
|
|
53
|
+
// Map the light level to brightness values
|
|
54
|
+
if (currentLevel === '02') { // HIGH
|
|
55
|
+
return 50; // Dim Brightness
|
|
56
|
+
}
|
|
57
|
+
else if (currentLevel === '01') { // LOW
|
|
58
|
+
return 100; // Full Brightness
|
|
59
|
+
}
|
|
60
|
+
else {
|
|
61
|
+
return 0; // OFF
|
|
62
|
+
}
|
|
63
|
+
})
|
|
64
|
+
.onSet(async (value) => {
|
|
65
|
+
let newState;
|
|
66
|
+
if (value === 50) {
|
|
67
|
+
newState = '02'; // LOW (for dim brightness)
|
|
68
|
+
}
|
|
69
|
+
else if (value === 100) {
|
|
70
|
+
newState = '01'; // HIGH (for full brightness)
|
|
71
|
+
}
|
|
72
|
+
else {
|
|
73
|
+
newState = '00'; // OFF
|
|
74
|
+
}
|
|
75
|
+
await this.writeErd(ERD_TYPES.OIM_LIGHT_LEVEL, newState);
|
|
76
|
+
this.debugLog(`Light brightness changed to: ${newState}`);
|
|
77
|
+
});
|
|
78
|
+
break;
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
async readErd(erd) {
|
|
84
|
+
const d = await axios
|
|
85
|
+
.get(`/appliance/${this.accessory.context.device.applianceId}/erd/${erd}`);
|
|
86
|
+
return String(d.data.value);
|
|
87
|
+
}
|
|
88
|
+
async writeErd(erd, value) {
|
|
89
|
+
await axios
|
|
90
|
+
.post(`/appliance/${this.accessory.context.device.applianceId}/erd/${erd}`, {
|
|
91
|
+
kind: 'appliance#erdListEntry',
|
|
92
|
+
userId: this.accessory.context.userId,
|
|
93
|
+
applianceId: this.accessory.context.device.applianceId,
|
|
94
|
+
erd,
|
|
95
|
+
value: typeof value === 'boolean' ? (value ? '01' : '00') : value,
|
|
96
|
+
});
|
|
97
|
+
return undefined;
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
//# sourceMappingURL=icemaker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"icemaker.js","sourceRoot":"","sources":["../../src/devices/icemaker.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"oven.d.ts","sourceRoot":"","sources":["../../src/devices/oven.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;AAOnE,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAExC,qBAAa,WAAY,SAAQ,UAAU;IAEvC,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;
|
|
1
|
+
{"version":3,"file":"oven.d.ts","sourceRoot":"","sources":["../../src/devices/oven.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;AAOnE,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAExC,qBAAa,WAAY,SAAQ,UAAU;IAEvC,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;IAuCrD,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAMrC,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO;CAWpD"}
|
package/dist/devices/oven.js
CHANGED
|
@@ -13,8 +13,7 @@ export class SmartHQOven extends deviceBase {
|
|
|
13
13
|
accessory.context.device.features.forEach((feature) => {
|
|
14
14
|
switch (feature) {
|
|
15
15
|
case 'COOKING_V1_UPPER_OVEN_FOUNDATION': {
|
|
16
|
-
const ovenLight = this.accessory.getService(accessory.displayName)
|
|
17
|
-
|| this.accessory.addService(this.platform.Service.Lightbulb, accessory.displayName, 'Oven');
|
|
16
|
+
const ovenLight = this.accessory.getService(accessory.displayName) ?? this.accessory.addService(this.platform.Service.Lightbulb, accessory.displayName, 'Oven');
|
|
18
17
|
ovenLight
|
|
19
18
|
.getCharacteristic(this.platform.Characteristic.On)
|
|
20
19
|
.onGet(() => this.readErd(ERD_TYPES.UPPER_OVEN_LIGHT).then(r => Number.parseInt(r) !== 0))
|
|
@@ -22,22 +21,20 @@ export class SmartHQOven extends deviceBase {
|
|
|
22
21
|
break;
|
|
23
22
|
}
|
|
24
23
|
case 'COOKING_V1_EXTENDED_COOKTOP_FOUNDATION': {
|
|
25
|
-
this.accessory.getService(accessory.displayName)
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
return this.writeErd(ERD_TYPES.UPPER_OVEN_COOK_MODE, b.toString('hex'));
|
|
40
|
-
});
|
|
24
|
+
this.accessory.getService(accessory.displayName) ?? this.accessory.addService(this.platform.Service.StatefulProgrammableSwitch, accessory.displayName, 'Oven')
|
|
25
|
+
.getCharacteristic(this.platform.Characteristic.TargetTemperature)
|
|
26
|
+
.onGet(async () => {
|
|
27
|
+
const erdVal = await this.readErd(ERD_TYPES.UPPER_OVEN_COOK_MODE);
|
|
28
|
+
const b = Buffer.from(erdVal, 'hex');
|
|
29
|
+
return fToC(b.readUint16BE(1));
|
|
30
|
+
})
|
|
31
|
+
.onSet(async (value) => {
|
|
32
|
+
const fTarget = cToF(value);
|
|
33
|
+
const erdVal = await this.readErd(ERD_TYPES.UPPER_OVEN_COOK_MODE);
|
|
34
|
+
const b = Buffer.from(erdVal, 'hex');
|
|
35
|
+
b.writeUint16BE(fTarget, 1);
|
|
36
|
+
return this.writeErd(ERD_TYPES.UPPER_OVEN_COOK_MODE, b.toString('hex'));
|
|
37
|
+
});
|
|
41
38
|
}
|
|
42
39
|
}
|
|
43
40
|
});
|
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;QACpF,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;YACpD,QAAQ,OAAO,EAAE,CAAC;gBAChB,KAAK,kCAAkC,CAAC,CAAC,CAAC;oBACxC,MAAM,SAAS,
|
|
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;IAoCrD,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAMrC,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO;CAWpD"}
|
|
@@ -19,8 +19,7 @@ export class SmartHQRefrigerator extends deviceBase {
|
|
|
19
19
|
] */
|
|
20
20
|
switch (feature) {
|
|
21
21
|
case 'DOOR_STATUS': {
|
|
22
|
-
const refrigerator = this.accessory.getService(accessory.displayName)
|
|
23
|
-
|| this.accessory.addService(this.platform.Service.ContactSensor, accessory.displayName, 'Refrigerator');
|
|
22
|
+
const refrigerator = this.accessory.getService(accessory.displayName) ?? this.accessory.addService(this.platform.Service.ContactSensor, accessory.displayName, 'Refrigerator');
|
|
24
23
|
refrigerator
|
|
25
24
|
.getCharacteristic(this.platform.Characteristic.ContactSensorState)
|
|
26
25
|
.onGet(() => this.readErd(ERD_TYPES.DOOR_STATUS).then(r => Number.parseInt(r) !== 0))
|
|
@@ -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;QAC5F,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;YACpD;;gBAEI;YACJ,QAAQ,OAAO,EAAE,CAAC;gBAChB,KAAK,aAAa,CAAC,CAAC,CAAC;oBACnB,MAAM,YAAY,
|
|
1
|
+
{"version":3,"file":"refrigerator.js","sourceRoot":"","sources":["../../src/devices/refrigerator.ts"],"names":[],"mappings":"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"}
|
package/dist/getAccessToken.js
CHANGED
|
@@ -4,9 +4,9 @@ import * as cheerio from 'cheerio';
|
|
|
4
4
|
import pkg from 'lodash';
|
|
5
5
|
import { Issuer } from 'openid-client';
|
|
6
6
|
import { CookieJar } from 'tough-cookie';
|
|
7
|
-
import {
|
|
7
|
+
import { OAUTH2_CLIENT_ID, OAUTH2_CLIENT_SECRET, OAUTH2_REDIRECT_URI } from './settings.js';
|
|
8
8
|
const { keyBy, mapValues } = pkg;
|
|
9
|
-
const oidcClient = Issuer.discover(
|
|
9
|
+
const oidcClient = Issuer.discover('https://accounts.brillion.geappliances.com/').then(geData => new geData.Client({
|
|
10
10
|
client_id: OAUTH2_CLIENT_ID,
|
|
11
11
|
client_secret: OAUTH2_CLIENT_SECRET,
|
|
12
12
|
response_types: ['code'],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getAccessToken.js","sourceRoot":"","sources":["../src/getAccessToken.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAA;AACjD,OAAO,KAAK,OAAO,MAAM,SAAS,CAAA;AAClC,OAAO,GAAG,MAAM,QAAQ,CAAA;AACxB,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAA;AACtC,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AAExC,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"getAccessToken.js","sourceRoot":"","sources":["../src/getAccessToken.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAA;AACjD,OAAO,KAAK,OAAO,MAAM,SAAS,CAAA;AAClC,OAAO,GAAG,MAAM,QAAQ,CAAA;AACxB,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAA;AACtC,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AAExC,OAAO,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAA;AAE3F,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,GAAG,CAAA;AAEhC,MAAM,UAAU,GAAG,MAAM,CAAC,QAAQ,CAAC,6CAA6C,CAAC,CAAC,IAAI,CACpF,MAAM,CAAC,EAAE,CACP,IAAI,MAAM,CAAC,MAAM,CAAC;IAChB,SAAS,EAAE,gBAAgB;IAC3B,aAAa,EAAE,oBAAoB;IACnC,cAAc,EAAE,CAAC,MAAM,CAAC;CACzB,CAAC,CACL,CAAA;AAED,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,aAAqB;IAC5D,MAAM,MAAM,GAAG,MAAM,UAAU,CAAA;IAC/B,OAAO,MAAM,CAAC,KAAK,CAAC,EAAE,aAAa,EAAE,UAAU,EAAE,eAAe,EAAE,CAAC,CAAA;AACrE,CAAC;AAED,MAAM,CAAC,OAAO,CAAC,KAAK,UAAU,cAAc,CAAC,QAAgB,EAAE,QAAgB;IAC7E,MAAM,MAAM,GAAG,MAAM,UAAU,CAAA;IAE/B,MAAM,QAAQ,GAAG,MAAM,CAAC,gBAAgB,EAAE,CAAA;IAE1C,MAAM,GAAG,GAAG,IAAI,SAAS,EAAE,CAAA;IAC3B,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,CAAA;IAC9C,MAAM,gBAAgB,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;IAEpD,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAA;IAChD,MAAM,WAAW,GAAG,SAAS,CAC3B,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,EACvD,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CACb,CAAA;IAED,MAAM,IAAI,GAAG,IAAI,eAAe,CAAC,EAAE,GAAG,WAAW,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAA;IAExE,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC;QACxB,MAAM,EAAE,MAAM;QACd,OAAO,EAAE;YACP,cAAc,EAAE,mCAAmC;YACnD,QAAQ,EAAE,4CAA4C;SACvD;QACD,GAAG,EAAE,kEAAkE;QACvE,IAAI,EAAE,IAAI;QACV,YAAY,EAAE,CAAC;QACf,cAAc,EAAE,GAAG,EAAE,CAAC,IAAI;KAC3B,CAAC,CAAA;IAEF,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;IACnE,OAAO,MAAM,CAAC,KAAK,CAAC,EAAE,UAAU,EAAE,oBAAoB,EAAE,IAAI,EAAE,YAAY,EAAE,mBAAmB,EAAE,CAAC,CAAA;AACpG,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.test.d.ts","sourceRoot":"","sources":["../src/index.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { describe, expect, it, vi } from 'vitest';
|
|
2
|
+
import registerPlatform from './index.js';
|
|
3
|
+
import { SmartHQPlatform } from './platform.js';
|
|
4
|
+
import { PLATFORM_NAME, PLUGIN_NAME } from './settings.js';
|
|
5
|
+
describe('registerPlatform', () => {
|
|
6
|
+
it('should register the platform with homebridge', () => {
|
|
7
|
+
const api = {
|
|
8
|
+
registerPlatform: vi.fn(),
|
|
9
|
+
};
|
|
10
|
+
registerPlatform(api);
|
|
11
|
+
expect(api.registerPlatform).toHaveBeenCalledWith(PLUGIN_NAME, PLATFORM_NAME, SmartHQPlatform);
|
|
12
|
+
});
|
|
13
|
+
});
|
|
14
|
+
//# sourceMappingURL=index.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.test.js","sourceRoot":"","sources":["../src/index.test.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAA;AAEjD,OAAO,gBAAgB,MAAM,YAAY,CAAA;AACzC,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAA;AAC/C,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAE1D,QAAQ,CAAC,kBAAkB,EAAE,GAAG,EAAE;IAChC,EAAE,CAAC,8CAA8C,EAAE,GAAG,EAAE;QACtD,MAAM,GAAG,GAAG;YACV,gBAAgB,EAAE,EAAE,CAAC,EAAE,EAAE;SACR,CAAA;QAEnB,gBAAgB,CAAC,GAAG,CAAC,CAAA;QAErB,MAAM,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC,oBAAoB,CAAC,WAAW,EAAE,aAAa,EAAE,eAAe,CAAC,CAAA;IAChG,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
|
package/dist/platform.d.ts
CHANGED
|
@@ -39,6 +39,7 @@ export declare class SmartHQPlatform implements DynamicPlatformPlugin {
|
|
|
39
39
|
discoverDevices(): Promise<void>;
|
|
40
40
|
private createSmartHQDishWasher;
|
|
41
41
|
private createSmartHQOven;
|
|
42
|
+
private createSmartHQIceMaker;
|
|
42
43
|
private createSmartHQRefrigerator;
|
|
43
44
|
unregisterPlatformAccessories(existingAccessory: PlatformAccessory): Promise<void>;
|
|
44
45
|
getPlatformLogSettings(): Promise<void>;
|
package/dist/platform.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"platform.d.ts","sourceRoot":"","sources":["../src/platform.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,GAAG,EAAE,qBAAqB,EAAE,GAAG,EAAE,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA;AAG7F,OAAO,KAAK,EAA8B,OAAO,EAAE,cAAc,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAA;
|
|
1
|
+
{"version":3,"file":"platform.d.ts","sourceRoot":"","sources":["../src/platform.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,GAAG,EAAE,qBAAqB,EAAE,GAAG,EAAE,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA;AAG7F,OAAO,KAAK,EAA8B,OAAO,EAAE,cAAc,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAA;AAoB/G;;;;GAIG;AACH,qBAAa,eAAgB,YAAW,qBAAqB;IACpD,WAAW,EAAE,iBAAiB,CAAC,cAAc,CAAC,EAAE,CAAA;IACvD,SAAgB,GAAG,EAAE,GAAG,CAAA;IACxB,SAAgB,GAAG,EAAE,OAAO,CAAA;IAC5B,SAAS,CAAC,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAA;IACpB,MAAM,EAAG,qBAAqB,CAAA;IAE9B,OAAO,EAAG,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAA;IACrC,cAAc,EAAG,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,cAAc,CAAA;IAC1D,OAAO,CAAC,QAAQ,CAAW;IAE3B,cAAc,EAAG,qBAAqB,CAAA;IACtC,eAAe,EAAG,OAAO,CAAC,SAAS,CAAC,CAAA;IACpC,mBAAmB,EAAG,OAAO,CAAC,aAAa,CAAC,CAAA;IAC5C,gBAAgB,EAAG,OAAO,CAAC,UAAU,CAAC,CAAA;IACtC,kBAAkB,EAAG,OAAO,CAAC,YAAY,CAAC,CAAA;IAC1C,SAAS,EAAG,OAAO,CAAA;IACnB,OAAO,EAAG,MAAM,CAAA;gBAGd,GAAG,EAAE,OAAO,EACZ,MAAM,EAAE,qBAAqB,EAC7B,GAAG,EAAE,GAAG;IAyDV;;;OAGG;IACG,kBAAkB,CAAC,SAAS,EAAE,iBAAiB,CAAC,cAAc,CAAC;IAOrE;;OAEG;IACG,YAAY;IAaZ,sBAAsB;IAsB5B;;;OAGG;IACG,eAAe;YAkHP,uBAAuB;YAiDvB,iBAAiB;YAiDjB,qBAAqB;YAgDrB,yBAAyB;IAiD1B,6BAA6B,CAAC,iBAAiB,EAAE,iBAAiB;IAMzE,sBAAsB;IAUtB,uBAAuB;IAevB,yBAAyB;IAgB/B;;;;;;;;OAQG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAMjC;;;;;;OAMG;IACG,2BAA2B,CAAC,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAgCpG;;;OAGG;IACG,OAAO,CAAC,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAMrC,UAAU,CAAC,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAMxC,eAAe,CAAC,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAQ7C,OAAO,CAAC,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAMrC,YAAY,CAAC,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAQ1C,QAAQ,CAAC,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAMtC,aAAa,CAAC,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAQ3C,QAAQ,CAAC,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAUtC,cAAc,IAAI,OAAO,CAAC,OAAO,CAAC;IAIlC,uBAAuB,IAAI,OAAO,CAAC,OAAO,CAAC;CAGlD"}
|
package/dist/platform.js
CHANGED
|
@@ -4,6 +4,7 @@ import axios from 'axios';
|
|
|
4
4
|
import pkg from 'lodash';
|
|
5
5
|
import ws from 'ws';
|
|
6
6
|
import { SmartHQDishWasher } from './devices/dishwasher.js';
|
|
7
|
+
import { SmartHQIceMaker } from './devices/icemaker.js';
|
|
7
8
|
import { SmartHQOven } from './devices/oven.js';
|
|
8
9
|
import { SmartHQRefrigerator } from './devices/refrigerator.js';
|
|
9
10
|
import getAccessToken, { refreshAccessToken } from './getAccessToken.js';
|
|
@@ -215,6 +216,9 @@ export class SmartHQPlatform {
|
|
|
215
216
|
case 'Refrigerator':
|
|
216
217
|
await this.createSmartHQRefrigerator(userId, device, details, features);
|
|
217
218
|
break;
|
|
219
|
+
case 'Opal Nugget Ice Maker':
|
|
220
|
+
await this.createSmartHQIceMaker(userId, device, details, features);
|
|
221
|
+
break;
|
|
218
222
|
default:
|
|
219
223
|
await this.warnLog(`Device Type Not Supported: ${device.type}`);
|
|
220
224
|
break;
|
|
@@ -323,6 +327,52 @@ export class SmartHQPlatform {
|
|
|
323
327
|
this.debugErrorLog(`Unable to Register new device: ${JSON.stringify(device.nickname)}`);
|
|
324
328
|
}
|
|
325
329
|
}
|
|
330
|
+
async createSmartHQIceMaker(userId, device, details, features) {
|
|
331
|
+
const uuid = this.api.hap.uuid.generate(device.applianceId);
|
|
332
|
+
// see if an accessory with the same uuid has already been registered and restored from
|
|
333
|
+
// the cached devices we stored in the `configureAccessory` method above
|
|
334
|
+
const existingAccessory = this.accessories.find(accessory => accessory.UUID === uuid);
|
|
335
|
+
if (existingAccessory) {
|
|
336
|
+
// the accessory already exists
|
|
337
|
+
if (!device.hide_device) {
|
|
338
|
+
// if you need to update the accessory.context then you should run `api.updatePlatformAccessories`. eg.:
|
|
339
|
+
existingAccessory.context.device = device;
|
|
340
|
+
existingAccessory.context = { device: { brand: 'GE', ...details, ...features }, userId };
|
|
341
|
+
existingAccessory.displayName = await this.validateAndCleanDisplayName(device.nickname, 'nickname', device.nickname);
|
|
342
|
+
existingAccessory.context.device.firmware = device.firmware ?? await this.getVersion();
|
|
343
|
+
this.api.updatePlatformAccessories([existingAccessory]);
|
|
344
|
+
// Restore accessory
|
|
345
|
+
// create the accessory handler for the restored accessory
|
|
346
|
+
// this is imported from `platformAccessory.ts`
|
|
347
|
+
new SmartHQIceMaker(this, existingAccessory, device);
|
|
348
|
+
await this.infoLog(`${device.nickname} uuid: ${device.applianceId}`);
|
|
349
|
+
}
|
|
350
|
+
else {
|
|
351
|
+
this.unregisterPlatformAccessories(existingAccessory);
|
|
352
|
+
}
|
|
353
|
+
}
|
|
354
|
+
else if (!device.hide_device && !existingAccessory) {
|
|
355
|
+
this.infoLog(`Adding new accessory: ${device.nickname}`);
|
|
356
|
+
const accessory = new this.api.platformAccessory(device.nickname, uuid);
|
|
357
|
+
// store a copy of the device object in the `accessory.context`
|
|
358
|
+
// the `context` property can be used to store any data about the accessory you may need
|
|
359
|
+
accessory.context.device = device;
|
|
360
|
+
accessory.context = { device: { brand: 'GE', ...details, ...features }, userId };
|
|
361
|
+
accessory.displayName = await this.validateAndCleanDisplayName(device.nickname, 'nickname', device.nickname);
|
|
362
|
+
accessory.context.device.firmware = device.firmware ?? await this.getVersion();
|
|
363
|
+
// the accessory does not yet exist, so we need to create it
|
|
364
|
+
// create the accessory handler for the newly create accessory
|
|
365
|
+
// this is imported from `platformAccessory.ts`
|
|
366
|
+
new SmartHQIceMaker(this, accessory, device);
|
|
367
|
+
this.debugLog(`${device.nickname} uuid: ${device.applianceId}`);
|
|
368
|
+
// link the accessory to your platform
|
|
369
|
+
this.api.registerPlatformAccessories(PLUGIN_NAME, PLATFORM_NAME, [accessory]);
|
|
370
|
+
this.accessories.push(accessory);
|
|
371
|
+
}
|
|
372
|
+
else {
|
|
373
|
+
this.debugErrorLog(`Unable to Register new device: ${JSON.stringify(device.nickname)}`);
|
|
374
|
+
}
|
|
375
|
+
}
|
|
326
376
|
async createSmartHQRefrigerator(userId, device, details, features) {
|
|
327
377
|
const uuid = this.api.hap.uuid.generate(device.applianceId);
|
|
328
378
|
// see if an accessory with the same uuid has already been registered and restored from
|