homebridge-melcloud-control 4.0.0-beta.27 → 4.0.0-beta.28

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 +20 -33
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.27",
4
+ "version": "4.0.0-beta.28",
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,49 +267,36 @@ class MelCloud extends EventEmitter {
267
267
  }
268
268
  }
269
269
 
270
- if (!loginBtn) {
271
- await browser.close();
272
- return;
273
- }
270
+ if (!loginBtn) throw new Error('Login button not found on homepage');
274
271
 
275
- // Kliknij i czekaj na zmianę adresu
276
- const [resp] = await Promise.all([
277
- page.waitForNavigation({ waitUntil: 'domcontentloaded', timeout: 20000 }),
272
+ await Promise.all([
278
273
  loginBtn.click(),
274
+ page.waitForNavigation({ waitUntil: 'networkidle2', timeout: 20000 })
279
275
  ]);
280
276
 
281
- // Wypisz adres po przekierowaniu
282
- const currentUrl = page.url();
277
+ // Poczekaj, strona przekieruje do Cognito login
278
+ await page.waitForSelector('input[name="username"]', { timeout: 15000 });
283
279
 
284
- // Zamknij przeglądarkę
285
- await browser.close();
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 });
286
283
 
287
- // Utwórz dane logowania
288
- const form = new URLSearchParams();
289
- form.append('input[username]', this.user);
290
- form.append('input[password]', this.passwd);
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
+ ]);
291
290
 
292
- // Wyślij POST za pomocą axios
293
- this.emit('warn', 'Sending login request via axios...');
294
- const response = await axios.post(currentUrl, {
295
- data: form,
296
- timeout: 10000
297
- });
298
- this.emit('warn', `Login response: ${JSON.stringify(response)}`);
291
+ // Pobierz treść strony po zalogowaniu
292
+ const responseHtml = await page.content(); // jeśli chcesz HTML
293
+ this.emit('warn', `Login failed: ${responseHtml}`);
299
294
 
300
- this.emit('warn', `Login request status: ${response}`);
301
- if (response.status !== 200) {
302
- this.emit('error', `Login failed with status code: ${response.status}`);
303
- return null;
304
- }
295
+ //await this.functions.saveData(this.cookiesFile, data);
305
296
 
306
- const cookie = response.headers['set-cookie'];
307
- if (!cookie) {
308
- this.emit('warn', `No cookie returned from login. Response headers: ${JSON.stringify(response.headers)}`);
309
- return null;
310
- }
297
+ this.emit('warn', 'Login successful.');
298
+ return data;
311
299
 
312
- return cookie;
313
300
  } catch (err) {
314
301
  this.emit('error', `Login failed: ${err.message}`);
315
302
  return null;