@homebridge-plugins/homebridge-smarthq 0.4.1 → 0.4.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +84 -0
- 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/platform.d.ts +1 -0
- package/dist/platform.d.ts.map +1 -1
- package/dist/platform.js +38 -0
- package/dist/platform.js.map +1 -1
- package/dist/settings.d.ts +2 -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/classes/SmartHQPlatform.html +8 -8
- package/docs/interfaces/DeviceOptions.html +2 -2
- package/docs/interfaces/SmartHQPlatformConfig.html +2 -2
- package/docs/interfaces/SmartHqContext.html +2 -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 +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,90 @@
|
|
|
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
|
+
## [0.4.2](https://github.com/homebridge-plugins/homebridge-smarthq/compare/v0.4.1...v0.4.2) (2025-11-21)
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
### Features
|
|
9
|
+
|
|
10
|
+
* support hood ([#57](https://github.com/homebridge-plugins/homebridge-smarthq/issues/57)) ([6a98928](https://github.com/homebridge-plugins/homebridge-smarthq/commit/6a989281dcac32d8c47fd78a2eb7bcd76c67c0b5))
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
## [0.4.1](https://github.com/homebridge-plugins/homebridge-smarthq/compare/v0.4.0...v0.4.1) (2025-09-18)
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
### Bug Fixes
|
|
18
|
+
|
|
19
|
+
* **air conditioner:** fix temperature setting and update switch display names ([#38](https://github.com/homebridge-plugins/homebridge-smarthq/issues/38)) ([1675205](https://github.com/homebridge-plugins/homebridge-smarthq/commit/16752059c93d6a5b26b782f2b42246e622b4b830))
|
|
20
|
+
* **air conditioner:** preserve decimal precision when converting Celsius to Fahrenheit ([#40](https://github.com/homebridge-plugins/homebridge-smarthq/issues/40)) ([38c8285](https://github.com/homebridge-plugins/homebridge-smarthq/commit/38c82852015d8ea0ceb0f4dd4b9ddf0622f57963))
|
|
21
|
+
* **air conditioner:** report all operating modes off when unit is off ([#42](https://github.com/homebridge-plugins/homebridge-smarthq/issues/42)) ([d44ebe3](https://github.com/homebridge-plugins/homebridge-smarthq/commit/d44ebe34590a2da6645e30db0db269e1dbbe4f3b))
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
### Features
|
|
25
|
+
|
|
26
|
+
* add Portable AC as supported device ([#45](https://github.com/homebridge-plugins/homebridge-smarthq/issues/45)) ([50d83b1](https://github.com/homebridge-plugins/homebridge-smarthq/commit/50d83b1e003d8d238485459a5c882f357e1c61fb))
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
# [0.4.0](https://github.com/homebridge-plugins/homebridge-smarthq/compare/v0.2.0...v0.4.0) (2025-06-27)
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
# 0.2.0 (2025-02-23)
|
|
35
|
+
|
|
36
|
+
## [0.4.2](https://github.com/homebridge-plugins/homebridge-smarthq/compare/v0.4.1...v0.4.2) (2025-11-20)
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
### Features
|
|
40
|
+
|
|
41
|
+
* support hood ([#57](https://github.com/homebridge-plugins/homebridge-smarthq/issues/57)) ([8f9cb9e](https://github.com/homebridge-plugins/homebridge-smarthq/commit/8f9cb9e66c5b911093f45d6ab530a68cd75177ac))
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
## [0.4.1](https://github.com/homebridge-plugins/homebridge-smarthq/compare/v0.4.0...v0.4.1) (2025-09-18)
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
### Bug Fixes
|
|
49
|
+
|
|
50
|
+
* **air conditioner:** fix temperature setting and update switch display names ([#38](https://github.com/homebridge-plugins/homebridge-smarthq/issues/38)) ([1675205](https://github.com/homebridge-plugins/homebridge-smarthq/commit/16752059c93d6a5b26b782f2b42246e622b4b830))
|
|
51
|
+
* **air conditioner:** preserve decimal precision when converting Celsius to Fahrenheit ([#40](https://github.com/homebridge-plugins/homebridge-smarthq/issues/40)) ([38c8285](https://github.com/homebridge-plugins/homebridge-smarthq/commit/38c82852015d8ea0ceb0f4dd4b9ddf0622f57963))
|
|
52
|
+
* **air conditioner:** report all operating modes off when unit is off ([#42](https://github.com/homebridge-plugins/homebridge-smarthq/issues/42)) ([d44ebe3](https://github.com/homebridge-plugins/homebridge-smarthq/commit/d44ebe34590a2da6645e30db0db269e1dbbe4f3b))
|
|
53
|
+
|
|
54
|
+
|
|
55
|
+
### Features
|
|
56
|
+
|
|
57
|
+
* add Portable AC as supported device ([#45](https://github.com/homebridge-plugins/homebridge-smarthq/issues/45)) ([50d83b1](https://github.com/homebridge-plugins/homebridge-smarthq/commit/50d83b1e003d8d238485459a5c882f357e1c61fb))
|
|
58
|
+
|
|
59
|
+
|
|
60
|
+
|
|
61
|
+
# [0.4.0](https://github.com/homebridge-plugins/homebridge-smarthq/compare/v0.2.0...v0.4.0) (2025-06-27)
|
|
62
|
+
|
|
63
|
+
|
|
64
|
+
|
|
65
|
+
# 0.2.0 (2025-02-23)
|
|
66
|
+
|
|
67
|
+
## [0.4.1](https://github.com/homebridge-plugins/homebridge-smarthq/compare/v0.4.0...v0.4.1) (2025-09-18)
|
|
68
|
+
|
|
69
|
+
|
|
70
|
+
### Bug Fixes
|
|
71
|
+
|
|
72
|
+
* **air conditioner:** fix temperature setting and update switch display names ([#38](https://github.com/homebridge-plugins/homebridge-smarthq/issues/38)) ([1675205](https://github.com/homebridge-plugins/homebridge-smarthq/commit/16752059c93d6a5b26b782f2b42246e622b4b830))
|
|
73
|
+
* **air conditioner:** preserve decimal precision when converting Celsius to Fahrenheit ([#40](https://github.com/homebridge-plugins/homebridge-smarthq/issues/40)) ([38c8285](https://github.com/homebridge-plugins/homebridge-smarthq/commit/38c82852015d8ea0ceb0f4dd4b9ddf0622f57963))
|
|
74
|
+
* **air conditioner:** report all operating modes off when unit is off ([#42](https://github.com/homebridge-plugins/homebridge-smarthq/issues/42)) ([d44ebe3](https://github.com/homebridge-plugins/homebridge-smarthq/commit/d44ebe34590a2da6645e30db0db269e1dbbe4f3b))
|
|
75
|
+
|
|
76
|
+
|
|
77
|
+
### Features
|
|
78
|
+
|
|
79
|
+
* add Portable AC as supported device ([#45](https://github.com/homebridge-plugins/homebridge-smarthq/issues/45)) ([50d83b1](https://github.com/homebridge-plugins/homebridge-smarthq/commit/50d83b1e003d8d238485459a5c882f357e1c61fb))
|
|
80
|
+
|
|
81
|
+
|
|
82
|
+
|
|
83
|
+
# [0.4.0](https://github.com/homebridge-plugins/homebridge-smarthq/compare/v0.2.0...v0.4.0) (2025-06-27)
|
|
84
|
+
|
|
85
|
+
|
|
86
|
+
|
|
87
|
+
# 0.2.0 (2025-02-23)
|
|
88
|
+
|
|
5
89
|
## [0.4.0](https://github.com/homebridge-plugins/homebridge-smarthq/releases/tag/v0.4.0) (2025-06-26)
|
|
6
90
|
|
|
7
91
|
### What's Changes
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import type { CharacteristicValue, 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 SmartHQHood extends deviceBase {
|
|
6
|
+
protected readonly platform: SmartHQPlatform;
|
|
7
|
+
protected readonly accessory: PlatformAccessory<SmartHqContext>;
|
|
8
|
+
protected readonly device: SmartHqContext['device'] & devicesConfig;
|
|
9
|
+
private readonly FAN_SVC_NAME;
|
|
10
|
+
private readonly LIGHT_SVC_NAME;
|
|
11
|
+
private readonly fanSvc;
|
|
12
|
+
private readonly lightSvc;
|
|
13
|
+
constructor(platform: SmartHQPlatform, accessory: PlatformAccessory<SmartHqContext>, device: SmartHqContext['device'] & devicesConfig);
|
|
14
|
+
private getErdValue;
|
|
15
|
+
private setErdValue;
|
|
16
|
+
private getFanSpeed;
|
|
17
|
+
private setFanSpeed;
|
|
18
|
+
private getLightLevel;
|
|
19
|
+
private setLightLevel;
|
|
20
|
+
private fanSpeedToRotationSpeed;
|
|
21
|
+
private rotationSpeedToFanSpeed;
|
|
22
|
+
private lightLevelToBrightness;
|
|
23
|
+
private brightnessToLightLevel;
|
|
24
|
+
handleGetFanActive(): Promise<CharacteristicValue>;
|
|
25
|
+
handleSetFanActive(value: CharacteristicValue): Promise<void>;
|
|
26
|
+
handleGetFanRotationSpeed(): Promise<CharacteristicValue>;
|
|
27
|
+
handleSetFanRotationSpeed(value: CharacteristicValue): Promise<void>;
|
|
28
|
+
handleGetLightOn(): Promise<CharacteristicValue>;
|
|
29
|
+
handleSetLightOn(value: CharacteristicValue): Promise<void>;
|
|
30
|
+
handleGetLightBrightness(): Promise<CharacteristicValue>;
|
|
31
|
+
handleSetLightBrightness(value: CharacteristicValue): Promise<void>;
|
|
32
|
+
refreshState(): Promise<void>;
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=hood.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hood.d.ts","sourceRoot":"","sources":["../../src/devices/hood.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,mBAAmB,EAAE,iBAAiB,EAAW,MAAM,YAAY,CAAA;AAEjF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA;AACrD,OAAO,KAAK,EAAE,aAAa,EAAE,cAAc,EAAsB,MAAM,gBAAgB,CAAA;AAMvF,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAgBxC,qBAAa,WAAY,SAAQ,UAAU;IAOvC,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAE,eAAe;IAC5C,SAAS,CAAC,QAAQ,CAAC,SAAS,EAAE,iBAAiB,CAAC,cAAc,CAAC;IAC/D,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC,QAAQ,CAAC,GAAG,aAAa;IARrE,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAa;IAC1C,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAe;IAC9C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAU;IACjC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAU;gBAGd,QAAQ,EAAE,eAAe,EACzB,SAAS,EAAE,iBAAiB,CAAC,cAAc,CAAC,EAC5C,MAAM,EAAE,cAAc,CAAC,QAAQ,CAAC,GAAG,aAAa;IA+DrE,OAAO,CAAC,WAAW;IAYnB,OAAO,CAAC,WAAW;IAoBnB,OAAO,CAAC,WAAW;IAQnB,OAAO,CAAC,WAAW;IAOnB,OAAO,CAAC,aAAa;IAQrB,OAAO,CAAC,aAAa;IAOrB,OAAO,CAAC,uBAAuB;IAiB/B,OAAO,CAAC,uBAAuB;IAgB/B,OAAO,CAAC,sBAAsB;IAa9B,OAAO,CAAC,sBAAsB;IAU9B,kBAAkB,IAAI,OAAO,CAAC,mBAAmB,CAAC;IAclD,kBAAkB,CAAC,KAAK,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC;IAiB7D,yBAAyB,IAAI,OAAO,CAAC,mBAAmB,CAAC;IAazD,yBAAyB,CAAC,KAAK,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC;IAgBpE,gBAAgB,IAAI,OAAO,CAAC,mBAAmB,CAAC;IAahD,gBAAgB,CAAC,KAAK,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC;IAiB3D,wBAAwB,IAAI,OAAO,CAAC,mBAAmB,CAAC;IAaxD,wBAAwB,CAAC,KAAK,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC;IAgBnE,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;CA0B9B"}
|
|
@@ -0,0 +1,306 @@
|
|
|
1
|
+
import axios from 'axios';
|
|
2
|
+
import { interval, startWith } from 'rxjs';
|
|
3
|
+
import { ERD_TYPES } from '../settings.js';
|
|
4
|
+
import { deviceBase } from './device.js';
|
|
5
|
+
var FanSpeed;
|
|
6
|
+
(function (FanSpeed) {
|
|
7
|
+
FanSpeed["OFF"] = "00";
|
|
8
|
+
FanSpeed["LOW"] = "01";
|
|
9
|
+
FanSpeed["MEDIUM"] = "02";
|
|
10
|
+
FanSpeed["HIGH"] = "03";
|
|
11
|
+
FanSpeed["BOOST"] = "04";
|
|
12
|
+
})(FanSpeed || (FanSpeed = {}));
|
|
13
|
+
var LightLevel;
|
|
14
|
+
(function (LightLevel) {
|
|
15
|
+
LightLevel["OFF"] = "00";
|
|
16
|
+
LightLevel["DIM"] = "01";
|
|
17
|
+
LightLevel["HIGH"] = "02";
|
|
18
|
+
})(LightLevel || (LightLevel = {}));
|
|
19
|
+
export class SmartHQHood extends deviceBase {
|
|
20
|
+
platform;
|
|
21
|
+
accessory;
|
|
22
|
+
device;
|
|
23
|
+
FAN_SVC_NAME = 'HOOD_FAN';
|
|
24
|
+
LIGHT_SVC_NAME = 'HOOD_LIGHT';
|
|
25
|
+
fanSvc;
|
|
26
|
+
lightSvc;
|
|
27
|
+
constructor(platform, accessory, device) {
|
|
28
|
+
super(platform, accessory, device);
|
|
29
|
+
this.platform = platform;
|
|
30
|
+
this.accessory = accessory;
|
|
31
|
+
this.device = device;
|
|
32
|
+
this.fanSvc = this.accessory.getService(this.FAN_SVC_NAME)
|
|
33
|
+
?? this.accessory.addService(this.platform.Service.Fanv2, `${accessory.displayName} Fan`, this.FAN_SVC_NAME);
|
|
34
|
+
this.lightSvc = this.accessory.getService(this.LIGHT_SVC_NAME)
|
|
35
|
+
?? this.accessory.addService(this.platform.Service.Lightbulb, `${accessory.displayName} Light`, this.LIGHT_SVC_NAME);
|
|
36
|
+
const fanSwitchSvc = this.accessory.getService('HOOD_FAN_SWITCH');
|
|
37
|
+
if (fanSwitchSvc) {
|
|
38
|
+
this.accessory.removeService(fanSwitchSvc);
|
|
39
|
+
}
|
|
40
|
+
const lightSwitchSvc = this.accessory.getService('HOOD_LIGHT_SWITCH');
|
|
41
|
+
if (lightSwitchSvc) {
|
|
42
|
+
this.accessory.removeService(lightSwitchSvc);
|
|
43
|
+
}
|
|
44
|
+
this.fanSvc
|
|
45
|
+
.getCharacteristic(this.platform.Characteristic.Active)
|
|
46
|
+
.onGet(this.handleGetFanActive.bind(this))
|
|
47
|
+
.onSet(this.handleSetFanActive.bind(this));
|
|
48
|
+
this.fanSvc
|
|
49
|
+
.getCharacteristic(this.platform.Characteristic.RotationSpeed)
|
|
50
|
+
.setProps({
|
|
51
|
+
minValue: 0,
|
|
52
|
+
maxValue: 100,
|
|
53
|
+
minStep: 25,
|
|
54
|
+
})
|
|
55
|
+
.onGet(this.handleGetFanRotationSpeed.bind(this))
|
|
56
|
+
.onSet(this.handleSetFanRotationSpeed.bind(this));
|
|
57
|
+
this.lightSvc
|
|
58
|
+
.getCharacteristic(this.platform.Characteristic.On)
|
|
59
|
+
.onGet(this.handleGetLightOn.bind(this))
|
|
60
|
+
.onSet(this.handleSetLightOn.bind(this));
|
|
61
|
+
this.lightSvc
|
|
62
|
+
.getCharacteristic(this.platform.Characteristic.Brightness)
|
|
63
|
+
.setProps({
|
|
64
|
+
minValue: 0,
|
|
65
|
+
maxValue: 100,
|
|
66
|
+
minStep: 50,
|
|
67
|
+
})
|
|
68
|
+
.onGet(this.handleGetLightBrightness.bind(this))
|
|
69
|
+
.onSet(this.handleSetLightBrightness.bind(this));
|
|
70
|
+
interval(this.deviceRefreshRate * 1000)
|
|
71
|
+
.pipe(startWith(0))
|
|
72
|
+
.subscribe(this.refreshState.bind(this));
|
|
73
|
+
}
|
|
74
|
+
getErdValue(erd) {
|
|
75
|
+
return axios
|
|
76
|
+
.get(`/appliance/${this.accessory.context.device.applianceId}/erd/${erd}`)
|
|
77
|
+
.then(response => response.data.value)
|
|
78
|
+
.catch((err) => {
|
|
79
|
+
const message = axios.isAxiosError(err) && err.response
|
|
80
|
+
? `Failed to fetch ERD: ${err.response.data.message}`
|
|
81
|
+
: `Failed to fetch ERD: ${err instanceof Error ? err.message : 'An unknown error occurred'}`;
|
|
82
|
+
throw new Error(message, { cause: err });
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
setErdValue(erd, value) {
|
|
86
|
+
return axios
|
|
87
|
+
.post(`/appliance/${this.accessory.context.device.applianceId}/erd/${erd}`, {
|
|
88
|
+
kind: 'appliance#erdListEntry',
|
|
89
|
+
userId: this.accessory.context.userId,
|
|
90
|
+
applianceId: this.accessory.context.device.applianceId,
|
|
91
|
+
erd,
|
|
92
|
+
value,
|
|
93
|
+
})
|
|
94
|
+
.then(() => {
|
|
95
|
+
this.platform.log.debug(`[${this.accessory.displayName}] Set ERD ${erd}=${value}`);
|
|
96
|
+
})
|
|
97
|
+
.catch((err) => {
|
|
98
|
+
const message = axios.isAxiosError(err) && err.response
|
|
99
|
+
? `Failed to set ERD ${erd}=${value}: ${err.response.data.message}`
|
|
100
|
+
: `Failed to set ERD ${erd}=${value}: ${err instanceof Error ? err.message : 'An unknown error occurred'}`;
|
|
101
|
+
throw new Error(message, { cause: err });
|
|
102
|
+
});
|
|
103
|
+
}
|
|
104
|
+
getFanSpeed() {
|
|
105
|
+
return this.getErdValue(ERD_TYPES.HOOD_FAN_SPEED)
|
|
106
|
+
.then(value => value)
|
|
107
|
+
.catch((err) => {
|
|
108
|
+
throw new Error(`Failed to get fan speed: ${err instanceof Error ? err.message : 'An unknown error occurred'}`, { cause: err });
|
|
109
|
+
});
|
|
110
|
+
}
|
|
111
|
+
setFanSpeed(value) {
|
|
112
|
+
return this.setErdValue(ERD_TYPES.HOOD_FAN_SPEED, value)
|
|
113
|
+
.catch((err) => {
|
|
114
|
+
throw new Error(`Failed to set fan speed: ${err instanceof Error ? err.message : 'An unknown error occurred'}`, { cause: err });
|
|
115
|
+
});
|
|
116
|
+
}
|
|
117
|
+
getLightLevel() {
|
|
118
|
+
return this.getErdValue(ERD_TYPES.HOOD_LIGHT_LEVEL)
|
|
119
|
+
.then(value => value)
|
|
120
|
+
.catch((err) => {
|
|
121
|
+
throw new Error(`Failed to get light level: ${err instanceof Error ? err.message : 'An unknown error occurred'}`, { cause: err });
|
|
122
|
+
});
|
|
123
|
+
}
|
|
124
|
+
setLightLevel(value) {
|
|
125
|
+
return this.setErdValue(ERD_TYPES.HOOD_LIGHT_LEVEL, value)
|
|
126
|
+
.catch((err) => {
|
|
127
|
+
throw new Error(`Failed to set light level: ${err instanceof Error ? err.message : 'An unknown error occurred'}`, { cause: err });
|
|
128
|
+
});
|
|
129
|
+
}
|
|
130
|
+
fanSpeedToRotationSpeed(fanSpeed) {
|
|
131
|
+
switch (fanSpeed) {
|
|
132
|
+
case FanSpeed.OFF:
|
|
133
|
+
return 0;
|
|
134
|
+
case FanSpeed.LOW:
|
|
135
|
+
return 25;
|
|
136
|
+
case FanSpeed.MEDIUM:
|
|
137
|
+
return 50;
|
|
138
|
+
case FanSpeed.HIGH:
|
|
139
|
+
return 75;
|
|
140
|
+
case FanSpeed.BOOST:
|
|
141
|
+
return 100;
|
|
142
|
+
default:
|
|
143
|
+
return 0;
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
rotationSpeedToFanSpeed(rotationSpeed) {
|
|
147
|
+
if (rotationSpeed === 0) {
|
|
148
|
+
return FanSpeed.OFF;
|
|
149
|
+
}
|
|
150
|
+
if (rotationSpeed <= 25) {
|
|
151
|
+
return FanSpeed.LOW;
|
|
152
|
+
}
|
|
153
|
+
if (rotationSpeed <= 50) {
|
|
154
|
+
return FanSpeed.MEDIUM;
|
|
155
|
+
}
|
|
156
|
+
if (rotationSpeed <= 75) {
|
|
157
|
+
return FanSpeed.HIGH;
|
|
158
|
+
}
|
|
159
|
+
return FanSpeed.BOOST;
|
|
160
|
+
}
|
|
161
|
+
lightLevelToBrightness(lightLevel) {
|
|
162
|
+
switch (lightLevel) {
|
|
163
|
+
case LightLevel.OFF:
|
|
164
|
+
return 0;
|
|
165
|
+
case LightLevel.DIM:
|
|
166
|
+
return 50;
|
|
167
|
+
case LightLevel.HIGH:
|
|
168
|
+
return 100;
|
|
169
|
+
default:
|
|
170
|
+
return 0;
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
brightnessToLightLevel(brightness) {
|
|
174
|
+
if (brightness === 0) {
|
|
175
|
+
return LightLevel.OFF;
|
|
176
|
+
}
|
|
177
|
+
if (brightness <= 50) {
|
|
178
|
+
return LightLevel.DIM;
|
|
179
|
+
}
|
|
180
|
+
return LightLevel.HIGH;
|
|
181
|
+
}
|
|
182
|
+
handleGetFanActive() {
|
|
183
|
+
return this.getFanSpeed()
|
|
184
|
+
.then((fanSpeed) => {
|
|
185
|
+
const isActive = fanSpeed !== FanSpeed.OFF;
|
|
186
|
+
const value = isActive ? this.platform.Characteristic.Active.ACTIVE : this.platform.Characteristic.Active.INACTIVE;
|
|
187
|
+
this.debugLog(`Get fan active: ${isActive}`);
|
|
188
|
+
return value;
|
|
189
|
+
})
|
|
190
|
+
.catch((err) => {
|
|
191
|
+
this.errorLog(`handleGetFanActive failed: ${err.message}`);
|
|
192
|
+
throw new this.platform.api.hap.HapStatusError(-70402 /* this.platform.api.hap.HAPStatus.SERVICE_COMMUNICATION_FAILURE */);
|
|
193
|
+
});
|
|
194
|
+
}
|
|
195
|
+
handleSetFanActive(value) {
|
|
196
|
+
const isActive = value === this.platform.Characteristic.Active.ACTIVE;
|
|
197
|
+
const fanSpeed = isActive ? FanSpeed.LOW : FanSpeed.OFF;
|
|
198
|
+
this.debugLog(`Set fan active: ${isActive}`);
|
|
199
|
+
return this.setFanSpeed(fanSpeed)
|
|
200
|
+
.then(() => {
|
|
201
|
+
const rotationSpeed = isActive ? 25 : 0;
|
|
202
|
+
this.fanSvc.updateCharacteristic(this.platform.Characteristic.RotationSpeed, rotationSpeed);
|
|
203
|
+
})
|
|
204
|
+
.catch((err) => {
|
|
205
|
+
this.errorLog(`handleSetFanActive failed: ${err.message}`);
|
|
206
|
+
throw new this.platform.api.hap.HapStatusError(-70402 /* this.platform.api.hap.HAPStatus.SERVICE_COMMUNICATION_FAILURE */);
|
|
207
|
+
});
|
|
208
|
+
}
|
|
209
|
+
handleGetFanRotationSpeed() {
|
|
210
|
+
return this.getFanSpeed()
|
|
211
|
+
.then((fanSpeed) => {
|
|
212
|
+
const rotationSpeed = this.fanSpeedToRotationSpeed(fanSpeed);
|
|
213
|
+
this.debugLog(`Get fan rotation speed: ${rotationSpeed}% (${fanSpeed})`);
|
|
214
|
+
return rotationSpeed;
|
|
215
|
+
})
|
|
216
|
+
.catch((err) => {
|
|
217
|
+
this.errorLog(`handleGetFanRotationSpeed failed: ${err.message}`);
|
|
218
|
+
throw new this.platform.api.hap.HapStatusError(-70402 /* this.platform.api.hap.HAPStatus.SERVICE_COMMUNICATION_FAILURE */);
|
|
219
|
+
});
|
|
220
|
+
}
|
|
221
|
+
handleSetFanRotationSpeed(value) {
|
|
222
|
+
const rotationSpeed = value;
|
|
223
|
+
const fanSpeed = this.rotationSpeedToFanSpeed(rotationSpeed);
|
|
224
|
+
this.debugLog(`Set fan rotation speed: ${rotationSpeed}% -> ${fanSpeed}`);
|
|
225
|
+
return this.setFanSpeed(fanSpeed)
|
|
226
|
+
.then(() => {
|
|
227
|
+
this.fanSvc.updateCharacteristic(this.platform.Characteristic.RotationSpeed, rotationSpeed);
|
|
228
|
+
})
|
|
229
|
+
.catch((err) => {
|
|
230
|
+
this.errorLog(`handleSetFanRotationSpeed failed: ${err.message}`);
|
|
231
|
+
throw new this.platform.api.hap.HapStatusError(-70402 /* this.platform.api.hap.HAPStatus.SERVICE_COMMUNICATION_FAILURE */);
|
|
232
|
+
});
|
|
233
|
+
}
|
|
234
|
+
handleGetLightOn() {
|
|
235
|
+
return this.getLightLevel()
|
|
236
|
+
.then((lightLevel) => {
|
|
237
|
+
const isOn = lightLevel !== LightLevel.OFF;
|
|
238
|
+
this.debugLog(`Get light on: ${isOn}`);
|
|
239
|
+
return isOn;
|
|
240
|
+
})
|
|
241
|
+
.catch((err) => {
|
|
242
|
+
this.errorLog(`handleGetLightOn failed: ${err.message}`);
|
|
243
|
+
throw new this.platform.api.hap.HapStatusError(-70402 /* this.platform.api.hap.HAPStatus.SERVICE_COMMUNICATION_FAILURE */);
|
|
244
|
+
});
|
|
245
|
+
}
|
|
246
|
+
handleSetLightOn(value) {
|
|
247
|
+
const isOn = value;
|
|
248
|
+
const lightLevel = isOn ? LightLevel.DIM : LightLevel.OFF;
|
|
249
|
+
this.debugLog(`Set light on: ${isOn}`);
|
|
250
|
+
return this.setLightLevel(lightLevel)
|
|
251
|
+
.then(() => {
|
|
252
|
+
const brightness = isOn ? 50 : 0;
|
|
253
|
+
this.lightSvc.updateCharacteristic(this.platform.Characteristic.Brightness, brightness);
|
|
254
|
+
})
|
|
255
|
+
.catch((err) => {
|
|
256
|
+
this.errorLog(`handleSetLightOn failed: ${err.message}`);
|
|
257
|
+
throw new this.platform.api.hap.HapStatusError(-70402 /* this.platform.api.hap.HAPStatus.SERVICE_COMMUNICATION_FAILURE */);
|
|
258
|
+
});
|
|
259
|
+
}
|
|
260
|
+
handleGetLightBrightness() {
|
|
261
|
+
return this.getLightLevel()
|
|
262
|
+
.then((lightLevel) => {
|
|
263
|
+
const brightness = this.lightLevelToBrightness(lightLevel);
|
|
264
|
+
this.debugLog(`Get light brightness: ${brightness}% (${lightLevel})`);
|
|
265
|
+
return brightness;
|
|
266
|
+
})
|
|
267
|
+
.catch((err) => {
|
|
268
|
+
this.errorLog(`handleGetLightBrightness failed: ${err.message}`);
|
|
269
|
+
throw new this.platform.api.hap.HapStatusError(-70402 /* this.platform.api.hap.HAPStatus.SERVICE_COMMUNICATION_FAILURE */);
|
|
270
|
+
});
|
|
271
|
+
}
|
|
272
|
+
handleSetLightBrightness(value) {
|
|
273
|
+
const brightness = value;
|
|
274
|
+
const lightLevel = this.brightnessToLightLevel(brightness);
|
|
275
|
+
this.debugLog(`Set light brightness: ${brightness}% -> ${lightLevel}`);
|
|
276
|
+
return this.setLightLevel(lightLevel)
|
|
277
|
+
.then(() => {
|
|
278
|
+
this.lightSvc.updateCharacteristic(this.platform.Characteristic.Brightness, brightness);
|
|
279
|
+
})
|
|
280
|
+
.catch((err) => {
|
|
281
|
+
this.errorLog(`handleSetLightBrightness failed: ${err.message}`);
|
|
282
|
+
throw new this.platform.api.hap.HapStatusError(-70402 /* this.platform.api.hap.HAPStatus.SERVICE_COMMUNICATION_FAILURE */);
|
|
283
|
+
});
|
|
284
|
+
}
|
|
285
|
+
refreshState() {
|
|
286
|
+
return Promise.all([
|
|
287
|
+
this.getFanSpeed(),
|
|
288
|
+
this.getLightLevel(),
|
|
289
|
+
])
|
|
290
|
+
.then(([fanSpeed, lightLevel]) => {
|
|
291
|
+
const isActive = fanSpeed !== FanSpeed.OFF;
|
|
292
|
+
const rotationSpeed = this.fanSpeedToRotationSpeed(fanSpeed);
|
|
293
|
+
const isOn = lightLevel !== LightLevel.OFF;
|
|
294
|
+
const brightness = this.lightLevelToBrightness(lightLevel);
|
|
295
|
+
this.fanSvc.updateCharacteristic(this.platform.Characteristic.Active, isActive ? this.platform.Characteristic.Active.ACTIVE : this.platform.Characteristic.Active.INACTIVE);
|
|
296
|
+
this.fanSvc.updateCharacteristic(this.platform.Characteristic.RotationSpeed, rotationSpeed);
|
|
297
|
+
this.lightSvc.updateCharacteristic(this.platform.Characteristic.On, isOn);
|
|
298
|
+
this.lightSvc.updateCharacteristic(this.platform.Characteristic.Brightness, brightness);
|
|
299
|
+
this.debugLog(`State refreshed - Fan: ${fanSpeed} (${rotationSpeed}%), Light: ${lightLevel} (${brightness}%)`);
|
|
300
|
+
})
|
|
301
|
+
.catch((err) => {
|
|
302
|
+
this.errorLog(`Failed to refresh state: ${err.message}`);
|
|
303
|
+
});
|
|
304
|
+
}
|
|
305
|
+
}
|
|
306
|
+
//# sourceMappingURL=hood.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hood.js","sourceRoot":"","sources":["../../src/devices/hood.ts"],"names":[],"mappings":"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"}
|
package/dist/platform.d.ts
CHANGED
|
@@ -42,6 +42,7 @@ export declare class SmartHQPlatform implements DynamicPlatformPlugin {
|
|
|
42
42
|
private createSmartHQIceMaker;
|
|
43
43
|
private createSmartHQRefrigerator;
|
|
44
44
|
private createSmartHQAirConditioner;
|
|
45
|
+
private createSmartHQHood;
|
|
45
46
|
unregisterPlatformAccessories(existingAccessory: PlatformAccessory): Promise<void>;
|
|
46
47
|
getPlatformLogSettings(): Promise<void>;
|
|
47
48
|
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;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;AAsB/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;IA0DV;;;OAGG;IACH,kBAAkB,CAAC,SAAS,EAAE,iBAAiB;IAO/C;;OAEG;IACG,YAAY;IAaZ,sBAAsB;IA+B5B;;;OAGG;IACG,eAAe;YA6HP,uBAAuB;YAiDvB,iBAAiB;YAiDjB,qBAAqB;YAgDrB,yBAAyB;YAiDzB,2BAA2B;YAiD3B,iBAAiB;IAoClB,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
|
@@ -6,6 +6,7 @@ import pkg from 'lodash';
|
|
|
6
6
|
import ws from 'ws';
|
|
7
7
|
import { SmartHQAirConditioner } from './devices/airConditioner.js';
|
|
8
8
|
import { SmartHQDishWasher } from './devices/dishwasher.js';
|
|
9
|
+
import { SmartHQHood } from './devices/hood.js';
|
|
9
10
|
import { SmartHQOven } from './devices/oven.js';
|
|
10
11
|
import { SmartHQRefrigerator } from './devices/refrigerator.js';
|
|
11
12
|
import getAccessToken, { refreshAccessToken } from './getAccessToken.js';
|
|
@@ -235,6 +236,9 @@ export class SmartHQPlatform {
|
|
|
235
236
|
case 'Split Air Conditioner':
|
|
236
237
|
await this.createSmartHQAirConditioner(userId, device, details, features);
|
|
237
238
|
break;
|
|
239
|
+
case 'Hood':
|
|
240
|
+
await this.createSmartHQHood(userId, device, details, features);
|
|
241
|
+
break;
|
|
238
242
|
default:
|
|
239
243
|
await this.warnLog(`Device Type Not Supported: ${device.type}`);
|
|
240
244
|
break;
|
|
@@ -483,6 +487,40 @@ export class SmartHQPlatform {
|
|
|
483
487
|
this.debugErrorLog(`Unable to Register new device: ${JSON.stringify(device.nickname)}`);
|
|
484
488
|
}
|
|
485
489
|
}
|
|
490
|
+
async createSmartHQHood(userId, device, details, features) {
|
|
491
|
+
const uuid = this.api.hap.uuid.generate(device.applianceId);
|
|
492
|
+
const existingAccessory = this.accessories.find(accessory => accessory.UUID === uuid);
|
|
493
|
+
if (existingAccessory) {
|
|
494
|
+
if (!device.hide_device) {
|
|
495
|
+
existingAccessory.context.device = device;
|
|
496
|
+
existingAccessory.context = { device: { brand: 'GE', ...details, ...features }, userId };
|
|
497
|
+
existingAccessory.displayName = await this.validateAndCleanDisplayName(device.nickname, 'nickname', device.nickname);
|
|
498
|
+
existingAccessory.context.device.firmware = device.firmware ?? await this.getVersion();
|
|
499
|
+
this.api.updatePlatformAccessories([existingAccessory]);
|
|
500
|
+
this.infoLog(`Restoring existing accessory from cache: ${existingAccessory.displayName}`);
|
|
501
|
+
new SmartHQHood(this, existingAccessory, device);
|
|
502
|
+
this.debugLog(`${device.nickname} uuid: ${device.applianceId}`);
|
|
503
|
+
}
|
|
504
|
+
else {
|
|
505
|
+
this.unregisterPlatformAccessories(existingAccessory);
|
|
506
|
+
}
|
|
507
|
+
}
|
|
508
|
+
else if (!device.hide_device && !existingAccessory) {
|
|
509
|
+
this.infoLog(`Adding new accessory: ${device.nickname}`);
|
|
510
|
+
const accessory = new this.api.platformAccessory(device.nickname, uuid);
|
|
511
|
+
accessory.context.device = device;
|
|
512
|
+
accessory.context = { device: { brand: 'GE', ...details, ...features }, userId };
|
|
513
|
+
accessory.displayName = await this.validateAndCleanDisplayName(device.nickname, 'nickname', device.nickname);
|
|
514
|
+
accessory.context.device.firmware = device.firmware ?? await this.getVersion();
|
|
515
|
+
new SmartHQHood(this, accessory, device);
|
|
516
|
+
this.debugLog(`${device.nickname} uuid: ${device.applianceId}`);
|
|
517
|
+
this.api.registerPlatformAccessories(PLUGIN_NAME, PLATFORM_NAME, [accessory]);
|
|
518
|
+
this.accessories.push(accessory);
|
|
519
|
+
}
|
|
520
|
+
else {
|
|
521
|
+
this.debugErrorLog(`Unable to Register new device: ${JSON.stringify(device.nickname)}`);
|
|
522
|
+
}
|
|
523
|
+
}
|
|
486
524
|
async unregisterPlatformAccessories(existingAccessory) {
|
|
487
525
|
// remove platform accessories when no longer present
|
|
488
526
|
this.api.unregisterPlatformAccessories(PLUGIN_NAME, PLATFORM_NAME, [existingAccessory]);
|