homebridge-melcloud-control 4.4.1-beta.46 → 4.4.1-beta.48
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.
- package/homebridge-ui/public/index.html +16 -25
- package/package.json +1 -1
|
@@ -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: []
|
|
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
|
-
|
|
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
|
-
|
|
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.
|
|
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.
|
|
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);
|
|
@@ -374,35 +373,27 @@
|
|
|
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.
|
|
378
|
-
account.atwDevices = handleDevices(devicesInMelCloudByType.atw, account.atwDevices, "Heat Pump", newInMelCloud.atw, newInMelCloud.atwPresets, newInMelCloud.atwSchedules, newInMelCloud.
|
|
379
|
-
account.ervDevices = handleDevices(devicesInMelCloudByType.erv, account.ervDevices, "Energy Recovery Ventilation", newInMelCloud.erv, newInMelCloud.ervPresets, newInMelCloud.ervSchedules, newInMelCloud.
|
|
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.
|
|
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.
|
|
388
|
-
const removedSchedulesCount = removedFromConfig.
|
|
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
|
-
if (newDevicesCount)
|
|
395
|
-
updateInfo('info', `Found new devices: ${newInMelCloud.ata.length ? `ATA: ${newInMelCloud.ata.length}
|
|
396
|
-
if (
|
|
397
|
-
updateInfo('info1', `
|
|
398
|
-
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');
|
|
400
|
-
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');
|
|
393
|
+
if (newDevicesCount || newPresetsCount || newSchedulesCount || newScenesCount)
|
|
394
|
+
updateInfo('info', `Found new ${newDevicesCount ? `devices:` : ''} ${newInMelCloud.ata.length ? `ATA: ${newInMelCloud.ata.length}` : ''} ${newInMelCloud.atw.length ? `, ATW: ${newInMelCloud.atw.length}` : ''} ${newInMelCloud.erv.length ? `, ERV: ${newInMelCloud.erv.length},` : ''} ${newPresetsCount ? `, presets:` : ''} ${newInMelCloud.ataPresets.length ? `ATA: ${newInMelCloud.ataPresets.length}` : ''} ${newInMelCloud.atwPresets.length ? `, ATW: ${newInMelCloud.atwPresets.length}` : ''} ${newInMelCloud.ervPresets.length ? `, ERV: ${newInMelCloud.ervPresets.length}` : ''} ${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');
|
|
395
|
+
if (removedDevicesCount || removedPresetsCount || removedSchedulesCount || removedScenesCount)
|
|
396
|
+
updateInfo('info1', `Removed ${removedDevicesCount ? `devices: ${removedPresetsCount}` : ''} ${removedFromConfigAta.length ? `ATA: ${removedFromConfigAta.length}` : ''} ${removedFromConfigAtw.length ? `, ATW: ${removedFromConfigAtw.length}` : ''} ${removedFromConfigErv.length ? `, ERV: ${removedFromConfigErv.length}` : ''} ${removedPresetsCount ? `, presets: ${removedPresetsCount}` : ''} ${removedSchedulesCount ? `, schedules: ${removedSchedulesCount}` : ''} ${removedScenesCount ? `, scenes: ${removedScenesCount}` : ''}.`, 'orange');
|
|
406
397
|
}
|
|
407
398
|
|
|
408
399
|
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.
|
|
4
|
+
"version": "4.4.1-beta.48",
|
|
5
5
|
"description": "Homebridge plugin to control Mitsubishi Air Conditioner, Heat Pump and Energy Recovery Ventilation.",
|
|
6
6
|
"license": "MIT",
|
|
7
7
|
"author": "grzegorz914",
|