homebridge-carrier-infinity 1.8.1 → 1.9.0-beta.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.
Files changed (73) hide show
  1. package/.devcontainer/.uix-hb-service-homebridge-startup.json.example +5 -0
  2. package/.devcontainer/config.json.example +2 -1
  3. package/.devcontainer/setup-homebridge.sh +6 -0
  4. package/CLAUDE.md +28 -21
  5. package/dist/accessory_base.d.ts +2 -2
  6. package/dist/accessory_base.d.ts.map +1 -1
  7. package/dist/accessory_base.js.map +1 -1
  8. package/dist/api/graphql_client.d.ts +71 -0
  9. package/dist/api/graphql_client.d.ts.map +1 -0
  10. package/dist/api/graphql_client.js +261 -0
  11. package/dist/api/graphql_client.js.map +1 -0
  12. package/dist/api/graphql_operations.d.ts +56 -0
  13. package/dist/api/graphql_operations.d.ts.map +1 -0
  14. package/dist/api/graphql_operations.js +325 -0
  15. package/dist/api/graphql_operations.js.map +1 -0
  16. package/dist/api/interface_graphql_mutations.d.ts +149 -0
  17. package/dist/api/interface_graphql_mutations.d.ts.map +1 -0
  18. package/dist/api/interface_graphql_mutations.js +8 -0
  19. package/dist/api/interface_graphql_mutations.js.map +1 -0
  20. package/dist/api/interface_graphql_system.d.ts +287 -0
  21. package/dist/api/interface_graphql_system.d.ts.map +1 -0
  22. package/dist/api/interface_graphql_system.js +9 -0
  23. package/dist/api/interface_graphql_system.js.map +1 -0
  24. package/dist/api/models_graphql.d.ts +167 -0
  25. package/dist/api/models_graphql.d.ts.map +1 -0
  26. package/dist/api/models_graphql.js +590 -0
  27. package/dist/api/models_graphql.js.map +1 -0
  28. package/dist/api/oauth2.d.ts +45 -0
  29. package/dist/api/oauth2.d.ts.map +1 -0
  30. package/dist/api/oauth2.js +35 -0
  31. package/dist/api/oauth2.js.map +1 -0
  32. package/dist/characteristics_base.d.ts +2 -2
  33. package/dist/characteristics_base.d.ts.map +1 -1
  34. package/dist/characteristics_base.js.map +1 -1
  35. package/dist/platform.d.ts +4 -4
  36. package/dist/platform.d.ts.map +1 -1
  37. package/dist/platform.js +7 -12
  38. package/dist/platform.js.map +1 -1
  39. package/dist/settings.d.ts +6 -3
  40. package/dist/settings.d.ts.map +1 -1
  41. package/dist/settings.js +7 -4
  42. package/dist/settings.js.map +1 -1
  43. package/eslint.config.mjs +93 -2
  44. package/package.json +3 -6
  45. package/dist/api/comodo-aaa-root.pem +0 -25
  46. package/dist/api/interface_config.d.ts +0 -185
  47. package/dist/api/interface_config.d.ts.map +0 -1
  48. package/dist/api/interface_config.js +0 -5
  49. package/dist/api/interface_config.js.map +0 -1
  50. package/dist/api/interface_locations.d.ts +0 -45
  51. package/dist/api/interface_locations.d.ts.map +0 -1
  52. package/dist/api/interface_locations.js +0 -5
  53. package/dist/api/interface_locations.js.map +0 -1
  54. package/dist/api/interface_profile.d.ts +0 -80
  55. package/dist/api/interface_profile.d.ts.map +0 -1
  56. package/dist/api/interface_profile.js +0 -5
  57. package/dist/api/interface_profile.js.map +0 -1
  58. package/dist/api/interface_status.d.ts +0 -90
  59. package/dist/api/interface_status.d.ts.map +0 -1
  60. package/dist/api/interface_status.js +0 -5
  61. package/dist/api/interface_status.js.map +0 -1
  62. package/dist/api/models.d.ts +0 -111
  63. package/dist/api/models.d.ts.map +0 -1
  64. package/dist/api/models.js +0 -572
  65. package/dist/api/models.js.map +0 -1
  66. package/dist/api/oauth.d.ts +0 -6
  67. package/dist/api/oauth.d.ts.map +0 -1
  68. package/dist/api/oauth.js +0 -49
  69. package/dist/api/oauth.js.map +0 -1
  70. package/dist/api/rest_client.d.ts +0 -15
  71. package/dist/api/rest_client.d.ts.map +0 -1
  72. package/dist/api/rest_client.js +0 -135
  73. package/dist/api/rest_client.js.map +0 -1
@@ -1,572 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
19
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
20
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
21
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
22
- return c > 3 && r && Object.defineProperty(target, key, r), r;
23
- };
24
- var __importStar = (this && this.__importStar) || (function () {
25
- var ownKeys = function(o) {
26
- ownKeys = Object.getOwnPropertyNames || function (o) {
27
- var ar = [];
28
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
29
- return ar;
30
- };
31
- return ownKeys(o);
32
- };
33
- return function (mod) {
34
- if (mod && mod.__esModule) return mod;
35
- var result = {};
36
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
37
- __setModuleDefault(result, mod);
38
- return result;
39
- };
40
- })();
41
- var __importDefault = (this && this.__importDefault) || function (mod) {
42
- return (mod && mod.__esModule) ? mod : { "default": mod };
43
- };
44
- Object.defineProperty(exports, "__esModule", { value: true });
45
- exports.SystemModel = exports.SystemConfigModel = exports.SystemConfigModelReadOnly = exports.SystemStatusModel = exports.SystemProfileModel = exports.LocationsModel = void 0;
46
- const helpers_1 = require("../helpers");
47
- const typescript_memoize_1 = require("typescript-memoize");
48
- const async_mutex_1 = require("async-mutex");
49
- const xml2js = __importStar(require("xml2js"));
50
- const object_hash_1 = __importDefault(require("object-hash"));
51
- const helper_logging_1 = require("../helper_logging");
52
- const axios_1 = __importDefault(require("axios"));
53
- const events_1 = __importDefault(require("events"));
54
- const constants_1 = require("./constants");
55
- class BaseModel {
56
- constructor(infinity_client) {
57
- this.infinity_client = infinity_client;
58
- this.HASH_IGNORE_KEYS = new Set();
59
- this.log = new helper_logging_1.PrefixLogger(this.infinity_client.log, 'API');
60
- this.write_lock = new async_mutex_1.Mutex();
61
- }
62
- hashDataObject(data) {
63
- return (0, object_hash_1.default)(data || this.data_object, { excludeKeys: (key) => {
64
- return this.HASH_IGNORE_KEYS.has(key);
65
- } });
66
- }
67
- async fetch() {
68
- // If push is ongoing, skip this update fetch. The push will do a fetch.
69
- try {
70
- await (0, async_mutex_1.tryAcquire)(this.write_lock).runExclusive(async () => {
71
- await this.forceFetch();
72
- });
73
- }
74
- catch (e) {
75
- if (e === async_mutex_1.E_ALREADY_LOCKED) {
76
- return;
77
- }
78
- else if (e === async_mutex_1.E_TIMEOUT || e === async_mutex_1.E_CANCELED) {
79
- this.log.error(`Deadlock on fetch ${e}. Report bug: https://bit.ly/3igbU7D`);
80
- }
81
- else {
82
- this.log.error('Failed to fetch updates: ', axios_1.default.isAxiosError(e) ? e.message : e);
83
- }
84
- }
85
- }
86
- async forceFetch() {
87
- const [data_object_hash, data_object] = await this.forceFetchInternal();
88
- this.data_object = data_object;
89
- this.data_object_hash = data_object_hash;
90
- }
91
- async forceFetchInternal() {
92
- await this.infinity_client.refreshToken();
93
- await this.infinity_client.activate();
94
- const response = await this.infinity_client.axios.get(this.getPath());
95
- if (response.data) {
96
- const data_object = await xml2js.parseStringPromise(response.data);
97
- const data_object_hash = this.hashDataObject(data_object);
98
- return [data_object_hash, data_object];
99
- }
100
- else {
101
- this.log.debug(response.data);
102
- throw new Error('Response from API contained errors.');
103
- }
104
- }
105
- }
106
- __decorate([
107
- (0, typescript_memoize_1.MemoizeExpiring)(10 * 1000)
108
- ], BaseModel.prototype, "fetch", null);
109
- class LocationsModel extends BaseModel {
110
- getPath() {
111
- return `/users/${this.infinity_client.username}/locations`;
112
- }
113
- async getSystems() {
114
- await this.fetch();
115
- const systems = [];
116
- for (const location of this.data_object.locations.location) {
117
- for (const system of location.systems[0].system || []) {
118
- const link_parts = system['atom:link'][0]['$']['href'].split('/');
119
- systems.push(link_parts[link_parts.length - 1]);
120
- }
121
- }
122
- return systems;
123
- }
124
- }
125
- exports.LocationsModel = LocationsModel;
126
- class BaseSystemModel extends BaseModel {
127
- constructor(infinity_client, serialNumber, log, events) {
128
- super(infinity_client);
129
- this.infinity_client = infinity_client;
130
- this.serialNumber = serialNumber;
131
- this.log = log;
132
- this.events = events;
133
- this.last_updated = 0; // TODO use this
134
- this.HASH_IGNORE_KEYS = new Set(['timestamp', 'localTime']);
135
- }
136
- async forceFetch() {
137
- const old_hash = this.data_object_hash;
138
- await super.forceFetch();
139
- const new_hash = this.data_object_hash;
140
- const top_level_key = Object.keys(this.data_object)[0];
141
- const ts = this.data_object[top_level_key].timestamp[0];
142
- this.last_updated = Date.parse(ts);
143
- this.log.debug(`TIMESTAMP ${this.getPath()} reports ${ts} (${this.last_updated})`);
144
- if (old_hash !== new_hash) {
145
- this.events.emit(`updated_${top_level_key}`);
146
- }
147
- }
148
- }
149
- class SystemProfileModel extends BaseSystemModel {
150
- getPath() {
151
- return `/systems/${this.serialNumber}/profile`;
152
- }
153
- async getName() {
154
- await this.fetch();
155
- return this.data_object.system_profile.name[0];
156
- }
157
- async getBrand() {
158
- await this.fetch();
159
- return this.data_object.system_profile.brand[0];
160
- }
161
- async getModel() {
162
- await this.fetch();
163
- return this.data_object.system_profile.model[0];
164
- }
165
- async getFirmware() {
166
- await this.fetch();
167
- return this.data_object.system_profile.firmware[0];
168
- }
169
- async getZones() {
170
- await this.fetch();
171
- return this.data_object.system_profile.zones[0].zone.filter((zone) => zone['present'][0] === constants_1.STATUS.ON).map((zone) => zone['$'].id);
172
- }
173
- }
174
- exports.SystemProfileModel = SystemProfileModel;
175
- class SystemStatusModel extends BaseSystemModel {
176
- getPath() {
177
- return `/systems/${this.serialNumber}/status`;
178
- }
179
- async getUnits() {
180
- await this.fetch();
181
- return this.data_object.status.cfgem[0];
182
- }
183
- async getOutdoorTemp() {
184
- await this.fetch();
185
- return Number(this.data_object.status.oat[0]);
186
- }
187
- async getFilterUsed() {
188
- await this.fetch();
189
- return Number(this.data_object.status.filtrlvl[0]);
190
- }
191
- async getMode() {
192
- await this.fetch();
193
- const raw_mode = this.data_object.status.mode[0];
194
- switch (raw_mode) {
195
- case 'gasheat':
196
- case 'electric':
197
- case 'hpheat':
198
- return constants_1.SYSTEM_MODE.HEAT;
199
- case 'dehumidify':
200
- return constants_1.SYSTEM_MODE.COOL;
201
- default:
202
- return raw_mode;
203
- }
204
- }
205
- async getZone(zone) {
206
- await this.fetch();
207
- return this.data_object.status.zones[0].zone.find((z) => z['$'].id === zone.toString());
208
- }
209
- async getZoneConditioning(zone) {
210
- const raw_mode = (await this.getZone(zone)).zoneconditioning[0];
211
- switch (raw_mode) {
212
- case 'active_heat':
213
- case 'prep_heat':
214
- case 'pending_heat':
215
- return constants_1.SYSTEM_MODE.HEAT;
216
- case 'active_cool':
217
- case 'prep_cool':
218
- case 'pending_cool':
219
- return constants_1.SYSTEM_MODE.COOL;
220
- case 'idle':
221
- return constants_1.SYSTEM_MODE.OFF;
222
- default:
223
- return raw_mode;
224
- }
225
- }
226
- async getZoneFan(zone) {
227
- const zone_obj = await this.getZone(zone);
228
- if (zone_obj.damperposition[0] === '0') {
229
- return constants_1.FAN_MODE.OFF;
230
- }
231
- else {
232
- return zone_obj.fan[0];
233
- }
234
- }
235
- async getZoneOpen(zone) {
236
- return (await this.getZone(zone)).damperposition[0] !== '0';
237
- }
238
- async getZoneTemp(zone) {
239
- return Number((await this.getZone(zone)).rt[0]);
240
- }
241
- async getZoneHumidity(zone) {
242
- return Number((await this.getZone(zone)).rh[0]);
243
- }
244
- async getZoneActivity(zone) {
245
- return (await this.getZone(zone)).currentActivity[0];
246
- }
247
- async getZoneCoolSetpoint(zone) {
248
- return Number((await this.getZone(zone)).clsp[0]);
249
- }
250
- async getZoneHeatSetpoint(zone) {
251
- return Number((await this.getZone(zone)).htsp[0]);
252
- }
253
- }
254
- exports.SystemStatusModel = SystemStatusModel;
255
- class SystemConfigModelReadOnly extends BaseSystemModel {
256
- getPath() {
257
- return `/systems/${this.serialNumber}/config`;
258
- }
259
- static getUnits(data_object) {
260
- return data_object.config.cfgem[0];
261
- }
262
- async getUnits() {
263
- await this.fetch();
264
- return SystemConfigModelReadOnly.getUnits(this.data_object);
265
- }
266
- async getTempBounds() {
267
- var _a;
268
- // TODO: Utility event isn't always set. Find somewhere else to get this #543
269
- await this.fetch();
270
- const utility_events = ((_a = this.data_object.config.utilityEvent) === null || _a === void 0 ? void 0 : _a[0]) || { 'minLimit': ['50'], 'maxLimit': ['90'] };
271
- return [Number(utility_events.minLimit[0]), Number(utility_events.maxLimit[0])];
272
- }
273
- async getMode() {
274
- await this.fetch();
275
- return this.data_object.config.mode[0];
276
- }
277
- static getZone(data_object, zone) {
278
- return data_object.config.zones[0].zone.find((z) => z['$'].id === zone.toString());
279
- }
280
- async getZone(zone) {
281
- await this.fetch();
282
- return SystemConfigModelReadOnly.getZone(this.data_object, zone);
283
- }
284
- async getZoneName(zone) {
285
- const zone_obj = await this.getZone(zone);
286
- return zone_obj['name'][0];
287
- }
288
- async getZoneHoldStatus(zone) {
289
- const zone_obj = await this.getZone(zone);
290
- return [zone_obj['hold'][0], zone_obj['otmr'][0]];
291
- }
292
- static getZoneActivity(data_object, zone) {
293
- const zone_obj = SystemConfigModelReadOnly.getZone(data_object, zone);
294
- if (zone_obj.hold[0] === constants_1.STATUS.ON) {
295
- return zone_obj.holdActivity[0];
296
- }
297
- else {
298
- const now = new Date();
299
- const program_obj = SystemConfigModelReadOnly.getZone(data_object, zone).program[0];
300
- const today_schedule = program_obj.day[now.getDay()].period.filter(period => period.enabled[0] === constants_1.STATUS.ON).reverse();
301
- for (const i in today_schedule) {
302
- const time = today_schedule[i].time[0];
303
- const split = time.split(':');
304
- if (
305
- // The hour is past
306
- Number(split[0]) < now.getHours() ||
307
- // The hour is now, the minute is past
308
- (Number(split[0]) === now.getHours() && Number(split[1]) < now.getMinutes())) {
309
- return today_schedule[i].activity[0];
310
- }
311
- }
312
- // If we got to the end without finding the next activity, it means the activity is the last from yesterday
313
- const yesterday_schedule = program_obj['day'][(now.getDay() + 8) % 7].period.filter(period => period.enabled[0] === constants_1.STATUS.ON).reverse();
314
- return yesterday_schedule[0].activity[0];
315
- }
316
- }
317
- async getZoneActivity(zone) {
318
- await this.fetch();
319
- return SystemConfigModelReadOnly.getZoneActivity(this.data_object, zone);
320
- }
321
- static getZoneActivityConfig(data_object, zone, activity_name) {
322
- // Vacation is stored somewhere else...
323
- if (activity_name === constants_1.ACTIVITY.VACATION) {
324
- return {
325
- '$': { id: constants_1.ACTIVITY.VACATION },
326
- clsp: data_object.config.vacmaxt,
327
- htsp: data_object.config.vacmint,
328
- fan: data_object.config.vacfan,
329
- previousFan: [],
330
- };
331
- }
332
- const activities_obj = SystemConfigModelReadOnly.getZone(data_object, zone).activities[0];
333
- return activities_obj['activity'].find((activity) => activity['$'].id === activity_name);
334
- }
335
- async getZoneActivityConfig(zone, activity_name) {
336
- await this.fetch();
337
- return SystemConfigModelReadOnly.getZoneActivityConfig(this.data_object, zone, activity_name);
338
- }
339
- async getZoneActivityFan(zone, activity) {
340
- const activity_obj = await this.getZoneActivityConfig(zone, activity);
341
- return activity_obj.fan[0];
342
- }
343
- async getZoneActivityCoolSetpoint(zone, activity) {
344
- const activity_obj = await this.getZoneActivityConfig(zone, activity);
345
- return Number(activity_obj.clsp[0]);
346
- }
347
- async getZoneActivityHeatSetpoint(zone, activity) {
348
- const activity_obj = await this.getZoneActivityConfig(zone, activity);
349
- return Number(activity_obj.htsp[0]);
350
- }
351
- async getZoneNextActivityTime(zone) {
352
- const now = new Date();
353
- const program_obj = (await this.getZone(zone)).program[0];
354
- const day_obj = program_obj['day'][now.getDay()];
355
- for (const i in day_obj['period']) {
356
- const time = day_obj['period'][i].time[0];
357
- const split = time.split(':');
358
- if (
359
- // The hour is nigh
360
- Number(split[0]) > now.getHours() ||
361
- // The hour is now, the minute is nigh
362
- (Number(split[0]) === now.getHours() && Number(split[1]) > now.getMinutes())) {
363
- return time;
364
- }
365
- }
366
- // If we got to the end without finding the next activity, it means the next activity is the first from tomorrow
367
- const tomorrow_obj = program_obj['day'][(now.getDay() + 1) % 7];
368
- return tomorrow_obj['period'][0].time[0];
369
- }
370
- }
371
- exports.SystemConfigModelReadOnly = SystemConfigModelReadOnly;
372
- class SystemConfigModel extends SystemConfigModelReadOnly {
373
- constructor() {
374
- super(...arguments);
375
- /*
376
- * A writable version of the system config model.
377
- *
378
- * Provides a set data api, which is cached locally, and periodically pushed
379
- * out to the carrier api.
380
- */
381
- this.mutations = [];
382
- }
383
- // Skip fetching new data when we have a dirty local state.
384
- async fetch() {
385
- if (this.mutations.length > 0) {
386
- return;
387
- }
388
- await super.fetch();
389
- }
390
- async push() {
391
- // While waiting to push to api, push locally to HK.
392
- this.events.emit(constants_1.SUBSCRIPTION.CONFIG_MUTATE);
393
- // Wait a bit so we can catch other mutations that came in around the
394
- // same time.
395
- await new Promise(r => setTimeout(r, 2000));
396
- // We only ever need 2 pushes ongoing at a time. One active, and one pending.
397
- // The first one will handle mutations available at its start, and the next
398
- // one will cover mutations that arrived during the previous's run.
399
- // First, to make sure we only ever have one 'pending' push, cancel any other
400
- // possible 'pending' pushes, and make this one become the 'pending' push.
401
- this.write_lock.cancel();
402
- // Then, grab the lock. so this push can move from 'pending' to 'active'.
403
- try {
404
- await this.write_lock.runExclusive(async () => {
405
- // 1. Do mutations
406
- const mutated = await this.mutate();
407
- if (mutated === null) {
408
- return;
409
- }
410
- const [mutated_hash, mutated_data_object] = mutated;
411
- // 2. Push
412
- await this.forcePush(mutated_data_object);
413
- this.log.info('... pushing changes complete.');
414
- // 3. Confirm
415
- await new Promise(r => setTimeout(r, 5000));
416
- if (this.mutations.length > 0) {
417
- // If local state is dirty (from new mutations queued during push)
418
- // don't do a forceFetch or it will cause apparent bouncing, let the
419
- // next push refresh from remote api state.
420
- // This is safe because mutations are always done on a fresh fetched
421
- // config, even if local config is dirty or stale.
422
- return;
423
- }
424
- await this.forceFetch();
425
- if (mutated_hash === this.data_object_hash) {
426
- this.log.debug('Successful propagation to carrier api is confirmed.');
427
- }
428
- else {
429
- this.log.warn('Changes do not (yet?) appear to have propagated to the carrier api.');
430
- }
431
- });
432
- }
433
- catch (e) {
434
- if (e === async_mutex_1.E_CANCELED) {
435
- return;
436
- }
437
- else if (e === async_mutex_1.E_TIMEOUT || e === async_mutex_1.E_ALREADY_LOCKED) {
438
- this.log.error(`Deadlock on push ${e}. Report bug: https://bit.ly/3igbU7D`);
439
- }
440
- else {
441
- this.log.error('Failed to push updates: ', axios_1.default.isAxiosError(e) ? e.message : e);
442
- }
443
- }
444
- }
445
- async mutate() {
446
- // short circuit if no mutations in queue
447
- if (this.mutations.length === 0) {
448
- return null;
449
- }
450
- // Refresh config, to make sure we don't write back old data accidentally.
451
- const stale_hash = this.data_object_hash;
452
- const [fresh_hash, fresh_data_object] = await this.forceFetchInternal();
453
- if (stale_hash !== fresh_hash) {
454
- this.log.warn('Cached config was stale before mutation and push.');
455
- }
456
- // Take config mutations of the queue and run them against the fresh object.
457
- // This ensures we don't overwrite other data if the api config has changed,
458
- // and avoids a race condition where new mutations come in during the push.
459
- const mutated_data_object = fresh_data_object;
460
- while (this.mutations.length > 0) {
461
- const m = this.mutations.shift();
462
- if (m) {
463
- m(mutated_data_object);
464
- }
465
- }
466
- const mutated_hash = this.hashDataObject(mutated_data_object);
467
- // If nothing actually changed, no need to push.
468
- if (fresh_hash === mutated_hash) {
469
- this.log.warn('Config doesn\'t appear to have changed. No changes sent.');
470
- return null;
471
- }
472
- return [mutated_hash, mutated_data_object];
473
- }
474
- async forcePush(data_object) {
475
- this.log.info('Pushing changes to carrier api...');
476
- const builder = new xml2js.Builder();
477
- const new_xml = builder.buildObject(data_object);
478
- const data = `data=${encodeURIComponent(new_xml)}`;
479
- await this.infinity_client.axios.post(this.getPath(), data, {
480
- headers: {
481
- 'Content-Type': 'application/x-www-form-urlencoded',
482
- },
483
- });
484
- }
485
- async setMode(mode) {
486
- this.log.debug('Setting mode to ' + mode);
487
- const m = (data_object) => {
488
- SystemConfigModel.mutateMode(data_object, mode);
489
- };
490
- // Mutate the local state to propagate changes throughout HK.
491
- m(this.data_object);
492
- // Schedule the push event, but don't wait for it to return.
493
- this.mutations.push(m);
494
- this.push();
495
- }
496
- static mutateMode(data_object, mode) {
497
- data_object.config.mode[0] = mode;
498
- }
499
- async setZoneActivityHold(zone, activity, hold_until) {
500
- this.log.debug(`Setting zone ${zone} activity to ${activity} until ${hold_until}`);
501
- const m = (data_object) => {
502
- SystemConfigModel.mutateZoneActivityHold(data_object, zone, activity, hold_until);
503
- };
504
- // Mutate the local state to propagate changes throughout HK.
505
- m(this.data_object);
506
- // Schedule the push event, but don't wait for it to return.
507
- this.mutations.push(m);
508
- this.push();
509
- }
510
- static mutateZoneActivityHold(data_object, zone, activity, hold_until) {
511
- const zone_obj = SystemConfigModel.getZone(data_object, zone);
512
- zone_obj['holdActivity'][0] = activity;
513
- zone_obj['hold'][0] = activity ? constants_1.STATUS.ON : constants_1.STATUS.OFF;
514
- zone_obj['otmr'][0] = activity ? hold_until || '' : '';
515
- }
516
- async setZoneActivityManualHold(zone, clsp, htsp, hold_until, fan = null) {
517
- this.log.debug(`Setting zone ${zone} to`, clsp ? `clsp=${clsp}` : '', htsp ? `htsp=${htsp}` : '', fan ? `fan=${fan}` : '', '.');
518
- const m = (data_object) => {
519
- // Modify MANUAL activity to the requested setpoints
520
- SystemConfigModel.mutateZoneActivityManualHold(data_object, zone, clsp, htsp, fan);
521
- // Set hold to MANUAL activity
522
- SystemConfigModel.mutateZoneActivityHold(data_object, zone, constants_1.ACTIVITY.MANUAL, hold_until);
523
- };
524
- // Mutate the local state to propagate changes throughout HK.
525
- m(this.data_object);
526
- // Schedule the push event, but don't wait for it to return.
527
- this.mutations.push(m);
528
- this.push();
529
- }
530
- static mutateZoneActivityManualHold(data_object, zone, clsp, htsp, fan = null) {
531
- const zone_obj = SystemConfigModel.getZone(data_object, zone);
532
- // When moving to manual activity, default to prev activity settings.
533
- const manual_activity_obj = SystemConfigModel.getZoneActivityConfig(data_object, zone, constants_1.ACTIVITY.MANUAL);
534
- if (zone_obj['holdActivity'][0] !== constants_1.ACTIVITY.MANUAL) {
535
- const prev_activity_obj = SystemConfigModel.getZoneActivityConfig(data_object, zone, SystemConfigModel.getZoneActivity(data_object, zone));
536
- manual_activity_obj['clsp'][0] = prev_activity_obj['clsp'][0];
537
- manual_activity_obj['htsp'][0] = prev_activity_obj['htsp'][0];
538
- manual_activity_obj['fan'][0] = prev_activity_obj['fan'][0];
539
- }
540
- // Set setpoints on manual activity
541
- [htsp, clsp] = (0, helpers_1.processSetpointDeadband)(htsp || parseFloat(manual_activity_obj['htsp'][0]), clsp || parseFloat(manual_activity_obj['clsp'][0]), SystemConfigModel.getUnits(data_object),
542
- // when setpoints are too close, make clsp sticky when no change made to htsp
543
- htsp === null);
544
- manual_activity_obj['htsp'][0] = htsp.toFixed(1);
545
- manual_activity_obj['clsp'][0] = clsp.toFixed(1);
546
- // Set fan on manual activity
547
- if (fan) {
548
- manual_activity_obj['fan'][0] = fan;
549
- }
550
- }
551
- }
552
- exports.SystemConfigModel = SystemConfigModel;
553
- class SystemModel {
554
- constructor(infinity_client, serialNumber) {
555
- this.infinity_client = infinity_client;
556
- this.serialNumber = serialNumber;
557
- this.log = new helper_logging_1.PrefixLogger(this.infinity_client.log, this.serialNumber);
558
- this.events = new events_1.default().setMaxListeners(100);
559
- const api_logger = new helper_logging_1.PrefixLogger(this.log, 'API');
560
- this.status = new SystemStatusModel(infinity_client, serialNumber, api_logger, this.events);
561
- this.config = new SystemConfigModel(infinity_client, serialNumber, api_logger, this.events);
562
- this.profile = new SystemProfileModel(infinity_client, serialNumber, api_logger, this.events);
563
- // Periodically ping the carrier api to keep it in sync with the thermostat.
564
- // By fetching status, we both make sure 'activate' gets called, and
565
- // internal state of status is updated, which will push updates to HK.
566
- setInterval(() => {
567
- this.status.fetch();
568
- }, 30 * 60 * 1000); // every 30 min
569
- }
570
- }
571
- exports.SystemModel = SystemModel;
572
- //# sourceMappingURL=models.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"models.js","sourceRoot":"","sources":["../../src/api/models.ts"],"names":[],"mappings":"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"}
@@ -1,6 +0,0 @@
1
- import { InternalAxiosRequestConfig } from 'axios';
2
- export declare class OAuthHeaders {
3
- static genHeader(httpMethod: string, url: string, username: string, token: string, data: string | null): string;
4
- static intercept(config: InternalAxiosRequestConfig, username: string, token: string): InternalAxiosRequestConfig;
5
- }
6
- //# sourceMappingURL=oauth.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"oauth.d.ts","sourceRoot":"","sources":["../../src/api/oauth.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,0BAA0B,EAAE,MAAM,OAAO,CAAC;AAGnD,qBAAa,YAAY;IACvB,MAAM,CAAC,SAAS,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM;IA4C/G,MAAM,CAAC,SAAS,CAAC,MAAM,EAAE,0BAA0B,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,0BAA0B;CAIlH"}
package/dist/api/oauth.js DELETED
@@ -1,49 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.OAuthHeaders = void 0;
7
- const settings_1 = require("../settings");
8
- const crypto_1 = __importDefault(require("crypto"));
9
- const oauth_sign_1 = require("oauth-sign");
10
- class OAuthHeaders {
11
- static genHeader(httpMethod, url, username, token, data) {
12
- // Needed for header and sig
13
- const sig_header_params = {
14
- oauth_consumer_key: settings_1.INFINITY_API_CONSUMER_KEY,
15
- oauth_token: username,
16
- oauth_signature_method: 'HMAC-SHA1',
17
- oauth_timestamp: Math.floor(Date.now() / 1000),
18
- oauth_nonce: crypto_1.default.randomBytes(12).toString('base64'),
19
- oauth_version: '1.0',
20
- };
21
- // If there is post data, we need to include it
22
- const sig_body_params = {};
23
- if (data) {
24
- const pairs = data.split('&');
25
- for (const i in pairs) {
26
- const pair = pairs[i].split('=');
27
- sig_body_params[pair[0]] = decodeURIComponent(pair[1]);
28
- }
29
- }
30
- const sig_params = Object.assign({}, sig_header_params, sig_body_params);
31
- // Make the sig
32
- const signature = (0, oauth_sign_1.sign)(sig_header_params['oauth_signature_method'], httpMethod, 'http://' + url, sig_params, settings_1.INFINITY_API_CONSUMER_SECRET, token);
33
- // Turn into header
34
- const header_params = [
35
- `realm=${encodeURIComponent(url)}`,
36
- ];
37
- for (const k in sig_header_params) {
38
- header_params.push(`${k}=${sig_params[k]}`);
39
- }
40
- header_params.push(`oauth_signature=${encodeURIComponent(signature)}`);
41
- return `OAuth ${header_params.join(',')}`;
42
- }
43
- static intercept(config, username, token) {
44
- config.headers['Authorization'] = this.genHeader(config.method || 'GET', config.url || '/', username, token, config.data);
45
- return config;
46
- }
47
- }
48
- exports.OAuthHeaders = OAuthHeaders;
49
- //# sourceMappingURL=oauth.js.map