@homebridge-plugins/homebridge-smarthq 0.4.12 → 0.4.14

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.
package/CHANGELOG.md CHANGED
@@ -2,6 +2,156 @@
2
2
 
3
3
  All notable changes to this project will be documented in this file. This project uses [Semantic Versioning](https://semver.org/).
4
4
 
5
+ ## [0.4.13](https://github.com/homebridge-plugins/homebridge-smarthq/compare/v0.4.12...v0.4.13) (2026-01-14)
6
+
7
+
8
+
9
+ ## [0.4.12](https://github.com/homebridge-plugins/homebridge-smarthq/compare/v0.4.11...v0.4.12) (2026-01-14)
10
+
11
+
12
+ ### Bug Fixes
13
+
14
+ * handle undefined values for fan speed and light level in SmartHQ… ([#74](https://github.com/homebridge-plugins/homebridge-smarthq/issues/74)) ([777a8a0](https://github.com/homebridge-plugins/homebridge-smarthq/commit/777a8a0cb3096068c8193b49c5b90447bcc82929))
15
+
16
+
17
+
18
+ ## [0.4.11](https://github.com/homebridge-plugins/homebridge-smarthq/compare/v0.4.10...v0.4.11) (2025-12-22)
19
+
20
+
21
+
22
+ ## [0.4.10](https://github.com/homebridge-plugins/homebridge-smarthq/compare/v0.4.9...v0.4.10) (2025-12-22)
23
+
24
+
25
+
26
+ ## [0.4.9](https://github.com/homebridge-plugins/homebridge-smarthq/compare/v0.4.8...v0.4.9) (2025-12-22)
27
+
28
+
29
+
30
+ ## [0.4.8](https://github.com/homebridge-plugins/homebridge-smarthq/compare/v0.4.7...v0.4.8) (2025-12-22)
31
+
32
+
33
+
34
+ ## [0.4.7](https://github.com/homebridge-plugins/homebridge-smarthq/compare/v0.4.6...v0.4.7) (2025-12-22)
35
+
36
+
37
+
38
+ ## [0.4.6](https://github.com/homebridge-plugins/homebridge-smarthq/compare/v0.4.4...v0.4.6) (2025-12-22)
39
+
40
+
41
+
42
+ ## [0.4.4](https://github.com/homebridge-plugins/homebridge-smarthq/compare/v0.4.3...v0.4.4) (2025-12-22)
43
+
44
+
45
+ ### Reverts
46
+
47
+ * Revert "update dependenices" ([b3fe90e](https://github.com/homebridge-plugins/homebridge-smarthq/commit/b3fe90ea172fb78b8acd360695cbc3c6b97f0326))
48
+
49
+
50
+
51
+ ## [0.4.3](https://github.com/homebridge-plugins/homebridge-smarthq/compare/v0.4.1...v0.4.3) (2025-12-22)
52
+
53
+
54
+ ### Features
55
+
56
+ * support hood ([#57](https://github.com/homebridge-plugins/homebridge-smarthq/issues/57)) ([2659b21](https://github.com/homebridge-plugins/homebridge-smarthq/commit/2659b21a0a483cb15e0622733f58d75603d99cab))
57
+
58
+
59
+
60
+ ## [0.4.1](https://github.com/homebridge-plugins/homebridge-smarthq/compare/v0.4.0...v0.4.1) (2025-09-18)
61
+
62
+
63
+ ### Bug Fixes
64
+
65
+ * **air conditioner:** fix temperature setting and update switch display names ([#38](https://github.com/homebridge-plugins/homebridge-smarthq/issues/38)) ([1675205](https://github.com/homebridge-plugins/homebridge-smarthq/commit/16752059c93d6a5b26b782f2b42246e622b4b830))
66
+ * **air conditioner:** preserve decimal precision when converting Celsius to Fahrenheit ([#40](https://github.com/homebridge-plugins/homebridge-smarthq/issues/40)) ([38c8285](https://github.com/homebridge-plugins/homebridge-smarthq/commit/38c82852015d8ea0ceb0f4dd4b9ddf0622f57963))
67
+ * **air conditioner:** report all operating modes off when unit is off ([#42](https://github.com/homebridge-plugins/homebridge-smarthq/issues/42)) ([d44ebe3](https://github.com/homebridge-plugins/homebridge-smarthq/commit/d44ebe34590a2da6645e30db0db269e1dbbe4f3b))
68
+
69
+
70
+ ### Features
71
+
72
+ * add Portable AC as supported device ([#45](https://github.com/homebridge-plugins/homebridge-smarthq/issues/45)) ([50d83b1](https://github.com/homebridge-plugins/homebridge-smarthq/commit/50d83b1e003d8d238485459a5c882f357e1c61fb))
73
+
74
+
75
+
76
+ # [0.4.0](https://github.com/homebridge-plugins/homebridge-smarthq/compare/v0.2.0...v0.4.0) (2025-06-27)
77
+
78
+
79
+
80
+ # 0.2.0 (2025-02-23)
81
+
82
+ ## [0.4.12](https://github.com/homebridge-plugins/homebridge-smarthq/compare/v0.4.11...v0.4.12) (2026-01-14)
83
+
84
+
85
+ ### Bug Fixes
86
+
87
+ * handle undefined values for fan speed and light level in SmartHQ… ([#74](https://github.com/homebridge-plugins/homebridge-smarthq/issues/74)) ([777a8a0](https://github.com/homebridge-plugins/homebridge-smarthq/commit/777a8a0cb3096068c8193b49c5b90447bcc82929))
88
+
89
+
90
+
91
+ ## [0.4.11](https://github.com/homebridge-plugins/homebridge-smarthq/compare/v0.4.10...v0.4.11) (2025-12-22)
92
+
93
+
94
+
95
+ ## [0.4.10](https://github.com/homebridge-plugins/homebridge-smarthq/compare/v0.4.9...v0.4.10) (2025-12-22)
96
+
97
+
98
+
99
+ ## [0.4.9](https://github.com/homebridge-plugins/homebridge-smarthq/compare/v0.4.8...v0.4.9) (2025-12-22)
100
+
101
+
102
+
103
+ ## [0.4.8](https://github.com/homebridge-plugins/homebridge-smarthq/compare/v0.4.7...v0.4.8) (2025-12-22)
104
+
105
+
106
+
107
+ ## [0.4.7](https://github.com/homebridge-plugins/homebridge-smarthq/compare/v0.4.6...v0.4.7) (2025-12-22)
108
+
109
+
110
+
111
+ ## [0.4.6](https://github.com/homebridge-plugins/homebridge-smarthq/compare/v0.4.4...v0.4.6) (2025-12-22)
112
+
113
+
114
+
115
+ ## [0.4.4](https://github.com/homebridge-plugins/homebridge-smarthq/compare/v0.4.3...v0.4.4) (2025-12-22)
116
+
117
+
118
+ ### Reverts
119
+
120
+ * Revert "update dependenices" ([b3fe90e](https://github.com/homebridge-plugins/homebridge-smarthq/commit/b3fe90ea172fb78b8acd360695cbc3c6b97f0326))
121
+
122
+
123
+
124
+ ## [0.4.3](https://github.com/homebridge-plugins/homebridge-smarthq/compare/v0.4.1...v0.4.3) (2025-12-22)
125
+
126
+
127
+ ### Features
128
+
129
+ * support hood ([#57](https://github.com/homebridge-plugins/homebridge-smarthq/issues/57)) ([2659b21](https://github.com/homebridge-plugins/homebridge-smarthq/commit/2659b21a0a483cb15e0622733f58d75603d99cab))
130
+
131
+
132
+
133
+ ## [0.4.1](https://github.com/homebridge-plugins/homebridge-smarthq/compare/v0.4.0...v0.4.1) (2025-09-18)
134
+
135
+
136
+ ### Bug Fixes
137
+
138
+ * **air conditioner:** fix temperature setting and update switch display names ([#38](https://github.com/homebridge-plugins/homebridge-smarthq/issues/38)) ([1675205](https://github.com/homebridge-plugins/homebridge-smarthq/commit/16752059c93d6a5b26b782f2b42246e622b4b830))
139
+ * **air conditioner:** preserve decimal precision when converting Celsius to Fahrenheit ([#40](https://github.com/homebridge-plugins/homebridge-smarthq/issues/40)) ([38c8285](https://github.com/homebridge-plugins/homebridge-smarthq/commit/38c82852015d8ea0ceb0f4dd4b9ddf0622f57963))
140
+ * **air conditioner:** report all operating modes off when unit is off ([#42](https://github.com/homebridge-plugins/homebridge-smarthq/issues/42)) ([d44ebe3](https://github.com/homebridge-plugins/homebridge-smarthq/commit/d44ebe34590a2da6645e30db0db269e1dbbe4f3b))
141
+
142
+
143
+ ### Features
144
+
145
+ * add Portable AC as supported device ([#45](https://github.com/homebridge-plugins/homebridge-smarthq/issues/45)) ([50d83b1](https://github.com/homebridge-plugins/homebridge-smarthq/commit/50d83b1e003d8d238485459a5c882f357e1c61fb))
146
+
147
+
148
+
149
+ # [0.4.0](https://github.com/homebridge-plugins/homebridge-smarthq/compare/v0.2.0...v0.4.0) (2025-06-27)
150
+
151
+
152
+
153
+ # 0.2.0 (2025-02-23)
154
+
5
155
  ## [0.4.11](https://github.com/homebridge-plugins/homebridge-smarthq/compare/v0.4.10...v0.4.11) (2025-12-22)
6
156
 
7
157
 
@@ -1 +1 @@
1
- {"version":3,"file":"getAccessToken.d.ts","sourceRoot":"","sources":["../src/getAccessToken.ts"],"names":[],"mappings":"AAoBA,wBAAsB,kBAAkB,CAAC,aAAa,EAAE,MAAM,6CAG7D;AAED,wBAA8B,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,6CAuC9E"}
1
+ {"version":3,"file":"getAccessToken.d.ts","sourceRoot":"","sources":["../src/getAccessToken.ts"],"names":[],"mappings":"AAoBA,wBAAsB,kBAAkB,CAAC,aAAa,EAAE,MAAM,6CAG7D;AAED,wBAA8B,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,6CAoN9E"}
@@ -4,7 +4,7 @@ import * as cheerio from 'cheerio';
4
4
  import pkg from 'lodash';
5
5
  import { Issuer } from 'openid-client';
6
6
  import { CookieJar } from 'tough-cookie';
7
- import { OAUTH2_CLIENT_ID, OAUTH2_CLIENT_SECRET, OAUTH2_REDIRECT_URI } from './settings.js';
7
+ import { OAUTH2_CLIENT_ID, OAUTH2_CLIENT_SECRET, OAUTH2_REDIRECT_URI, LOGIN_URL } from './settings.js';
8
8
  const { keyBy, mapValues } = pkg;
9
9
  const oidcClient = Issuer.discover('https://accounts.brillion.geappliances.com/').then(geData => new geData.Client({
10
10
  client_id: OAUTH2_CLIENT_ID,
@@ -35,10 +35,192 @@ export default async function getAccessToken(username, password) {
35
35
  maxRedirects: 0,
36
36
  validateStatus: () => true,
37
37
  });
38
- if (!res.headers.location) {
39
- throw new Error('Authentication failed: No redirect location received');
38
+ // If the initial POST did not return a redirect with the code, the login
39
+ // flow may have hit an intermediate page (MFA enrollment or Terms acceptance).
40
+ // Attempt to handle those pages automatically; fall back to an error with
41
+ // guidance if not possible.
42
+ const tryExtractCodeFromLocation = (location) => {
43
+ if (!location)
44
+ return null;
45
+ try {
46
+ return new URL(location).searchParams.get('code');
47
+ }
48
+ catch (e) {
49
+ // Handle relative URLs
50
+ try {
51
+ const full = location.startsWith('/') ? `${LOGIN_URL}${location}` : location;
52
+ return new URL(full).searchParams.get('code');
53
+ }
54
+ catch (e) {
55
+ return null;
56
+ }
57
+ }
58
+ };
59
+ let code = tryExtractCodeFromLocation(res.headers.location);
60
+ if (!code) {
61
+ // Try to handle HTML response pages (MFA or Terms)
62
+ const asyncHandleOkResponse = async (respText) => {
63
+ // MFA enrollment page
64
+ if (respText.includes('Add Multi-Factor Authentication') || respText.includes('addMfaForm')) {
65
+ try {
66
+ const $ = cheerio.load(respText);
67
+ const mfaForm = $('#addMfaForm');
68
+ if (!mfaForm || mfaForm.length === 0) {
69
+ throw new Error('MFA form not found');
70
+ }
71
+ const formData = {};
72
+ mfaForm.find('input').each((i, el) => {
73
+ const name = $(el).attr('name');
74
+ if (!name)
75
+ return;
76
+ formData[name] = $(el).val() || '';
77
+ });
78
+ // Try meta tag for CSRF if not present
79
+ if (!formData['_csrf']) {
80
+ const csrfMeta = $('meta[name="_csrf"]').attr('content');
81
+ if (csrfMeta)
82
+ formData['_csrf'] = csrfMeta;
83
+ }
84
+ const postData = new URLSearchParams(formData);
85
+ const skipResp = await aclient({
86
+ method: 'POST',
87
+ url: `${LOGIN_URL}/account/active/redirect`,
88
+ data: postData,
89
+ headers: { 'content-type': 'application/x-www-form-urlencoded' },
90
+ maxRedirects: 0,
91
+ validateStatus: () => true,
92
+ });
93
+ const loc = skipResp.headers.location;
94
+ const gotCode = tryExtractCodeFromLocation(loc);
95
+ if (gotCode)
96
+ return gotCode;
97
+ // Follow redirect manually if provided
98
+ if (loc) {
99
+ const resolved = loc.startsWith('/') ? `${LOGIN_URL}${loc}` : loc;
100
+ const redirectResp = await aclient.get(resolved, { maxRedirects: 0, validateStatus: () => true });
101
+ const finalLoc = redirectResp.headers.location;
102
+ const finalCode = tryExtractCodeFromLocation(finalLoc);
103
+ if (finalCode)
104
+ return finalCode;
105
+ if (redirectResp.status === 200)
106
+ return await asyncHandleOkResponse(await redirectResp.data);
107
+ }
108
+ if (skipResp.status === 200)
109
+ return await asyncHandleOkResponse(await skipResp.data);
110
+ throw new Error('MFA skip failed');
111
+ }
112
+ catch (e) {
113
+ throw new Error(`MFA handling failed: ${e.message}`);
114
+ }
115
+ }
116
+ // Terms acceptance page
117
+ if (respText.includes('Almost Finished') && respText.includes('/oauth2/terms/accept')) {
118
+ try {
119
+ const $ = cheerio.load(respText);
120
+ let termsForm = $('#termsform');
121
+ if (!termsForm || termsForm.length === 0) {
122
+ termsForm = $("form[name='termsform']");
123
+ }
124
+ if (!termsForm || termsForm.length === 0) {
125
+ // Fallback: try to extract required fields with regex
126
+ const formData = {};
127
+ const sigMatch = respText.match(/name="signature"\\s+value="([^\"]+)"/);
128
+ if (sigMatch)
129
+ formData['signature'] = sigMatch[1];
130
+ const lasMatch = respText.match(/name="login_actions_signature"[^>]*value=([^>\\s>]+)/);
131
+ if (lasMatch)
132
+ formData['login_actions_signature'] = lasMatch[1].replace(/>$/, '');
133
+ const devMatch = respText.match(/name="isDeveloper"\\s+value="([^\"]+)"/);
134
+ if (devMatch)
135
+ formData['isDeveloper'] = devMatch[1];
136
+ const csrfMatch = respText.match(/name="_csrf"\\s+value="([^\"]+)"/);
137
+ if (csrfMatch)
138
+ formData['_csrf'] = csrfMatch[1];
139
+ formData['developerTerms'] = 'on';
140
+ formData['connected_terms'] = 'on';
141
+ const headers = {};
142
+ if (formData['_csrf'])
143
+ headers['X-CSRF-TOKEN'] = formData['_csrf'];
144
+ const termsResp = await aclient({
145
+ method: 'POST',
146
+ url: `${LOGIN_URL}/oauth2/terms/accept`,
147
+ data: new URLSearchParams(formData),
148
+ headers: { 'content-type': 'application/x-www-form-urlencoded', ...headers },
149
+ maxRedirects: 0,
150
+ validateStatus: () => true,
151
+ });
152
+ const loc = termsResp.headers.location;
153
+ const gotCode = tryExtractCodeFromLocation(loc);
154
+ if (gotCode)
155
+ return gotCode;
156
+ if (loc) {
157
+ const resolved = loc.startsWith('/') ? `${LOGIN_URL}${loc}` : loc;
158
+ const redirectResp = await aclient.get(resolved, { maxRedirects: 0, validateStatus: () => true });
159
+ const finalCode = tryExtractCodeFromLocation(redirectResp.headers.location);
160
+ if (finalCode)
161
+ return finalCode;
162
+ if (redirectResp.status === 200)
163
+ return await asyncHandleOkResponse(await redirectResp.data);
164
+ }
165
+ if (termsResp.status === 200)
166
+ return await asyncHandleOkResponse(await termsResp.data);
167
+ throw new Error('Terms acceptance failed');
168
+ }
169
+ // Collect inputs from the form
170
+ const formData = {};
171
+ termsForm.find('input').each((i, el) => {
172
+ const name = $(el).attr('name');
173
+ if (!name)
174
+ return;
175
+ formData[name] = $(el).val() || '';
176
+ });
177
+ // Set checkboxes to accepted
178
+ formData['developerTerms'] = 'on';
179
+ formData['connected_terms'] = 'on';
180
+ if (!formData['_csrf']) {
181
+ const csrfMeta = $('meta[name="_csrf"]').attr('content');
182
+ if (csrfMeta)
183
+ formData['_csrf'] = csrfMeta;
184
+ }
185
+ const headers = {};
186
+ if (formData['_csrf'])
187
+ headers['X-CSRF-TOKEN'] = formData['_csrf'];
188
+ const termsResp = await aclient({
189
+ method: 'POST',
190
+ url: `${LOGIN_URL}/oauth2/terms/accept`,
191
+ data: new URLSearchParams(formData),
192
+ headers: { 'content-type': 'application/x-www-form-urlencoded', ...headers },
193
+ maxRedirects: 0,
194
+ validateStatus: () => true,
195
+ });
196
+ const loc = termsResp.headers.location;
197
+ const gotCode = tryExtractCodeFromLocation(loc);
198
+ if (gotCode)
199
+ return gotCode;
200
+ if (loc) {
201
+ const resolved = loc.startsWith('/') ? `${LOGIN_URL}${loc}` : loc;
202
+ const redirectResp = await aclient.get(resolved, { maxRedirects: 0, validateStatus: () => true });
203
+ const finalCode = tryExtractCodeFromLocation(redirectResp.headers.location);
204
+ if (finalCode)
205
+ return finalCode;
206
+ if (redirectResp.status === 200)
207
+ return await asyncHandleOkResponse(await redirectResp.data);
208
+ }
209
+ if (termsResp.status === 200)
210
+ return await asyncHandleOkResponse(await termsResp.data);
211
+ throw new Error('Terms acceptance failed');
212
+ }
213
+ catch (e) {
214
+ throw new Error(`Terms handling failed: ${e.message}`);
215
+ }
216
+ }
217
+ throw new Error('Authentication failed: No authorization code received and no known intermediate page detected');
218
+ };
219
+ // If we have HTML in the response, try to handle it
220
+ if (res.data && typeof res.data === 'string') {
221
+ code = await asyncHandleOkResponse(res.data);
222
+ }
40
223
  }
41
- const code = new URL(res.headers.location).searchParams.get('code');
42
224
  if (!code) {
43
225
  throw new Error('Authentication failed: No authorization code received');
44
226
  }
@@ -1 +1 @@
1
- {"version":3,"file":"getAccessToken.js","sourceRoot":"","sources":["../src/getAccessToken.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"getAccessToken.js","sourceRoot":"","sources":["../src/getAccessToken.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"platform.d.ts","sourceRoot":"","sources":["../src/platform.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"platform.d.ts","sourceRoot":"","sources":["../src/platform.ts"],"names":[],"mappings":"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"}
package/dist/platform.js CHANGED
@@ -130,8 +130,41 @@ export class SmartHQPlatform {
130
130
  this.tokenSet = await refreshAccessToken(this.tokenSet.refresh_token);
131
131
  }
132
132
  catch (e) {
133
- await this.errorLog(`Failed to refresh Access Token, Error Message: ${e.message ?? e}, Submit Bugs Here: https://bit.ly/smarthq-bug-report`);
134
- throw e; // Re-throw to stop execution
133
+ await this.debugErrorLog(`Failed to refresh Access Token, Error Message: ${e.message ?? e}`);
134
+ // Handle invalid_grant error (expired/revoked refresh token)
135
+ if (e.error === 'invalid_grant' || e.message?.includes('invalid_grant') || e.message?.includes('Invalid refresh token')) {
136
+ await this.debugWarnLog('Refresh token is invalid or expired. Attempting to re-authenticate with username and password...');
137
+ // Try to get a new token using username/password
138
+ const { username, password } = this.config.credentials ?? {};
139
+ if (username && password) {
140
+ try {
141
+ this.tokenSet = await getAccessToken(username, password);
142
+ await this.successLog('Successfully re-authenticated with credentials');
143
+ // Set up axios with new token
144
+ if (this.tokenSet.access_token) {
145
+ axios.defaults.headers.common = {
146
+ Authorization: `Bearer ${this.tokenSet.access_token}`,
147
+ };
148
+ // Schedule next refresh
149
+ if (this.tokenSet.expires_in) {
150
+ setTimeout(this.startRefreshTokenLogic.bind(this), 1000 * (this.tokenSet.expires_in - 2000));
151
+ }
152
+ return; // Successfully recovered
153
+ }
154
+ }
155
+ catch (reAuthError) {
156
+ await this.errorLog(`Failed to re-authenticate: ${reAuthError.message ?? reAuthError}`);
157
+ await this.errorLog('Please verify your SmartHQ credentials are correct in the Homebridge config');
158
+ await this.errorLog('You may need to log in to the GE SmartHQ app to ensure your account is active');
159
+ }
160
+ }
161
+ else {
162
+ await this.errorLog('No credentials available for re-authentication');
163
+ await this.errorLog('Please ensure username and password are set in your Homebridge config');
164
+ }
165
+ }
166
+ await this.errorLog('Submit Bugs Here: https://bit.ly/smarthq-bug-report');
167
+ throw e; // Re-throw to stop execution only if recovery failed
135
168
  }
136
169
  }
137
170
  else {
@@ -243,6 +276,7 @@ export class SmartHQPlatform {
243
276
  case 'Air Conditioner':
244
277
  case 'Portable AC':
245
278
  case 'Split Air Conditioner':
279
+ case 'Through Wall AC':
246
280
  await this.createSmartHQAirConditioner(userId, device, details, features);
247
281
  break;
248
282
  case 'Hood':