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.
Files changed (2) hide show
  1. package/package.json +1 -1
  2. 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.24",
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) throw new Error('Login button not found on homepage');
270
+ if (!loginBtn) {
271
+ await browser.close();
272
+ return;
273
+ }
271
274
 
272
- await Promise.all([
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
- // Poczekaj, strona przekieruje do Cognito login
278
- await page.waitForSelector('input[name="username"]', { timeout: 15000 });
279
-
280
- this.emit('warn', 'Typing credentials...');
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
- // Kliknij przycisk logowania
285
- const button1 = await page.$('input[type="submit"]');
286
- await Promise.all([
287
- button1.click(),
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
- const cookies = await page.cookies();
292
- this.emit('warn', JSON.stringify(page, null, 2));
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
- // Zapis do pliku
295
- await this.functions.saveData(this.cookiesFile, page);
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
- this.emit('warn', 'Login successful.');
298
- return;
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;