homebridge-melcloud-control 4.0.0-beta.535 → 4.0.0-beta.537
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/index.js +1 -1
- package/package.json +1 -1
- package/src/melcloud.js +44 -11
package/index.js
CHANGED
|
@@ -199,7 +199,7 @@ class MelCloudPlatform {
|
|
|
199
199
|
if (logLevel.success) log.success(`${accountName}, ${deviceTypeText}, ${deviceName}, Published as external accessory.`);
|
|
200
200
|
|
|
201
201
|
//start impulse generators\
|
|
202
|
-
const timmers = accountType === 'melcloudhome' ? [{ name: 'connect', sampling:
|
|
202
|
+
const timmers = accountType === 'melcloudhome' ? [{ name: 'connect', sampling: 3000000 }, { name: 'checkDevicesList', sampling: deviceRefreshInterval }] : [{ name: 'checkDevicesList', sampling: refreshInterval }];
|
|
203
203
|
await melCloud.impulseGenerator.state(true, timmers, false);
|
|
204
204
|
await configuredDevice.startStopImpulseGenerator(true, [{ name: 'checkState', sampling: deviceRefreshInterval }]);
|
|
205
205
|
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"displayName": "MELCloud Control",
|
|
3
3
|
"name": "homebridge-melcloud-control",
|
|
4
|
-
"version": "4.0.0-beta.
|
|
4
|
+
"version": "4.0.0-beta.537",
|
|
5
5
|
"description": "Homebridge plugin to control Mitsubishi Air Conditioner, Heat Pump and Energy Recovery Ventilation.",
|
|
6
6
|
"license": "MIT",
|
|
7
7
|
"author": "grzegorz914",
|
package/src/melcloud.js
CHANGED
|
@@ -344,8 +344,47 @@ class MelCloud extends EventEmitter {
|
|
|
344
344
|
]
|
|
345
345
|
});
|
|
346
346
|
|
|
347
|
-
|
|
348
|
-
|
|
347
|
+
try {
|
|
348
|
+
// go to about:blank to ensure a clean origin
|
|
349
|
+
await page.goto('about:blank');
|
|
350
|
+
|
|
351
|
+
// prefer context-based clear if available
|
|
352
|
+
const pageContext = (typeof page.browserContext === 'function') ? page.browserContext() : (page.context ? page.context() : null);
|
|
353
|
+
|
|
354
|
+
if (pageContext && typeof pageContext.clearCookies === 'function') {
|
|
355
|
+
// modern API in some puppeteer versions
|
|
356
|
+
await pageContext.clearCookies();
|
|
357
|
+
} else {
|
|
358
|
+
// try CDP directly (works in most environments)
|
|
359
|
+
if (page._client && typeof page._client === 'function') {
|
|
360
|
+
const client = await page._client();
|
|
361
|
+
if (client && client.send) {
|
|
362
|
+
await client.send('Network.clearBrowserCookies');
|
|
363
|
+
} else if (page._client && page._client.send) {
|
|
364
|
+
// some versions expose _client directly as object
|
|
365
|
+
await page._client.send('Network.clearBrowserCookies');
|
|
366
|
+
} else {
|
|
367
|
+
// fallback to deleting cookies returned by page.cookies()
|
|
368
|
+
const cookies = await page.cookies();
|
|
369
|
+
if (cookies && cookies.length) {
|
|
370
|
+
await page.deleteCookie(...cookies).catch(() => { });
|
|
371
|
+
}
|
|
372
|
+
}
|
|
373
|
+
} else if (page._client && page._client.send) {
|
|
374
|
+
// older shape where _client is object
|
|
375
|
+
await page._client.send('Network.clearBrowserCookies');
|
|
376
|
+
} else {
|
|
377
|
+
// final fallback
|
|
378
|
+
const cookies = await page.cookies();
|
|
379
|
+
if (cookies && cookies.length) {
|
|
380
|
+
await page.deleteCookie(...cookies).catch(() => { });
|
|
381
|
+
}
|
|
382
|
+
}
|
|
383
|
+
}
|
|
384
|
+
} catch (clearErr) {
|
|
385
|
+
// nie przerywamy procesu logowania jeśli clear cookies nie zadziała, logujemy tylko warn
|
|
386
|
+
this.emit('warn', `Failed to clear cookies cleanly: ${clearErr.message}`);
|
|
387
|
+
}
|
|
349
388
|
page.setDefaultTimeout(GLOBAL_TIMEOUT);
|
|
350
389
|
page.setDefaultNavigationTimeout(GLOBAL_TIMEOUT);
|
|
351
390
|
|
|
@@ -402,6 +441,7 @@ class MelCloud extends EventEmitter {
|
|
|
402
441
|
|
|
403
442
|
this.emit('warn', `Found submit button ${submitButton}`);
|
|
404
443
|
await Promise.race([Promise.all([submitButton.click(), page.waitForNavigation({ waitUntil: ['domcontentloaded', 'networkidle2'], timeout: GLOBAL_TIMEOUT / 4 })]), new Promise(r => setTimeout(r, GLOBAL_TIMEOUT / 3))]);
|
|
444
|
+
await new Promise(r => setTimeout(r, 2000));
|
|
405
445
|
|
|
406
446
|
this.emit('warn', `Looking for cookies...`);
|
|
407
447
|
// Extract cookies
|
|
@@ -438,15 +478,8 @@ class MelCloud extends EventEmitter {
|
|
|
438
478
|
throw new Error(`Connect error: ${error.message}`);
|
|
439
479
|
} finally {
|
|
440
480
|
if (browser) {
|
|
441
|
-
try {
|
|
442
|
-
|
|
443
|
-
for (const ctx of contexts) {
|
|
444
|
-
await ctx.close().catch(() => { });
|
|
445
|
-
}
|
|
446
|
-
await browser.close();
|
|
447
|
-
} catch (closeErr) {
|
|
448
|
-
this.emit('error', `Failed to close Puppeteer: ${closeErr.message}`);
|
|
449
|
-
}
|
|
481
|
+
try { await browser.close(); }
|
|
482
|
+
catch (closeErr) { this.emit('error', `Failed to close Puppeteer: ${closeErr.message}`); }
|
|
450
483
|
}
|
|
451
484
|
}
|
|
452
485
|
}
|