homebridge-smarthq-client 1.2.5-beta.7 → 1.2.5-debug.1

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.
package/CHANGELOG.md CHANGED
@@ -2,6 +2,9 @@
2
2
 
3
3
  All notable changes to this project will be documented in this file.
4
4
 
5
+ ## [1.2.5](https://github.com/ceb400/homebridge-smarthq-client/releases/tag/v1.2.5) (2026-07-15)
6
+ - Merge beta branch into main branch
7
+
5
8
  ## [1.2.5-beta.7](https://github.com/ceb400/homebridge-smarthq-client/releases/tag/v1.2.5) (2026-07-08)
6
9
  - Air conditioner was logging too much device state info. Changed to only log if enabled for debug logging
7
10
 
package/Readme.md CHANGED
@@ -122,6 +122,10 @@ Once an access (and refresh) token have been saved this step will only be needed
122
122
  used to store your tokens is deleted.
123
123
  When an access token expires the plugin will use the refresh token to obtain a new access token automatically.
124
124
 
125
+ ## (for Raspberry pi OS users) ##
126
+ To complete the authentication flow will require the Raspberry pi OS to have a desktop and browser installed.
127
+ For assistance in installing these components please see this [article](https://raspberrytips.com/upgrade-raspbian-lite-to-desktop/)
128
+
125
129
  ## Notifications (for refrigerators)
126
130
 
127
131
  API device alerts are monitored for the following conditions:
@@ -153,7 +157,8 @@ will not be any tile/device shown in the Home app.
153
157
 
154
158
  ## Acknowledgements
155
159
 
156
- [donavanbecker](https://github.com/donavanbecker) for the excellent 'ge-smarthq' pkg.
160
+ [donavanbecker](https://github.com/donavanbecker) for the excellent 'ge-smarthq' pkg.
161
+ [evan robert](https://github.com/actuallyevan) for contributing air conditioner device code
157
162
  GE SmartHQ API Client
158
163
 
159
164
 
@@ -17,6 +17,20 @@ export declare class AirConditioner {
17
17
  private currentAmbientCelsius;
18
18
  private coolCelsiusMin;
19
19
  private coolCelsiusMax;
20
+ private readonly MODE_COOL;
21
+ private readonly MODE_FANONLY;
22
+ private readonly MODE_DRY;
23
+ private readonly MODE_ENERGY_SAVER;
24
+ private readonly MODE_COOL_QUIET;
25
+ private readonly MODE_COOL_TURBO;
26
+ private readonly MODE_HEAT;
27
+ private readonly MODE_OFF;
28
+ private readonly MODE_ON;
29
+ private readonly FAN_SPEED_LOW;
30
+ private readonly FAN_SPEED_MEDIUM;
31
+ private readonly FAN_SPEED_HIGH;
32
+ private readonly FAN_SPEED_AUTO;
33
+ private readonly FAN_SPEED_OFF;
20
34
  private client;
21
35
  private api;
22
36
  Service: typeof Service;
@@ -36,4 +50,6 @@ export declare class AirConditioner {
36
50
  private findService;
37
51
  private getLastElementAndCapitalize;
38
52
  private setupWebSocket;
53
+ private addDebugState;
54
+ setupService(serviceType: string, displayName: string, serviceIdSuffix: string): Service;
39
55
  }
@@ -17,6 +17,22 @@ export class AirConditioner {
17
17
  // Configuration thresholds
18
18
  coolCelsiusMin = 17.77;
19
19
  coolCelsiusMax = 30.0;
20
+ //======== Thermostat mode constants ========
21
+ MODE_COOL = "cloud.smarthq.type.thermostatmode.cool";
22
+ MODE_FANONLY = "cloud.smarthq.type.thermostatmode.fanonly";
23
+ MODE_DRY = "cloud.smarthq.type.thermostatmode.dry";
24
+ MODE_ENERGY_SAVER = "cloud.smarthq.type.thermostatmode.cool.energysaver";
25
+ MODE_COOL_QUIET = "cloud.smarthq.type.thermostatmode.cool.quiet";
26
+ MODE_COOL_TURBO = "cloud.smarthq.type.thermostatmode.cool.turbo";
27
+ MODE_HEAT = "cloud.smarthq.type.thermostatmode.heat";
28
+ MODE_OFF = "cloud.smarthq.type.thermostatmode.off";
29
+ MODE_ON = "cloud.smarthq.type.thermostatmode.on";
30
+ //======== Fan speed constants ========
31
+ FAN_SPEED_LOW = "cloud.smarthq.type.fanspeed.low";
32
+ FAN_SPEED_MEDIUM = "cloud.smarthq.type.fanspeed.medium";
33
+ FAN_SPEED_HIGH = "cloud.smarthq.type.fanspeed.high";
34
+ FAN_SPEED_AUTO = "cloud.smarthq.type.fanspeed.auto";
35
+ FAN_SPEED_OFF = "cloud.smarthq.type.fanspeed.off";
20
36
  client;
21
37
  api;
22
38
  Service;
@@ -128,7 +144,7 @@ export class AirConditioner {
128
144
  .onSet(async (value) => {
129
145
  this.isOn = value === 1;
130
146
  if (this.isOn) {
131
- const stateVal = this.lastActiveMode === 'cloud.smarthq.type.thermostatmode.fanonly' ? 1 : 3;
147
+ const stateVal = this.lastActiveMode === this.MODE_FANONLY ? 1 : 3;
132
148
  this.acThermostat.updateCharacteristic(this.Characteristic.CurrentHeaterCoolerState, stateVal);
133
149
  for (const [mode, service] of this.modeOutlets.entries()) {
134
150
  service.updateCharacteristic(this.Characteristic.On, this.lastActiveMode === mode);
@@ -146,14 +162,20 @@ export class AirConditioner {
146
162
  service.updateCharacteristic(this.Characteristic.On, false);
147
163
  }
148
164
  }
149
- this.sendCommand();
165
+ const cmdBody = {
166
+ command: {
167
+ on: this.isOn,
168
+ commandType: 'cloud.smarthq.command.thermostat.v1.set',
169
+ }
170
+ };
171
+ this.sendCommand(cmdBody);
150
172
  });
151
173
  this.acThermostat
152
174
  .getCharacteristic(this.Characteristic.CurrentHeaterCoolerState)
153
175
  .onGet(() => {
154
176
  if (!this.isOn)
155
177
  return 0;
156
- return this.lastActiveMode === 'cloud.smarthq.type.thermostatmode.fanonly' ? 1 : 3;
178
+ return this.lastActiveMode === this.MODE_FANONLY ? 1 : 3;
157
179
  });
158
180
  this.acThermostat
159
181
  .getCharacteristic(this.Characteristic.TargetHeaterCoolerState)
@@ -172,7 +194,16 @@ export class AirConditioner {
172
194
  .onGet(() => this.lastActiveCelsius)
173
195
  .onSet(async (value) => {
174
196
  this.lastActiveCelsius = value;
175
- this.sendCommand();
197
+ // Clip celsius to hardware bounds to prevent API errors
198
+ const clippedCelsius = Math.max(this.coolCelsiusMin, Math.min(this.coolCelsiusMax, this.lastActiveCelsius));
199
+ const coolFahrenheit = Math.round(clippedCelsius * 1.8 + 32);
200
+ const cmdBody = {
201
+ command: {
202
+ coolFahrenheit: coolFahrenheit,
203
+ commandType: 'cloud.smarthq.command.thermostat.v1.set',
204
+ }
205
+ };
206
+ this.sendCommand(cmdBody);
176
207
  });
177
208
  this.acThermostat
178
209
  .getCharacteristic(this.Characteristic.CurrentTemperature)
@@ -226,12 +257,43 @@ export class AirConditioner {
226
257
  }
227
258
  }
228
259
  this.acThermostat.updateCharacteristic(this.Characteristic.Active, 1);
229
- const stateVal = mode === 'cloud.smarthq.type.thermostatmode.fanonly' ? 1 : 3;
260
+ const stateVal = mode === this.MODE_FANONLY ? 1 : 3;
230
261
  this.acThermostat.updateCharacteristic(this.Characteristic.CurrentHeaterCoolerState, stateVal);
231
262
  for (const [fanSpeed, service] of this.fanOutlets.entries()) {
232
263
  service.updateCharacteristic(this.Characteristic.On, this.lastActiveFanSpeed === fanSpeed);
233
264
  }
234
- this.sendCommand();
265
+ // Handle behavior constraint: Fan Only mode does not support Auto Fan Speed - force Fan Speed to Low
266
+ // Dry mode sets fan speed to Auto, which is valid. Only Fan Only mode needs to be adjusted.
267
+ let cmdBody;
268
+ switch (mode) {
269
+ case this.MODE_FANONLY:
270
+ cmdBody = {
271
+ command: {
272
+ mode: this.MODE_FANONLY,
273
+ fanSpeed: this.FAN_SPEED_LOW,
274
+ commandType: 'cloud.smarthq.command.thermostat.v1.set',
275
+ }
276
+ };
277
+ break;
278
+ case this.MODE_DRY:
279
+ cmdBody = {
280
+ command: {
281
+ mode: this.MODE_DRY,
282
+ fanSpeed: this.FAN_SPEED_AUTO,
283
+ commandType: 'cloud.smarthq.command.thermostat.v1.set',
284
+ }
285
+ };
286
+ break;
287
+ // Default case handles Cool and Heat modes, which support all(?) fan speeds
288
+ default:
289
+ cmdBody = {
290
+ command: {
291
+ mode: mode,
292
+ commandType: 'cloud.smarthq.command.thermostat.v1.set',
293
+ }
294
+ };
295
+ }
296
+ this.sendCommand(cmdBody);
235
297
  }
236
298
  else {
237
299
  // Toggling active mode OFF powers down system
@@ -245,7 +307,13 @@ export class AirConditioner {
245
307
  }
246
308
  this.acThermostat.updateCharacteristic(this.Characteristic.Active, 0);
247
309
  this.acThermostat.updateCharacteristic(this.Characteristic.CurrentHeaterCoolerState, 0);
248
- this.sendCommand();
310
+ const cmdBody = {
311
+ command: {
312
+ mode: this.MODE_OFF,
313
+ commandType: 'cloud.smarthq.command.thermostat.v1.set',
314
+ }
315
+ };
316
+ this.sendCommand(cmdBody);
249
317
  }
250
318
  }
251
319
  });
@@ -260,16 +328,16 @@ export class AirConditioner {
260
328
  .setCharacteristic(this.Characteristic.SerialNumber, this.parentAccessory.context.device.serial || 'Unknown');
261
329
  // Clean up stale Fan Speed outlets from cache
262
330
  const activeFanServiceUUIDs = new Set();
263
- for (const speed of supportedFanSpeeds) {
264
- const [displayName] = this.getLastElementAndCapitalize(speed, '.');
331
+ for (const fanSpeedSetting of supportedFanSpeeds) {
332
+ const [displayName] = this.getLastElementAndCapitalize(fanSpeedSetting, '.');
265
333
  const service = this.fanAccessory.getService(displayName) ||
266
- this.fanAccessory.addService(this.Service.Outlet, displayName, speed);
334
+ this.fanAccessory.addService(this.Service.Outlet, displayName, fanSpeedSetting);
267
335
  if (!service.getCharacteristic(this.Characteristic.ConfiguredName)) {
268
336
  service.addOptionalCharacteristic(this.Characteristic.ConfiguredName);
269
337
  }
270
338
  service.setCharacteristic(this.Characteristic.Name, displayName);
271
339
  service.setCharacteristic(this.Characteristic.ConfiguredName, displayName);
272
- activeFanServiceUUIDs.add(service.UUID + (speed || ''));
340
+ activeFanServiceUUIDs.add(service.UUID + (fanSpeedSetting || ''));
273
341
  }
274
342
  for (const service of [...this.fanAccessory.services]) {
275
343
  if (service.UUID === this.Service.AccessoryInformation.UUID)
@@ -283,18 +351,18 @@ export class AirConditioner {
283
351
  }
284
352
  }
285
353
  // Bind Fan Speed Outlets characteristics
286
- for (const speed of supportedFanSpeeds) {
287
- const [displayName] = this.getLastElementAndCapitalize(speed, '.');
354
+ for (const fanSpeedSetting of supportedFanSpeeds) {
355
+ const [displayName] = this.getLastElementAndCapitalize(fanSpeedSetting, '.');
288
356
  const service = this.fanAccessory.getService(displayName);
289
- this.fanOutlets.set(speed, service);
357
+ this.fanOutlets.set(fanSpeedSetting, service);
290
358
  service
291
359
  .getCharacteristic(this.Characteristic.On)
292
- .onGet(() => this.isOn && this.lastActiveFanSpeed === speed)
360
+ .onGet(() => this.isOn && this.lastActiveFanSpeed === fanSpeedSetting)
293
361
  .onSet(async (value) => {
294
362
  if (value) {
295
363
  // Handle behavior constraint: Fan Only mode does not support Auto Fan Speed
296
- if (this.lastActiveMode === 'cloud.smarthq.type.thermostatmode.fanonly' &&
297
- speed === 'cloud.smarthq.type.fanspeed.auto') {
364
+ if (this.lastActiveMode === this.MODE_FANONLY &&
365
+ fanSpeedSetting === this.FAN_SPEED_AUTO) {
298
366
  setTimeout(() => {
299
367
  service.updateCharacteristic(this.Characteristic.On, false);
300
368
  const activeService = this.fanOutlets.get(this.lastActiveFanSpeed);
@@ -305,23 +373,29 @@ export class AirConditioner {
305
373
  return;
306
374
  }
307
375
  this.isOn = true;
308
- this.lastActiveFanSpeed = speed;
376
+ this.lastActiveFanSpeed = fanSpeedSetting;
309
377
  for (const [fanSpeed, service] of this.fanOutlets.entries()) {
310
- if (fanSpeed !== speed) {
378
+ if (fanSpeed !== fanSpeedSetting) {
311
379
  service.updateCharacteristic(this.Characteristic.On, false);
312
380
  }
313
381
  }
314
382
  this.acThermostat.updateCharacteristic(this.Characteristic.Active, 1);
315
- const stateVal = this.lastActiveMode === 'cloud.smarthq.type.thermostatmode.fanonly' ? 1 : 3;
383
+ const stateVal = this.lastActiveMode === this.MODE_FANONLY ? 1 : 3;
316
384
  this.acThermostat.updateCharacteristic(this.Characteristic.CurrentHeaterCoolerState, stateVal);
317
385
  for (const [modeKey, service] of this.modeOutlets.entries()) {
318
386
  service.updateCharacteristic(this.Characteristic.On, this.lastActiveMode === modeKey);
319
387
  }
320
- this.sendCommand();
388
+ const cmdBody = {
389
+ command: {
390
+ fanspeed: this.lastActiveFanSpeed,
391
+ commandType: 'cloud.smarthq.command.thermostat.v1.set',
392
+ }
393
+ };
394
+ this.sendCommand(cmdBody);
321
395
  }
322
396
  else {
323
397
  // Toggling active fan speed OFF powers down system
324
- if (this.lastActiveFanSpeed === speed) {
398
+ if (this.lastActiveFanSpeed === fanSpeedSetting) {
325
399
  this.isOn = false;
326
400
  for (const service of this.modeOutlets.values()) {
327
401
  service.updateCharacteristic(this.Characteristic.On, false);
@@ -331,57 +405,75 @@ export class AirConditioner {
331
405
  }
332
406
  this.acThermostat.updateCharacteristic(this.Characteristic.Active, 0);
333
407
  this.acThermostat.updateCharacteristic(this.Characteristic.CurrentHeaterCoolerState, 0);
334
- this.sendCommand();
408
+ const cmdBody = {
409
+ command: {
410
+ fanspeed: this.FAN_SPEED_OFF,
411
+ commandType: 'cloud.smarthq.command.thermostat.v1.set',
412
+ }
413
+ };
414
+ this.sendCommand(cmdBody);
335
415
  }
336
416
  }
337
417
  });
338
418
  }
339
419
  }
420
+ // D. Add Debug State switch to parent accessory
421
+ this.addDebugState('cloud.smarthq.service.thermostat.v1');
340
422
  }
341
423
  // ---------------------------
342
424
  // API COMMAND SENDER
343
425
  // ---------------------------
344
- sendCommand() {
426
+ sendCommand(cmdBody) {
345
427
  if (this.debounceTimeout) {
346
428
  clearTimeout(this.debounceTimeout);
347
429
  }
348
430
  this.debounceTimeout = setTimeout(() => {
349
431
  this.debounceTimeout = null;
350
- this.executeSendCommand();
432
+ this.executeSendCommand(cmdBody);
351
433
  }, 150);
352
434
  }
353
- async executeSendCommand() {
435
+ async executeSendCommand(command) {
354
436
  const service = this.findService('cloud.smarthq.service.thermostat.v1', 'cloud.smarthq.domain.thermostat');
355
437
  if (!service)
356
438
  return;
357
439
  this.commandQueue = this.commandQueue.then(async () => {
358
- const command = {
359
- commandType: 'cloud.smarthq.command.thermostat.v1.set',
440
+ /*
441
+ const command: Record<string, unknown> = {
442
+ commandType: 'cloud.smarthq.command.thermostat.v1.set',
360
443
  };
444
+
445
+
361
446
  // Only send the 'on' parameter if it is transitioning (prevents GE firmware from resetting to ECO)
362
447
  if (!this.isOn) {
363
- command.on = false;
364
- }
365
- else if (!this.physicalOnState) {
366
- command.on = true;
448
+ command.on = false;
449
+ } else if (!this.physicalOnState) {
450
+ command.on = true;
367
451
  }
452
+
368
453
  if (this.isOn) {
369
- command.mode = this.lastActiveMode;
370
- // Handle behavior constraint: Fan Only mode does not support Auto Fan Speed
371
- if (this.lastActiveMode === 'cloud.smarthq.type.thermostatmode.fanonly' &&
372
- this.lastActiveFanSpeed === 'cloud.smarthq.type.fanspeed.auto') {
373
- command.fanSpeed = 'cloud.smarthq.type.fanspeed.low';
374
- }
375
- else {
376
- command.fanSpeed = this.lastActiveFanSpeed;
377
- }
378
- // Omit coolFahrenheit in Fan Only mode (thermostat has no cooling setpoint)
379
- if (this.lastActiveMode !== 'cloud.smarthq.type.thermostatmode.fanonly') {
380
- // Clip celsius to hardware bounds to prevent API errors
381
- const clippedCelsius = Math.max(this.coolCelsiusMin, Math.min(this.coolCelsiusMax, this.lastActiveCelsius));
382
- command.coolFahrenheit = Math.round(clippedCelsius * 1.8 + 32);
383
- }
454
+ command.mode = this.lastActiveMode;
455
+
456
+ // Handle behavior constraint: Fan Only mode does not support Auto Fan Speed
457
+ if (
458
+ this.lastActiveMode === this.MODE_FANONLY &&
459
+ this.lastActiveFanSpeed === this.FAN_SPEED_AUTO
460
+ ) {
461
+ command.fanSpeed = this.FAN_SPEED_LOW;
462
+ } else {
463
+ command.fanSpeed = this.lastActiveFanSpeed;
464
+ }
465
+
466
+ // Omit coolFahrenheit in Fan Only mode (thermostat has no cooling setpoint)
467
+ if (this.lastActiveMode !== this.MODE_FANONLY) {
468
+ // Clip celsius to hardware bounds to prevent API errors
469
+ const clippedCelsius = Math.max(
470
+ this.coolCelsiusMin,
471
+ Math.min(this.coolCelsiusMax, this.lastActiveCelsius),
472
+ );
473
+ command.coolFahrenheit = Math.round(clippedCelsius * 1.8 + 32);
474
+ }
384
475
  }
476
+ */
385
477
  try {
386
478
  await this.client.sendCommand({
387
479
  command,
@@ -426,7 +518,7 @@ export class AirConditioner {
426
518
  // Update HeaterCooler state dynamically based on power and mode
427
519
  const stateVal = !this.isOn
428
520
  ? 0
429
- : (this.lastActiveMode === 'cloud.smarthq.type.thermostatmode.fanonly' ? 1 : 3);
521
+ : (this.lastActiveMode === this.MODE_FANONLY ? 1 : 3);
430
522
  this.acThermostat.updateCharacteristic(this.Characteristic.CurrentHeaterCoolerState, stateVal);
431
523
  // Update dynamic outlets
432
524
  for (const [mode, service] of this.modeOutlets.entries()) {
@@ -469,5 +561,55 @@ export class AirConditioner {
469
561
  this.platform.log.error(`Failed to connect to SmartHQ WebSocket for AC ${this.deviceId}:`, error);
470
562
  }
471
563
  }
564
+ // ---------------------------
565
+ // HELPERS FOR DEBUGGING
566
+ // Adds a 'Debug State' switch to the parent accessory that logs the current state of the specified service type when toggled on
567
+ // ---------------------------
568
+ addDebugState(serviceType) {
569
+ const debugState = this.setupService('Switch', 'Debug State', `${this.deviceId}-debug-state`);
570
+ debugState
571
+ .getCharacteristic(this.Characteristic.On)
572
+ .onGet(() => {
573
+ return debugState.getCharacteristic(this.Characteristic.On).value;
574
+ })
575
+ .onSet(async (value) => {
576
+ if (value) {
577
+ const response = await this.client.getDevice(this.deviceId);
578
+ const deviceServices = response.services ?? [];
579
+ for (const service of deviceServices) {
580
+ if (service.serviceType === serviceType) {
581
+ this.client.debug('Debug State - Device Info: ' + JSON.stringify(service, null, 2));
582
+ }
583
+ }
584
+ setTimeout(() => {
585
+ debugState.updateCharacteristic(this.Characteristic.On, false);
586
+ }, 1000);
587
+ }
588
+ });
589
+ }
590
+ setupService(serviceType, displayName, serviceIdSuffix) {
591
+ let service;
592
+ switch (serviceType) {
593
+ case 'Outlet':
594
+ service =
595
+ this.accessory.getService(displayName) ||
596
+ this.accessory.addService(this.Service.Outlet, displayName, serviceIdSuffix);
597
+ break;
598
+ case 'Switch':
599
+ service =
600
+ this.accessory.getService(displayName) ||
601
+ this.accessory.addService(this.Service.Switch, displayName, serviceIdSuffix);
602
+ break;
603
+ default:
604
+ this.client.debug('Unknown service type: ' + serviceType + '');
605
+ service =
606
+ this.accessory.getService(displayName) ||
607
+ this.accessory.addService(this.Service.Fan, displayName, serviceIdSuffix);
608
+ }
609
+ service.setCharacteristic(this.Characteristic.Name, displayName);
610
+ service.addOptionalCharacteristic(this.Characteristic.ConfiguredName);
611
+ service.setCharacteristic(this.Characteristic.ConfiguredName, displayName);
612
+ return service;
613
+ }
472
614
  }
473
615
  //# sourceMappingURL=airConditioner.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"airConditioner.js","sourceRoot":"","sources":["../../src/airConditioner/airConditioner.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"airConditioner.js","sourceRoot":"","sources":["../../src/airConditioner/airConditioner.ts"],"names":[],"mappings":"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"}
package/dist/platform.js CHANGED
@@ -90,7 +90,7 @@ export class SmartHqPlatform {
90
90
  this.client.debug("No response from gettest command");
91
91
  return false;
92
92
  }
93
- this.log.info(chalk.green(`--- state response for ${service.serviceType}: ` + JSON.stringify(response, null, 2)));
93
+ this.log.info(chalk.yellow('Config = ' + JSON.stringify(response.config, null, 2)));
94
94
  }
95
95
  catch (error) {
96
96
  this.client.debug("Error getting test: " + error);
@@ -1 +1 @@
1
- {"version":3,"file":"platform.js","sourceRoot":"","sources":["../src/platform.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"platform.js","sourceRoot":"","sources":["../src/platform.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "homebridge-smarthq-client",
3
- "version": "1.2.5-beta.7",
3
+ "version": "1.2.5-debug.1",
4
4
  "private": false,
5
5
  "description": "Plugin for controlling GE refrigerator, dishwasher, air conditioner via SmartHQ API.",
6
6
  "keywords": [
@@ -25,6 +25,24 @@ export class AirConditioner {
25
25
  private coolCelsiusMin = 17.77;
26
26
  private coolCelsiusMax = 30.0;
27
27
 
28
+ //======== Thermostat mode constants ========
29
+ private readonly MODE_COOL = "cloud.smarthq.type.thermostatmode.cool";
30
+ private readonly MODE_FANONLY = "cloud.smarthq.type.thermostatmode.fanonly";
31
+ private readonly MODE_DRY = "cloud.smarthq.type.thermostatmode.dry";
32
+ private readonly MODE_ENERGY_SAVER = "cloud.smarthq.type.thermostatmode.cool.energysaver";
33
+ private readonly MODE_COOL_QUIET = "cloud.smarthq.type.thermostatmode.cool.quiet";
34
+ private readonly MODE_COOL_TURBO = "cloud.smarthq.type.thermostatmode.cool.turbo";
35
+ private readonly MODE_HEAT = "cloud.smarthq.type.thermostatmode.heat";
36
+ private readonly MODE_OFF = "cloud.smarthq.type.thermostatmode.off";
37
+ private readonly MODE_ON = "cloud.smarthq.type.thermostatmode.on";
38
+
39
+ //======== Fan speed constants ========
40
+ private readonly FAN_SPEED_LOW = "cloud.smarthq.type.fanspeed.low";
41
+ private readonly FAN_SPEED_MEDIUM = "cloud.smarthq.type.fanspeed.medium";
42
+ private readonly FAN_SPEED_HIGH = "cloud.smarthq.type.fanspeed.high"
43
+ private readonly FAN_SPEED_AUTO = "cloud.smarthq.type.fanspeed.auto";
44
+ private readonly FAN_SPEED_OFF = "cloud.smarthq.type.fanspeed.off";
45
+
28
46
  private client: SmartHQClient;
29
47
  private api: API;
30
48
 
@@ -126,6 +144,7 @@ export class AirConditioner {
126
144
  // ---------------------------
127
145
  // ACCESSORIES SETUP
128
146
  // ---------------------------
147
+
129
148
  private setupAccessories(supportedModes: string[], supportedFanSpeeds: string[]) {
130
149
  // Clean up old cached services on the parent accessory
131
150
  const oldServiceUUIDs = [
@@ -167,7 +186,7 @@ export class AirConditioner {
167
186
  this.isOn = (value as number) === 1;
168
187
 
169
188
  if (this.isOn) {
170
- const stateVal = this.lastActiveMode === 'cloud.smarthq.type.thermostatmode.fanonly' ? 1 : 3;
189
+ const stateVal = this.lastActiveMode === this.MODE_FANONLY ? 1 : 3;
171
190
  this.acThermostat.updateCharacteristic(this.Characteristic.CurrentHeaterCoolerState, stateVal);
172
191
  for (const [mode, service] of this.modeOutlets.entries()) {
173
192
  service.updateCharacteristic(this.Characteristic.On, this.lastActiveMode === mode);
@@ -184,15 +203,21 @@ export class AirConditioner {
184
203
  service.updateCharacteristic(this.Characteristic.On, false);
185
204
  }
186
205
  }
206
+ const cmdBody = {
207
+ command: {
208
+ on: this.isOn,
209
+ commandType: 'cloud.smarthq.command.thermostat.v1.set',
210
+ }
211
+ };
187
212
 
188
- this.sendCommand();
213
+ this.sendCommand(cmdBody);
189
214
  });
190
215
 
191
216
  this.acThermostat
192
217
  .getCharacteristic(this.Characteristic.CurrentHeaterCoolerState)
193
- .onGet(() => {
218
+ .onGet(() => {
194
219
  if (!this.isOn) return 0;
195
- return this.lastActiveMode === 'cloud.smarthq.type.thermostatmode.fanonly' ? 1 : 3;
220
+ return this.lastActiveMode === this.MODE_FANONLY ? 1 : 3;
196
221
  });
197
222
 
198
223
  this.acThermostat
@@ -213,7 +238,21 @@ export class AirConditioner {
213
238
  .onGet(() => this.lastActiveCelsius)
214
239
  .onSet(async (value) => {
215
240
  this.lastActiveCelsius = value as number;
216
- this.sendCommand();
241
+
242
+ // Clip celsius to hardware bounds to prevent API errors
243
+ const clippedCelsius = Math.max(
244
+ this.coolCelsiusMin,
245
+ Math.min(this.coolCelsiusMax, this.lastActiveCelsius),
246
+ );
247
+ const coolFahrenheit = Math.round(clippedCelsius * 1.8 + 32);
248
+
249
+ const cmdBody = {
250
+ command: {
251
+ coolFahrenheit: coolFahrenheit,
252
+ commandType: 'cloud.smarthq.command.thermostat.v1.set',
253
+ }
254
+ };
255
+ this.sendCommand(cmdBody);
217
256
  });
218
257
 
219
258
  this.acThermostat
@@ -284,14 +323,46 @@ export class AirConditioner {
284
323
  }
285
324
 
286
325
  this.acThermostat.updateCharacteristic(this.Characteristic.Active, 1);
287
- const stateVal = mode === 'cloud.smarthq.type.thermostatmode.fanonly' ? 1 : 3;
326
+ const stateVal = mode === this.MODE_FANONLY ? 1 : 3;
288
327
  this.acThermostat.updateCharacteristic(this.Characteristic.CurrentHeaterCoolerState, stateVal);
289
328
 
290
329
  for (const [fanSpeed, service] of this.fanOutlets.entries()) {
291
330
  service.updateCharacteristic(this.Characteristic.On, this.lastActiveFanSpeed === fanSpeed);
292
331
  }
293
332
 
294
- this.sendCommand();
333
+ // Handle behavior constraint: Fan Only mode does not support Auto Fan Speed - force Fan Speed to Low
334
+ // Dry mode sets fan speed to Auto, which is valid. Only Fan Only mode needs to be adjusted.
335
+ let cmdBody: Record<string, unknown>;
336
+ switch (mode) {
337
+ case this.MODE_FANONLY:
338
+ cmdBody = {
339
+ command: {
340
+ mode: this.MODE_FANONLY,
341
+ fanSpeed: this.FAN_SPEED_LOW,
342
+ commandType: 'cloud.smarthq.command.thermostat.v1.set',
343
+ }
344
+ };
345
+ break;
346
+ case this.MODE_DRY:
347
+ cmdBody = {
348
+ command: {
349
+ mode: this.MODE_DRY,
350
+ fanSpeed: this.FAN_SPEED_AUTO,
351
+ commandType: 'cloud.smarthq.command.thermostat.v1.set',
352
+ }
353
+ };
354
+ break;
355
+ // Default case handles Cool and Heat modes, which support all(?) fan speeds
356
+ default:
357
+ cmdBody = {
358
+ command: {
359
+ mode: mode,
360
+ commandType: 'cloud.smarthq.command.thermostat.v1.set',
361
+ }
362
+ };
363
+ }
364
+
365
+ this.sendCommand(cmdBody);
295
366
  } else {
296
367
  // Toggling active mode OFF powers down system
297
368
  if (this.lastActiveMode === mode) {
@@ -300,14 +371,21 @@ export class AirConditioner {
300
371
  for (const service of this.modeOutlets.values()) {
301
372
  service.updateCharacteristic(this.Characteristic.On, false);
302
373
  }
303
- for (const service of this.fanOutlets.values()) {
374
+ for (const service of this.fanOutlets.values()) {
304
375
  service.updateCharacteristic(this.Characteristic.On, false);
305
376
  }
306
377
 
307
378
  this.acThermostat.updateCharacteristic(this.Characteristic.Active, 0);
308
379
  this.acThermostat.updateCharacteristic(this.Characteristic.CurrentHeaterCoolerState, 0);
309
380
 
310
- this.sendCommand();
381
+ const cmdBody: Record<string, unknown> = {
382
+ command: {
383
+ mode: this.MODE_OFF,
384
+ commandType: 'cloud.smarthq.command.thermostat.v1.set',
385
+ }
386
+ };
387
+
388
+ this.sendCommand(cmdBody);
311
389
  }
312
390
  }
313
391
  });
@@ -330,11 +408,11 @@ export class AirConditioner {
330
408
 
331
409
  // Clean up stale Fan Speed outlets from cache
332
410
  const activeFanServiceUUIDs = new Set<string>();
333
- for (const speed of supportedFanSpeeds) {
334
- const [displayName] = this.getLastElementAndCapitalize(speed, '.');
411
+ for (const fanSpeedSetting of supportedFanSpeeds) {
412
+ const [displayName] = this.getLastElementAndCapitalize(fanSpeedSetting, '.');
335
413
  const service =
336
414
  this.fanAccessory.getService(displayName) ||
337
- this.fanAccessory.addService(this.Service.Outlet, displayName, speed);
415
+ this.fanAccessory.addService(this.Service.Outlet, displayName, fanSpeedSetting);
338
416
 
339
417
  if (!service.getCharacteristic(this.Characteristic.ConfiguredName)) {
340
418
  service.addOptionalCharacteristic(this.Characteristic.ConfiguredName);
@@ -342,7 +420,7 @@ export class AirConditioner {
342
420
  service.setCharacteristic(this.Characteristic.Name, displayName);
343
421
  service.setCharacteristic(this.Characteristic.ConfiguredName, displayName);
344
422
 
345
- activeFanServiceUUIDs.add(service.UUID + (speed || ''));
423
+ activeFanServiceUUIDs.add(service.UUID + (fanSpeedSetting || ''));
346
424
  }
347
425
 
348
426
  for (const service of [...this.fanAccessory.services]) {
@@ -357,21 +435,21 @@ export class AirConditioner {
357
435
  }
358
436
 
359
437
  // Bind Fan Speed Outlets characteristics
360
- for (const speed of supportedFanSpeeds) {
361
- const [displayName] = this.getLastElementAndCapitalize(speed, '.');
438
+ for (const fanSpeedSetting of supportedFanSpeeds) {
439
+ const [displayName] = this.getLastElementAndCapitalize(fanSpeedSetting, '.');
362
440
  const service = this.fanAccessory.getService(displayName)!;
363
441
 
364
- this.fanOutlets.set(speed, service);
442
+ this.fanOutlets.set(fanSpeedSetting, service);
365
443
 
366
444
  service
367
445
  .getCharacteristic(this.Characteristic.On)
368
- .onGet(() => this.isOn && this.lastActiveFanSpeed === speed)
446
+ .onGet(() => this.isOn && this.lastActiveFanSpeed === fanSpeedSetting)
369
447
  .onSet(async (value) => {
370
448
  if (value) {
371
449
  // Handle behavior constraint: Fan Only mode does not support Auto Fan Speed
372
450
  if (
373
- this.lastActiveMode === 'cloud.smarthq.type.thermostatmode.fanonly' &&
374
- speed === 'cloud.smarthq.type.fanspeed.auto'
451
+ this.lastActiveMode === this.MODE_FANONLY &&
452
+ fanSpeedSetting === this.FAN_SPEED_AUTO
375
453
  ) {
376
454
  setTimeout(() => {
377
455
  service.updateCharacteristic(this.Characteristic.On, false);
@@ -384,26 +462,33 @@ export class AirConditioner {
384
462
  }
385
463
 
386
464
  this.isOn = true;
387
- this.lastActiveFanSpeed = speed;
465
+ this.lastActiveFanSpeed = fanSpeedSetting;
388
466
 
389
467
  for (const [fanSpeed, service] of this.fanOutlets.entries()) {
390
- if (fanSpeed !== speed) {
468
+ if (fanSpeed !== fanSpeedSetting) {
391
469
  service.updateCharacteristic(this.Characteristic.On, false);
392
470
  }
393
471
  }
394
472
 
395
473
  this.acThermostat.updateCharacteristic(this.Characteristic.Active, 1);
396
- const stateVal = this.lastActiveMode === 'cloud.smarthq.type.thermostatmode.fanonly' ? 1 : 3;
474
+ const stateVal = this.lastActiveMode === this.MODE_FANONLY ? 1 : 3;
397
475
  this.acThermostat.updateCharacteristic(this.Characteristic.CurrentHeaterCoolerState, stateVal);
398
476
 
399
477
  for (const [modeKey, service] of this.modeOutlets.entries()) {
400
478
  service.updateCharacteristic(this.Characteristic.On, this.lastActiveMode === modeKey);
401
479
  }
402
480
 
403
- this.sendCommand();
481
+ const cmdBody: Record<string, unknown> = {
482
+ command: {
483
+ fanspeed: this.lastActiveFanSpeed,
484
+ commandType: 'cloud.smarthq.command.thermostat.v1.set',
485
+ }
486
+ };
487
+
488
+ this.sendCommand(cmdBody);
404
489
  } else {
405
490
  // Toggling active fan speed OFF powers down system
406
- if (this.lastActiveFanSpeed === speed) {
491
+ if (this.lastActiveFanSpeed === fanSpeedSetting) {
407
492
  this.isOn = false;
408
493
 
409
494
  for (const service of this.modeOutlets.values()) {
@@ -415,30 +500,39 @@ export class AirConditioner {
415
500
 
416
501
  this.acThermostat.updateCharacteristic(this.Characteristic.Active, 0);
417
502
  this.acThermostat.updateCharacteristic(this.Characteristic.CurrentHeaterCoolerState, 0);
503
+ const cmdBody: Record<string, unknown> = {
504
+ command: {
505
+ fanspeed: this.FAN_SPEED_OFF,
506
+ commandType: 'cloud.smarthq.command.thermostat.v1.set',
507
+ }
508
+ };
418
509
 
419
- this.sendCommand();
510
+ this.sendCommand(cmdBody);
420
511
  }
421
512
  }
422
513
  });
423
514
  }
424
515
  }
516
+
517
+ // D. Add Debug State switch to parent accessory
518
+ this.addDebugState('cloud.smarthq.service.thermostat.v1');
425
519
  }
426
520
 
427
521
  // ---------------------------
428
522
  // API COMMAND SENDER
429
523
  // ---------------------------
430
- private sendCommand() {
524
+ private sendCommand(cmdBody: Record<string, unknown>) {
431
525
  if (this.debounceTimeout) {
432
526
  clearTimeout(this.debounceTimeout);
433
527
  }
434
528
 
435
529
  this.debounceTimeout = setTimeout(() => {
436
530
  this.debounceTimeout = null;
437
- this.executeSendCommand();
531
+ this.executeSendCommand(cmdBody);
438
532
  }, 150);
439
533
  }
440
534
 
441
- private async executeSendCommand() {
535
+ private async executeSendCommand(command: Record<string, unknown>) {
442
536
  const service = this.findService(
443
537
  'cloud.smarthq.service.thermostat.v1',
444
538
  'cloud.smarthq.domain.thermostat',
@@ -447,9 +541,11 @@ export class AirConditioner {
447
541
  if (!service) return;
448
542
 
449
543
  this.commandQueue = this.commandQueue.then(async () => {
544
+ /*
450
545
  const command: Record<string, unknown> = {
451
546
  commandType: 'cloud.smarthq.command.thermostat.v1.set',
452
547
  };
548
+
453
549
 
454
550
  // Only send the 'on' parameter if it is transitioning (prevents GE firmware from resetting to ECO)
455
551
  if (!this.isOn) {
@@ -463,16 +559,16 @@ export class AirConditioner {
463
559
 
464
560
  // Handle behavior constraint: Fan Only mode does not support Auto Fan Speed
465
561
  if (
466
- this.lastActiveMode === 'cloud.smarthq.type.thermostatmode.fanonly' &&
467
- this.lastActiveFanSpeed === 'cloud.smarthq.type.fanspeed.auto'
562
+ this.lastActiveMode === this.MODE_FANONLY &&
563
+ this.lastActiveFanSpeed === this.FAN_SPEED_AUTO
468
564
  ) {
469
- command.fanSpeed = 'cloud.smarthq.type.fanspeed.low';
565
+ command.fanSpeed = this.FAN_SPEED_LOW;
470
566
  } else {
471
567
  command.fanSpeed = this.lastActiveFanSpeed;
472
568
  }
473
569
 
474
570
  // Omit coolFahrenheit in Fan Only mode (thermostat has no cooling setpoint)
475
- if (this.lastActiveMode !== 'cloud.smarthq.type.thermostatmode.fanonly') {
571
+ if (this.lastActiveMode !== this.MODE_FANONLY) {
476
572
  // Clip celsius to hardware bounds to prevent API errors
477
573
  const clippedCelsius = Math.max(
478
574
  this.coolCelsiusMin,
@@ -481,6 +577,7 @@ export class AirConditioner {
481
577
  command.coolFahrenheit = Math.round(clippedCelsius * 1.8 + 32);
482
578
  }
483
579
  }
580
+ */
484
581
 
485
582
  try {
486
583
  await this.client.sendCommand({
@@ -531,7 +628,7 @@ export class AirConditioner {
531
628
  // Update HeaterCooler state dynamically based on power and mode
532
629
  const stateVal = !this.isOn
533
630
  ? 0
534
- : (this.lastActiveMode === 'cloud.smarthq.type.thermostatmode.fanonly' ? 1 : 3);
631
+ : (this.lastActiveMode === this.MODE_FANONLY ? 1 : 3);
535
632
  this.acThermostat.updateCharacteristic(this.Characteristic.CurrentHeaterCoolerState, stateVal);
536
633
 
537
634
  // Update dynamic outlets
@@ -584,4 +681,69 @@ export class AirConditioner {
584
681
  );
585
682
  }
586
683
  }
684
+
685
+
686
+ // ---------------------------
687
+ // HELPERS FOR DEBUGGING
688
+ // Adds a 'Debug State' switch to the parent accessory that logs the current state of the specified service type when toggled on
689
+ // ---------------------------
690
+
691
+ private addDebugState(serviceType: string): void {
692
+ const debugState = this.setupService(
693
+ 'Switch',
694
+ 'Debug State',
695
+ `${this.deviceId}-debug-state`,
696
+ );
697
+
698
+ debugState
699
+ .getCharacteristic(this.Characteristic.On)
700
+ .onGet(() => {
701
+ return debugState.getCharacteristic(this.Characteristic.On).value as boolean;
702
+ })
703
+ .onSet(async (value) => {
704
+ if (value) {
705
+ const response = await this.client.getDevice(this.deviceId);
706
+ const deviceServices = response.services ?? [];
707
+ for (const service of deviceServices) {
708
+ if (service.serviceType === serviceType) {
709
+ this.client.debug('Debug State - Device Info: ' + JSON.stringify(service, null, 2));
710
+ }
711
+ }
712
+
713
+ setTimeout(() => {
714
+ debugState.updateCharacteristic(this.Characteristic.On, false);
715
+ }, 1000);
716
+ }
717
+ });
718
+ }
719
+
720
+ setupService(serviceType: string, displayName: string, serviceIdSuffix: string) {
721
+ let service: Service;
722
+
723
+ switch (serviceType) {
724
+ case 'Outlet':
725
+ service =
726
+ this.accessory.getService(displayName) ||
727
+ this.accessory.addService(this.Service.Outlet, displayName, serviceIdSuffix);
728
+ break;
729
+
730
+ case 'Switch':
731
+ service =
732
+ this.accessory.getService(displayName) ||
733
+ this.accessory.addService(this.Service.Switch, displayName, serviceIdSuffix);
734
+ break;
735
+
736
+ default:
737
+ this.client.debug('Unknown service type: ' + serviceType + '');
738
+ service =
739
+ this.accessory.getService(displayName) ||
740
+ this.accessory.addService(this.Service.Fan, displayName, serviceIdSuffix);
741
+ }
742
+
743
+ service.setCharacteristic(this.Characteristic.Name, displayName);
744
+ service.addOptionalCharacteristic(this.Characteristic.ConfiguredName);
745
+ service.setCharacteristic(this.Characteristic.ConfiguredName, displayName);
746
+
747
+ return service;
748
+ }
587
749
  }
package/src/platform.ts CHANGED
@@ -128,7 +128,7 @@ export class SmartHqPlatform implements DynamicPlatformPlugin {
128
128
  this.client.debug("No response from gettest command");
129
129
  return false;
130
130
  }
131
- this.log.info(chalk.green(`--- state response for ${service.serviceType}: ` + JSON.stringify(response, null, 2)));
131
+ this.log.info(chalk.yellow('Config = ' + JSON.stringify(response.config, null, 2)));
132
132
  } catch (error) {
133
133
  this.client.debug("Error getting test: " + error);
134
134
  return false;