homebridge-melcloud-control 3.1.3-beta.0 → 3.1.3-beta.10

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.
@@ -186,19 +186,17 @@
186
186
  const pusDeviceTypeErv = deviceType === 3 ? devicesByType.erv.push(device) : false;
187
187
  };
188
188
 
189
- //get device info fom devices ata
190
- devicesByType.ata.forEach(async (device, index) => {
189
+ //device ata
190
+ for (const device of devicesByType.ata) {
191
191
  const deviceId = device.DeviceID;
192
192
  const deviceType = device.Type;
193
- const deviceTypeText = "Air Conditioner";
194
193
  const deviceName = device.DeviceName;
195
194
  const devicePresets = device.Presets ?? [];
196
195
 
197
- //device ata
198
196
  const deviceAta = {
199
197
  id: deviceId,
200
198
  type: deviceType,
201
- typeString: deviceTypeText,
199
+ typeString: "Air Conditioner",
202
200
  name: deviceName,
203
201
  displayMode: 1,
204
202
  heatDryFanMode: 1,
@@ -210,15 +208,6 @@
210
208
  buttonsSensors: []
211
209
  };
212
210
 
213
- const ataDevicesExist = pluginConfig[0].accounts[this.deviceIndex].ataDevices ?? false;
214
- const ataDevices = ataDevicesExist ? pluginConfig[0].accounts[this.deviceIndex].ataDevices : pluginConfig[0].accounts[this.deviceIndex].ataDevices = [];
215
-
216
- const ataDeviceIdExist = ataDevices.some(device => device.id === deviceId);
217
- const pushTypeAta = ataDeviceIdExist ? false : ataDevices.push(deviceAta);
218
- const pushNewDevice = ataDeviceIdExist ? false : newDevices.ata.push(device);
219
- const devicesCount = newDevices.ata.length;
220
- textAta = `ATA: ${devicesCount}`
221
-
222
211
  //presets
223
212
  for (const preset of devicePresets) {
224
213
  const presetId = preset.ID;
@@ -228,35 +217,27 @@
228
217
  preset.name = presetName;
229
218
  preset.displayType == 0;
230
219
  preset.namePrefix = false;
231
-
232
- const ataPresetsExist = pluginConfig[0].accounts[this.deviceIndex].ataDevices[index].presets ?? false;
233
- const ataPresets = ataPresetsExist ? pluginConfig[0].accounts[this.deviceIndex].ataDevices[index].presets : pluginConfig[0].accounts[this.deviceIndex].ataDevices[index].presets = [];
234
- const ataPresetIdExist = ataPresets.some(preset => preset.id === presetId);
235
- const pushPresetAta = ataPresetIdExist ? false : ataPresets.push(preset);
236
- const pushNewPreset = ataPresetIdExist ? false : newDevices.ataPresets.push(preset);
237
- const presetsCount = newDevices.ataPresets.length;
238
- textAtaPresets = `ATA Presets: ${presetsCount}`
220
+ newDevices.ataPresets.push(preset);
239
221
  };
222
+ deviceAta.presets = newDevices.ataPresets;
223
+ textAtaPresets = `ATA Presets: ${newDevices.ataPresets.length}`
240
224
 
241
- //compare presets
242
- const presetsOnMelCloud = devicePresets;
243
- const presetsAtaInConfig = pluginConfig[0].accounts[this.deviceIndex].ataDevices[index].presets;
244
- presetsAtaInConfig = syncArrays(presetsOnMelCloud, presetsAtaInConfig);
245
- });
225
+ newDevices.ata.push(deviceAta);
226
+ };
227
+ pluginConfig[0].accounts[this.deviceIndex].ataDevices = newDevices.ata;
228
+ textAta = `ATA: ${newDevices.ata.length}`
246
229
 
247
- //get device info fom devices atw
248
- devicesByType.atw.forEach(async (device, index) => {
230
+ //device atw
231
+ for (const device of devicesByType.atw) {
249
232
  const deviceId = device.DeviceID;
250
233
  const deviceType = device.Type;
251
- const deviceTypeText = "Heat Pump";
252
234
  const deviceName = device.DeviceName;
253
235
  const devicePresets = device.Presets ?? [];
254
236
 
255
- //device atw
256
237
  const deviceAtw = {
257
238
  id: deviceId,
258
239
  type: deviceType,
259
- typeString: deviceTypeText,
240
+ typeString: "Heat Pump",
260
241
  name: deviceName,
261
242
  displayMode: 1,
262
243
  temperatureSensor: false,
@@ -273,15 +254,8 @@
273
254
  presets: [],
274
255
  buttonsSensors: []
275
256
  };
276
- const atwDevicesExist = pluginConfig[0].accounts[this.deviceIndex].atwDevices ?? false;
277
- const atwDevices = atwDevicesExist ? pluginConfig[0].accounts[this.deviceIndex].atwDevices : pluginConfig[0].accounts[this.deviceIndex].atwDevices = [];
278
- const atwDeviceIdExist = atwDevices.some(device => device.id === deviceId);
279
- const pushTypeAtw = atwDeviceIdExist ? false : atwDevices.push(deviceAtw);
280
- const pushNewDevice = atwDeviceIdExist ? false : newDevices.atw.push(device);
281
- const devicesCount = newDevices.atw.length;
282
- textAtw = `ATW: ${devicesCount}`
283
-
284
- //presetzs
257
+
258
+ //presets
285
259
  for (const preset of devicePresets) {
286
260
  const presetId = preset.ID;
287
261
  const presetName = preset.NumberDescription;
@@ -290,34 +264,27 @@
290
264
  preset.name = presetName;
291
265
  preset.displayType == 0;
292
266
  preset.namePrefix = false;
293
-
294
- const atwPresetsExist = pluginConfig[0].accounts[this.deviceIndex].atwDevices[index].presets ?? false;
295
- const atwPresets = atwPresetsExist ? pluginConfig[0].accounts[this.deviceIndex].atwDevices[index].presets : pluginConfig[0].accounts[this.deviceIndex].atwDevices[index].presets = [];
296
- const atwPresetIdExist = atwPresets.some(preset => preset.id === presetId);
297
- const pushPresetAtw = atwPresetIdExist ? false : atwPresets.push(preset);
298
- const pushNewPreset = atwPresetIdExist ? false : newDevices.atwPresets.push(preset);
299
- const presetsCount = newDevices.atwPresets.length;
300
- textAtwPresets = `ATW Presets: ${presetsCount}`
267
+ newDevices.atwPresets.push(preset);
301
268
  };
269
+ textAtwPresets = `ATW Presets: ${newDevices.atwPresets.length}`
302
270
 
303
- const presetsOnMelCloud = devicePresets;
304
- const presetsAtwInConfig = pluginConfig[0].accounts[this.deviceIndex].atwDevices[index].presets;
305
- presetsAtwInConfig = syncArrays(presetsOnMelCloud, presetsAtwInConfig);
306
- });
271
+ deviceAtw.presets = deviceAtw.atwPresets;
272
+ newDevices.ata.push(deviceAtw);
273
+ };
274
+ pluginConfig[0].accounts[this.deviceIndex].atwDevices = newDevices.atw;
275
+ textAtw = `ATW: ${newDevices.atw.length}`
307
276
 
308
- //get device info fom devices erv
309
- devicesByType.erv.forEach(async (device, index) => {
277
+ //device erv
278
+ for (const device of devicesByType.erv) {
310
279
  const deviceId = device.DeviceID;
311
280
  const deviceType = device.Type;
312
- const deviceTypeText = "Energy Recovery Ventilation";
313
281
  const deviceName = device.DeviceName;
314
282
  const devicePresets = device.Presets ?? [];
315
283
 
316
- //device erv
317
284
  const deviceErv = {
318
285
  id: deviceId,
319
286
  type: deviceType,
320
- typeString: deviceTypeText,
287
+ typeString: "Energy Recovery Ventilation",
321
288
  name: deviceName,
322
289
  displayMode: 1,
323
290
  temperatureSensor: false,
@@ -328,13 +295,6 @@
328
295
  presets: [],
329
296
  buttonsSensors: []
330
297
  };
331
- const ervDevicesExist = pluginConfig[0].accounts[this.deviceIndex].ervDevices ?? false;
332
- const ervDevices = ervDevicesExist ? pluginConfig[0].accounts[this.deviceIndex].ervDevices : pluginConfig[0].accounts[this.deviceIndex].ervDevices = [];
333
- const ervDeviceIdExist = ervDevices.some(device => device.id === deviceId);
334
- const pushTypeerv = ervDeviceIdExist ? false : ervDevices.push(deviceErv);
335
- const pushNewDevice = ervDeviceIdExist ? false : newDevices.erv.push(device);
336
- const devicesCount = newDevices.erv.length;
337
- textErv = `ERV: ${devicesCount}`
338
298
 
339
299
  //presets
340
300
  for (const preset of devicePresets) {
@@ -345,31 +305,15 @@
345
305
  preset.name = presetName;
346
306
  preset.displayType == 0;
347
307
  preset.namePrefix = false;
348
-
349
- const ervPresetsExist = pluginConfig[0].accounts[this.deviceIndex].ervDevices[index].presets ?? false;
350
- const ervPresets = ervPresetsExist ? pluginConfig[0].accounts[this.deviceIndex].ervDevices[index].presets : pluginConfig[0].accounts[this.deviceIndex].ervDevices[index].presets = [];
351
- const ervPresetIdExist = ervPresets.some(preset => preset.id === presetId);
352
- const pushPresetErv = ervPresetIdExist ? false : ervPresets.push(preset);
353
- const pushNewPreset = ervPresetIdExist ? false : newDevices.ervPresets.push(preset);
354
- const presetsCount = newDevices.ervPresets.length;
355
- textErvPresets = `ERV Presets: ${presetsCount}`
308
+ newDevices.atwPresets.push(preset);
356
309
  };
310
+ textErvPresets = `ERV Presets: ${newDevices.ErvPresets.length}`
357
311
 
358
- const presetsOnMelCloud = devicePresets;
359
- const presetsErvInConfig = pluginConfig[0].accounts[this.deviceIndex].ervDevices[index].presets;
360
- presetsErvInConfig = await syncArrays(presetsOnMelCloud, presetsErvInConfig);
361
- });
362
-
363
- //compare arrays and update array in config
364
- const devicesOnMelCloud = devices;
365
- const devicesAtaInConfig = pluginConfig[0].accounts[this.deviceIndex].ataDevices;
366
- devicesAtaInConfig = await syncArrays(devicesOnMelCloud, devicesAtaInConfig);
367
-
368
- const devicesAtwInConfig = pluginConfig[0].accounts[this.deviceIndex].atwDevices;
369
- devicesAtwInConfig = await syncArrays(devicesOnMelCloud, devicesAtwInConfig);
370
-
371
- const devicesErvInConfig = pluginConfig[0].accounts[this.deviceIndex].ervDevices;
372
- devicesErvInConfig = await syncArrays(devicesOnMelCloud, devicesErvInConfig);
312
+ deviceErv.presets = deviceErv.ervPresets;
313
+ newDevices.erv.push(deviceErv);
314
+ };
315
+ pluginConfig[0].accounts[this.deviceIndex].ervDevices = newDevices.erv;
316
+ textErv = `ERV: ${newDevices.erv.length}`
373
317
 
374
318
  const newDevicesCount = newDevices.ata.length + newDevices.atw.length + newDevices.erv.length ?? 0;
375
319
  const newPresetsCount = newDevices.ataPresets.length + newDevices.atwPresets.length + newDevices.ervPresets.length ?? 0;
@@ -414,23 +358,6 @@
414
358
  break;
415
359
  };
416
360
 
417
- async function syncArrays(devicesOnMelCloud, devicesInConfig) {
418
- // Create a Set of IDs from devicesOnMelCloud for quick lookup
419
- const devicesOnMelCloudId = new Set(devicesOnMelCloud.map(device => device.DeviceID));
420
-
421
- // Filter devicesInConfig to keep only objects that exist in devicesOnMelCloud
422
- devicesInConfig = devicesInConfig.filter(device => devicesOnMelCloudId.has(device.DeviceID));
423
-
424
- // Add objects from devicesOnMelCloud to devicesInConfig that do not exist in devicesInConfig
425
- devicesOnMelCloud.forEach(device => {
426
- if (!devicesInConfig.some(item => item.id === device.id)) {
427
- devicesInConfig.push(device);
428
- }
429
- });
430
-
431
- return devicesInConfig;
432
- }
433
-
434
361
  homebridge.hideSpinner();
435
362
  } catch (e) {
436
363
  document.getElementById('info').innerHTML = 'Please try again.';
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "displayName": "MELCloud Control",
3
3
  "name": "homebridge-melcloud-control",
4
- "version": "3.1.3-beta.0",
4
+ "version": "3.1.3-beta.10",
5
5
  "description": "Homebridge plugin to control Mitsubishi Air Conditioner, Heat Pump and Energy Recovery Ventilation.",
6
6
  "license": "MIT",
7
7
  "author": "grzegorz914",