homebridge-melcloud-control 4.4.1-beta.34 → 4.4.1-beta.35

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.
@@ -250,13 +250,7 @@
250
250
  }
251
251
 
252
252
  // Prepare MELCloud data
253
- const newInMelCloud = {
254
- ata: [], ataPresets: [], ataSchedules: [],
255
- atw: [], atwPresets: [], atwSchedules: [],
256
- erv: [], ervPresets: [], ervSchedules: [],
257
- scenes: []
258
- };
259
-
253
+ const newInMelCloud = { ata: [], ataPresets: [], ataSchedules: [], atw: [], atwPresets: [], atwSchedules: [], erv: [], ervPresets: [], ervSchedules: [], scenes: [] };
260
254
  const devicesInMelCloudByType = { ata: [], atw: [], erv: [] };
261
255
  const scenesInMelCloud = response.Scenes ?? [];
262
256
 
@@ -270,56 +264,18 @@
270
264
  account.atwDevices = (account.atwDevices ?? []).filter(d => String(d.id) !== '0');
271
265
  account.ervDevices = (account.ervDevices ?? []).filter(d => String(d.id) !== '0');
272
266
 
273
- // ================================
274
267
  // Remove stale DEVICES
275
- // ================================
276
- const removedAta = removeStaleEntities(
277
- account.ataDevices,
278
- devicesInMelCloudByType.ata,
279
- d => d.id,
280
- d => d.DeviceID
281
- );
282
-
283
- const removedAtw = removeStaleEntities(
284
- account.atwDevices,
285
- devicesInMelCloudByType.atw,
286
- d => d.id,
287
- d => d.DeviceID
288
- );
289
-
290
- const removedErv = removeStaleEntities(
291
- account.ervDevices,
292
- devicesInMelCloudByType.erv,
293
- d => d.id,
294
- d => d.DeviceID
295
- );
268
+ const removedAta = removeStaleEntities(account.ataDevices, devicesInMelCloudByType.ata, d => d.id, d => d.DeviceID);
269
+ const removedAtw = removeStaleEntities(account.atwDevices, devicesInMelCloudByType.atw, d => d.id, d => d.DeviceID);
270
+ const removedErv = removeStaleEntities(account.ervDevices, devicesInMelCloudByType.erv, d => d.id, d => d.DeviceID);
296
271
 
297
272
  // Remove stale SCENES (global)
298
273
  account.scenes = account.scenes ?? [];
299
-
300
- const removedScenes = removeStaleEntities(
301
- account.scenes,
302
- scenesInMelCloud,
303
- s => s.id,
304
- s => s.Id
305
- );
306
-
307
- removedScenes.forEach(s =>
308
- newInMelCloud.scenes.push({ ...s, removed: true })
309
- );
274
+ removeStaleEntities(account.scenes, scenesInMelCloud, s => s.id, s => s.Id);
310
275
 
311
276
  // Handle Devices
312
- const handleDevices = (
313
- devicesInMelCloud,
314
- devicesInConfig,
315
- deviceTypeString,
316
- newDevices,
317
- newPresets,
318
- newSchedules
319
- ) => {
320
- const configDevicesMap = new Map(
321
- devicesInConfig.map(dev => [String(dev.id), dev])
322
- );
277
+ const handleDevices = (devicesInMelCloud, devicesInConfig, deviceTypeString, newDevices, newPresets, newSchedules) => {
278
+ const configDevicesMap = new Map(devicesInConfig.map(dev => [String(dev.id), dev]));
323
279
 
324
280
  devicesInMelCloud.forEach(device => {
325
281
  const deviceId = String(device.DeviceID);
@@ -342,23 +298,11 @@
342
298
  // PRESETS (melcloud)
343
299
  if (account.type === 'melcloud') {
344
300
  deviceInConfig.presets = deviceInConfig.presets ?? [];
345
- const presetsInMelCloud = device.Presets || [];
346
-
347
- const removedPresets = removeStaleEntities(
348
- deviceInConfig.presets,
349
- presetsInMelCloud,
350
- p => p.id,
351
- p => p.ID
352
- );
353
-
354
- removedPresets.forEach(p =>
355
- newPresets.push({ ...p, removed: true })
356
- );
357
301
 
358
- const presetIds = new Set(
359
- deviceInConfig.presets.map(p => String(p.id))
360
- );
302
+ const presetsInMelCloud = device.Presets || [];
303
+ removeStaleEntities(deviceInConfig.presets, presetsInMelCloud, p => p.id, p => p.ID);
361
304
 
305
+ const presetIds = new Set(deviceInConfig.presets.map(p => String(p.id)));
362
306
  presetsInMelCloud.forEach((preset, index) => {
363
307
  const presetId = String(preset.ID);
364
308
  if (!presetIds.has(presetId)) {
@@ -377,23 +321,11 @@
377
321
  // SCHEDULES (melcloudhome)
378
322
  if (account.type === 'melcloudhome') {
379
323
  deviceInConfig.schedules = deviceInConfig.schedules ?? [];
380
- const schedulesInMelCloud = device.Schedule || [];
381
-
382
- const removedSchedules = removeStaleEntities(
383
- deviceInConfig.schedules,
384
- schedulesInMelCloud,
385
- s => s.id,
386
- s => s.Id
387
- );
388
324
 
389
- removedSchedules.forEach(s =>
390
- newSchedules.push({ ...s, removed: true })
391
- );
392
-
393
- const scheduleIds = new Set(
394
- deviceInConfig.schedules.map(s => String(s.id))
395
- );
325
+ const schedulesInMelCloud = device.Schedule || [];
326
+ removeStaleEntities(deviceInConfig.schedules, schedulesInMelCloud, s => s.id, s => s.Id);
396
327
 
328
+ const scheduleIds = new Set(deviceInConfig.schedules.map(s => String(s.id)));
397
329
  schedulesInMelCloud.forEach((schedule, index) => {
398
330
  const scheduleId = String(schedule.Id);
399
331
  if (!scheduleIds.has(scheduleId)) {
@@ -414,53 +346,15 @@
414
346
  };
415
347
 
416
348
  // Execute device handlers
417
- account.ataDevices = handleDevices(
418
- devicesInMelCloudByType.ata,
419
- account.ataDevices,
420
- "Air Conditioner",
421
- newInMelCloud.ata,
422
- newInMelCloud.ataPresets,
423
- newInMelCloud.ataSchedules
424
- );
425
-
426
- account.atwDevices = handleDevices(
427
- devicesInMelCloudByType.atw,
428
- account.atwDevices,
429
- "Heat Pump",
430
- newInMelCloud.atw,
431
- newInMelCloud.atwPresets,
432
- newInMelCloud.atwSchedules
433
- );
434
-
435
- account.ervDevices = handleDevices(
436
- devicesInMelCloudByType.erv,
437
- account.ervDevices,
438
- "Energy Recovery Ventilation",
439
- newInMelCloud.erv,
440
- newInMelCloud.ervPresets,
441
- newInMelCloud.ervSchedules
442
- );
349
+ account.ataDevices = handleDevices(devicesInMelCloudByType.ata, account.ataDevices, "Air Conditioner", newInMelCloud.ata, newInMelCloud.ataPresets, newInMelCloud.ataSchedules);
350
+ account.atwDevices = handleDevices(devicesInMelCloudByType.atw, account.atwDevices, "Heat Pump", newInMelCloud.atw, newInMelCloud.atwPresets, newInMelCloud.atwSchedules);
351
+ account.ervDevices = handleDevices(devicesInMelCloudByType.erv, account.ervDevices, "Energy Recovery Ventilation", newInMelCloud.erv, newInMelCloud.ervPresets, newInMelCloud.ervSchedules);
443
352
 
444
353
  // Summary
445
- const newDevicesCount =
446
- newInMelCloud.ata.length +
447
- newInMelCloud.atw.length +
448
- newInMelCloud.erv.length;
449
-
450
- const newPresetsCount =
451
- newInMelCloud.ataPresets.length +
452
- newInMelCloud.atwPresets.length +
453
- newInMelCloud.ervPresets.length;
454
-
455
- const newSchedulesCount =
456
- newInMelCloud.ataSchedules.length +
457
- newInMelCloud.atwSchedules.length +
458
- newInMelCloud.ervSchedules.length;
459
-
460
- const removedDevicesCount =
461
- removedAta.length +
462
- removedAtw.length +
463
- removedErv.length;
354
+ const newDevicesCount = newInMelCloud.ata.length + newInMelCloud.atw.length + newInMelCloud.erv.length;
355
+ const newPresetsCount = newInMelCloud.ataPresets.length + newInMelCloud.atwPresets.length + newInMelCloud.ervPresets.length;
356
+ const newSchedulesCount = newInMelCloud.ataSchedules.length + newInMelCloud.atwSchedules.length + newInMelCloud.ervSchedules.length;
357
+ const removedDevicesCount = removedAta.length + removedAtw.length + removedErv.length;
464
358
 
465
359
  if (!newDevicesCount && !newPresetsCount && !newSchedulesCount && !removedDevicesCount) {
466
360
  updateInfo('info', 'No changes detected.', 'white');
@@ -486,6 +380,5 @@
486
380
  }
487
381
  });
488
382
 
489
-
490
383
  })();
491
384
  </script>
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "displayName": "MELCloud Control",
3
3
  "name": "homebridge-melcloud-control",
4
- "version": "4.4.1-beta.34",
4
+ "version": "4.4.1-beta.35",
5
5
  "description": "Homebridge plugin to control Mitsubishi Air Conditioner, Heat Pump and Energy Recovery Ventilation.",
6
6
  "license": "MIT",
7
7
  "author": "grzegorz914",