homebridge-melcloud-control 4.0.0-beta.57 → 4.0.0-beta.59

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 +18 -9
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.57",
4
+ "version": "4.0.0-beta.59",
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
@@ -195,6 +195,7 @@ class MelCloud extends EventEmitter {
195
195
  if (this.logDebug) this.emit('debug', `Buildings list saved`);
196
196
 
197
197
  const devices = buildingsList.flatMap(building => {
198
+ // Funkcja kapitalizująca klucze obiektu
198
199
  const capitalizeKeys = obj =>
199
200
  Object.fromEntries(
200
201
  Object.entries(obj).map(([key, value]) => [
@@ -203,9 +204,12 @@ class MelCloud extends EventEmitter {
203
204
  ])
204
205
  );
205
206
 
207
+ // Funkcja tworząca finalny obiekt Device
206
208
  const createDevice = (device, type) => {
207
- const settingsArray = device.Settings || device.settings || [];
209
+ // Upewniamy się, że Settings jest tablicą
210
+ const settingsArray = device.Settings || [];
208
211
 
212
+ // Zamiana settings na obiekt z poprawnymi typami
209
213
  const settingsObject = Object.fromEntries(
210
214
  settingsArray.map(({ name, value }) => {
211
215
  let parsedValue = value;
@@ -213,19 +217,20 @@ class MelCloud extends EventEmitter {
213
217
  else if (value === "False") parsedValue = false;
214
218
  else if (!isNaN(value) && value !== "") parsedValue = Number(value);
215
219
 
216
- // W tym miejscu nie musimy już kapitalizować, bo w allDevices klucze są z dużej litery
217
- return [name, parsedValue];
220
+ const key = name.charAt(0).toUpperCase() + name.slice(1);
221
+ return [key, parsedValue];
218
222
  })
219
223
  );
220
224
 
221
- // Device = Capabilities + Settings + DeviceType
225
+ // Scal Capabilities + Settings + DeviceType w Device, kapitalizując Capabilities
222
226
  const deviceObject = {
223
- ...device.Capabilities, // już kapitalizowane w allDevices
227
+ ...capitalizeKeys(device.Capabilities || {}),
224
228
  ...settingsObject,
225
229
  DeviceType: type
226
230
  };
227
231
 
228
- const { Settings, settings, Capabilities, Id, GivenDisplayName, ...rest } = device;
232
+ // Usuń stare pola Settings i Capabilities
233
+ const { Settings, Capabilities, Id, GivenDisplayName, ...rest } = device;
229
234
 
230
235
  return {
231
236
  ...rest,
@@ -242,11 +247,15 @@ class MelCloud extends EventEmitter {
242
247
  ];
243
248
  });
244
249
 
245
-
250
+ // Jeśli nie ma urządzeń
251
+ if (devices.length === 0) {
252
+ if (this.logWarn) this.emit('warn', `No devices found`);
253
+ return null;
254
+ }
246
255
 
247
256
 
248
257
  await this.functions.saveData(this.devicesFile, devices);
249
- if (this.logDebug) this.emit('debug', `${devicesCount} devices saved`);
258
+ if (this.logDebug) this.emit('debug', `${devices.length} devices saved`);
250
259
 
251
260
  return devices;
252
261
  } catch (error) {
@@ -338,7 +347,7 @@ class MelCloud extends EventEmitter {
338
347
  return devices
339
348
  case "melcloudhome":
340
349
  devices = await this.checkMelcloudHomeDevicesList(contextKey);
341
- return devices
350
+ return devices;
342
351
  default:
343
352
  return devices;
344
353
  }