homebridge-smarthq-client 1.2.5-debug.0 → 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.
@@ -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;
@@ -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,7 +405,13 @@ 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
  });
@@ -343,47 +423,57 @@ export class AirConditioner {
343
423
  // ---------------------------
344
424
  // API COMMAND SENDER
345
425
  // ---------------------------
346
- sendCommand() {
426
+ sendCommand(cmdBody) {
347
427
  if (this.debounceTimeout) {
348
428
  clearTimeout(this.debounceTimeout);
349
429
  }
350
430
  this.debounceTimeout = setTimeout(() => {
351
431
  this.debounceTimeout = null;
352
- this.executeSendCommand();
432
+ this.executeSendCommand(cmdBody);
353
433
  }, 150);
354
434
  }
355
- async executeSendCommand() {
435
+ async executeSendCommand(command) {
356
436
  const service = this.findService('cloud.smarthq.service.thermostat.v1', 'cloud.smarthq.domain.thermostat');
357
437
  if (!service)
358
438
  return;
359
439
  this.commandQueue = this.commandQueue.then(async () => {
360
- const command = {
361
- commandType: 'cloud.smarthq.command.thermostat.v1.set',
440
+ /*
441
+ const command: Record<string, unknown> = {
442
+ commandType: 'cloud.smarthq.command.thermostat.v1.set',
362
443
  };
444
+
445
+
363
446
  // Only send the 'on' parameter if it is transitioning (prevents GE firmware from resetting to ECO)
364
447
  if (!this.isOn) {
365
- command.on = false;
366
- }
367
- else if (!this.physicalOnState) {
368
- command.on = true;
448
+ command.on = false;
449
+ } else if (!this.physicalOnState) {
450
+ command.on = true;
369
451
  }
452
+
370
453
  if (this.isOn) {
371
- command.mode = this.lastActiveMode;
372
- // Handle behavior constraint: Fan Only mode does not support Auto Fan Speed
373
- if (this.lastActiveMode === 'cloud.smarthq.type.thermostatmode.fanonly' &&
374
- this.lastActiveFanSpeed === 'cloud.smarthq.type.fanspeed.auto') {
375
- command.fanSpeed = 'cloud.smarthq.type.fanspeed.low';
376
- }
377
- else {
378
- command.fanSpeed = this.lastActiveFanSpeed;
379
- }
380
- // Omit coolFahrenheit in Fan Only mode (thermostat has no cooling setpoint)
381
- if (this.lastActiveMode !== 'cloud.smarthq.type.thermostatmode.fanonly') {
382
- // Clip celsius to hardware bounds to prevent API errors
383
- const clippedCelsius = Math.max(this.coolCelsiusMin, Math.min(this.coolCelsiusMax, this.lastActiveCelsius));
384
- command.coolFahrenheit = Math.round(clippedCelsius * 1.8 + 32);
385
- }
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
+ }
386
475
  }
476
+ */
387
477
  try {
388
478
  await this.client.sendCommand({
389
479
  command,
@@ -428,7 +518,7 @@ export class AirConditioner {
428
518
  // Update HeaterCooler state dynamically based on power and mode
429
519
  const stateVal = !this.isOn
430
520
  ? 0
431
- : (this.lastActiveMode === 'cloud.smarthq.type.thermostatmode.fanonly' ? 1 : 3);
521
+ : (this.lastActiveMode === this.MODE_FANONLY ? 1 : 3);
432
522
  this.acThermostat.updateCharacteristic(this.Characteristic.CurrentHeaterCoolerState, stateVal);
433
523
  // Update dynamic outlets
434
524
  for (const [mode, service] of this.modeOutlets.entries()) {
@@ -473,10 +563,10 @@ export class AirConditioner {
473
563
  }
474
564
  // ---------------------------
475
565
  // HELPERS FOR DEBUGGING
476
- // Adds a "Debug State" switch to the parent accessory that logs the current state of the specified service type when toggled on
566
+ // Adds a 'Debug State' switch to the parent accessory that logs the current state of the specified service type when toggled on
477
567
  // ---------------------------
478
568
  addDebugState(serviceType) {
479
- const debugState = this.setupService("Switch", "Debug State", `${this.deviceId}-debug-state`);
569
+ const debugState = this.setupService('Switch', 'Debug State', `${this.deviceId}-debug-state`);
480
570
  debugState
481
571
  .getCharacteristic(this.Characteristic.On)
482
572
  .onGet(() => {
@@ -488,7 +578,7 @@ export class AirConditioner {
488
578
  const deviceServices = response.services ?? [];
489
579
  for (const service of deviceServices) {
490
580
  if (service.serviceType === serviceType) {
491
- this.client.debug("Debug State - Device Info: " + JSON.stringify(service, null, 2));
581
+ this.client.debug('Debug State - Device Info: ' + JSON.stringify(service, null, 2));
492
582
  }
493
583
  }
494
584
  setTimeout(() => {
@@ -500,18 +590,18 @@ export class AirConditioner {
500
590
  setupService(serviceType, displayName, serviceIdSuffix) {
501
591
  let service;
502
592
  switch (serviceType) {
503
- case "Outlet":
593
+ case 'Outlet':
504
594
  service =
505
595
  this.accessory.getService(displayName) ||
506
596
  this.accessory.addService(this.Service.Outlet, displayName, serviceIdSuffix);
507
597
  break;
508
- case "Switch":
598
+ case 'Switch':
509
599
  service =
510
600
  this.accessory.getService(displayName) ||
511
601
  this.accessory.addService(this.Service.Switch, displayName, serviceIdSuffix);
512
602
  break;
513
603
  default:
514
- this.client.debug("Unknown service type: " + serviceType + "");
604
+ this.client.debug('Unknown service type: ' + serviceType + '');
515
605
  service =
516
606
  this.accessory.getService(displayName) ||
517
607
  this.accessory.addService(this.Service.Fan, displayName, serviceIdSuffix);
@@ -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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "homebridge-smarthq-client",
3
- "version": "1.2.5-debug.0",
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
 
@@ -168,7 +186,7 @@ export class AirConditioner {
168
186
  this.isOn = (value as number) === 1;
169
187
 
170
188
  if (this.isOn) {
171
- const stateVal = this.lastActiveMode === 'cloud.smarthq.type.thermostatmode.fanonly' ? 1 : 3;
189
+ const stateVal = this.lastActiveMode === this.MODE_FANONLY ? 1 : 3;
172
190
  this.acThermostat.updateCharacteristic(this.Characteristic.CurrentHeaterCoolerState, stateVal);
173
191
  for (const [mode, service] of this.modeOutlets.entries()) {
174
192
  service.updateCharacteristic(this.Characteristic.On, this.lastActiveMode === mode);
@@ -185,15 +203,21 @@ export class AirConditioner {
185
203
  service.updateCharacteristic(this.Characteristic.On, false);
186
204
  }
187
205
  }
206
+ const cmdBody = {
207
+ command: {
208
+ on: this.isOn,
209
+ commandType: 'cloud.smarthq.command.thermostat.v1.set',
210
+ }
211
+ };
188
212
 
189
- this.sendCommand();
213
+ this.sendCommand(cmdBody);
190
214
  });
191
215
 
192
216
  this.acThermostat
193
217
  .getCharacteristic(this.Characteristic.CurrentHeaterCoolerState)
194
- .onGet(() => {
218
+ .onGet(() => {
195
219
  if (!this.isOn) return 0;
196
- return this.lastActiveMode === 'cloud.smarthq.type.thermostatmode.fanonly' ? 1 : 3;
220
+ return this.lastActiveMode === this.MODE_FANONLY ? 1 : 3;
197
221
  });
198
222
 
199
223
  this.acThermostat
@@ -214,7 +238,21 @@ export class AirConditioner {
214
238
  .onGet(() => this.lastActiveCelsius)
215
239
  .onSet(async (value) => {
216
240
  this.lastActiveCelsius = value as number;
217
- 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);
218
256
  });
219
257
 
220
258
  this.acThermostat
@@ -285,14 +323,46 @@ export class AirConditioner {
285
323
  }
286
324
 
287
325
  this.acThermostat.updateCharacteristic(this.Characteristic.Active, 1);
288
- const stateVal = mode === 'cloud.smarthq.type.thermostatmode.fanonly' ? 1 : 3;
326
+ const stateVal = mode === this.MODE_FANONLY ? 1 : 3;
289
327
  this.acThermostat.updateCharacteristic(this.Characteristic.CurrentHeaterCoolerState, stateVal);
290
328
 
291
329
  for (const [fanSpeed, service] of this.fanOutlets.entries()) {
292
330
  service.updateCharacteristic(this.Characteristic.On, this.lastActiveFanSpeed === fanSpeed);
293
331
  }
294
332
 
295
- 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);
296
366
  } else {
297
367
  // Toggling active mode OFF powers down system
298
368
  if (this.lastActiveMode === mode) {
@@ -301,14 +371,21 @@ export class AirConditioner {
301
371
  for (const service of this.modeOutlets.values()) {
302
372
  service.updateCharacteristic(this.Characteristic.On, false);
303
373
  }
304
- for (const service of this.fanOutlets.values()) {
374
+ for (const service of this.fanOutlets.values()) {
305
375
  service.updateCharacteristic(this.Characteristic.On, false);
306
376
  }
307
377
 
308
378
  this.acThermostat.updateCharacteristic(this.Characteristic.Active, 0);
309
379
  this.acThermostat.updateCharacteristic(this.Characteristic.CurrentHeaterCoolerState, 0);
310
380
 
311
- 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);
312
389
  }
313
390
  }
314
391
  });
@@ -331,11 +408,11 @@ export class AirConditioner {
331
408
 
332
409
  // Clean up stale Fan Speed outlets from cache
333
410
  const activeFanServiceUUIDs = new Set<string>();
334
- for (const speed of supportedFanSpeeds) {
335
- const [displayName] = this.getLastElementAndCapitalize(speed, '.');
411
+ for (const fanSpeedSetting of supportedFanSpeeds) {
412
+ const [displayName] = this.getLastElementAndCapitalize(fanSpeedSetting, '.');
336
413
  const service =
337
414
  this.fanAccessory.getService(displayName) ||
338
- this.fanAccessory.addService(this.Service.Outlet, displayName, speed);
415
+ this.fanAccessory.addService(this.Service.Outlet, displayName, fanSpeedSetting);
339
416
 
340
417
  if (!service.getCharacteristic(this.Characteristic.ConfiguredName)) {
341
418
  service.addOptionalCharacteristic(this.Characteristic.ConfiguredName);
@@ -343,7 +420,7 @@ export class AirConditioner {
343
420
  service.setCharacteristic(this.Characteristic.Name, displayName);
344
421
  service.setCharacteristic(this.Characteristic.ConfiguredName, displayName);
345
422
 
346
- activeFanServiceUUIDs.add(service.UUID + (speed || ''));
423
+ activeFanServiceUUIDs.add(service.UUID + (fanSpeedSetting || ''));
347
424
  }
348
425
 
349
426
  for (const service of [...this.fanAccessory.services]) {
@@ -358,21 +435,21 @@ export class AirConditioner {
358
435
  }
359
436
 
360
437
  // Bind Fan Speed Outlets characteristics
361
- for (const speed of supportedFanSpeeds) {
362
- const [displayName] = this.getLastElementAndCapitalize(speed, '.');
438
+ for (const fanSpeedSetting of supportedFanSpeeds) {
439
+ const [displayName] = this.getLastElementAndCapitalize(fanSpeedSetting, '.');
363
440
  const service = this.fanAccessory.getService(displayName)!;
364
441
 
365
- this.fanOutlets.set(speed, service);
442
+ this.fanOutlets.set(fanSpeedSetting, service);
366
443
 
367
444
  service
368
445
  .getCharacteristic(this.Characteristic.On)
369
- .onGet(() => this.isOn && this.lastActiveFanSpeed === speed)
446
+ .onGet(() => this.isOn && this.lastActiveFanSpeed === fanSpeedSetting)
370
447
  .onSet(async (value) => {
371
448
  if (value) {
372
449
  // Handle behavior constraint: Fan Only mode does not support Auto Fan Speed
373
450
  if (
374
- this.lastActiveMode === 'cloud.smarthq.type.thermostatmode.fanonly' &&
375
- speed === 'cloud.smarthq.type.fanspeed.auto'
451
+ this.lastActiveMode === this.MODE_FANONLY &&
452
+ fanSpeedSetting === this.FAN_SPEED_AUTO
376
453
  ) {
377
454
  setTimeout(() => {
378
455
  service.updateCharacteristic(this.Characteristic.On, false);
@@ -385,26 +462,33 @@ export class AirConditioner {
385
462
  }
386
463
 
387
464
  this.isOn = true;
388
- this.lastActiveFanSpeed = speed;
465
+ this.lastActiveFanSpeed = fanSpeedSetting;
389
466
 
390
467
  for (const [fanSpeed, service] of this.fanOutlets.entries()) {
391
- if (fanSpeed !== speed) {
468
+ if (fanSpeed !== fanSpeedSetting) {
392
469
  service.updateCharacteristic(this.Characteristic.On, false);
393
470
  }
394
471
  }
395
472
 
396
473
  this.acThermostat.updateCharacteristic(this.Characteristic.Active, 1);
397
- const stateVal = this.lastActiveMode === 'cloud.smarthq.type.thermostatmode.fanonly' ? 1 : 3;
474
+ const stateVal = this.lastActiveMode === this.MODE_FANONLY ? 1 : 3;
398
475
  this.acThermostat.updateCharacteristic(this.Characteristic.CurrentHeaterCoolerState, stateVal);
399
476
 
400
477
  for (const [modeKey, service] of this.modeOutlets.entries()) {
401
478
  service.updateCharacteristic(this.Characteristic.On, this.lastActiveMode === modeKey);
402
479
  }
403
480
 
404
- 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);
405
489
  } else {
406
490
  // Toggling active fan speed OFF powers down system
407
- if (this.lastActiveFanSpeed === speed) {
491
+ if (this.lastActiveFanSpeed === fanSpeedSetting) {
408
492
  this.isOn = false;
409
493
 
410
494
  for (const service of this.modeOutlets.values()) {
@@ -416,8 +500,14 @@ export class AirConditioner {
416
500
 
417
501
  this.acThermostat.updateCharacteristic(this.Characteristic.Active, 0);
418
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
+ };
419
509
 
420
- this.sendCommand();
510
+ this.sendCommand(cmdBody);
421
511
  }
422
512
  }
423
513
  });
@@ -431,18 +521,18 @@ export class AirConditioner {
431
521
  // ---------------------------
432
522
  // API COMMAND SENDER
433
523
  // ---------------------------
434
- private sendCommand() {
524
+ private sendCommand(cmdBody: Record<string, unknown>) {
435
525
  if (this.debounceTimeout) {
436
526
  clearTimeout(this.debounceTimeout);
437
527
  }
438
528
 
439
529
  this.debounceTimeout = setTimeout(() => {
440
530
  this.debounceTimeout = null;
441
- this.executeSendCommand();
531
+ this.executeSendCommand(cmdBody);
442
532
  }, 150);
443
533
  }
444
534
 
445
- private async executeSendCommand() {
535
+ private async executeSendCommand(command: Record<string, unknown>) {
446
536
  const service = this.findService(
447
537
  'cloud.smarthq.service.thermostat.v1',
448
538
  'cloud.smarthq.domain.thermostat',
@@ -451,9 +541,11 @@ export class AirConditioner {
451
541
  if (!service) return;
452
542
 
453
543
  this.commandQueue = this.commandQueue.then(async () => {
544
+ /*
454
545
  const command: Record<string, unknown> = {
455
546
  commandType: 'cloud.smarthq.command.thermostat.v1.set',
456
547
  };
548
+
457
549
 
458
550
  // Only send the 'on' parameter if it is transitioning (prevents GE firmware from resetting to ECO)
459
551
  if (!this.isOn) {
@@ -467,16 +559,16 @@ export class AirConditioner {
467
559
 
468
560
  // Handle behavior constraint: Fan Only mode does not support Auto Fan Speed
469
561
  if (
470
- this.lastActiveMode === 'cloud.smarthq.type.thermostatmode.fanonly' &&
471
- this.lastActiveFanSpeed === 'cloud.smarthq.type.fanspeed.auto'
562
+ this.lastActiveMode === this.MODE_FANONLY &&
563
+ this.lastActiveFanSpeed === this.FAN_SPEED_AUTO
472
564
  ) {
473
- command.fanSpeed = 'cloud.smarthq.type.fanspeed.low';
565
+ command.fanSpeed = this.FAN_SPEED_LOW;
474
566
  } else {
475
567
  command.fanSpeed = this.lastActiveFanSpeed;
476
568
  }
477
569
 
478
570
  // Omit coolFahrenheit in Fan Only mode (thermostat has no cooling setpoint)
479
- if (this.lastActiveMode !== 'cloud.smarthq.type.thermostatmode.fanonly') {
571
+ if (this.lastActiveMode !== this.MODE_FANONLY) {
480
572
  // Clip celsius to hardware bounds to prevent API errors
481
573
  const clippedCelsius = Math.max(
482
574
  this.coolCelsiusMin,
@@ -485,6 +577,7 @@ export class AirConditioner {
485
577
  command.coolFahrenheit = Math.round(clippedCelsius * 1.8 + 32);
486
578
  }
487
579
  }
580
+ */
488
581
 
489
582
  try {
490
583
  await this.client.sendCommand({
@@ -535,7 +628,7 @@ export class AirConditioner {
535
628
  // Update HeaterCooler state dynamically based on power and mode
536
629
  const stateVal = !this.isOn
537
630
  ? 0
538
- : (this.lastActiveMode === 'cloud.smarthq.type.thermostatmode.fanonly' ? 1 : 3);
631
+ : (this.lastActiveMode === this.MODE_FANONLY ? 1 : 3);
539
632
  this.acThermostat.updateCharacteristic(this.Characteristic.CurrentHeaterCoolerState, stateVal);
540
633
 
541
634
  // Update dynamic outlets
@@ -592,13 +685,13 @@ export class AirConditioner {
592
685
 
593
686
  // ---------------------------
594
687
  // HELPERS FOR DEBUGGING
595
- // Adds a "Debug State" switch to the parent accessory that logs the current state of the specified service type when toggled on
688
+ // Adds a 'Debug State' switch to the parent accessory that logs the current state of the specified service type when toggled on
596
689
  // ---------------------------
597
690
 
598
691
  private addDebugState(serviceType: string): void {
599
692
  const debugState = this.setupService(
600
- "Switch",
601
- "Debug State",
693
+ 'Switch',
694
+ 'Debug State',
602
695
  `${this.deviceId}-debug-state`,
603
696
  );
604
697
 
@@ -613,7 +706,7 @@ export class AirConditioner {
613
706
  const deviceServices = response.services ?? [];
614
707
  for (const service of deviceServices) {
615
708
  if (service.serviceType === serviceType) {
616
- this.client.debug("Debug State - Device Info: " + JSON.stringify(service, null, 2));
709
+ this.client.debug('Debug State - Device Info: ' + JSON.stringify(service, null, 2));
617
710
  }
618
711
  }
619
712
 
@@ -628,20 +721,20 @@ export class AirConditioner {
628
721
  let service: Service;
629
722
 
630
723
  switch (serviceType) {
631
- case "Outlet":
724
+ case 'Outlet':
632
725
  service =
633
726
  this.accessory.getService(displayName) ||
634
727
  this.accessory.addService(this.Service.Outlet, displayName, serviceIdSuffix);
635
728
  break;
636
729
 
637
- case "Switch":
730
+ case 'Switch':
638
731
  service =
639
732
  this.accessory.getService(displayName) ||
640
733
  this.accessory.addService(this.Service.Switch, displayName, serviceIdSuffix);
641
734
  break;
642
735
 
643
736
  default:
644
- this.client.debug("Unknown service type: " + serviceType + "");
737
+ this.client.debug('Unknown service type: ' + serviceType + '');
645
738
  service =
646
739
  this.accessory.getService(displayName) ||
647
740
  this.accessory.addService(this.Service.Fan, displayName, serviceIdSuffix);