homebridge-melcloud-control 4.5.9-beta.6 → 4.5.9-beta.8

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/CHANGELOG.md CHANGED
@@ -22,6 +22,14 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
22
22
 
23
23
  - Do not use Homebridge UI > v5.5.0 because of break config.json
24
24
 
25
+ # [4.6.0] - (28.12.2025)
26
+
27
+ ## Changes
28
+
29
+ - added support for Homebridge UI >= v5.13.0, [#228](https://github.com/grzegorz914/homebridge-melcloud-control/issues/228)
30
+ - config schema updated
31
+ - cleanup
32
+
25
33
  # [4.5.7] - (24.12.2025)
26
34
 
27
35
  ## Changes
@@ -248,8 +248,15 @@
248
248
  "title": "Display Type",
249
249
  "type": "integer",
250
250
  "maximum": 2,
251
+ "default": 0,
251
252
  "description": "Select accessory control type displayed in HomeKit.",
252
253
  "anyOf": [
254
+ {
255
+ "title": "Disabled",
256
+ "enum": [
257
+ 0
258
+ ]
259
+ },
253
260
  {
254
261
  "title": "Heater / Cooler",
255
262
  "enum": [
@@ -274,6 +281,7 @@
274
281
  "title": "Heat",
275
282
  "type": "integer",
276
283
  "maximum": 3,
284
+ "default": 1,
277
285
  "description": "Select the operating mode for Heat, work only if mode supported by device.",
278
286
  "anyOf": [
279
287
  {
@@ -300,6 +308,7 @@
300
308
  "title": "Cool",
301
309
  "type": "integer",
302
310
  "maximum": 3,
311
+ "default": 1,
303
312
  "description": "Select the operating mode for Cool, work only if mode supported by device.",
304
313
  "anyOf": [
305
314
  {
@@ -326,6 +335,7 @@
326
335
  "title": "Auto",
327
336
  "type": "integer",
328
337
  "maximum": 3,
338
+ "default": 1,
329
339
  "description": "Select the operating mode for Auto, work only if mode supported by device.",
330
340
  "anyOf": [
331
341
  {
@@ -419,8 +429,15 @@
419
429
  "title": "Display Type",
420
430
  "type": "integer",
421
431
  "maximum": 7,
432
+ "default": 0,
422
433
  "description": "Select the characteristic type to be displayed in HomeKit.",
423
434
  "anyOf": [
435
+ {
436
+ "title": "Disabled",
437
+ "enum": [
438
+ 0
439
+ ]
440
+ },
424
441
  {
425
442
  "title": "Motion Sensor",
426
443
  "enum": [
@@ -494,8 +511,15 @@
494
511
  "title": "Display Type",
495
512
  "type": "integer",
496
513
  "maximum": 7,
514
+ "default": 0,
497
515
  "description": "Select the characteristic type to be displayed in HomeKit.",
498
516
  "anyOf": [
517
+ {
518
+ "title": "Disabled",
519
+ "enum": [
520
+ 0
521
+ ]
522
+ },
499
523
  {
500
524
  "title": "Motion Sensor",
501
525
  "enum": [
@@ -572,8 +596,15 @@
572
596
  "title": "Display Type",
573
597
  "type": "integer",
574
598
  "maximum": 7,
599
+ "default": 0,
575
600
  "description": "Select the characteristic type to be displayed in HomeKit.",
576
601
  "anyOf": [
602
+ {
603
+ "title": "Disabled",
604
+ "enum": [
605
+ 0
606
+ ]
607
+ },
577
608
  {
578
609
  "title": "Motion Sensor",
579
610
  "enum": [
@@ -646,8 +677,15 @@
646
677
  "title": "Display Type",
647
678
  "type": "integer",
648
679
  "maximum": 7,
680
+ "default": 0,
649
681
  "description": "Select the characteristic type to be displayed in HomeKit.",
650
682
  "anyOf": [
683
+ {
684
+ "title": "Disabled",
685
+ "enum": [
686
+ 0
687
+ ]
688
+ },
651
689
  {
652
690
  "title": "Motion Sensor",
653
691
  "enum": [
@@ -696,8 +734,15 @@
696
734
  "title": "Mode",
697
735
  "type": "integer",
698
736
  "maximum": 40,
737
+ "default": 0,
699
738
  "description": "Function, VH - Vane Horizontal, VV - Vane Vertical.",
700
739
  "anyOf": [
740
+ {
741
+ "title": "Disabled",
742
+ "enum": [
743
+ 0
744
+ ]
745
+ },
701
746
  {
702
747
  "title": "POWER ON / OFF",
703
748
  "enum": [
@@ -956,6 +1001,7 @@
956
1001
  "title": "Display Type",
957
1002
  "type": "integer",
958
1003
  "maximum": 2,
1004
+ "default": 1,
959
1005
  "description": "Select accessory control type displayed in HomeKit.",
960
1006
  "anyOf": [
961
1007
  {
@@ -976,8 +1022,15 @@
976
1022
  "title": "Hide zone",
977
1023
  "type": "integer",
978
1024
  "maximum": 15,
1025
+ "default": 0,
979
1026
  "description": "Select zone to hidde in HomeKit, if present.",
980
1027
  "anyOf": [
1028
+ {
1029
+ "title": "Disabled",
1030
+ "enum": [
1031
+ 0
1032
+ ]
1033
+ },
981
1034
  {
982
1035
  "title": "Heat Pump",
983
1036
  "enum": [
@@ -1174,8 +1227,15 @@
1174
1227
  "title": "Display Type",
1175
1228
  "type": "integer",
1176
1229
  "maximum": 7,
1230
+ "default": 0,
1177
1231
  "description": "Select the characteristic type to be displayed in HomeKit.",
1178
1232
  "anyOf": [
1233
+ {
1234
+ "title": "Disabled",
1235
+ "enum": [
1236
+ 0
1237
+ ]
1238
+ },
1179
1239
  {
1180
1240
  "title": "Motion Sensor",
1181
1241
  "enum": [
@@ -1249,8 +1309,15 @@
1249
1309
  "title": "Display Type",
1250
1310
  "type": "integer",
1251
1311
  "maximum": 7,
1312
+ "default": 0,
1252
1313
  "description": "Select the characteristic type to be displayed in HomeKit.",
1253
1314
  "anyOf": [
1315
+ {
1316
+ "title": "Disabled",
1317
+ "enum": [
1318
+ 0
1319
+ ]
1320
+ },
1254
1321
  {
1255
1322
  "title": "Motion Sensor",
1256
1323
  "enum": [
@@ -1324,8 +1391,15 @@
1324
1391
  "title": "Display Type",
1325
1392
  "type": "integer",
1326
1393
  "maximum": 7,
1394
+ "default": 0,
1327
1395
  "description": "Select the characteristic type to be displayed in HomeKit.",
1328
1396
  "anyOf": [
1397
+ {
1398
+ "title": "Disabled",
1399
+ "enum": [
1400
+ 0
1401
+ ]
1402
+ },
1329
1403
  {
1330
1404
  "title": "Motion Sensor",
1331
1405
  "enum": [
@@ -1395,8 +1469,15 @@
1395
1469
  "title": "Display Type",
1396
1470
  "type": "integer",
1397
1471
  "maximum": 7,
1472
+ "default": 0,
1398
1473
  "description": "Select the characteristic type to be displayed in HomeKit.",
1399
1474
  "anyOf": [
1475
+ {
1476
+ "title": "Disabled",
1477
+ "enum": [
1478
+ 0
1479
+ ]
1480
+ },
1400
1481
  {
1401
1482
  "title": "Motion Sensor",
1402
1483
  "enum": [
@@ -1445,6 +1526,7 @@
1445
1526
  "title": "Mode",
1446
1527
  "type": "integer",
1447
1528
  "maximum": 70,
1529
+ "default": 0,
1448
1530
  "description": "Select the function.",
1449
1531
  "anyOf": [
1450
1532
  {
@@ -1627,6 +1709,7 @@
1627
1709
  "title": "Display Type",
1628
1710
  "type": "integer",
1629
1711
  "maximum": 2,
1712
+ "default": 1,
1630
1713
  "description": "Select accessory control type displayed in HomeKit.",
1631
1714
  "anyOf": [
1632
1715
  {
@@ -1702,8 +1785,15 @@
1702
1785
  "title": "Display Type",
1703
1786
  "type": "integer",
1704
1787
  "maximum": 7,
1788
+ "default": 0,
1705
1789
  "description": "Select the characteristic type to be displayed in HomeKit.",
1706
1790
  "anyOf": [
1791
+ {
1792
+ "title": "Disabled",
1793
+ "enum": [
1794
+ 0
1795
+ ]
1796
+ },
1707
1797
  {
1708
1798
  "title": "Motion Sensor",
1709
1799
  "enum": [
@@ -1780,8 +1870,15 @@
1780
1870
  "title": "Display Type",
1781
1871
  "type": "integer",
1782
1872
  "maximum": 7,
1873
+ "default": 0,
1783
1874
  "description": "Select the characteristic type to be displayed in HomeKit.",
1784
1875
  "anyOf": [
1876
+ {
1877
+ "title": "Disabled",
1878
+ "enum": [
1879
+ 0
1880
+ ]
1881
+ },
1785
1882
  {
1786
1883
  "title": "Motion Sensor",
1787
1884
  "enum": [
@@ -1855,8 +1952,15 @@
1855
1952
  "title": "Display Type",
1856
1953
  "type": "integer",
1857
1954
  "maximum": 7,
1955
+ "default": 0,
1858
1956
  "description": "Select the characteristic type to be displayed in HomeKit.",
1859
1957
  "anyOf": [
1958
+ {
1959
+ "title": "Disabled",
1960
+ "enum": [
1961
+ 0
1962
+ ]
1963
+ },
1860
1964
  {
1861
1965
  "title": "Motion Sensor",
1862
1966
  "enum": [
@@ -1926,8 +2030,15 @@
1926
2030
  "title": "Display Type",
1927
2031
  "type": "integer",
1928
2032
  "maximum": 7,
2033
+ "default": 0,
1929
2034
  "description": "Select the characteristic type to be displayed in HomeKit.",
1930
2035
  "anyOf": [
2036
+ {
2037
+ "title": "Disabled",
2038
+ "enum": [
2039
+ 0
2040
+ ]
2041
+ },
1931
2042
  {
1932
2043
  "title": "Motion Sensor",
1933
2044
  "enum": [
@@ -1976,6 +2087,7 @@
1976
2087
  "title": "Mode",
1977
2088
  "type": "integer",
1978
2089
  "maximum": 18,
2090
+ "default": 0,
1979
2091
  "description": "Select the function.",
1980
2092
  "anyOf": [
1981
2093
  {
@@ -279,9 +279,9 @@
279
279
  };
280
280
 
281
281
  // Clean up local config
282
- account.ataDevices = (account.ataDevices ?? []).filter(d => String(d.id) !== '0');
283
- account.atwDevices = (account.atwDevices ?? []).filter(d => String(d.id) !== '0');
284
- account.ervDevices = (account.ervDevices ?? []).filter(d => String(d.id) !== '0');
282
+ account.ataDevices = (account.ataDevices ?? []).filter(d => String(d.id) !== '0' && String(d.id) !== null);
283
+ account.atwDevices = (account.atwDevices ?? []).filter(d => String(d.id) !== '0' && String(d.id) !== null);
284
+ account.ervDevices = (account.ervDevices ?? []).filter(d => String(d.id) !== '0' && String(d.id) !== null);
285
285
 
286
286
  const removedFromConfig = { ata: [], atw: [], erv: [], presets: [], schedules: [], scenes: [] };
287
287
  removedFromConfig.ata = removeStaleEntities(account.ataDevices, devicesInMelCloudByType.ata, d => d.id, d => d.DeviceID);
@@ -313,7 +313,7 @@
313
313
 
314
314
  // PRESETS (melcloud)
315
315
  if (account.type === 'melcloud') {
316
- deviceInConfig.presets = (deviceInConfig.presets ?? []).filter(p => String(p.id) !== '0');
316
+ deviceInConfig.presets = (deviceInConfig.presets ?? []).filter(p => String(p.id) !== '0' && String(p.id) !== null);
317
317
  const presetsInMelCloud = device.Presets ?? [];
318
318
  removedFromConfig.presets.push(...removeStaleEntities(deviceInConfig.presets, presetsInMelCloud, p => p.id, p => p.ID));
319
319
  const presetIds = new Set(deviceInConfig.presets.map(p => String(p.id)));
@@ -322,7 +322,9 @@
322
322
  if (!presetIds.has(presetId)) {
323
323
  const presetObj = {
324
324
  id: presetId,
325
- name: preset.NumberDescription || `Preset ${index}`
325
+ displayType: 0,
326
+ name: preset.NumberDescription || `Preset ${index}`,
327
+ namePrefix: false
326
328
  };
327
329
  deviceInConfig.presets.push(presetObj);
328
330
  newPresets.push(presetObj);
@@ -333,7 +335,7 @@
333
335
  // SCHEDULES & SCENES (melcloudhome)
334
336
  if (account.type === 'melcloudhome') {
335
337
  // SCHEDULES
336
- deviceInConfig.schedules = (deviceInConfig.schedules ?? []).filter(s => String(s.id) !== '0');
338
+ deviceInConfig.schedules = (deviceInConfig.schedules ?? []).filter(s => String(s.id) !== '0' && String(s.id) !== null);
337
339
  const schedulesInMelCloud = device.Schedule ?? [];
338
340
  removedFromConfig.schedules.push(...removeStaleEntities(deviceInConfig.schedules, schedulesInMelCloud, s => s.id, s => s.Id));
339
341
  const scheduleIds = new Set(deviceInConfig.schedules.map(s => String(s.id)));
@@ -342,7 +344,9 @@
342
344
  if (!scheduleIds.has(scheduleId)) {
343
345
  const scheduleObj = {
344
346
  id: scheduleId,
345
- name: `Schedule ${index}`
347
+ displayType: 0,
348
+ name: `Schedule ${index}`,
349
+ namePrefix: false
346
350
  };
347
351
  deviceInConfig.schedules.push(scheduleObj);
348
352
  newSchedules.push(scheduleObj);
@@ -350,7 +354,7 @@
350
354
  });
351
355
 
352
356
  // SCENES
353
- deviceInConfig.scenes = (deviceInConfig.scenes ?? []).filter(s => String(s.id) !== '0');
357
+ deviceInConfig.scenes = (deviceInConfig.scenes ?? []).filter(s => String(s.id) !== '0' && String(s.id) !== null);
354
358
  const scenesForDevice = unitIdToScenes.get(deviceId) ?? [];
355
359
  removedFromConfig.scenes.push(...removeStaleEntities(deviceInConfig.scenes, scenesForDevice, s => s.id, s => s.Id));
356
360
  const sceneIds = new Set(deviceInConfig.scenes.map(s => String(s.id)));
@@ -359,7 +363,9 @@
359
363
  if (!sceneIds.has(sceneId)) {
360
364
  const sceneObj = {
361
365
  id: sceneId,
362
- name: scene.Name || `Scene ${index}`
366
+ displayType: 0,
367
+ name: scene.Name || `Scene ${index}`,
368
+ namePrefix: false
363
369
  };
364
370
  deviceInConfig.scenes.push(sceneObj);
365
371
  newScenes.push(sceneObj);
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "displayName": "MELCloud Control",
3
3
  "name": "homebridge-melcloud-control",
4
- "version": "4.5.9-beta.6",
4
+ "version": "4.5.9-beta.8",
5
5
  "description": "Homebridge plugin to control Mitsubishi Air Conditioner, Heat Pump and Energy Recovery Ventilation.",
6
6
  "license": "MIT",
7
7
  "author": "grzegorz914",