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.
- package/homebridge-ui/public/index.html +20 -127
- package/package.json +1 -1
|
@@ -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
|
|
277
|
-
|
|
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
|
-
|
|
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
|
|
359
|
-
|
|
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
|
-
|
|
390
|
-
|
|
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
|
-
|
|
419
|
-
|
|
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
|
-
|
|
447
|
-
|
|
448
|
-
|
|
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.
|
|
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",
|