@homebridge-plugins/homebridge-smarthq 0.5.0-beta.2 → 0.5.0-beta.21

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 (143) 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/config.schema.json +4 -5
  9. package/dist/devices/OpalIceMaker/Managers/OpalDescaleSvcManager.d.ts.map +1 -1
  10. package/dist/devices/OpalIceMaker/Managers/OpalDescaleSvcManager.js +3 -1
  11. package/dist/devices/OpalIceMaker/Managers/OpalDescaleSvcManager.js.map +1 -1
  12. package/dist/devices/OpalIceMaker/Managers/OpalFilterMaintenanceSvcManager.d.ts.map +1 -1
  13. package/dist/devices/OpalIceMaker/Managers/OpalFilterMaintenanceSvcManager.js +3 -1
  14. package/dist/devices/OpalIceMaker/Managers/OpalFilterMaintenanceSvcManager.js.map +1 -1
  15. package/dist/devices/OpalIceMaker/Managers/OpalPowerSvcManager.js +1 -1
  16. package/dist/devices/OpalIceMaker/Managers/OpalPowerSvcManager.js.map +1 -1
  17. package/dist/devices/OpalIceMaker/Managers/OpalProgressSvcManager.d.ts +1 -1
  18. package/dist/devices/OpalIceMaker/Managers/OpalProgressSvcManager.d.ts.map +1 -1
  19. package/dist/devices/OpalIceMaker/Managers/OpalProgressSvcManager.js +12 -5
  20. package/dist/devices/OpalIceMaker/Managers/OpalProgressSvcManager.js.map +1 -1
  21. package/dist/devices/OpalIceMaker/Managers/StatusManagers/OpalStatusBase.d.ts.map +1 -1
  22. package/dist/devices/OpalIceMaker/Managers/StatusManagers/OpalStatusBase.js +4 -2
  23. package/dist/devices/OpalIceMaker/Managers/StatusManagers/OpalStatusBase.js.map +1 -1
  24. package/dist/devices/OpalIceMaker/OpalDeviceBase.d.ts +3 -4
  25. package/dist/devices/OpalIceMaker/OpalDeviceBase.d.ts.map +1 -1
  26. package/dist/devices/OpalIceMaker/OpalDeviceBase.js +3 -18
  27. package/dist/devices/OpalIceMaker/OpalDeviceBase.js.map +1 -1
  28. package/dist/devices/advantium.d.ts +10 -0
  29. package/dist/devices/advantium.d.ts.map +1 -0
  30. package/dist/devices/advantium.js +75 -0
  31. package/dist/devices/advantium.js.map +1 -0
  32. package/dist/devices/airConditioner.d.ts.map +1 -1
  33. package/dist/devices/airConditioner.js +14 -11
  34. package/dist/devices/airConditioner.js.map +1 -1
  35. package/dist/devices/beverageCenter.d.ts +10 -0
  36. package/dist/devices/beverageCenter.d.ts.map +1 -0
  37. package/dist/devices/beverageCenter.js +125 -0
  38. package/dist/devices/beverageCenter.js.map +1 -0
  39. package/dist/devices/clothesDryer.d.ts +12 -0
  40. package/dist/devices/clothesDryer.d.ts.map +1 -0
  41. package/dist/devices/clothesDryer.js +142 -0
  42. package/dist/devices/clothesDryer.js.map +1 -0
  43. package/dist/devices/clothesWasher.d.ts +12 -0
  44. package/dist/devices/clothesWasher.d.ts.map +1 -0
  45. package/dist/devices/clothesWasher.js +159 -0
  46. package/dist/devices/clothesWasher.js.map +1 -0
  47. package/dist/devices/coffeeMaker.d.ts +10 -0
  48. package/dist/devices/coffeeMaker.d.ts.map +1 -0
  49. package/dist/devices/coffeeMaker.js +79 -0
  50. package/dist/devices/coffeeMaker.js.map +1 -0
  51. package/dist/devices/device.d.ts +25 -0
  52. package/dist/devices/device.d.ts.map +1 -1
  53. package/dist/devices/device.js +105 -1
  54. package/dist/devices/device.js.map +1 -1
  55. package/dist/devices/dishwasher.d.ts +0 -3
  56. package/dist/devices/dishwasher.d.ts.map +1 -1
  57. package/dist/devices/dishwasher.js +46 -29
  58. package/dist/devices/dishwasher.js.map +1 -1
  59. package/dist/devices/hood.d.ts +32 -0
  60. package/dist/devices/hood.d.ts.map +1 -0
  61. package/dist/devices/hood.js +269 -0
  62. package/dist/devices/hood.js.map +1 -0
  63. package/dist/devices/microwave.d.ts +10 -0
  64. package/dist/devices/microwave.d.ts.map +1 -0
  65. package/dist/devices/microwave.js +84 -0
  66. package/dist/devices/microwave.js.map +1 -0
  67. package/dist/devices/oven.d.ts +0 -2
  68. package/dist/devices/oven.d.ts.map +1 -1
  69. package/dist/devices/oven.js +141 -43
  70. package/dist/devices/oven.js.map +1 -1
  71. package/dist/devices/refrigerator.d.ts +0 -2
  72. package/dist/devices/refrigerator.d.ts.map +1 -1
  73. package/dist/devices/refrigerator.js +314 -29
  74. package/dist/devices/refrigerator.js.map +1 -1
  75. package/dist/devices/waterFilter.d.ts +10 -0
  76. package/dist/devices/waterFilter.d.ts.map +1 -0
  77. package/dist/devices/waterFilter.js +67 -0
  78. package/dist/devices/waterFilter.js.map +1 -0
  79. package/dist/devices/waterHeater.d.ts +10 -0
  80. package/dist/devices/waterHeater.d.ts.map +1 -0
  81. package/dist/devices/waterHeater.js +95 -0
  82. package/dist/devices/waterHeater.js.map +1 -0
  83. package/dist/devices/waterSoftener.d.ts +10 -0
  84. package/dist/devices/waterSoftener.d.ts.map +1 -0
  85. package/dist/devices/waterSoftener.js +67 -0
  86. package/dist/devices/waterSoftener.js.map +1 -0
  87. package/dist/getAccessToken.d.ts.map +1 -1
  88. package/dist/getAccessToken.js +6 -0
  89. package/dist/getAccessToken.js.map +1 -1
  90. package/dist/platform.d.ts +10 -0
  91. package/dist/platform.d.ts.map +1 -1
  92. package/dist/platform.js +393 -0
  93. package/dist/platform.js.map +1 -1
  94. package/dist/platform.test.d.ts +2 -0
  95. package/dist/platform.test.d.ts.map +1 -0
  96. package/dist/platform.test.js +80 -0
  97. package/dist/platform.test.js.map +1 -0
  98. package/dist/settings.d.ts +22 -0
  99. package/dist/settings.d.ts.map +1 -1
  100. package/dist/settings.js +13 -0
  101. package/dist/settings.js.map +1 -1
  102. package/docs/assets/highlight.css +7 -0
  103. package/docs/assets/main.js +5 -5
  104. package/docs/assets/navigation.js +1 -0
  105. package/docs/assets/search.js +1 -0
  106. package/docs/assets/style.css +248 -226
  107. package/docs/classes/SmartHQPlatform.html +45 -56
  108. package/docs/hierarchy.html +1 -0
  109. package/docs/index.html +22 -12
  110. package/docs/interfaces/DeviceOptions.html +2 -3
  111. package/docs/interfaces/SmartHQPlatformConfig.html +6 -17
  112. package/docs/interfaces/SmartHqContext.html +6 -4
  113. package/docs/interfaces/SmartHqERDResponse.html +7 -8
  114. package/docs/interfaces/credentials.html +3 -4
  115. package/docs/interfaces/devicesConfig.html +7 -8
  116. package/docs/interfaces/options.html +7 -8
  117. package/docs/media/copilot-instructions.md +90 -0
  118. package/docs/modules.html +1 -2
  119. package/docs/variables/API_URL.html +1 -2
  120. package/docs/variables/ERD_CODES.html +1 -2
  121. package/docs/variables/ERD_TYPES.html +1 -2
  122. package/docs/variables/KEEPALIVE_TIMEOUT.html +1 -2
  123. package/docs/variables/LOGIN_URL.html +2 -3
  124. package/docs/variables/OAUTH2_CLIENT_ID.html +1 -2
  125. package/docs/variables/OAUTH2_CLIENT_SECRET.html +1 -2
  126. package/docs/variables/OAUTH2_REDIRECT_URI.html +1 -2
  127. package/docs/variables/PLATFORM_NAME.html +2 -3
  128. package/docs/variables/PLUGIN_NAME.html +2 -3
  129. package/docs/variables/SECURE_URL.html +2 -3
  130. package/docs/variables/default.html +1 -0
  131. package/package.json +21 -32
  132. package/typedoc.json +0 -4
  133. package/vitest.config.ts +6 -5
  134. package/.github/workflows/build.yml +0 -18
  135. package/.github/workflows/changerelease.yml +0 -11
  136. package/.github/workflows/labeler.yml +0 -9
  137. package/.github/workflows/release-drafter.yml +0 -14
  138. package/docs/assets/dmt/dmt-component-data.js +0 -1
  139. package/docs/assets/dmt/dmt-components.css +0 -20
  140. package/docs/assets/dmt/dmt-components.js +0 -67
  141. package/docs/assets/dmt/dmt-search.cmp +0 -0
  142. package/docs/assets/dmt/dmt-theme.css +0 -1
  143. 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,20 +12,322 @@ 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
+ // DOOR_STATUS ERD returns hex string where each byte represents a door compartment
16
+ // Format: "XXYYZZ..." where XX=byte0, YY=byte1, etc.
17
+ // 0xFF = not available/unused, 0x00 = closed, 0x01 = open
18
+ // Byte mapping for this fridge model:
19
+ // byte0 (pos 0-1) = Fridge Right Door
20
+ // byte1 (pos 2-3) = Fridge Left Door
21
+ // byte2 (pos 4-5) = Freezer Door
22
+ // byte3 (pos 6-7) = Unused (0xFF)
23
+ // Check which door bytes are available (not 0xFF)
24
+ const checkDoorAvailability = async () => {
25
+ const r = await this.readErd(ERD_TYPES.DOOR_STATUS);
26
+ if (!r || r.length < 2) {
27
+ return { byte0: false, byte1: false, byte2: false };
28
+ }
29
+ try {
30
+ // Parse hex bytes - each byte is 2 characters
31
+ const byte0 = r.substring(0, 2);
32
+ const byte1 = r.substring(2, 4);
33
+ const byte2 = r.substring(4, 6);
34
+ this.debugLog(`Door status bytes: byte0=${byte0}, byte1=${byte1}, byte2=${byte2}`);
35
+ // A byte is available if it exists and isn't 0xFF (unused)
36
+ return {
37
+ byte0: byte0 !== 'FF' && byte0 !== '',
38
+ byte1: byte1 !== 'FF' && byte1 !== '' && byte1 !== undefined,
39
+ byte2: byte2 !== 'FF' && byte2 !== '' && byte2 !== undefined,
40
+ };
41
+ }
42
+ catch (parseError) {
43
+ this.debugLog(`Door availability check failed: ${parseError}`);
44
+ return { byte0: false, byte1: false, byte2: false };
45
+ }
46
+ };
47
+ // Helper to parse individual door byte
48
+ const parseDoorByte = async (byteIndex) => {
49
+ const r = await this.readErd(ERD_TYPES.DOOR_STATUS);
50
+ if (!r) {
51
+ return false;
52
+ }
53
+ try {
54
+ const byteValue = r.substring(byteIndex * 2, byteIndex * 2 + 2);
55
+ const state = Number.parseInt(byteValue, 16);
56
+ this.debugLog(`Door byte${byteIndex} value: ${byteValue} = ${state}`);
57
+ return state !== 0; // 0 = closed, anything else = open
58
+ }
59
+ catch (parseError) {
60
+ this.debugLog(`Door byte${byteIndex} parse error: ${parseError}`);
61
+ return false;
62
+ }
63
+ };
64
+ // Check which door sensors to create
65
+ (async () => {
66
+ const availableDoors = await checkDoorAvailability();
67
+ // Byte 0: Fridge Right Door
68
+ if (availableDoors.byte0) {
69
+ const doorService = this.accessory.getService('Fridge Right Door') ?? this.accessory.addService(this.platform.Service.ContactSensor, 'Fridge Right Door', 'FridgeRightDoor');
70
+ doorService.setCharacteristic(this.platform.Characteristic.Name, 'Fridge Right Door');
71
+ doorService
72
+ .getCharacteristic(this.platform.Characteristic.ContactSensorState)
73
+ .onGet(async () => parseDoorByte(0));
74
+ }
75
+ // Byte 1: Fridge Left Door
76
+ if (availableDoors.byte1) {
77
+ const door2Service = this.accessory.getService('Fridge Left Door') ?? this.accessory.addService(this.platform.Service.ContactSensor, 'Fridge Left Door', 'FridgeLeftDoor');
78
+ door2Service.setCharacteristic(this.platform.Characteristic.Name, 'Fridge Left Door');
79
+ door2Service
80
+ .getCharacteristic(this.platform.Characteristic.ContactSensorState)
81
+ .onGet(async () => parseDoorByte(1));
82
+ }
83
+ // Byte 2: Freezer Door
84
+ if (availableDoors.byte2) {
85
+ const door3Service = this.accessory.getService('Freezer Door') ?? this.accessory.addService(this.platform.Service.ContactSensor, 'Freezer Door', 'FreezerDoor');
86
+ door3Service.setCharacteristic(this.platform.Characteristic.Name, 'Freezer Door');
87
+ door3Service
88
+ .getCharacteristic(this.platform.Characteristic.ContactSensorState)
89
+ .onGet(async () => parseDoorByte(2));
90
+ }
91
+ })();
92
+ // Ice Bucket Status (Contact Sensors - "open" when full)
93
+ // Format: "XY" where X=fridge ice maker, Y=freezer ice maker
94
+ // Each nibble: 0=empty, 1=not full, 2=full, 3=full
95
+ // "Open" state (CONTACT_NOT_DETECTED) = bucket is full
96
+ // Helper to parse ice bucket nibble (half-byte)
97
+ const parseIceBucketNibble = async (nibbleIndex) => {
98
+ const r = await this.readErd(ERD_TYPES.ICE_MAKER_BUCKET_STATUS);
99
+ if (!r || r.length < 2) {
100
+ return false; // Not full
101
+ }
102
+ try {
103
+ const nibble = r.charAt(nibbleIndex);
104
+ const status = Number.parseInt(nibble, 16);
105
+ const isFull = status >= 2;
106
+ this.debugLog(`Ice Bucket ${nibbleIndex === 0 ? 'Fridge' : 'Freezer'} status: ${nibble} (${status}) - ${isFull ? 'Full' : 'Not Full'}`);
107
+ return isFull;
108
+ }
109
+ catch (parseError) {
110
+ this.debugLog(`Ice Bucket ${nibbleIndex} parse error: ${parseError}`);
111
+ return false;
112
+ }
113
+ };
114
+ // Fridge Ice Bucket (nibble 0)
115
+ const fridgeIceBucket = this.accessory.getService('Fridge Ice Bucket') ?? this.accessory.addService(this.platform.Service.ContactSensor, 'Fridge Ice Bucket', 'FridgeIceBucket');
116
+ fridgeIceBucket.setCharacteristic(this.platform.Characteristic.Name, 'Fridge Ice Bucket');
117
+ fridgeIceBucket
118
+ .getCharacteristic(this.platform.Characteristic.ContactSensorState)
119
+ .onGet(async () => {
120
+ const isFull = await parseIceBucketNibble(0);
121
+ return isFull
122
+ ? this.platform.Characteristic.ContactSensorState.CONTACT_NOT_DETECTED // Open = full
123
+ : this.platform.Characteristic.ContactSensorState.CONTACT_DETECTED; // Closed = not full
124
+ });
125
+ // Freezer Ice Bucket (nibble 1)
126
+ const freezerIceBucket = this.accessory.getService('Freezer Ice Bucket') ?? this.accessory.addService(this.platform.Service.ContactSensor, 'Freezer Ice Bucket', 'FreezerIceBucket');
127
+ freezerIceBucket.setCharacteristic(this.platform.Characteristic.Name, 'Freezer Ice Bucket');
128
+ freezerIceBucket
129
+ .getCharacteristic(this.platform.Characteristic.ContactSensorState)
130
+ .onGet(async () => {
131
+ const isFull = await parseIceBucketNibble(1);
132
+ return isFull
133
+ ? this.platform.Characteristic.ContactSensorState.CONTACT_NOT_DETECTED // Open = full
134
+ : this.platform.Characteristic.ContactSensorState.CONTACT_DETECTED; // Closed = not full
135
+ });
136
+ // Fridge Thermostat (with temperature sensor and target temp control)
137
+ const fridgeThermostat = this.accessory.getService('Fridge') ?? this.accessory.addService(this.platform.Service.Thermostat, 'Fridge', 'FridgeThermostat');
138
+ fridgeThermostat.setCharacteristic(this.platform.Characteristic.Name, 'Fridge');
139
+ fridgeThermostat.setCharacteristic(this.platform.Characteristic.TemperatureDisplayUnits, this.platform.Characteristic.TemperatureDisplayUnits.FAHRENHEIT);
140
+ fridgeThermostat.setCharacteristic(this.platform.Characteristic.CurrentHeatingCoolingState, this.platform.Characteristic.CurrentHeatingCoolingState.COOL);
141
+ fridgeThermostat.setCharacteristic(this.platform.Characteristic.TargetHeatingCoolingState, this.platform.Characteristic.TargetHeatingCoolingState.COOL);
142
+ fridgeThermostat
143
+ .getCharacteristic(this.platform.Characteristic.CurrentTemperature)
144
+ .onGet(async () => {
145
+ const r = await this.readErd(ERD_TYPES.CURRENT_TEMPERATURE);
146
+ this.debugLog(`Raw CURRENT_TEMPERATURE ERD response: ${r}`);
147
+ if (!r || r === 'undefined') {
148
+ return 2.8; // Default to ~37°F in Celsius
149
+ }
150
+ try {
151
+ const temps = JSON.parse(r);
152
+ const fridgeTempF = temps.fridge || temps.Fridge;
153
+ this.debugLog(`Fridge current temp: ${fridgeTempF}°F`);
154
+ if (!fridgeTempF || Number.isNaN(Number(fridgeTempF))) {
155
+ return 2.8;
156
+ }
157
+ return (Number(fridgeTempF) - 32) * 5 / 9;
158
+ }
159
+ catch (parseError) {
160
+ this.debugLog(`Fridge Temperature: JSON parse error, using default`);
161
+ return 2.8;
162
+ }
163
+ });
164
+ fridgeThermostat
165
+ .getCharacteristic(this.platform.Characteristic.TargetTemperature)
166
+ .setProps({ minValue: 0, maxValue: 7.2, minStep: 0.5 }) // 32°F to 45°F range
167
+ .onGet(async () => {
168
+ const r = await this.readErd(ERD_TYPES.TEMPERATURE_SETTING);
169
+ if (!r || r === 'undefined') {
170
+ return 3.3; // Default to ~38°F
171
+ }
172
+ try {
173
+ const setpoints = JSON.parse(r);
174
+ const fridgeTargetF = setpoints.fridge || setpoints.Fridge;
175
+ this.debugLog(`Fridge target temp: ${fridgeTargetF}°F`);
176
+ if (!fridgeTargetF || Number.isNaN(Number(fridgeTargetF))) {
177
+ return 3.3;
178
+ }
179
+ return (Number(fridgeTargetF) - 32) * 5 / 9;
180
+ }
181
+ catch (parseError) {
182
+ this.debugLog(`Fridge Target Temperature: JSON parse error, using default`);
183
+ return 3.3;
184
+ }
185
+ })
186
+ .onSet(async (value) => {
187
+ try {
188
+ // Convert Celsius to Fahrenheit
189
+ const targetF = Math.round(value * 9 / 5 + 32);
190
+ this.infoLog(`Setting Fridge target temperature to ${targetF}°F`);
191
+ // Get current freezer setting to preserve it
192
+ const currentSettings = await this.readErd(ERD_TYPES.TEMPERATURE_SETTING);
193
+ let freezerTargetF = 0; // Default
194
+ if (currentSettings && currentSettings !== 'undefined') {
195
+ try {
196
+ const setpoints = JSON.parse(currentSettings);
197
+ freezerTargetF = setpoints.freezer || setpoints.Freezer || 0;
198
+ }
199
+ catch { }
200
+ }
201
+ // Write both fridge and freezer settings
202
+ const newSettings = JSON.stringify({ fridge: targetF, freezer: freezerTargetF });
203
+ await this.writeErd(ERD_TYPES.TEMPERATURE_SETTING, newSettings);
204
+ }
205
+ catch (error) {
206
+ this.warnLog?.(`Fridge set target temp error: ${error?.message ?? error}`);
207
+ }
208
+ });
209
+ // Freezer Thermostat (with temperature sensor and target temp control)
210
+ const freezerThermostat = this.accessory.getService('Freezer') ?? this.accessory.addService(this.platform.Service.Thermostat, 'Freezer', 'FreezerThermostat');
211
+ freezerThermostat.setCharacteristic(this.platform.Characteristic.Name, 'Freezer');
212
+ freezerThermostat.setCharacteristic(this.platform.Characteristic.TemperatureDisplayUnits, this.platform.Characteristic.TemperatureDisplayUnits.FAHRENHEIT);
213
+ freezerThermostat.setCharacteristic(this.platform.Characteristic.CurrentHeatingCoolingState, this.platform.Characteristic.CurrentHeatingCoolingState.COOL);
214
+ freezerThermostat.setCharacteristic(this.platform.Characteristic.TargetHeatingCoolingState, this.platform.Characteristic.TargetHeatingCoolingState.COOL);
215
+ freezerThermostat
216
+ .getCharacteristic(this.platform.Characteristic.CurrentTemperature)
217
+ .onGet(async () => {
218
+ const r = await this.readErd(ERD_TYPES.CURRENT_TEMPERATURE);
219
+ this.debugLog(`Raw CURRENT_TEMPERATURE ERD response: ${r}`);
220
+ if (!r || r === 'undefined') {
221
+ return -17.8; // Default to ~0°F in Celsius
222
+ }
223
+ try {
224
+ const temps = JSON.parse(r);
225
+ const freezerTempF = temps.freezer || temps.Freezer;
226
+ this.debugLog(`Freezer current temp: ${freezerTempF}°F`);
227
+ if (!freezerTempF || Number.isNaN(Number(freezerTempF))) {
228
+ return -17.8;
229
+ }
230
+ return (Number(freezerTempF) - 32) * 5 / 9;
231
+ }
232
+ catch (parseError) {
233
+ this.debugLog(`Freezer Temperature: JSON parse error, using default`);
234
+ return -17.8;
235
+ }
236
+ });
237
+ freezerThermostat
238
+ .getCharacteristic(this.platform.Characteristic.TargetTemperature)
239
+ .setProps({ minValue: -21, maxValue: -3.3, minStep: 0.5 }) // -6°F to 26°F range
240
+ .onGet(async () => {
241
+ const r = await this.readErd(ERD_TYPES.TEMPERATURE_SETTING);
242
+ if (!r || r === 'undefined') {
243
+ return -17.8; // Default to ~0°F
244
+ }
245
+ try {
246
+ const setpoints = JSON.parse(r);
247
+ const freezerTargetF = setpoints.freezer || setpoints.Freezer;
248
+ this.debugLog(`Freezer target temp: ${freezerTargetF}°F`);
249
+ if (!freezerTargetF || Number.isNaN(Number(freezerTargetF))) {
250
+ return -17.8;
28
251
  }
252
+ return (Number(freezerTargetF) - 32) * 5 / 9;
29
253
  }
254
+ catch (parseError) {
255
+ this.debugLog(`Freezer Target Temperature: JSON parse error, using default`);
256
+ return -17.8;
257
+ }
258
+ })
259
+ .onSet(async (value) => {
260
+ try {
261
+ // Convert Celsius to Fahrenheit
262
+ const targetF = Math.round(value * 9 / 5 + 32);
263
+ this.infoLog(`Setting Freezer target temperature to ${targetF}°F`);
264
+ // Get current fridge setting to preserve it
265
+ const currentSettings = await this.readErd(ERD_TYPES.TEMPERATURE_SETTING);
266
+ let fridgeTargetF = 37; // Default
267
+ if (currentSettings && currentSettings !== 'undefined') {
268
+ try {
269
+ const setpoints = JSON.parse(currentSettings);
270
+ fridgeTargetF = setpoints.fridge || setpoints.Fridge || 37;
271
+ }
272
+ catch { }
273
+ }
274
+ // Write both fridge and freezer settings
275
+ const newSettings = JSON.stringify({ fridge: fridgeTargetF, freezer: targetF });
276
+ await this.writeErd(ERD_TYPES.TEMPERATURE_SETTING, newSettings);
277
+ }
278
+ catch (error) {
279
+ this.warnLog?.(`Freezer set target temp error: ${error?.message ?? error}`);
280
+ }
281
+ });
282
+ // Air Filter Maintenance
283
+ const filterService = this.accessory.getService('Air Filter') ?? this.accessory.addService(this.platform.Service.FilterMaintenance, 'Air Filter', 'AirFilter');
284
+ filterService.setCharacteristic(this.platform.Characteristic.Name, 'Air Filter');
285
+ filterService
286
+ .getCharacteristic(this.platform.Characteristic.FilterChangeIndication)
287
+ .onGet(async () => {
288
+ const r = await this.readErd(ERD_TYPES.AIR_FILTER_STATUS);
289
+ if (!r) {
290
+ return this.platform.Characteristic.FilterChangeIndication.FILTER_OK;
291
+ }
292
+ return Number.parseInt(r) === 1
293
+ ? this.platform.Characteristic.FilterChangeIndication.CHANGE_FILTER
294
+ : this.platform.Characteristic.FilterChangeIndication.FILTER_OK;
295
+ });
296
+ // Ice Maker Control (Switch)
297
+ const iceMakerService = this.accessory.getService('Ice Maker') ?? this.accessory.addService(this.platform.Service.Switch, 'Ice Maker', 'IceMaker');
298
+ iceMakerService.setCharacteristic(this.platform.Characteristic.Name, 'Ice Maker');
299
+ iceMakerService
300
+ .getCharacteristic(this.platform.Characteristic.On)
301
+ .onGet(async () => {
302
+ const r = await this.readErd(ERD_TYPES.ICE_MAKER_CONTROL);
303
+ return r ? Number.parseInt(r) !== 0 : false;
304
+ })
305
+ .onSet(async (value) => {
306
+ await this.writeErd(ERD_TYPES.ICE_MAKER_CONTROL, value);
307
+ });
308
+ // Turbo Cool Switch
309
+ const turboCoolService = this.accessory.getService('Turbo Cool') ?? this.accessory.addService(this.platform.Service.Switch, 'Turbo Cool', 'TurboCool');
310
+ turboCoolService.setCharacteristic(this.platform.Characteristic.Name, 'Turbo Cool');
311
+ turboCoolService
312
+ .getCharacteristic(this.platform.Characteristic.On)
313
+ .onGet(async () => {
314
+ const r = await this.readErd(ERD_TYPES.TURBO_COOL_STATUS);
315
+ return r ? Number.parseInt(r) !== 0 : false;
316
+ })
317
+ .onSet(async (value) => {
318
+ await this.writeErd(ERD_TYPES.TURBO_COOL_STATUS, value);
319
+ });
320
+ // Turbo Freeze Switch
321
+ const turboFreezeService = this.accessory.getService('Turbo Freeze') ?? this.accessory.addService(this.platform.Service.Switch, 'Turbo Freeze', 'TurboFreeze');
322
+ turboFreezeService.setCharacteristic(this.platform.Characteristic.Name, 'Turbo Freeze');
323
+ turboFreezeService
324
+ .getCharacteristic(this.platform.Characteristic.On)
325
+ .onGet(async () => {
326
+ const r = await this.readErd(ERD_TYPES.TURBO_FREEZE_STATUS);
327
+ return r ? Number.parseInt(r) !== 0 : false;
328
+ })
329
+ .onSet(async (value) => {
330
+ await this.writeErd(ERD_TYPES.TURBO_FREEZE_STATUS, value);
30
331
  });
31
332
  // this is subject we use to track when we need to POST changes to the SmartHQ API
32
333
  this.SensorUpdateInProgress = false;
@@ -39,21 +340,5 @@ export class SmartHQRefrigerator extends deviceBase {
39
340
  // await this.refreshStatus()
40
341
  });
41
342
  }
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
343
  }
59
344
  //# sourceMappingURL=refrigerator.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"refrigerator.js","sourceRoot":"","sources":["../../src/devices/refrigerator.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,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;QAC5F,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;YACpD;;gBAEI;YACJ,QAAQ,OAAO,EAAE,CAAC;gBAChB,KAAK,aAAa,CAAC,CAAC,CAAC;oBACnB,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,SAAS,CAAC,WAAW,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,aAAa,EAAE,SAAS,CAAC,WAAW,EAAE,cAAc,CAAC,CAAA;oBAE9K,YAAY;yBACT,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,kBAAkB,CAAC;yBAClE,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;yBACpF,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,WAAW,EAAE,KAAgB,CAAC,CAAC,CAAA;oBACzE,MAAK;gBACP,CAAC;YACH,CAAC;QACH,CAAC,CAAC,CAAA;QAEF,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;IAED,KAAK,CAAC,OAAO,CAAC,GAAW;QACvB,MAAM,CAAC,GAAG,MAAM,KAAK;aAClB,GAAG,CAAC,cAAc,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,WAAW,QAAQ,GAAG,EAAE,CAAC,CAAA;QAC5E,OAAO,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IAC7B,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,GAAW,EAAE,KAAuB;QACjD,MAAM,KAAK;aACR,IAAI,CAAC,cAAc,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,WAAW,QAAQ,GAAG,EAAE,EAAE;YAC1E,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;QACJ,OAAO,SAAS,CAAA;IAClB,CAAC;CACF"}
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,mFAAmF;QACnF,qDAAqD;QACrD,0DAA0D;QAC1D,sCAAsC;QACtC,wCAAwC;QACxC,uCAAuC;QACvC,mCAAmC;QACnC,oCAAoC;QAEpC,kDAAkD;QAClD,MAAM,qBAAqB,GAAG,KAAK,IAAI,EAAE;YACvC,MAAM,CAAC,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,WAAW,CAAC,CAAA;YACnD,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACvB,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,CAAA;YACrD,CAAC;YAED,IAAI,CAAC;gBACH,8CAA8C;gBAC9C,MAAM,KAAK,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;gBAC/B,MAAM,KAAK,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;gBAC/B,MAAM,KAAK,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;gBAE/B,IAAI,CAAC,QAAQ,CAAC,4BAA4B,KAAK,WAAW,KAAK,WAAW,KAAK,EAAE,CAAC,CAAA;gBAElF,2DAA2D;gBAC3D,OAAO;oBACL,KAAK,EAAE,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,EAAE;oBACrC,KAAK,EAAE,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,EAAE,IAAI,KAAK,KAAK,SAAS;oBAC5D,KAAK,EAAE,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,EAAE,IAAI,KAAK,KAAK,SAAS;iBAC7D,CAAA;YACH,CAAC;YAAC,OAAO,UAAU,EAAE,CAAC;gBACpB,IAAI,CAAC,QAAQ,CAAC,mCAAmC,UAAU,EAAE,CAAC,CAAA;gBAC9D,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,CAAA;YACrD,CAAC;QACH,CAAC,CAAA;QAED,uCAAuC;QACvC,MAAM,aAAa,GAAG,KAAK,EAAE,SAAoB,EAAoB,EAAE;YACrE,MAAM,CAAC,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,WAAW,CAAC,CAAA;YACnD,IAAI,CAAC,CAAC,EAAE,CAAC;gBACP,OAAO,KAAK,CAAA;YACd,CAAC;YAED,IAAI,CAAC;gBACH,MAAM,SAAS,GAAG,CAAC,CAAC,SAAS,CAAC,SAAS,GAAG,CAAC,EAAE,SAAS,GAAG,CAAC,GAAG,CAAC,CAAC,CAAA;gBAC/D,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC,SAAS,EAAE,EAAE,CAAC,CAAA;gBAC5C,IAAI,CAAC,QAAQ,CAAC,YAAY,SAAS,WAAW,SAAS,MAAM,KAAK,EAAE,CAAC,CAAA;gBACrE,OAAO,KAAK,KAAK,CAAC,CAAA,CAAC,mCAAmC;YACxD,CAAC;YAAC,OAAO,UAAU,EAAE,CAAC;gBACpB,IAAI,CAAC,QAAQ,CAAC,YAAY,SAAS,iBAAiB,UAAU,EAAE,CAAC,CAAA;gBACjE,OAAO,KAAK,CAAA;YACd,CAAC;QACH,CAAC,CAAA;QAED,qCAAqC;QACrC,CAAC,KAAK,IAAI,EAAE;YACV,MAAM,cAAc,GAAG,MAAM,qBAAqB,EAAE,CAAA;YAEpD,4BAA4B;YAC5B,IAAI,cAAc,CAAC,KAAK,EAAE,CAAC;gBACzB,MAAM,WAAW,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,iBAAiB,CAAC,CAAA;gBAC5K,WAAW,CAAC,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,EAAE,mBAAmB,CAAC,CAAA;gBACrF,WAAW;qBACR,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,kBAAkB,CAAC;qBAClE,KAAK,CAAC,KAAK,IAAI,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAA;YACxC,CAAC;YAED,2BAA2B;YAC3B,IAAI,cAAc,CAAC,KAAK,EAAE,CAAC;gBACzB,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,kBAAkB,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,aAAa,EAAE,kBAAkB,EAAE,gBAAgB,CAAC,CAAA;gBAC1K,YAAY,CAAC,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,EAAE,kBAAkB,CAAC,CAAA;gBACrF,YAAY;qBACT,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,kBAAkB,CAAC;qBAClE,KAAK,CAAC,KAAK,IAAI,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAA;YACxC,CAAC;YAED,uBAAuB;YACvB,IAAI,cAAc,CAAC,KAAK,EAAE,CAAC;gBACzB,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,cAAc,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,aAAa,EAAE,cAAc,EAAE,aAAa,CAAC,CAAA;gBAC/J,YAAY,CAAC,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,EAAE,cAAc,CAAC,CAAA;gBACjF,YAAY;qBACT,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,kBAAkB,CAAC;qBAClE,KAAK,CAAC,KAAK,IAAI,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAA;YACxC,CAAC;QACH,CAAC,CAAC,EAAE,CAAA;QAEJ,yDAAyD;QACzD,6DAA6D;QAC7D,mDAAmD;QACnD,uDAAuD;QAEvD,gDAAgD;QAChD,MAAM,oBAAoB,GAAG,KAAK,EAAE,WAAkB,EAAoB,EAAE;YAC1E,MAAM,CAAC,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,uBAAuB,CAAC,CAAA;YAC/D,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACvB,OAAO,KAAK,CAAA,CAAC,WAAW;YAC1B,CAAC;YAED,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAA;gBACpC,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC,CAAA;gBAC1C,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,CAAA;gBAC1B,IAAI,CAAC,QAAQ,CAAC,cAAc,WAAW,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,YAAY,MAAM,KAAK,MAAM,OAAO,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAA;gBACvI,OAAO,MAAM,CAAA;YACf,CAAC;YAAC,OAAO,UAAU,EAAE,CAAC;gBACpB,IAAI,CAAC,QAAQ,CAAC,cAAc,WAAW,iBAAiB,UAAU,EAAE,CAAC,CAAA;gBACrE,OAAO,KAAK,CAAA;YACd,CAAC;QACH,CAAC,CAAA;QAED,+BAA+B;QAC/B,MAAM,eAAe,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,iBAAiB,CAAC,CAAA;QAChL,eAAe,CAAC,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,EAAE,mBAAmB,CAAC,CAAA;QACzF,eAAe;aACZ,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,kBAAkB,CAAC;aAClE,KAAK,CAAC,KAAK,IAAI,EAAE;YAChB,MAAM,MAAM,GAAG,MAAM,oBAAoB,CAAC,CAAC,CAAC,CAAA;YAC5C,OAAO,MAAM;gBACX,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,kBAAkB,CAAC,oBAAoB,CAAC,cAAc;gBACrF,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,kBAAkB,CAAC,gBAAgB,CAAA,CAAC,oBAAoB;QAC3F,CAAC,CAAC,CAAA;QAEJ,gCAAgC;QAChC,MAAM,gBAAgB,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,oBAAoB,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,aAAa,EAAE,oBAAoB,EAAE,kBAAkB,CAAC,CAAA;QACpL,gBAAgB,CAAC,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,EAAE,oBAAoB,CAAC,CAAA;QAC3F,gBAAgB;aACb,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,kBAAkB,CAAC;aAClE,KAAK,CAAC,KAAK,IAAI,EAAE;YAChB,MAAM,MAAM,GAAG,MAAM,oBAAoB,CAAC,CAAC,CAAC,CAAA;YAC5C,OAAO,MAAM;gBACX,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,kBAAkB,CAAC,oBAAoB,CAAC,cAAc;gBACrF,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,kBAAkB,CAAC,gBAAgB,CAAA,CAAC,oBAAoB;QAC3F,CAAC,CAAC,CAAA;QAEJ,sEAAsE;QACtE,MAAM,gBAAgB,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,EAAE,QAAQ,EAAE,kBAAkB,CAAC,CAAA;QACzJ,gBAAgB,CAAC,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAA;QAC/E,gBAAgB,CAAC,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,uBAAuB,EAAE,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,uBAAuB,CAAC,UAAU,CAAC,CAAA;QACzJ,gBAAgB,CAAC,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,0BAA0B,EAAE,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,0BAA0B,CAAC,IAAI,CAAC,CAAA;QACzJ,gBAAgB,CAAC,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,yBAAyB,EAAE,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,yBAAyB,CAAC,IAAI,CAAC,CAAA;QAEvJ,gBAAgB;aACb,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,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,WAAW,EAAE,CAAC;gBAC5B,OAAO,GAAG,CAAA,CAAC,8BAA8B;YAC3C,CAAC;YAED,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,wBAAwB,WAAW,IAAI,CAAC,CAAA;gBAEtD,IAAI,CAAC,WAAW,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC;oBACtD,OAAO,GAAG,CAAA;gBACZ,CAAC;gBAED,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,gBAAgB;aACb,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,iBAAiB,CAAC;aACjE,QAAQ,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC,qBAAqB;aAC5E,KAAK,CAAC,KAAK,IAAI,EAAE;YAChB,MAAM,CAAC,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,mBAAmB,CAAC,CAAA;YAC3D,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,WAAW,EAAE,CAAC;gBAC5B,OAAO,GAAG,CAAA,CAAC,mBAAmB;YAChC,CAAC;YAED,IAAI,CAAC;gBACH,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;gBAC/B,MAAM,aAAa,GAAG,SAAS,CAAC,MAAM,IAAI,SAAS,CAAC,MAAM,CAAA;gBAC1D,IAAI,CAAC,QAAQ,CAAC,uBAAuB,aAAa,IAAI,CAAC,CAAA;gBAEvD,IAAI,CAAC,aAAa,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,EAAE,CAAC;oBAC1D,OAAO,GAAG,CAAA;gBACZ,CAAC;gBAED,OAAO,CAAC,MAAM,CAAC,aAAa,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;YAC7C,CAAC;YAAC,OAAO,UAAU,EAAE,CAAC;gBACpB,IAAI,CAAC,QAAQ,CAAC,4DAA4D,CAAC,CAAA;gBAC3E,OAAO,GAAG,CAAA;YACZ,CAAC;QACH,CAAC,CAAC;aACD,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;YACrB,IAAI,CAAC;gBACH,gCAAgC;gBAChC,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAE,KAAgB,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAA;gBAC1D,IAAI,CAAC,OAAO,CAAC,wCAAwC,OAAO,IAAI,CAAC,CAAA;gBAEjE,6CAA6C;gBAC7C,MAAM,eAAe,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,mBAAmB,CAAC,CAAA;gBACzE,IAAI,cAAc,GAAG,CAAC,CAAA,CAAC,UAAU;gBAEjC,IAAI,eAAe,IAAI,eAAe,KAAK,WAAW,EAAE,CAAC;oBACvD,IAAI,CAAC;wBACH,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,CAAA;wBAC7C,cAAc,GAAG,SAAS,CAAC,OAAO,IAAI,SAAS,CAAC,OAAO,IAAI,CAAC,CAAA;oBAC9D,CAAC;oBAAC,MAAM,CAAC,CAAA,CAAC;gBACZ,CAAC;gBAED,yCAAyC;gBACzC,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,CAAC,CAAA;gBAChF,MAAM,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,mBAAmB,EAAE,WAAW,CAAC,CAAA;YACjE,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,uEAAuE;QACvE,MAAM,iBAAiB,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,EAAE,SAAS,EAAE,mBAAmB,CAAC,CAAA;QAC7J,iBAAiB,CAAC,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,EAAE,SAAS,CAAC,CAAA;QACjF,iBAAiB,CAAC,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,uBAAuB,EAAE,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,uBAAuB,CAAC,UAAU,CAAC,CAAA;QAC1J,iBAAiB,CAAC,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,0BAA0B,EAAE,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,0BAA0B,CAAC,IAAI,CAAC,CAAA;QAC1J,iBAAiB,CAAC,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,yBAAyB,EAAE,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,yBAAyB,CAAC,IAAI,CAAC,CAAA;QAExJ,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,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,WAAW,EAAE,CAAC;gBAC5B,OAAO,CAAC,IAAI,CAAA,CAAC,6BAA6B;YAC5C,CAAC;YAED,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,yBAAyB,YAAY,IAAI,CAAC,CAAA;gBAExD,IAAI,CAAC,YAAY,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC;oBACxD,OAAO,CAAC,IAAI,CAAA;gBACd,CAAC;gBAED,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,iBAAiB;aACd,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,iBAAiB,CAAC;aACjE,QAAQ,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,EAAE,QAAQ,EAAE,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC,qBAAqB;aAC/E,KAAK,CAAC,KAAK,IAAI,EAAE;YAChB,MAAM,CAAC,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,mBAAmB,CAAC,CAAA;YAC3D,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,WAAW,EAAE,CAAC;gBAC5B,OAAO,CAAC,IAAI,CAAA,CAAC,kBAAkB;YACjC,CAAC;YAED,IAAI,CAAC;gBACH,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;gBAC/B,MAAM,cAAc,GAAG,SAAS,CAAC,OAAO,IAAI,SAAS,CAAC,OAAO,CAAA;gBAC7D,IAAI,CAAC,QAAQ,CAAC,wBAAwB,cAAc,IAAI,CAAC,CAAA;gBAEzD,IAAI,CAAC,cAAc,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,EAAE,CAAC;oBAC5D,OAAO,CAAC,IAAI,CAAA;gBACd,CAAC;gBAED,OAAO,CAAC,MAAM,CAAC,cAAc,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;YAC9C,CAAC;YAAC,OAAO,UAAU,EAAE,CAAC;gBACpB,IAAI,CAAC,QAAQ,CAAC,6DAA6D,CAAC,CAAA;gBAC5E,OAAO,CAAC,IAAI,CAAA;YACd,CAAC;QACH,CAAC,CAAC;aACD,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;YACrB,IAAI,CAAC;gBACH,gCAAgC;gBAChC,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAE,KAAgB,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAA;gBAC1D,IAAI,CAAC,OAAO,CAAC,yCAAyC,OAAO,IAAI,CAAC,CAAA;gBAElE,4CAA4C;gBAC5C,MAAM,eAAe,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,mBAAmB,CAAC,CAAA;gBACzE,IAAI,aAAa,GAAG,EAAE,CAAA,CAAC,UAAU;gBAEjC,IAAI,eAAe,IAAI,eAAe,KAAK,WAAW,EAAE,CAAC;oBACvD,IAAI,CAAC;wBACH,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,CAAA;wBAC7C,aAAa,GAAG,SAAS,CAAC,MAAM,IAAI,SAAS,CAAC,MAAM,IAAI,EAAE,CAAA;oBAC5D,CAAC;oBAAC,MAAM,CAAC,CAAA,CAAC;gBACZ,CAAC;gBAED,yCAAyC;gBACzC,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,aAAa,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAA;gBAC/E,MAAM,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,mBAAmB,EAAE,WAAW,CAAC,CAAA;YACjE,CAAC;YAAC,OAAO,KAAU,EAAE,CAAC;gBACpB,IAAI,CAAC,OAAO,EAAE,CAAC,kCAAkC,KAAK,EAAE,OAAO,IAAI,KAAK,EAAE,CAAC,CAAA;YAC7E,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"}