homebridge-melcloud-control 3.1.0-beta.5 → 3.1.0-beta.7

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.
@@ -369,6 +369,11 @@
369
369
  "items": {
370
370
  "type": "object",
371
371
  "properties": {
372
+ "id": {
373
+ "title": "ID",
374
+ "type": "integer",
375
+ "required": false
376
+ },
372
377
  "name": {
373
378
  "title": "Name",
374
379
  "type": "string",
@@ -431,6 +436,9 @@
431
436
  "required": false
432
437
  }
433
438
  }
439
+ },
440
+ "condition": {
441
+ "functionBody": "const devicePresets = model.accounts[arrayIndices].devicesAta[arrayIndices]?.presets || []; return devicePresets.length > 0 && devicePresets.every(preset => preset.id != null && preset.id !== '');"
434
442
  }
435
443
  },
436
444
  "temperatureSensor": {
@@ -735,6 +743,9 @@
735
743
  "required": false
736
744
  }
737
745
  }
746
+ },
747
+ "condition": {
748
+ "functionBody": "const buttons = model.accounts[arrayIndices].devicesAta[arrayIndices]?.buttons || []; return buttons.length > 0 && buttons.every(preset => buttons.name != null && device.name !== '');"
738
749
  }
739
750
  }
740
751
  }
@@ -867,6 +878,11 @@
867
878
  "items": {
868
879
  "type": "object",
869
880
  "properties": {
881
+ "id": {
882
+ "title": "ID",
883
+ "type": "integer",
884
+ "required": false
885
+ },
870
886
  "name": {
871
887
  "title": "Name",
872
888
  "type": "string",
@@ -929,6 +945,9 @@
929
945
  "required": false
930
946
  }
931
947
  }
948
+ },
949
+ "condition": {
950
+ "functionBody": "const devicePresets = model.accounts[arrayIndices].devicesAtw[arrayIndices]?.presets || []; return devicePresets.length > 0 && devicePresets.every(preset => preset.id != null && preset.id !== '');"
932
951
  }
933
952
  },
934
953
  "buttonsSensors": {
@@ -1141,6 +1160,9 @@
1141
1160
  "required": false
1142
1161
  }
1143
1162
  }
1163
+ },
1164
+ "condition": {
1165
+ "functionBody": "const buttons = model.accounts[arrayIndices].devicesAtw[arrayIndices]?.buttons || []; return buttons.length > 0 && buttons.every(preset => buttons.name != null && device.name !== '');"
1144
1166
  }
1145
1167
  }
1146
1168
  }
@@ -1180,7 +1202,7 @@
1180
1202
  "type": "integer",
1181
1203
  "minimum": 0,
1182
1204
  "maximum": 2,
1183
- "default": 0,
1205
+ "default": 1,
1184
1206
  "oneOf": [
1185
1207
  {
1186
1208
  "title": "None/Disabled",
@@ -1231,6 +1253,11 @@
1231
1253
  "items": {
1232
1254
  "type": "object",
1233
1255
  "properties": {
1256
+ "id": {
1257
+ "title": "ID",
1258
+ "type": "integer",
1259
+ "required": false
1260
+ },
1234
1261
  "name": {
1235
1262
  "title": "Name",
1236
1263
  "type": "string",
@@ -1293,6 +1320,9 @@
1293
1320
  "required": false
1294
1321
  }
1295
1322
  }
1323
+ },
1324
+ "condition": {
1325
+ "functionBody": "const devicePresets = model.accounts[arrayIndices].devicesErv[arrayIndices]?.presets || []; return devicePresets.length > 0 && devicePresets.every(preset => preset.id != null && preset.id !== '');"
1296
1326
  }
1297
1327
  },
1298
1328
  "buttonsSensors": {
@@ -1457,6 +1487,9 @@
1457
1487
  "required": false
1458
1488
  }
1459
1489
  }
1490
+ },
1491
+ "condition": {
1492
+ "functionBody": "const buttons = model.accounts[arrayIndices].devicesErv[arrayIndices]?.buttons || []; return buttons.length > 0 && buttons.every(preset => buttons.name != null && device.name !== '');"
1460
1493
  }
1461
1494
  }
1462
1495
  }
@@ -1708,6 +1741,10 @@
1708
1741
  "type": "tabarray",
1709
1742
  "title": "{{ value.name }}",
1710
1743
  "items": [
1744
+ {
1745
+ "key": "accounts[].ataDevices[].presets[].id",
1746
+ "readonly": true
1747
+ },
1711
1748
  "accounts[].ataDevices[].presets[].name",
1712
1749
  "accounts[].ataDevices[].presets[].displayType",
1713
1750
  "accounts[].ataDevices[].presets[].namePrefix"
@@ -1798,6 +1835,10 @@
1798
1835
  "type": "tabarray",
1799
1836
  "title": "{{ value.name }}",
1800
1837
  "items": [
1838
+ {
1839
+ "key": "accounts[].atwDevices[].presets[].id",
1840
+ "readonly": true
1841
+ },
1801
1842
  "accounts[].atwDevices[].presets[].name",
1802
1843
  "accounts[].atwDevices[].presets[].displayType",
1803
1844
  "accounts[].atwDevices[].presets[].namePrefix"
@@ -1882,6 +1923,10 @@
1882
1923
  "type": "tabarray",
1883
1924
  "title": "{{ value.name }}",
1884
1925
  "items": [
1926
+ {
1927
+ "key": "accounts[].ervDevices[].presets[].id",
1928
+ "readonly": true
1929
+ },
1885
1930
  "accounts[].ervDevices[].presets[].name",
1886
1931
  "accounts[].ervDevices[].presets[].displayType",
1887
1932
  "accounts[].ervDevices[].presets[].namePrefix"
@@ -223,6 +223,7 @@
223
223
  const presetId = preset.ID;
224
224
  const presetName = preset.NumberDescription;
225
225
 
226
+ preset.Id = presetId;
226
227
  preset.name = presetName;
227
228
  preset.displayType == 0;
228
229
  preset.namePrefix = false;
@@ -279,6 +280,7 @@
279
280
  const presetId = preset.ID;
280
281
  const presetName = preset.NumberDescription;
281
282
 
283
+ preset.Id = presetId;
282
284
  preset.name = presetName;
283
285
  preset.displayType == 0;
284
286
  preset.namePrefix = false;
@@ -329,6 +331,7 @@
329
331
  const presetId = preset.ID;
330
332
  const presetName = preset.NumberDescription;
331
333
 
334
+ preset.Id = presetId;
332
335
  preset.name = presetName;
333
336
  preset.displayType == 0;
334
337
  preset.namePrefix = false;
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "displayName": "MELCloud Control",
3
3
  "name": "homebridge-melcloud-control",
4
- "version": "3.1.0-beta.5",
4
+ "version": "3.1.0-beta.7",
5
5
  "description": "Homebridge plugin to control Mitsubishi Air Conditioner, Heat Pump and Energy Recovery Ventilation.",
6
6
  "license": "MIT",
7
7
  "author": "grzegorz914",
package/src/deviceata.js CHANGED
@@ -204,6 +204,9 @@ class DeviceAta extends EventEmitter {
204
204
  const outdoorTemperature = deviceData.Device.OutdoorTemperature;
205
205
  const temperatureUnit = CONSTANTS.TemperatureDisplayUnits[useFahrenheit];
206
206
 
207
+ //presets
208
+ const presetsOnServer = deviceData.Presets ?? [];
209
+
207
210
  //device state
208
211
  const roomTemperature = deviceState.RoomTemperature;
209
212
  const setTemperature = deviceState.SetTemperature;
@@ -221,6 +224,7 @@ class DeviceAta extends EventEmitter {
221
224
  const offline = deviceState.Offline;
222
225
 
223
226
  //accessory
227
+ this.accessory.presetsOnServer = presetsOnServer;
224
228
  this.accessory.power = power;
225
229
  this.accessory.offline = offline;
226
230
  this.accessory.roomTemperature = roomTemperature;
@@ -425,6 +429,28 @@ class DeviceAta extends EventEmitter {
425
429
  .updateCharacteristic(Characteristic.CurrentTemperature, outdoorTemperature)
426
430
  };
427
431
 
432
+ //update presets state
433
+ if (this.presetsConfigured.length > 0) {
434
+ for (let i = 0; i < this.presetsConfigured.length; i++) {
435
+ const preset = this.presetsConfigured[i];
436
+ const index = presetsOnServer.findIndex(p => p.ID === preset.Id);
437
+ const presetData = presetsOnServer[index];
438
+
439
+ preset.state = presetData ? (presetData.Power === power
440
+ && presetData.SetTemperature === setTemperature
441
+ && presetData.OperationMode === operationMode
442
+ && presetData.VaneHorizontal === vaneHorizontal
443
+ && presetData.VaneVertical === vaneVertical
444
+ && presetData.FanSpeed === setFanSpeed) : false;
445
+
446
+ if (this.presetsServices) {
447
+ const characteristicType = preset.characteristicType;
448
+ this.presetsServices[i]
449
+ .updateCharacteristic(characteristicType, preset.state)
450
+ };
451
+ };
452
+ };
453
+
428
454
  //update buttons state
429
455
  if (this.buttonsConfiguredCount > 0) {
430
456
  for (let i = 0; i < this.buttonsConfiguredCount; i++) {
@@ -550,25 +576,6 @@ class DeviceAta extends EventEmitter {
550
576
  };
551
577
  };
552
578
 
553
- //update presets state
554
- if (this.presetsConfigured.length > 0) {
555
- for (let i = 0; i < this.presetsConfigured.length; i++) {
556
- const preset = this.presetsConfigured[i];
557
- preset.state = (preset.Power === power
558
- && preset.SetTemperature === setTemperature
559
- && preset.OperationMode === operationMode
560
- && preset.VaneHorizontal === vaneHorizontal
561
- && preset.VaneVertical === vaneVertical
562
- && preset.FanSpeed === setFanSpeed) ?? false;
563
-
564
- if (this.presetsServices) {
565
- const characteristicType = preset.characteristicType;
566
- this.presetsServices[i]
567
- .updateCharacteristic(characteristicType, preset.state)
568
- };
569
- };
570
- };
571
-
572
579
  //log current state
573
580
  if (!this.disableLogInfo) {
574
581
  const operationModeText = !power ? CONSTANTS.AirConditioner.System[0] : CONSTANTS.AirConditioner.DriveMode[operationMode];
@@ -708,6 +715,7 @@ class DeviceAta extends EventEmitter {
708
715
  .setCharacteristic(Characteristic.FirmwareRevision, this.firmwareRevision);
709
716
 
710
717
  //melcloud services
718
+ const presetsOnServer = this.accessory.presetsOnServer;
711
719
  const displayMode = this.displayMode;
712
720
  const temperatureSensor = this.temperatureSensor;
713
721
  const temperatureSensorOutdoor = this.temperatureSensorOutdoor;
@@ -1081,9 +1089,8 @@ class DeviceAta extends EventEmitter {
1081
1089
 
1082
1090
  for (let i = 0; i < presetsConfiguredCount; i++) {
1083
1091
  const preset = presetsConfigured[i];
1084
-
1085
- //get button display type
1086
- const displayType = preset.displayType;
1092
+ const index = presetsOnServer.findIndex(p => p.ID === preset.Id);
1093
+ const presetData = presetsOnServer[index];
1087
1094
 
1088
1095
  //get button name
1089
1096
  const presetName = preset.name;
@@ -1107,12 +1114,12 @@ class DeviceAta extends EventEmitter {
1107
1114
  switch (state) {
1108
1115
  case true:
1109
1116
  previousPresets[i] = deviceState;
1110
- deviceState.SetTemperature = preset.SetTemperature;
1111
- deviceState.Power = preset.Power;
1112
- deviceState.OperationMode = preset.OperationMode;
1113
- deviceState.VaneHorizontal = preset.VaneHorizontal;
1114
- deviceState.VaneVertical = preset.VaneVertical;
1115
- deviceState.SetFanSpeed = preset.FanSpeed;
1117
+ deviceState.SetTemperature = presetData.SetTemperature;
1118
+ deviceState.Power = presetData.Power;
1119
+ deviceState.OperationMode = presetData.OperationMode;
1120
+ deviceState.VaneHorizontal = presetData.VaneHorizontal;
1121
+ deviceState.VaneVertical = presetData.VaneVertical;
1122
+ deviceState.SetFanSpeed = presetData.FanSpeed;
1116
1123
  deviceState.EffectiveFlags = CONSTANTS.AirConditioner.EffectiveFlags.Power;
1117
1124
  break;
1118
1125
  case false:
package/src/deviceatw.js CHANGED
@@ -214,6 +214,9 @@ class DeviceAtw extends EventEmitter {
214
214
  const returnTemperatureZone2 = deviceData.Device.ReturnTemperatureZone2;
215
215
  const returnTemperatureWaterTank = deviceData.Device.ReturnTemperatureBoiler;
216
216
 
217
+ //presets
218
+ const presetsOnServer = deviceData.Presets ?? [];
219
+
217
220
  //zones
218
221
  const hotWater = hasHotWaterTank ? 1 : 0;
219
222
  const zone2 = hasZone2 ? 1 : 0;
@@ -254,6 +257,7 @@ class DeviceAtw extends EventEmitter {
254
257
  const offline = deviceState.Offline;
255
258
 
256
259
  //accessory
260
+ this.accessory.presetsOnServer = presetsOnServer;
257
261
  this.accessory.power = power;
258
262
  this.accessory.offline = offline;
259
263
  this.accessory.unitStatus = unitStatus;
@@ -570,6 +574,34 @@ class DeviceAtw extends EventEmitter {
570
574
  };
571
575
  };
572
576
 
577
+ //update presets state
578
+ if (this.presetsConfigured.length > 0) {
579
+ for (let i = 0; i < this.presetsConfigured.length; i++) {
580
+ const preset = this.presetsConfigured[i];
581
+ const index = presetsOnServer.findIndex(p => p.ID === preset.Id);
582
+ const presetData = presetsOnServer[index];
583
+
584
+ preset.state = presetData ? (preset.Power === power
585
+ && preset.EcoHotWater === ecoHotWater
586
+ && preset.OperationModeZone1 === operationModeZone1
587
+ && preset.OperationModeZone2 === operationModeZone2
588
+ && preset.SetTankWaterTemperature === setTankWaterTemperature
589
+ && preset.SetTemperatureZone1 === setTemperatureZone1
590
+ && preset.SetTemperatureZone2 === setTemperatureZone2
591
+ && preset.ForcedHotWaterMode === forcedHotWaterMode
592
+ && preset.SetHeatFlowTemperatureZone1 === setHeatFlowTemperatureZone1
593
+ && preset.SetHeatFlowTemperatureZone2 === setHeatFlowTemperatureZone2
594
+ && preset.SetCoolFlowTemperatureZone1 === setCoolFlowTemperatureZone1
595
+ && preset.SetCoolFlowTemperatureZone2 === setCoolFlowTemperatureZone2) : false;
596
+
597
+ if (this.presetsServices) {
598
+ const characteristicType = preset.characteristicType;
599
+ this.presetsServices[i]
600
+ .updateCharacteristic(characteristicType, preset.state)
601
+ };
602
+ };
603
+ };
604
+
573
605
  //update buttons state
574
606
  if (this.buttonsConfiguredCount > 0) {
575
607
  for (let i = 0; i < this.buttonsConfiguredCount; i++) {
@@ -659,31 +691,6 @@ class DeviceAtw extends EventEmitter {
659
691
  };
660
692
  };
661
693
 
662
- //update presets state
663
- if (this.presetsConfigured.length > 0) {
664
- for (let i = 0; i < this.presetsConfigured.length; i++) {
665
- const preset = this.presetsConfigured[i];
666
- preset.state = (preset.Power === power
667
- && preset.EcoHotWater === ecoHotWater
668
- && preset.OperationModeZone1 === operationModeZone1
669
- && preset.OperationModeZone2 === operationModeZone2
670
- && preset.SetTankWaterTemperature === setTankWaterTemperature
671
- && preset.SetTemperatureZone1 === setTemperatureZone1
672
- && preset.SetTemperatureZone2 === setTemperatureZone2
673
- && preset.ForcedHotWaterMode === forcedHotWaterMode
674
- && preset.SetHeatFlowTemperatureZone1 === setHeatFlowTemperatureZone1
675
- && preset.SetHeatFlowTemperatureZone2 === setHeatFlowTemperatureZone2
676
- && preset.SetCoolFlowTemperatureZone1 === setCoolFlowTemperatureZone1
677
- && preset.SetCoolFlowTemperatureZone2 === setCoolFlowTemperatureZone2) ?? false;
678
-
679
- if (this.presetsServices) {
680
- const characteristicType = preset.characteristicType;
681
- this.presetsServices[i]
682
- .updateCharacteristic(characteristicType, preset.state)
683
- };
684
- };
685
- };
686
-
687
694
  //start prepare accessory
688
695
  if (this.startPrepareAccessory) {
689
696
  try {
@@ -827,6 +834,7 @@ class DeviceAtw extends EventEmitter {
827
834
 
828
835
  //melcloud services
829
836
  const zonesCount = this.zonesCount;
837
+ const presetsOnServer = this.accessory.presetsOnServer;
830
838
  const temperatureSensor = this.temperatureSensor;
831
839
  const temperatureSensorFlow = this.temperatureSensorFlow;
832
840
  const temperatureSensorReturn = this.temperatureSensorReturn;
@@ -1529,9 +1537,8 @@ class DeviceAtw extends EventEmitter {
1529
1537
 
1530
1538
  for (let i = 0; i < presetsConfiguredCount; i++) {
1531
1539
  const preset = presetsConfigured[i];
1532
-
1533
- //get button display type
1534
- const displayType = preset.displayType;
1540
+ const index = presetsOnServer.findIndex(p => p.ID === preset.Id);
1541
+ const presetData = presetsOnServer[index];
1535
1542
 
1536
1543
  //get button name
1537
1544
  const presetName = preset.name;
@@ -1555,18 +1562,18 @@ class DeviceAtw extends EventEmitter {
1555
1562
  switch (state) {
1556
1563
  case true:
1557
1564
  previousPresets[i] = deviceState;
1558
- deviceState.Power = preset.Power;
1559
- deviceState.EcoHotWater = preset.EcoHotWater;
1560
- deviceState.OperationModeZone1 = preset.OperationModeZone1;
1561
- deviceState.OperationModeZone2 = preset.OperationModeZone2;
1562
- deviceState.SetTankWaterTemperature = preset.SetTankWaterTemperature;
1563
- deviceState.SetTemperatureZone1 = preset.SetTemperatureZone1;
1564
- deviceState.SetTemperatureZone2 = preset.SetTemperatureZone2;
1565
- deviceState.ForcedHotWaterMode = preset.ForcedHotWaterMode;
1566
- deviceState.SetHeatFlowTemperatureZone1 = preset.SetHeatFlowTemperatureZone1;
1567
- deviceState.SetHeatFlowTemperatureZone2 = preset.SetHeatFlowTemperatureZone2;
1568
- deviceState.SetCoolFlowTemperatureZone1 = preset.SetCoolFlowTemperatureZone1;
1569
- deviceState.SetCoolFlowTemperatureZone2 = preset.SetCoolFlowTemperatureZone2;
1565
+ deviceState.Power = presetData.Power;
1566
+ deviceState.EcoHotWater = presetData.EcoHotWater;
1567
+ deviceState.OperationModeZone1 = presetData.OperationModeZone1;
1568
+ deviceState.OperationModeZone2 = presetData.OperationModeZone2;
1569
+ deviceState.SetTankWaterTemperature = presetData.SetTankWaterTemperature;
1570
+ deviceState.SetTemperatureZone1 = presetData.SetTemperatureZone1;
1571
+ deviceState.SetTemperatureZone2 = presetData.SetTemperatureZone2;
1572
+ deviceState.ForcedHotWaterMode = presetData.ForcedHotWaterMode;
1573
+ deviceState.SetHeatFlowTemperatureZone1 = presetData.SetHeatFlowTemperatureZone1;
1574
+ deviceState.SetHeatFlowTemperatureZone2 = presetData.SetHeatFlowTemperatureZone2;
1575
+ deviceState.SetCoolFlowTemperatureZone1 = presetData.SetCoolFlowTemperatureZone1;
1576
+ deviceState.SetCoolFlowTemperatureZone2 = presetData.SetCoolFlowTemperatureZone2;
1570
1577
  deviceState.EffectiveFlags = CONSTANTS.HeatPump.EffectiveFlags.Power;
1571
1578
  break;
1572
1579
  case false:
package/src/deviceerv.js CHANGED
@@ -211,6 +211,9 @@ class DeviceErv extends EventEmitter {
211
211
  const numberOfFanSpeeds = deviceData.Device.NumberOfFanSpeeds ?? 0;
212
212
  const temperatureIncrement = deviceData.Device.TemperatureIncrement ?? 1;
213
213
 
214
+ //presets
215
+ const presetsOnServer = deviceData.Presets ?? [];
216
+
214
217
  //device state
215
218
  const roomTemperature = deviceState.RoomTemperature;
216
219
  const supplyTemperature = deviceState.SupplyTemperature;
@@ -231,6 +234,7 @@ class DeviceErv extends EventEmitter {
231
234
  const targetTemperature = hasCoolOperationMode || hasHeatOperationMode ? setTemperature : 20;
232
235
 
233
236
  //accessory
237
+ this.accessory.presetsOnServer = presetsOnServer;
234
238
  this.accessory.power = power;
235
239
  this.accessory.offline = offline;
236
240
  this.accessory.roomTemperature = roomTemperature;
@@ -434,6 +438,27 @@ class DeviceErv extends EventEmitter {
434
438
  .updateCharacteristic(Characteristic.PM2_5Density, pM25Level)
435
439
  }
436
440
 
441
+ //update presets state
442
+ if (this.presetsConfigured.length > 0) {
443
+ for (let i = 0; i < this.presetsConfigured.length; i++) {
444
+ const preset = this.presetsConfigured[i];
445
+ const index = presetsOnServer.findIndex(p => p.ID === preset.Id);
446
+ const presetData = presetsOnServer[index];
447
+
448
+ preset.state = presetData ? (preset.Power === power
449
+ && preset.SetTemperature === targetTemperature
450
+ && preset.OperationMode === operationMode
451
+ && preset.VentilationMode === ventilationMode
452
+ && preset.FanSpeed === setFanSpeed) : false;
453
+
454
+ if (this.presetsServices) {
455
+ const characteristicType = preset.characteristicType;
456
+ this.presetsServices[i]
457
+ .updateCharacteristic(characteristicType, preset.state)
458
+ };
459
+ };
460
+ };
461
+
437
462
  //update buttons state
438
463
  if (this.buttonsConfiguredCount > 0) {
439
464
  for (let i = 0; i < this.buttonsConfiguredCount; i++) {
@@ -496,24 +521,6 @@ class DeviceErv extends EventEmitter {
496
521
  };
497
522
  };
498
523
 
499
- //update presets state
500
- if (this.presetsConfigured.length > 0) {
501
- for (let i = 0; i < this.presetsConfigured.length; i++) {
502
- const preset = this.presetsConfigured[i];
503
- preset.state = (preset.Power === power
504
- && preset.SetTemperature === targetTemperature
505
- && preset.OperationMode === operationMode
506
- && preset.VentilationMode === ventilationMode
507
- && preset.FanSpeed === setFanSpeed) ?? false;
508
-
509
- if (this.presetsServices) {
510
- const characteristicType = preset.characteristicType;
511
- this.presetsServices[i]
512
- .updateCharacteristic(characteristicType, preset.state)
513
- };
514
- };
515
- };
516
-
517
524
  //log current state
518
525
  if (!this.disableLogInfo) {
519
526
  const operationModeText = !power ? CONSTANTS.Ventilation.System[0] : CONSTANTS.Ventilation.OperationMode[ventilationMode];
@@ -648,6 +655,7 @@ class DeviceErv extends EventEmitter {
648
655
  .setCharacteristic(Characteristic.FirmwareRevision, this.firmwareRevision);
649
656
 
650
657
  //melcloud services
658
+ const presetsOnServer = this.accessory.presetsOnServer;
651
659
  const displayMode = this.displayMode;
652
660
  const temperatureSensor = this.temperatureSensor;
653
661
  const temperatureSensorOutdoor = this.temperatureSensorOutdoor;
@@ -1078,9 +1086,8 @@ class DeviceErv extends EventEmitter {
1078
1086
 
1079
1087
  for (let i = 0; i < presetsConfiguredCount; i++) {
1080
1088
  const preset = presetsConfigured[i];
1081
-
1082
- //get button display type
1083
- const displayType = preset.displayType;
1089
+ const index = presetsOnServer.findIndex(p => p.ID === preset.Id);
1090
+ const presetData = presetsOnServer[index]
1084
1091
 
1085
1092
  //get button name
1086
1093
  const presetName = preset.name;
@@ -1104,11 +1111,11 @@ class DeviceErv extends EventEmitter {
1104
1111
  switch (state) {
1105
1112
  case true:
1106
1113
  previousPresets[i] = deviceState;
1107
- deviceState.SetTemperature = preset.SetTemperature;
1108
- deviceState.Power = preset.Power;
1109
- deviceState.OperationMode = preset.OperationMode;
1110
- deviceState.VentilationMode = preset.VentilationMode;
1111
- deviceState.SetFanSpeed = preset.FanSpeed;
1114
+ deviceState.SetTemperature = presetData.SetTemperature;
1115
+ deviceState.Power = presetData.Power;
1116
+ deviceState.OperationMode = presetData.OperationMode;
1117
+ deviceState.VentilationMode = presetData.VentilationMode;
1118
+ deviceState.SetFanSpeed = presetData.FanSpeed;
1112
1119
  deviceState.EffectiveFlags = CONSTANTS.Ventilation.EffectiveFlags.Power;
1113
1120
  break;
1114
1121
  case false: