@homebridge-plugins/homebridge-smarthq 0.5.0-beta.5 → 0.5.0-beta.7

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 (113) hide show
  1. package/.github/ISSUE_TEMPLATE/config.yml +1 -1
  2. package/.github/copilot-instructions.md +90 -0
  3. package/.github/scripts/branch-helper.sh +41 -0
  4. package/.github/workflows/beta-release.yml +1 -1
  5. package/.github/workflows/release.yml +53 -17
  6. package/CHANGELOG.md +563 -18
  7. package/README.md +15 -0
  8. package/dist/devices/OpalIceMaker/Managers/OpalProgressSvcManager.d.ts +1 -1
  9. package/dist/devices/OpalIceMaker/Managers/OpalProgressSvcManager.d.ts.map +1 -1
  10. package/dist/devices/OpalIceMaker/Managers/OpalProgressSvcManager.js +9 -5
  11. package/dist/devices/OpalIceMaker/Managers/OpalProgressSvcManager.js.map +1 -1
  12. package/dist/devices/advantium.d.ts +10 -0
  13. package/dist/devices/advantium.d.ts.map +1 -0
  14. package/dist/devices/advantium.js +75 -0
  15. package/dist/devices/advantium.js.map +1 -0
  16. package/dist/devices/beverageCenter.d.ts +10 -0
  17. package/dist/devices/beverageCenter.d.ts.map +1 -0
  18. package/dist/devices/beverageCenter.js +125 -0
  19. package/dist/devices/beverageCenter.js.map +1 -0
  20. package/dist/devices/clothesDryer.d.ts +10 -0
  21. package/dist/devices/clothesDryer.d.ts.map +1 -0
  22. package/dist/devices/clothesDryer.js +84 -0
  23. package/dist/devices/clothesDryer.js.map +1 -0
  24. package/dist/devices/clothesWasher.d.ts +10 -0
  25. package/dist/devices/clothesWasher.d.ts.map +1 -0
  26. package/dist/devices/clothesWasher.js +84 -0
  27. package/dist/devices/clothesWasher.js.map +1 -0
  28. package/dist/devices/coffeeMaker.d.ts +10 -0
  29. package/dist/devices/coffeeMaker.d.ts.map +1 -0
  30. package/dist/devices/coffeeMaker.js +79 -0
  31. package/dist/devices/coffeeMaker.js.map +1 -0
  32. package/dist/devices/device.js +1 -1
  33. package/dist/devices/device.js.map +1 -1
  34. package/dist/devices/dishwasher.d.ts +0 -1
  35. package/dist/devices/dishwasher.d.ts.map +1 -1
  36. package/dist/devices/dishwasher.js +47 -12
  37. package/dist/devices/dishwasher.js.map +1 -1
  38. package/dist/devices/hood.d.ts +34 -0
  39. package/dist/devices/hood.d.ts.map +1 -0
  40. package/dist/devices/hood.js +306 -0
  41. package/dist/devices/hood.js.map +1 -0
  42. package/dist/devices/microwave.d.ts +10 -0
  43. package/dist/devices/microwave.d.ts.map +1 -0
  44. package/dist/devices/microwave.js +84 -0
  45. package/dist/devices/microwave.js.map +1 -0
  46. package/dist/devices/oven.d.ts.map +1 -1
  47. package/dist/devices/oven.js +78 -32
  48. package/dist/devices/oven.js.map +1 -1
  49. package/dist/devices/refrigerator.d.ts.map +1 -1
  50. package/dist/devices/refrigerator.js +142 -13
  51. package/dist/devices/refrigerator.js.map +1 -1
  52. package/dist/devices/waterFilter.d.ts +10 -0
  53. package/dist/devices/waterFilter.d.ts.map +1 -0
  54. package/dist/devices/waterFilter.js +67 -0
  55. package/dist/devices/waterFilter.js.map +1 -0
  56. package/dist/devices/waterHeater.d.ts +10 -0
  57. package/dist/devices/waterHeater.d.ts.map +1 -0
  58. package/dist/devices/waterHeater.js +95 -0
  59. package/dist/devices/waterHeater.js.map +1 -0
  60. package/dist/devices/waterSoftener.d.ts +10 -0
  61. package/dist/devices/waterSoftener.d.ts.map +1 -0
  62. package/dist/devices/waterSoftener.js +67 -0
  63. package/dist/devices/waterSoftener.js.map +1 -0
  64. package/dist/platform.d.ts +10 -0
  65. package/dist/platform.d.ts.map +1 -1
  66. package/dist/platform.js +383 -0
  67. package/dist/platform.js.map +1 -1
  68. package/dist/settings.d.ts +13 -0
  69. package/dist/settings.d.ts.map +1 -1
  70. package/dist/settings.js +3 -0
  71. package/dist/settings.js.map +1 -1
  72. package/docs/assets/highlight.css +7 -0
  73. package/docs/assets/main.js +5 -5
  74. package/docs/assets/navigation.js +1 -0
  75. package/docs/assets/search.js +1 -0
  76. package/docs/assets/style.css +248 -226
  77. package/docs/classes/SmartHQPlatform.html +45 -56
  78. package/docs/hierarchy.html +1 -0
  79. package/docs/index.html +22 -12
  80. package/docs/interfaces/DeviceOptions.html +2 -3
  81. package/docs/interfaces/SmartHQPlatformConfig.html +6 -17
  82. package/docs/interfaces/SmartHqContext.html +6 -4
  83. package/docs/interfaces/SmartHqERDResponse.html +7 -8
  84. package/docs/interfaces/credentials.html +3 -4
  85. package/docs/interfaces/devicesConfig.html +7 -8
  86. package/docs/interfaces/options.html +7 -8
  87. package/docs/media/copilot-instructions.md +90 -0
  88. package/docs/modules.html +1 -2
  89. package/docs/variables/API_URL.html +1 -2
  90. package/docs/variables/ERD_CODES.html +1 -2
  91. package/docs/variables/ERD_TYPES.html +1 -2
  92. package/docs/variables/KEEPALIVE_TIMEOUT.html +1 -2
  93. package/docs/variables/LOGIN_URL.html +2 -3
  94. package/docs/variables/OAUTH2_CLIENT_ID.html +1 -2
  95. package/docs/variables/OAUTH2_CLIENT_SECRET.html +1 -2
  96. package/docs/variables/OAUTH2_REDIRECT_URI.html +1 -2
  97. package/docs/variables/PLATFORM_NAME.html +2 -3
  98. package/docs/variables/PLUGIN_NAME.html +2 -3
  99. package/docs/variables/SECURE_URL.html +2 -3
  100. package/docs/variables/default.html +1 -0
  101. package/package.json +21 -28
  102. package/typedoc.json +0 -4
  103. package/vitest.config.ts +6 -5
  104. package/.github/workflows/build.yml +0 -18
  105. package/.github/workflows/changerelease.yml +0 -11
  106. package/.github/workflows/labeler.yml +0 -9
  107. package/.github/workflows/release-drafter.yml +0 -14
  108. package/docs/assets/dmt/dmt-component-data.js +0 -1
  109. package/docs/assets/dmt/dmt-components.css +0 -20
  110. package/docs/assets/dmt/dmt-components.js +0 -67
  111. package/docs/assets/dmt/dmt-search.cmp +0 -0
  112. package/docs/assets/dmt/dmt-theme.css +0 -1
  113. package/docs/functions/default.html +0 -2
@@ -1,13 +1,13 @@
1
1
  import { Buffer } from 'node:buffer';
2
- import { ERD_TYPES } from '../../../index.js';
3
2
  import { OpalDeviceBase } from '../OpalDeviceBase.js';
3
+ import { ERD_TYPES } from '../../../index.js';
4
4
  export class OpalProgressSvcManager extends OpalDeviceBase {
5
5
  platform;
6
6
  accessory;
7
7
  device;
8
8
  advancedOptionQueryStrs = [
9
9
  'device=opal&label=Production_Duration_Minutes&indicator=opalProductionLimit&type=number&defaultValue=0&placeholder=Number._0_for_Infinite',
10
- 'device=opal&label=HKC_Progress_Complete_Notification_Path&indicator=oplHKCProgressCompleteNotificationPath'
10
+ 'device=opal&label=HKC_Progress_Complete_Notification_Path&indicator=oplHKCProgressCompleteNotificationPath',
11
11
  ];
12
12
  serviceName = 'Opal Progress';
13
13
  service = null;
@@ -45,7 +45,7 @@ export class OpalProgressSvcManager extends OpalDeviceBase {
45
45
  // Configure Active characteristic
46
46
  this.service.getCharacteristic(this.platform.Characteristic.Active)
47
47
  .setProps({
48
- perms: ["ev" /* Perms.EVENTS */, "pr" /* Perms.PAIRED_READ */],
48
+ perms: ['ev', 'pr'],
49
49
  });
50
50
  // Configure RotationSpeed characteristic
51
51
  this.service.getCharacteristic(this.platform.Characteristic.RotationSpeed)
@@ -55,7 +55,7 @@ export class OpalProgressSvcManager extends OpalDeviceBase {
55
55
  minStep: 1,
56
56
  minValue: 0,
57
57
  maxValue: 100,
58
- perms: ["ev" /* Perms.EVENTS */, "pr" /* Perms.PAIRED_READ */],
58
+ perms: ['ev', 'pr'],
59
59
  })
60
60
  .removeOnGet()
61
61
  .removeOnSet()
@@ -92,7 +92,11 @@ export class OpalProgressSvcManager extends OpalDeviceBase {
92
92
  const productionValueMinutes = Buffer.from(erdVal, 'hex').readUInt8(0);
93
93
  const completionistMsg = productionValueMinutes > 100 ? `, Completion: ${productionValueMinutes}` : '';
94
94
  this.platform.debugSuccessLog(`Production: ${productionValueMinutes}, Limit: ${this.platform.config.deviceOptions?.opal?.opalProductionLimit}${completionistMsg}`);
95
- const productionValueProgressBar = Math.floor((100 / this.platform.config.deviceOptions?.opal?.opalProductionLimit) * productionValueMinutes);
95
+ const opalProductionLimit = this.platform.config.deviceOptions?.opal?.opalProductionLimit;
96
+ let productionValueProgressBar = 0;
97
+ if (typeof opalProductionLimit === 'number' && opalProductionLimit > 0) {
98
+ productionValueProgressBar = Math.floor((100 / opalProductionLimit) * productionValueMinutes);
99
+ }
96
100
  return [productionValueProgressBar, productionValueMinutes];
97
101
  }
98
102
  catch (error) {
@@ -1 +1 @@
1
- {"version":3,"file":"OpalProgressSvcManager.js","sourceRoot":"","sources":["../../../../src/devices/OpalIceMaker/Managers/OpalProgressSvcManager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"OpalProgressSvcManager.js","sourceRoot":"","sources":["../../../../src/devices/OpalIceMaker/Managers/OpalProgressSvcManager.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 SmartHQAdvantium 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=advantium.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"advantium.d.ts","sourceRoot":"","sources":["../../src/devices/advantium.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;CAkE5D"}
@@ -0,0 +1,75 @@
1
+ import { deviceBase } from './device.js';
2
+ export class SmartHQAdvantium 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(`Advantium Features: ${JSON.stringify(accessory.context.device.features)}`);
10
+ // Advantium Light
11
+ const light = this.accessory.getService('Advantium Light') ?? this.accessory.addService(this.platform.Service.Lightbulb, 'Advantium Light', 'AdvantiumLight');
12
+ light.setCharacteristic(this.platform.Characteristic.Name, 'Advantium Light');
13
+ light
14
+ .getCharacteristic(this.platform.Characteristic.On)
15
+ .onGet(async () => {
16
+ try {
17
+ // TODO: Implement light state ERD
18
+ return false;
19
+ }
20
+ catch (error) {
21
+ this.warnLog?.(`Advantium Light error: ${error?.message ?? error}`);
22
+ return false;
23
+ }
24
+ })
25
+ .onSet(async (value) => {
26
+ try {
27
+ // TODO: Implement light control ERD
28
+ this.debugLog(`Advantium Light set to: ${value}`);
29
+ }
30
+ catch (error) {
31
+ this.warnLog?.(`Advantium Light set error: ${error?.message ?? error}`);
32
+ }
33
+ });
34
+ // Advantium Temperature Sensor
35
+ const tempSensor = this.accessory.getService('Advantium Temperature') ?? this.accessory.addService(this.platform.Service.TemperatureSensor, 'Advantium Temperature', 'AdvantiumTemp');
36
+ tempSensor.setCharacteristic(this.platform.Characteristic.Name, 'Advantium Temperature');
37
+ tempSensor
38
+ .getCharacteristic(this.platform.Characteristic.CurrentTemperature)
39
+ .onGet(async () => {
40
+ try {
41
+ // TODO: Implement current temperature ERD
42
+ return 0;
43
+ }
44
+ catch (error) {
45
+ this.warnLog?.(`Advantium Temperature error: ${error?.message ?? error}`);
46
+ return 0;
47
+ }
48
+ });
49
+ // Advantium Running State (Switch)
50
+ const runningSwitch = this.accessory.getService('Advantium Running') ?? this.accessory.addService(this.platform.Service.Switch, 'Advantium Running', 'AdvantiumRunning');
51
+ runningSwitch.setCharacteristic(this.platform.Characteristic.Name, 'Advantium Running');
52
+ runningSwitch
53
+ .getCharacteristic(this.platform.Characteristic.On)
54
+ .onGet(async () => {
55
+ try {
56
+ // TODO: Implement running state ERD
57
+ return false;
58
+ }
59
+ catch (error) {
60
+ this.warnLog?.(`Advantium Running error: ${error?.message ?? error}`);
61
+ return false;
62
+ }
63
+ })
64
+ .onSet(async (value) => {
65
+ try {
66
+ // TODO: Implement running control ERD
67
+ this.debugLog(`Advantium Running set to: ${value}`);
68
+ }
69
+ catch (error) {
70
+ this.warnLog?.(`Advantium Running set error: ${error?.message ?? error}`);
71
+ }
72
+ });
73
+ }
74
+ }
75
+ //# sourceMappingURL=advantium.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"advantium.js","sourceRoot":"","sources":["../../src/devices/advantium.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 SmartHQBeverageCenter 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=beverageCenter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"beverageCenter.d.ts","sourceRoot":"","sources":["../../src/devices/beverageCenter.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,qBAAsB,SAAQ,UAAU;IAEjD,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;CAqH5D"}
@@ -0,0 +1,125 @@
1
+ import { deviceBase } from './device.js';
2
+ export class SmartHQBeverageCenter 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(`Beverage Center Features: ${JSON.stringify(accessory.context.device.features)}`);
10
+ // Beverage Center Temperature Sensor
11
+ const tempSensor = this.accessory.getService('Beverage Temperature') ?? this.accessory.addService(this.platform.Service.TemperatureSensor, 'Beverage Temperature', 'BeverageTemp');
12
+ tempSensor.setCharacteristic(this.platform.Characteristic.Name, 'Beverage Temperature');
13
+ tempSensor
14
+ .getCharacteristic(this.platform.Characteristic.CurrentTemperature)
15
+ .onGet(async () => {
16
+ try {
17
+ // TODO: Implement current temperature ERD
18
+ return 4;
19
+ }
20
+ catch (error) {
21
+ this.warnLog?.(`Beverage Center Temperature error: ${error?.message ?? error}`);
22
+ return 4;
23
+ }
24
+ });
25
+ // Beverage Center Door Sensor
26
+ const doorSensor = this.accessory.getService('Beverage Door') ?? this.accessory.addService(this.platform.Service.ContactSensor, 'Beverage Door', 'BeverageDoor');
27
+ doorSensor.setCharacteristic(this.platform.Characteristic.Name, 'Beverage Door');
28
+ doorSensor
29
+ .getCharacteristic(this.platform.Characteristic.ContactSensorState)
30
+ .onGet(async () => {
31
+ try {
32
+ // TODO: Implement door status ERD
33
+ return this.platform.Characteristic.ContactSensorState.CONTACT_DETECTED;
34
+ }
35
+ catch (error) {
36
+ this.warnLog?.(`Beverage Center Door error: ${error?.message ?? error}`);
37
+ return this.platform.Characteristic.ContactSensorState.CONTACT_DETECTED;
38
+ }
39
+ });
40
+ // Beverage Center Thermostat Control
41
+ const thermostat = this.accessory.getService('Beverage Thermostat') ?? this.accessory.addService(this.platform.Service.Thermostat, 'Beverage Thermostat', 'BeverageThermostat');
42
+ thermostat.setCharacteristic(this.platform.Characteristic.Name, 'Beverage Thermostat');
43
+ thermostat
44
+ .getCharacteristic(this.platform.Characteristic.CurrentHeatingCoolingState)
45
+ .onGet(async () => {
46
+ try {
47
+ // TODO: Implement cooling state ERD
48
+ return this.platform.Characteristic.CurrentHeatingCoolingState.COOL;
49
+ }
50
+ catch (error) {
51
+ this.warnLog?.(`Beverage Center State error: ${error?.message ?? error}`);
52
+ return this.platform.Characteristic.CurrentHeatingCoolingState.OFF;
53
+ }
54
+ });
55
+ thermostat
56
+ .getCharacteristic(this.platform.Characteristic.TargetHeatingCoolingState)
57
+ .setProps({
58
+ validValues: [this.platform.Characteristic.TargetHeatingCoolingState.OFF, this.platform.Characteristic.TargetHeatingCoolingState.COOL],
59
+ })
60
+ .onGet(async () => {
61
+ try {
62
+ // TODO: Implement target state ERD
63
+ return this.platform.Characteristic.TargetHeatingCoolingState.COOL;
64
+ }
65
+ catch (error) {
66
+ this.warnLog?.(`Beverage Center Target State error: ${error?.message ?? error}`);
67
+ return this.platform.Characteristic.TargetHeatingCoolingState.OFF;
68
+ }
69
+ })
70
+ .onSet(async (value) => {
71
+ try {
72
+ // TODO: Implement target state control ERD
73
+ this.debugLog(`Beverage Center set to: ${value}`);
74
+ }
75
+ catch (error) {
76
+ this.warnLog?.(`Beverage Center Target State set error: ${error?.message ?? error}`);
77
+ }
78
+ });
79
+ thermostat
80
+ .getCharacteristic(this.platform.Characteristic.CurrentTemperature)
81
+ .onGet(async () => {
82
+ try {
83
+ // TODO: Implement current temperature ERD
84
+ return 4;
85
+ }
86
+ catch (error) {
87
+ this.warnLog?.(`Beverage Center Current Temp error: ${error?.message ?? error}`);
88
+ return 4;
89
+ }
90
+ });
91
+ thermostat
92
+ .getCharacteristic(this.platform.Characteristic.TargetTemperature)
93
+ .setProps({
94
+ minValue: 2,
95
+ maxValue: 8,
96
+ minStep: 1,
97
+ })
98
+ .onGet(async () => {
99
+ try {
100
+ // TODO: Implement target temperature ERD
101
+ return 4;
102
+ }
103
+ catch (error) {
104
+ this.warnLog?.(`Beverage Center Target Temp error: ${error?.message ?? error}`);
105
+ return 4;
106
+ }
107
+ })
108
+ .onSet(async (value) => {
109
+ try {
110
+ // TODO: Implement target temperature control ERD
111
+ this.debugLog(`Beverage Center temperature set to: ${value}°C`);
112
+ }
113
+ catch (error) {
114
+ this.warnLog?.(`Beverage Center Target Temp set error: ${error?.message ?? error}`);
115
+ }
116
+ });
117
+ thermostat
118
+ .getCharacteristic(this.platform.Characteristic.TemperatureDisplayUnits)
119
+ .onGet(async () => this.platform.Characteristic.TemperatureDisplayUnits.CELSIUS)
120
+ .onSet(async (value) => {
121
+ this.debugLog(`Beverage Center display units set to: ${value}`);
122
+ });
123
+ }
124
+ }
125
+ //# sourceMappingURL=beverageCenter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"beverageCenter.js","sourceRoot":"","sources":["../../src/devices/beverageCenter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import type { CharacteristicValue, PlatformAccessory } from 'homebridge';
2
+ import type { SmartHqContext } from '../settings.js';
3
+ import { deviceBase } from './device.js';
4
+ export declare class SmartHQClothesDryer extends deviceBase {
5
+ private ClothesDryer;
6
+ constructor(platform: any, accessory: PlatformAccessory<SmartHqContext>, device: any);
7
+ handleGetOn(): Promise<CharacteristicValue>;
8
+ handleSetOn(value: CharacteristicValue): Promise<void>;
9
+ }
10
+ //# sourceMappingURL=clothesDryer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"clothesDryer.d.ts","sourceRoot":"","sources":["../../src/devices/clothesDryer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA;AAExE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAEpD,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAExC,qBAAa,mBAAoB,SAAQ,UAAU;IACjD,OAAO,CAAC,YAAY,CAEnB;gBAGC,QAAQ,EAAE,GAAG,EACb,SAAS,EAAE,iBAAiB,CAAC,cAAc,CAAC,EAC5C,MAAM,EAAE,GAAG;IA4DP,WAAW,IAAI,OAAO,CAAC,mBAAmB,CAAC;IAY3C,WAAW,CAAC,KAAK,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC;CAU7D"}
@@ -0,0 +1,84 @@
1
+ import { deviceBase } from './device.js';
2
+ export class SmartHQClothesDryer extends deviceBase {
3
+ ClothesDryer;
4
+ constructor(platform, accessory, device) {
5
+ super(platform, accessory, device);
6
+ this.debugLog(`Clothes Dryer Features: ${JSON.stringify(accessory.context.device.features)}`);
7
+ // Initialize ClothesDryer state (restore from cache if available)
8
+ this.ClothesDryer = {
9
+ On: accessory.context.ClothesDryer?.On ?? false,
10
+ };
11
+ // Dryer Running State (Valve)
12
+ const dryerValve = this.accessory.getService('Dryer') ?? this.accessory.addService(this.platform.Service.Valve, 'Dryer', 'Dryer');
13
+ dryerValve.setCharacteristic(this.platform.Characteristic.Name, 'Dryer');
14
+ dryerValve.setCharacteristic(this.platform.Characteristic.ValveType, this.platform.Characteristic.ValveType.GENERIC_VALVE);
15
+ dryerValve
16
+ .getCharacteristic(this.platform.Characteristic.Active)
17
+ .onGet(async () => {
18
+ try {
19
+ return this.ClothesDryer?.On ? this.platform.Characteristic.Active.ACTIVE : this.platform.Characteristic.Active.INACTIVE;
20
+ }
21
+ catch (error) {
22
+ this.warnLog?.(`Dryer Active error: ${error?.message ?? error}`);
23
+ return this.platform.Characteristic.Active.INACTIVE;
24
+ }
25
+ })
26
+ .onSet(this.handleSetOn.bind(this));
27
+ dryerValve
28
+ .getCharacteristic(this.platform.Characteristic.InUse)
29
+ .onGet(async () => {
30
+ try {
31
+ return this.ClothesDryer?.On ? this.platform.Characteristic.InUse.IN_USE : this.platform.Characteristic.InUse.NOT_IN_USE;
32
+ }
33
+ catch (error) {
34
+ this.warnLog?.(`Dryer InUse error: ${error?.message ?? error}`);
35
+ return this.platform.Characteristic.InUse.NOT_IN_USE;
36
+ }
37
+ });
38
+ // Door Lock
39
+ const doorLock = this.accessory.getService('Dryer Door Lock') ?? this.accessory.addService(this.platform.Service.LockMechanism, 'Dryer Door Lock', 'DryerDoorLock');
40
+ doorLock.setCharacteristic(this.platform.Characteristic.Name, 'Dryer Door Lock');
41
+ doorLock
42
+ .getCharacteristic(this.platform.Characteristic.LockCurrentState)
43
+ .onGet(async () => {
44
+ try {
45
+ // TODO: Implement door lock state when ERD available
46
+ return this.platform.Characteristic.LockCurrentState.UNSECURED;
47
+ }
48
+ catch (error) {
49
+ this.warnLog?.(`Dryer Door Lock error: ${error?.message ?? error}`);
50
+ return this.platform.Characteristic.LockCurrentState.UNSECURED;
51
+ }
52
+ });
53
+ doorLock
54
+ .getCharacteristic(this.platform.Characteristic.LockTargetState)
55
+ .onGet(async () => this.platform.Characteristic.LockTargetState.UNSECURED)
56
+ .onSet(async (value) => {
57
+ this.debugLog(`Dryer Door Lock set to: ${value}`);
58
+ });
59
+ }
60
+ async handleGetOn() {
61
+ try {
62
+ // TODO: Replace with actual ERD code for dryer On state if available
63
+ // const erdValue = await this.readErd(ERD_TYPES.CLOTHES_DRYER_ON)
64
+ // return Number.parseInt(erdValue) !== 0
65
+ return this.ClothesDryer?.On ?? false;
66
+ }
67
+ catch (error) {
68
+ this.warnLog?.(`ClothesDryer handleGetOn error: ${error?.message ?? error}`);
69
+ return false;
70
+ }
71
+ }
72
+ async handleSetOn(value) {
73
+ try {
74
+ // TODO: Replace with actual ERD code for dryer On state if available
75
+ // await this.writeErd(ERD_TYPES.CLOTHES_DRYER_ON, value as boolean)
76
+ this.ClothesDryer.On = value;
77
+ this.accessory.context.ClothesDryer = this.ClothesDryer;
78
+ }
79
+ catch (error) {
80
+ this.warnLog?.(`ClothesDryer handleSetOn error: ${error?.message ?? error}`);
81
+ }
82
+ }
83
+ }
84
+ //# sourceMappingURL=clothesDryer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"clothesDryer.js","sourceRoot":"","sources":["../../src/devices/clothesDryer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import type { CharacteristicValue, PlatformAccessory } from 'homebridge';
2
+ import type { SmartHqContext } from '../settings.js';
3
+ import { deviceBase } from './device.js';
4
+ export declare class SmartHQClothesWasher extends deviceBase {
5
+ private ClothesWasher;
6
+ constructor(platform: any, accessory: PlatformAccessory<SmartHqContext>, device: any);
7
+ handleGetOn(): Promise<CharacteristicValue>;
8
+ handleSetOn(value: CharacteristicValue): Promise<void>;
9
+ }
10
+ //# sourceMappingURL=clothesWasher.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"clothesWasher.d.ts","sourceRoot":"","sources":["../../src/devices/clothesWasher.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA;AAExE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAEpD,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAExC,qBAAa,oBAAqB,SAAQ,UAAU;IAClD,OAAO,CAAC,aAAa,CAEpB;gBAGC,QAAQ,EAAE,GAAG,EACb,SAAS,EAAE,iBAAiB,CAAC,cAAc,CAAC,EAC5C,MAAM,EAAE,GAAG;IA4DP,WAAW,IAAI,OAAO,CAAC,mBAAmB,CAAC;IAY3C,WAAW,CAAC,KAAK,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC;CAU7D"}
@@ -0,0 +1,84 @@
1
+ import { deviceBase } from './device.js';
2
+ export class SmartHQClothesWasher extends deviceBase {
3
+ ClothesWasher;
4
+ constructor(platform, accessory, device) {
5
+ super(platform, accessory, device);
6
+ this.debugLog(`Clothes Washer Features: ${JSON.stringify(accessory.context.device.features)}`);
7
+ // Initialize ClothesWasher state (restore from cache if available)
8
+ this.ClothesWasher = {
9
+ On: accessory.context.ClothesWasher?.On ?? false,
10
+ };
11
+ // Washer Running State (Valve)
12
+ const washerValve = this.accessory.getService('Washer') ?? this.accessory.addService(this.platform.Service.Valve, 'Washer', 'Washer');
13
+ washerValve.setCharacteristic(this.platform.Characteristic.Name, 'Washer');
14
+ washerValve.setCharacteristic(this.platform.Characteristic.ValveType, this.platform.Characteristic.ValveType.GENERIC_VALVE);
15
+ washerValve
16
+ .getCharacteristic(this.platform.Characteristic.Active)
17
+ .onGet(async () => {
18
+ try {
19
+ return this.ClothesWasher?.On ? this.platform.Characteristic.Active.ACTIVE : this.platform.Characteristic.Active.INACTIVE;
20
+ }
21
+ catch (error) {
22
+ this.warnLog(`Washer Active error: ${error?.message ?? error}`);
23
+ return this.platform.Characteristic.Active.INACTIVE;
24
+ }
25
+ })
26
+ .onSet(this.handleSetOn.bind(this));
27
+ washerValve
28
+ .getCharacteristic(this.platform.Characteristic.InUse)
29
+ .onGet(async () => {
30
+ try {
31
+ return this.ClothesWasher?.On ? this.platform.Characteristic.InUse.IN_USE : this.platform.Characteristic.InUse.NOT_IN_USE;
32
+ }
33
+ catch (error) {
34
+ this.warnLog(`Washer InUse error: ${error?.message ?? error}`);
35
+ return this.platform.Characteristic.InUse.NOT_IN_USE;
36
+ }
37
+ });
38
+ // Door Lock
39
+ const doorLock = this.accessory.getService('Washer Door Lock') ?? this.accessory.addService(this.platform.Service.LockMechanism, 'Washer Door Lock', 'WasherDoorLock');
40
+ doorLock.setCharacteristic(this.platform.Characteristic.Name, 'Washer Door Lock');
41
+ doorLock
42
+ .getCharacteristic(this.platform.Characteristic.LockCurrentState)
43
+ .onGet(async () => {
44
+ try {
45
+ // TODO: Implement door lock state when ERD available
46
+ return this.platform.Characteristic.LockCurrentState.UNSECURED;
47
+ }
48
+ catch (error) {
49
+ this.warnLog(`Washer Door Lock error: ${error?.message ?? error}`);
50
+ return this.platform.Characteristic.LockCurrentState.UNSECURED;
51
+ }
52
+ });
53
+ doorLock
54
+ .getCharacteristic(this.platform.Characteristic.LockTargetState)
55
+ .onGet(async () => this.platform.Characteristic.LockTargetState.UNSECURED)
56
+ .onSet(async (value) => {
57
+ this.debugLog(`Washer Door Lock set to: ${value}`);
58
+ });
59
+ }
60
+ async handleGetOn() {
61
+ try {
62
+ // TODO: Replace with actual ERD code for washer On state if available
63
+ // const erdValue = await this.readErd(ERD_TYPES.CLOTHES_WASHER_ON)
64
+ // return Number.parseInt(erdValue) !== 0
65
+ return this.ClothesWasher?.On ?? false;
66
+ }
67
+ catch (error) {
68
+ this.warnLog(`ClothesWasher handleGetOn error: ${error?.message ?? error}`);
69
+ return false;
70
+ }
71
+ }
72
+ async handleSetOn(value) {
73
+ try {
74
+ // TODO: Replace with actual ERD code for washer On state if available
75
+ // await this.writeErd(ERD_TYPES.CLOTHES_WASHER_ON, value as boolean)
76
+ this.ClothesWasher.On = value;
77
+ this.accessory.context.ClothesWasher = this.ClothesWasher;
78
+ }
79
+ catch (error) {
80
+ this.warnLog(`ClothesWasher handleSetOn error: ${error?.message ?? error}`);
81
+ }
82
+ }
83
+ }
84
+ //# sourceMappingURL=clothesWasher.js.map
@@ -0,0 +1 @@
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;CAuE5D"}
@@ -0,0 +1,79 @@
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
+ // Coffee Maker Brewing State (Valve)
11
+ const brewValve = this.accessory.getService('Coffee Maker') ?? this.accessory.addService(this.platform.Service.Valve, 'Coffee Maker', 'CoffeeMaker');
12
+ brewValve.setCharacteristic(this.platform.Characteristic.Name, 'Coffee Maker');
13
+ brewValve.setCharacteristic(this.platform.Characteristic.ValveType, this.platform.Characteristic.ValveType.GENERIC_VALVE);
14
+ brewValve
15
+ .getCharacteristic(this.platform.Characteristic.Active)
16
+ .onGet(async () => {
17
+ try {
18
+ // TODO: Implement brewing state ERD
19
+ return this.platform.Characteristic.Active.INACTIVE;
20
+ }
21
+ catch (error) {
22
+ this.warnLog?.(`Coffee Maker Active error: ${error?.message ?? error}`);
23
+ return this.platform.Characteristic.Active.INACTIVE;
24
+ }
25
+ })
26
+ .onSet(async (value) => {
27
+ try {
28
+ // TODO: Implement brew control ERD
29
+ this.debugLog(`Coffee Maker brew set to: ${value}`);
30
+ }
31
+ catch (error) {
32
+ this.warnLog?.(`Coffee Maker brew set error: ${error?.message ?? error}`);
33
+ }
34
+ });
35
+ brewValve
36
+ .getCharacteristic(this.platform.Characteristic.InUse)
37
+ .onGet(async () => {
38
+ try {
39
+ // TODO: Implement brewing state ERD
40
+ return this.platform.Characteristic.InUse.NOT_IN_USE;
41
+ }
42
+ catch (error) {
43
+ this.warnLog?.(`Coffee Maker InUse error: ${error?.message ?? error}`);
44
+ return this.platform.Characteristic.InUse.NOT_IN_USE;
45
+ }
46
+ });
47
+ // Water Level Sensor (Humidity as proxy)
48
+ const waterLevel = this.accessory.getService('Water Level') ?? this.accessory.addService(this.platform.Service.HumiditySensor, 'Water Level', 'WaterLevel');
49
+ waterLevel.setCharacteristic(this.platform.Characteristic.Name, 'Water Level');
50
+ waterLevel
51
+ .getCharacteristic(this.platform.Characteristic.CurrentRelativeHumidity)
52
+ .onGet(async () => {
53
+ try {
54
+ // TODO: Implement water level ERD (0-100%)
55
+ return 100;
56
+ }
57
+ catch (error) {
58
+ this.warnLog?.(`Coffee Maker Water Level error: ${error?.message ?? error}`);
59
+ return 0;
60
+ }
61
+ });
62
+ // Filter/Cleaning Status
63
+ const filterService = this.accessory.getService('Coffee Filter') ?? this.accessory.addService(this.platform.Service.FilterMaintenance, 'Coffee Filter', 'CoffeeFilter');
64
+ filterService.setCharacteristic(this.platform.Characteristic.Name, 'Coffee Filter');
65
+ filterService
66
+ .getCharacteristic(this.platform.Characteristic.FilterChangeIndication)
67
+ .onGet(async () => {
68
+ try {
69
+ // TODO: Implement filter/cleaning status ERD
70
+ return this.platform.Characteristic.FilterChangeIndication.FILTER_OK;
71
+ }
72
+ catch (error) {
73
+ this.warnLog?.(`Coffee Filter Status error: ${error?.message ?? error}`);
74
+ return this.platform.Characteristic.FilterChangeIndication.FILTER_OK;
75
+ }
76
+ });
77
+ }
78
+ }
79
+ //# sourceMappingURL=coffeeMaker.js.map