homebridge-melcloud-control 4.4.1-beta.45 → 4.4.1-beta.47

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.
@@ -267,12 +267,12 @@
267
267
  }
268
268
 
269
269
  // Prepare MELCloud data
270
- const newInMelCloud = { ata: [], ataPresets: [], ataSchedules: [], ataScenes: [], atw: [], atwPresets: [], atwSchedules: [], atwScenes: [], erv: [], ervPresets: [], ervSchedules: [], ervScenes: [], scenes: [] };
270
+ const newInMelCloud = { ata: [], ataPresets: [], ataSchedules: [], ataScenes: [], atw: [], atwPresets: [], atwSchedules: [], atwScenes: [], erv: [], ervPresets: [], ervSchedules: [], ervScenes: [] };
271
271
  const devicesInMelCloudByType = { ata: [], atw: [], erv: [] };
272
272
  const scenesInMelCloud = response.Scenes ?? [];
273
273
 
274
274
  // Split devices by type
275
- (response.Devices ?? []).forEach(device => {
275
+ response.Devices.forEach(device => {
276
276
  if (device.Type === 0) devicesInMelCloudByType.ata.push(device);
277
277
  if (device.Type === 1) devicesInMelCloudByType.atw.push(device);
278
278
  if (device.Type === 3) devicesInMelCloudByType.erv.push(device);
@@ -286,8 +286,7 @@
286
286
  const removedFromConfigAta = removeStaleEntities(account.ataDevices, devicesInMelCloudByType.ata, d => d.id, d => d.DeviceID);
287
287
  const removedFromConfigAtw = removeStaleEntities(account.atwDevices, devicesInMelCloudByType.atw, d => d.id, d => d.DeviceID);
288
288
  const removedFromConfigErv = removeStaleEntities(account.ervDevices, devicesInMelCloudByType.erv, d => d.id, d => d.DeviceID);
289
-
290
- const removedFromConfig = { ataPresets: [], atwPresets: [], ervPresets: [], ataSchedules: [], atwSchedules: [], ervSchedules: [], scenes: [] };
289
+ const removedFromConfig = { presets: [], schedules: [], scenes: [] };
291
290
 
292
291
  // Map UnitId → Scenes
293
292
  const unitIdToScenes = mapUnitIdToScenes(scenesInMelCloud);
@@ -296,7 +295,7 @@
296
295
  const handleDevices = (devicesInMelCloud, devicesInConfig, deviceTypeString, newDevices, newPresets, newSchedules, newScenes) => {
297
296
  const configDevicesMap = new Map(devicesInConfig.map(dev => [String(dev.id), dev]));
298
297
 
299
- (devicesInMelCloud ?? []).forEach(device => {
298
+ devicesInMelCloud.forEach(device => {
300
299
  const deviceId = String(device.DeviceID);
301
300
  let deviceInConfig = configDevicesMap.get(deviceId);
302
301
 
@@ -311,7 +310,7 @@
311
310
  if (account.type === 'melcloud') {
312
311
  deviceInConfig.presets = deviceInConfig.presets ?? [];
313
312
  const presetsInMelCloud = device.Presets ?? [];
314
- removedFromConfig.ataPresets.push(...removeStaleEntities(deviceInConfig.presets, presetsInMelCloud, p => p.id, p => p.ID));
313
+ removedFromConfig.presets.push(...removeStaleEntities(deviceInConfig.presets, presetsInMelCloud, p => p.id, p => p.ID));
315
314
  const presetIds = new Set(deviceInConfig.presets.map(p => String(p.id)));
316
315
  presetsInMelCloud.forEach((preset, index) => {
317
316
  const presetId = String(preset.ID);
@@ -333,7 +332,7 @@
333
332
  // SCHEDULES
334
333
  deviceInConfig.schedules = deviceInConfig.schedules ?? [];
335
334
  const schedulesInMelCloud = device.Schedule ?? [];
336
- removedFromConfig.ataSchedules.push(...removeStaleEntities(deviceInConfig.schedules, schedulesInMelCloud, s => s.id, s => s.Id));
335
+ removedFromConfig.schedules.push(...removeStaleEntities(deviceInConfig.schedules, schedulesInMelCloud, s => s.id, s => s.Id));
337
336
  const scheduleIds = new Set(deviceInConfig.schedules.map(s => String(s.id)));
338
337
  schedulesInMelCloud.forEach((schedule, index) => {
339
338
  const scheduleId = String(schedule.Id);
@@ -351,9 +350,9 @@
351
350
 
352
351
  // SCENES
353
352
  deviceInConfig.scenes = deviceInConfig.scenes ?? [];
354
- removedFromConfig.scenes.push(...removeStaleEntities(deviceInConfig.scenes, scenesInMelCloud, s => s.id, s => s.Id));
355
- const sceneIds = new Set(deviceInConfig.scenes.map(s => String(s.id)));
356
353
  const scenesForDevice = unitIdToScenes.get(deviceId) ?? [];
354
+ removedFromConfig.scenes.push(...removeStaleEntities(deviceInConfig.scenes, scenesForDevice, s => s.id, s => s.Id));
355
+ const sceneIds = new Set(deviceInConfig.scenes.map(s => String(s.id)));
357
356
  scenesForDevice.forEach((scene, index) => {
358
357
  const sceneId = String(scene.Id);
359
358
  if (!sceneIds.has(sceneId)) {
@@ -374,35 +373,33 @@
374
373
  };
375
374
 
376
375
  // Execute device handlers
377
- account.ataDevices = handleDevices(devicesInMelCloudByType.ata, account.ataDevices, "Air Conditioner", newInMelCloud.ata, newInMelCloud.ataPresets, newInMelCloud.ataSchedules, newInMelCloud.scenes);
378
- account.atwDevices = handleDevices(devicesInMelCloudByType.atw, account.atwDevices, "Heat Pump", newInMelCloud.atw, newInMelCloud.atwPresets, newInMelCloud.atwSchedules, newInMelCloud.scenes);
379
- account.ervDevices = handleDevices(devicesInMelCloudByType.erv, account.ervDevices, "Energy Recovery Ventilation", newInMelCloud.erv, newInMelCloud.ervPresets, newInMelCloud.ervSchedules, newInMelCloud.scenes);
376
+ account.ataDevices = handleDevices(devicesInMelCloudByType.ata, account.ataDevices, "Air Conditioner", newInMelCloud.ata, newInMelCloud.ataPresets, newInMelCloud.ataSchedules, newInMelCloud.ataScenes);
377
+ account.atwDevices = handleDevices(devicesInMelCloudByType.atw, account.atwDevices, "Heat Pump", newInMelCloud.atw, newInMelCloud.atwPresets, newInMelCloud.atwSchedules, newInMelCloud.atwScenes);
378
+ account.ervDevices = handleDevices(devicesInMelCloudByType.erv, account.ervDevices, "Energy Recovery Ventilation", newInMelCloud.erv, newInMelCloud.ervPresets, newInMelCloud.ervSchedules, newInMelCloud.ervScenes);
380
379
 
381
380
  // Summary counts
382
381
  const newDevicesCount = newInMelCloud.ata.length + newInMelCloud.atw.length + newInMelCloud.erv.length;
383
382
  const newPresetsCount = newInMelCloud.ataPresets.length + newInMelCloud.atwPresets.length + newInMelCloud.ervPresets.length;
384
383
  const newSchedulesCount = newInMelCloud.ataSchedules.length + newInMelCloud.atwSchedules.length + newInMelCloud.ervSchedules.length;
385
- const newScenesCount = newInMelCloud.scenes.length;
384
+ const newScenesCount = newInMelCloud.ataScenes.length + newInMelCloud.atwScenes.length + newInMelCloud.ervScenes.length;
386
385
  const removedDevicesCount = removedFromConfigAta.length + removedFromConfigAtw.length + removedFromConfigErv.length;
387
- const removedPresetsCount = removedFromConfig.ataPresets.length + removedFromConfig.atwPresets.length + removedFromConfig.ervPresets.length;
388
- const removedSchedulesCount = removedFromConfig.ataSchedules.length + removedFromConfig.atwSchedules.length + removedFromConfig.ervSchedules.length;
386
+ const removedPresetsCount = removedFromConfig.presets.length;
387
+ const removedSchedulesCount = removedFromConfig.schedules.length;
389
388
  const removedScenesCount = removedFromConfig.scenes.length;
390
389
 
391
390
  if (!newDevicesCount && !newPresetsCount && !newSchedulesCount && !newScenesCount && !removedDevicesCount && !removedPresetsCount && !removedSchedulesCount && !removedScenesCount) {
392
391
  updateInfo('info', 'No changes detected.', 'white');
393
392
  } else {
394
393
  if (newDevicesCount)
395
- updateInfo('info', `Found new devices: ${newInMelCloud.ata.length ? `ATA: ${newInMelCloud.ata.length},` : ''} ${newInMelCloud.atw.length ? `ATW: ${newInMelCloud.atw.length},` : ''} ${newInMelCloud.erv.length ? `ERV: ${newInMelCloud.erv.length},` : ''}.`, 'green');
394
+ updateInfo('info', `Found new devices: ${newInMelCloud.ata.length ? `ATA: ${newInMelCloud.ata.length}` : ''} ${newInMelCloud.atw.length ? `, ATW: ${newInMelCloud.atw.length}` : ''} ${newInMelCloud.erv.length ? `, ERV: ${newInMelCloud.erv.length},` : ''}.`, 'green');
396
395
  if (newPresetsCount)
397
- updateInfo('info1', `Found new presets: ${newInMelCloud.ataPresets.length ? `ATA: ${newInMelCloud.ataPresets.length},` : ''} ${newInMelCloud.atwPresets.length ? `ATW: ${newInMelCloud.atwPresets.length},` : ''} ${newInMelCloud.ervPresets.length ? `ERV: ${newInMelCloud.ervPresets.length}` : ''}.`, 'green');
396
+ updateInfo('info1', `Found new presets: ${newInMelCloud.ataPresets.length ? `ATA: ${newInMelCloud.ataPresets.length}` : ''} ${newInMelCloud.atwPresets.length ? `, ATW: ${newInMelCloud.atwPresets.length}` : ''} ${newInMelCloud.ervPresets.length ? `, ERV: ${newInMelCloud.ervPresets.length}` : ''}.`, 'green');
398
397
  if (newScenesCount || newSchedulesCount)
399
- updateInfo('info1', `Found new ${newSchedulesCount ? `schedules:` : ''} ${newInMelCloud.ataSchedules.length ? `ATA: ${newInMelCloud.ataSchedules.length},` : ''} ${newInMelCloud.atwSchedules.length ? `ATW: ${newInMelCloud.atwSchedules.length},` : ''} ${newInMelCloud.ervSchedules.length ? `ERV: ${newInMelCloud.ervSchedules.length},` : ''} ${newScenesCount ? `scenes: ${newScenesCount}` : ''}.`, 'green');
398
+ updateInfo('info1', `Found new ${newSchedulesCount ? `schedules:` : ''} ${newInMelCloud.ataSchedules.length ? `ATA: ${newInMelCloud.ataSchedules.length}` : ''} ${newInMelCloud.atwSchedules.length ? `, ATW: ${newInMelCloud.atwSchedules.length}` : ''} ${newInMelCloud.ervSchedules.length ? `, ERV: ${newInMelCloud.ervSchedules.length}` : ''} ${newScenesCount ? `, scenes:` : ''} ${newInMelCloud.ataScenes.length ? `ATA: ${newInMelCloud.ataScenes.length}` : ''} ${newInMelCloud.atwScenes.length ? `, ATW: ${newInMelCloud.atwScenes.length}` : ''} ${newInMelCloud.ervScenes.length ? `, ERV: ${newInMelCloud.ervScenes.length}` : ''}.`, 'green');
400
399
  if (removedDevicesCount)
401
- updateInfo('info', `Removed devices: ${removedFromConfigAta.length ? `ATA: ${removedFromConfigAta.length},` : ''} ${removedFromConfigAtw.length ? `ATW: ${removedFromConfigAtw.length},` : ''} ${removedFromConfigErv.length ? `ERV: ${removedFromConfigErv.length}` : ''}.`, 'orange');
402
- if (removedPresetsCount)
403
- updateInfo('info1', `Removed presets: ${removedFromConfig.ataPresets.length ? `ATA: ${removedFromConfig.ataPresets.length},` : ''} ${removedFromConfig.atwPresets.length ? `ATW: ${removedFromConfig.atwPresets.length},` : ''} ${removedFromConfig.ervPresets.length ? `ERV: ${removedFromConfig.ervPresets.length}` : ''}.`, 'orange');
404
- if (removedSchedulesCount || removedScenesCount)
405
- updateInfo('info1', `Removed ${removedScenesCount ? `scenes:` : ''} ${removedFromConfig.ataSchedules.length ? `ATA: ${removedFromConfig.ataSchedules.length},` : ''} ${removedFromConfig.atwSchedules.length ? `ATW: ${removedFromConfig.atwSchedules.length},` : ''} ${removedFromConfig.ervSchedules.length ? `ERV: ${removedFromConfig.ervSchedules.length},` : ''} ${removedScenesCount ? `scenes: ${removedScenesCount}` : ''}.`, 'orange');
400
+ updateInfo('info', `Removed devices: ${removedFromConfigAta.length ? `ATA: ${removedFromConfigAta.length}` : ''} ${removedFromConfigAtw.length ? `, ATW: ${removedFromConfigAtw.length}` : ''} ${removedFromConfigErv.length ? `, ERV: ${removedFromConfigErv.length}` : ''}.`, 'orange');
401
+ if (removedPresetsCount || removedSchedulesCount || removedScenesCount)
402
+ updateInfo('info1', `Removed ${removedPresetsCount ? `presets: ${removedPresetsCount}` : ''} ${removedSchedulesCount ? `, schedules: ${removedSchedulesCount}` : ''} ${removedScenesCount ? `, scenes: ${removedScenesCount}` : ''}.`, 'orange');
406
403
  }
407
404
 
408
405
  await homebridge.updatePluginConfig(pluginConfig);
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.45",
4
+ "version": "4.4.1-beta.47",
5
5
  "description": "Homebridge plugin to control Mitsubishi Air Conditioner, Heat Pump and Energy Recovery Ventilation.",
6
6
  "license": "MIT",
7
7
  "author": "grzegorz914",