@homebridge-plugins/homebridge-smarthq 0.0.1 → 0.1.0-beta.1
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 +85 -0
- package/config.schema.json +67 -37
- package/dist/devices/device.js +5 -5
- package/dist/devices/device.js.map +1 -1
- package/dist/devices/dishwashers.d.ts +7 -4
- package/dist/devices/dishwashers.d.ts.map +1 -1
- package/dist/devices/dishwashers.js +31 -4
- package/dist/devices/dishwashers.js.map +1 -1
- package/dist/devices/oven.d.ts +12 -0
- package/dist/devices/oven.d.ts.map +1 -0
- package/dist/devices/oven.js +75 -0
- package/dist/devices/oven.js.map +1 -0
- package/dist/getAccessToken.d.ts +3 -0
- package/dist/getAccessToken.d.ts.map +1 -0
- package/dist/getAccessToken.js +40 -0
- package/dist/getAccessToken.js.map +1 -0
- package/dist/platform.d.ts +19 -3
- package/dist/platform.d.ts.map +1 -1
- package/dist/platform.js +156 -25
- package/dist/platform.js.map +1 -1
- package/dist/settings.d.ts +119 -0
- package/dist/settings.d.ts.map +1 -1
- package/dist/settings.js +117 -0
- package/dist/settings.js.map +1 -1
- package/package.json +23 -12
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
#!/bin/env node
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* This scripts queries the npm registry to pull out the latest version for a given tag.
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
import assert from 'node:assert'
|
|
8
|
+
import child_process from 'node:child_process'
|
|
9
|
+
import fs from 'node:fs'
|
|
10
|
+
import process from 'node:process'
|
|
11
|
+
|
|
12
|
+
import semver from 'semver'
|
|
13
|
+
|
|
14
|
+
const BRANCH_VERSION_PATTERN = /^([A-Z]+)-(\d+\.\d+\.\d+)$/i
|
|
15
|
+
|
|
16
|
+
// Load the contents of the package.json file
|
|
17
|
+
const packageJSON = JSON.parse(fs.readFileSync('package.json', 'utf8'))
|
|
18
|
+
|
|
19
|
+
const refArgument = process.argv[2]
|
|
20
|
+
const tagArgument = process.argv[3] || 'latest'
|
|
21
|
+
|
|
22
|
+
if (refArgument === null) {
|
|
23
|
+
console.error('ref argument is missing')
|
|
24
|
+
console.error('Usage: npm-version-script-esm.js <ref> [tag]')
|
|
25
|
+
process.exit(1)
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* Queries the NPM registry for the latest version for the provided tag.
|
|
30
|
+
* @param tag The tag to query for.
|
|
31
|
+
* @returns {string} Returns the version.
|
|
32
|
+
*/
|
|
33
|
+
function getTagVersionFromNpm(tag) {
|
|
34
|
+
try {
|
|
35
|
+
return child_process.execSync(`npm info ${packageJSON.name} version --tag="${tag}"`).toString('utf8').trim()
|
|
36
|
+
} catch (e) {
|
|
37
|
+
console.error(`Failed to query the npm registry for the latest version for tag: ${tag}`)
|
|
38
|
+
// throw e;
|
|
39
|
+
return '0.0.0'
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
function desiredTargetVersion(ref) {
|
|
44
|
+
// ref is a GitHub action ref string
|
|
45
|
+
if (ref.startsWith('refs/pull/')) {
|
|
46
|
+
throw new Error('The version script was executed inside a PR!')
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
assert(ref.startsWith('refs/heads/'))
|
|
50
|
+
const branchName = ref.slice('refs/heads/'.length)
|
|
51
|
+
|
|
52
|
+
const results = branchName.match(BRANCH_VERSION_PATTERN)
|
|
53
|
+
if (results !== null) {
|
|
54
|
+
if (results[1] !== tagArgument) {
|
|
55
|
+
console.warn(`The base branch name (${results[1]}) differs from the tag name ${tagArgument}`)
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
return results[2]
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
throw new Error(`Malformed branch name for ref: ${ref}. Can't derive the base version. Use a branch name like: beta-x.x.x or alpha-x.x.x`)
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
// derive the base version from the branch ref
|
|
65
|
+
const baseVersion = desiredTargetVersion(refArgument)
|
|
66
|
+
|
|
67
|
+
// 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)
|
|
70
|
+
|
|
71
|
+
let publishTag
|
|
72
|
+
if (semver.eq(baseVersion, latestReleaseBase)) { // check if we are releasing another version for the latest beta or alpha
|
|
73
|
+
publishTag = latestReleasedVersion // set the current latest beta or alpha to be incremented
|
|
74
|
+
} else {
|
|
75
|
+
publishTag = baseVersion // start of with a new beta or alpha version
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
// save the package.json
|
|
79
|
+
packageJSON.version = publishTag
|
|
80
|
+
fs.writeFileSync('package.json', JSON.stringify(packageJSON, null, 2))
|
|
81
|
+
|
|
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))
|
package/config.schema.json
CHANGED
|
@@ -15,6 +15,23 @@
|
|
|
15
15
|
"default": "SmartHQ",
|
|
16
16
|
"required": true
|
|
17
17
|
},
|
|
18
|
+
"credentials": {
|
|
19
|
+
"type": "object",
|
|
20
|
+
"items": {
|
|
21
|
+
"username": {
|
|
22
|
+
"title": "Username",
|
|
23
|
+
"type": "string",
|
|
24
|
+
"required": true,
|
|
25
|
+
"default": ""
|
|
26
|
+
},
|
|
27
|
+
"password": {
|
|
28
|
+
"title": "Password",
|
|
29
|
+
"type": "string",
|
|
30
|
+
"required": true,
|
|
31
|
+
"default": ""
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
},
|
|
18
35
|
"devices": {
|
|
19
36
|
"type": "array",
|
|
20
37
|
"items": {
|
|
@@ -85,48 +102,61 @@
|
|
|
85
102
|
}
|
|
86
103
|
}
|
|
87
104
|
},
|
|
88
|
-
"
|
|
89
|
-
"
|
|
90
|
-
"
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
"oneOf": [
|
|
101
|
-
{
|
|
102
|
-
"title": "Default Logging",
|
|
103
|
-
"enum": [
|
|
104
|
-
""
|
|
105
|
-
]
|
|
106
|
-
},
|
|
107
|
-
{
|
|
108
|
-
"title": "Standard Logging",
|
|
109
|
-
"enum": [
|
|
110
|
-
"standard"
|
|
111
|
-
]
|
|
112
|
-
},
|
|
113
|
-
{
|
|
114
|
-
"title": "No Logging",
|
|
115
|
-
"enum": [
|
|
116
|
-
"none"
|
|
117
|
-
]
|
|
105
|
+
"options": {
|
|
106
|
+
"type": "object",
|
|
107
|
+
"items": {
|
|
108
|
+
"refreshRate": {
|
|
109
|
+
"title": "Device Refresh Rate",
|
|
110
|
+
"type": "number",
|
|
111
|
+
"minimum": 1800,
|
|
112
|
+
"placeholder": 1800,
|
|
113
|
+
"description": "Indicates the number of seconds between polls of the SmartHQ service.",
|
|
114
|
+
"condition": {
|
|
115
|
+
"functionBody": "return (model.devices && model.devices[arrayIndices].city && model.devices[arrayIndices].zipCode);"
|
|
116
|
+
}
|
|
118
117
|
},
|
|
119
|
-
{
|
|
120
|
-
"title": "
|
|
121
|
-
"
|
|
122
|
-
|
|
118
|
+
"logging": {
|
|
119
|
+
"title": "Device Logging Override Setting",
|
|
120
|
+
"type": "string",
|
|
121
|
+
"required": true,
|
|
122
|
+
"default": "",
|
|
123
|
+
"condition": {
|
|
124
|
+
"functionBody": "return (model.devices && model.devices[arrayIndices].city && model.devices[arrayIndices].zipCode);"
|
|
125
|
+
},
|
|
126
|
+
"oneOf": [
|
|
127
|
+
{
|
|
128
|
+
"title": "Default Logging",
|
|
129
|
+
"enum": [
|
|
130
|
+
""
|
|
131
|
+
]
|
|
132
|
+
},
|
|
133
|
+
{
|
|
134
|
+
"title": "Standard Logging",
|
|
135
|
+
"enum": [
|
|
136
|
+
"standard"
|
|
137
|
+
]
|
|
138
|
+
},
|
|
139
|
+
{
|
|
140
|
+
"title": "No Logging",
|
|
141
|
+
"enum": [
|
|
142
|
+
"none"
|
|
143
|
+
]
|
|
144
|
+
},
|
|
145
|
+
{
|
|
146
|
+
"title": "Debug Logging",
|
|
147
|
+
"enum": [
|
|
148
|
+
"debug"
|
|
149
|
+
]
|
|
150
|
+
}
|
|
123
151
|
]
|
|
124
152
|
}
|
|
125
|
-
|
|
153
|
+
}
|
|
126
154
|
}
|
|
127
155
|
}
|
|
128
156
|
},
|
|
129
157
|
"layout": [
|
|
158
|
+
"credentials.username",
|
|
159
|
+
"credentials.password",
|
|
130
160
|
{
|
|
131
161
|
"key": "devices",
|
|
132
162
|
"notitle": false,
|
|
@@ -153,10 +183,10 @@
|
|
|
153
183
|
"helpvalue": "<h5>Refresh Rate</h5><em class='primary-text'>Refresh Rate indicates the number of seconds between polls of the SmartHQ service.</em>"
|
|
154
184
|
},
|
|
155
185
|
{
|
|
156
|
-
"key": "refreshRate",
|
|
186
|
+
"key": "options.refreshRate",
|
|
157
187
|
"notitle": true
|
|
158
188
|
},
|
|
159
|
-
"logging"
|
|
189
|
+
"options.logging"
|
|
160
190
|
]
|
|
161
191
|
}
|
|
162
192
|
]
|
package/dist/devices/device.js
CHANGED
|
@@ -27,11 +27,11 @@ export class deviceBase {
|
|
|
27
27
|
// Set accessory information
|
|
28
28
|
accessory
|
|
29
29
|
.getService(this.hap.Service.AccessoryInformation)
|
|
30
|
-
.setCharacteristic(this.hap.Characteristic.Manufacturer,
|
|
31
|
-
.setCharacteristic(this.hap.Characteristic.Name, accessory.
|
|
32
|
-
.setCharacteristic(this.hap.Characteristic.ConfiguredName, accessory.
|
|
33
|
-
.setCharacteristic(this.hap.Characteristic.Model, accessory.context.model)
|
|
34
|
-
.setCharacteristic(this.hap.Characteristic.SerialNumber, accessory.context.
|
|
30
|
+
.setCharacteristic(this.hap.Characteristic.Manufacturer, accessory.context.device.brand)
|
|
31
|
+
.setCharacteristic(this.hap.Characteristic.Name, accessory.context.device.nickname)
|
|
32
|
+
.setCharacteristic(this.hap.Characteristic.ConfiguredName, accessory.context.device.nickname)
|
|
33
|
+
.setCharacteristic(this.hap.Characteristic.Model, accessory.context.device.model)
|
|
34
|
+
.setCharacteristic(this.hap.Characteristic.SerialNumber, accessory.context.device.serial)
|
|
35
35
|
.setCharacteristic(this.hap.Characteristic.FirmwareRevision, this.deviceFirmwareVersion)
|
|
36
36
|
.getCharacteristic(this.hap.Characteristic.FirmwareRevision)
|
|
37
37
|
.updateValue(this.deviceFirmwareVersion);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"device.js","sourceRoot":"","sources":["../../src/devices/device.ts"],"names":[],"mappings":"AASA,MAAM,OAAgB,UAAU;IAcT;IACT;IACA;IAfI,GAAG,CAAK;IACR,GAAG,CAAS;IACZ,MAAM,CAAwB;IAC3B,GAAG,CAAK;IAE3B,SAAS;IACC,aAAa,CAAS;IACtB,iBAAiB,CAAS;IAC1B,gBAAgB,CAAS;IACzB,cAAc,CAAS;IACvB,qBAAqB,CAAS;IAExC,YACqB,QAAyB,EAClC,SAA4B,EAC5B,MAAqB;QAFZ,aAAQ,GAAR,QAAQ,CAAiB;QAClC,cAAS,GAAT,SAAS,CAAmB;QAC5B,WAAM,GAAN,MAAM,CAAe;QAE/B,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAA;QAC5B,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAA;QAC5B,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAA;QAClC,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAA;QAEvB,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAA;QACjC,IAAI,CAAC,qBAAqB,CAAC,MAAM,CAAC,CAAA;QAClC,IAAI,CAAC,uBAAuB,CAAC,MAAM,CAAC,CAAA;QACpC,IAAI,CAAC,gBAAgB,CAAC,SAAS,EAAE,MAAM,CAAC,CAAA;QAExC,4BAA4B;QAC5B,SAAS;aACN,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,oBAAoB,CAAE;aAClD,iBAAiB,CAAC,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,YAAY,EAAE,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"device.js","sourceRoot":"","sources":["../../src/devices/device.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type { PlatformAccessory } from 'homebridge';
|
|
2
|
-
import type { SmartHQPlatform } from '../platform.js';
|
|
1
|
+
import type { CharacteristicValue, PlatformAccessory } from 'homebridge';
|
|
2
|
+
import type { SmartHqContext, SmartHQPlatform } from '../platform.js';
|
|
3
3
|
import type { devicesConfig } from '../settings.js';
|
|
4
4
|
import { deviceBase } from './device.js';
|
|
5
5
|
/**
|
|
@@ -7,12 +7,13 @@ import { deviceBase } from './device.js';
|
|
|
7
7
|
* An instance of this class is created for each accessory your platform registers
|
|
8
8
|
* Each accessory may expose multiple services of different service types.
|
|
9
9
|
*/
|
|
10
|
-
export declare class
|
|
10
|
+
export declare class SmartHQDishWasher extends deviceBase {
|
|
11
11
|
readonly platform: SmartHQPlatform;
|
|
12
|
+
readonly device: SmartHqContext['device'] & devicesConfig;
|
|
12
13
|
private DishWasher;
|
|
13
14
|
SensorUpdateInProgress: boolean;
|
|
14
15
|
deviceStatus: any;
|
|
15
|
-
constructor(platform: SmartHQPlatform, accessory: PlatformAccessory, device: devicesConfig);
|
|
16
|
+
constructor(platform: SmartHQPlatform, accessory: PlatformAccessory, device: SmartHqContext['device'] & devicesConfig);
|
|
16
17
|
/**
|
|
17
18
|
* Parse the device status from the SmartHQ api
|
|
18
19
|
*/
|
|
@@ -21,6 +22,8 @@ export declare class DishWasher extends deviceBase {
|
|
|
21
22
|
* Asks the SmartHQ API for the latest device information
|
|
22
23
|
*/
|
|
23
24
|
refreshStatus(): Promise<void>;
|
|
25
|
+
setOn(On: CharacteristicValue): Promise<void>;
|
|
26
|
+
getOn(): Promise<CharacteristicValue>;
|
|
24
27
|
/**
|
|
25
28
|
* Updates the status for each of the HomeKit Characteristics
|
|
26
29
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dishwashers.d.ts","sourceRoot":"","sources":["../../src/devices/dishwashers.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"dishwashers.d.ts","sourceRoot":"","sources":["../../src/devices/dishwashers.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,mBAAmB,EAAE,iBAAiB,EAAW,MAAM,YAAY,CAAA;AAEjF,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA;AACrE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAA;AAKnD,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAExC;;;;GAIG;AACH,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,EACnB,MAAM,EAAE,cAAc,CAAC,QAAQ,CAAC,GAAG,aAAa;IAkC3D;;OAEG;IACG,WAAW;IAUjB;;OAEG;IACG,aAAa;IAYb,KAAK,CAAC,EAAE,EAAE,mBAAmB;IAS7B,KAAK,IAAI,OAAO,CAAC,mBAAmB,CAAC;IAW3C;;OAEG;IACG,4BAA4B,IAAI,OAAO,CAAC,IAAI,CAAC;IAKtC,QAAQ,CAAC,CAAC,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC;CAG7C"}
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import { interval } from 'rxjs';
|
|
2
2
|
import { skipWhile } from 'rxjs/operators';
|
|
3
|
-
// import { request } from 'undici'
|
|
4
3
|
import { deviceBase } from './device.js';
|
|
5
4
|
/**
|
|
6
5
|
* Platform Accessory
|
|
7
6
|
* An instance of this class is created for each accessory your platform registers
|
|
8
7
|
* Each accessory may expose multiple services of different service types.
|
|
9
8
|
*/
|
|
10
|
-
export class
|
|
9
|
+
export class SmartHQDishWasher extends deviceBase {
|
|
11
10
|
platform;
|
|
11
|
+
device;
|
|
12
12
|
// Service
|
|
13
13
|
DishWasher;
|
|
14
14
|
// Updates
|
|
@@ -17,6 +17,7 @@ export class DishWasher extends deviceBase {
|
|
|
17
17
|
constructor(platform, accessory, device) {
|
|
18
18
|
super(platform, accessory, device);
|
|
19
19
|
this.platform = platform;
|
|
20
|
+
this.device = device;
|
|
20
21
|
// AirQuality Sensor Service
|
|
21
22
|
this.debugLog('Configure AirQuality Sensor Service');
|
|
22
23
|
accessory.context.DishWasher = accessory.context.DishWasher ?? {};
|
|
@@ -27,7 +28,10 @@ export class DishWasher extends deviceBase {
|
|
|
27
28
|
};
|
|
28
29
|
accessory.context.DishWasher = this.DishWasher;
|
|
29
30
|
// Add AirQuality Sensor Service's Characteristics
|
|
30
|
-
this.DishWasher.Service.setCharacteristic(this.hap.Characteristic.Name, this.DishWasher.Name)
|
|
31
|
+
this.DishWasher.Service.setCharacteristic(this.hap.Characteristic.Name, this.DishWasher.Name)
|
|
32
|
+
.getCharacteristic(this.hap.Characteristic.On)
|
|
33
|
+
.onSet(this.setOn.bind(this))
|
|
34
|
+
.onGet(this.getOn.bind(this));
|
|
31
35
|
// this is subject we use to track when we need to POST changes to the SmartHQ API
|
|
32
36
|
this.SensorUpdateInProgress = false;
|
|
33
37
|
// Retrieve initial values and updateHomekit
|
|
@@ -44,7 +48,8 @@ export class DishWasher extends deviceBase {
|
|
|
44
48
|
*/
|
|
45
49
|
async parseStatus() {
|
|
46
50
|
try {
|
|
47
|
-
//
|
|
51
|
+
// On
|
|
52
|
+
this.DishWasher.On = this.deviceStatus.is_on;
|
|
48
53
|
}
|
|
49
54
|
catch (e) {
|
|
50
55
|
await this.errorLog(`failed to parseStatus, Error Message: ${JSON.stringify(e.message ?? e)}`);
|
|
@@ -56,6 +61,8 @@ export class DishWasher extends deviceBase {
|
|
|
56
61
|
*/
|
|
57
62
|
async refreshStatus() {
|
|
58
63
|
try {
|
|
64
|
+
// const status = await this.platform.client.getDeviceStatus(this.device.device_id)
|
|
65
|
+
this.deviceStatus = status;
|
|
59
66
|
await this.parseStatus();
|
|
60
67
|
await this.updateHomeKitCharacteristics();
|
|
61
68
|
}
|
|
@@ -64,6 +71,26 @@ export class DishWasher extends deviceBase {
|
|
|
64
71
|
await this.apiError(e);
|
|
65
72
|
}
|
|
66
73
|
}
|
|
74
|
+
async setOn(On) {
|
|
75
|
+
try {
|
|
76
|
+
// await this.platform.client.setDeviceOn(this.device.device_id, On as boolean)
|
|
77
|
+
this.DishWasher.On = On;
|
|
78
|
+
}
|
|
79
|
+
catch (e) {
|
|
80
|
+
await this.errorLog(`failed to setOn, Error Message: ${JSON.stringify(e.message ?? e)}`);
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
async getOn() {
|
|
84
|
+
try {
|
|
85
|
+
// const status = await this.platform.client.getDeviceStatus(this.device.device_id)
|
|
86
|
+
// this.DishWasher.On = status.is_on
|
|
87
|
+
return this.DishWasher.On;
|
|
88
|
+
}
|
|
89
|
+
catch (e) {
|
|
90
|
+
await this.errorLog(`failed to getOn, Error Message: ${JSON.stringify(e.message ?? e)}`);
|
|
91
|
+
throw new this.platform.api.hap.HapStatusError(-70402 /* this.platform.api.hap.HAPStatus.SERVICE_COMMUNICATION_FAILURE */);
|
|
92
|
+
}
|
|
93
|
+
}
|
|
67
94
|
/**
|
|
68
95
|
* Updates the status for each of the HomeKit Characteristics
|
|
69
96
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dishwashers.js","sourceRoot":"","sources":["../../src/devices/dishwashers.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,QAAQ,EAAE,MAAM,MAAM,CAAA;AAC/B,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;
|
|
1
|
+
{"version":3,"file":"dishwashers.js","sourceRoot":"","sources":["../../src/devices/dishwashers.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { PlatformAccessory } from 'homebridge';
|
|
2
|
+
import type { SmartHqContext, SmartHQPlatform } from '../platform.js';
|
|
3
|
+
import type { devicesConfig } from '../settings.js';
|
|
4
|
+
import { deviceBase } from './device.js';
|
|
5
|
+
export declare class SmartHQOven 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=oven.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"oven.d.ts","sourceRoot":"","sources":["../../src/devices/oven.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA;AAEnD,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA;AACrE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAA;AAOnD,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;IAkDrD,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,75 @@
|
|
|
1
|
+
import { Buffer } from 'node:buffer';
|
|
2
|
+
import axios from 'axios';
|
|
3
|
+
import { ERD_TYPES } from '../settings.js';
|
|
4
|
+
import { deviceBase } from './device.js';
|
|
5
|
+
export class SmartHQOven extends deviceBase {
|
|
6
|
+
platform;
|
|
7
|
+
device;
|
|
8
|
+
constructor(platform, accessory, device) {
|
|
9
|
+
super(platform, accessory, device);
|
|
10
|
+
this.platform = platform;
|
|
11
|
+
this.device = device;
|
|
12
|
+
accessory.context.device.features.forEach((feature) => {
|
|
13
|
+
/* [
|
|
14
|
+
'COOKING_V1_ACCENT_LIGHTING',
|
|
15
|
+
'COOKING_V1_EXTENDED_COOKTOP_FOUNDATION',
|
|
16
|
+
'COOKING_V1_MENU_TREE',
|
|
17
|
+
'COOKING_V1_UPPER_OVEN_FOUNDATION',
|
|
18
|
+
'COOKING_V2_CLOCK_DISPLAY',
|
|
19
|
+
'COOKING_V2_UPPER_CAVITY_REMOTE_PRECISION_COOK',
|
|
20
|
+
]; */
|
|
21
|
+
switch (feature) {
|
|
22
|
+
case 'COOKING_V1_UPPER_OVEN_FOUNDATION': {
|
|
23
|
+
const ovenLight = this.accessory.getService('Upper Oven Light')
|
|
24
|
+
|| this.accessory.addService(this.platform.Service.Lightbulb, 'Upper Oven Light', 'Oven');
|
|
25
|
+
ovenLight
|
|
26
|
+
.getCharacteristic(this.platform.Characteristic.On)
|
|
27
|
+
.onGet(() => this.readErd(ERD_TYPES.UPPER_OVEN_LIGHT).then(r => Number.parseInt(r) !== 0))
|
|
28
|
+
.onSet(value => this.writeErd(ERD_TYPES.UPPER_OVEN_LIGHT, value));
|
|
29
|
+
break;
|
|
30
|
+
}
|
|
31
|
+
case 'COOKING_V1_EXTENDED_COOKTOP_FOUNDATION': {
|
|
32
|
+
this.accessory.getService('Upper Oven Mode')
|
|
33
|
+
|| this.accessory
|
|
34
|
+
.addService(this.platform.Service.StatefulProgrammableSwitch, 'Upper Oven Mode', 'Oven')
|
|
35
|
+
.getCharacteristic(this.platform.Characteristic.TargetTemperature)
|
|
36
|
+
.onGet(async () => {
|
|
37
|
+
const erdVal = await this.readErd(ERD_TYPES.UPPER_OVEN_COOK_MODE);
|
|
38
|
+
const b = Buffer.from(erdVal, 'hex');
|
|
39
|
+
return fToC(b.readUint16BE(1));
|
|
40
|
+
})
|
|
41
|
+
.onSet(async (value) => {
|
|
42
|
+
const fTarget = cToF(value);
|
|
43
|
+
const erdVal = await this.readErd(ERD_TYPES.UPPER_OVEN_COOK_MODE);
|
|
44
|
+
const b = Buffer.from(erdVal, 'hex');
|
|
45
|
+
b.writeUint16BE(fTarget, 1);
|
|
46
|
+
return this.writeErd(ERD_TYPES.UPPER_OVEN_COOK_MODE, b.toString('hex'));
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
async readErd(erd) {
|
|
53
|
+
const d = await axios
|
|
54
|
+
.get(`/appliance/${this.accessory.context.device.applianceId}/erd/${erd}`);
|
|
55
|
+
return String(d.data.value);
|
|
56
|
+
}
|
|
57
|
+
async writeErd(erd, value) {
|
|
58
|
+
await axios
|
|
59
|
+
.post(`/appliance/${this.accessory.context.device.applianceId}/erd/${erd}`, {
|
|
60
|
+
kind: 'appliance#erdListEntry',
|
|
61
|
+
userId: this.accessory.context.userId,
|
|
62
|
+
applianceId: this.accessory.context.device.applianceId,
|
|
63
|
+
erd,
|
|
64
|
+
value: typeof value === 'boolean' ? (value ? '01' : '00') : value,
|
|
65
|
+
});
|
|
66
|
+
return undefined;
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
function cToF(celsius) {
|
|
70
|
+
return (celsius * 9) / 5 + 32;
|
|
71
|
+
}
|
|
72
|
+
function fToC(fahrenheit) {
|
|
73
|
+
return ((fahrenheit - 32) * 5) / 9;
|
|
74
|
+
}
|
|
75
|
+
//# sourceMappingURL=oven.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"oven.js","sourceRoot":"","sources":["../../src/devices/oven.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
export declare function refreshAccessToken(refresh_token: string): Promise<import("openid-client").TokenSet>;
|
|
2
|
+
export default function getAccessToken(username: string, password: string): Promise<import("openid-client").TokenSet>;
|
|
3
|
+
//# sourceMappingURL=getAccessToken.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getAccessToken.d.ts","sourceRoot":"","sources":["../src/getAccessToken.ts"],"names":[],"mappings":"AAkBA,wBAAsB,kBAAkB,CAAC,aAAa,EAAE,MAAM,6CAG7D;AAED,wBAA8B,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,6CA+B9E"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import axios from 'axios';
|
|
2
|
+
import { wrapper } from 'axios-cookiejar-support';
|
|
3
|
+
import * as cheerio from 'cheerio';
|
|
4
|
+
import { keyBy, mapValues } from 'lodash';
|
|
5
|
+
import { Issuer } from 'openid-client';
|
|
6
|
+
import { CookieJar } from 'tough-cookie';
|
|
7
|
+
import { OAUTH2_CLIENT_ID, OAUTH2_CLIENT_SECRET, OAUTH2_REDIRECT_URI } from './settings.js';
|
|
8
|
+
const oidcClient = Issuer.discover('https://accounts.brillion.geappliances.com/').then(geData => new geData.Client({
|
|
9
|
+
client_id: OAUTH2_CLIENT_ID,
|
|
10
|
+
client_secret: OAUTH2_CLIENT_SECRET,
|
|
11
|
+
response_types: ['code'],
|
|
12
|
+
}));
|
|
13
|
+
export async function refreshAccessToken(refresh_token) {
|
|
14
|
+
const client = await oidcClient;
|
|
15
|
+
return client.grant({ refresh_token, grant_type: 'refresh_token' });
|
|
16
|
+
}
|
|
17
|
+
export default async function getAccessToken(username, password) {
|
|
18
|
+
const client = await oidcClient;
|
|
19
|
+
const oauthUrl = client.authorizationUrl();
|
|
20
|
+
const jar = new CookieJar();
|
|
21
|
+
const aclient = wrapper(axios.create({ jar }));
|
|
22
|
+
const htmlPageResponse = await aclient.get(oauthUrl);
|
|
23
|
+
const page = cheerio.load(htmlPageResponse.data);
|
|
24
|
+
const carryInputs = mapValues(keyBy(page('#frmsignin').serializeArray(), o => o.name), t => t.value);
|
|
25
|
+
const body = new URLSearchParams({ ...carryInputs, username, password });
|
|
26
|
+
const res = await aclient({
|
|
27
|
+
method: 'POST',
|
|
28
|
+
headers: {
|
|
29
|
+
'content-type': 'application/x-www-form-urlencoded',
|
|
30
|
+
'origin': 'https://accounts.brillion.geappliances.com',
|
|
31
|
+
},
|
|
32
|
+
url: 'https://accounts.brillion.geappliances.com/oauth2/g_authenticate',
|
|
33
|
+
data: body,
|
|
34
|
+
maxRedirects: 0,
|
|
35
|
+
validateStatus: () => true,
|
|
36
|
+
});
|
|
37
|
+
const code = new URL(res.headers.location).searchParams.get('code');
|
|
38
|
+
return client.grant({ grant_type: 'authorization_code', code, redirect_uri: OAUTH2_REDIRECT_URI });
|
|
39
|
+
}
|
|
40
|
+
//# sourceMappingURL=getAccessToken.js.map
|
|
@@ -0,0 +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,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAA;AACzC,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,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"}
|
package/dist/platform.d.ts
CHANGED
|
@@ -1,16 +1,30 @@
|
|
|
1
1
|
import type { API, DynamicPlatformPlugin, HAP, Logging, PlatformAccessory } from 'homebridge';
|
|
2
2
|
import type { options, SmartHQPlatformConfig } from './settings.js';
|
|
3
|
+
export interface SmartHqContext {
|
|
4
|
+
userId: string;
|
|
5
|
+
device: {
|
|
6
|
+
brand: string;
|
|
7
|
+
model: string;
|
|
8
|
+
serial: string;
|
|
9
|
+
nickname: string;
|
|
10
|
+
applianceId: string;
|
|
11
|
+
features: string[];
|
|
12
|
+
};
|
|
13
|
+
}
|
|
3
14
|
/**
|
|
4
15
|
* HomebridgePlatform
|
|
5
16
|
* This class is the main constructor for your plugin, this is where you should
|
|
6
17
|
* parse the user config and discover/register accessories with Homebridge.
|
|
7
18
|
*/
|
|
8
19
|
export declare class SmartHQPlatform implements DynamicPlatformPlugin {
|
|
9
|
-
accessories: PlatformAccessory[];
|
|
20
|
+
accessories: PlatformAccessory<SmartHqContext>[];
|
|
10
21
|
readonly api: API;
|
|
11
22
|
readonly log: Logging;
|
|
12
23
|
protected readonly hap: HAP;
|
|
13
24
|
config: SmartHQPlatformConfig;
|
|
25
|
+
Service: typeof this.api.hap.Service;
|
|
26
|
+
Characteristic: typeof this.api.hap.Characteristic;
|
|
27
|
+
private tokenSet;
|
|
14
28
|
platformConfig: SmartHQPlatformConfig;
|
|
15
29
|
platformLogging: options['logging'];
|
|
16
30
|
platformRefreshRate: options['refreshRate'];
|
|
@@ -23,17 +37,19 @@ export declare class SmartHQPlatform implements DynamicPlatformPlugin {
|
|
|
23
37
|
* This function is invoked when homebridge restores cached accessories from disk at startup.
|
|
24
38
|
* It should be used to setup event handlers for characteristics and update respective values.
|
|
25
39
|
*/
|
|
26
|
-
configureAccessory(accessory: PlatformAccessory): Promise<void>;
|
|
40
|
+
configureAccessory(accessory: PlatformAccessory<SmartHqContext>): Promise<void>;
|
|
27
41
|
/**
|
|
28
42
|
* Verify the config passed to the plugin is valid
|
|
29
43
|
*/
|
|
30
44
|
verifyConfig(): Promise<void>;
|
|
45
|
+
startRefreshTokenLogic(): Promise<void>;
|
|
31
46
|
/**
|
|
32
47
|
* This method is used to discover the your location and devices.
|
|
33
48
|
* Accessories are registered by either their DeviceClass, DeviceModel, or DeviceID
|
|
34
49
|
*/
|
|
35
50
|
discoverDevices(): Promise<void>;
|
|
36
|
-
private
|
|
51
|
+
private createSmartHQDishWasher;
|
|
52
|
+
private createSmartHQOven;
|
|
37
53
|
unregisterPlatformAccessories(existingAccessory: PlatformAccessory): Promise<void>;
|
|
38
54
|
getPlatformLogSettings(): Promise<void>;
|
|
39
55
|
getPlatformRateSettings(): 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;
|
|
1
|
+
{"version":3,"file":"platform.d.ts","sourceRoot":"","sources":["../src/platform.ts"],"names":[],"mappings":"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"}
|