homebridge-melcloud-control 4.0.0-beta.24 → 4.0.0-beta.26
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/package.json +1 -1
- package/src/melcloud.js +30 -21
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.26",
|
|
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
|
@@ -267,36 +267,45 @@ class MelCloud extends EventEmitter {
|
|
|
267
267
|
}
|
|
268
268
|
}
|
|
269
269
|
|
|
270
|
-
if (!loginBtn)
|
|
270
|
+
if (!loginBtn) {
|
|
271
|
+
await browser.close();
|
|
272
|
+
return;
|
|
273
|
+
}
|
|
271
274
|
|
|
272
|
-
|
|
275
|
+
// Kliknij i czekaj na zmianę adresu
|
|
276
|
+
const [resp] = await Promise.all([
|
|
277
|
+
page.waitForNavigation({ waitUntil: 'domcontentloaded', timeout: 20000 }),
|
|
273
278
|
loginBtn.click(),
|
|
274
|
-
page.waitForNavigation({ waitUntil: 'networkidle2', timeout: 20000 })
|
|
275
279
|
]);
|
|
276
280
|
|
|
277
|
-
//
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
await page.type('input[name="username"]', this.user, { delay: 50 });
|
|
282
|
-
await page.type('input[name="password"]', this.passwd, { delay: 50 });
|
|
281
|
+
// Wypisz adres po przekierowaniu
|
|
282
|
+
const currentUrl = page.url();
|
|
283
|
+
// Zamknij przeglądarkę
|
|
284
|
+
await browser.close();
|
|
283
285
|
|
|
284
|
-
//
|
|
285
|
-
const
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
page.waitForNavigation({ waitUntil: 'networkidle2', timeout: 20000 })
|
|
289
|
-
]);
|
|
286
|
+
// Utwórz dane logowania
|
|
287
|
+
const form = new URLSearchParams();
|
|
288
|
+
form.append('input[username]', this.user);
|
|
289
|
+
form.append('input[password]', this.passwd);
|
|
290
290
|
|
|
291
|
-
|
|
292
|
-
this.emit('warn',
|
|
291
|
+
// Wyślij POST za pomocą axios
|
|
292
|
+
this.emit('warn', 'Sending login request via axios...');
|
|
293
|
+
const response = await axios.post(currentUrl, form);
|
|
294
|
+
this.emit('warn', `Login response: ${JSON.stringify(response)}`);
|
|
293
295
|
|
|
294
|
-
|
|
295
|
-
|
|
296
|
+
this.emit('warn', `Login request status: ${response}`);
|
|
297
|
+
if (response.status !== 200) {
|
|
298
|
+
this.emit('error', `Login failed with status code: ${response.status}`);
|
|
299
|
+
return null;
|
|
300
|
+
}
|
|
296
301
|
|
|
297
|
-
|
|
298
|
-
|
|
302
|
+
const cookie = response.headers['set-cookie'];
|
|
303
|
+
if (!cookie) {
|
|
304
|
+
this.emit('warn', `No cookie returned from login. Response headers: ${JSON.stringify(response.headers)}`);
|
|
305
|
+
return null;
|
|
306
|
+
}
|
|
299
307
|
|
|
308
|
+
return cookie;
|
|
300
309
|
} catch (err) {
|
|
301
310
|
this.emit('error', `Login failed: ${err.message}`);
|
|
302
311
|
return null;
|