@homebridge-plugins/homebridge-smarthq 0.5.0-beta.1 → 0.5.0-beta.10

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 (127) 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/airConditioner.d.ts.map +1 -1
  17. package/dist/devices/airConditioner.js +11 -4
  18. package/dist/devices/airConditioner.js.map +1 -1
  19. package/dist/devices/beverageCenter.d.ts +10 -0
  20. package/dist/devices/beverageCenter.d.ts.map +1 -0
  21. package/dist/devices/beverageCenter.js +125 -0
  22. package/dist/devices/beverageCenter.js.map +1 -0
  23. package/dist/devices/clothesDryer.d.ts +10 -0
  24. package/dist/devices/clothesDryer.d.ts.map +1 -0
  25. package/dist/devices/clothesDryer.js +84 -0
  26. package/dist/devices/clothesDryer.js.map +1 -0
  27. package/dist/devices/clothesWasher.d.ts +10 -0
  28. package/dist/devices/clothesWasher.d.ts.map +1 -0
  29. package/dist/devices/clothesWasher.js +84 -0
  30. package/dist/devices/clothesWasher.js.map +1 -0
  31. package/dist/devices/coffeeMaker.d.ts +10 -0
  32. package/dist/devices/coffeeMaker.d.ts.map +1 -0
  33. package/dist/devices/coffeeMaker.js +79 -0
  34. package/dist/devices/coffeeMaker.js.map +1 -0
  35. package/dist/devices/device.d.ts +12 -0
  36. package/dist/devices/device.d.ts.map +1 -1
  37. package/dist/devices/device.js +61 -1
  38. package/dist/devices/device.js.map +1 -1
  39. package/dist/devices/dishwasher.d.ts +0 -3
  40. package/dist/devices/dishwasher.d.ts.map +1 -1
  41. package/dist/devices/dishwasher.js +49 -29
  42. package/dist/devices/dishwasher.js.map +1 -1
  43. package/dist/devices/hood.d.ts +34 -0
  44. package/dist/devices/hood.d.ts.map +1 -0
  45. package/dist/devices/hood.js +306 -0
  46. package/dist/devices/hood.js.map +1 -0
  47. package/dist/devices/microwave.d.ts +10 -0
  48. package/dist/devices/microwave.d.ts.map +1 -0
  49. package/dist/devices/microwave.js +84 -0
  50. package/dist/devices/microwave.js.map +1 -0
  51. package/dist/devices/oven.d.ts +0 -2
  52. package/dist/devices/oven.d.ts.map +1 -1
  53. package/dist/devices/oven.js +78 -43
  54. package/dist/devices/oven.js.map +1 -1
  55. package/dist/devices/refrigerator.d.ts +0 -2
  56. package/dist/devices/refrigerator.d.ts.map +1 -1
  57. package/dist/devices/refrigerator.js +112 -29
  58. package/dist/devices/refrigerator.js.map +1 -1
  59. package/dist/devices/waterFilter.d.ts +10 -0
  60. package/dist/devices/waterFilter.d.ts.map +1 -0
  61. package/dist/devices/waterFilter.js +67 -0
  62. package/dist/devices/waterFilter.js.map +1 -0
  63. package/dist/devices/waterHeater.d.ts +10 -0
  64. package/dist/devices/waterHeater.d.ts.map +1 -0
  65. package/dist/devices/waterHeater.js +95 -0
  66. package/dist/devices/waterHeater.js.map +1 -0
  67. package/dist/devices/waterSoftener.d.ts +10 -0
  68. package/dist/devices/waterSoftener.d.ts.map +1 -0
  69. package/dist/devices/waterSoftener.js +67 -0
  70. package/dist/devices/waterSoftener.js.map +1 -0
  71. package/dist/getAccessToken.d.ts.map +1 -1
  72. package/dist/getAccessToken.js +6 -0
  73. package/dist/getAccessToken.js.map +1 -1
  74. package/dist/platform.d.ts +10 -0
  75. package/dist/platform.d.ts.map +1 -1
  76. package/dist/platform.js +393 -0
  77. package/dist/platform.js.map +1 -1
  78. package/dist/platform.test.d.ts +2 -0
  79. package/dist/platform.test.d.ts.map +1 -0
  80. package/dist/platform.test.js +80 -0
  81. package/dist/platform.test.js.map +1 -0
  82. package/dist/settings.d.ts +13 -0
  83. package/dist/settings.d.ts.map +1 -1
  84. package/dist/settings.js +3 -0
  85. package/dist/settings.js.map +1 -1
  86. package/docs/assets/highlight.css +7 -0
  87. package/docs/assets/main.js +5 -5
  88. package/docs/assets/navigation.js +1 -0
  89. package/docs/assets/search.js +1 -0
  90. package/docs/assets/style.css +248 -226
  91. package/docs/classes/SmartHQPlatform.html +45 -56
  92. package/docs/hierarchy.html +1 -0
  93. package/docs/index.html +22 -12
  94. package/docs/interfaces/DeviceOptions.html +2 -3
  95. package/docs/interfaces/SmartHQPlatformConfig.html +6 -17
  96. package/docs/interfaces/SmartHqContext.html +6 -4
  97. package/docs/interfaces/SmartHqERDResponse.html +7 -8
  98. package/docs/interfaces/credentials.html +3 -4
  99. package/docs/interfaces/devicesConfig.html +7 -8
  100. package/docs/interfaces/options.html +7 -8
  101. package/docs/media/copilot-instructions.md +90 -0
  102. package/docs/modules.html +1 -2
  103. package/docs/variables/API_URL.html +1 -2
  104. package/docs/variables/ERD_CODES.html +1 -2
  105. package/docs/variables/ERD_TYPES.html +1 -2
  106. package/docs/variables/KEEPALIVE_TIMEOUT.html +1 -2
  107. package/docs/variables/LOGIN_URL.html +2 -3
  108. package/docs/variables/OAUTH2_CLIENT_ID.html +1 -2
  109. package/docs/variables/OAUTH2_CLIENT_SECRET.html +1 -2
  110. package/docs/variables/OAUTH2_REDIRECT_URI.html +1 -2
  111. package/docs/variables/PLATFORM_NAME.html +2 -3
  112. package/docs/variables/PLUGIN_NAME.html +2 -3
  113. package/docs/variables/SECURE_URL.html +2 -3
  114. package/docs/variables/default.html +1 -0
  115. package/package.json +21 -28
  116. package/typedoc.json +0 -4
  117. package/vitest.config.ts +6 -5
  118. package/.github/workflows/build.yml +0 -18
  119. package/.github/workflows/changerelease.yml +0 -11
  120. package/.github/workflows/labeler.yml +0 -9
  121. package/.github/workflows/release-drafter.yml +0 -14
  122. package/docs/assets/dmt/dmt-component-data.js +0 -1
  123. package/docs/assets/dmt/dmt-components.css +0 -20
  124. package/docs/assets/dmt/dmt-components.js +0 -67
  125. package/docs/assets/dmt/dmt-search.cmp +0 -0
  126. package/docs/assets/dmt/dmt-theme.css +0 -1
  127. package/docs/functions/default.html +0 -2
@@ -1,4 +1,3 @@
1
- import axios from 'axios';
2
1
  import { interval, skipWhile } from 'rxjs';
3
2
  import { ERD_TYPES } from '../settings.js';
4
3
  import { deviceBase } from './device.js';
@@ -13,21 +12,121 @@ export class SmartHQRefrigerator extends deviceBase {
13
12
  this.platform = platform;
14
13
  this.device = device;
15
14
  this.debugLog(`Refrigerator Features: ${JSON.stringify(accessory.context.device.features)}`);
16
- accessory.context.device.features.forEach((feature) => {
17
- /* [
18
- "DOOR_STATUS"
19
- ] */
20
- switch (feature) {
21
- case 'DOOR_STATUS': {
22
- const refrigerator = this.accessory.getService(accessory.displayName) ?? this.accessory.addService(this.platform.Service.ContactSensor, accessory.displayName, 'Refrigerator');
23
- refrigerator
24
- .getCharacteristic(this.platform.Characteristic.ContactSensorState)
25
- .onGet(() => this.readErd(ERD_TYPES.DOOR_STATUS).then(r => Number.parseInt(r) !== 0))
26
- .onSet(value => this.writeErd(ERD_TYPES.DOOR_STATUS, value));
27
- break;
15
+ // Refrigerator Door Sensor
16
+ const doorSensorService = this.accessory.getService('Refrigerator Door') ?? this.accessory.addService(this.platform.Service.ContactSensor, 'Refrigerator Door', 'RefrigeratorDoor');
17
+ doorSensorService.setCharacteristic(this.platform.Characteristic.Name, 'Refrigerator Door');
18
+ doorSensorService
19
+ .getCharacteristic(this.platform.Characteristic.ContactSensorState)
20
+ .onGet(async () => {
21
+ const r = await this.readErd(ERD_TYPES.DOOR_STATUS);
22
+ return r ? Number.parseInt(r) !== 0 : false;
23
+ });
24
+ // Fridge Temperature Sensor
25
+ const fridgeTempService = this.accessory.getService('Fridge Temperature') ?? this.accessory.addService(this.platform.Service.TemperatureSensor, 'Fridge Temperature', 'FridgeTemp');
26
+ fridgeTempService.setCharacteristic(this.platform.Characteristic.Name, 'Fridge Temperature');
27
+ fridgeTempService
28
+ .getCharacteristic(this.platform.Characteristic.CurrentTemperature)
29
+ .onGet(async () => {
30
+ const r = await this.readErd(ERD_TYPES.CURRENT_TEMPERATURE);
31
+ this.debugLog(`Raw CURRENT_TEMPERATURE ERD response: ${r}`);
32
+ // Check if ERD is supported
33
+ if (!r || r === 'undefined') {
34
+ return 2.8; // Default to ~37°F in Celsius if ERD not supported
35
+ }
36
+ // The CURRENT_TEMPERATURE ERD returns a JSON object with fridge and freezer properties
37
+ try {
38
+ const temps = JSON.parse(r);
39
+ const fridgeTempF = temps.fridge || temps.Fridge;
40
+ this.debugLog(`Fridge temp: ${fridgeTempF}°F`);
41
+ if (!fridgeTempF || Number.isNaN(Number(fridgeTempF))) {
42
+ return 2.8; // Default if can't parse
43
+ }
44
+ // Convert Fahrenheit to Celsius for HomeKit
45
+ return (Number(fridgeTempF) - 32) * 5 / 9;
46
+ }
47
+ catch (parseError) {
48
+ this.debugLog(`Fridge Temperature: JSON parse error, using default`);
49
+ return 2.8;
50
+ }
51
+ });
52
+ // Freezer Temperature Sensor
53
+ const freezerTempService = this.accessory.getService('Freezer Temperature') ?? this.accessory.addService(this.platform.Service.TemperatureSensor, 'Freezer Temperature', 'FreezerTemp');
54
+ freezerTempService.setCharacteristic(this.platform.Characteristic.Name, 'Freezer Temperature');
55
+ freezerTempService
56
+ .getCharacteristic(this.platform.Characteristic.CurrentTemperature)
57
+ .onGet(async () => {
58
+ const r = await this.readErd(ERD_TYPES.CURRENT_TEMPERATURE);
59
+ this.debugLog(`Raw CURRENT_TEMPERATURE ERD response: ${r}`);
60
+ // Check if ERD is supported
61
+ if (!r || r === 'undefined') {
62
+ return -17.8; // Default to ~0°F in Celsius if ERD not supported
63
+ }
64
+ // The CURRENT_TEMPERATURE ERD returns a JSON object with fridge and freezer properties
65
+ try {
66
+ const temps = JSON.parse(r);
67
+ const freezerTempF = temps.freezer || temps.Freezer;
68
+ this.debugLog(`Freezer temp: ${freezerTempF}°F`);
69
+ if (!freezerTempF || Number.isNaN(Number(freezerTempF))) {
70
+ return -17.8; // Default if can't parse
28
71
  }
72
+ // Convert Fahrenheit to Celsius for HomeKit
73
+ return (Number(freezerTempF) - 32) * 5 / 9;
74
+ }
75
+ catch (parseError) {
76
+ this.debugLog(`Freezer Temperature: JSON parse error, using default`);
77
+ return -17.8;
29
78
  }
30
79
  });
80
+ // Air Filter Maintenance
81
+ const filterService = this.accessory.getService('Air Filter') ?? this.accessory.addService(this.platform.Service.FilterMaintenance, 'Air Filter', 'AirFilter');
82
+ filterService.setCharacteristic(this.platform.Characteristic.Name, 'Air Filter');
83
+ filterService
84
+ .getCharacteristic(this.platform.Characteristic.FilterChangeIndication)
85
+ .onGet(async () => {
86
+ const r = await this.readErd(ERD_TYPES.AIR_FILTER_STATUS);
87
+ if (!r) {
88
+ return this.platform.Characteristic.FilterChangeIndication.FILTER_OK;
89
+ }
90
+ return Number.parseInt(r) === 1
91
+ ? this.platform.Characteristic.FilterChangeIndication.CHANGE_FILTER
92
+ : this.platform.Characteristic.FilterChangeIndication.FILTER_OK;
93
+ });
94
+ // Ice Maker Control (Switch)
95
+ const iceMakerService = this.accessory.getService('Ice Maker') ?? this.accessory.addService(this.platform.Service.Switch, 'Ice Maker', 'IceMaker');
96
+ iceMakerService.setCharacteristic(this.platform.Characteristic.Name, 'Ice Maker');
97
+ iceMakerService
98
+ .getCharacteristic(this.platform.Characteristic.On)
99
+ .onGet(async () => {
100
+ const r = await this.readErd(ERD_TYPES.ICE_MAKER_CONTROL);
101
+ return r ? Number.parseInt(r) !== 0 : false;
102
+ })
103
+ .onSet(async (value) => {
104
+ await this.writeErd(ERD_TYPES.ICE_MAKER_CONTROL, value);
105
+ });
106
+ // Turbo Cool Switch
107
+ const turboCoolService = this.accessory.getService('Turbo Cool') ?? this.accessory.addService(this.platform.Service.Switch, 'Turbo Cool', 'TurboCool');
108
+ turboCoolService.setCharacteristic(this.platform.Characteristic.Name, 'Turbo Cool');
109
+ turboCoolService
110
+ .getCharacteristic(this.platform.Characteristic.On)
111
+ .onGet(async () => {
112
+ const r = await this.readErd(ERD_TYPES.TURBO_COOL_STATUS);
113
+ return r ? Number.parseInt(r) !== 0 : false;
114
+ })
115
+ .onSet(async (value) => {
116
+ await this.writeErd(ERD_TYPES.TURBO_COOL_STATUS, value);
117
+ });
118
+ // Turbo Freeze Switch
119
+ const turboFreezeService = this.accessory.getService('Turbo Freeze') ?? this.accessory.addService(this.platform.Service.Switch, 'Turbo Freeze', 'TurboFreeze');
120
+ turboFreezeService.setCharacteristic(this.platform.Characteristic.Name, 'Turbo Freeze');
121
+ turboFreezeService
122
+ .getCharacteristic(this.platform.Characteristic.On)
123
+ .onGet(async () => {
124
+ const r = await this.readErd(ERD_TYPES.TURBO_FREEZE_STATUS);
125
+ return r ? Number.parseInt(r) !== 0 : false;
126
+ })
127
+ .onSet(async (value) => {
128
+ await this.writeErd(ERD_TYPES.TURBO_FREEZE_STATUS, value);
129
+ });
31
130
  // this is subject we use to track when we need to POST changes to the SmartHQ API
32
131
  this.SensorUpdateInProgress = false;
33
132
  // Retrieve initial values and updateHomekit
@@ -39,21 +138,5 @@ export class SmartHQRefrigerator extends deviceBase {
39
138
  // await this.refreshStatus()
40
139
  });
41
140
  }
42
- async readErd(erd) {
43
- const d = await axios
44
- .get(`/appliance/${this.accessory.context.device.applianceId}/erd/${erd}`);
45
- return String(d.data.value);
46
- }
47
- async writeErd(erd, value) {
48
- await axios
49
- .post(`/appliance/${this.accessory.context.device.applianceId}/erd/${erd}`, {
50
- kind: 'appliance#erdListEntry',
51
- userId: this.accessory.context.userId,
52
- applianceId: this.accessory.context.device.applianceId,
53
- erd,
54
- value: typeof value === 'boolean' ? (value ? '01' : '00') : value,
55
- });
56
- return undefined;
57
- }
58
141
  }
59
142
  //# sourceMappingURL=refrigerator.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"refrigerator.js","sourceRoot":"","sources":["../../src/devices/refrigerator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"refrigerator.js","sourceRoot":"","sources":["../../src/devices/refrigerator.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,MAAM,CAAA;AAE1C,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAC1C,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAExC,MAAM,OAAO,mBAAoB,SAAQ,UAAU;IAMtC;IAEA;IAPX,UAAU;IACV,sBAAsB,CAAU;IAChC,YAAY,CAAK;IAEjB,YACW,QAAyB,EAClC,SAA4C,EACnC,MAAgD;QAEzD,KAAK,CAAC,QAAQ,EAAE,SAAS,EAAE,MAAM,CAAC,CAAA;QAJzB,aAAQ,GAAR,QAAQ,CAAiB;QAEzB,WAAM,GAAN,MAAM,CAA0C;QAIzD,IAAI,CAAC,QAAQ,CAAC,0BAA0B,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAA;QAE5F,2BAA2B;QAC3B,MAAM,iBAAiB,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,mBAAmB,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,aAAa,EAAE,mBAAmB,EAAE,kBAAkB,CAAC,CAAA;QACnL,iBAAiB,CAAC,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,EAAE,mBAAmB,CAAC,CAAA;QAC3F,iBAAiB;aACd,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,kBAAkB,CAAC;aAClE,KAAK,CAAC,KAAK,IAAI,EAAE;YAChB,MAAM,CAAC,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,WAAW,CAAC,CAAA;YACnD,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAA;QAC7C,CAAC,CAAC,CAAA;QAEJ,4BAA4B;QAC5B,MAAM,iBAAiB,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,oBAAoB,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,iBAAiB,EAAE,oBAAoB,EAAE,YAAY,CAAC,CAAA;QACnL,iBAAiB,CAAC,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,EAAE,oBAAoB,CAAC,CAAA;QAC5F,iBAAiB;aACd,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,kBAAkB,CAAC;aAClE,KAAK,CAAC,KAAK,IAAI,EAAE;YAChB,MAAM,CAAC,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,mBAAmB,CAAC,CAAA;YAC3D,IAAI,CAAC,QAAQ,CAAC,yCAAyC,CAAC,EAAE,CAAC,CAAA;YAE3D,4BAA4B;YAC5B,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,WAAW,EAAE,CAAC;gBAC5B,OAAO,GAAG,CAAA,CAAC,mDAAmD;YAChE,CAAC;YAED,uFAAuF;YACvF,IAAI,CAAC;gBACH,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;gBAC3B,MAAM,WAAW,GAAG,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM,CAAA;gBAChD,IAAI,CAAC,QAAQ,CAAC,gBAAgB,WAAW,IAAI,CAAC,CAAA;gBAE9C,IAAI,CAAC,WAAW,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC;oBACtD,OAAO,GAAG,CAAA,CAAC,yBAAyB;gBACtC,CAAC;gBAED,4CAA4C;gBAC5C,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;YAC3C,CAAC;YAAC,OAAO,UAAU,EAAE,CAAC;gBACpB,IAAI,CAAC,QAAQ,CAAC,qDAAqD,CAAC,CAAA;gBACpE,OAAO,GAAG,CAAA;YACZ,CAAC;QACH,CAAC,CAAC,CAAA;QAEJ,6BAA6B;QAC7B,MAAM,kBAAkB,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,qBAAqB,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,iBAAiB,EAAE,qBAAqB,EAAE,aAAa,CAAC,CAAA;QACvL,kBAAkB,CAAC,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,EAAE,qBAAqB,CAAC,CAAA;QAC9F,kBAAkB;aACf,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,kBAAkB,CAAC;aAClE,KAAK,CAAC,KAAK,IAAI,EAAE;YAChB,MAAM,CAAC,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,mBAAmB,CAAC,CAAA;YAC3D,IAAI,CAAC,QAAQ,CAAC,yCAAyC,CAAC,EAAE,CAAC,CAAA;YAE3D,4BAA4B;YAC5B,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,WAAW,EAAE,CAAC;gBAC5B,OAAO,CAAC,IAAI,CAAA,CAAC,kDAAkD;YACjE,CAAC;YAED,uFAAuF;YACvF,IAAI,CAAC;gBACH,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;gBAC3B,MAAM,YAAY,GAAG,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,OAAO,CAAA;gBACnD,IAAI,CAAC,QAAQ,CAAC,iBAAiB,YAAY,IAAI,CAAC,CAAA;gBAEhD,IAAI,CAAC,YAAY,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC;oBACxD,OAAO,CAAC,IAAI,CAAA,CAAC,yBAAyB;gBACxC,CAAC;gBAED,4CAA4C;gBAC5C,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;YAC5C,CAAC;YAAC,OAAO,UAAU,EAAE,CAAC;gBACpB,IAAI,CAAC,QAAQ,CAAC,sDAAsD,CAAC,CAAA;gBACrE,OAAO,CAAC,IAAI,CAAA;YACd,CAAC;QACH,CAAC,CAAC,CAAA;QAEJ,yBAAyB;QACzB,MAAM,aAAa,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,YAAY,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,iBAAiB,EAAE,YAAY,EAAE,WAAW,CAAC,CAAA;QAC9J,aAAa,CAAC,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,EAAE,YAAY,CAAC,CAAA;QAChF,aAAa;aACV,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,sBAAsB,CAAC;aACtE,KAAK,CAAC,KAAK,IAAI,EAAE;YAChB,MAAM,CAAC,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAA;YACzD,IAAI,CAAC,CAAC,EAAE,CAAC;gBACP,OAAO,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,sBAAsB,CAAC,SAAS,CAAA;YACtE,CAAC;YACD,OAAO,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC;gBAC7B,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,sBAAsB,CAAC,aAAa;gBACnE,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,sBAAsB,CAAC,SAAS,CAAA;QACnE,CAAC,CAAC,CAAA;QAEJ,6BAA6B;QAC7B,MAAM,eAAe,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,WAAW,EAAE,UAAU,CAAC,CAAA;QAClJ,eAAe,CAAC,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,EAAE,WAAW,CAAC,CAAA;QACjF,eAAe;aACZ,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC;aAClD,KAAK,CAAC,KAAK,IAAI,EAAE;YAChB,MAAM,CAAC,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAA;YACzD,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAA;QAC7C,CAAC,CAAC;aACD,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;YACrB,MAAM,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,iBAAiB,EAAE,KAAgB,CAAC,CAAA;QACpE,CAAC,CAAC,CAAA;QAEJ,oBAAoB;QACpB,MAAM,gBAAgB,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,YAAY,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,YAAY,EAAE,WAAW,CAAC,CAAA;QACtJ,gBAAgB,CAAC,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,EAAE,YAAY,CAAC,CAAA;QACnF,gBAAgB;aACb,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC;aAClD,KAAK,CAAC,KAAK,IAAI,EAAE;YAChB,MAAM,CAAC,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAA;YACzD,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAA;QAC7C,CAAC,CAAC;aACD,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;YACrB,MAAM,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,iBAAiB,EAAE,KAAgB,CAAC,CAAA;QACpE,CAAC,CAAC,CAAA;QAEJ,sBAAsB;QACtB,MAAM,kBAAkB,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,cAAc,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,cAAc,EAAE,aAAa,CAAC,CAAA;QAC9J,kBAAkB,CAAC,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,EAAE,cAAc,CAAC,CAAA;QACvF,kBAAkB;aACf,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC;aAClD,KAAK,CAAC,KAAK,IAAI,EAAE;YAChB,MAAM,CAAC,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,mBAAmB,CAAC,CAAA;YAC3D,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAA;QAC7C,CAAC,CAAC;aACD,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;YACrB,MAAM,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,mBAAmB,EAAE,KAAgB,CAAC,CAAA;QACtE,CAAC,CAAC,CAAA;QAEJ,kFAAkF;QAClF,IAAI,CAAC,sBAAsB,GAAG,KAAK,CAAA;QAEnC,4CAA4C;QAC5C,uBAAuB;QAEvB,2BAA2B;QAC3B,QAAQ,CAAC,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC;aACrC,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;aAClD,SAAS,CAAC,KAAK,IAAI,EAAE;YACpB,6BAA6B;QAC/B,CAAC,CAAC,CAAA;IACN,CAAC;CACF"}
@@ -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 SmartHQWaterFilter 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=waterFilter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"waterFilter.d.ts","sourceRoot":"","sources":["../../src/devices/waterFilter.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;CA4D5D"}
@@ -0,0 +1,67 @@
1
+ import { deviceBase } from './device.js';
2
+ export class SmartHQWaterFilter 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(`Water Filter Features: ${JSON.stringify(accessory.context.device.features)}`);
10
+ // Water Filter Maintenance
11
+ const filterService = this.accessory.getService('Water Filter') ?? this.accessory.addService(this.platform.Service.FilterMaintenance, 'Water Filter', 'WaterFilter');
12
+ filterService.setCharacteristic(this.platform.Characteristic.Name, 'Water Filter');
13
+ filterService
14
+ .getCharacteristic(this.platform.Characteristic.FilterChangeIndication)
15
+ .onGet(async () => {
16
+ try {
17
+ // TODO: Implement filter status ERD
18
+ return this.platform.Characteristic.FilterChangeIndication.FILTER_OK;
19
+ }
20
+ catch (error) {
21
+ this.warnLog?.(`Water Filter Status error: ${error?.message ?? error}`);
22
+ return this.platform.Characteristic.FilterChangeIndication.FILTER_OK;
23
+ }
24
+ });
25
+ filterService
26
+ .getCharacteristic(this.platform.Characteristic.FilterLifeLevel)
27
+ .onGet(async () => {
28
+ try {
29
+ // TODO: Implement filter life percentage ERD
30
+ return 100;
31
+ }
32
+ catch (error) {
33
+ this.warnLog?.(`Water Filter Life error: ${error?.message ?? error}`);
34
+ return 100;
35
+ }
36
+ });
37
+ // Water Flow Valve
38
+ const valveService = this.accessory.getService('Water Flow') ?? this.accessory.addService(this.platform.Service.Valve, 'Water Flow', 'WaterFlow');
39
+ valveService.setCharacteristic(this.platform.Characteristic.Name, 'Water Flow');
40
+ valveService.setCharacteristic(this.platform.Characteristic.ValveType, this.platform.Characteristic.ValveType.WATER_FAUCET);
41
+ valveService
42
+ .getCharacteristic(this.platform.Characteristic.Active)
43
+ .onGet(async () => {
44
+ try {
45
+ // TODO: Implement water flow state ERD
46
+ return this.platform.Characteristic.Active.ACTIVE;
47
+ }
48
+ catch (error) {
49
+ this.warnLog?.(`Water Flow error: ${error?.message ?? error}`);
50
+ return this.platform.Characteristic.Active.INACTIVE;
51
+ }
52
+ });
53
+ valveService
54
+ .getCharacteristic(this.platform.Characteristic.InUse)
55
+ .onGet(async () => {
56
+ try {
57
+ // TODO: Implement water flow state ERD
58
+ return this.platform.Characteristic.InUse.IN_USE;
59
+ }
60
+ catch (error) {
61
+ this.warnLog?.(`Water Flow InUse error: ${error?.message ?? error}`);
62
+ return this.platform.Characteristic.InUse.NOT_IN_USE;
63
+ }
64
+ });
65
+ }
66
+ }
67
+ //# sourceMappingURL=waterFilter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"waterFilter.js","sourceRoot":"","sources":["../../src/devices/waterFilter.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 SmartHQWaterHeater 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=waterHeater.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"waterHeater.d.ts","sourceRoot":"","sources":["../../src/devices/waterHeater.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;CAwF5D"}
@@ -0,0 +1,95 @@
1
+ import { deviceBase } from './device.js';
2
+ export class SmartHQWaterHeater 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(`Water Heater Features: ${JSON.stringify(accessory.context.device.features)}`);
10
+ // Water Heater as Thermostat
11
+ const heaterService = this.accessory.getService('Water Heater') ?? this.accessory.addService(this.platform.Service.Thermostat, 'Water Heater', 'WaterHeater');
12
+ heaterService.setCharacteristic(this.platform.Characteristic.Name, 'Water Heater');
13
+ heaterService
14
+ .getCharacteristic(this.platform.Characteristic.CurrentHeatingCoolingState)
15
+ .onGet(async () => {
16
+ try {
17
+ // TODO: Implement heating state ERD
18
+ return this.platform.Characteristic.CurrentHeatingCoolingState.HEAT;
19
+ }
20
+ catch (error) {
21
+ this.warnLog?.(`Water Heater State error: ${error?.message ?? error}`);
22
+ return this.platform.Characteristic.CurrentHeatingCoolingState.OFF;
23
+ }
24
+ });
25
+ heaterService
26
+ .getCharacteristic(this.platform.Characteristic.TargetHeatingCoolingState)
27
+ .setProps({
28
+ validValues: [this.platform.Characteristic.TargetHeatingCoolingState.OFF, this.platform.Characteristic.TargetHeatingCoolingState.HEAT],
29
+ })
30
+ .onGet(async () => {
31
+ try {
32
+ // TODO: Implement target state ERD
33
+ return this.platform.Characteristic.TargetHeatingCoolingState.HEAT;
34
+ }
35
+ catch (error) {
36
+ this.warnLog?.(`Water Heater Target State error: ${error?.message ?? error}`);
37
+ return this.platform.Characteristic.TargetHeatingCoolingState.OFF;
38
+ }
39
+ })
40
+ .onSet(async (value) => {
41
+ try {
42
+ // TODO: Implement target state control ERD
43
+ this.debugLog(`Water Heater set to: ${value}`);
44
+ }
45
+ catch (error) {
46
+ this.warnLog?.(`Water Heater Target State set error: ${error?.message ?? error}`);
47
+ }
48
+ });
49
+ heaterService
50
+ .getCharacteristic(this.platform.Characteristic.CurrentTemperature)
51
+ .onGet(async () => {
52
+ try {
53
+ // TODO: Implement current temperature ERD
54
+ return 50;
55
+ }
56
+ catch (error) {
57
+ this.warnLog?.(`Water Heater Current Temp error: ${error?.message ?? error}`);
58
+ return 50;
59
+ }
60
+ });
61
+ heaterService
62
+ .getCharacteristic(this.platform.Characteristic.TargetTemperature)
63
+ .setProps({
64
+ minValue: 40,
65
+ maxValue: 60,
66
+ minStep: 1,
67
+ })
68
+ .onGet(async () => {
69
+ try {
70
+ // TODO: Implement target temperature ERD
71
+ return 50;
72
+ }
73
+ catch (error) {
74
+ this.warnLog?.(`Water Heater Target Temp error: ${error?.message ?? error}`);
75
+ return 50;
76
+ }
77
+ })
78
+ .onSet(async (value) => {
79
+ try {
80
+ // TODO: Implement target temperature control ERD
81
+ this.debugLog(`Water Heater temperature set to: ${value}°C`);
82
+ }
83
+ catch (error) {
84
+ this.warnLog?.(`Water Heater Target Temp set error: ${error?.message ?? error}`);
85
+ }
86
+ });
87
+ heaterService
88
+ .getCharacteristic(this.platform.Characteristic.TemperatureDisplayUnits)
89
+ .onGet(async () => this.platform.Characteristic.TemperatureDisplayUnits.CELSIUS)
90
+ .onSet(async (value) => {
91
+ this.debugLog(`Water Heater display units set to: ${value}`);
92
+ });
93
+ }
94
+ }
95
+ //# sourceMappingURL=waterHeater.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"waterHeater.js","sourceRoot":"","sources":["../../src/devices/waterHeater.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 SmartHQWaterSoftener 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=waterSoftener.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"waterSoftener.d.ts","sourceRoot":"","sources":["../../src/devices/waterSoftener.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,oBAAqB,SAAQ,UAAU;IAEhD,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;CA4D5D"}
@@ -0,0 +1,67 @@
1
+ import { deviceBase } from './device.js';
2
+ export class SmartHQWaterSoftener 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(`Water Softener Features: ${JSON.stringify(accessory.context.device.features)}`);
10
+ // Water Softener Filter/Salt Status
11
+ const filterService = this.accessory.getService('Softener Salt') ?? this.accessory.addService(this.platform.Service.FilterMaintenance, 'Softener Salt', 'SoftenerSalt');
12
+ filterService.setCharacteristic(this.platform.Characteristic.Name, 'Softener Salt');
13
+ filterService
14
+ .getCharacteristic(this.platform.Characteristic.FilterChangeIndication)
15
+ .onGet(async () => {
16
+ try {
17
+ // TODO: Implement salt level ERD
18
+ return this.platform.Characteristic.FilterChangeIndication.FILTER_OK;
19
+ }
20
+ catch (error) {
21
+ this.warnLog?.(`Softener Salt Status error: ${error?.message ?? error}`);
22
+ return this.platform.Characteristic.FilterChangeIndication.FILTER_OK;
23
+ }
24
+ });
25
+ filterService
26
+ .getCharacteristic(this.platform.Characteristic.FilterLifeLevel)
27
+ .onGet(async () => {
28
+ try {
29
+ // TODO: Implement salt level percentage ERD
30
+ return 100;
31
+ }
32
+ catch (error) {
33
+ this.warnLog?.(`Softener Salt Level error: ${error?.message ?? error}`);
34
+ return 100;
35
+ }
36
+ });
37
+ // Water Valve
38
+ const valveService = this.accessory.getService('Water Softener') ?? this.accessory.addService(this.platform.Service.Valve, 'Water Softener', 'WaterSoftener');
39
+ valveService.setCharacteristic(this.platform.Characteristic.Name, 'Water Softener');
40
+ valveService.setCharacteristic(this.platform.Characteristic.ValveType, this.platform.Characteristic.ValveType.WATER_FAUCET);
41
+ valveService
42
+ .getCharacteristic(this.platform.Characteristic.Active)
43
+ .onGet(async () => {
44
+ try {
45
+ // TODO: Implement softener active state ERD
46
+ return this.platform.Characteristic.Active.ACTIVE;
47
+ }
48
+ catch (error) {
49
+ this.warnLog?.(`Water Softener Active error: ${error?.message ?? error}`);
50
+ return this.platform.Characteristic.Active.INACTIVE;
51
+ }
52
+ });
53
+ valveService
54
+ .getCharacteristic(this.platform.Characteristic.InUse)
55
+ .onGet(async () => {
56
+ try {
57
+ // TODO: Implement softener in-use state ERD
58
+ return this.platform.Characteristic.InUse.IN_USE;
59
+ }
60
+ catch (error) {
61
+ this.warnLog?.(`Water Softener InUse error: ${error?.message ?? error}`);
62
+ return this.platform.Characteristic.InUse.NOT_IN_USE;
63
+ }
64
+ });
65
+ }
66
+ }
67
+ //# sourceMappingURL=waterSoftener.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"waterSoftener.js","sourceRoot":"","sources":["../../src/devices/waterSoftener.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"getAccessToken.d.ts","sourceRoot":"","sources":["../src/getAccessToken.ts"],"names":[],"mappings":"AAoBA,wBAAsB,kBAAkB,CAAC,aAAa,EAAE,MAAM,6CAG7D;AAED,wBAA8B,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,6CA+B9E"}
1
+ {"version":3,"file":"getAccessToken.d.ts","sourceRoot":"","sources":["../src/getAccessToken.ts"],"names":[],"mappings":"AAoBA,wBAAsB,kBAAkB,CAAC,aAAa,EAAE,MAAM,6CAG7D;AAED,wBAA8B,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,6CAuC9E"}
@@ -35,7 +35,13 @@ export default async function getAccessToken(username, password) {
35
35
  maxRedirects: 0,
36
36
  validateStatus: () => true,
37
37
  });
38
+ if (!res.headers.location) {
39
+ throw new Error('Authentication failed: No redirect location received');
40
+ }
38
41
  const code = new URL(res.headers.location).searchParams.get('code');
42
+ if (!code) {
43
+ throw new Error('Authentication failed: No authorization code received');
44
+ }
39
45
  return client.grant({ grant_type: 'authorization_code', code, redirect_uri: OAUTH2_REDIRECT_URI });
40
46
  }
41
47
  //# sourceMappingURL=getAccessToken.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"getAccessToken.js","sourceRoot":"","sources":["../src/getAccessToken.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAA;AACjD,OAAO,KAAK,OAAO,MAAM,SAAS,CAAA;AAClC,OAAO,GAAG,MAAM,QAAQ,CAAA;AACxB,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAA;AACtC,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AAExC,OAAO,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAA;AAE3F,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,GAAG,CAAA;AAEhC,MAAM,UAAU,GAAG,MAAM,CAAC,QAAQ,CAAC,6CAA6C,CAAC,CAAC,IAAI,CACpF,MAAM,CAAC,EAAE,CACP,IAAI,MAAM,CAAC,MAAM,CAAC;IAChB,SAAS,EAAE,gBAAgB;IAC3B,aAAa,EAAE,oBAAoB;IACnC,cAAc,EAAE,CAAC,MAAM,CAAC;CACzB,CAAC,CACL,CAAA;AAED,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,aAAqB;IAC5D,MAAM,MAAM,GAAG,MAAM,UAAU,CAAA;IAC/B,OAAO,MAAM,CAAC,KAAK,CAAC,EAAE,aAAa,EAAE,UAAU,EAAE,eAAe,EAAE,CAAC,CAAA;AACrE,CAAC;AAED,MAAM,CAAC,OAAO,CAAC,KAAK,UAAU,cAAc,CAAC,QAAgB,EAAE,QAAgB;IAC7E,MAAM,MAAM,GAAG,MAAM,UAAU,CAAA;IAE/B,MAAM,QAAQ,GAAG,MAAM,CAAC,gBAAgB,EAAE,CAAA;IAE1C,MAAM,GAAG,GAAG,IAAI,SAAS,EAAE,CAAA;IAC3B,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,CAAA;IAC9C,MAAM,gBAAgB,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;IAEpD,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAA;IAChD,MAAM,WAAW,GAAG,SAAS,CAC3B,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,EACvD,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CACb,CAAA;IAED,MAAM,IAAI,GAAG,IAAI,eAAe,CAAC,EAAE,GAAG,WAAW,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAA;IAExE,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC;QACxB,MAAM,EAAE,MAAM;QACd,OAAO,EAAE;YACP,cAAc,EAAE,mCAAmC;YACnD,QAAQ,EAAE,4CAA4C;SACvD;QACD,GAAG,EAAE,kEAAkE;QACvE,IAAI,EAAE,IAAI;QACV,YAAY,EAAE,CAAC;QACf,cAAc,EAAE,GAAG,EAAE,CAAC,IAAI;KAC3B,CAAC,CAAA;IAEF,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;IACnE,OAAO,MAAM,CAAC,KAAK,CAAC,EAAE,UAAU,EAAE,oBAAoB,EAAE,IAAI,EAAE,YAAY,EAAE,mBAAmB,EAAE,CAAC,CAAA;AACpG,CAAC"}
1
+ {"version":3,"file":"getAccessToken.js","sourceRoot":"","sources":["../src/getAccessToken.ts"],"names":[],"mappings":"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"}
@@ -42,6 +42,16 @@ export declare class SmartHQPlatform implements DynamicPlatformPlugin {
42
42
  private createSmartHQIceMaker;
43
43
  private createSmartHQRefrigerator;
44
44
  private createSmartHQAirConditioner;
45
+ private createSmartHQHood;
46
+ private createSmartHQClothesWasher;
47
+ private createSmartHQClothesDryer;
48
+ private createSmartHQWaterFilter;
49
+ private createSmartHQWaterSoftener;
50
+ private createSmartHQWaterHeater;
51
+ private createSmartHQAdvantium;
52
+ private createSmartHQMicrowave;
53
+ private createSmartHQCoffeeMaker;
54
+ private createSmartHQBeverageCenter;
45
55
  unregisterPlatformAccessories(existingAccessory: PlatformAccessory): Promise<void>;
46
56
  getPlatformLogSettings(): Promise<void>;
47
57
  getPlatformRateSettings(): Promise<void>;
@@ -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;AAqB/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;IAsB5B;;;OAGG;IACG,eAAe;YAsHP,uBAAuB;YAiDvB,iBAAiB;YAiDjB,qBAAqB;YAgDrB,yBAAyB;YAiDzB,2BAA2B;IAiD5B,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"}
1
+ {"version":3,"file":"platform.d.ts","sourceRoot":"","sources":["../src/platform.ts"],"names":[],"mappings":"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"}