trane-thermostat-api 1.0.0

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 (59) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +150 -0
  3. package/dist/client/auth.d.ts +50 -0
  4. package/dist/client/auth.d.ts.map +1 -0
  5. package/dist/client/auth.js +236 -0
  6. package/dist/client/auth.js.map +1 -0
  7. package/dist/client/nexia-client.d.ts +48 -0
  8. package/dist/client/nexia-client.d.ts.map +1 -0
  9. package/dist/client/nexia-client.js +311 -0
  10. package/dist/client/nexia-client.js.map +1 -0
  11. package/dist/devices/nexia-automation.d.ts +15 -0
  12. package/dist/devices/nexia-automation.d.ts.map +1 -0
  13. package/dist/devices/nexia-automation.js +39 -0
  14. package/dist/devices/nexia-automation.js.map +1 -0
  15. package/dist/devices/nexia-sensor.d.ts +34 -0
  16. package/dist/devices/nexia-sensor.d.ts.map +1 -0
  17. package/dist/devices/nexia-sensor.js +152 -0
  18. package/dist/devices/nexia-sensor.js.map +1 -0
  19. package/dist/devices/nexia-thermostat.d.ts +73 -0
  20. package/dist/devices/nexia-thermostat.d.ts.map +1 -0
  21. package/dist/devices/nexia-thermostat.js +357 -0
  22. package/dist/devices/nexia-thermostat.js.map +1 -0
  23. package/dist/devices/nexia-zone.d.ts +61 -0
  24. package/dist/devices/nexia-zone.d.ts.map +1 -0
  25. package/dist/devices/nexia-zone.js +370 -0
  26. package/dist/devices/nexia-zone.js.map +1 -0
  27. package/dist/index.d.ts +15 -0
  28. package/dist/index.d.ts.map +1 -0
  29. package/dist/index.js +41 -0
  30. package/dist/index.js.map +1 -0
  31. package/dist/types/api.d.ts +277 -0
  32. package/dist/types/api.d.ts.map +1 -0
  33. package/dist/types/api.js +3 -0
  34. package/dist/types/api.js.map +1 -0
  35. package/dist/types/constants.d.ts +137 -0
  36. package/dist/types/constants.d.ts.map +1 -0
  37. package/dist/types/constants.js +160 -0
  38. package/dist/types/constants.js.map +1 -0
  39. package/dist/types/interfaces.d.ts +211 -0
  40. package/dist/types/interfaces.d.ts.map +1 -0
  41. package/dist/types/interfaces.js +3 -0
  42. package/dist/types/interfaces.js.map +1 -0
  43. package/dist/utils/errors.d.ts +94 -0
  44. package/dist/utils/errors.d.ts.map +1 -0
  45. package/dist/utils/errors.js +231 -0
  46. package/dist/utils/errors.js.map +1 -0
  47. package/dist/utils/http-utils.d.ts +59 -0
  48. package/dist/utils/http-utils.d.ts.map +1 -0
  49. package/dist/utils/http-utils.js +273 -0
  50. package/dist/utils/http-utils.js.map +1 -0
  51. package/dist/utils/json-utils.d.ts +32 -0
  52. package/dist/utils/json-utils.d.ts.map +1 -0
  53. package/dist/utils/json-utils.js +389 -0
  54. package/dist/utils/json-utils.js.map +1 -0
  55. package/dist/utils/validation.d.ts +52 -0
  56. package/dist/utils/validation.d.ts.map +1 -0
  57. package/dist/utils/validation.js +272 -0
  58. package/dist/utils/validation.js.map +1 -0
  59. package/package.json +69 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nexia-thermostat.d.ts","sourceRoot":"","sources":["../../src/devices/nexia-thermostat.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,357 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.NexiaThermostat = void 0;
4
+ const constants_1 = require("../types/constants");
5
+ const nexia_zone_1 = require("./nexia-zone");
6
+ const validation_1 = require("../utils/validation");
7
+ const errors_1 = require("../utils/errors");
8
+ class NexiaThermostat {
9
+ constructor(client, data) {
10
+ this.zonesMap = new Map();
11
+ this.client = client;
12
+ this.data = data;
13
+ this.initializeZones();
14
+ }
15
+ get id() {
16
+ return String(this.data.id);
17
+ }
18
+ get name() {
19
+ return this.data.name || `Thermostat ${this.id}`;
20
+ }
21
+ get model() {
22
+ return this.data.model || 'Unknown';
23
+ }
24
+ get firmware() {
25
+ return this.data.firmware || 'Unknown';
26
+ }
27
+ get isOnline() {
28
+ return this.data.is_online !== false;
29
+ }
30
+ get temperatureUnit() {
31
+ const unit = this.data.settings?.temperature_unit;
32
+ return unit === constants_1.TemperatureUnit.CELSIUS ? constants_1.TemperatureUnit.CELSIUS : constants_1.TemperatureUnit.FAHRENHEIT;
33
+ }
34
+ get deadband() {
35
+ return this.data.settings?.deadband || 3;
36
+ }
37
+ get capabilities() {
38
+ const features = this.data.features || {};
39
+ return {
40
+ model: this.model,
41
+ firmware: this.firmware,
42
+ hasZones: features.has_zones || false,
43
+ hasOutdoorTemperature: features.has_outdoor_temperature || false,
44
+ hasRelativeHumidity: features.has_relative_humidity || false,
45
+ hasVariableSpeedCompressor: features.has_variable_speed_compressor || false,
46
+ hasEmergencyHeat: features.has_emergency_heat || false,
47
+ hasVariableFanSpeed: features.has_variable_fan_speed || false,
48
+ hasDehumidifySupport: features.has_dehumidify_support || false,
49
+ hasHumidifySupport: features.has_humidify_support || false,
50
+ hasAirCleaner: features.has_air_cleaner || false
51
+ };
52
+ }
53
+ get hasZones() {
54
+ return this.capabilities.hasZones;
55
+ }
56
+ get hasOutdoorTemperature() {
57
+ return this.capabilities.hasOutdoorTemperature;
58
+ }
59
+ get hasRelativeHumidity() {
60
+ return this.capabilities.hasRelativeHumidity;
61
+ }
62
+ get hasVariableSpeedCompressor() {
63
+ return this.capabilities.hasVariableSpeedCompressor;
64
+ }
65
+ get hasEmergencyHeat() {
66
+ return this.capabilities.hasEmergencyHeat;
67
+ }
68
+ get hasVariableFanSpeed() {
69
+ return this.capabilities.hasVariableFanSpeed;
70
+ }
71
+ get hasDehumidifySupport() {
72
+ return this.capabilities.hasDehumidifySupport;
73
+ }
74
+ get hasHumidifySupport() {
75
+ return this.capabilities.hasHumidifySupport;
76
+ }
77
+ get hasAirCleaner() {
78
+ return this.capabilities.hasAirCleaner;
79
+ }
80
+ get systemStatus() {
81
+ const settings = this.data.settings || {};
82
+ const status = this.parseSystemStatus(settings.system_status);
83
+ return {
84
+ systemStatus: status,
85
+ isOnline: this.isOnline,
86
+ isBlowerActive: this.isBlowerActive,
87
+ isEmergencyHeatActive: this.isEmergencyHeatActive,
88
+ currentCompressorSpeed: this.currentCompressorSpeed,
89
+ relativeHumidity: this.relativeHumidity,
90
+ outdoorTemperature: this.outdoorTemperature
91
+ };
92
+ }
93
+ get isBlowerActive() {
94
+ const status = this.parseSystemStatus(this.data.settings?.system_status);
95
+ return !constants_1.BLOWER_OFF_STATUSES.has(status);
96
+ }
97
+ get isEmergencyHeatActive() {
98
+ if (!this.hasEmergencyHeat) {
99
+ return false;
100
+ }
101
+ return this.data.settings?.emergency_heat_active || false;
102
+ }
103
+ get currentCompressorSpeed() {
104
+ if (!this.hasVariableSpeedCompressor) {
105
+ return 0;
106
+ }
107
+ return this.data.settings?.current_compressor_speed || 0;
108
+ }
109
+ get relativeHumidity() {
110
+ if (!this.hasRelativeHumidity) {
111
+ return null;
112
+ }
113
+ const humidity = this.data.settings?.relative_humidity;
114
+ return typeof humidity === 'number' ? humidity : null;
115
+ }
116
+ get outdoorTemperature() {
117
+ if (!this.hasOutdoorTemperature) {
118
+ return null;
119
+ }
120
+ const temp = this.data.settings?.outdoor_temperature;
121
+ return typeof temp === 'number' ? temp : null;
122
+ }
123
+ get setpointLimits() {
124
+ const limits = validation_1.TemperatureValidator.getTemperatureLimits(this.temperatureUnit);
125
+ return {
126
+ heatMin: limits.min,
127
+ heatMax: limits.max,
128
+ coolMin: limits.min,
129
+ coolMax: limits.max
130
+ };
131
+ }
132
+ get availableFanModes() {
133
+ return this.extractAvailableValues() || ['auto', 'on', 'circulate'];
134
+ }
135
+ get currentFanMode() {
136
+ return this.data.settings?.fan_mode || null;
137
+ }
138
+ get fanSpeedLimits() {
139
+ if (!this.hasVariableFanSpeed) {
140
+ return { min: 0, max: 1 };
141
+ }
142
+ return {
143
+ min: 0.0,
144
+ max: 1.0
145
+ };
146
+ }
147
+ get currentFanSpeed() {
148
+ if (!this.hasVariableFanSpeed) {
149
+ return 0;
150
+ }
151
+ return this.data.settings?.fan_speed || 0;
152
+ }
153
+ async setFanMode(mode) {
154
+ const validMode = validation_1.GeneralValidator.validateRequiredString(mode, 'fanMode');
155
+ if (!this.availableFanModes.includes(validMode)) {
156
+ throw new errors_1.ValidationError(`Invalid fan mode '${validMode}'. Available modes: ${this.availableFanModes.join(', ')}`, 'fanMode', validMode);
157
+ }
158
+ const endpoint = await this.getThermostatEndpoint('fan_mode');
159
+ await this.client.post(endpoint, { fan_mode: validMode });
160
+ await this.delayedUpdate();
161
+ }
162
+ async setFanSpeed(speed) {
163
+ if (!this.hasVariableFanSpeed) {
164
+ throw new errors_1.FeatureNotSupportedError('variable fan speed', this.model);
165
+ }
166
+ const validSpeed = validation_1.FanSpeedValidator.roundFanSpeed(speed);
167
+ validation_1.FanSpeedValidator.validateFanSpeed(validSpeed);
168
+ const endpoint = await this.getThermostatEndpoint('fan_speed');
169
+ await this.client.post(endpoint, { fan_speed: validSpeed });
170
+ await this.delayedUpdate();
171
+ }
172
+ async setFanOptions(options) {
173
+ const validOptions = this.validateFanOptions(options);
174
+ if (validOptions.mode !== undefined) {
175
+ await this.setFanMode(validOptions.mode);
176
+ }
177
+ if (validOptions.speed !== undefined) {
178
+ await this.setFanSpeed(validOptions.speed);
179
+ }
180
+ }
181
+ get humidifySetpoint() {
182
+ if (!this.hasHumidifySupport) {
183
+ return 0;
184
+ }
185
+ return this.data.settings?.humidify_setpoint || 0.35;
186
+ }
187
+ get dehumidifySetpoint() {
188
+ if (!this.hasDehumidifySupport) {
189
+ return 1;
190
+ }
191
+ return this.data.settings?.dehumidify_setpoint || 0.60;
192
+ }
193
+ get humiditySetpoints() {
194
+ return validation_1.HumidityValidator.getAvailableSetpoints();
195
+ }
196
+ get dehumidifySetpoints() {
197
+ return validation_1.HumidityValidator.getAvailableSetpoints();
198
+ }
199
+ async setHumiditySetpoints(options) {
200
+ validation_1.NexiaValidator.validateHumidityConfig(options);
201
+ if (options.humidify !== undefined) {
202
+ if (!this.hasHumidifySupport) {
203
+ throw new errors_1.FeatureNotSupportedError('humidify control', this.model);
204
+ }
205
+ await this.setHumidifySetpoint(options.humidify);
206
+ }
207
+ if (options.dehumidify !== undefined) {
208
+ if (!this.hasDehumidifySupport) {
209
+ throw new errors_1.FeatureNotSupportedError('dehumidify control', this.model);
210
+ }
211
+ await this.setDehumidifySetpoint(options.dehumidify);
212
+ }
213
+ }
214
+ async setDehumidifySetpoint(value) {
215
+ if (!this.hasDehumidifySupport) {
216
+ throw new errors_1.FeatureNotSupportedError('dehumidify control', this.model);
217
+ }
218
+ const validValue = validation_1.HumidityValidator.roundHumidity(value);
219
+ validation_1.HumidityValidator.validateHumiditySetpoint(validValue);
220
+ const endpoint = await this.getThermostatEndpoint('dehumidify');
221
+ await this.client.post(endpoint, { dehumidify_setpoint: validValue });
222
+ await this.delayedUpdate();
223
+ }
224
+ async setHumidifySetpoint(value) {
225
+ if (!this.hasHumidifySupport) {
226
+ throw new errors_1.FeatureNotSupportedError('humidify control', this.model);
227
+ }
228
+ const validValue = validation_1.HumidityValidator.roundHumidity(value);
229
+ validation_1.HumidityValidator.validateHumiditySetpoint(validValue);
230
+ const endpoint = await this.getThermostatEndpoint('humidify');
231
+ await this.client.post(endpoint, { humidify_setpoint: validValue });
232
+ await this.delayedUpdate();
233
+ }
234
+ get airCleanerMode() {
235
+ return this.data.settings?.air_cleaner_mode || null;
236
+ }
237
+ get availableAirCleanerModes() {
238
+ return [constants_1.AirCleanerMode.AUTO, constants_1.AirCleanerMode.QUICK, constants_1.AirCleanerMode.ALLERGY];
239
+ }
240
+ async setAirCleanerMode(mode) {
241
+ if (!this.hasAirCleaner) {
242
+ throw new errors_1.FeatureNotSupportedError('air cleaner', this.model);
243
+ }
244
+ const validMode = validation_1.GeneralValidator.validateEnum(mode, constants_1.AirCleanerMode, 'airCleanerMode');
245
+ const endpoint = await this.getThermostatEndpoint('air_cleaner_mode');
246
+ await this.client.post(endpoint, { air_cleaner_mode: validMode });
247
+ await this.delayedUpdate();
248
+ }
249
+ async setEmergencyHeat(enabled) {
250
+ if (!this.hasEmergencyHeat) {
251
+ throw new errors_1.FeatureNotSupportedError('emergency heat', this.model);
252
+ }
253
+ const validEnabled = validation_1.GeneralValidator.validateBoolean(enabled, 'enabled');
254
+ const endpoint = await this.getThermostatEndpoint('emergency_heat');
255
+ await this.client.post(endpoint, { emergency_heat: validEnabled });
256
+ await this.delayedUpdate();
257
+ }
258
+ async setFollowSchedule(follow) {
259
+ const validFollow = validation_1.GeneralValidator.validateBoolean(follow, 'follow');
260
+ const endpoint = await this.getThermostatEndpoint('scheduling_enabled');
261
+ await this.client.post(endpoint, { scheduling_enabled: validFollow });
262
+ await this.delayedUpdate();
263
+ }
264
+ get zones() {
265
+ return Array.from(this.zonesMap.values());
266
+ }
267
+ get zoneIds() {
268
+ return Array.from(this.zonesMap.keys());
269
+ }
270
+ getZoneById(zoneId) {
271
+ return this.zonesMap.get(zoneId);
272
+ }
273
+ async refresh() {
274
+ await this.client.update({ forceUpdate: true });
275
+ }
276
+ initializeZones() {
277
+ this.zonesMap.clear();
278
+ if (!this.data.zones) {
279
+ return;
280
+ }
281
+ for (const zoneData of this.data.zones) {
282
+ try {
283
+ const zone = new nexia_zone_1.NexiaZone(this.client, this, zoneData);
284
+ this.zonesMap.set(zone.id, zone);
285
+ }
286
+ catch (error) {
287
+ console.warn(`Failed to create zone ${zoneData.id}:`, error);
288
+ }
289
+ }
290
+ }
291
+ parseSystemStatus(status) {
292
+ if (!status) {
293
+ return constants_1.SystemStatus.OFF;
294
+ }
295
+ switch (status) {
296
+ case 'Cooling':
297
+ return constants_1.SystemStatus.COOLING;
298
+ case 'Heating':
299
+ return constants_1.SystemStatus.HEATING;
300
+ case 'Waiting...':
301
+ return constants_1.SystemStatus.WAITING;
302
+ case 'System Idle':
303
+ return constants_1.SystemStatus.IDLE;
304
+ case 'System Off':
305
+ return constants_1.SystemStatus.OFF;
306
+ default:
307
+ return constants_1.SystemStatus.IDLE;
308
+ }
309
+ }
310
+ extractAvailableValues() {
311
+ return null;
312
+ }
313
+ async getThermostatEndpoint(operation) {
314
+ const selfLink = this.data._links?.self?.href;
315
+ if (selfLink) {
316
+ return `${selfLink}/${operation}`;
317
+ }
318
+ return `${constants_1.API_ENDPOINTS.THERMOSTAT}/${this.id}/${operation}`;
319
+ }
320
+ validateFanOptions(options) {
321
+ const validated = {};
322
+ if (options.mode !== undefined) {
323
+ validated.mode = validation_1.GeneralValidator.validateRequiredString(options.mode, 'fanMode');
324
+ }
325
+ if (options.speed !== undefined) {
326
+ validation_1.FanSpeedValidator.validateFanSpeed(options.speed);
327
+ validated.speed = validation_1.FanSpeedValidator.roundFanSpeed(options.speed);
328
+ }
329
+ if (options.schedule !== undefined) {
330
+ validated.schedule = validation_1.GeneralValidator.validateBoolean(options.schedule, 'schedule');
331
+ }
332
+ return validated;
333
+ }
334
+ async delayedUpdate() {
335
+ await this.client.delayedUpdate(constants_1.API_CONSTANTS.UPDATE_DELAY_SECONDS * 1000);
336
+ }
337
+ getStatusSummary() {
338
+ return {
339
+ id: this.id,
340
+ name: this.name,
341
+ model: this.model,
342
+ firmware: this.firmware,
343
+ isOnline: this.isOnline,
344
+ temperatureUnit: this.temperatureUnit,
345
+ systemStatus: this.systemStatus,
346
+ capabilities: this.capabilities,
347
+ zones: this.zones.length,
348
+ currentFanMode: this.currentFanMode,
349
+ currentFanSpeed: this.currentFanSpeed,
350
+ airCleanerMode: this.airCleanerMode,
351
+ humidifySetpoint: this.humidifySetpoint,
352
+ dehumidifySetpoint: this.dehumidifySetpoint
353
+ };
354
+ }
355
+ }
356
+ exports.NexiaThermostat = NexiaThermostat;
357
+ //# sourceMappingURL=nexia-thermostat.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nexia-thermostat.js","sourceRoot":"","sources":["../../src/devices/nexia-thermostat.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,61 @@
1
+ import { ZoneData, ZoneStatusSummary, TemperatureOptions, HoldOptions, SensorSelectionOptions } from '../types/api';
2
+ import { INexiaZone, INexiaThermostat, INexiaSensor } from '../types/interfaces';
3
+ import { OperationMode, PresetMode } from '../types/constants';
4
+ import { NexiaClient } from '../client/nexia-client';
5
+ export declare class NexiaZone implements INexiaZone {
6
+ private readonly client;
7
+ private readonly thermostatRef;
8
+ private readonly data;
9
+ private readonly sensorsMap;
10
+ constructor(client: NexiaClient, thermostat: INexiaThermostat, data: ZoneData);
11
+ get id(): string;
12
+ get name(): string;
13
+ get isNativeZone(): boolean;
14
+ get currentTemperature(): number;
15
+ get heatingSetpoint(): number;
16
+ get coolingSetpoint(): number;
17
+ get currentMode(): OperationMode;
18
+ get requestedMode(): OperationMode;
19
+ get availableModes(): OperationMode[];
20
+ setMode(mode: OperationMode): Promise<void>;
21
+ setTemperatures(options: TemperatureOptions): Promise<void>;
22
+ setHeatingSetpoint(temperature: number): Promise<void>;
23
+ setCoolingSetpoint(temperature: number): Promise<void>;
24
+ get status(): ZoneStatusSummary;
25
+ get isCalling(): boolean;
26
+ get setpointStatus(): string;
27
+ get isInPermanentHold(): boolean;
28
+ setPermanentHold(options?: HoldOptions): Promise<void>;
29
+ returnToSchedule(): Promise<void>;
30
+ get availablePresets(): PresetMode[];
31
+ get currentPreset(): PresetMode | null;
32
+ setPreset(preset: PresetMode): Promise<void>;
33
+ get sensors(): INexiaSensor[];
34
+ get activeSensorIds(): Set<number>;
35
+ get sensorIds(): number[];
36
+ getSensorById(sensorId: number): INexiaSensor | undefined;
37
+ selectActiveSensors(options: SensorSelectionOptions): Promise<void>;
38
+ loadCurrentSensorState(): Promise<void>;
39
+ get thermostat(): INexiaThermostat;
40
+ validateTemperatureSetpoints(heatTemp: number, coolTemp: number): boolean;
41
+ roundTemperature(temperature: number): number;
42
+ private initializeSensors;
43
+ private parseOperationMode;
44
+ private parseZoneStatus;
45
+ private parsePresetMode;
46
+ private getZoneEndpoint;
47
+ private delayedUpdate;
48
+ private delay;
49
+ private setsAreEqual;
50
+ getStatusSummary(): Record<string, any>;
51
+ setTemporaryHold(temperatures: TemperatureOptions, durationMinutes?: number): Promise<void>;
52
+ setHome(): Promise<void>;
53
+ setAway(): Promise<void>;
54
+ setSleep(): Promise<void>;
55
+ getTemperatureDifference(): {
56
+ fromHeating: number;
57
+ fromCooling: number;
58
+ };
59
+ isAtDesiredTemperature(tolerance?: number): boolean;
60
+ }
61
+ //# sourceMappingURL=nexia-zone.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nexia-zone.d.ts","sourceRoot":"","sources":["../../src/devices/nexia-zone.ts"],"names":[],"mappings":"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"}