homebridge-melcloud-control 3.3.13 → 3.3.15-beta.0
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 +8 -1
- package/package.json +1 -1
- package/src/deviceata.js +6 -6
- package/src/deviceatw.js +55 -41
- package/src/deviceerv.js +10 -11
- package/src/melcloudata.js +17 -17
- package/src/melclouderv.js +11 -11
package/CHANGELOG.md
CHANGED
|
@@ -16,12 +16,19 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
16
16
|
- do not configure it manually, always using Config UI X
|
|
17
17
|
- required Homebridge v2.0.0 and above
|
|
18
18
|
|
|
19
|
+
## [3.3.14] - (21.09.2024)
|
|
20
|
+
|
|
21
|
+
## Changes
|
|
22
|
+
|
|
23
|
+
- code improvements
|
|
24
|
+
- cleanup
|
|
25
|
+
|
|
19
26
|
## [3.3.13] - (20.09.2024)
|
|
20
27
|
|
|
21
28
|
## Changes
|
|
22
29
|
|
|
23
30
|
- fix [#166](https://github.com/grzegorz914/homebridge-melcloud-control/issues/166)
|
|
24
|
-
-
|
|
31
|
+
- readme update with explanation of AUTO mode in Heather/Cooler and Thermostat mode
|
|
25
32
|
- cleanup
|
|
26
33
|
|
|
27
34
|
## [3.3.5] - (15.09.2024)
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"displayName": "MELCloud Control",
|
|
3
3
|
"name": "homebridge-melcloud-control",
|
|
4
|
-
"version": "3.3.
|
|
4
|
+
"version": "3.3.15-beta.0",
|
|
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
|
@@ -239,9 +239,9 @@ class DeviceAta extends EventEmitter {
|
|
|
239
239
|
const power = deviceData.Device.Power ?? false;
|
|
240
240
|
const inStandbyMode = deviceData.Device.InStandbyMode ?? false;
|
|
241
241
|
const roomTemperature = deviceData.Device.RoomTemperature;
|
|
242
|
-
const setTemperature = deviceData.Device.SetTemperature;
|
|
243
|
-
const defaultHeatingSetTemperature = deviceData.Device.DefaultHeatingSetTemperature;
|
|
244
|
-
const defaultCoolingSetTemperature = deviceData.Device.DefaultCoolingSetTemperature;
|
|
242
|
+
const setTemperature = deviceData.Device.SetTemperature ?? 20;
|
|
243
|
+
const defaultHeatingSetTemperature = deviceData.Device.DefaultHeatingSetTemperature ?? 20;
|
|
244
|
+
const defaultCoolingSetTemperature = deviceData.Device.DefaultCoolingSetTemperature ?? 23;
|
|
245
245
|
const actualFanSpeed = deviceData.Device.ActualFanSpeed;
|
|
246
246
|
const automaticFanSpeed = deviceData.Device.AutomaticFanSpeed;
|
|
247
247
|
const fanSpeed = deviceData.Device.FanSpeed;
|
|
@@ -750,6 +750,7 @@ class DeviceAta extends EventEmitter {
|
|
|
750
750
|
//prepare accessory
|
|
751
751
|
async prepareAccessory(accountInfo, deviceData, deviceId, deviceTypeText, deviceName, accountName) {
|
|
752
752
|
try {
|
|
753
|
+
const presetsOnServer = this.accessory.presets;
|
|
753
754
|
const modelSupportsHeat = this.accessory.modelSupportsHeat;
|
|
754
755
|
const modelSupportsDry = this.accessory.modelSupportsDry;
|
|
755
756
|
const modelSupportsCool = this.accessory.modelSupportsCool;
|
|
@@ -759,7 +760,6 @@ class DeviceAta extends EventEmitter {
|
|
|
759
760
|
const hasOutdoorTemperature = this.accessory.hasOutdoorTemperature;
|
|
760
761
|
const numberOfFanSpeeds = this.accessory.numberOfFanSpeeds;
|
|
761
762
|
const swingFunction = this.accessory.swingFunction;
|
|
762
|
-
const presetsOnServer = this.accessory.presets;
|
|
763
763
|
const autoDryFanMode = [this.accessory.operationMode, 8, modelSupportsDry ? 2 : 8, 7][this.autoDryFanMode]; //NONE, AUTO - 8, DRY - 2, FAN - 7
|
|
764
764
|
const heatDryFanMode = [this.accessory.operationMode, 1, modelSupportsDry ? 2 : 1, 7][this.heatDryFanMode]; //NONE, HEAT - 1, DRY - 2, FAN - 7
|
|
765
765
|
const coolDryFanMode = [this.accessory.operationMode, 3, modelSupportsDry ? 2 : 3, 7][this.coolDryFanMode]; //NONE, COOL - 3, DRY - 2, FAN - 7
|
|
@@ -913,7 +913,7 @@ class DeviceAta extends EventEmitter {
|
|
|
913
913
|
minStep: this.accessory.temperatureIncrement
|
|
914
914
|
})
|
|
915
915
|
.onGet(async () => {
|
|
916
|
-
const value = this.accessory.defaultCoolingSetTemperature;
|
|
916
|
+
const value = this.accessory.operationMode === 8 ? this.accessory.defaultCoolingSetTemperature : this.accessory.setTemperature;
|
|
917
917
|
return value;
|
|
918
918
|
})
|
|
919
919
|
.onSet(async (value) => {
|
|
@@ -934,7 +934,7 @@ class DeviceAta extends EventEmitter {
|
|
|
934
934
|
minStep: this.accessory.temperatureIncrement
|
|
935
935
|
})
|
|
936
936
|
.onGet(async () => {
|
|
937
|
-
const value = this.accessory.defaultHeatingSetTemperature;
|
|
937
|
+
const value = this.accessory.operationMode === 8 ? this.accessory.defaultHeatingSetTemperature : this.accessory.setTemperature;
|
|
938
938
|
return value;
|
|
939
939
|
})
|
|
940
940
|
.onSet(async (value) => {
|
package/src/deviceatw.js
CHANGED
|
@@ -215,11 +215,8 @@ class DeviceAtw extends EventEmitter {
|
|
|
215
215
|
.on('deviceState', async (deviceData) => {
|
|
216
216
|
//presets
|
|
217
217
|
const presetsOnServer = deviceData.Presets ?? [];
|
|
218
|
+
|
|
218
219
|
//device info
|
|
219
|
-
const heatPumpName = 'Heat Pump';
|
|
220
|
-
const hotWaterName = 'Hot Water';
|
|
221
|
-
const zone1Name = deviceData.Zone1Name ?? 'Zone 1';
|
|
222
|
-
const zone2Name = deviceData.Zone2Name ?? 'Zone 2';
|
|
223
220
|
const hasHotWaterTank = deviceData.Device.HasHotWaterTank ?? false;
|
|
224
221
|
const hasZone2 = deviceData.Device.HasZone2 ?? false;
|
|
225
222
|
const canHeat = deviceData.Device.CanHeat ?? false;
|
|
@@ -228,15 +225,7 @@ class DeviceAtw extends EventEmitter {
|
|
|
228
225
|
const temperatureIncrement = deviceData.Device.TemperatureIncrement ?? 1;
|
|
229
226
|
const minSetTemperature = deviceData.Device.MinSetTemperature ?? 10;
|
|
230
227
|
const maxSetTemperature = deviceData.Device.MaxSetTemperature ?? 30;
|
|
231
|
-
const maxTankTemperature = deviceData.Device.MaxTankTemperature ?? 70
|
|
232
|
-
const flowTemperatureHeatPump = deviceData.Device.FlowTemperature;
|
|
233
|
-
const flowTemperatureZone1 = deviceData.Device.FlowTemperatureZone1;
|
|
234
|
-
const flowTemperatureZone2 = deviceData.Device.FlowTemperatureZone2;
|
|
235
|
-
const flowTemperatureWaterTank = deviceData.Device.FlowTemperatureBoiler;
|
|
236
|
-
const returnTemperatureHeatPump = deviceData.Device.ReturnTemperature;
|
|
237
|
-
const returnTemperatureZone1 = deviceData.Device.ReturnTemperatureZone1;
|
|
238
|
-
const returnTemperatureZone2 = deviceData.Device.ReturnTemperatureZone2;
|
|
239
|
-
const returnTemperatureWaterTank = deviceData.Device.ReturnTemperatureBoiler;
|
|
228
|
+
const maxTankTemperature = deviceData.Device.MaxTankTemperature ?? 70
|
|
240
229
|
|
|
241
230
|
//zones
|
|
242
231
|
const hotWater = hasHotWaterTank ? 1 : 0;
|
|
@@ -245,37 +234,53 @@ class DeviceAtw extends EventEmitter {
|
|
|
245
234
|
const caseHotWater = hasHotWaterTank ? 2 : -1;
|
|
246
235
|
const caseZone2 = hasZone2 ? hasHotWaterTank ? 3 : 2 : -1;
|
|
247
236
|
|
|
248
|
-
//
|
|
237
|
+
//heat pump
|
|
238
|
+
const heatPumpName = 'Heat Pump';
|
|
249
239
|
const power = deviceData.Device.Power ?? false;
|
|
250
|
-
const
|
|
251
|
-
const setTemperatureZone2 = deviceData.Device.SetTemperatureZone2;
|
|
252
|
-
const roomTemperatureZone1 = deviceData.Device.RoomTemperatureZone1;
|
|
253
|
-
const roomTemperatureZone2 = deviceData.Device.RoomTemperatureZone2;
|
|
240
|
+
const unitStatus = deviceData.Device.UnitStatus ?? 0;
|
|
254
241
|
const operationMode = deviceData.Device.OperationMode;
|
|
242
|
+
const outdoorTemperature = deviceData.Device.OutdoorTemperature;
|
|
243
|
+
const holidayMode = deviceData.Device.HolidayMode ?? false;
|
|
244
|
+
const flowTemperatureHeatPump = deviceData.Device.FlowTemperature;
|
|
245
|
+
const returnTemperatureHeatPump = deviceData.Device.ReturnTemperature;
|
|
246
|
+
|
|
247
|
+
//zone 1
|
|
248
|
+
const zone1Name = deviceData.Zone1Name ?? 'Zone 1';
|
|
249
|
+
const roomTemperatureZone1 = deviceData.Device.RoomTemperatureZone1;
|
|
255
250
|
const operationModeZone1 = deviceData.Device.OperationModeZone1;
|
|
256
|
-
const
|
|
251
|
+
const setTemperatureZone1 = deviceData.Device.SetTemperatureZone1;
|
|
257
252
|
const setHeatFlowTemperatureZone1 = deviceData.Device.SetHeatFlowTemperatureZone1;
|
|
258
|
-
const setHeatFlowTemperatureZone2 = deviceData.Device.SetHeatFlowTemperatureZone2;
|
|
259
253
|
const setCoolFlowTemperatureZone1 = deviceData.Device.SetCoolFlowTemperatureZone1;
|
|
260
|
-
const
|
|
254
|
+
const prohibitZone1 = deviceData.Device.ProhibitZone1 ?? false;
|
|
255
|
+
const idleZone1 = deviceData.Device.IdleZone1 ?? false;
|
|
256
|
+
const flowTemperatureZone1 = deviceData.Device.FlowTemperatureZone1;
|
|
257
|
+
const returnTemperatureZone1 = deviceData.Device.ReturnTemperatureZone1;
|
|
258
|
+
|
|
259
|
+
//hot water
|
|
260
|
+
const hotWaterName = 'Hot Water';
|
|
261
261
|
const tankWaterTemperature = deviceData.Device.TankWaterTemperature;
|
|
262
262
|
const setTankWaterTemperature = deviceData.Device.SetTankWaterTemperature;
|
|
263
263
|
const forcedHotWaterMode = deviceData.Device.ForcedHotWaterMode ? 1 : 0;
|
|
264
|
-
const unitStatus = deviceData.Device.UnitStatus ?? 0;
|
|
265
|
-
const outdoorTemperature = deviceData.Device.OutdoorTemperature;
|
|
266
264
|
const ecoHotWater = deviceData.Device.EcoHotWater ?? false;
|
|
267
|
-
const holidayMode = deviceData.Device.HolidayMode ?? false;
|
|
268
|
-
const prohibitZone1 = deviceData.Device.ProhibitZone1 ?? false;
|
|
269
|
-
const prohibitZone2 = deviceData.Device.ProhibitZone2 ?? false;
|
|
270
265
|
const prohibitHotWater = deviceData.Device.ProhibitHotWater ?? false;
|
|
271
|
-
const
|
|
266
|
+
const flowTemperatureWaterTank = deviceData.Device.FlowTemperatureBoiler;
|
|
267
|
+
const returnTemperatureWaterTank = deviceData.Device.ReturnTemperatureBoiler;
|
|
268
|
+
|
|
269
|
+
//zone 2
|
|
270
|
+
const zone2Name = deviceData.Zone2Name ?? 'Zone 2';
|
|
271
|
+
const roomTemperatureZone2 = deviceData.Device.RoomTemperatureZone2;
|
|
272
|
+
const operationModeZone2 = deviceData.Device.OperationModeZone2;
|
|
273
|
+
const setTemperatureZone2 = deviceData.Device.SetTemperatureZone2;
|
|
274
|
+
const setHeatFlowTemperatureZone2 = deviceData.Device.SetHeatFlowTemperatureZone2;
|
|
275
|
+
const setCoolFlowTemperatureZone2 = deviceData.Device.SetCoolFlowTemperatureZone2;
|
|
276
|
+
const prohibitZone2 = deviceData.Device.ProhibitZone2 ?? false;
|
|
272
277
|
const idleZone2 = deviceData.Device.IdleZone2 ?? false;
|
|
278
|
+
const flowTemperatureZone2 = deviceData.Device.FlowTemperatureZone2;
|
|
279
|
+
const returnTemperatureZone2 = deviceData.Device.ReturnTemperatureZone2;
|
|
273
280
|
|
|
274
281
|
//accessory
|
|
282
|
+
this.accessory.presets = presetsOnServer;
|
|
275
283
|
this.accessory.power = power ? 1 : 0;
|
|
276
|
-
this.accessory.operationMode = operationMode;
|
|
277
|
-
this.accessory.operationModeZone1 = operationModeZone1;
|
|
278
|
-
this.accessory.roomTemperatureZone2 = roomTemperatureZone2;
|
|
279
284
|
this.accessory.unitStatus = unitStatus;
|
|
280
285
|
this.accessory.idleZone1 = idleZone1;
|
|
281
286
|
this.accessory.idleZone2 = idleZone2;
|
|
@@ -286,10 +291,10 @@ class DeviceAtw extends EventEmitter {
|
|
|
286
291
|
this.accessory.heatCoolModes = heatCoolModes;
|
|
287
292
|
this.accessory.caseHotWater = caseHotWater;
|
|
288
293
|
this.accessory.caseZone2 = caseZone2;
|
|
289
|
-
this.accessory.presetsOnServer = presetsOnServer;
|
|
290
294
|
|
|
291
295
|
//default values
|
|
292
296
|
let name = 'Heat Pump'
|
|
297
|
+
let operationModeZone = 0;
|
|
293
298
|
let currentOperationMode = 0;
|
|
294
299
|
let targetOperationMode = 0;
|
|
295
300
|
let roomTemperature = 20;
|
|
@@ -309,6 +314,7 @@ class DeviceAtw extends EventEmitter {
|
|
|
309
314
|
switch (i) {
|
|
310
315
|
case 0: //Heat Pump Operation Mode - IDLE, HOT WATER, HEATING ZONES, COOLING, HOT WATER STORAGE, FREEZE STAT, LEGIONELLA, HEATING ECO, MODE 1, MODE 2, MODE 3, HEATING UP /// Unit Status - HEAT, COOL
|
|
311
316
|
name = heatPumpName;
|
|
317
|
+
operationModeZone = operationMode;
|
|
312
318
|
currentOperationMode = !power ? 0 : [1, 2, 2, 3, 2, 1, 1, 2, 1, 1, 1, 2][operationMode]; //INACTIVE, IDLE, HEATING, COOLING
|
|
313
319
|
targetOperationMode = [1, 2][unitStatus]; //AUTO, HEAT, COOL
|
|
314
320
|
roomTemperature = outdoorTemperature;
|
|
@@ -325,6 +331,7 @@ class DeviceAtw extends EventEmitter {
|
|
|
325
331
|
break;
|
|
326
332
|
case 1: //Zone 1 - HEAT THERMOSTAT, HEAT FLOW, HEAT CURVE, COOL THERMOSTAT, COOL FLOW, FLOOR DRY UP
|
|
327
333
|
name = zone1Name;
|
|
334
|
+
operationModeZone = operationMode;
|
|
328
335
|
currentOperationMode = !power ? 0 : idleZone1 ? 1 : [2, 2, 2, 3, 3, 2][operationModeZone1]; //INACTIVE, IDLE, HEATING, COOLING
|
|
329
336
|
targetOperationMode = [1, 2, 0, 1, 2, 1][operationModeZone1]; //AUTO, HEAT, COOL
|
|
330
337
|
|
|
@@ -359,6 +366,7 @@ class DeviceAtw extends EventEmitter {
|
|
|
359
366
|
break;
|
|
360
367
|
case caseHotWater: //Hot Water - NORMAL, HEAT NOW
|
|
361
368
|
name = hotWaterName;
|
|
369
|
+
operationModeZone = operationMode;
|
|
362
370
|
currentOperationMode = !power ? 0 : operationMode === 1 ? 2 : [1, 2][forcedHotWaterMode]; //INACTIVE, IDLE, HEATING, COOLING
|
|
363
371
|
targetOperationMode = [0, 1][forcedHotWaterMode] //AUTO, HEAT, COOL
|
|
364
372
|
roomTemperature = tankWaterTemperature;
|
|
@@ -375,6 +383,7 @@ class DeviceAtw extends EventEmitter {
|
|
|
375
383
|
break;
|
|
376
384
|
case caseZone2: //Zone 2 - HEAT THERMOSTAT, HEAT FLOW, HEAT CURVE, COOL THERMOSTAT, COOL FLOW, FLOOR DRY UP
|
|
377
385
|
name = zone2Name;
|
|
386
|
+
operationModeZone = operationMode;
|
|
378
387
|
currentOperationMode = !power ? 0 : idleZone2 ? 1 : [2, 2, 2, 3, 3, 2][operationModeZone2]; //INACTIVE, IDLE, HEATING, COOLING
|
|
379
388
|
targetOperationMode = [1, 2, 0, 1, 2, 1][operationModeZone2]; //AUTO, HEAT, COOL
|
|
380
389
|
|
|
@@ -428,6 +437,8 @@ class DeviceAtw extends EventEmitter {
|
|
|
428
437
|
case 2: //Thermostat
|
|
429
438
|
switch (i) {
|
|
430
439
|
case 0: //Heat Pump Operation Mode - IDLE, HOT WATER, HEATING ZONES, COOLING, HOT WATER STORAGE, FREEZE STAT, LEGIONELLA, HEATING ECO, MODE 1, MODE 2, MODE 3, HEATING UP /// Unit Status - HEAT, COOL
|
|
440
|
+
name = heatPumpName;
|
|
441
|
+
operationModeZone = operationMode;
|
|
431
442
|
currentOperationMode = !power ? 0 : [0, 1, 1, 2, 1, 0, 0, 1, 0, 0, 0, 1][operationMode]; //OFF, HEAT, COOL
|
|
432
443
|
targetOperationMode = !power ? 0 : [1, 2][unitStatus]; //OFF, HEAT, COOL, AUTO
|
|
433
444
|
roomTemperature = outdoorTemperature;
|
|
@@ -438,9 +449,10 @@ class DeviceAtw extends EventEmitter {
|
|
|
438
449
|
operationModeSetPropsValidValues = [[0, 1, 2], [0, 1], [0, 2], [0]][heatCoolModes];
|
|
439
450
|
temperatureSetPropsMinValue = 10;
|
|
440
451
|
temperatureSetPropsMaxValue = 70;
|
|
441
|
-
this.accessory.zones[i].name = heatPumpName;
|
|
442
452
|
break;
|
|
443
|
-
case 1: //Zone 1 - HEAT THERMOSTAT, HEAT FLOW, HEAT CURVE, COOL THERMOSTAT, COOL FLOW, FLOOR DRY UP
|
|
453
|
+
case 1: //Zone 1 - HEAT THERMOSTAT, HEAT FLOW, HEAT CURVE, COOL THERMOSTAT, COOL FLOW, FLOOR DRY UP
|
|
454
|
+
name = zone1Name;
|
|
455
|
+
operationModeZone = operationMode;
|
|
444
456
|
currentOperationMode = !power ? 0 : idleZone1 ? 0 : [1, 1, 1, 2, 2, 1][operationModeZone1]; //OFF, HEAT, COOL
|
|
445
457
|
targetOperationMode = [1, 2, 3, 1, 2, 1][operationModeZone1]; //OFF, HEAT, COOL, AUTO
|
|
446
458
|
|
|
@@ -468,9 +480,10 @@ class DeviceAtw extends EventEmitter {
|
|
|
468
480
|
operationModeSetPropsMinValue = [1, 1, 1, 0][heatCoolModes];
|
|
469
481
|
operationModeSetPropsMaxValue = [3, 3, 2, 0][heatCoolModes];
|
|
470
482
|
operationModeSetPropsValidValues = [[1, 2, 3], [1, 2, 3], [1, 2], [0]][heatCoolModes];
|
|
471
|
-
this.accessory.zones[i].name = heatPumpName;
|
|
472
483
|
break;
|
|
473
484
|
case caseHotWater: //Hot Water - NORMAL, HEAT NOW
|
|
485
|
+
name = hotWaterName;
|
|
486
|
+
operationModeZone = operationMode;
|
|
474
487
|
currentOperationMode = !power ? 0 : operationMode === 1 ? 1 : [0, 1][forcedHotWaterMode]; //OFF, HEAT, COOL
|
|
475
488
|
targetOperationMode = [3, 1][forcedHotWaterMode] //OFF, HEAT, COOL, AUTO
|
|
476
489
|
roomTemperature = tankWaterTemperature;
|
|
@@ -481,9 +494,10 @@ class DeviceAtw extends EventEmitter {
|
|
|
481
494
|
operationModeSetPropsValidValues = [1, 3];
|
|
482
495
|
temperatureSetPropsMinValue = 0;
|
|
483
496
|
temperatureSetPropsMaxValue = 60;
|
|
484
|
-
this.accessory.zones[i].name = heatPumpName;
|
|
485
497
|
break;
|
|
486
498
|
case caseZone2: //Zone 2 - HEAT THERMOSTAT, HEAT FLOW, HEAT CURVE, COOL THERMOSTAT, COOL FLOW, FLOOR DRY UP
|
|
499
|
+
name = zone2Name;
|
|
500
|
+
operationModeZone = operationMode;
|
|
487
501
|
currentOperationMode = !power ? 0 : idleZone2 ? 0 : [1, 1, 1, 2, 2, 1][operationModeZone2]; //OFF, HEAT, COOL
|
|
488
502
|
targetOperationMode = [1, 2, 3, 1, 2, 1][operationModeZone2]; //OFF, HEAT, COOL, AUTO
|
|
489
503
|
|
|
@@ -511,7 +525,6 @@ class DeviceAtw extends EventEmitter {
|
|
|
511
525
|
operationModeSetPropsMinValue = [1, 1, 1, 0][heatCoolModes];
|
|
512
526
|
operationModeSetPropsMaxValue = [3, 3, 2, 0][heatCoolModes];
|
|
513
527
|
operationModeSetPropsValidValues = [[1, 2, 3], [1, 2, 3], [1, 2], [0]][heatCoolModes];
|
|
514
|
-
this.accessory.zones[i].name = heatPumpName;
|
|
515
528
|
break;
|
|
516
529
|
default: //unknown zone detected
|
|
517
530
|
this.emit('message', `Unknown zone: ${i} detected.`);
|
|
@@ -532,6 +545,7 @@ class DeviceAtw extends EventEmitter {
|
|
|
532
545
|
|
|
533
546
|
//push value to arrays
|
|
534
547
|
this.accessory.zones[i].name = name;
|
|
548
|
+
this.accessory.zones[i].operationMode = operationModeZone;
|
|
535
549
|
this.accessory.zones[i].currentOperationMode = currentOperationMode;
|
|
536
550
|
this.accessory.zones[i].targetOperationMode = targetOperationMode;
|
|
537
551
|
this.accessory.zones[i].roomTemperature = roomTemperature;
|
|
@@ -919,11 +933,11 @@ class DeviceAtw extends EventEmitter {
|
|
|
919
933
|
//prepare accessory
|
|
920
934
|
async prepareAccessory(accountInfo, deviceData, deviceId, deviceTypeText, deviceName, accountName) {
|
|
921
935
|
try {
|
|
936
|
+
const presetsOnServer = this.accessory.presets;
|
|
922
937
|
const zonesCount = this.accessory.zonesCount;
|
|
923
938
|
const caseHotWater = this.accessory.caseHotWater;
|
|
924
939
|
const caseZone2 = this.accessory.caseZone2;
|
|
925
940
|
const heatCoolModes = this.accessory.heatCoolModes;
|
|
926
|
-
const presetsOnServer = this.accessory.presetsOnServer;
|
|
927
941
|
const temperatureSensor = this.temperatureSensor;
|
|
928
942
|
const temperatureSensorFlow = this.temperatureSensorFlow;
|
|
929
943
|
const temperatureSensorReturn = this.temperatureSensorReturn;
|
|
@@ -1104,7 +1118,7 @@ class DeviceAtw extends EventEmitter {
|
|
|
1104
1118
|
//deviceData.Device.EffectiveFlags = CONSTANTS.HeatPump.EffectiveFlags.SetTemperatureZone1;
|
|
1105
1119
|
break;
|
|
1106
1120
|
case 1: //Zone 1
|
|
1107
|
-
switch (this.accessory.
|
|
1121
|
+
switch (this.accessory.zones[i].operationMode) {
|
|
1108
1122
|
case 1: //HEAT FLOW
|
|
1109
1123
|
deviceData.Device.SetHeatFlowTemperatureZone1 = value;
|
|
1110
1124
|
deviceData.Device.EffectiveFlags = CONSTANTS.HeatPump.EffectiveFlags.SetHeatFlowTemperatureZone1;
|
|
@@ -1124,7 +1138,7 @@ class DeviceAtw extends EventEmitter {
|
|
|
1124
1138
|
deviceData.Device.EffectiveFlags = CONSTANTS.HeatPump.EffectiveFlags.SetTankWaterTemperature;
|
|
1125
1139
|
break;
|
|
1126
1140
|
case caseZone2: //Zone 2
|
|
1127
|
-
switch (this.accessory.
|
|
1141
|
+
switch (this.accessory.zones[i].operationMode) {
|
|
1128
1142
|
case 1: //HEAT FLOW
|
|
1129
1143
|
deviceData.Device.SetHeatFlowTemperatureZone2 = value;
|
|
1130
1144
|
deviceData.Device.EffectiveFlags = CONSTANTS.HeatPump.EffectiveFlags.SetHeatFlowTemperatureZone2;
|
|
@@ -1168,7 +1182,7 @@ class DeviceAtw extends EventEmitter {
|
|
|
1168
1182
|
//deviceData.Device.EffectiveFlags = CONSTANTS.HeatPump.EffectiveFlags.SetTemperatureZone1;
|
|
1169
1183
|
break;
|
|
1170
1184
|
case 1: //Zone 1
|
|
1171
|
-
switch (this.accessory.
|
|
1185
|
+
switch (this.accessory.zones[i].operationMode) {
|
|
1172
1186
|
case 1: //HEAT FLOW
|
|
1173
1187
|
deviceData.Device.SetHeatFlowTemperatureZone1 = value;
|
|
1174
1188
|
deviceData.Device.EffectiveFlags = CONSTANTS.HeatPump.EffectiveFlags.SetHeatFlowTemperatureZone1;
|
|
@@ -1188,7 +1202,7 @@ class DeviceAtw extends EventEmitter {
|
|
|
1188
1202
|
deviceData.Device.EffectiveFlags = CONSTANTS.HeatPump.EffectiveFlags.SetTankWaterTemperature;
|
|
1189
1203
|
break;
|
|
1190
1204
|
case caseZone2: //Zone 2
|
|
1191
|
-
switch (this.accessory.
|
|
1205
|
+
switch (this.accessory.zones[i].operationMode) {
|
|
1192
1206
|
case 1: //HEAT FLOW
|
|
1193
1207
|
deviceData.Device.SetHeatFlowTemperatureZone2 = value;
|
|
1194
1208
|
deviceData.Device.EffectiveFlags = CONSTANTS.HeatPump.EffectiveFlags.SetHeatFlowTemperatureZone2;
|
package/src/deviceerv.js
CHANGED
|
@@ -248,10 +248,9 @@ class DeviceErv extends EventEmitter {
|
|
|
248
248
|
const supplyTemperature = deviceData.Device.SupplyTemperature;
|
|
249
249
|
const outdoorTemperature = deviceData.Device.OutdoorTemperature;
|
|
250
250
|
const nightPurgeMode = deviceData.Device.NightPurgeMode;
|
|
251
|
-
const setTemperature = deviceData.Device.SetTemperature;
|
|
252
|
-
const
|
|
253
|
-
const
|
|
254
|
-
const defaultCoolingSetTemperature = deviceData.Device.DefaultCoolingSetTemperature;
|
|
251
|
+
const setTemperature = deviceData.Device.SetTemperature ?? 20;
|
|
252
|
+
const defaultHeatingSetTemperature = deviceData.Device.DefaultHeatingSetTemperature ?? 20;
|
|
253
|
+
const defaultCoolingSetTemperature = deviceData.Device.DefaultCoolingSetTemperature ?? 23;
|
|
255
254
|
const setFanSpeed = deviceData.Device.SetFanSpeed;
|
|
256
255
|
const operationMode = deviceData.Device.OperationMode;
|
|
257
256
|
const ventilationMode = deviceData.Device.VentilationMode;
|
|
@@ -283,7 +282,7 @@ class DeviceErv extends EventEmitter {
|
|
|
283
282
|
this.accessory.roomTemperature = roomTemperature;
|
|
284
283
|
this.accessory.supplyTemperature = supplyTemperature;
|
|
285
284
|
this.accessory.outdoorTemperature = outdoorTemperature;
|
|
286
|
-
this.accessory.setTemperature =
|
|
285
|
+
this.accessory.setTemperature = setTemperature;
|
|
287
286
|
this.accessory.defaultHeatingSetTemperature = defaultHeatingSetTemperature;
|
|
288
287
|
this.accessory.defaultCoolingSetTemperature = defaultCoolingSetTemperature;
|
|
289
288
|
this.accessory.lockPhysicalControl = 0;
|
|
@@ -413,7 +412,7 @@ class DeviceErv extends EventEmitter {
|
|
|
413
412
|
.updateCharacteristic(Characteristic.CurrentHeatingCoolingState, this.accessory.currentOperationMode)
|
|
414
413
|
.updateCharacteristic(Characteristic.TargetHeatingCoolingState, this.accessory.targetOperationMode)
|
|
415
414
|
.updateCharacteristic(Characteristic.CurrentTemperature, roomTemperature)
|
|
416
|
-
.updateCharacteristic(Characteristic.TargetTemperature,
|
|
415
|
+
.updateCharacteristic(Characteristic.TargetTemperature, setTemperature)
|
|
417
416
|
.updateCharacteristic(Characteristic.TemperatureDisplayUnits, this.accessory.useFahrenheit);
|
|
418
417
|
};
|
|
419
418
|
break;
|
|
@@ -468,7 +467,7 @@ class DeviceErv extends EventEmitter {
|
|
|
468
467
|
const presetData = presetsOnServer.find(p => p.ID === preset.Id);
|
|
469
468
|
|
|
470
469
|
preset.state = presetData ? (presetData.Power === power
|
|
471
|
-
&& presetData.SetTemperature ===
|
|
470
|
+
&& presetData.SetTemperature === setTemperature
|
|
472
471
|
&& presetData.OperationMode === operationMode
|
|
473
472
|
&& presetData.VentilationMode === ventilationMode
|
|
474
473
|
&& presetData.FanSpeed === setFanSpeed) : false;
|
|
@@ -548,7 +547,7 @@ class DeviceErv extends EventEmitter {
|
|
|
548
547
|
this.emit('message', `Power: ${power ? 'ON' : 'OFF'}`);
|
|
549
548
|
this.emit('message', `Target ventilation mode: ${CONSTANTS.Ventilation.OperationMode[ventilationMode]}`);
|
|
550
549
|
this.emit('message', `Current ventilation mode: ${CONSTANTS.Ventilation.OperationMode[actualVentilationMode]}`);
|
|
551
|
-
this.emit('message', `Target temperature: ${
|
|
550
|
+
this.emit('message', `Target temperature: ${setTemperature}${this.accessory.temperatureUnit}`);
|
|
552
551
|
this.emit('message', `Room temperature: ${roomTemperature}${this.accessory.temperatureUnit}`);
|
|
553
552
|
const info1 = hasSupplyTemperature && deviceData.Device.SupplyTemperature !== null ? this.emit('message', `Supply temperature: ${roomTemperature}${this.accessory.temperatureUnit}`) : false;
|
|
554
553
|
const info2 = hasOutdoorTemperature && deviceData.Device.OutdoorTemperature !== null ? this.emit('message', `Outdoor temperature: ${roomTemperature}${this.accessory.temperatureUnit}`) : false;
|
|
@@ -672,7 +671,7 @@ class DeviceErv extends EventEmitter {
|
|
|
672
671
|
//prepare accessory
|
|
673
672
|
async prepareAccessory(accountInfo, deviceData, deviceId, deviceTypeText, deviceName, accountName) {
|
|
674
673
|
try {
|
|
675
|
-
const presetsOnServer =
|
|
674
|
+
const presetsOnServer = this.accessory.presets;
|
|
676
675
|
const hasRoomTemperature = this.accessory.hasRoomTemperature;
|
|
677
676
|
const hasSupplyTemperature = this.accessory.hasSupplyTemperature;
|
|
678
677
|
const hasOutdoorTemperature = this.accessory.hasOutdoorTemperature;
|
|
@@ -806,7 +805,7 @@ class DeviceErv extends EventEmitter {
|
|
|
806
805
|
minStep: this.accessory.temperatureIncrement
|
|
807
806
|
})
|
|
808
807
|
.onGet(async () => {
|
|
809
|
-
const value = this.accessory.setTemperature;
|
|
808
|
+
const value = this.accessory.ventilationMode === 2 ? this.accessory.defaultHeatingSetTemperature : this.accessory.setTemperature;
|
|
810
809
|
return value;
|
|
811
810
|
})
|
|
812
811
|
.onSet(async (value) => {
|
|
@@ -829,7 +828,7 @@ class DeviceErv extends EventEmitter {
|
|
|
829
828
|
minStep: this.accessory.temperatureIncrement
|
|
830
829
|
})
|
|
831
830
|
.onGet(async () => {
|
|
832
|
-
const value = this.accessory.
|
|
831
|
+
const value = this.accessory.ventilationMode === 2 ? this.accessory.defaultHeatingSetTemperature : this.accessory.setTemperature;
|
|
833
832
|
return value;
|
|
834
833
|
})
|
|
835
834
|
.onSet(async (value) => {
|
package/src/melcloudata.js
CHANGED
|
@@ -369,37 +369,37 @@ class MelCloudAta extends EventEmitter {
|
|
|
369
369
|
|
|
370
370
|
async send(deviceData, displayMode) {
|
|
371
371
|
try {
|
|
372
|
-
//set target temp based on
|
|
372
|
+
//set target temp based on display mode and operation mode
|
|
373
373
|
switch (displayMode) {
|
|
374
|
-
case 1:
|
|
375
|
-
switch (deviceData.Device.OperationMode) {
|
|
376
|
-
case 1:
|
|
374
|
+
case 1: //Heather/Cooler
|
|
375
|
+
switch (deviceData.Device.OperationMode) {
|
|
376
|
+
case 1: //HEAT
|
|
377
377
|
deviceData.Device.SetTemperature = deviceData.Device.DefaultHeatingSetTemperature;
|
|
378
378
|
break;
|
|
379
|
-
case 2:
|
|
379
|
+
case 2: //DRY
|
|
380
380
|
deviceData.Device.SetTemperature = deviceData.Device.DefaultCoolingSetTemperature;
|
|
381
381
|
break;
|
|
382
|
-
case 3:
|
|
382
|
+
case 3: //COOL
|
|
383
383
|
deviceData.Device.SetTemperature = deviceData.Device.DefaultCoolingSetTemperature;
|
|
384
384
|
break;
|
|
385
|
-
case 7:
|
|
386
|
-
deviceData.Device.SetTemperature = deviceData.Device.
|
|
385
|
+
case 7: //FAN
|
|
386
|
+
deviceData.Device.SetTemperature = deviceData.Device.SetTemperature;
|
|
387
387
|
break;
|
|
388
|
-
case 8:
|
|
389
|
-
const
|
|
390
|
-
deviceData.Device.SetTemperature =
|
|
388
|
+
case 8: //AUTO
|
|
389
|
+
const setTemperature = (deviceData.Device.DefaultCoolingSetTemperature + deviceData.Device.DefaultHeatingSetTemperature) / 2;
|
|
390
|
+
deviceData.Device.SetTemperature = setTemperature;
|
|
391
391
|
break;
|
|
392
|
-
case 9:
|
|
392
|
+
case 9: //HISEE HEAT
|
|
393
393
|
deviceData.Device.SetTemperature = deviceData.Device.DefaultHeatingSetTemperature;
|
|
394
394
|
break;
|
|
395
|
-
case 10:
|
|
395
|
+
case 10: //ISEE DRY
|
|
396
396
|
deviceData.Device.SetTemperature = deviceData.Device.DefaultCoolingSetTemperature;
|
|
397
397
|
break;
|
|
398
|
-
case 11:
|
|
398
|
+
case 11: //ISEE COOL
|
|
399
399
|
deviceData.Device.SetTemperature = deviceData.Device.DefaultCoolingSetTemperature;
|
|
400
400
|
break;
|
|
401
401
|
};
|
|
402
|
-
case 2:
|
|
402
|
+
case 2: //Thermostat
|
|
403
403
|
deviceData.Device.SetTemperature = deviceData.Device.SetTemperature;
|
|
404
404
|
break;
|
|
405
405
|
};
|
|
@@ -414,8 +414,8 @@ class MelCloudAta extends EventEmitter {
|
|
|
414
414
|
OperationMode: deviceData.Device.OperationMode,
|
|
415
415
|
VaneHorizontal: deviceData.Device.VaneHorizontalDirection,
|
|
416
416
|
VaneVertical: deviceData.Device.VaneVerticalDirection,
|
|
417
|
-
DefaultHeatingSetTemperature: deviceData.Device.DefaultHeatingSetTemperature
|
|
418
|
-
DefaultCoolingSetTemperature: deviceData.Device.DefaultCoolingSetTemperature
|
|
417
|
+
DefaultHeatingSetTemperature: deviceData.Device.DefaultHeatingSetTemperature,
|
|
418
|
+
DefaultCoolingSetTemperature: deviceData.Device.DefaultCoolingSetTemperature,
|
|
419
419
|
InStandbyMode: deviceData.Device.InStandbyMode,
|
|
420
420
|
ProhibitSetTemperature: deviceData.Device.ProhibitSetTemperature,
|
|
421
421
|
ProhibitOperationMode: deviceData.Device.ProhibitOperationMode,
|
package/src/melclouderv.js
CHANGED
|
@@ -356,22 +356,22 @@ class MelCloudErv extends EventEmitter {
|
|
|
356
356
|
}
|
|
357
357
|
async send(deviceData, displayMode) {
|
|
358
358
|
try {
|
|
359
|
-
//set target temp based on
|
|
359
|
+
//set target temp based on display mode and ventilation mode
|
|
360
360
|
switch (displayMode) {
|
|
361
|
-
case 1:
|
|
362
|
-
switch (deviceData.Device.VentilationMode) {
|
|
363
|
-
case 0:
|
|
361
|
+
case 1: //Heather/Cooler
|
|
362
|
+
switch (deviceData.Device.VentilationMode) {
|
|
363
|
+
case 0: //LOSNAY
|
|
364
364
|
deviceData.Device.SetTemperature = deviceData.Device.DefaultHeatingSetTemperature;
|
|
365
365
|
break;
|
|
366
|
-
case 1:
|
|
366
|
+
case 1: //BYPASS
|
|
367
367
|
deviceData.Device.SetTemperature = deviceData.Device.DefaultCoolingSetTemperature;
|
|
368
368
|
break;
|
|
369
|
-
case 2:
|
|
370
|
-
const
|
|
371
|
-
deviceData.Device.SetTemperature =
|
|
369
|
+
case 2: //AUTO
|
|
370
|
+
const setTemperature = (deviceData.Device.DefaultCoolingSetTemperature + deviceData.Device.DefaultHeatingSetTemperature) / 2;
|
|
371
|
+
deviceData.Device.SetTemperature = setTemperature;
|
|
372
372
|
break;
|
|
373
373
|
};
|
|
374
|
-
case 2:
|
|
374
|
+
case 2: //Thermostat
|
|
375
375
|
deviceData.Device.SetTemperature = deviceData.Device.SetTemperature;
|
|
376
376
|
break;
|
|
377
377
|
};
|
|
@@ -389,8 +389,8 @@ class MelCloudErv extends EventEmitter {
|
|
|
389
389
|
SetFanSpeed: deviceData.Device.SetFanSpeed,
|
|
390
390
|
OperationMode: deviceData.Device.OperationMode,
|
|
391
391
|
VentilationMode: deviceData.Device.VentilationMode,
|
|
392
|
-
DefaultCoolingSetTemperature: deviceData.Device.DefaultCoolingSetTemperature
|
|
393
|
-
DefaultHeatingSetTemperature: deviceData.Device.DefaultHeatingSetTemperature
|
|
392
|
+
DefaultCoolingSetTemperature: deviceData.Device.DefaultCoolingSetTemperature,
|
|
393
|
+
DefaultHeatingSetTemperature: deviceData.Device.DefaultHeatingSetTemperature,
|
|
394
394
|
HideRoomTemperature: deviceData.Device.HideRoomTemperature,
|
|
395
395
|
HideSupplyTemperature: deviceData.Device.HideSupplyTemperature,
|
|
396
396
|
HideOutdoorTemperature: deviceData.Device.HideOutdoorTemperature,
|