trane-thermostat-api 1.0.1 → 1.0.2

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 (38) hide show
  1. package/README.md +11 -20
  2. package/dist/client/auth.d.ts.map +1 -1
  3. package/dist/client/auth.js +27 -13
  4. package/dist/client/auth.js.map +1 -1
  5. package/dist/client/trane-client.d.ts +49 -0
  6. package/dist/client/trane-client.d.ts.map +1 -0
  7. package/dist/client/trane-client.js +332 -0
  8. package/dist/client/trane-client.js.map +1 -0
  9. package/dist/devices/trane-automation.d.ts +15 -0
  10. package/dist/devices/trane-automation.d.ts.map +1 -0
  11. package/dist/devices/trane-automation.js +39 -0
  12. package/dist/devices/trane-automation.js.map +1 -0
  13. package/dist/devices/trane-sensor.d.ts +34 -0
  14. package/dist/devices/trane-sensor.d.ts.map +1 -0
  15. package/dist/devices/trane-sensor.js +152 -0
  16. package/dist/devices/trane-sensor.js.map +1 -0
  17. package/dist/devices/trane-thermostat.d.ts +74 -0
  18. package/dist/devices/trane-thermostat.d.ts.map +1 -0
  19. package/dist/devices/trane-thermostat.js +457 -0
  20. package/dist/devices/trane-thermostat.js.map +1 -0
  21. package/dist/devices/trane-zone.d.ts +61 -0
  22. package/dist/devices/trane-zone.d.ts.map +1 -0
  23. package/dist/devices/trane-zone.js +370 -0
  24. package/dist/devices/trane-zone.js.map +1 -0
  25. package/dist/index.d.ts +5 -5
  26. package/dist/index.js +11 -11
  27. package/dist/types/api.d.ts +36 -6
  28. package/dist/types/api.d.ts.map +1 -1
  29. package/dist/types/constants.d.ts +2 -5
  30. package/dist/types/constants.d.ts.map +1 -1
  31. package/dist/types/constants.js +3 -6
  32. package/dist/types/constants.js.map +1 -1
  33. package/dist/types/interfaces.d.ts +18 -18
  34. package/dist/utils/errors.d.ts +13 -13
  35. package/dist/utils/errors.js +21 -21
  36. package/dist/utils/validation.d.ts +1 -1
  37. package/dist/utils/validation.js +3 -3
  38. package/package.json +2 -5
@@ -0,0 +1,39 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TraneAutomation = void 0;
4
+ const validation_1 = require("../utils/validation");
5
+ const errors_1 = require("../utils/errors");
6
+ class TraneAutomation {
7
+ constructor(client, data) {
8
+ this.client = client;
9
+ this.data = data;
10
+ }
11
+ get id() {
12
+ return String(this.data.id);
13
+ }
14
+ get name() {
15
+ return this.data.name || 'Unknown Automation';
16
+ }
17
+ get description() {
18
+ return this.data.description || '';
19
+ }
20
+ get enabled() {
21
+ return this.data.enabled || false;
22
+ }
23
+ async setEnabled(enabled) {
24
+ const validEnabled = validation_1.GeneralValidator.validateBoolean(enabled, 'enabled');
25
+ if (!this.data._links?.self?.href) {
26
+ throw new errors_1.DeviceNotFoundError('Automation endpoint not available', this.id, 'automation');
27
+ }
28
+ await this.client.put(this.data._links.self.href, { enabled: validEnabled });
29
+ }
30
+ async activate() {
31
+ if (!this.data._links?.self?.href) {
32
+ throw new errors_1.DeviceNotFoundError('Automation endpoint not available', this.id, 'automation');
33
+ }
34
+ const activateUrl = `${this.data._links.self.href}/activate`;
35
+ await this.client.post(activateUrl, {});
36
+ }
37
+ }
38
+ exports.TraneAutomation = TraneAutomation;
39
+ //# sourceMappingURL=trane-automation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trane-automation.js","sourceRoot":"","sources":["../../src/devices/trane-automation.ts"],"names":[],"mappings":";;;AAQA,oDAAuD;AACvD,4CAAsD;AAEtD,MAAa,eAAe;IAI1B,YAAY,MAAmB,EAAE,IAAoB;QACnD,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;IAGD,IAAW,EAAE;QACX,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC9B,CAAC;IAED,IAAW,IAAI;QACb,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,oBAAoB,CAAC;IAChD,CAAC;IAED,IAAW,WAAW;QACpB,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,IAAI,EAAE,CAAC;IACrC,CAAC;IAGD,IAAW,OAAO;QAChB,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,KAAK,CAAC;IACpC,CAAC;IAEM,KAAK,CAAC,UAAU,CAAC,OAAgB;QACtC,MAAM,YAAY,GAAG,6BAAgB,CAAC,eAAe,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;QAE1E,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;YAClC,MAAM,IAAI,4BAAmB,CAAC,mCAAmC,EAAE,IAAI,CAAC,EAAE,EAAE,YAAY,CAAC,CAAC;QAC5F,CAAC;QAID,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,OAAO,EAAE,YAAY,EAAE,CAAC,CAAC;IAC/E,CAAC;IAGM,KAAK,CAAC,QAAQ;QACnB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;YAClC,MAAM,IAAI,4BAAmB,CAAC,mCAAmC,EAAE,IAAI,CAAC,EAAE,EAAE,YAAY,CAAC,CAAC;QAC5F,CAAC;QAID,MAAM,WAAW,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,WAAW,CAAC;QAC7D,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;IAC1C,CAAC;CACF;AAlDD,0CAkDC"}
@@ -0,0 +1,34 @@
1
+ import { SensorData } from '../types/api';
2
+ import { ITraneSensor } from '../types/interfaces';
3
+ import { SensorType } from '../types/constants';
4
+ export declare class TraneSensor implements ITraneSensor {
5
+ private readonly data;
6
+ constructor(data: SensorData);
7
+ get id(): number;
8
+ get name(): string;
9
+ get type(): SensorType;
10
+ get serialNumber(): string;
11
+ get weight(): number;
12
+ get isActive(): boolean;
13
+ get isConnected(): boolean | null;
14
+ get temperature(): number;
15
+ get temperatureValid(): boolean;
16
+ get humidity(): number;
17
+ get humidityValid(): boolean;
18
+ get hasBattery(): boolean;
19
+ get batteryLevel(): number | null;
20
+ get batteryLow(): boolean | null;
21
+ get batteryValid(): boolean | null;
22
+ get batteryStatus(): 'good' | 'low' | 'critical' | 'unknown';
23
+ get hasOnlineStatus(): boolean;
24
+ getStatusSummary(): Record<string, any>;
25
+ isDataValid(): boolean;
26
+ getDescription(): string;
27
+ static compare(a: ITraneSensor, b: ITraneSensor): number;
28
+ static filterActive(sensors: ITraneSensor[]): ITraneSensor[];
29
+ static filterConnected(sensors: ITraneSensor[]): ITraneSensor[];
30
+ static filterValidData(sensors: ITraneSensor[]): ITraneSensor[];
31
+ static filterBatteryPowered(sensors: ITraneSensor[]): ITraneSensor[];
32
+ static getLowBatterySensors(sensors: ITraneSensor[]): ITraneSensor[];
33
+ }
34
+ //# sourceMappingURL=trane-sensor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trane-sensor.d.ts","sourceRoot":"","sources":["../../src/devices/trane-sensor.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,UAAU,EAAsB,MAAM,oBAAoB,CAAC;AAEpE,qBAAa,WAAY,YAAW,YAAY;IAC9C,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAa;gBAEtB,IAAI,EAAE,UAAU;IAK5B,IAAW,EAAE,IAAI,MAAM,CAEtB;IAED,IAAW,IAAI,IAAI,MAAM,CAExB;IAED,IAAW,IAAI,IAAI,UAAU,CAU5B;IAED,IAAW,YAAY,IAAI,MAAM,CAEhC;IAGD,IAAW,MAAM,IAAI,MAAM,CAE1B;IAED,IAAW,QAAQ,IAAI,OAAO,CAE7B;IAED,IAAW,WAAW,IAAI,OAAO,GAAG,IAAI,CAEvC;IAGD,IAAW,WAAW,IAAI,MAAM,CAE/B;IAED,IAAW,gBAAgB,IAAI,OAAO,CAErC;IAGD,IAAW,QAAQ,IAAI,MAAM,CAE5B;IAED,IAAW,aAAa,IAAI,OAAO,CAElC;IAGD,IAAW,UAAU,IAAI,OAAO,CAE/B;IAED,IAAW,YAAY,IAAI,MAAM,GAAG,IAAI,CAKvC;IAED,IAAW,UAAU,IAAI,OAAO,GAAG,IAAI,CAKtC;IAED,IAAW,YAAY,IAAI,OAAO,GAAG,IAAI,CAKxC;IAED,IAAW,aAAa,IAAI,MAAM,GAAG,KAAK,GAAG,UAAU,GAAG,SAAS,CAclE;IAGD,IAAW,eAAe,IAAI,OAAO,CAEpC;IAKM,gBAAgB,IAAI,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IAsBvC,WAAW,IAAI,OAAO;IAWtB,cAAc,IAAI,MAAM;WAyBjB,OAAO,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,YAAY,GAAG,MAAM;WAYjD,YAAY,CAAC,OAAO,EAAE,YAAY,EAAE,GAAG,YAAY,EAAE;WAIrD,eAAe,CAAC,OAAO,EAAE,YAAY,EAAE,GAAG,YAAY,EAAE;WAIxD,eAAe,CAAC,OAAO,EAAE,YAAY,EAAE,GAAG,YAAY,EAAE;WAIxD,oBAAoB,CAAC,OAAO,EAAE,YAAY,EAAE,GAAG,YAAY,EAAE;WAO7D,oBAAoB,CAAC,OAAO,EAAE,YAAY,EAAE,GAAG,YAAY,EAAE;CAM5E"}
@@ -0,0 +1,152 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TraneSensor = void 0;
4
+ const constants_1 = require("../types/constants");
5
+ class TraneSensor {
6
+ constructor(data) {
7
+ this.data = data;
8
+ }
9
+ get id() {
10
+ return this.data.id;
11
+ }
12
+ get name() {
13
+ return this.data.name || 'Unknown Sensor';
14
+ }
15
+ get type() {
16
+ switch (this.data.type?.toLowerCase()) {
17
+ case 'roomiq':
18
+ return constants_1.SensorType.ROOMIQ;
19
+ case 'thermostat':
20
+ return constants_1.SensorType.THERMOSTAT;
21
+ default:
22
+ return constants_1.SensorType.ROOMIQ;
23
+ }
24
+ }
25
+ get serialNumber() {
26
+ return this.data.serial_number || this.data.serialNumber || 'Unknown';
27
+ }
28
+ get weight() {
29
+ return this.data.weight || 0;
30
+ }
31
+ get isActive() {
32
+ return this.weight > 0;
33
+ }
34
+ get isConnected() {
35
+ return this.data.connected || null;
36
+ }
37
+ get temperature() {
38
+ return this.data.temperature || 0;
39
+ }
40
+ get temperatureValid() {
41
+ return this.data.temperature_valid || false;
42
+ }
43
+ get humidity() {
44
+ return this.data.humidity || 0;
45
+ }
46
+ get humidityValid() {
47
+ return this.data.humidity_valid || false;
48
+ }
49
+ get hasBattery() {
50
+ return this.data.has_battery || false;
51
+ }
52
+ get batteryLevel() {
53
+ if (this.data.battery?.level !== undefined) {
54
+ return this.data.battery.level;
55
+ }
56
+ return this.data.battery_level || null;
57
+ }
58
+ get batteryLow() {
59
+ if (this.data.battery?.low !== undefined) {
60
+ return this.data.battery.low;
61
+ }
62
+ return this.data.battery_low || null;
63
+ }
64
+ get batteryValid() {
65
+ if (this.data.battery?.valid !== undefined) {
66
+ return this.data.battery.valid;
67
+ }
68
+ return this.data.battery_valid || null;
69
+ }
70
+ get batteryStatus() {
71
+ if (!this.hasBattery || this.batteryLevel === null || !this.batteryValid) {
72
+ return 'unknown';
73
+ }
74
+ const level = this.batteryLevel;
75
+ if (level <= constants_1.BATTERY_THRESHOLDS.CRITICAL) {
76
+ return 'critical';
77
+ }
78
+ else if (level <= constants_1.BATTERY_THRESHOLDS.LOW) {
79
+ return 'low';
80
+ }
81
+ else {
82
+ return 'good';
83
+ }
84
+ }
85
+ get hasOnlineStatus() {
86
+ return this.data.has_online || false;
87
+ }
88
+ getStatusSummary() {
89
+ return {
90
+ id: this.id,
91
+ name: this.name,
92
+ type: this.type,
93
+ isActive: this.isActive,
94
+ weight: this.weight,
95
+ temperature: this.temperature,
96
+ temperatureValid: this.temperatureValid,
97
+ humidity: this.humidity,
98
+ humidityValid: this.humidityValid,
99
+ isConnected: this.isConnected,
100
+ hasBattery: this.hasBattery,
101
+ batteryLevel: this.batteryLevel,
102
+ batteryStatus: this.batteryStatus,
103
+ serialNumber: this.serialNumber
104
+ };
105
+ }
106
+ isDataValid() {
107
+ return (this.isConnected !== false &&
108
+ (this.temperatureValid || this.humidityValid) &&
109
+ (!this.hasBattery || this.batteryStatus !== 'critical'));
110
+ }
111
+ getDescription() {
112
+ const parts = [this.name];
113
+ if (this.temperatureValid) {
114
+ parts.push(`${this.temperature}°`);
115
+ }
116
+ if (this.humidityValid) {
117
+ parts.push(`${this.humidity}% humidity`);
118
+ }
119
+ if (this.hasBattery && this.batteryLevel !== null) {
120
+ parts.push(`${this.batteryLevel}% battery`);
121
+ }
122
+ if (this.isConnected === false) {
123
+ parts.push('(disconnected)');
124
+ }
125
+ return parts.join(' ');
126
+ }
127
+ static compare(a, b) {
128
+ if (a.isActive && !b.isActive)
129
+ return -1;
130
+ if (!a.isActive && b.isActive)
131
+ return 1;
132
+ return a.name.localeCompare(b.name);
133
+ }
134
+ static filterActive(sensors) {
135
+ return sensors.filter(sensor => sensor.isActive);
136
+ }
137
+ static filterConnected(sensors) {
138
+ return sensors.filter(sensor => sensor.isConnected !== false);
139
+ }
140
+ static filterValidData(sensors) {
141
+ return sensors.filter(sensor => sensor.isDataValid());
142
+ }
143
+ static filterBatteryPowered(sensors) {
144
+ return sensors.filter(sensor => sensor.hasBattery);
145
+ }
146
+ static getLowBatterySensors(sensors) {
147
+ return sensors.filter(sensor => sensor.hasBattery &&
148
+ (sensor.batteryStatus === 'low' || sensor.batteryStatus === 'critical'));
149
+ }
150
+ }
151
+ exports.TraneSensor = TraneSensor;
152
+ //# sourceMappingURL=trane-sensor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trane-sensor.js","sourceRoot":"","sources":["../../src/devices/trane-sensor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,74 @@
1
+ import { DeviceCapabilities, SystemStatusSummary, HumidityOptions, FanOptions } from '../types/api';
2
+ import { ITraneThermostat, ITraneZone } from '../types/interfaces';
3
+ import { AirCleanerMode, TemperatureUnit } from '../types/constants';
4
+ import { TraneClient } from '../client/trane-client';
5
+ export declare class TraneThermostat implements ITraneThermostat {
6
+ private readonly client;
7
+ private readonly data;
8
+ private readonly zonesMap;
9
+ constructor(client: TraneClient, rawData: any);
10
+ private transformApiData;
11
+ get id(): string;
12
+ get name(): string;
13
+ get model(): string;
14
+ get firmware(): string;
15
+ get isOnline(): boolean;
16
+ get temperatureUnit(): TemperatureUnit;
17
+ get deadband(): number;
18
+ get capabilities(): DeviceCapabilities;
19
+ get hasZones(): boolean;
20
+ get hasOutdoorTemperature(): boolean;
21
+ get hasRelativeHumidity(): boolean;
22
+ get hasVariableSpeedCompressor(): boolean;
23
+ get hasEmergencyHeat(): boolean;
24
+ get hasVariableFanSpeed(): boolean;
25
+ get hasDehumidifySupport(): boolean;
26
+ get hasHumidifySupport(): boolean;
27
+ get hasAirCleaner(): boolean;
28
+ get systemStatus(): SystemStatusSummary;
29
+ get isBlowerActive(): boolean;
30
+ get isEmergencyHeatActive(): boolean;
31
+ get currentCompressorSpeed(): number;
32
+ get relativeHumidity(): number | null;
33
+ get outdoorTemperature(): number | null;
34
+ get setpointLimits(): {
35
+ heatMin: number;
36
+ heatMax: number;
37
+ coolMin: number;
38
+ coolMax: number;
39
+ };
40
+ get availableFanModes(): string[];
41
+ get currentFanMode(): string | null;
42
+ get fanSpeedLimits(): {
43
+ min: number;
44
+ max: number;
45
+ };
46
+ get currentFanSpeed(): number;
47
+ setFanMode(mode: string): Promise<void>;
48
+ setFanSpeed(speed: number): Promise<void>;
49
+ setFanOptions(options: FanOptions): Promise<void>;
50
+ get humidifySetpoint(): number;
51
+ get dehumidifySetpoint(): number;
52
+ get humiditySetpoints(): number[];
53
+ get dehumidifySetpoints(): number[];
54
+ setHumiditySetpoints(options: HumidityOptions): Promise<void>;
55
+ setDehumidifySetpoint(value: number): Promise<void>;
56
+ setHumidifySetpoint(value: number): Promise<void>;
57
+ get airCleanerMode(): string | null;
58
+ get availableAirCleanerModes(): AirCleanerMode[];
59
+ setAirCleanerMode(mode: AirCleanerMode): Promise<void>;
60
+ setEmergencyHeat(enabled: boolean): Promise<void>;
61
+ setFollowSchedule(follow: boolean): Promise<void>;
62
+ get zones(): ITraneZone[];
63
+ get zoneIds(): string[];
64
+ getZoneById(zoneId: string): ITraneZone | undefined;
65
+ refresh(): Promise<void>;
66
+ private initializeZones;
67
+ private parseSystemStatus;
68
+ private extractAvailableValues;
69
+ private getThermostatEndpoint;
70
+ private validateFanOptions;
71
+ private delayedUpdate;
72
+ getStatusSummary(): Record<string, any>;
73
+ }
74
+ //# sourceMappingURL=trane-thermostat.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trane-thermostat.d.ts","sourceRoot":"","sources":["../../src/devices/trane-thermostat.ts"],"names":[],"mappings":"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"}