@homebridge-plugins/homebridge-smarthq 0.5.0-beta.4 → 0.5.0-beta.40
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/.github/ISSUE_TEMPLATE/config.yml +1 -1
- package/.github/copilot-instructions.md +361 -0
- package/.github/scripts/branch-helper.sh +41 -0
- package/.github/workflows/beta-release.yml +1 -1
- package/.github/workflows/release.yml +53 -17
- package/CHANGELOG.md +563 -18
- package/MATTER.md +304 -0
- package/README.md +15 -0
- package/config.schema.json +24 -5
- package/dist/devices/OpalIceMaker/Managers/OpalDescaleSvcManager.d.ts.map +1 -1
- package/dist/devices/OpalIceMaker/Managers/OpalDescaleSvcManager.js +3 -1
- package/dist/devices/OpalIceMaker/Managers/OpalDescaleSvcManager.js.map +1 -1
- package/dist/devices/OpalIceMaker/Managers/OpalFilterMaintenanceSvcManager.d.ts.map +1 -1
- package/dist/devices/OpalIceMaker/Managers/OpalFilterMaintenanceSvcManager.js +3 -1
- package/dist/devices/OpalIceMaker/Managers/OpalFilterMaintenanceSvcManager.js.map +1 -1
- package/dist/devices/OpalIceMaker/Managers/OpalPowerSvcManager.js +1 -1
- package/dist/devices/OpalIceMaker/Managers/OpalPowerSvcManager.js.map +1 -1
- package/dist/devices/OpalIceMaker/Managers/OpalProgressSvcManager.d.ts +1 -1
- package/dist/devices/OpalIceMaker/Managers/OpalProgressSvcManager.d.ts.map +1 -1
- package/dist/devices/OpalIceMaker/Managers/OpalProgressSvcManager.js +12 -5
- package/dist/devices/OpalIceMaker/Managers/OpalProgressSvcManager.js.map +1 -1
- package/dist/devices/OpalIceMaker/Managers/StatusManagers/OpalStatusBase.d.ts.map +1 -1
- package/dist/devices/OpalIceMaker/Managers/StatusManagers/OpalStatusBase.js +4 -2
- package/dist/devices/OpalIceMaker/Managers/StatusManagers/OpalStatusBase.js.map +1 -1
- package/dist/devices/OpalIceMaker/OpalDeviceBase.d.ts +3 -4
- package/dist/devices/OpalIceMaker/OpalDeviceBase.d.ts.map +1 -1
- package/dist/devices/OpalIceMaker/OpalDeviceBase.js +3 -18
- package/dist/devices/OpalIceMaker/OpalDeviceBase.js.map +1 -1
- package/dist/devices/advantium.d.ts +10 -0
- package/dist/devices/advantium.d.ts.map +1 -0
- package/dist/devices/advantium.js +75 -0
- package/dist/devices/advantium.js.map +1 -0
- package/dist/devices/airConditioner.d.ts +11 -2
- package/dist/devices/airConditioner.d.ts.map +1 -1
- package/dist/devices/airConditioner.js +111 -17
- package/dist/devices/airConditioner.js.map +1 -1
- package/dist/devices/beverageCenter.d.ts +10 -0
- package/dist/devices/beverageCenter.d.ts.map +1 -0
- package/dist/devices/beverageCenter.js +125 -0
- package/dist/devices/beverageCenter.js.map +1 -0
- package/dist/devices/clothesDryer.d.ts +21 -0
- package/dist/devices/clothesDryer.d.ts.map +1 -0
- package/dist/devices/clothesDryer.js +273 -0
- package/dist/devices/clothesDryer.js.map +1 -0
- package/dist/devices/clothesWasher.d.ts +21 -0
- package/dist/devices/clothesWasher.d.ts.map +1 -0
- package/dist/devices/clothesWasher.js +284 -0
- package/dist/devices/clothesWasher.js.map +1 -0
- package/dist/devices/coffeeMaker.d.ts +10 -0
- package/dist/devices/coffeeMaker.d.ts.map +1 -0
- package/dist/devices/coffeeMaker.js +79 -0
- package/dist/devices/coffeeMaker.js.map +1 -0
- package/dist/devices/device.d.ts +108 -13
- package/dist/devices/device.d.ts.map +1 -1
- package/dist/devices/device.js +381 -60
- package/dist/devices/device.js.map +1 -1
- package/dist/devices/dishwasher.d.ts +9 -3
- package/dist/devices/dishwasher.d.ts.map +1 -1
- package/dist/devices/dishwasher.js +164 -29
- package/dist/devices/dishwasher.js.map +1 -1
- package/dist/devices/hood.d.ts +41 -0
- package/dist/devices/hood.d.ts.map +1 -0
- package/dist/devices/hood.js +336 -0
- package/dist/devices/hood.js.map +1 -0
- package/dist/devices/microwave.d.ts +19 -0
- package/dist/devices/microwave.d.ts.map +1 -0
- package/dist/devices/microwave.js +147 -0
- package/dist/devices/microwave.js.map +1 -0
- package/dist/devices/oven.d.ts +9 -2
- package/dist/devices/oven.d.ts.map +1 -1
- package/dist/devices/oven.js +267 -43
- package/dist/devices/oven.js.map +1 -1
- package/dist/devices/refrigerator.d.ts +37 -2
- package/dist/devices/refrigerator.d.ts.map +1 -1
- package/dist/devices/refrigerator.js +583 -34
- package/dist/devices/refrigerator.js.map +1 -1
- package/dist/devices/waterFilter.d.ts +10 -0
- package/dist/devices/waterFilter.d.ts.map +1 -0
- package/dist/devices/waterFilter.js +67 -0
- package/dist/devices/waterFilter.js.map +1 -0
- package/dist/devices/waterHeater.d.ts +19 -0
- package/dist/devices/waterHeater.d.ts.map +1 -0
- package/dist/devices/waterHeater.js +161 -0
- package/dist/devices/waterHeater.js.map +1 -0
- package/dist/devices/waterSoftener.d.ts +10 -0
- package/dist/devices/waterSoftener.d.ts.map +1 -0
- package/dist/devices/waterSoftener.js +67 -0
- package/dist/devices/waterSoftener.js.map +1 -0
- package/dist/getAccessToken.d.ts.map +1 -1
- package/dist/getAccessToken.js +190 -2
- package/dist/getAccessToken.js.map +1 -1
- package/dist/platform.d.ts +32 -1
- package/dist/platform.d.ts.map +1 -1
- package/dist/platform.js +853 -151
- package/dist/platform.js.map +1 -1
- package/dist/platform.test.d.ts +2 -0
- package/dist/platform.test.d.ts.map +1 -0
- package/dist/platform.test.js +80 -0
- package/dist/platform.test.js.map +1 -0
- package/dist/settings.d.ts +24 -0
- package/dist/settings.d.ts.map +1 -1
- package/dist/settings.js +13 -0
- package/dist/settings.js.map +1 -1
- package/docs/assets/highlight.css +7 -0
- package/docs/assets/main.js +5 -5
- package/docs/assets/navigation.js +1 -0
- package/docs/assets/search.js +1 -0
- package/docs/assets/style.css +248 -226
- package/docs/classes/SmartHQPlatform.html +54 -56
- package/docs/hierarchy.html +1 -0
- package/docs/index.html +22 -12
- package/docs/interfaces/DeviceOptions.html +2 -3
- package/docs/interfaces/SmartHQPlatformConfig.html +6 -17
- package/docs/interfaces/SmartHqContext.html +6 -4
- package/docs/interfaces/SmartHqERDResponse.html +7 -8
- package/docs/interfaces/credentials.html +3 -4
- package/docs/interfaces/devicesConfig.html +9 -8
- package/docs/interfaces/options.html +7 -8
- package/docs/media/copilot-instructions.md +361 -0
- package/docs/modules.html +1 -2
- package/docs/variables/API_URL.html +1 -2
- package/docs/variables/ERD_CODES.html +1 -2
- package/docs/variables/ERD_TYPES.html +1 -2
- package/docs/variables/KEEPALIVE_TIMEOUT.html +1 -2
- package/docs/variables/LOGIN_URL.html +2 -3
- package/docs/variables/OAUTH2_CLIENT_ID.html +1 -2
- package/docs/variables/OAUTH2_CLIENT_SECRET.html +1 -2
- package/docs/variables/OAUTH2_REDIRECT_URI.html +1 -2
- package/docs/variables/PLATFORM_NAME.html +2 -3
- package/docs/variables/PLUGIN_NAME.html +2 -3
- package/docs/variables/SECURE_URL.html +2 -3
- package/docs/variables/default.html +1 -0
- package/package.json +22 -33
- package/typedoc.json +0 -4
- package/vitest.config.ts +6 -5
- package/.github/workflows/build.yml +0 -18
- package/.github/workflows/changerelease.yml +0 -11
- package/.github/workflows/labeler.yml +0 -9
- package/.github/workflows/release-drafter.yml +0 -14
- package/docs/assets/dmt/dmt-component-data.js +0 -1
- package/docs/assets/dmt/dmt-components.css +0 -20
- package/docs/assets/dmt/dmt-components.js +0 -67
- package/docs/assets/dmt/dmt-search.cmp +0 -0
- package/docs/assets/dmt/dmt-theme.css +0 -1
- package/docs/functions/default.html +0 -2
package/dist/getAccessToken.js
CHANGED
|
@@ -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,7 +35,195 @@ export default async function getAccessToken(username, password) {
|
|
|
35
35
|
maxRedirects: 0,
|
|
36
36
|
validateStatus: () => true,
|
|
37
37
|
});
|
|
38
|
-
|
|
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
|
+
}
|
|
223
|
+
}
|
|
224
|
+
if (!code) {
|
|
225
|
+
throw new Error('Authentication failed: No authorization code received');
|
|
226
|
+
}
|
|
39
227
|
return client.grant({ grant_type: 'authorization_code', code, redirect_uri: OAUTH2_REDIRECT_URI });
|
|
40
228
|
}
|
|
41
229
|
//# sourceMappingURL=getAccessToken.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getAccessToken.js","sourceRoot":"","sources":["../src/getAccessToken.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAA;AACjD,OAAO,KAAK,OAAO,MAAM,SAAS,CAAA;AAClC,OAAO,GAAG,MAAM,QAAQ,CAAA;AACxB,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAA;AACtC,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AAExC,OAAO,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAA;
|
|
1
|
+
{"version":3,"file":"getAccessToken.js","sourceRoot":"","sources":["../src/getAccessToken.ts"],"names":[],"mappings":"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"}
|
package/dist/platform.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { API, DynamicPlatformPlugin, HAP, Logging, PlatformAccessory } from 'homebridge';
|
|
2
|
-
import type { options, SmartHqContext, SmartHQPlatformConfig } from './settings.js';
|
|
2
|
+
import type { devicesConfig, options, SmartHqContext, SmartHQPlatformConfig } from './settings.js';
|
|
3
3
|
/**
|
|
4
4
|
* HomebridgePlatform
|
|
5
5
|
* This class is the main constructor for your plugin, this is where you should
|
|
@@ -21,6 +21,8 @@ export declare class SmartHQPlatform implements DynamicPlatformPlugin {
|
|
|
21
21
|
platformUpdateRate: options['updateRate'];
|
|
22
22
|
debugMode: boolean;
|
|
23
23
|
version: string;
|
|
24
|
+
matterEnabled: boolean;
|
|
25
|
+
matterAvailable: boolean;
|
|
24
26
|
constructor(log: Logging, config: SmartHQPlatformConfig, api: API);
|
|
25
27
|
/**
|
|
26
28
|
* This function is invoked when homebridge restores cached accessories from disk at startup.
|
|
@@ -40,8 +42,22 @@ export declare class SmartHQPlatform implements DynamicPlatformPlugin {
|
|
|
40
42
|
private createSmartHQDishWasher;
|
|
41
43
|
private createSmartHQOven;
|
|
42
44
|
private createSmartHQIceMaker;
|
|
45
|
+
/**
|
|
46
|
+
* Create Refrigerator accessory (unified HAP/Matter)
|
|
47
|
+
* The SmartHQRefrigerator class now handles both protocols internally
|
|
48
|
+
*/
|
|
43
49
|
private createSmartHQRefrigerator;
|
|
44
50
|
private createSmartHQAirConditioner;
|
|
51
|
+
private createSmartHQHood;
|
|
52
|
+
private createSmartHQClothesWasher;
|
|
53
|
+
private createSmartHQClothesDryer;
|
|
54
|
+
private createSmartHQWaterFilter;
|
|
55
|
+
private createSmartHQWaterSoftener;
|
|
56
|
+
private createSmartHQWaterHeater;
|
|
57
|
+
private createSmartHQAdvantium;
|
|
58
|
+
private createSmartHQMicrowave;
|
|
59
|
+
private createSmartHQCoffeeMaker;
|
|
60
|
+
private createSmartHQBeverageCenter;
|
|
45
61
|
unregisterPlatformAccessories(existingAccessory: PlatformAccessory): Promise<void>;
|
|
46
62
|
getPlatformLogSettings(): Promise<void>;
|
|
47
63
|
getPlatformRateSettings(): Promise<void>;
|
|
@@ -78,5 +94,20 @@ export declare class SmartHQPlatform implements DynamicPlatformPlugin {
|
|
|
78
94
|
debugLog(...log: any[]): Promise<void>;
|
|
79
95
|
loggingIsDebug(): Promise<boolean>;
|
|
80
96
|
enablingPlatformLogging(): Promise<boolean>;
|
|
97
|
+
/**
|
|
98
|
+
* Check if Matter is available and enabled in Homebridge
|
|
99
|
+
*/
|
|
100
|
+
checkMatterSupport(): void;
|
|
101
|
+
/**
|
|
102
|
+
* Determine if a device should use Matter based on platform and device config
|
|
103
|
+
*/
|
|
104
|
+
shouldUseMatter(device: devicesConfig): boolean;
|
|
105
|
+
/**
|
|
106
|
+
* Handle accessory that needs to switch from HAP to Matter
|
|
107
|
+
* Returns true if accessory was unregistered and needs to be recreated
|
|
108
|
+
*/
|
|
109
|
+
shouldUnregisterForMatter(existingAccessory: PlatformAccessory<SmartHqContext>, deviceData: devicesConfig & {
|
|
110
|
+
useMatter?: boolean;
|
|
111
|
+
}): boolean;
|
|
81
112
|
}
|
|
82
113
|
//# sourceMappingURL=platform.d.ts.map
|
package/dist/platform.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"platform.d.ts","sourceRoot":"","sources":["../src/platform.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,GAAG,EAAE,qBAAqB,EAAE,GAAG,EAAE,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA;AAG7F,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"platform.d.ts","sourceRoot":"","sources":["../src/platform.ts"],"names":[],"mappings":"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"}
|