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

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 (51) hide show
  1. package/MATTER.md +304 -0
  2. package/dist/devices/advantium.js.map +1 -1
  3. package/dist/devices/airConditioner.js.map +1 -1
  4. package/dist/devices/beverageCenter.js.map +1 -1
  5. package/dist/devices/clothesDryer.js.map +1 -1
  6. package/dist/devices/clothesWasher.js.map +1 -1
  7. package/dist/devices/coffeeMaker.js.map +1 -1
  8. package/dist/devices/device.d.ts +83 -21
  9. package/dist/devices/device.d.ts.map +1 -1
  10. package/dist/devices/device.js +216 -70
  11. package/dist/devices/device.js.map +1 -1
  12. package/dist/devices/dishwasher.js.map +1 -1
  13. package/dist/devices/hood.js.map +1 -1
  14. package/dist/devices/microwave.js.map +1 -1
  15. package/dist/devices/oven.js.map +1 -1
  16. package/dist/devices/refrigerator.d.ts +37 -0
  17. package/dist/devices/refrigerator.d.ts.map +1 -1
  18. package/dist/devices/refrigerator.js +398 -170
  19. package/dist/devices/refrigerator.js.map +1 -1
  20. package/dist/devices/waterFilter.js.map +1 -1
  21. package/dist/devices/waterHeater.js.map +1 -1
  22. package/dist/devices/waterSoftener.js.map +1 -1
  23. package/dist/platform.d.ts +15 -1
  24. package/dist/platform.d.ts.map +1 -1
  25. package/dist/platform.js +82 -32
  26. package/dist/platform.js.map +1 -1
  27. package/dist/settings.d.ts +1 -0
  28. package/dist/settings.d.ts.map +1 -1
  29. package/dist/settings.js.map +1 -1
  30. package/docs/assets/search.js +1 -1
  31. package/docs/classes/SmartHQPlatform.html +15 -9
  32. package/docs/interfaces/DeviceOptions.html +2 -2
  33. package/docs/interfaces/SmartHQPlatformConfig.html +2 -2
  34. package/docs/interfaces/SmartHqContext.html +2 -2
  35. package/docs/interfaces/SmartHqERDResponse.html +2 -2
  36. package/docs/interfaces/credentials.html +2 -2
  37. package/docs/interfaces/devicesConfig.html +3 -2
  38. package/docs/interfaces/options.html +2 -2
  39. package/docs/variables/API_URL.html +1 -1
  40. package/docs/variables/ERD_CODES.html +1 -1
  41. package/docs/variables/ERD_TYPES.html +1 -1
  42. package/docs/variables/KEEPALIVE_TIMEOUT.html +1 -1
  43. package/docs/variables/LOGIN_URL.html +1 -1
  44. package/docs/variables/OAUTH2_CLIENT_ID.html +1 -1
  45. package/docs/variables/OAUTH2_CLIENT_SECRET.html +1 -1
  46. package/docs/variables/OAUTH2_REDIRECT_URI.html +1 -1
  47. package/docs/variables/PLATFORM_NAME.html +1 -1
  48. package/docs/variables/PLUGIN_NAME.html +1 -1
  49. package/docs/variables/SECURE_URL.html +1 -1
  50. package/docs/variables/default.html +1 -1
  51. package/package.json +1 -1
@@ -1,10 +1,26 @@
1
1
  import type { API, CharacteristicValue, HAP, Logging, PlatformAccessory, Service } from 'homebridge';
2
2
  import type { SmartHQPlatform } from '../platform.js';
3
3
  import type { devicesConfig, SmartHqContext, SmartHQPlatformConfig } from '../settings.js';
4
+ export interface MatterAccessory {
5
+ UUID: string;
6
+ displayName: string;
7
+ serialNumber: string;
8
+ manufacturer: string;
9
+ model: string;
10
+ firmwareRevision: string;
11
+ hardwareRevision: string;
12
+ deviceType: any;
13
+ clusters?: Record<string, unknown>;
14
+ handlers?: Record<string, unknown>;
15
+ parts?: Array<MatterAccessory>;
16
+ context?: Record<string, unknown>;
17
+ }
18
+ /**
19
+ * Unified base class for SmartHQ devices supporting both HAP and Matter protocols
20
+ * Contains all shared functionality for ERD operations, logging, configuration, and protocol handling
21
+ */
4
22
  export declare abstract class deviceBase {
5
23
  protected readonly platform: SmartHQPlatform;
6
- protected accessory: PlatformAccessory<SmartHqContext>;
7
- protected device: devicesConfig;
8
24
  readonly api: API;
9
25
  readonly log: Logging;
10
26
  readonly config: SmartHQPlatformConfig;
@@ -15,22 +31,39 @@ export declare abstract class deviceBase {
15
31
  protected devicePushRate: number;
16
32
  protected deviceFirmwareVersion: string;
17
33
  private unsupportedErds;
18
- constructor(platform: SmartHQPlatform, accessory: PlatformAccessory<SmartHqContext>, device: devicesConfig);
34
+ protected accessory?: PlatformAccessory<SmartHqContext>;
35
+ protected matterAccessory?: MatterAccessory;
36
+ protected matterUuid?: string;
37
+ protected userId?: string;
38
+ protected useMatter: boolean;
39
+ /**
40
+ * Get the HAP accessory (throws if not in HAP mode)
41
+ */
42
+ protected get hapAccessory(): PlatformAccessory<SmartHqContext>;
43
+ constructor(platform: SmartHQPlatform, accessoryOrDevice: PlatformAccessory<SmartHqContext> | devicesConfig, deviceOrUserId?: devicesConfig | string);
19
44
  getDeviceLogSettings(device: devicesConfig): Promise<void>;
20
45
  getDeviceRateSettings(device: devicesConfig): Promise<void>;
21
46
  getDeviceConfigSettings(device: devicesConfig): Promise<void>;
22
- getDeviceContext(accessory: PlatformAccessory, device: devicesConfig): Promise<void>;
23
47
  /**
24
- * Update the characteristic value and log the change.
25
- *
26
- * @param Service Service
27
- * @param Characteristic Characteristic
28
- * @param CharacteristicValue CharacteristicValue | undefined
29
- * @param CharacteristicName string
30
- * @return: void
31
- *
48
+ * Get and parse device firmware version
32
49
  */
33
- updateCharacteristic(Service: Service, Characteristic: any, CharacteristicValue: CharacteristicValue | undefined, CharacteristicName: string): Promise<void>;
50
+ protected parseFirmwareVersion(firmware?: string): Promise<string>;
51
+ /**
52
+ * Initialize HAP accessory information
53
+ */
54
+ private initializeHAPAccessory;
55
+ /**
56
+ * Get the appliance ID for ERD operations
57
+ */
58
+ protected getApplianceId(): string;
59
+ /**
60
+ * Get the user ID for ERD operations
61
+ */
62
+ protected getUserId(): string;
63
+ /**
64
+ * Get the device display name for logging
65
+ */
66
+ protected getDisplayName(): string;
34
67
  /**
35
68
  * Logging for Device
36
69
  */
@@ -46,27 +79,56 @@ export declare abstract class deviceBase {
46
79
  enablingDeviceLogging(): Promise<boolean>;
47
80
  /**
48
81
  * Check if an ERD code is supported by this appliance
49
- * @param erd - The ERD code to check
50
- * @returns true if the ERD is available, false otherwise
51
82
  */
52
83
  has_erd_code(erd: string): Promise<boolean>;
53
84
  /**
54
85
  * Try to get an ERD value without throwing errors
55
- * @param erd - The ERD code to read
56
- * @returns The ERD value or undefined if not available
57
86
  */
58
87
  try_get_erd_value(erd: string): Promise<string | undefined>;
59
88
  /**
60
89
  * Read an ERD (Electronic Refrigerator Descriptor) value from the SmartHQ API
61
- * @param erd - The ERD code to read
62
- * @returns The ERD value as a string (JSON stringified if object), or undefined if not supported/error
63
90
  */
64
91
  readErd(erd: string): Promise<string | undefined>;
65
92
  /**
66
93
  * Write an ERD (Electronic Refrigerator Descriptor) value to the SmartHQ API
67
- * @param erd - The ERD code to write
68
- * @param value - The value to write (boolean or string)
69
94
  */
70
95
  writeErd(erd: string, value: string | boolean): Promise<void>;
96
+ /**
97
+ * Get device context for HAP accessories
98
+ */
99
+ getDeviceContext(accessory: PlatformAccessory, device: devicesConfig): Promise<void>;
100
+ /**
101
+ * Get device firmware version for Matter devices
102
+ */
103
+ getDeviceFirmwareVersion(device: devicesConfig): Promise<void>;
104
+ /**
105
+ * Update HAP characteristic value and log the change
106
+ */
107
+ updateCharacteristic(Service: Service, Characteristic: any, CharacteristicValue: CharacteristicValue | undefined, CharacteristicName: string): Promise<void>;
108
+ /**
109
+ * Create Matter accessory configuration
110
+ * Should be overridden by device-specific implementations that support Matter
111
+ */
112
+ protected createMatterAccessory(): MatterAccessory | undefined;
113
+ /**
114
+ * Get the Matter accessory instance
115
+ */
116
+ getMatterAccessory(): MatterAccessory | undefined;
117
+ /**
118
+ * Helper to create base Matter accessory info
119
+ */
120
+ protected createBaseMatterConfig(): {
121
+ UUID: any;
122
+ displayName: any;
123
+ serialNumber: any;
124
+ manufacturer: any;
125
+ model: any;
126
+ firmwareRevision: string;
127
+ hardwareRevision: string;
128
+ };
129
+ /**
130
+ * Update Matter cluster state
131
+ */
132
+ protected updateMatterState(clusterName: string, attributes: Record<string, unknown>): Promise<void>;
71
133
  }
72
134
  //# sourceMappingURL=device.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"device.d.ts","sourceRoot":"","sources":["../../src/devices/device.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"device.d.ts","sourceRoot":"","sources":["../../src/devices/device.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,10 @@
1
1
  import axios from 'axios';
2
+ /**
3
+ * Unified base class for SmartHQ devices supporting both HAP and Matter protocols
4
+ * Contains all shared functionality for ERD operations, logging, configuration, and protocol handling
5
+ */
2
6
  export class deviceBase {
3
7
  platform;
4
- accessory;
5
- device;
6
8
  api;
7
9
  log;
8
10
  config;
@@ -15,31 +17,60 @@ export class deviceBase {
15
17
  deviceFirmwareVersion;
16
18
  // ERD capability tracking - remember which ERDs are not supported
17
19
  unsupportedErds = new Set();
18
- constructor(platform, accessory, device) {
20
+ // HAP-specific properties
21
+ accessory;
22
+ // Matter-specific properties
23
+ matterAccessory;
24
+ matterUuid;
25
+ userId;
26
+ // Protocol flag
27
+ useMatter = false;
28
+ /**
29
+ * Get the HAP accessory (throws if not in HAP mode)
30
+ */
31
+ get hapAccessory() {
32
+ if (!this.accessory) {
33
+ throw new Error('Accessory is not available - not in HAP mode');
34
+ }
35
+ return this.accessory;
36
+ }
37
+ constructor(platform, accessoryOrDevice, deviceOrUserId) {
19
38
  this.platform = platform;
20
- this.accessory = accessory;
21
- this.device = device;
22
- this.api = this.platform.api;
23
- this.log = this.platform.log;
24
- this.config = this.platform.config;
39
+ // Initialize platform references
40
+ this.api = platform.api;
41
+ this.log = platform.log;
42
+ this.config = platform.config;
25
43
  this.hap = this.api.hap;
44
+ // Determine if this is HAP or Matter based on constructor arguments
45
+ let device;
46
+ let isHAP = false;
47
+ let accessoryTemp;
48
+ let userIdTemp;
49
+ if ('UUID' in accessoryOrDevice) {
50
+ // HAP mode: first arg is PlatformAccessory
51
+ accessoryTemp = accessoryOrDevice;
52
+ device = deviceOrUserId;
53
+ isHAP = true;
54
+ }
55
+ else {
56
+ // Matter mode: first arg is device, second is userId
57
+ device = accessoryOrDevice;
58
+ userIdTemp = deviceOrUserId;
59
+ }
60
+ // Initialize config settings
26
61
  this.getDeviceLogSettings(device);
27
62
  this.getDeviceRateSettings(device);
28
63
  this.getDeviceConfigSettings(device);
29
- this.getDeviceContext(accessory, device);
30
- // Set accessory information
31
- accessory
32
- .getService(this.hap.Service.AccessoryInformation)
33
- .setCharacteristic(this.hap.Characteristic.Manufacturer, accessory.context.device.brand && accessory.context.device.brand !== 'Unknown' ? accessory.context.device.brand : 'GE Appliances')
34
- .setCharacteristic(this.hap.Characteristic.Name, accessory.context.device.nickname)
35
- .setCharacteristic(this.hap.Characteristic.ConfiguredName, accessory.context.device.nickname)
36
- .setCharacteristic(this.hap.Characteristic.Model, accessory.context.device.model)
37
- .setCharacteristic(this.hap.Characteristic.SerialNumber, accessory.context.device.serial)
38
- .setCharacteristic(this.hap.Characteristic.HardwareRevision, this.deviceFirmwareVersion)
39
- .setCharacteristic(this.hap.Characteristic.SoftwareRevision, this.deviceFirmwareVersion)
40
- .setCharacteristic(this.hap.Characteristic.FirmwareRevision, this.deviceFirmwareVersion)
41
- .getCharacteristic(this.hap.Characteristic.FirmwareRevision)
42
- .updateValue(this.deviceFirmwareVersion);
64
+ // Set instance properties
65
+ if (isHAP) {
66
+ this.accessory = accessoryTemp;
67
+ this.useMatter = false;
68
+ this.initializeHAPAccessory();
69
+ }
70
+ else {
71
+ this.userId = userIdTemp;
72
+ this.useMatter = device.useMatter ?? false;
73
+ }
43
74
  }
44
75
  async getDeviceLogSettings(device) {
45
76
  this.deviceLogging = this.platform.debugMode ? 'debugMode' : device.logging ?? this.platform.platformLogging ?? 'standard';
@@ -54,7 +85,7 @@ export class deviceBase {
54
85
  // updateRate
55
86
  this.deviceUpdateRate = device.updateRate ?? this.platform.platformUpdateRate ?? 5;
56
87
  const updateRate = device.updateRate ? 'Device Config' : this.platform.platformUpdateRate ? 'Platform Config' : 'Default';
57
- this.debugSuccessLog(`Using ${updateRate} updateRate: ${this.deviceUpdateRate}`);
88
+ await this.debugLog(`Using ${updateRate} updateRate: ${this.deviceUpdateRate}`);
58
89
  // pushRate
59
90
  this.devicePushRate = device.pushRate ?? this.platform.platformPushRate ?? 1;
60
91
  const pushRate = device.pushRate ? 'Device Config' : this.platform.platformPushRate ? 'Platform Config' : 'Default';
@@ -68,6 +99,7 @@ export class deviceBase {
68
99
  'updateRate',
69
100
  'pushRate',
70
101
  'hide_device',
102
+ 'useMatter',
71
103
  ];
72
104
  properties.forEach((prop) => {
73
105
  if (device[prop] !== undefined) {
@@ -78,102 +110,125 @@ export class deviceBase {
78
110
  this.infoLog(`Config: ${JSON.stringify(deviceConfig)}`);
79
111
  }
80
112
  }
81
- async getDeviceContext(accessory, device) {
82
- const deviceFirmwareVersion = device.firmware ?? this.platform.version ?? '0.0.0';
113
+ /**
114
+ * Get and parse device firmware version
115
+ */
116
+ async parseFirmwareVersion(firmware) {
117
+ const deviceFirmwareVersion = firmware ?? this.platform.version ?? '0.0.0';
83
118
  const version = deviceFirmwareVersion.toString();
84
119
  this.debugLog(`Firmware Version: ${version.replace(/^V|-.*$/g, '')}`);
85
120
  if (version?.includes('.') === false) {
86
121
  const replace = version?.replace(/^V|-.*$/g, '');
87
122
  const match = replace?.match(/./g);
88
123
  const validVersion = match?.join('.');
89
- this.deviceFirmwareVersion = validVersion ?? '0.0.0';
124
+ return validVersion ?? '0.0.0';
90
125
  }
91
126
  else {
92
- this.deviceFirmwareVersion = version.replace(/^V|-.*$/g, '') ?? '0.0.0';
127
+ return version.replace(/^V|-.*$/g, '') ?? '0.0.0';
93
128
  }
94
- accessory.context.device.firmware = this.deviceFirmwareVersion;
95
- accessory
129
+ }
130
+ /**
131
+ * Initialize HAP accessory information
132
+ */
133
+ initializeHAPAccessory() {
134
+ if (!this.accessory) {
135
+ return;
136
+ }
137
+ this.getDeviceContext(this.accessory, this.accessory.context.device);
138
+ // Set accessory information
139
+ this.accessory
96
140
  .getService(this.hap.Service.AccessoryInformation)
141
+ .setCharacteristic(this.hap.Characteristic.Manufacturer, this.accessory.context.device.brand && this.accessory.context.device.brand !== 'Unknown' ? this.accessory.context.device.brand : 'GE Appliances')
142
+ .setCharacteristic(this.hap.Characteristic.Name, this.accessory.context.device.nickname)
143
+ .setCharacteristic(this.hap.Characteristic.ConfiguredName, this.accessory.context.device.nickname)
144
+ .setCharacteristic(this.hap.Characteristic.Model, this.accessory.context.device.model)
145
+ .setCharacteristic(this.hap.Characteristic.SerialNumber, this.accessory.context.device.serial)
97
146
  .setCharacteristic(this.hap.Characteristic.HardwareRevision, this.deviceFirmwareVersion)
98
147
  .setCharacteristic(this.hap.Characteristic.SoftwareRevision, this.deviceFirmwareVersion)
99
148
  .setCharacteristic(this.hap.Characteristic.FirmwareRevision, this.deviceFirmwareVersion)
100
149
  .getCharacteristic(this.hap.Characteristic.FirmwareRevision)
101
150
  .updateValue(this.deviceFirmwareVersion);
102
- this.debugSuccessLog(`deviceFirmwareVersion: ${this.deviceFirmwareVersion}`);
103
151
  }
104
152
  /**
105
- * Update the characteristic value and log the change.
106
- *
107
- * @param Service Service
108
- * @param Characteristic Characteristic
109
- * @param CharacteristicValue CharacteristicValue | undefined
110
- * @param CharacteristicName string
111
- * @return: void
112
- *
153
+ * Get the appliance ID for ERD operations
113
154
  */
114
- async updateCharacteristic(Service, Characteristic, CharacteristicValue, CharacteristicName) {
115
- if (CharacteristicValue === undefined) {
116
- this.debugLog(`${CharacteristicName}: ${CharacteristicValue}`);
155
+ getApplianceId() {
156
+ if (this.accessory) {
157
+ return this.accessory.context.device.applianceId;
117
158
  }
118
- else {
119
- Service.updateCharacteristic(Characteristic, CharacteristicValue);
120
- this.debugLog(`updateCharacteristic ${CharacteristicName}: ${CharacteristicValue}`);
121
- this.debugWarnLog(`${CharacteristicName} context before: ${this.accessory.context[CharacteristicName]}`);
122
- this.accessory.context[CharacteristicName] = CharacteristicValue;
123
- this.debugWarnLog(`${CharacteristicName} context after: ${this.accessory.context[CharacteristicName]}`);
159
+ // Fallback for Matter mode - should be set via userId path
160
+ return '';
161
+ }
162
+ /**
163
+ * Get the user ID for ERD operations
164
+ */
165
+ getUserId() {
166
+ if (this.accessory) {
167
+ return this.accessory.context.userId;
124
168
  }
169
+ return this.userId ?? '';
170
+ }
171
+ /**
172
+ * Get the device display name for logging
173
+ */
174
+ getDisplayName() {
175
+ if (this.accessory) {
176
+ return this.accessory.displayName;
177
+ }
178
+ const protocol = this.useMatter ? 'Matter' : 'HAP';
179
+ return `[${protocol}] SmartHQ Device`;
125
180
  }
126
181
  /**
127
182
  * Logging for Device
128
183
  */
129
184
  async infoLog(...log) {
130
185
  if (await this.enablingDeviceLogging()) {
131
- this.log.info(`${this.accessory.displayName}`, String(...log));
186
+ this.log.info(`${this.getDisplayName()}`, String(...log));
132
187
  }
133
188
  }
134
189
  async successLog(...log) {
135
190
  if (await this.enablingDeviceLogging()) {
136
- this.log.success(`${this.accessory.displayName}`, String(...log));
191
+ this.log.success(`${this.getDisplayName()}`, String(...log));
137
192
  }
138
193
  }
139
194
  async debugSuccessLog(...log) {
140
195
  if (await this.enablingDeviceLogging()) {
141
196
  if (await this.loggingIsDebug()) {
142
- this.log.success(`[DEBUG] ${this.accessory.displayName}`, String(...log));
197
+ this.log.success(`[DEBUG] ${this.getDisplayName()}`, String(...log));
143
198
  }
144
199
  }
145
200
  }
146
201
  async warnLog(...log) {
147
202
  if (await this.enablingDeviceLogging()) {
148
- this.log.warn(`${this.accessory.displayName}`, String(...log));
203
+ this.log.warn(`${this.getDisplayName()}`, String(...log));
149
204
  }
150
205
  }
151
206
  async debugWarnLog(...log) {
152
207
  if (await this.enablingDeviceLogging()) {
153
208
  if (await this.loggingIsDebug()) {
154
- this.log.warn(`[DEBUG] ${this.accessory.displayName}`, String(...log));
209
+ this.log.warn(`[DEBUG] ${this.getDisplayName()}`, String(...log));
155
210
  }
156
211
  }
157
212
  }
158
213
  async errorLog(...log) {
159
214
  if (await this.enablingDeviceLogging()) {
160
- this.log.error(`${this.accessory.displayName}`, String(...log));
215
+ this.log.error(`${this.getDisplayName()}`, String(...log));
161
216
  }
162
217
  }
163
218
  async debugErrorLog(...log) {
164
219
  if (await this.enablingDeviceLogging()) {
165
220
  if (await this.loggingIsDebug()) {
166
- this.log.error(`[DEBUG] ${this.accessory.displayName}`, String(...log));
221
+ this.log.error(`[DEBUG] ${this.getDisplayName()}`, String(...log));
167
222
  }
168
223
  }
169
224
  }
170
225
  async debugLog(...log) {
171
226
  if (await this.enablingDeviceLogging()) {
172
227
  if (this.deviceLogging === 'debug') {
173
- this.log.info(`[DEBUG] ${this.accessory.displayName}`, String(...log));
228
+ this.log.info(`[DEBUG] ${this.getDisplayName()}`, String(...log));
174
229
  }
175
230
  else if (this.deviceLogging === 'debugMode') {
176
- this.log.debug(`${this.accessory.displayName}`, String(...log));
231
+ this.log.debug(`${this.getDisplayName()}`, String(...log));
177
232
  }
178
233
  }
179
234
  }
@@ -185,8 +240,6 @@ export class deviceBase {
185
240
  }
186
241
  /**
187
242
  * Check if an ERD code is supported by this appliance
188
- * @param erd - The ERD code to check
189
- * @returns true if the ERD is available, false otherwise
190
243
  */
191
244
  async has_erd_code(erd) {
192
245
  try {
@@ -199,8 +252,6 @@ export class deviceBase {
199
252
  }
200
253
  /**
201
254
  * Try to get an ERD value without throwing errors
202
- * @param erd - The ERD code to read
203
- * @returns The ERD value or undefined if not available
204
255
  */
205
256
  async try_get_erd_value(erd) {
206
257
  try {
@@ -212,8 +263,6 @@ export class deviceBase {
212
263
  }
213
264
  /**
214
265
  * Read an ERD (Electronic Refrigerator Descriptor) value from the SmartHQ API
215
- * @param erd - The ERD code to read
216
- * @returns The ERD value as a string (JSON stringified if object), or undefined if not supported/error
217
266
  */
218
267
  async readErd(erd) {
219
268
  // Check if we already know this ERD is not supported
@@ -223,7 +272,7 @@ export class deviceBase {
223
272
  try {
224
273
  await this.debugLog(`Reading ERD ${erd}`);
225
274
  const d = await axios
226
- .get(`/appliance/${this.accessory.context.device.applianceId}/erd/${erd}`);
275
+ .get(`/appliance/${this.getApplianceId()}/erd/${erd}`);
227
276
  // If API returns undefined/null, return undefined without logging
228
277
  if (d.data.value === undefined || d.data.value === null) {
229
278
  return undefined;
@@ -246,14 +295,12 @@ export class deviceBase {
246
295
  return undefined;
247
296
  }
248
297
  // For other errors, log warning and return undefined
249
- this.warnLog?.(`readErd ${erd} error: ${error?.message ?? error}`);
298
+ await this.warnLog(`readErd ${erd} error: ${error?.message ?? error}`);
250
299
  return undefined;
251
300
  }
252
301
  }
253
302
  /**
254
303
  * Write an ERD (Electronic Refrigerator Descriptor) value to the SmartHQ API
255
- * @param erd - The ERD code to write
256
- * @param value - The value to write (boolean or string)
257
304
  */
258
305
  async writeErd(erd, value) {
259
306
  // Check if we already know this ERD is not supported
@@ -264,10 +311,10 @@ export class deviceBase {
264
311
  try {
265
312
  await this.debugLog(`Writing ERD ${erd} with value: ${value}`);
266
313
  await axios
267
- .post(`/appliance/${this.accessory.context.device.applianceId}/erd/${erd}`, {
314
+ .post(`/appliance/${this.getApplianceId()}/erd/${erd}`, {
268
315
  kind: 'appliance#erdListEntry',
269
- userId: this.accessory.context.userId,
270
- applianceId: this.accessory.context.device.applianceId,
316
+ userId: this.getUserId(),
317
+ applianceId: this.getApplianceId(),
271
318
  erd,
272
319
  value: typeof value === 'boolean' ? (value ? '01' : '00') : value,
273
320
  });
@@ -280,9 +327,108 @@ export class deviceBase {
280
327
  await this.debugLog(`ERD ${erd} write failed - not supported or invalid value (400) - will not retry`);
281
328
  }
282
329
  else {
283
- this.warnLog?.(`writeErd ${erd} error: ${error?.message ?? error}`);
330
+ await this.warnLog(`writeErd ${erd} error: ${error?.message ?? error}`);
284
331
  }
285
332
  }
286
333
  }
334
+ /**
335
+ * Get device context for HAP accessories
336
+ */
337
+ async getDeviceContext(accessory, device) {
338
+ const deviceFirmwareVersion = device.firmware ?? this.platform.version ?? '0.0.0';
339
+ this.deviceFirmwareVersion = await this.parseFirmwareVersion(deviceFirmwareVersion);
340
+ accessory.context.device.firmware = this.deviceFirmwareVersion;
341
+ accessory
342
+ .getService(this.hap.Service.AccessoryInformation)
343
+ .setCharacteristic(this.hap.Characteristic.HardwareRevision, this.deviceFirmwareVersion)
344
+ .setCharacteristic(this.hap.Characteristic.SoftwareRevision, this.deviceFirmwareVersion)
345
+ .setCharacteristic(this.hap.Characteristic.FirmwareRevision, this.deviceFirmwareVersion)
346
+ .getCharacteristic(this.hap.Characteristic.FirmwareRevision)
347
+ .updateValue(this.deviceFirmwareVersion);
348
+ this.debugSuccessLog(`deviceFirmwareVersion: ${this.deviceFirmwareVersion}`);
349
+ }
350
+ /**
351
+ * Get device firmware version for Matter devices
352
+ */
353
+ async getDeviceFirmwareVersion(device) {
354
+ const deviceFirmwareVersion = device.firmware ?? this.platform.version ?? '0.0.0';
355
+ this.deviceFirmwareVersion = await this.parseFirmwareVersion(deviceFirmwareVersion);
356
+ await this.debugLog(`deviceFirmwareVersion: ${this.deviceFirmwareVersion}`);
357
+ }
358
+ /**
359
+ * Update HAP characteristic value and log the change
360
+ */
361
+ async updateCharacteristic(Service, Characteristic, CharacteristicValue, CharacteristicName) {
362
+ if (!this.accessory) {
363
+ return;
364
+ }
365
+ if (CharacteristicValue === undefined) {
366
+ this.debugLog(`${CharacteristicName}: ${CharacteristicValue}`);
367
+ }
368
+ else {
369
+ Service.updateCharacteristic(Characteristic, CharacteristicValue);
370
+ this.debugLog(`updateCharacteristic ${CharacteristicName}: ${CharacteristicValue}`);
371
+ this.debugWarnLog(`${CharacteristicName} context before: ${this.accessory.context[CharacteristicName]}`);
372
+ this.accessory.context[CharacteristicName] = CharacteristicValue;
373
+ this.debugWarnLog(`${CharacteristicName} context after: ${this.accessory.context[CharacteristicName]}`);
374
+ }
375
+ }
376
+ /**
377
+ * Create Matter accessory configuration
378
+ * Should be overridden by device-specific implementations that support Matter
379
+ */
380
+ createMatterAccessory() {
381
+ return undefined;
382
+ }
383
+ /**
384
+ * Get the Matter accessory instance
385
+ */
386
+ getMatterAccessory() {
387
+ if (!this.matterAccessory && this.useMatter) {
388
+ this.matterAccessory = this.createMatterAccessory();
389
+ }
390
+ return this.matterAccessory;
391
+ }
392
+ /**
393
+ * Helper to create base Matter accessory info
394
+ */
395
+ createBaseMatterConfig() {
396
+ const device = this.accessory ? this.accessory.context.device : {};
397
+ const displayName = device.nickname || 'SmartHQ Device';
398
+ const serialNumber = device.applianceId || 'unknown';
399
+ // Type assertion for Matter API (will be properly typed in Homebridge 2.0)
400
+ const matterAPI = this.api.matter;
401
+ return {
402
+ UUID: matterAPI.uuid.generate(serialNumber),
403
+ displayName,
404
+ serialNumber,
405
+ manufacturer: device.brand && device.brand !== 'Unknown' ? device.brand : 'GE Appliances',
406
+ model: device.model || 'SmartHQ',
407
+ firmwareRevision: this.deviceFirmwareVersion,
408
+ hardwareRevision: this.deviceFirmwareVersion,
409
+ };
410
+ }
411
+ /**
412
+ * Update Matter cluster state
413
+ */
414
+ async updateMatterState(clusterName, attributes) {
415
+ if (!this.matterUuid) {
416
+ await this.debugLog('Cannot update Matter state - UUID not set');
417
+ return;
418
+ }
419
+ try {
420
+ // Type assertion for Matter API (will be properly typed in Homebridge 2.0)
421
+ const matterAPI = this.api.matter;
422
+ if (!matterAPI) {
423
+ await this.debugLog('Matter API not available');
424
+ return;
425
+ }
426
+ await matterAPI.updateAccessoryState(this.matterUuid, clusterName, attributes);
427
+ await this.debugLog(`Updated Matter cluster ${clusterName}: ${JSON.stringify(attributes)}`);
428
+ }
429
+ catch (error) {
430
+ await this.errorLog(`Failed to update Matter cluster ${clusterName}: ${error?.message ?? error}`);
431
+ }
432
+ }
287
433
  }
288
434
  //# sourceMappingURL=device.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"device.js","sourceRoot":"","sources":["../../src/devices/device.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"device.js","sourceRoot":"","sources":["../../src/devices/device.ts"],"names":[],"mappings":"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"}