homebridge-econet-rheem 1.5.11 → 1.5.12-beta.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 (54) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/dist/homebridge/platform.d.ts +4 -1
  3. package/dist/homebridge/platform.js +57 -59
  4. package/dist/homebridge/platform.js.map +1 -1
  5. package/dist/homebridge/thermostatAccessory.js +8 -6
  6. package/dist/homebridge/thermostatAccessory.js.map +1 -1
  7. package/dist/homebridge/waterHeaterAccessory.js +7 -5
  8. package/dist/homebridge/waterHeaterAccessory.js.map +1 -1
  9. package/dist/lang/en.d.ts +52 -0
  10. package/dist/lang/en.js +64 -0
  11. package/dist/lang/en.js.map +1 -0
  12. package/dist/model/api.d.ts +18 -30
  13. package/dist/model/api.js +244 -196
  14. package/dist/model/api.js.map +1 -1
  15. package/dist/model/auth.d.ts +11 -0
  16. package/dist/model/auth.js +52 -0
  17. package/dist/model/auth.js.map +1 -0
  18. package/dist/model/{enums.d.ts → constants.d.ts} +4 -0
  19. package/dist/model/{enums.js → constants.js} +6 -1
  20. package/dist/model/constants.js.map +1 -0
  21. package/dist/model/equipment.d.ts +8 -8
  22. package/dist/model/equipment.js +15 -29
  23. package/dist/model/equipment.js.map +1 -1
  24. package/dist/model/recoverySimulator.d.ts +1 -1
  25. package/dist/model/recoverySimulator.js +7 -8
  26. package/dist/model/recoverySimulator.js.map +1 -1
  27. package/dist/model/thermostat.d.ts +5 -5
  28. package/dist/model/thermostat.js +62 -70
  29. package/dist/model/thermostat.js.map +1 -1
  30. package/dist/model/types.d.ts +82 -0
  31. package/dist/model/types.js +12 -0
  32. package/dist/model/types.js.map +1 -0
  33. package/dist/model/waterHeater.d.ts +6 -4
  34. package/dist/model/waterHeater.js +34 -37
  35. package/dist/model/waterHeater.js.map +1 -1
  36. package/dist/tools/storage.d.ts +3 -0
  37. package/dist/tools/storage.js +22 -0
  38. package/dist/tools/storage.js.map +1 -0
  39. package/dist/tools/temperature.d.ts +3 -0
  40. package/dist/tools/temperature.js +14 -0
  41. package/dist/tools/temperature.js.map +1 -0
  42. package/dist/tools/time.d.ts +4 -0
  43. package/dist/tools/time.js +5 -0
  44. package/dist/tools/time.js.map +1 -0
  45. package/dist/tools/version.d.ts +1 -0
  46. package/dist/tools/version.js +18 -0
  47. package/dist/tools/version.js.map +1 -0
  48. package/example_responses/auth.json +45 -0
  49. package/example_responses/locations.json +1656 -0
  50. package/package.json +3 -1
  51. package/dist/model/enums.js.map +0 -1
  52. package/dist/model/utils.d.ts +0 -9
  53. package/dist/model/utils.js +0 -53
  54. package/dist/model/utils.js.map +0 -1
package/dist/model/api.js CHANGED
@@ -1,167 +1,265 @@
1
+ import axios, { isAxiosError } from 'axios';
1
2
  import mqtt from 'mqtt';
2
- import path from 'path';
3
- import { WaterHeater } from './waterHeater.js';
3
+ import { Auth } from './auth.js';
4
+ import { EquipmentType } from './constants.js';
5
+ import * as Types from './types.js';
4
6
  import { Thermostat } from './thermostat.js';
5
- import { MINUTE, safeGetItem, safeSetItem, SECOND } from './utils.js';
6
- const HOST = 'rheem.clearblade.com';
7
- const REST_URL = `https://${HOST}/api/v/1`;
7
+ import { WaterHeater } from './waterHeater.js';
8
+ import strings from '../lang/en.js';
9
+ import { safeGetItem, safeSetItem } from '../tools/storage.js';
10
+ import { MINUTE, SECOND } from '../tools/time.js';
8
11
  const CLEAR_BLADE_SYSTEM_KEY = 'e2e699cb0bb0bbb88fc8858cb5a401';
9
12
  const CLEAR_BLADE_SYSTEM_SECRET = 'E2E699CB0BE6C6FADDB1B0BC9A20';
10
- const HEADERS = {
13
+ const BASE_HEADERS = {
11
14
  'ClearBlade-SystemKey': CLEAR_BLADE_SYSTEM_KEY,
12
15
  'ClearBlade-SystemSecret': CLEAR_BLADE_SYSTEM_SECRET,
13
16
  'Content-Type': 'application/json; charset=UTF-8',
14
17
  };
15
- const RECONNECT_DELAYS = [5 * SECOND, 15 * SECOND, MINUTE, 2 * MINUTE, 5 * MINUTE];
18
+ const HOST = 'rheem.clearblade.com';
19
+ const BASE_URL = `https://${HOST}/api/v/1`;
20
+ const AUTH_URL = `${BASE_URL}/user/auth`;
21
+ const LOCATIONS_URL = `${BASE_URL}/code/${CLEAR_BLADE_SYSTEM_KEY}/getUserDataForApp`;
22
+ const MQTT_URL = `mqtts://${HOST}:1884`;
23
+ const MQTT_TOPIC_REPORTED = 'user/%s/device/reported';
24
+ const MQTT_TOPIC_DESIRED = 'user/%s/device/desired';
25
+ const HTTP_TIMEOUT = 10 * SECOND;
26
+ const MQTT_KEEPALIVE = 90;
27
+ const DELAYS = [5 * SECOND, 15 * SECOND, MINUTE, 2 * MINUTE, 5 * MINUTE];
16
28
  const IDLE_CONNECTION_TIMER_INTERVAL = 16 * MINUTE;
29
+ const HTTP_RETRY_CODES = [
30
+ 'ERR_NETWORK', // General network error in Axios
31
+ 'ETIMEDOUT', // Request timed out
32
+ 'ECONNREFUSED', // Connection refused by server
33
+ '429', // Too Many Requests (rate limit)
34
+ '500', // Internal Server Error
35
+ '502', // Bad Gateway
36
+ '503', // Service Unavailable
37
+ '504', // Gateway Timeout
38
+ ];
17
39
  const RETRYABLE_CODES = [
18
40
  3, // MQTT: Server unavailable
19
- 'ECONNREFUSED', 'ETIMEDOUT', 'ECONNRESET',
20
- 'ENOTFOUND', 'EHOSTUNREACH', 'ENETUNREACH',
41
+ 'ECONNREFUSED', 'ETIMEDOUT', 'ECONNRESET', 'ENOTFOUND',
42
+ 'EHOSTUNREACH', 'ENETUNREACH', 'EAI_AGAIN', 'EPIPE',
21
43
  ];
22
- const MQTT_DEBUG_FILE_NAME = 'mqttDebug.json';
23
- export const WATER_HEATER = 'WH';
24
- export const THERMOSTAT = 'HVAC';
25
- export class PyeconetError extends Error {
26
- constructor(message) {
27
- super(message);
28
- this.name = 'PyeconetError';
29
- }
30
- }
31
- export class InvalidCredentialsError extends PyeconetError {
32
- constructor(message) {
33
- super(message);
34
- this.name = 'InvalidCredentialsError';
35
- }
36
- }
37
- export class InvalidResponseFormat extends PyeconetError {
38
- constructor(message) {
39
- super(message);
40
- this.name = 'InvalidResponseFormat';
41
- }
42
- }
43
- export class GenericHTTPError extends PyeconetError {
44
- constructor(message) {
45
- super(message);
46
- this.name = 'GenericHTTPError';
47
- }
48
- }
49
44
  export class EconetApi {
50
45
  log;
51
46
  email;
52
47
  password;
53
- storagePath;
48
+ storageFilePath;
54
49
  verbose;
55
50
  debugMQTT;
56
- mqttOptions = null;
57
- userToken = null;
58
- accountId = null;
59
- equipment = new Map();
51
+ _auth;
52
+ retryIndex = 0;
53
+ equipments = new Map();
60
54
  mqttClient = null;
61
55
  shouldReconnect = false;
62
56
  isReconnecting = false;
63
57
  reconnectCount = 0;
64
58
  idleMQTTTimer = null;
65
- constructor(log, email, password, storagePath, verbose, debugMQTT) {
59
+ constructor(log, email, password, storageFilePath, verbose, debugMQTT) {
66
60
  this.log = log;
67
61
  this.email = email;
68
62
  this.password = password;
69
- this.storagePath = storagePath;
63
+ this.storageFilePath = storageFilePath;
70
64
  this.verbose = verbose;
71
65
  this.debugMQTT = debugMQTT;
66
+ this.auth = Auth.load(this.storageFilePath, email);
72
67
  }
73
- static async login(log, email, password, storagePath, verbose, debugMQTT) {
74
- const api = new EconetApi(log, email, password, storagePath, verbose, debugMQTT);
75
- await api.authenticate();
68
+ static async connect(log, email, password, storageFilePath, verbose, debugMQTT) {
69
+ const api = new EconetApi(log, email, password, storageFilePath, verbose, debugMQTT);
70
+ let shouldContinue = true;
71
+ if (!api.auth) {
72
+ shouldContinue = await api.authenticate();
73
+ }
74
+ if (shouldContinue) {
75
+ await api.getLocations();
76
+ api.shouldReconnect = true;
77
+ api.mqttConnect(true);
78
+ }
76
79
  return api;
77
80
  }
78
- async authenticate() {
79
- const response = await fetch(`${REST_URL}/user/auth`, {
80
- method: 'POST',
81
- headers: HEADERS,
82
- body: JSON.stringify({ email: this.email, password: this.password }),
81
+ teardown() {
82
+ this.shouldReconnect = false;
83
+ if (this.mqttClient) {
84
+ this.mqttClient.end(true);
85
+ this.mqttClient = null;
86
+ }
87
+ }
88
+ publish(payload, deviceId, serialNumber) {
89
+ if (!this.mqttClient || !this.mqttClient.connected) {
90
+ this.log.error(strings.clientNotConnected);
91
+ return;
92
+ }
93
+ if (!this.auth?.accountId) {
94
+ this.log.error(strings.authMissing);
95
+ return;
96
+ }
97
+ const dateTime = new Date().toISOString().replace(/\.\d{3}Z$/, '');
98
+ const transactionId = `ANDROID_${dateTime}`;
99
+ const data = {
100
+ transactionId,
101
+ device_name: deviceId,
102
+ serial_number: serialNumber,
103
+ ...payload,
104
+ };
105
+ const topic = MQTT_TOPIC_DESIRED.replace('%s', this.auth.accountId);
106
+ const message = JSON.stringify(data);
107
+ this.mqttClient.publish(topic, message);
108
+ if (this.verbose) {
109
+ this.log.info(strings.topicPublish, topic, message);
110
+ }
111
+ }
112
+ get auth() {
113
+ return this._auth ?? null;
114
+ }
115
+ set auth(value) {
116
+ this._auth = value;
117
+ if (this._auth) {
118
+ this._auth.save(this.storageFilePath, this.email);
119
+ }
120
+ }
121
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
122
+ async do(caller,
123
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
124
+ data, shouldRetry, url, ...parameters) {
125
+ parameters.forEach(param => {
126
+ url = url.replace('%s', param ?? '');
83
127
  });
84
- if (response.status === 200) {
85
- const json = await response.json();
86
- if (json.options.success) {
87
- this.log.info('Successfully authenticated');
88
- this.userToken = json.user_token;
89
- this.accountId = json.options.account_id;
90
- const timeString = Date.now().toString().replace('.', '').slice(0, 13);
91
- const clientId = `${this.email}${timeString}_android`;
92
- this.mqttOptions = {
93
- clientId,
94
- username: this.userToken,
95
- password: CLEAR_BLADE_SYSTEM_KEY,
96
- rejectUnauthorized: true,
97
- keepalive: 90,
98
- reconnectPeriod: 0,
99
- };
128
+ let config;
129
+ if (this.auth?.token) {
130
+ const headers = { ...BASE_HEADERS, 'ClearBlade-UserToken': this.auth?.token };
131
+ config = { headers: headers, timeout: HTTP_TIMEOUT };
132
+ }
133
+ else {
134
+ config = { headers: BASE_HEADERS, timeout: HTTP_TIMEOUT };
135
+ }
136
+ try {
137
+ let res;
138
+ if (data) {
139
+ res = await axios.post(url, data, config);
100
140
  }
101
141
  else {
102
- throw new InvalidCredentialsError(json.options.message || 'Invalid credentials');
142
+ res = await axios.get(url, config);
143
+ }
144
+ if (!res.data) {
145
+ this.logHTTP("debug" /* LogLevel.DEBUG */, caller, JSON.stringify(res.data));
146
+ throw new Error(strings.noDataReceived);
103
147
  }
148
+ this.logIfVerbose(caller, res.data);
149
+ this.retryIndex = 0;
150
+ return res.data;
151
+ }
152
+ catch (err) {
153
+ if (shouldRetry) {
154
+ return this.retryIfPossible(err, caller, () => this.do(caller, data, shouldRetry, url, ...parameters));
155
+ }
156
+ else {
157
+ this.logHTTP("warn" /* LogLevel.WARN */, caller, err.message);
158
+ return null;
159
+ }
160
+ }
161
+ }
162
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
163
+ async retryIfPossible(err, caller, retry) {
164
+ if (!isAxiosError(err)) {
165
+ this.logHTTP("warn" /* LogLevel.WARN */, caller, err.message);
166
+ return null;
167
+ }
168
+ const errorCode = err.code || err.response?.status?.toString() || 'UNKNOWN';
169
+ if (!HTTP_RETRY_CODES.includes(errorCode) || this.retryIndex >= DELAYS.length) {
170
+ this.logHTTP("warn" /* LogLevel.WARN */, caller, err.message);
171
+ return null;
172
+ }
173
+ const reconnectDelay = DELAYS[Math.min(this.reconnectCount, DELAYS.length - 1)];
174
+ if (reconnectDelay <= MINUTE) {
175
+ this.log.warn(strings.httpRetrySeconds, reconnectDelay / SECOND);
104
176
  }
105
177
  else {
106
- throw new GenericHTTPError(`HTTP error: ${response.status}`);
178
+ this.log.warn(strings.httpRetryMinutes, reconnectDelay / MINUTE);
107
179
  }
180
+ await new Promise(resolve => setTimeout(resolve, reconnectDelay));
181
+ this.retryIndex += 1;
182
+ return await retry();
108
183
  }
109
- subscribe() {
110
- this.shouldReconnect = true;
111
- this.connect();
184
+ async authenticate() {
185
+ const data = { email: this.email, password: this.password };
186
+ const tokenData = await this.do(this.authenticate.name, data, true, AUTH_URL);
187
+ if (!tokenData) {
188
+ return false;
189
+ }
190
+ this.auth = new Auth(tokenData);
191
+ this.log.info(strings.authSuccess);
192
+ return true;
112
193
  }
113
- connect() {
114
- if (!this.equipment.size) {
115
- this.log.error('No equipment');
194
+ mqttConnect(isStartup = false) {
195
+ if (!this.equipments.size) {
116
196
  return;
117
197
  }
118
- if (!this.mqttOptions) {
119
- this.log.error('MQTT options are undefined');
198
+ if (!this.auth?.token) {
199
+ this.log.error(strings.authMissing);
120
200
  return;
121
201
  }
122
- this.mqttClient = mqtt.connect(`mqtts://${HOST}:1884`, this.mqttOptions);
202
+ const timeString = Date.now().toString().replace('.', '').slice(0, 13);
203
+ const clientId = `${this.email}${timeString}_android`;
204
+ const options = {
205
+ clientId,
206
+ username: this.auth.token,
207
+ password: CLEAR_BLADE_SYSTEM_KEY,
208
+ rejectUnauthorized: true,
209
+ keepalive: MQTT_KEEPALIVE,
210
+ reconnectPeriod: 0,
211
+ };
212
+ this.mqttClient = mqtt.connect(MQTT_URL, options);
123
213
  this.mqttClient.on('connect', () => {
124
- this.mqttClient.subscribe(`user/${this.accountId}/device/reported`);
125
- this.mqttClient.subscribe(`user/${this.accountId}/device/desired`);
126
- this.log.info('Connected and listening for updates...');
214
+ if (!this.mqttClient || !this.auth?.accountId) {
215
+ this.log.error(strings.connectionError);
216
+ return;
217
+ }
218
+ this.mqttClient.subscribe(MQTT_TOPIC_REPORTED.replace('%s', this.auth.accountId));
219
+ this.mqttClient.subscribe(MQTT_TOPIC_DESIRED.replace('%s', this.auth.accountId));
220
+ this.log.info(strings.connected);
221
+ if (isStartup) {
222
+ const randIndex = Math.floor(Math.random() * strings.welcomeMessages.length);
223
+ this.log.info(strings.setupComplete, strings.welcomeMessages[randIndex]);
224
+ }
127
225
  });
128
226
  this.mqttClient.on('message', (topic, message) => {
129
227
  this.reconnectCount = 0;
130
228
  this.resetIdleMQTTTimer();
131
229
  try {
132
- const unpackedJson = JSON.parse(message.toString());
230
+ const data = JSON.parse(message.toString());
133
231
  if (this.verbose) {
134
- this.log.info(`Received message from topic: ${topic}\n`, JSON.stringify(unpackedJson, null, 2));
232
+ this.log.info(strings.topicUpdate, topic, JSON.stringify(data));
135
233
  }
136
- const serial = unpackedJson.serial_number;
137
- const equipment = this.equipment.get(serial);
234
+ const serial = data.serial_number;
235
+ const equipment = this.equipments.get(serial);
138
236
  if (equipment) {
139
- equipment.updateFromMQTT(unpackedJson);
237
+ equipment.updateFromMQTT(data);
140
238
  if (this.debugMQTT) {
141
- this.saveMQTT(unpackedJson);
239
+ this.saveMQTT(data);
142
240
  }
143
241
  }
144
242
  }
145
243
  catch (e) {
146
- this.log.error('Failed to parse message:', message.toString());
244
+ this.log.error(strings.parseFailed, message.toString());
147
245
  }
148
246
  });
149
247
  this.mqttClient.on('offline', () => {
150
- this.log.debug('Client offline');
248
+ this.log.debug(strings.clientOffline);
151
249
  });
152
250
  this.mqttClient.on('close', () => {
153
- this.log.info('Connection closed');
154
- this.reconnect();
251
+ this.log.info(strings.connectionClosed);
252
+ this.mqttReconnect();
155
253
  });
156
254
  this.mqttClient.on('error', (err) => {
157
255
  if (err.code !== undefined && RETRYABLE_CODES.includes(err.code)) {
158
256
  if (this.verbose) {
159
- this.log.error('Client error:', err);
257
+ this.log.error(strings.clientError, err);
160
258
  }
161
- this.reconnect();
259
+ this.mqttReconnect();
162
260
  }
163
261
  else {
164
- this.log.error('Client error:', err);
262
+ this.log.error(strings.clientError, err);
165
263
  }
166
264
  });
167
265
  }
@@ -170,11 +268,11 @@ export class EconetApi {
170
268
  clearTimeout(this.idleMQTTTimer);
171
269
  }
172
270
  this.idleMQTTTimer = setTimeout(() => {
173
- this.log.info('Idle connection');
174
- this.reconnect();
271
+ this.log.info(strings.idleConnection);
272
+ this.mqttReconnect();
175
273
  }, IDLE_CONNECTION_TIMER_INTERVAL);
176
274
  }
177
- async reconnect() {
275
+ async mqttReconnect() {
178
276
  if (!this.shouldReconnect || this.isReconnecting) {
179
277
  return;
180
278
  }
@@ -184,136 +282,86 @@ export class EconetApi {
184
282
  this.mqttClient = null;
185
283
  }
186
284
  this.reconnectCount++;
187
- if (this.reconnectCount % RECONNECT_DELAYS.length === 0) {
285
+ if (this.reconnectCount % DELAYS.length === 0) {
188
286
  try {
189
- this.log.error('Having trouble staying connected');
190
- this.log.info('Attempting to re-authenticate');
287
+ this.log.error(strings.unstableConnection);
288
+ this.log.info(strings.reauthenticate);
191
289
  await this.authenticate();
192
290
  }
193
291
  catch (error) {
194
- this.log.error('Re-authentication failed:', error);
292
+ this.log.error(strings.reauthFailed, error);
195
293
  }
196
294
  }
197
- const reconnectDelay = RECONNECT_DELAYS[Math.min(this.reconnectCount, RECONNECT_DELAYS.length - 1)];
295
+ const reconnectDelay = DELAYS[Math.min(this.reconnectCount, DELAYS.length - 1)];
198
296
  if (reconnectDelay <= MINUTE) {
199
- this.log.info(`Will attempt to reconnect in ${reconnectDelay / SECOND} seconds...`);
297
+ this.log.info(strings.reconnectInSeconds, reconnectDelay / SECOND);
200
298
  }
201
299
  else {
202
- this.log.info(`Will attempt to reconnect in ${reconnectDelay / MINUTE} minutes...`);
300
+ this.log.info(strings.reconnectInMinutes, reconnectDelay / MINUTE);
203
301
  }
204
302
  setTimeout(() => {
205
303
  this.isReconnecting = false;
206
- this.connect();
304
+ this.mqttConnect();
207
305
  }, reconnectDelay);
208
306
  }
209
- publish(payload, deviceId, serialNumber) {
210
- const dateTime = new Date().toISOString().replace(/\.\d{3}Z$/, '');
211
- const transactionId = `ANDROID_${dateTime}`;
212
- const publishPayload = {
213
- transactionId,
214
- device_name: deviceId,
215
- serial_number: serialNumber,
216
- ...payload,
217
- };
218
- if (!this.mqttClient || !this.mqttClient.connected) {
219
- this.log.error('Client not connected');
220
- return;
221
- }
222
- const topic = `user/${this.accountId}/device/desired`;
223
- const message = JSON.stringify(publishPayload, null, 2);
224
- if (this.verbose) {
225
- this.log.info(`Publishing message to topic: ${topic}\n`, message);
226
- }
227
- this.mqttClient.publish(topic, message);
228
- }
229
- unsubscribe() {
230
- this.shouldReconnect = false;
231
- if (this.mqttClient) {
232
- this.mqttClient.end();
233
- }
234
- }
235
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
236
- async getLocation() {
237
- const headers = { ...HEADERS, 'ClearBlade-UserToken': this.userToken };
238
- const payload = {
307
+ async getLocations() {
308
+ const data = {
239
309
  location_only: false,
240
310
  type: 'com.econet.econetconsumerandroid',
241
311
  version: '6.0.0-375-01b4870e',
242
312
  };
243
- const response = await fetch(`${REST_URL}/code/${CLEAR_BLADE_SYSTEM_KEY}/getUserDataForApp`, {
244
- method: 'POST',
245
- headers,
246
- body: JSON.stringify(payload),
247
- });
248
- if (response.status === 200) {
249
- const json = await response.json();
250
- if (json.success) {
251
- return json.results.locations;
252
- }
253
- throw new InvalidResponseFormat('Invalid response format');
313
+ const locationsData = await this.do(this.getLocations.name, data, true, LOCATIONS_URL);
314
+ if (!locationsData) {
315
+ return;
254
316
  }
255
- throw new GenericHTTPError(`HTTP error: ${response.status}`);
256
- }
257
- async getEquipment() {
258
- const locations = await this.getLocation();
259
- for (const location of locations) {
260
- for (const equip of location.equiptments) {
261
- if ('error' in equip) {
262
- this.log.error(`Equipment error: ${equip.error}`);
263
- continue;
264
- }
265
- if (this.verbose) {
266
- this.log.info('Creating Equipment with data:\n', JSON.stringify(equip, null, 2));
267
- }
268
- let equipObj;
269
- if (equip.device_type === WATER_HEATER) {
270
- equipObj = new WaterHeater(this, equip);
271
- }
272
- else if (equip.device_type === THERMOSTAT) {
273
- equipObj = new Thermostat(this, equip);
274
- }
275
- else {
276
- continue;
317
+ locationsData.results.locations.forEach(location => {
318
+ location.equiptments.forEach(equipmentData => {
319
+ let equipment = null;
320
+ switch (equipmentData.device_type) {
321
+ case EquipmentType.THERMOSTAT:
322
+ equipment = new Thermostat(this, equipmentData);
323
+ break;
324
+ case EquipmentType.WATER_HEATER:
325
+ equipment = new WaterHeater(this, equipmentData, this.storageFilePath);
326
+ break;
327
+ default:
328
+ this.log.error(strings.unsupportedEquipment, equipmentData.device_type);
277
329
  }
278
- this.equipment.set(equipObj.serialNumber, equipObj);
279
- if (equip.device_type === THERMOSTAT && equip.zoning_devices) {
280
- for (const zoningDevice of equip.zoning_devices) {
281
- const zoningEquip = new Thermostat(this, zoningDevice);
282
- this.equipment.set(zoningEquip.serialNumber, zoningEquip);
283
- }
330
+ if (equipment) {
331
+ this.equipments.set(equipment.serialNumber, equipment);
284
332
  }
285
- }
286
- }
287
- }
288
- async getEquipmentByType(types) {
289
- if (!this.equipment.size) {
290
- await this.getEquipment();
291
- }
292
- const result = new Map();
293
- types.forEach((type) => result.set(type, []));
294
- for (const equip of this.equipment.values()) {
295
- if (types.includes(equip instanceof WaterHeater ? WATER_HEATER : THERMOSTAT)) {
296
- result.get(equip instanceof WaterHeater ? WATER_HEATER : THERMOSTAT).push(equip);
297
- }
298
- }
299
- return result;
333
+ });
334
+ });
300
335
  }
301
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
302
- saveMQTT(json) {
303
- const filePath = path.join(this.storagePath, MQTT_DEBUG_FILE_NAME);
336
+ saveMQTT(data) {
304
337
  const ignoreKeys = new Set(['transactionId', 'device_name', 'serial_number']);
305
- for (const [key, value] of Object.entries(json)) {
306
- if (ignoreKeys.has(key)) {
338
+ for (const [key, value] of Object.entries(data)) {
339
+ if (ignoreKeys.has(key) || value.toString.length === 0) {
307
340
  continue;
308
341
  }
309
- let valuesString = safeGetItem(filePath, key);
342
+ let valuesString = safeGetItem(this.storageFilePath, key);
310
343
  let valuesArray = valuesString ? JSON.parse(valuesString) : [];
311
344
  const valuesSet = new Set(valuesArray);
312
345
  valuesSet.add(value);
313
346
  valuesArray = Array.from(valuesSet);
314
347
  valuesString = JSON.stringify(valuesArray);
315
- safeSetItem(filePath, key, valuesString);
348
+ safeSetItem(this.storageFilePath, key, valuesString);
316
349
  }
317
350
  }
351
+ logHTTP(level, caller, message) {
352
+ this.log.log(level, '[HTTP %s()] %s', caller, message);
353
+ }
354
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
355
+ logIfVerbose(caller, data) {
356
+ if (!this.verbose) {
357
+ return;
358
+ }
359
+ let message = JSON.stringify(data);
360
+ Types.SENSITIVE_KEYS.forEach(key => {
361
+ const regex = new RegExp(`"${key}"\\s*:\\s*(".*?"|\\d+|true|false|null)`, 'gi');
362
+ message = message.replace(regex, `"${key}": "${strings.redacted}"`);
363
+ });
364
+ this.logHTTP("info" /* LogLevel.INFO */, caller, message);
365
+ }
318
366
  }
319
367
  //# sourceMappingURL=api.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"api.js","sourceRoot":"","sources":["../../src/model/api.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"api.js","sourceRoot":"","sources":["../../src/model/api.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import { TokenData } from './types.js';
2
+ export declare class Auth {
3
+ private readonly data;
4
+ constructor(data: TokenData);
5
+ get token(): string;
6
+ get userId(): string;
7
+ get accountId(): string;
8
+ private static digest;
9
+ save(filePath: string, encryptionKey: string): void;
10
+ static load(filePath: string, encryptionKey: string): Auth | null;
11
+ }