homebridge-melcloud-control 4.3.3-beta.21 → 4.3.3-beta.23

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.
@@ -249,11 +249,11 @@
249
249
  const newDevices = { ata: [], ataPresets: [], ataSchedules: [], atw: [], atwPresets: [], atwSchedules: [], erv: [], ervPresets: [], ervSchedules: [], scenes: [] };
250
250
  const devicesByType = { ata: [], atw: [], erv: [] };
251
251
 
252
- response.Devices.forEach(d => {
253
- d.Scenes = Array.isArray(response.Scenes) ? [...response.Scenes] : [];
254
- if (d.Type === 0) devicesByType.ata.push(d);
255
- if (d.Type === 1) devicesByType.atw.push(d);
256
- if (d.Type === 3) devicesByType.erv.push(d);
252
+ response.Devices.forEach(device => {
253
+ device.Scenes = response.Scenes ?? [];
254
+ if (device.Type === 0) devicesByType.ata.push(device);
255
+ if (device.Type === 1) devicesByType.atw.push(device);
256
+ if (device.Type === 3) devicesByType.erv.push(device);
257
257
  });
258
258
 
259
259
  account.ataDevices ??= [];
@@ -295,105 +295,112 @@
295
295
  configDevicesMap.set(deviceId, deviceInConfig);
296
296
  }
297
297
 
298
- // === Process presets/schedules ===
299
- const presets = device.Presets || [];
300
- const presetsInConfig = deviceInConfig.presets || [];
301
- const presetIds = new Set(presetsInConfig.map(p => String(p.id)));
302
-
303
- let addedNewPreset = false;
304
- presets.forEach((preset, index) => {
305
- const presetId = String(preset.ID);
306
- if (!presetIds.has(presetId)) {
307
- const presetObj = {
308
- id: presetId,
309
- displayType: 0,
310
- name: preset.NumberDescription || `Preset ${index}`,
311
- namePrefix: false
312
- };
313
- presetsInConfig.push(presetObj);
314
- newPresets.push(presetObj);
315
- presetIds.add(presetId);
316
- addedNewPreset = true;
317
- }
318
- });
319
-
320
- // === Remove placeholder presets/schedules (id === '0') if new ones were added ===
321
- if (addedNewPreset) {
322
- const beforeCount = presetsInConfig.length;
323
- deviceInConfig.presets = presetsInConfig.filter(p => String(p.id) !== '0');
324
- const removedCount = beforeCount - deviceInConfig.presets.length;
325
-
326
- if (removedCount > 0 && removedCount < beforeCount) {
327
- updateInfo('info2', `Removed ${removedCount} placeholder preset from device ${device.DeviceID}`, 'yellow');
298
+ //only for melcloud
299
+ if (account.type === 'melcloud') {
300
+
301
+ // === Process presets ===
302
+ const presets = device.Presets || [];
303
+ const presetsInConfig = deviceInConfig.presets || [];
304
+ const presetIds = new Set(presetsInConfig.map(p => String(p.id)));
305
+
306
+ let addedNewPreset = false;
307
+ presets.forEach((preset, index) => {
308
+ const presetId = String(preset.ID);
309
+ if (!presetIds.has(presetId)) {
310
+ const presetObj = {
311
+ id: presetId,
312
+ displayType: 0,
313
+ name: preset.NumberDescription || `Preset ${index}`,
314
+ namePrefix: false
315
+ };
316
+ presetsInConfig.push(presetObj);
317
+ newPresets.push(presetObj);
318
+ presetIds.add(presetId);
319
+ addedNewPreset = true;
320
+ }
321
+ });
322
+
323
+ // === Remove placeholder presets/schedules (id === '0') if new ones were added ===
324
+ if (addedNewPreset) {
325
+ const beforeCount = presetsInConfig.length;
326
+ deviceInConfig.presets = presetsInConfig.filter(p => String(p.id) !== '0');
327
+ const removedCount = beforeCount - deviceInConfig.presets.length;
328
+
329
+ if (removedCount > 0 && removedCount < beforeCount) {
330
+ updateInfo('info2', `Removed ${removedCount} placeholder preset from device ${device.DeviceID}`, 'yellow');
331
+ }
328
332
  }
329
333
  }
330
334
 
331
- // === Process presets/schedules ===
332
- const schedules = device.Schedules || [];
333
- const schedulesInConfig = deviceInConfig.schedules || [];
334
- const scheduleIds = new Set(schedulesInConfig.map(s => String(s.id)));
335
-
336
- let addedNewSchedule = false;
337
- schedules.forEach((schedule, index) => {
338
- const scheduleId = String(schedule.Id);
339
- if (!scheduleIds.has(scheduleId)) {
340
- const presetObj = {
341
- id: scheduleId,
342
- displayType: 0,
343
- name: `Schedule ${index}`,
344
- namePrefix: false
345
- };
346
- schedulesInConfig.push(presetObj);
347
- newPresets.push(presetObj);
348
- scheduleIds.add(scheduleId);
349
- addedNewSchedule = true;
335
+ //only for melcloudhome
336
+ if (account.type === 'melcloudhome') {
337
+
338
+ // === Process schedules ===
339
+ const schedules = device.Schedule || [];
340
+ const schedulesInConfig = deviceInConfig.schedules || [];
341
+ const scheduleIds = new Set(schedulesInConfig.map(s => String(s.id)));
342
+
343
+ let addedNewSchedule = false;
344
+ schedules.forEach((schedule, index) => {
345
+ const scheduleId = String(schedule.Id);
346
+ if (!scheduleIds.has(scheduleId)) {
347
+ const presetObj = {
348
+ id: scheduleId,
349
+ displayType: 0,
350
+ name: `Schedule ${index}`,
351
+ namePrefix: false
352
+ };
353
+ schedulesInConfig.push(presetObj);
354
+ newPresets.push(presetObj);
355
+ scheduleIds.add(scheduleId);
356
+ addedNewSchedule = true;
357
+ }
358
+ });
359
+
360
+ // === Remove placeholder schedules (id === '0') if new ones were added ===
361
+ if (addedNewSchedule) {
362
+ const beforeCount = schedulesInConfig.length;
363
+ deviceInConfig.schedules = schedulesInConfig.filter(s => String(s.id) !== '0');
364
+ const removedCount = beforeCount - deviceInConfig.schedules.length;
365
+
366
+ if (removedCount > 0 && removedCount < beforeCount) {
367
+ updateInfo('info2', `Removed ${removedCount} placeholder schedule from device ${device.DeviceID}`, 'yellow');
368
+ }
350
369
  }
351
- });
352
370
 
353
- // === Remove placeholder schedules (id === '0') if new ones were added ===
354
- if (addedNewSchedule) {
355
- const beforeCount = schedulesInConfig.length;
356
- deviceInConfig.schedules = schedulesInConfig.filter(s => String(s.id) !== '0');
357
- const removedCount = beforeCount - deviceInConfig.schedules.length;
358
-
359
- if (removedCount > 0 && removedCount < beforeCount) {
360
- updateInfo('info2', `Removed ${removedCount} placeholder schedule from device ${device.DeviceID}`, 'yellow');
371
+ // === Process scenes ===
372
+ const scenes = device.Scenes || [];
373
+ const scenesInConfig = deviceInConfig.scenes || [];
374
+ const sceneIds = new Set(scenesInConfig.map(s => String(s.id)));
375
+
376
+ let addedNewScenes = false;
377
+ scenes.forEach((scene, index) => {
378
+ const sceneId = String(scene.Id);
379
+ if (!sceneIds.has(sceneId)) {
380
+ const sceneObj = {
381
+ id: sceneId,
382
+ displayType: 0,
383
+ name: scene.Name || `Scene ${index}`,
384
+ namePrefix: false
385
+ };
386
+ scenesInConfig.push(sceneObj);
387
+ newScenes.push(sceneObj);
388
+ sceneIds.add(sceneId);
389
+ addedNewScenes = true;
390
+ }
391
+ });
392
+
393
+ // === Remove placeholder scenes (id === '0') if new ones were added ===
394
+ if (addedNewScenes) {
395
+ const beforeCount = scenesInConfig.length;
396
+ deviceInConfig.scenes = scenesInConfig.filter(s => String(s.id) !== '0');
397
+ const removedCount = beforeCount - deviceInConfig.scenes.length;
398
+
399
+ if (removedCount > 0 && removedCount < beforeCount) {
400
+ updateInfo('info2', `Removed ${removedCount} placeholder scene from device ${device.DeviceID}`, 'yellow');
401
+ }
361
402
  }
362
403
  }
363
-
364
- // === Process scenes ===
365
- const scenes = device.Scenes || [];
366
- const scenesInConfig = deviceInConfig.scenes || [];
367
- const sceneIds = new Set(scenesInConfig.map(s => String(s.id)));
368
-
369
- let addedNewScenes = false;
370
- scenes.forEach((scene, index) => {
371
- const sceneId = String(scene.Id);
372
- if (!sceneIds.has(sceneId)) {
373
- const sceneObj = {
374
- id: sceneId,
375
- displayType: 0,
376
- name: scene.Name || `Scene ${index}`,
377
- namePrefix: false
378
- };
379
- scenesInConfig.push(sceneObj);
380
- newScenes.push(sceneObj);
381
- sceneIds.add(sceneId);
382
- addedNewScenes = true;
383
- }
384
- });
385
-
386
- // === Remove placeholder scenes (id === '0') if new ones were added ===
387
- if (addedNewScenes) {
388
- const beforeCount = scenesInConfig.length;
389
- deviceInConfig.scenes = scenesInConfig.filter(s => String(s.id) !== '0');
390
- const removedCount = beforeCount - deviceInConfig.scenes.length;
391
-
392
- if (removedCount > 0 && removedCount < beforeCount) {
393
- updateInfo('info2', `Removed ${removedCount} placeholder scene from device ${device.DeviceID}`, 'yellow');
394
- }
395
- }
396
-
397
404
  });
398
405
 
399
406
  // Return filtered devicesInConfig to make sure upstream code uses it
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "displayName": "MELCloud Control",
3
3
  "name": "homebridge-melcloud-control",
4
- "version": "4.3.3-beta.21",
4
+ "version": "4.3.3-beta.23",
5
5
  "description": "Homebridge plugin to control Mitsubishi Air Conditioner, Heat Pump and Energy Recovery Ventilation.",
6
6
  "license": "MIT",
7
7
  "author": "grzegorz914",