homebridge-melcloud-control 3.1.0-beta.4 → 3.1.0-beta.6
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/config.schema.json +28 -1
- package/homebridge-ui/public/index.html +7 -3
- package/package.json +1 -1
- package/src/deviceata.js +35 -28
- package/src/deviceatw.js +47 -40
- package/src/deviceerv.js +33 -26
package/config.schema.json
CHANGED
|
@@ -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",
|
|
@@ -867,6 +872,11 @@
|
|
|
867
872
|
"items": {
|
|
868
873
|
"type": "object",
|
|
869
874
|
"properties": {
|
|
875
|
+
"id": {
|
|
876
|
+
"title": "ID",
|
|
877
|
+
"type": "integer",
|
|
878
|
+
"required": false
|
|
879
|
+
},
|
|
870
880
|
"name": {
|
|
871
881
|
"title": "Name",
|
|
872
882
|
"type": "string",
|
|
@@ -1180,7 +1190,7 @@
|
|
|
1180
1190
|
"type": "integer",
|
|
1181
1191
|
"minimum": 0,
|
|
1182
1192
|
"maximum": 2,
|
|
1183
|
-
"default":
|
|
1193
|
+
"default": 1,
|
|
1184
1194
|
"oneOf": [
|
|
1185
1195
|
{
|
|
1186
1196
|
"title": "None/Disabled",
|
|
@@ -1231,6 +1241,11 @@
|
|
|
1231
1241
|
"items": {
|
|
1232
1242
|
"type": "object",
|
|
1233
1243
|
"properties": {
|
|
1244
|
+
"id": {
|
|
1245
|
+
"title": "ID",
|
|
1246
|
+
"type": "integer",
|
|
1247
|
+
"required": false
|
|
1248
|
+
},
|
|
1234
1249
|
"name": {
|
|
1235
1250
|
"title": "Name",
|
|
1236
1251
|
"type": "string",
|
|
@@ -1708,6 +1723,10 @@
|
|
|
1708
1723
|
"type": "tabarray",
|
|
1709
1724
|
"title": "{{ value.name }}",
|
|
1710
1725
|
"items": [
|
|
1726
|
+
{
|
|
1727
|
+
"key": "accounts[].ataDevices[].presets[].id",
|
|
1728
|
+
"readonly": true
|
|
1729
|
+
},
|
|
1711
1730
|
"accounts[].ataDevices[].presets[].name",
|
|
1712
1731
|
"accounts[].ataDevices[].presets[].displayType",
|
|
1713
1732
|
"accounts[].ataDevices[].presets[].namePrefix"
|
|
@@ -1798,6 +1817,10 @@
|
|
|
1798
1817
|
"type": "tabarray",
|
|
1799
1818
|
"title": "{{ value.name }}",
|
|
1800
1819
|
"items": [
|
|
1820
|
+
{
|
|
1821
|
+
"key": "accounts[].atwDevices[].presets[].id",
|
|
1822
|
+
"readonly": true
|
|
1823
|
+
},
|
|
1801
1824
|
"accounts[].atwDevices[].presets[].name",
|
|
1802
1825
|
"accounts[].atwDevices[].presets[].displayType",
|
|
1803
1826
|
"accounts[].atwDevices[].presets[].namePrefix"
|
|
@@ -1882,6 +1905,10 @@
|
|
|
1882
1905
|
"type": "tabarray",
|
|
1883
1906
|
"title": "{{ value.name }}",
|
|
1884
1907
|
"items": [
|
|
1908
|
+
{
|
|
1909
|
+
"key": "accounts[].ervDevices[].presets[].id",
|
|
1910
|
+
"readonly": true
|
|
1911
|
+
},
|
|
1885
1912
|
"accounts[].ervDevices[].presets[].name",
|
|
1886
1913
|
"accounts[].ervDevices[].presets[].displayType",
|
|
1887
1914
|
"accounts[].ervDevices[].presets[].namePrefix"
|
|
@@ -166,6 +166,8 @@
|
|
|
166
166
|
erv: [],
|
|
167
167
|
ervPresets: [],
|
|
168
168
|
};
|
|
169
|
+
|
|
170
|
+
//info text
|
|
169
171
|
let textAta = 'ATA: 0';
|
|
170
172
|
let textAtaPresets = 'Presets: 0';
|
|
171
173
|
let textAtw = 'ATW: 0';
|
|
@@ -192,7 +194,7 @@
|
|
|
192
194
|
const deviceName = device.DeviceName;
|
|
193
195
|
const devicePresets = device.Presets ?? [];
|
|
194
196
|
|
|
195
|
-
//
|
|
197
|
+
//device ata
|
|
196
198
|
const deviceAta = {
|
|
197
199
|
id: deviceId,
|
|
198
200
|
type: deviceType,
|
|
@@ -243,7 +245,7 @@
|
|
|
243
245
|
const deviceName = device.DeviceName;
|
|
244
246
|
const devicePresets = device.Presets ?? [];
|
|
245
247
|
|
|
246
|
-
//
|
|
248
|
+
//device atw
|
|
247
249
|
const deviceAtw = {
|
|
248
250
|
id: deviceId,
|
|
249
251
|
type: deviceType,
|
|
@@ -292,12 +294,14 @@
|
|
|
292
294
|
});
|
|
293
295
|
|
|
294
296
|
//get device info fom devices erv
|
|
295
|
-
devicesByType.
|
|
297
|
+
devicesByType.erv.forEach((device, index) => {
|
|
296
298
|
const deviceId = device.DeviceID;
|
|
297
299
|
const deviceType = device.Type;
|
|
298
300
|
const deviceTypeText = "Energy Recovery Ventilation";
|
|
299
301
|
const deviceName = device.DeviceName;
|
|
300
302
|
const devicePresets = device.Presets ?? [];
|
|
303
|
+
|
|
304
|
+
//device erv
|
|
301
305
|
const deviceErv = {
|
|
302
306
|
id: deviceId,
|
|
303
307
|
type: deviceType,
|
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.
|
|
4
|
+
"version": "3.1.0-beta.6",
|
|
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
|
-
|
|
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 =
|
|
1111
|
-
deviceState.Power =
|
|
1112
|
-
deviceState.OperationMode =
|
|
1113
|
-
deviceState.VaneHorizontal =
|
|
1114
|
-
deviceState.VaneVertical =
|
|
1115
|
-
deviceState.SetFanSpeed =
|
|
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
|
-
|
|
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 =
|
|
1559
|
-
deviceState.EcoHotWater =
|
|
1560
|
-
deviceState.OperationModeZone1 =
|
|
1561
|
-
deviceState.OperationModeZone2 =
|
|
1562
|
-
deviceState.SetTankWaterTemperature =
|
|
1563
|
-
deviceState.SetTemperatureZone1 =
|
|
1564
|
-
deviceState.SetTemperatureZone2 =
|
|
1565
|
-
deviceState.ForcedHotWaterMode =
|
|
1566
|
-
deviceState.SetHeatFlowTemperatureZone1 =
|
|
1567
|
-
deviceState.SetHeatFlowTemperatureZone2 =
|
|
1568
|
-
deviceState.SetCoolFlowTemperatureZone1 =
|
|
1569
|
-
deviceState.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
|
-
|
|
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 =
|
|
1108
|
-
deviceState.Power =
|
|
1109
|
-
deviceState.OperationMode =
|
|
1110
|
-
deviceState.VentilationMode =
|
|
1111
|
-
deviceState.SetFanSpeed =
|
|
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:
|