@homebridge-plugins/homebridge-smarthq 0.4.4 → 0.4.6

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.
Files changed (71) hide show
  1. package/CHANGELOG.md +76 -94
  2. package/dist/devices/advantium.d.ts +10 -0
  3. package/dist/devices/advantium.d.ts.map +1 -0
  4. package/dist/devices/advantium.js +72 -0
  5. package/dist/devices/advantium.js.map +1 -0
  6. package/dist/devices/beverageCenter.d.ts +10 -0
  7. package/dist/devices/beverageCenter.d.ts.map +1 -0
  8. package/dist/devices/beverageCenter.js +122 -0
  9. package/dist/devices/beverageCenter.js.map +1 -0
  10. package/dist/devices/clothesDryer.d.ts +1 -1
  11. package/dist/devices/clothesDryer.d.ts.map +1 -1
  12. package/dist/devices/clothesDryer.js +44 -9
  13. package/dist/devices/clothesDryer.js.map +1 -1
  14. package/dist/devices/clothesWasher.d.ts +1 -1
  15. package/dist/devices/clothesWasher.d.ts.map +1 -1
  16. package/dist/devices/clothesWasher.js +44 -9
  17. package/dist/devices/clothesWasher.js.map +1 -1
  18. package/dist/devices/coffeeMaker.d.ts +10 -0
  19. package/dist/devices/coffeeMaker.d.ts.map +1 -0
  20. package/dist/devices/coffeeMaker.js +13 -0
  21. package/dist/devices/coffeeMaker.js.map +1 -0
  22. package/dist/devices/dishwasher.d.ts.map +1 -1
  23. package/dist/devices/dishwasher.js +44 -24
  24. package/dist/devices/dishwasher.js.map +1 -1
  25. package/dist/devices/microwave.d.ts +10 -0
  26. package/dist/devices/microwave.d.ts.map +1 -0
  27. package/dist/devices/microwave.js +81 -0
  28. package/dist/devices/microwave.js.map +1 -0
  29. package/dist/devices/oven.d.ts.map +1 -1
  30. package/dist/devices/oven.js +71 -52
  31. package/dist/devices/oven.js.map +1 -1
  32. package/dist/devices/refrigerator.d.ts.map +1 -1
  33. package/dist/devices/refrigerator.js +106 -7
  34. package/dist/devices/refrigerator.js.map +1 -1
  35. package/dist/devices/waterFilter.d.ts +10 -0
  36. package/dist/devices/waterFilter.d.ts.map +1 -0
  37. package/dist/devices/waterFilter.js +65 -0
  38. package/dist/devices/waterFilter.js.map +1 -0
  39. package/dist/devices/waterHeater.d.ts +10 -0
  40. package/dist/devices/waterHeater.d.ts.map +1 -0
  41. package/dist/devices/waterHeater.js +94 -0
  42. package/dist/devices/waterHeater.js.map +1 -0
  43. package/dist/devices/waterSoftener.d.ts +10 -0
  44. package/dist/devices/waterSoftener.d.ts.map +1 -0
  45. package/dist/devices/waterSoftener.js +65 -0
  46. package/dist/devices/waterSoftener.js.map +1 -0
  47. package/dist/platform.d.ts +7 -0
  48. package/dist/platform.d.ts.map +1 -1
  49. package/dist/platform.js +267 -0
  50. package/dist/platform.js.map +1 -1
  51. package/docs/classes/SmartHQPlatform.html +8 -8
  52. package/docs/interfaces/DeviceOptions.html +2 -2
  53. package/docs/interfaces/SmartHQPlatformConfig.html +2 -2
  54. package/docs/interfaces/SmartHqContext.html +2 -2
  55. package/docs/interfaces/SmartHqERDResponse.html +2 -2
  56. package/docs/interfaces/credentials.html +2 -2
  57. package/docs/interfaces/devicesConfig.html +2 -2
  58. package/docs/interfaces/options.html +2 -2
  59. package/docs/variables/API_URL.html +1 -1
  60. package/docs/variables/ERD_CODES.html +1 -1
  61. package/docs/variables/ERD_TYPES.html +1 -1
  62. package/docs/variables/KEEPALIVE_TIMEOUT.html +1 -1
  63. package/docs/variables/LOGIN_URL.html +1 -1
  64. package/docs/variables/OAUTH2_CLIENT_ID.html +1 -1
  65. package/docs/variables/OAUTH2_CLIENT_SECRET.html +1 -1
  66. package/docs/variables/OAUTH2_REDIRECT_URI.html +1 -1
  67. package/docs/variables/PLATFORM_NAME.html +1 -1
  68. package/docs/variables/PLUGIN_NAME.html +1 -1
  69. package/docs/variables/SECURE_URL.html +1 -1
  70. package/docs/variables/default.html +1 -1
  71. package/package.json +1 -1
@@ -1,19 +1,54 @@
1
- import { deviceBase } from './device';
1
+ import { deviceBase } from './device.js';
2
2
  export class SmartHQClothesWasher extends deviceBase {
3
3
  ClothesWasher;
4
4
  constructor(platform, accessory, device) {
5
5
  super(platform, accessory, device);
6
6
  this.debugLog(`Clothes Washer Features: ${JSON.stringify(accessory.context.device.features)}`);
7
- accessory.context.device.features.forEach((feature) => {
8
- if (feature === 'CLOTHES_WASHER_V1_FOUNDATION') {
9
- const washer = this.accessory.getService(accessory.displayName) ?? this.accessory.addService(this.platform.Service.Switch, accessory.displayName, 'Clothes Washer');
10
- washer.getCharacteristic(this.platform.Characteristic.On)
11
- .onGet(this.handleGetOn.bind(this))
12
- .onSet(this.handleSetOn.bind(this));
7
+ // Washer Running State (Valve)
8
+ const washerValve = this.accessory.getService('Washer') ?? this.accessory.addService(this.platform.Service.Valve, 'Washer', 'Washer');
9
+ washerValve.setCharacteristic(this.platform.Characteristic.ValveType, this.platform.Characteristic.ValveType.GENERIC_VALVE);
10
+ washerValve
11
+ .getCharacteristic(this.platform.Characteristic.Active)
12
+ .onGet(async () => {
13
+ try {
14
+ return this.ClothesWasher?.On ? this.platform.Characteristic.Active.ACTIVE : this.platform.Characteristic.Active.INACTIVE;
13
15
  }
14
- else {
15
- this.debugLog(`Feature not supported: ${feature}`);
16
+ catch (error) {
17
+ this.warnLog(`Washer Active error: ${error?.message ?? error}`);
18
+ return this.platform.Characteristic.Active.INACTIVE;
16
19
  }
20
+ })
21
+ .onSet(this.handleSetOn.bind(this));
22
+ washerValve
23
+ .getCharacteristic(this.platform.Characteristic.InUse)
24
+ .onGet(async () => {
25
+ try {
26
+ return this.ClothesWasher?.On ? this.platform.Characteristic.InUse.IN_USE : this.platform.Characteristic.InUse.NOT_IN_USE;
27
+ }
28
+ catch (error) {
29
+ this.warnLog(`Washer InUse error: ${error?.message ?? error}`);
30
+ return this.platform.Characteristic.InUse.NOT_IN_USE;
31
+ }
32
+ });
33
+ // Door Lock
34
+ const doorLock = this.accessory.getService('Washer Door Lock') ?? this.accessory.addService(this.platform.Service.LockMechanism, 'Washer Door Lock', 'WasherDoorLock');
35
+ doorLock
36
+ .getCharacteristic(this.platform.Characteristic.LockCurrentState)
37
+ .onGet(async () => {
38
+ try {
39
+ // TODO: Implement door lock state when ERD available
40
+ return this.platform.Characteristic.LockCurrentState.UNSECURED;
41
+ }
42
+ catch (error) {
43
+ this.warnLog(`Washer Door Lock error: ${error?.message ?? error}`);
44
+ return this.platform.Characteristic.LockCurrentState.UNSECURED;
45
+ }
46
+ });
47
+ doorLock
48
+ .getCharacteristic(this.platform.Characteristic.LockTargetState)
49
+ .onGet(async () => this.platform.Characteristic.LockTargetState.UNSECURED)
50
+ .onSet(async (value) => {
51
+ this.debugLog(`Washer Door Lock set to: ${value}`);
17
52
  });
18
53
  }
19
54
  async handleGetOn() {
@@ -1 +1 @@
1
- {"version":3,"file":"clothesWasher.js","sourceRoot":"","sources":["../../src/devices/clothesWasher.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAA;AAErC,MAAM,OAAO,oBAAqB,SAAQ,UAAU;IAC1C,aAAa,CAEpB;IAED,YACE,QAAa,EACb,SAA4C,EAC5C,MAAW;QAEX,KAAK,CAAC,QAAQ,EAAE,SAAS,EAAE,MAAM,CAAC,CAAA;QAClC,IAAI,CAAC,QAAQ,CAAC,4BAA4B,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAA;QAC9F,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,OAAe,EAAE,EAAE;YAC5D,IAAI,OAAO,KAAK,8BAA8B,EAAE,CAAC;gBAC/C,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,SAAS,CAAC,WAAW,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,SAAS,CAAC,WAAW,EAAE,gBAAgB,CAAC,CAAA;gBACnK,MAAM,CAAC,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC;qBACtD,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;qBAClC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAA;YACvC,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,QAAQ,CAAC,0BAA0B,OAAO,EAAE,CAAC,CAAA;YACpD,CAAC;QACH,CAAC,CAAC,CAAA;IACJ,CAAC;IAED,KAAK,CAAC,WAAW;QACf,IAAI,CAAC;YACH,sEAAsE;YACtE,mEAAmE;YACnE,yCAAyC;YACzC,OAAO,IAAI,CAAC,aAAa,EAAE,EAAE,IAAI,KAAK,CAAA;QACxC,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,IAAI,CAAC,OAAO,CAAC,oCAAoC,KAAK,EAAE,OAAO,IAAI,KAAK,EAAE,CAAC,CAAA;YAC3E,OAAO,KAAK,CAAA;QACd,CAAC;IACH,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,KAA0B;QAC1C,IAAI,CAAC;YACH,sEAAsE;YACtE,qEAAqE;YACrE,IAAI,CAAC,aAAa,CAAC,EAAE,GAAG,KAAK,CAAA;QAC/B,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,IAAI,CAAC,OAAO,CAAC,oCAAoC,KAAK,EAAE,OAAO,IAAI,KAAK,EAAE,CAAC,CAAA;QAC7E,CAAC;IACH,CAAC;CACF"}
1
+ {"version":3,"file":"clothesWasher.js","sourceRoot":"","sources":["../../src/devices/clothesWasher.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import type { PlatformAccessory } from 'homebridge';
2
+ import type { SmartHQPlatform } from '../platform.js';
3
+ import type { devicesConfig, SmartHqContext } from '../settings.js';
4
+ import { deviceBase } from './device.js';
5
+ export declare class SmartHQCoffeeMaker extends deviceBase {
6
+ readonly platform: SmartHQPlatform;
7
+ readonly device: SmartHqContext['device'] & devicesConfig;
8
+ constructor(platform: SmartHQPlatform, accessory: PlatformAccessory<SmartHqContext>, device: SmartHqContext['device'] & devicesConfig);
9
+ }
10
+ //# sourceMappingURL=coffeeMaker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"coffeeMaker.d.ts","sourceRoot":"","sources":["../../src/devices/coffeeMaker.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA;AAEnD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA;AACrD,OAAO,KAAK,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAEnE,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAExC,qBAAa,kBAAmB,SAAQ,UAAU;IAE9C,QAAQ,CAAC,QAAQ,EAAE,eAAe;IAElC,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC,QAAQ,CAAC,GAAG,aAAa;gBAFhD,QAAQ,EAAE,eAAe,EAClC,SAAS,EAAE,iBAAiB,CAAC,cAAc,CAAC,EACnC,MAAM,EAAE,cAAc,CAAC,QAAQ,CAAC,GAAG,aAAa;CAM5D"}
@@ -0,0 +1,13 @@
1
+ import { deviceBase } from './device.js';
2
+ export class SmartHQCoffeeMaker extends deviceBase {
3
+ platform;
4
+ device;
5
+ constructor(platform, accessory, device) {
6
+ super(platform, accessory, device);
7
+ this.platform = platform;
8
+ this.device = device;
9
+ this.debugLog(`Coffee Maker Features: ${JSON.stringify(accessory.context.device.features)}`);
10
+ // Add your characteristic/services here
11
+ }
12
+ }
13
+ //# sourceMappingURL=coffeeMaker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"coffeeMaker.js","sourceRoot":"","sources":["../../src/devices/coffeeMaker.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAExC,MAAM,OAAO,kBAAmB,SAAQ,UAAU;IAErC;IAEA;IAHX,YACW,QAAyB,EAClC,SAA4C,EACnC,MAAgD;QAEzD,KAAK,CAAC,QAAQ,EAAE,SAAS,EAAE,MAAM,CAAC,CAAA;QAJzB,aAAQ,GAAR,QAAQ,CAAiB;QAEzB,WAAM,GAAN,MAAM,CAA0C;QAGzD,IAAI,CAAC,QAAQ,CAAC,0BAA0B,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAA;QAC5F,wCAAwC;IAC1C,CAAC;CACF"}
@@ -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;IA4CrD,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAMrC,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO;CAWpD"}
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;IAkErD,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAMrC,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO;CAWpD"}
@@ -15,31 +15,51 @@ export class SmartHQDishWasher extends deviceBase {
15
15
  this.platform = platform;
16
16
  this.device = device;
17
17
  this.debugLog(`Dishwasher Features: ${JSON.stringify(accessory.context.device.features)}`);
18
- accessory.context.device.features.forEach((feature) => {
19
- if (feature === 'DISHWASHER_V1_FOUNDATION') {
20
- const dishwasher = this.accessory.getService(accessory.displayName) ?? this.accessory.addService(this.platform.Service.Lightbulb, accessory.displayName, 'Dishwasher');
21
- dishwasher
22
- .getCharacteristic(this.platform.Characteristic.On)
23
- .onGet(async () => {
24
- try {
25
- return await this.readErd(ERD_TYPES.DISHWASHER_CYCLE).then(r => Number.parseInt(r) !== 0);
26
- }
27
- catch (error) {
28
- this.warnLog?.(`Dishwasher handleGetOn error: ${error?.message ?? error}`);
29
- return false;
30
- }
31
- })
32
- .onSet(async (value) => {
33
- try {
34
- await this.writeErd(ERD_TYPES.DISHWASHER_CYCLE, value);
35
- }
36
- catch (error) {
37
- this.warnLog?.(`Dishwasher handleSetOn error: ${error?.message ?? error}`);
38
- }
39
- });
18
+ // Dishwasher Running State (Valve for active/inactive)
19
+ const dishwasherValve = this.accessory.getService('Dishwasher') ?? this.accessory.addService(this.platform.Service.Valve, 'Dishwasher', 'Dishwasher');
20
+ dishwasherValve.setCharacteristic(this.platform.Characteristic.ValveType, this.platform.Characteristic.ValveType.GENERIC_VALVE);
21
+ dishwasherValve
22
+ .getCharacteristic(this.platform.Characteristic.Active)
23
+ .onGet(async () => {
24
+ try {
25
+ return await this.readErd(ERD_TYPES.DISHWASHER_CYCLE).then(r => Number.parseInt(r) !== 0 ? this.platform.Characteristic.Active.ACTIVE : this.platform.Characteristic.Active.INACTIVE);
40
26
  }
41
- else {
42
- this.debugLog(`Feature not supported: ${feature}`);
27
+ catch (error) {
28
+ this.warnLog?.(`Dishwasher Active error: ${error?.message ?? error}`);
29
+ return this.platform.Characteristic.Active.INACTIVE;
30
+ }
31
+ })
32
+ .onSet(async (value) => {
33
+ try {
34
+ await this.writeErd(ERD_TYPES.DISHWASHER_CYCLE, value === this.platform.Characteristic.Active.ACTIVE);
35
+ }
36
+ catch (error) {
37
+ this.warnLog?.(`Dishwasher Active set error: ${error?.message ?? error}`);
38
+ }
39
+ });
40
+ dishwasherValve
41
+ .getCharacteristic(this.platform.Characteristic.InUse)
42
+ .onGet(async () => {
43
+ try {
44
+ return await this.readErd(ERD_TYPES.DISHWASHER_CYCLE).then(r => Number.parseInt(r) !== 0 ? this.platform.Characteristic.InUse.IN_USE : this.platform.Characteristic.InUse.NOT_IN_USE);
45
+ }
46
+ catch (error) {
47
+ this.warnLog?.(`Dishwasher InUse error: ${error?.message ?? error}`);
48
+ return this.platform.Characteristic.InUse.NOT_IN_USE;
49
+ }
50
+ });
51
+ // Dishwasher Door Sensor
52
+ const doorSensor = this.accessory.getService('Dishwasher Door') ?? this.accessory.addService(this.platform.Service.ContactSensor, 'Dishwasher Door', 'DishwasherDoor');
53
+ doorSensor
54
+ .getCharacteristic(this.platform.Characteristic.ContactSensorState)
55
+ .onGet(async () => {
56
+ try {
57
+ // TODO: Use actual door status ERD when available
58
+ return this.platform.Characteristic.ContactSensorState.CONTACT_DETECTED;
59
+ }
60
+ catch (error) {
61
+ this.warnLog?.(`Dishwasher Door error: ${error?.message ?? error}`);
62
+ return this.platform.Characteristic.ContactSensorState.CONTACT_DETECTED;
43
63
  }
44
64
  });
45
65
  // this is subject we use to track when we need to POST changes to the SmartHQ API
@@ -1 +1 @@
1
- {"version":3,"file":"dishwasher.js","sourceRoot":"","sources":["../../src/devices/dishwasher.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"dishwasher.js","sourceRoot":"","sources":["../../src/devices/dishwasher.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import type { PlatformAccessory } from 'homebridge';
2
+ import type { SmartHQPlatform } from '../platform.js';
3
+ import type { devicesConfig, SmartHqContext } from '../settings.js';
4
+ import { deviceBase } from './device.js';
5
+ export declare class SmartHQMicrowave extends deviceBase {
6
+ readonly platform: SmartHQPlatform;
7
+ readonly device: SmartHqContext['device'] & devicesConfig;
8
+ constructor(platform: SmartHQPlatform, accessory: PlatformAccessory<SmartHqContext>, device: SmartHqContext['device'] & devicesConfig);
9
+ }
10
+ //# sourceMappingURL=microwave.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"microwave.d.ts","sourceRoot":"","sources":["../../src/devices/microwave.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA;AAEnD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA;AACrD,OAAO,KAAK,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAEnE,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAExC,qBAAa,gBAAiB,SAAQ,UAAU;IAE5C,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;CAuE5D"}
@@ -0,0 +1,81 @@
1
+ import { deviceBase } from './device.js';
2
+ export class SmartHQMicrowave extends deviceBase {
3
+ platform;
4
+ device;
5
+ constructor(platform, accessory, device) {
6
+ super(platform, accessory, device);
7
+ this.platform = platform;
8
+ this.device = device;
9
+ this.debugLog(`Microwave Features: ${JSON.stringify(accessory.context.device.features)}`);
10
+ // Microwave Light
11
+ const light = this.accessory.getService('Microwave Light') ?? this.accessory.addService(this.platform.Service.Lightbulb, 'Microwave Light', 'MicrowaveLight');
12
+ light
13
+ .getCharacteristic(this.platform.Characteristic.On)
14
+ .onGet(async () => {
15
+ try {
16
+ // TODO: Implement light state ERD
17
+ return false;
18
+ }
19
+ catch (error) {
20
+ this.warnLog?.(`Microwave Light error: ${error?.message ?? error}`);
21
+ return false;
22
+ }
23
+ })
24
+ .onSet(async (value) => {
25
+ try {
26
+ // TODO: Implement light control ERD
27
+ this.debugLog(`Microwave Light set to: ${value}`);
28
+ }
29
+ catch (error) {
30
+ this.warnLog?.(`Microwave Light set error: ${error?.message ?? error}`);
31
+ }
32
+ });
33
+ // Microwave Running State (Switch)
34
+ const runningSwitch = this.accessory.getService('Microwave') ?? this.accessory.addService(this.platform.Service.Switch, 'Microwave', 'Microwave');
35
+ runningSwitch
36
+ .getCharacteristic(this.platform.Characteristic.On)
37
+ .onGet(async () => {
38
+ try {
39
+ // TODO: Implement running state ERD
40
+ return false;
41
+ }
42
+ catch (error) {
43
+ this.warnLog?.(`Microwave Running error: ${error?.message ?? error}`);
44
+ return false;
45
+ }
46
+ })
47
+ .onSet(async (value) => {
48
+ try {
49
+ // TODO: Implement running control ERD
50
+ this.debugLog(`Microwave Running set to: ${value}`);
51
+ }
52
+ catch (error) {
53
+ this.warnLog?.(`Microwave Running set error: ${error?.message ?? error}`);
54
+ }
55
+ });
56
+ // Ventilation Fan (if applicable)
57
+ const fan = this.accessory.getService('Microwave Fan') ?? this.accessory.addService(this.platform.Service.Fanv2, 'Microwave Fan', 'MicrowaveFan');
58
+ fan
59
+ .getCharacteristic(this.platform.Characteristic.Active)
60
+ .onGet(async () => {
61
+ try {
62
+ // TODO: Implement fan state ERD
63
+ return this.platform.Characteristic.Active.INACTIVE;
64
+ }
65
+ catch (error) {
66
+ this.warnLog?.(`Microwave Fan error: ${error?.message ?? error}`);
67
+ return this.platform.Characteristic.Active.INACTIVE;
68
+ }
69
+ })
70
+ .onSet(async (value) => {
71
+ try {
72
+ // TODO: Implement fan control ERD
73
+ this.debugLog(`Microwave Fan set to: ${value}`);
74
+ }
75
+ catch (error) {
76
+ this.warnLog?.(`Microwave Fan set error: ${error?.message ?? error}`);
77
+ }
78
+ });
79
+ }
80
+ }
81
+ //# sourceMappingURL=microwave.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"microwave.js","sourceRoot":"","sources":["../../src/devices/microwave.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;IAuDrD,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAKrC,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO;CAUpD"}
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;IA4ErD,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAKrC,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO;CAUpD"}
@@ -10,58 +10,75 @@ export class SmartHQOven extends deviceBase {
10
10
  this.platform = platform;
11
11
  this.device = device;
12
12
  this.debugLog(`Oven Features: ${JSON.stringify(accessory.context.device.features)}`);
13
- accessory.context.device.features.forEach((feature) => {
14
- if (feature === 'COOKING_V1_UPPER_OVEN_FOUNDATION') {
15
- const ovenLight = this.accessory.getService(accessory.displayName) ?? this.accessory.addService(this.platform.Service.Lightbulb, accessory.displayName, 'Oven');
16
- ovenLight
17
- .getCharacteristic(this.platform.Characteristic.On)
18
- .onGet(async () => {
19
- try {
20
- return await this.readErd(ERD_TYPES.UPPER_OVEN_LIGHT).then(r => Number.parseInt(r) !== 0);
21
- }
22
- catch (error) {
23
- this.warnLog?.(`Oven handleGetOn error: ${error?.message ?? error}`);
24
- return false;
25
- }
26
- })
27
- .onSet(async (value) => {
28
- try {
29
- await this.writeErd(ERD_TYPES.UPPER_OVEN_LIGHT, value);
30
- }
31
- catch (error) {
32
- this.warnLog?.(`Oven handleSetOn error: ${error?.message ?? error}`);
33
- }
34
- });
13
+ // Oven Light
14
+ const ovenLight = this.accessory.getService('Oven Light') ?? this.accessory.addService(this.platform.Service.Lightbulb, 'Oven Light', 'OvenLight');
15
+ ovenLight
16
+ .getCharacteristic(this.platform.Characteristic.On)
17
+ .onGet(async () => {
18
+ try {
19
+ return await this.readErd(ERD_TYPES.UPPER_OVEN_LIGHT).then(r => Number.parseInt(r) !== 0);
35
20
  }
36
- else if (feature === 'COOKING_V1_EXTENDED_COOKTOP_FOUNDATION') {
37
- this.accessory.getService(accessory.displayName) ?? this.accessory.addService(this.platform.Service.StatefulProgrammableSwitch, accessory.displayName, 'Oven')
38
- .getCharacteristic(this.platform.Characteristic.TargetTemperature)
39
- .onGet(async () => {
40
- try {
41
- const erdVal = await this.readErd(ERD_TYPES.UPPER_OVEN_COOK_MODE);
42
- const b = Buffer.from(erdVal, 'hex');
43
- return fToC(b.readUint16BE(1));
44
- }
45
- catch (error) {
46
- this.warnLog?.(`Oven handleGetTargetTemperature error: ${error?.message ?? error}`);
47
- return 0;
48
- }
49
- })
50
- .onSet(async (value) => {
51
- try {
52
- const fTarget = cToF(value);
53
- const erdVal = await this.readErd(ERD_TYPES.UPPER_OVEN_COOK_MODE);
54
- const b = Buffer.from(erdVal, 'hex');
55
- b.writeUint16BE(fTarget, 1);
56
- return this.writeErd(ERD_TYPES.UPPER_OVEN_COOK_MODE, b.toString('hex'));
57
- }
58
- catch (error) {
59
- this.warnLog?.(`Oven handleSetTargetTemperature error: ${error?.message ?? error}`);
60
- }
61
- });
21
+ catch (error) {
22
+ this.warnLog?.(`Oven Light handleGetOn error: ${error?.message ?? error}`);
23
+ return false;
62
24
  }
63
- else {
64
- this.debugLog(`Feature not supported: ${feature}`);
25
+ })
26
+ .onSet(async (value) => {
27
+ try {
28
+ await this.writeErd(ERD_TYPES.UPPER_OVEN_LIGHT, value);
29
+ }
30
+ catch (error) {
31
+ this.warnLog?.(`Oven Light handleSetOn error: ${error?.message ?? error}`);
32
+ }
33
+ });
34
+ // Oven Current Temperature Sensor
35
+ const ovenTempSensor = this.accessory.getService('Oven Temperature') ?? this.accessory.addService(this.platform.Service.TemperatureSensor, 'Oven Temperature', 'OvenTemp');
36
+ ovenTempSensor
37
+ .getCharacteristic(this.platform.Characteristic.CurrentTemperature)
38
+ .onGet(async () => {
39
+ try {
40
+ const erdVal = await this.readErd(ERD_TYPES.UPPER_OVEN_COOK_MODE);
41
+ const b = Buffer.from(erdVal, 'hex');
42
+ return fToC(b.readUint16BE(1));
43
+ }
44
+ catch (error) {
45
+ this.warnLog?.(`Oven Temperature error: ${error?.message ?? error}`);
46
+ return 0;
47
+ }
48
+ });
49
+ // Oven Door Lock (Security System for lock state)
50
+ const ovenDoorLock = this.accessory.getService('Oven Door Lock') ?? this.accessory.addService(this.platform.Service.LockMechanism, 'Oven Door Lock', 'OvenDoorLock');
51
+ ovenDoorLock
52
+ .getCharacteristic(this.platform.Characteristic.LockCurrentState)
53
+ .onGet(async () => {
54
+ try {
55
+ // TODO: Use actual ERD for door lock state when available
56
+ return this.platform.Characteristic.LockCurrentState.UNSECURED;
57
+ }
58
+ catch (error) {
59
+ this.warnLog?.(`Oven Door Lock error: ${error?.message ?? error}`);
60
+ return this.platform.Characteristic.LockCurrentState.UNSECURED;
61
+ }
62
+ });
63
+ ovenDoorLock
64
+ .getCharacteristic(this.platform.Characteristic.LockTargetState)
65
+ .onGet(async () => {
66
+ try {
67
+ // TODO: Use actual ERD for door lock state when available
68
+ return this.platform.Characteristic.LockTargetState.UNSECURED;
69
+ }
70
+ catch (error) {
71
+ this.warnLog?.(`Oven Door Lock error: ${error?.message ?? error}`);
72
+ return this.platform.Characteristic.LockTargetState.UNSECURED;
73
+ }
74
+ })
75
+ .onSet(async (value) => {
76
+ try {
77
+ // TODO: Implement door lock control when ERD is available
78
+ this.debugLog(`Oven Door Lock set to: ${value}`);
79
+ }
80
+ catch (error) {
81
+ this.warnLog?.(`Oven Door Lock set error: ${error?.message ?? error}`);
65
82
  }
66
83
  });
67
84
  }
@@ -80,9 +97,11 @@ export class SmartHQOven extends deviceBase {
80
97
  return undefined;
81
98
  }
82
99
  }
83
- function cToF(celsius) {
84
- return (celsius * 9) / 5 + 32;
100
+ /*
101
+ function cToF(celsius: number) {
102
+ return (celsius * 9) / 5 + 32
85
103
  }
104
+ */
86
105
  function fToC(fahrenheit) {
87
106
  return ((fahrenheit - 32) * 5) / 9;
88
107
  }
@@ -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,IAAI,OAAO,KAAK,kCAAkC,EAAE,CAAC;gBACnD,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,SAAS,CAAC,WAAW,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,SAAS,EAAE,SAAS,CAAC,WAAW,EAAE,MAAM,CAAC,CAAA;gBAC/J,SAAS;qBACN,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC;qBAClD,KAAK,CAAC,KAAK,IAAI,EAAE;oBAChB,IAAI,CAAC;wBACH,OAAO,MAAM,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAA;oBAC3F,CAAC;oBAAC,OAAO,KAAU,EAAE,CAAC;wBACpB,IAAI,CAAC,OAAO,EAAE,CAAC,2BAA2B,KAAK,EAAE,OAAO,IAAI,KAAK,EAAE,CAAC,CAAA;wBACpE,OAAO,KAAK,CAAA;oBACd,CAAC;gBACH,CAAC,CAAC;qBACD,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;oBACrB,IAAI,CAAC;wBACH,MAAM,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,gBAAgB,EAAE,KAAgB,CAAC,CAAA;oBACnE,CAAC;oBAAC,OAAO,KAAU,EAAE,CAAC;wBACpB,IAAI,CAAC,OAAO,EAAE,CAAC,2BAA2B,KAAK,EAAE,OAAO,IAAI,KAAK,EAAE,CAAC,CAAA;oBACtE,CAAC;gBACH,CAAC,CAAC,CAAA;YACN,CAAC;iBAAM,IAAI,OAAO,KAAK,wCAAwC,EAAE,CAAC;gBAChE,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,SAAS,CAAC,WAAW,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,0BAA0B,EAAE,SAAS,CAAC,WAAW,EAAE,MAAM,CAAC;qBAC3J,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,iBAAiB,CAAC;qBACjE,KAAK,CAAC,KAAK,IAAI,EAAE;oBAChB,IAAI,CAAC;wBACH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,oBAAoB,CAAC,CAAA;wBACjE,MAAM,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,CAAA;wBACpC,OAAO,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAA;oBAChC,CAAC;oBAAC,OAAO,KAAU,EAAE,CAAC;wBACpB,IAAI,CAAC,OAAO,EAAE,CAAC,0CAA0C,KAAK,EAAE,OAAO,IAAI,KAAK,EAAE,CAAC,CAAA;wBACnF,OAAO,CAAC,CAAA;oBACV,CAAC;gBACH,CAAC,CAAC;qBACD,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;oBACrB,IAAI,CAAC;wBACH,MAAM,OAAO,GAAG,IAAI,CAAC,KAAe,CAAC,CAAA;wBACrC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,oBAAoB,CAAC,CAAA;wBACjE,MAAM,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,CAAA;wBACpC,CAAC,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC,CAAC,CAAA;wBAC3B,OAAO,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,oBAAoB,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAA;oBACzE,CAAC;oBAAC,OAAO,KAAU,EAAE,CAAC;wBACpB,IAAI,CAAC,OAAO,EAAE,CAAC,0CAA0C,KAAK,EAAE,OAAO,IAAI,KAAK,EAAE,CAAC,CAAA;oBACrF,CAAC;gBACH,CAAC,CAAC,CAAA;YACN,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,QAAQ,CAAC,0BAA0B,OAAO,EAAE,CAAC,CAAA;YACpD,CAAC;QACH,CAAC,CAAC,CAAA;IACJ,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,GAAW;QACvB,MAAM,CAAC,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,cAAc,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,WAAW,QAAQ,GAAG,EAAE,CAAC,CAAA;QAC/F,OAAO,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IAC7B,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,GAAW,EAAE,KAAuB;QACjD,MAAM,KAAK,CAAC,IAAI,CAAC,cAAc,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,WAAW,QAAQ,GAAG,EAAE,EAAE;YACrF,IAAI,EAAE,wBAAwB;YAC9B,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM;YACrC,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,WAAW;YACtD,GAAG;YACH,KAAK,EAAE,OAAO,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK;SAClE,CAAC,CAAA;QACF,OAAO,SAAS,CAAA;IAClB,CAAC;CACF;AAED,SAAS,IAAI,CAAC,OAAe;IAC3B,OAAO,CAAC,OAAO,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,CAAA;AAC/B,CAAC;AAED,SAAS,IAAI,CAAC,UAAkB;IAC9B,OAAO,CAAC,CAAC,UAAU,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAA;AACpC,CAAC"}
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;QAEpF,aAAa;QACb,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,YAAY,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,SAAS,EAAE,YAAY,EAAE,WAAW,CAAC,CAAA;QAClJ,SAAS;aACN,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC;aAClD,KAAK,CAAC,KAAK,IAAI,EAAE;YAChB,IAAI,CAAC;gBACH,OAAO,MAAM,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAA;YAC3F,CAAC;YAAC,OAAO,KAAU,EAAE,CAAC;gBACpB,IAAI,CAAC,OAAO,EAAE,CAAC,iCAAiC,KAAK,EAAE,OAAO,IAAI,KAAK,EAAE,CAAC,CAAA;gBAC1E,OAAO,KAAK,CAAA;YACd,CAAC;QACH,CAAC,CAAC;aACD,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;YACrB,IAAI,CAAC;gBACH,MAAM,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,gBAAgB,EAAE,KAAgB,CAAC,CAAA;YACnE,CAAC;YAAC,OAAO,KAAU,EAAE,CAAC;gBACpB,IAAI,CAAC,OAAO,EAAE,CAAC,iCAAiC,KAAK,EAAE,OAAO,IAAI,KAAK,EAAE,CAAC,CAAA;YAC5E,CAAC;QACH,CAAC,CAAC,CAAA;QAEJ,kCAAkC;QAClC,MAAM,cAAc,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,kBAAkB,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,iBAAiB,EAAE,kBAAkB,EAAE,UAAU,CAAC,CAAA;QAC1K,cAAc;aACX,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,kBAAkB,CAAC;aAClE,KAAK,CAAC,KAAK,IAAI,EAAE;YAChB,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,oBAAoB,CAAC,CAAA;gBACjE,MAAM,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,CAAA;gBACpC,OAAO,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAA;YAChC,CAAC;YAAC,OAAO,KAAU,EAAE,CAAC;gBACpB,IAAI,CAAC,OAAO,EAAE,CAAC,2BAA2B,KAAK,EAAE,OAAO,IAAI,KAAK,EAAE,CAAC,CAAA;gBACpE,OAAO,CAAC,CAAA;YACV,CAAC;QACH,CAAC,CAAC,CAAA;QAEJ,kDAAkD;QAClD,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,gBAAgB,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,aAAa,EAAE,gBAAgB,EAAE,cAAc,CAAC,CAAA;QACpK,YAAY;aACT,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,gBAAgB,CAAC;aAChE,KAAK,CAAC,KAAK,IAAI,EAAE;YAChB,IAAI,CAAC;gBACH,0DAA0D;gBAC1D,OAAO,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,gBAAgB,CAAC,SAAS,CAAA;YAChE,CAAC;YAAC,OAAO,KAAU,EAAE,CAAC;gBACpB,IAAI,CAAC,OAAO,EAAE,CAAC,yBAAyB,KAAK,EAAE,OAAO,IAAI,KAAK,EAAE,CAAC,CAAA;gBAClE,OAAO,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,gBAAgB,CAAC,SAAS,CAAA;YAChE,CAAC;QACH,CAAC,CAAC,CAAA;QAEJ,YAAY;aACT,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,eAAe,CAAC;aAC/D,KAAK,CAAC,KAAK,IAAI,EAAE;YAChB,IAAI,CAAC;gBACH,0DAA0D;gBAC1D,OAAO,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,eAAe,CAAC,SAAS,CAAA;YAC/D,CAAC;YAAC,OAAO,KAAU,EAAE,CAAC;gBACpB,IAAI,CAAC,OAAO,EAAE,CAAC,yBAAyB,KAAK,EAAE,OAAO,IAAI,KAAK,EAAE,CAAC,CAAA;gBAClE,OAAO,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,eAAe,CAAC,SAAS,CAAA;YAC/D,CAAC;QACH,CAAC,CAAC;aACD,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;YACrB,IAAI,CAAC;gBACH,0DAA0D;gBAC1D,IAAI,CAAC,QAAQ,CAAC,0BAA0B,KAAK,EAAE,CAAC,CAAA;YAClD,CAAC;YAAC,OAAO,KAAU,EAAE,CAAC;gBACpB,IAAI,CAAC,OAAO,EAAE,CAAC,6BAA6B,KAAK,EAAE,OAAO,IAAI,KAAK,EAAE,CAAC,CAAA;YACxE,CAAC;QACH,CAAC,CAAC,CAAA;IACN,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,GAAW;QACvB,MAAM,CAAC,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,cAAc,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,WAAW,QAAQ,GAAG,EAAE,CAAC,CAAA;QAC/F,OAAO,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IAC7B,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,GAAW,EAAE,KAAuB;QACjD,MAAM,KAAK,CAAC,IAAI,CAAC,cAAc,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,WAAW,QAAQ,GAAG,EAAE,EAAE;YACrF,IAAI,EAAE,wBAAwB;YAC9B,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM;YACrC,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,WAAW;YACtD,GAAG;YACH,KAAK,EAAE,OAAO,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK;SAClE,CAAC,CAAA;QACF,OAAO,SAAS,CAAA;IAClB,CAAC;CACF;AACD;;;;EAIE;AACF,SAAS,IAAI,CAAC,UAAkB;IAC9B,OAAO,CAAC,CAAC,UAAU,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAA;AACpC,CAAC"}
@@ -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;IAgCrD,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAMrC,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO;CAWpD"}
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;IA+HrD,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAMrC,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO;CAWpD"}
@@ -13,17 +13,116 @@ export class SmartHQRefrigerator extends deviceBase {
13
13
  this.platform = platform;
14
14
  this.device = device;
15
15
  this.debugLog(`Refrigerator Features: ${JSON.stringify(accessory.context.device.features)}`);
16
- // Add separate contact sensors for refrigerator and door status
17
16
  // Refrigerator Door Sensor
18
17
  const doorSensorService = this.accessory.getService('Refrigerator Door') ?? this.accessory.addService(this.platform.Service.ContactSensor, 'Refrigerator Door', 'RefrigeratorDoor');
19
18
  doorSensorService
20
19
  .getCharacteristic(this.platform.Characteristic.ContactSensorState)
21
- .onGet(() => this.readErd(ERD_TYPES.DOOR_STATUS).then(r => Number.parseInt(r) !== 0));
22
- // Refrigerator Main Sensor (if you want a separate one, e.g. for overall status)
23
- const fridgeSensorService = this.accessory.getService('Refrigerator') ?? this.accessory.addService(this.platform.Service.ContactSensor, 'Refrigerator', 'RefrigeratorMain');
24
- fridgeSensorService
25
- .getCharacteristic(this.platform.Characteristic.ContactSensorState)
26
- .onGet(() => this.readErd(ERD_TYPES.FRIDGE_MODEL_INFO).then(r => Number.parseInt(r) !== 0));
20
+ .onGet(async () => {
21
+ try {
22
+ const r = await this.readErd(ERD_TYPES.DOOR_STATUS);
23
+ return Number.parseInt(r) !== 0;
24
+ }
25
+ catch (error) {
26
+ this.warnLog?.(`Refrigerator Door Sensor readErd error: ${error?.message ?? error}`);
27
+ return false;
28
+ }
29
+ });
30
+ // Fridge Temperature Sensor
31
+ const fridgeTempService = this.accessory.getService('Fridge Temperature') ?? this.accessory.addService(this.platform.Service.TemperatureSensor, 'Fridge Temperature', 'FridgeTemp');
32
+ fridgeTempService
33
+ .getCharacteristic(this.platform.Characteristic.CurrentTemperature)
34
+ .onGet(async () => {
35
+ try {
36
+ const r = await this.readErd(ERD_TYPES.CURRENT_TEMPERATURE);
37
+ return Number.parseInt(r, 16) || 0;
38
+ }
39
+ catch (error) {
40
+ this.warnLog?.(`Fridge Temperature readErd error: ${error?.message ?? error}`);
41
+ return 0;
42
+ }
43
+ });
44
+ // Air Filter Status
45
+ const filterService = this.accessory.getService('Air Filter') ?? this.accessory.addService(this.platform.Service.FilterMaintenance, 'Air Filter', 'AirFilter');
46
+ filterService
47
+ .getCharacteristic(this.platform.Characteristic.FilterChangeIndication)
48
+ .onGet(async () => {
49
+ try {
50
+ const r = await this.readErd(ERD_TYPES.AIR_FILTER_STATUS);
51
+ return Number.parseInt(r) === 1
52
+ ? this.platform.Characteristic.FilterChangeIndication.CHANGE_FILTER
53
+ : this.platform.Characteristic.FilterChangeIndication.FILTER_OK;
54
+ }
55
+ catch (error) {
56
+ this.warnLog?.(`Air Filter Status readErd error: ${error?.message ?? error}`);
57
+ return this.platform.Characteristic.FilterChangeIndication.FILTER_OK;
58
+ }
59
+ });
60
+ // Ice Maker Control (Switch)
61
+ const iceMakerService = this.accessory.getService('Ice Maker') ?? this.accessory.addService(this.platform.Service.Switch, 'Ice Maker', 'IceMaker');
62
+ iceMakerService
63
+ .getCharacteristic(this.platform.Characteristic.On)
64
+ .onGet(async () => {
65
+ try {
66
+ const r = await this.readErd(ERD_TYPES.ICE_MAKER_CONTROL);
67
+ return Number.parseInt(r) !== 0;
68
+ }
69
+ catch (error) {
70
+ this.warnLog?.(`Ice Maker Control readErd error: ${error?.message ?? error}`);
71
+ return false;
72
+ }
73
+ })
74
+ .onSet(async (value) => {
75
+ try {
76
+ await this.writeErd(ERD_TYPES.ICE_MAKER_CONTROL, value);
77
+ }
78
+ catch (error) {
79
+ this.warnLog?.(`Ice Maker Control writeErd error: ${error?.message ?? error}`);
80
+ }
81
+ });
82
+ // Turbo Cool Switch
83
+ const turboCoolService = this.accessory.getService('Turbo Cool') ?? this.accessory.addService(this.platform.Service.Switch, 'Turbo Cool', 'TurboCool');
84
+ turboCoolService
85
+ .getCharacteristic(this.platform.Characteristic.On)
86
+ .onGet(async () => {
87
+ try {
88
+ const r = await this.readErd(ERD_TYPES.TURBO_COOL_STATUS);
89
+ return Number.parseInt(r) !== 0;
90
+ }
91
+ catch (error) {
92
+ this.warnLog?.(`Turbo Cool Status readErd error: ${error?.message ?? error}`);
93
+ return false;
94
+ }
95
+ })
96
+ .onSet(async (value) => {
97
+ try {
98
+ await this.writeErd(ERD_TYPES.TURBO_COOL_STATUS, value);
99
+ }
100
+ catch (error) {
101
+ this.warnLog?.(`Turbo Cool Status writeErd error: ${error?.message ?? error}`);
102
+ }
103
+ });
104
+ // Turbo Freeze Switch
105
+ const turboFreezeService = this.accessory.getService('Turbo Freeze') ?? this.accessory.addService(this.platform.Service.Switch, 'Turbo Freeze', 'TurboFreeze');
106
+ turboFreezeService
107
+ .getCharacteristic(this.platform.Characteristic.On)
108
+ .onGet(async () => {
109
+ try {
110
+ const r = await this.readErd(ERD_TYPES.TURBO_FREEZE_STATUS);
111
+ return Number.parseInt(r) !== 0;
112
+ }
113
+ catch (error) {
114
+ this.warnLog?.(`Turbo Freeze Status readErd error: ${error?.message ?? error}`);
115
+ return false;
116
+ }
117
+ })
118
+ .onSet(async (value) => {
119
+ try {
120
+ await this.writeErd(ERD_TYPES.TURBO_FREEZE_STATUS, value);
121
+ }
122
+ catch (error) {
123
+ this.warnLog?.(`Turbo Freeze Status writeErd error: ${error?.message ?? error}`);
124
+ }
125
+ });
27
126
  // this is subject we use to track when we need to POST changes to the SmartHQ API
28
127
  this.SensorUpdateInProgress = false;
29
128
  // Retrieve initial values and updateHomekit