homebridge-melcloud-control 3.8.3-beta.1 → 3.8.3-beta.11
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/package.json +1 -1
- package/src/deviceata.js +182 -226
- package/src/deviceatw.js +12 -12
- package/src/deviceerv.js +15 -15
- package/src/melcloudata.js +1 -1
- package/src/melcloudatw.js +1 -1
- package/src/melclouderv.js +1 -1
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"displayName": "MELCloud Control",
|
|
3
3
|
"name": "homebridge-melcloud-control",
|
|
4
|
-
"version": "3.8.3-beta.
|
|
4
|
+
"version": "3.8.3-beta.11",
|
|
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
|
@@ -297,9 +297,9 @@ class DeviceAta extends EventEmitter {
|
|
|
297
297
|
switch (this.displayMode) {
|
|
298
298
|
case 1: //Heater Cooler
|
|
299
299
|
const debug = this.enableDebugMode ? this.emit('debug', `Prepare heater/cooler service`) : false;
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
300
|
+
const melCloudService = accessory.addService(Service.HeaterCooler, serviceName, `HeaterCooler ${deviceId}`);
|
|
301
|
+
melCloudService.setPrimaryService(true);
|
|
302
|
+
melCloudService.getCharacteristic(Characteristic.Active)
|
|
303
303
|
.onGet(async () => {
|
|
304
304
|
const state = mielHvac.power;
|
|
305
305
|
return state;
|
|
@@ -314,12 +314,12 @@ class DeviceAta extends EventEmitter {
|
|
|
314
314
|
this.emit('warn', `Set power error: ${error}`);
|
|
315
315
|
};
|
|
316
316
|
});
|
|
317
|
-
|
|
317
|
+
melCloudService.getCharacteristic(Characteristic.CurrentHeaterCoolerState)
|
|
318
318
|
.onGet(async () => {
|
|
319
319
|
const value = mielHvac.currentOperationMode;
|
|
320
320
|
return value;
|
|
321
321
|
});
|
|
322
|
-
|
|
322
|
+
melCloudService.getCharacteristic(Characteristic.TargetHeaterCoolerState)
|
|
323
323
|
.setProps({
|
|
324
324
|
minValue: mielHvac.operationModeSetPropsMinValue,
|
|
325
325
|
maxValue: mielHvac.operationModeSetPropsMaxValue,
|
|
@@ -351,20 +351,20 @@ class DeviceAta extends EventEmitter {
|
|
|
351
351
|
this.emit('warn', `Set operation mode error: ${error}`);
|
|
352
352
|
};
|
|
353
353
|
});
|
|
354
|
-
|
|
354
|
+
melCloudService.getCharacteristic(Characteristic.CurrentTemperature)
|
|
355
355
|
.onGet(async () => {
|
|
356
356
|
const value = mielHvac.roomTemperature;
|
|
357
357
|
return value;
|
|
358
358
|
});
|
|
359
359
|
if (modelSupportsFanSpeed) {
|
|
360
|
-
|
|
360
|
+
melCloudService.getCharacteristic(Characteristic.RotationSpeed)
|
|
361
361
|
.setProps({
|
|
362
362
|
minValue: 0,
|
|
363
363
|
maxValue: mielHvac.fanSpeedSetPropsMaxValue,
|
|
364
364
|
minStep: 1
|
|
365
365
|
})
|
|
366
366
|
.onGet(async () => {
|
|
367
|
-
const value = mielHvac.
|
|
367
|
+
const value = mielHvac.currentFanSpeed; //AUTO, 1, 2, 3, 4, 5, 6, OFF
|
|
368
368
|
return value;
|
|
369
369
|
})
|
|
370
370
|
.onSet(async (value) => {
|
|
@@ -401,7 +401,7 @@ class DeviceAta extends EventEmitter {
|
|
|
401
401
|
});
|
|
402
402
|
};
|
|
403
403
|
if (swingFunction) {
|
|
404
|
-
|
|
404
|
+
melCloudService.getCharacteristic(Characteristic.SwingMode)
|
|
405
405
|
.onGet(async () => {
|
|
406
406
|
//Vane Horizontal: Auto, 1, 2, 3, 4, 5, 6, 12 = Swing //Vertical: Auto, 1, 2, 3, 4, 5, 7 = Swing
|
|
407
407
|
const value = mielHvac.swingMode;
|
|
@@ -419,7 +419,7 @@ class DeviceAta extends EventEmitter {
|
|
|
419
419
|
};
|
|
420
420
|
});
|
|
421
421
|
};
|
|
422
|
-
|
|
422
|
+
melCloudService.getCharacteristic(Characteristic.CoolingThresholdTemperature)
|
|
423
423
|
.setProps({
|
|
424
424
|
minValue: mielHvac.minTempCoolDry,
|
|
425
425
|
maxValue: mielHvac.maxTempCoolDry,
|
|
@@ -440,7 +440,7 @@ class DeviceAta extends EventEmitter {
|
|
|
440
440
|
};
|
|
441
441
|
});
|
|
442
442
|
if (modelSupportsHeat) {
|
|
443
|
-
|
|
443
|
+
melCloudService.getCharacteristic(Characteristic.HeatingThresholdTemperature)
|
|
444
444
|
.setProps({
|
|
445
445
|
minValue: mielHvac.minTempHeat,
|
|
446
446
|
maxValue: mielHvac.maxTempHeat,
|
|
@@ -461,7 +461,7 @@ class DeviceAta extends EventEmitter {
|
|
|
461
461
|
};
|
|
462
462
|
});
|
|
463
463
|
};
|
|
464
|
-
|
|
464
|
+
melCloudService.getCharacteristic(Characteristic.LockPhysicalControls)
|
|
465
465
|
.onGet(async () => {
|
|
466
466
|
const value = mielHvac.lockPhysicalControl;
|
|
467
467
|
return value;
|
|
@@ -479,7 +479,7 @@ class DeviceAta extends EventEmitter {
|
|
|
479
479
|
this.emit('warn', `Set lock physical controls error: ${error}`);
|
|
480
480
|
};
|
|
481
481
|
});
|
|
482
|
-
|
|
482
|
+
melCloudService.getCharacteristic(Characteristic.TemperatureDisplayUnits)
|
|
483
483
|
.onGet(async () => {
|
|
484
484
|
const value = mielHvac.useFahrenheit;
|
|
485
485
|
return value;
|
|
@@ -494,18 +494,18 @@ class DeviceAta extends EventEmitter {
|
|
|
494
494
|
this.emit('warn', `Set temperature display unit error: ${error}`);
|
|
495
495
|
};
|
|
496
496
|
});
|
|
497
|
-
|
|
497
|
+
this.melCloudService = melCloudService;
|
|
498
498
|
break;
|
|
499
499
|
case 2: //Thermostat
|
|
500
500
|
const debug1 = this.enableDebugMode ? this.emit('debug', `Prepare thermostat service`) : false;
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
501
|
+
const melCloudServiceT = accessory.addService(Service.Thermostat, serviceName, `Thermostat ${deviceId}`);
|
|
502
|
+
melCloudServiceT.setPrimaryService(true);
|
|
503
|
+
melCloudServiceT.getCharacteristic(Characteristic.CurrentHeatingCoolingState)
|
|
504
504
|
.onGet(async () => {
|
|
505
505
|
const value = mielHvac.currentOperationMode;
|
|
506
506
|
return value;
|
|
507
507
|
});
|
|
508
|
-
|
|
508
|
+
melCloudServiceT.getCharacteristic(Characteristic.TargetHeatingCoolingState)
|
|
509
509
|
.setProps({
|
|
510
510
|
minValue: mielHvac.operationModeSetPropsMinValue,
|
|
511
511
|
maxValue: mielHvac.operationModeSetPropsMaxValue,
|
|
@@ -546,12 +546,12 @@ class DeviceAta extends EventEmitter {
|
|
|
546
546
|
this.emit('warn', `Set operation mode error: ${error}`);
|
|
547
547
|
};
|
|
548
548
|
});
|
|
549
|
-
|
|
549
|
+
melCloudServiceT.getCharacteristic(Characteristic.CurrentTemperature)
|
|
550
550
|
.onGet(async () => {
|
|
551
551
|
const value = mielHvac.roomTemperature;
|
|
552
552
|
return value;
|
|
553
553
|
});
|
|
554
|
-
|
|
554
|
+
melCloudServiceT.getCharacteristic(Characteristic.TargetTemperature)
|
|
555
555
|
.setProps({
|
|
556
556
|
minValue: mielHvac.minTempHeat,
|
|
557
557
|
maxValue: mielHvac.maxTempHeat,
|
|
@@ -571,7 +571,7 @@ class DeviceAta extends EventEmitter {
|
|
|
571
571
|
this.emit('warn', `Set temperature error: ${error}`);
|
|
572
572
|
};
|
|
573
573
|
});
|
|
574
|
-
|
|
574
|
+
melCloudServiceT.getCharacteristic(Characteristic.TemperatureDisplayUnits)
|
|
575
575
|
.onGet(async () => {
|
|
576
576
|
const value = mielHvac.useFahrenheit;
|
|
577
577
|
return value;
|
|
@@ -586,7 +586,7 @@ class DeviceAta extends EventEmitter {
|
|
|
586
586
|
this.emit('warn', `Set temperature display unit error: ${error}`);
|
|
587
587
|
};
|
|
588
588
|
});
|
|
589
|
-
|
|
589
|
+
this.melCloudServiceT = melCloudServiceT;
|
|
590
590
|
break;
|
|
591
591
|
};
|
|
592
592
|
|
|
@@ -943,131 +943,89 @@ class DeviceAta extends EventEmitter {
|
|
|
943
943
|
enableDebugMode: this.enableDebugMode
|
|
944
944
|
});
|
|
945
945
|
|
|
946
|
-
this.melCloudAta.on('
|
|
946
|
+
this.melCloudAta.on('deviceInfo', (manufacturer, modelIndoor, modelOutdoor, serialNumber, firmwareAppVersion) => {
|
|
947
|
+
if (!this.displayDeviceInfo) {
|
|
948
|
+
return;
|
|
949
|
+
}
|
|
947
950
|
|
|
951
|
+
if (!this.disableLogDeviceInfo) {
|
|
952
|
+
this.emit('devInfo', `---- ${this.deviceTypeText}: ${this.deviceName} ----`);
|
|
953
|
+
this.emit('devInfo', `Account: ${this.accountName}`);
|
|
954
|
+
const indoor = modelIndoor ? this.emit('devInfo', `Indoor: ${modelIndoor}`) : false;
|
|
955
|
+
const outdoor = modelOutdoor ? this.emit('devInfo', `Outdoor: ${modelOutdoor}`) : false
|
|
956
|
+
this.emit('devInfo', `Serial: ${serialNumber}`);
|
|
957
|
+
this.emit('devInfo', `Firmware: ${firmwareAppVersion}`);
|
|
958
|
+
this.emit('devInfo', `Manufacturer: ${manufacturer}`);
|
|
959
|
+
this.emit('devInfo', '----------------------------------');
|
|
960
|
+
};
|
|
961
|
+
|
|
962
|
+
//accessory info
|
|
963
|
+
this.manufacturer = manufacturer;
|
|
964
|
+
this.model = modelIndoor ? modelIndoor : modelOutdoor ? modelOutdoor : `${this.deviceTypeText} ${this.deviceId}`;
|
|
965
|
+
this.serialNumber = serialNumber;
|
|
966
|
+
this.firmwareRevision = firmwareAppVersion;
|
|
967
|
+
this.displayDeviceInfo = false;
|
|
948
968
|
})
|
|
949
|
-
.on('deviceInfo', (manufacturer, modelIndoor, modelOutdoor, serialNumber, firmwareAppVersion) => {
|
|
950
|
-
if (!this.displayDeviceInfo) {
|
|
951
|
-
return;
|
|
952
|
-
}
|
|
953
|
-
|
|
954
|
-
if (!this.disableLogDeviceInfo) {
|
|
955
|
-
this.emit('devInfo', `---- ${this.deviceTypeText}: ${this.deviceName} ----`);
|
|
956
|
-
this.emit('devInfo', `Account: ${this.accountName}`);
|
|
957
|
-
const indoor = modelIndoor ? this.emit('devInfo', `Indoor: ${modelIndoor}`) : false;
|
|
958
|
-
const outdoor = modelOutdoor ? this.emit('devInfo', `Outdoor: ${modelOutdoor}`) : false
|
|
959
|
-
this.emit('devInfo', `Serial: ${serialNumber}`);
|
|
960
|
-
this.emit('devInfo', `Firmware: ${firmwareAppVersion}`);
|
|
961
|
-
this.emit('devInfo', `Manufacturer: ${manufacturer}`);
|
|
962
|
-
this.emit('devInfo', '----------------------------------');
|
|
963
|
-
};
|
|
964
|
-
|
|
965
|
-
//accessory info
|
|
966
|
-
this.manufacturer = manufacturer;
|
|
967
|
-
this.model = modelIndoor ? modelIndoor : modelOutdoor ? modelOutdoor : `${this.deviceTypeText} ${this.deviceId}`;
|
|
968
|
-
this.serialNumber = serialNumber;
|
|
969
|
-
this.firmwareRevision = firmwareAppVersion;
|
|
970
|
-
this.displayDeviceInfo = false;
|
|
971
|
-
})
|
|
972
969
|
.on('deviceState', async (deviceData) => {
|
|
973
970
|
this.deviceData = deviceData;
|
|
974
971
|
|
|
975
|
-
//presets
|
|
976
|
-
const presetsOnServer = deviceData.Presets ?? [];
|
|
977
|
-
|
|
978
|
-
//device control
|
|
979
|
-
const hideVaneControls = deviceData.HideVaneControls ?? false;
|
|
980
|
-
const hideDryModeControl = deviceData.HideDryModeControl ?? false;
|
|
981
|
-
|
|
982
|
-
//device info
|
|
983
|
-
const hasAutomaticFanSpeed = deviceData.Device.HasAutomaticFanSpeed ?? false;
|
|
984
|
-
const airDirectionFunction = deviceData.Device.AirDirectionFunction ?? false;
|
|
985
|
-
const swingFunction = deviceData.Device.SwingFunction ?? false;
|
|
986
|
-
const hasOutdoorTemperature = deviceData.Device.HasOutdoorTemperature ?? false;
|
|
987
|
-
const numberOfFanSpeeds = deviceData.Device.NumberOfFanSpeeds ?? 0;
|
|
988
|
-
const modelSupportsFanSpeed = deviceData.Device.ModelSupportsFanSpeed ?? false;
|
|
989
|
-
const modelSupportsAuto1 = deviceData.Device.ModelSupportsAuto ?? false;
|
|
990
|
-
const modelSupportsAuto = this.autoDryFanMode >= 1 && modelSupportsAuto1
|
|
991
|
-
const modelSupportsHeat1 = deviceData.Device.ModelSupportsHeat ?? false;
|
|
992
|
-
const modelSupportsHeat = this.heatDryFanMode >= 1 && modelSupportsHeat1;
|
|
993
|
-
const modelSupportsDry = deviceData.Device.ModelSupportsDry ?? false;
|
|
994
|
-
const modelSupportsCool = this.coolDryFanMode >= 1;
|
|
995
|
-
const minTempHeat = 10;
|
|
996
|
-
const maxTempHeat = 31;
|
|
997
|
-
const minTempCoolDry = 16;
|
|
998
|
-
const maxTempCoolDry = 31;
|
|
999
|
-
|
|
1000
|
-
//device state
|
|
1001
|
-
const power = deviceData.Device.Power ?? false;
|
|
1002
|
-
const inStandbyMode = deviceData.Device.InStandbyMode ?? false;
|
|
1003
|
-
const roomTemperature = deviceData.Device.RoomTemperature;
|
|
1004
|
-
const setTemperature = deviceData.Device.SetTemperature ?? 20;
|
|
1005
|
-
const defaultHeatingSetTemperature = deviceData.Device.DefaultHeatingSetTemperature ?? 20;
|
|
1006
|
-
const defaultCoolingSetTemperature = deviceData.Device.DefaultCoolingSetTemperature ?? 23;
|
|
1007
|
-
const actualFanSpeed = deviceData.Device.ActualFanSpeed;
|
|
1008
|
-
const automaticFanSpeed = deviceData.Device.AutomaticFanSpeed;
|
|
1009
|
-
const fanSpeed = deviceData.Device.FanSpeed ?? 0;
|
|
1010
|
-
const operationMode = deviceData.Device.OperationMode;
|
|
1011
|
-
const vaneVerticalDirection = deviceData.Device.VaneVerticalDirection;
|
|
1012
|
-
const vaneVerticalSwing = deviceData.Device.VaneVerticalSwing;
|
|
1013
|
-
const vaneHorizontalDirection = deviceData.Device.VaneHorizontalDirection;
|
|
1014
|
-
const vaneHorizontalSwing = deviceData.Device.VaneHorizontalSwing;
|
|
1015
|
-
const prohibitSetTemperature = deviceData.Device.ProhibitSetTemperature ?? false;
|
|
1016
|
-
const prohibitOperationMode = deviceData.Device.ProhibitOperationMode ?? false;
|
|
1017
|
-
const prohibitPower = deviceData.Device.ProhibitPower ?? false;
|
|
1018
|
-
const temperatureIncrement = deviceData.Device.TemperatureIncrement ?? 1;
|
|
1019
|
-
const outdoorTemperature = deviceData.Device.OutdoorTemperature;
|
|
1020
|
-
|
|
1021
972
|
//accessory
|
|
1022
973
|
const obj = {
|
|
1023
|
-
presets:
|
|
1024
|
-
hasAutomaticFanSpeed:
|
|
1025
|
-
airDirectionFunction:
|
|
1026
|
-
swingFunction:
|
|
1027
|
-
hasOutdoorTemperature:
|
|
1028
|
-
numberOfFanSpeeds:
|
|
1029
|
-
modelSupportsFanSpeed:
|
|
1030
|
-
modelSupportsAuto:
|
|
1031
|
-
modelSupportsHeat:
|
|
1032
|
-
modelSupportsDry:
|
|
1033
|
-
modelSupportsCool:
|
|
1034
|
-
minTempHeat:
|
|
1035
|
-
maxTempHeat:
|
|
1036
|
-
minTempCoolDry:
|
|
1037
|
-
maxTempCoolDry:
|
|
1038
|
-
power:
|
|
1039
|
-
inStandbyMode:
|
|
1040
|
-
operationMode:
|
|
974
|
+
presets: deviceData.Presets ?? [],
|
|
975
|
+
hasAutomaticFanSpeed: deviceData.Device.HasAutomaticFanSpeed ?? false,
|
|
976
|
+
airDirectionFunction: deviceData.Device.AirDirectionFunction ?? false,
|
|
977
|
+
swingFunction: deviceData.Device.SwingFunction ?? false,
|
|
978
|
+
hasOutdoorTemperature: deviceData.Device.HasOutdoorTemperature ?? false,
|
|
979
|
+
numberOfFanSpeeds: deviceData.Device.NumberOfFanSpeeds ?? 0,
|
|
980
|
+
modelSupportsFanSpeed: deviceData.Device.ModelSupportsFanSpeed ?? false,
|
|
981
|
+
modelSupportsAuto: this.autoDryFanMode >= 1 && deviceData.Device.ModelSupportsAuto,
|
|
982
|
+
modelSupportsHeat: this.heatDryFanMode >= 1 && deviceData.Device.ModelSupportsHeat,
|
|
983
|
+
modelSupportsDry: deviceData.Device.ModelSupportsDry ?? false,
|
|
984
|
+
modelSupportsCool: this.coolDryFanMode >= 1,
|
|
985
|
+
minTempHeat: 10,
|
|
986
|
+
maxTempHeat: 31,
|
|
987
|
+
minTempCoolDry: 16,
|
|
988
|
+
maxTempCoolDry: 31,
|
|
989
|
+
power: deviceData.Device.Power ?? false,
|
|
990
|
+
inStandbyMode: deviceData.Device.InStandbyMode ?? false,
|
|
991
|
+
operationMode: deviceData.Device.OperationMode,
|
|
1041
992
|
currentOperationMode: 0,
|
|
1042
993
|
targetOperationMode: 0,
|
|
1043
|
-
roomTemperature:
|
|
1044
|
-
outdoorTemperature:
|
|
1045
|
-
setTemperature:
|
|
1046
|
-
defaultHeatingSetTemperature:
|
|
1047
|
-
defaultCoolingSetTemperature:
|
|
1048
|
-
fanSpeed: 0,
|
|
1049
|
-
actualFanSpeed:
|
|
1050
|
-
|
|
1051
|
-
|
|
1052
|
-
|
|
1053
|
-
|
|
1054
|
-
|
|
994
|
+
roomTemperature: deviceData.Device.RoomTemperature,
|
|
995
|
+
outdoorTemperature: deviceData.Device.OutdoorTemperature,
|
|
996
|
+
setTemperature: deviceData.Device.SetTemperature ?? 20,
|
|
997
|
+
defaultHeatingSetTemperature: deviceData.Device.DefaultHeatingSetTemperature ?? 20,
|
|
998
|
+
defaultCoolingSetTemperature: deviceData.Device.DefaultCoolingSetTemperature ?? 23,
|
|
999
|
+
fanSpeed: deviceData.Device.FanSpeed ?? 0,
|
|
1000
|
+
actualFanSpeed: deviceData.Device.ActualFanSpeed,
|
|
1001
|
+
currentFanSpeed: 0,
|
|
1002
|
+
automaticFanSpeed: deviceData.Device.AutomaticFanSpeed,
|
|
1003
|
+
vaneVerticalSwing: deviceData.Device.VaneVerticalSwing,
|
|
1004
|
+
vaneVerticalDirection: deviceData.Device.VaneVerticalDirection,
|
|
1005
|
+
vaneHorizontalSwing: deviceData.Device.VaneHorizontalSwing,
|
|
1006
|
+
vaneHorizontalDirection: deviceData.Device.VaneHorizontalDirection,
|
|
1007
|
+
swingMode: deviceData.Device.SwingFunction && deviceData.Device.VaneHorizontalDirection === 12 && deviceData.Device.VaneVerticalDirection === 7 ? 1 : 0,
|
|
1008
|
+
lockPhysicalControl: deviceData.Device.ProhibitSetTemperature && deviceData.Device.ProhibitOperationMode && deviceData.Device.ProhibitPower ? 1 : 0,
|
|
1055
1009
|
useFahrenheit: this.useFahrenheit,
|
|
1056
|
-
temperatureUnit: this.
|
|
1057
|
-
temperatureIncrement:
|
|
1010
|
+
temperatureUnit: this.temperatureUnit,
|
|
1011
|
+
temperatureIncrement: deviceData.Device.TemperatureIncrement ?? 1,
|
|
1012
|
+
hideVaneControls: deviceData.HideVaneControls ?? false,
|
|
1013
|
+
hideDryModeControl: deviceData.HideDryModeControl ?? false,
|
|
1014
|
+
prohibitSetTemperature: deviceData.Device.ProhibitSetTemperature ?? false,
|
|
1015
|
+
prohibitOperationMode: deviceData.Device.ProhibitOperationMode ?? false,
|
|
1016
|
+
prohibitPower: deviceData.Device.ProhibitPower ?? false,
|
|
1058
1017
|
operationModeSetPropsMinValue: 0,
|
|
1059
1018
|
operationModeSetPropsMaxValue: 3,
|
|
1060
1019
|
operationModeSetPropsValidValues: [0, 1, 2],
|
|
1061
1020
|
fanSpeedSetPropsMaxValue: 6
|
|
1062
|
-
|
|
1063
1021
|
};
|
|
1064
1022
|
|
|
1065
1023
|
//operating mode 0, HEAT, DRY, COOL, 4, 5, 6, FAN, AUTO, ISEE HEAT, ISEE DRY, ISEE COOL
|
|
1066
1024
|
switch (this.displayMode) {
|
|
1067
1025
|
case 1: //Heater Cooler
|
|
1068
|
-
switch (operationMode) {
|
|
1026
|
+
switch (obj.operationMode) {
|
|
1069
1027
|
case 1: //HEAT
|
|
1070
|
-
obj.currentOperationMode = roomTemperature > setTemperature ? 1 : 2; //INACTIVE, IDLE, HEATING, COOLING
|
|
1028
|
+
obj.currentOperationMode = obj.roomTemperature > obj.setTemperature ? 1 : 2; //INACTIVE, IDLE, HEATING, COOLING
|
|
1071
1029
|
obj.targetOperationMode = 1; //AUTO, HEAT, COOL
|
|
1072
1030
|
break;
|
|
1073
1031
|
case 2: //DRY
|
|
@@ -1075,7 +1033,7 @@ class DeviceAta extends EventEmitter {
|
|
|
1075
1033
|
obj.targetOperationMode = this.autoDryFanMode === 2 ? 0 : this.heatDryFanMode === 2 ? 1 : this.coolDryFanMode === 2 ? 2 : obj.targetOperationMode ?? 0;
|
|
1076
1034
|
break;
|
|
1077
1035
|
case 3: //COOL
|
|
1078
|
-
obj.currentOperationMode = roomTemperature < setTemperature ? 1 : 3;
|
|
1036
|
+
obj.currentOperationMode = obj.roomTemperature < obj.setTemperature ? 1 : 3;
|
|
1079
1037
|
obj.targetOperationMode = 2;
|
|
1080
1038
|
break;
|
|
1081
1039
|
case 7: //FAN
|
|
@@ -1083,11 +1041,11 @@ class DeviceAta extends EventEmitter {
|
|
|
1083
1041
|
obj.targetOperationMode = this.autoDryFanMode === 3 ? 0 : this.heatDryFanMode === 3 ? 1 : this.coolDryFanMode === 3 ? 2 : obj.targetOperationMode ?? 0;
|
|
1084
1042
|
break;
|
|
1085
1043
|
case 8: //AUTO
|
|
1086
|
-
obj.currentOperationMode = roomTemperature > setTemperature ? 3 : roomTemperature < setTemperature ? 2 : 1;
|
|
1044
|
+
obj.currentOperationMode = obj.roomTemperature > obj.setTemperature ? 3 : obj.roomTemperature < obj.setTemperature ? 2 : 1;
|
|
1087
1045
|
obj.targetOperationMode = 0;
|
|
1088
1046
|
break;
|
|
1089
1047
|
case 9: //ISEE HEAT
|
|
1090
|
-
obj.currentOperationMode = roomTemperature > setTemperature ? 1 : 2
|
|
1048
|
+
obj.currentOperationMode = obj.roomTemperature > obj.setTemperature ? 1 : 2
|
|
1091
1049
|
obj.targetOperationMode = 1;
|
|
1092
1050
|
break;
|
|
1093
1051
|
case 10: //ISEE DRY
|
|
@@ -1095,41 +1053,41 @@ class DeviceAta extends EventEmitter {
|
|
|
1095
1053
|
obj.targetOperationMode = this.autoDryFanMode === 2 ? 0 : this.heatDryFanMode === 2 ? 1 : this.coolDryFanMode === 2 ? 2 : obj.targetOperationMode ?? 0;
|
|
1096
1054
|
break;
|
|
1097
1055
|
case 11: //ISEE COOL;
|
|
1098
|
-
obj.currentOperationMode = roomTemperature < setTemperature ? 1 : 3;
|
|
1056
|
+
obj.currentOperationMode = obj.roomTemperature < obj.setTemperature ? 1 : 3;
|
|
1099
1057
|
obj.targetOperationMode = 2;
|
|
1100
1058
|
break;
|
|
1101
1059
|
default:
|
|
1102
|
-
this.emit('warn', `Unknown operating mode: ${operationMode}`);
|
|
1060
|
+
this.emit('warn', `Unknown operating mode: ${obj.operationMode}`);
|
|
1103
1061
|
return
|
|
1104
1062
|
};
|
|
1105
1063
|
|
|
1106
|
-
obj.currentOperationMode = !power ? 0 : inStandbyMode ? 1 : obj.currentOperationMode;
|
|
1107
|
-
obj.operationModeSetPropsMinValue = modelSupportsAuto && modelSupportsHeat ? 0 : !modelSupportsAuto && modelSupportsHeat ? 1 : modelSupportsAuto && !modelSupportsHeat ? 0 : 2;
|
|
1064
|
+
obj.currentOperationMode = !obj.power ? 0 : obj.inStandbyMode ? 1 : obj.currentOperationMode;
|
|
1065
|
+
obj.operationModeSetPropsMinValue = obj.modelSupportsAuto && obj.modelSupportsHeat ? 0 : !obj.modelSupportsAuto && obj.modelSupportsHeat ? 1 : obj.modelSupportsAuto && !obj.modelSupportsHeat ? 0 : 2;
|
|
1108
1066
|
obj.operationModeSetPropsMaxValue = 2
|
|
1109
|
-
obj.operationModeSetPropsValidValues = modelSupportsAuto && modelSupportsHeat ? [0, 1, 2] : !modelSupportsAuto && modelSupportsHeat ? [1, 2] : modelSupportsAuto && !modelSupportsHeat ? [0, 2] : [2];
|
|
1067
|
+
obj.operationModeSetPropsValidValues = obj.modelSupportsAuto && obj.modelSupportsHeat ? [0, 1, 2] : !obj.modelSupportsAuto && obj.modelSupportsHeat ? [1, 2] : obj.modelSupportsAuto && !obj.modelSupportsHeat ? [0, 2] : [2];
|
|
1110
1068
|
|
|
1111
1069
|
//fan speed mode
|
|
1112
|
-
if (modelSupportsFanSpeed) {
|
|
1113
|
-
switch (numberOfFanSpeeds) {
|
|
1070
|
+
if (obj.modelSupportsFanSpeed) {
|
|
1071
|
+
switch (obj.numberOfFanSpeeds) {
|
|
1114
1072
|
case 2: //Fan speed mode 2
|
|
1115
|
-
obj.
|
|
1116
|
-
obj.fanSpeedSetPropsMaxValue = hasAutomaticFanSpeed ? 3 : 2;
|
|
1073
|
+
obj.currentFanSpeed = obj.hasAutomaticFanSpeed ? [3, 1, 2][obj.fanSpeed] : [0, 1, 2][obj.fanSpeed];
|
|
1074
|
+
obj.fanSpeedSetPropsMaxValue = obj.hasAutomaticFanSpeed ? 3 : 2;
|
|
1117
1075
|
break;
|
|
1118
1076
|
case 3: //Fan speed mode 3
|
|
1119
|
-
obj.
|
|
1120
|
-
obj.fanSpeedSetPropsMaxValue = hasAutomaticFanSpeed ? 4 : 3;
|
|
1077
|
+
obj.currentFanSpeed = obj.hasAutomaticFanSpeed ? [4, 1, 2, 3][obj.fanSpeed] : [0, 1, 2, 3][obj.fanSpeed];
|
|
1078
|
+
obj.fanSpeedSetPropsMaxValue = obj.hasAutomaticFanSpeed ? 4 : 3;
|
|
1121
1079
|
break;
|
|
1122
1080
|
case 4: //Fan speed mode 4
|
|
1123
|
-
obj.
|
|
1124
|
-
obj.fanSpeedSetPropsMaxValue = hasAutomaticFanSpeed ? 5 : 4;
|
|
1081
|
+
obj.currentFanSpeed = obj.hasAutomaticFanSpeed ? [5, 1, 2, 3, 4][obj.fanSpeed] : [0, 1, 2, 3, 4][obj.fanSpeed];
|
|
1082
|
+
obj.fanSpeedSetPropsMaxValue = obj.hasAutomaticFanSpeed ? 5 : 4;
|
|
1125
1083
|
break;
|
|
1126
1084
|
case 5: //Fan speed mode 5
|
|
1127
|
-
obj.
|
|
1128
|
-
obj.fanSpeedSetPropsMaxValue = hasAutomaticFanSpeed ? 6 : 5;
|
|
1085
|
+
obj.currentFanSpeed = obj.hasAutomaticFanSpeed ? [6, 1, 2, 3, 4, 5][obj.fanSpeed] : [0, 1, 2, 3, 4, 5][obj.fanSpeed];
|
|
1086
|
+
obj.fanSpeedSetPropsMaxValue = obj.hasAutomaticFanSpeed ? 6 : 5;
|
|
1129
1087
|
break;
|
|
1130
1088
|
case 6: //Fan speed mode 6
|
|
1131
|
-
obj.
|
|
1132
|
-
obj.fanSpeedSetPropsMaxValue = hasAutomaticFanSpeed ? 7 : 6;
|
|
1089
|
+
obj.currentFanSpeed = obj.hasAutomaticFanSpeed ? [7, 1, 2, 3, 4, 5, 6][obj.fanSpeed] : [0, 1, 2, 3, 4, 5, 6][obj.fanSpeed];
|
|
1090
|
+
obj.fanSpeedSetPropsMaxValue = obj.hasAutomaticFanSpeed ? 7 : 6;
|
|
1133
1091
|
break;
|
|
1134
1092
|
};
|
|
1135
1093
|
};
|
|
@@ -1139,24 +1097,23 @@ class DeviceAta extends EventEmitter {
|
|
|
1139
1097
|
|
|
1140
1098
|
//update characteristics
|
|
1141
1099
|
if (this.melCloudService) {
|
|
1142
|
-
this.emit('warn', `Update characteristics: ${power ? 1 : 0}, ${obj.currentOperationMode}, ${obj.targetOperationMode}, ${roomTemperature}, ${obj.lockPhysicalControl}`);
|
|
1143
1100
|
this.melCloudService
|
|
1144
|
-
.updateCharacteristic(Characteristic.Active, power
|
|
1101
|
+
.updateCharacteristic(Characteristic.Active, obj.power)
|
|
1145
1102
|
.updateCharacteristic(Characteristic.CurrentHeaterCoolerState, obj.currentOperationMode)
|
|
1146
1103
|
.updateCharacteristic(Characteristic.TargetHeaterCoolerState, obj.targetOperationMode)
|
|
1147
|
-
.updateCharacteristic(Characteristic.CurrentTemperature, roomTemperature)
|
|
1104
|
+
.updateCharacteristic(Characteristic.CurrentTemperature, obj.roomTemperature)
|
|
1148
1105
|
.updateCharacteristic(Characteristic.LockPhysicalControls, obj.lockPhysicalControl)
|
|
1149
1106
|
.updateCharacteristic(Characteristic.TemperatureDisplayUnits, obj.useFahrenheit)
|
|
1150
|
-
.updateCharacteristic(Characteristic.CoolingThresholdTemperature, defaultCoolingSetTemperature);
|
|
1151
|
-
const updateDefHeat = modelSupportsHeat ? this.melCloudService.updateCharacteristic(Characteristic.HeatingThresholdTemperature, defaultHeatingSetTemperature) : false;
|
|
1152
|
-
const updateRS = modelSupportsFanSpeed ? this.melCloudService.updateCharacteristic(Characteristic.RotationSpeed, obj.
|
|
1153
|
-
const updateSM = swingFunction ? this.melCloudService.updateCharacteristic(Characteristic.SwingMode, obj.swingMode) : false;
|
|
1107
|
+
.updateCharacteristic(Characteristic.CoolingThresholdTemperature, obj.operationMode === 8 ? obj.defaultCoolingSetTemperature : obj.setTemperature);
|
|
1108
|
+
const updateDefHeat = obj.modelSupportsHeat ? this.melCloudService.updateCharacteristic(Characteristic.HeatingThresholdTemperature, obj.operationMode === 8 ? obj.defaultHeatingSetTemperature : obj.setTemperature) : false;
|
|
1109
|
+
const updateRS = obj.modelSupportsFanSpeed ? this.melCloudService.updateCharacteristic(Characteristic.RotationSpeed, obj.currentFanSpeed) : false;
|
|
1110
|
+
const updateSM = obj.swingFunction ? this.melCloudService.updateCharacteristic(Characteristic.SwingMode, obj.swingMode) : false;
|
|
1154
1111
|
};
|
|
1155
1112
|
break;
|
|
1156
1113
|
case 2: //Thermostat
|
|
1157
|
-
switch (operationMode) {
|
|
1114
|
+
switch (obj.operationMode) {
|
|
1158
1115
|
case 1: //HEAT
|
|
1159
|
-
obj.currentOperationMode = roomTemperature > setTemperature ? 0 : 1; //OFF, HEATING, COOLING
|
|
1116
|
+
obj.currentOperationMode = obj.roomTemperature > obj.setTemperature ? 0 : 1; //OFF, HEATING, COOLING
|
|
1160
1117
|
obj.targetOperationMode = 1; //OFF, HEAT, COOL, AUTO
|
|
1161
1118
|
break;
|
|
1162
1119
|
case 2: //DRY
|
|
@@ -1164,7 +1121,7 @@ class DeviceAta extends EventEmitter {
|
|
|
1164
1121
|
obj.targetOperationMode = this.autoDryFanMode === 2 ? 3 : this.heatDryFanMode === 2 ? 1 : this.coolDryFanMode === 2 ? 2 : obj.targetOperationMode ?? 0;
|
|
1165
1122
|
break;
|
|
1166
1123
|
case 3: //COOL
|
|
1167
|
-
obj.currentOperationMode = roomTemperature < setTemperature ? 0 : 2;
|
|
1124
|
+
obj.currentOperationMode = obj.roomTemperature < obj.setTemperature ? 0 : 2;
|
|
1168
1125
|
obj.targetOperationMode = 2;
|
|
1169
1126
|
break;
|
|
1170
1127
|
case 7: //FAN
|
|
@@ -1172,11 +1129,11 @@ class DeviceAta extends EventEmitter {
|
|
|
1172
1129
|
obj.targetOperationMode = this.autoDryFanMode === 3 ? 3 : this.heatDryFanMode === 3 ? 1 : this.coolDryFanMode === 3 ? 2 : obj.targetOperationMode ?? 0;
|
|
1173
1130
|
break;
|
|
1174
1131
|
case 8: //AUTO
|
|
1175
|
-
obj.currentOperationMode = roomTemperature < setTemperature ? 1 : roomTemperature > setTemperature ? 2 : 0;
|
|
1132
|
+
obj.currentOperationMode = obj.roomTemperature < obj.setTemperature ? 1 : obj.roomTemperature > obj.setTemperature ? 2 : 0;
|
|
1176
1133
|
obj.targetOperationMode = 3;
|
|
1177
1134
|
break;
|
|
1178
1135
|
case 9: //ISEE HEAT
|
|
1179
|
-
obj.currentOperationMode = roomTemperature > setTemperature ? 0 : 1;
|
|
1136
|
+
obj.currentOperationMode = obj.roomTemperature > obj.setTemperature ? 0 : 1;
|
|
1180
1137
|
obj.targetOperationMode = 1;
|
|
1181
1138
|
break;
|
|
1182
1139
|
case 10: //ISEE DRY
|
|
@@ -1184,31 +1141,30 @@ class DeviceAta extends EventEmitter {
|
|
|
1184
1141
|
obj.targetOperationMode = this.autoDryFanMode === 2 ? 3 : this.heatDryFanMode === 2 ? 1 : this.coolDryFanMode === 2 ? 2 : obj.targetOperationMode ?? 0;
|
|
1185
1142
|
break;
|
|
1186
1143
|
case 11: //ISEE COOL;
|
|
1187
|
-
obj.currentOperationMode = roomTemperature < setTemperature ? 0 : 2;
|
|
1144
|
+
obj.currentOperationMode = obj.roomTemperature < obj.setTemperature ? 0 : 2;
|
|
1188
1145
|
obj.targetOperationMode = 2;
|
|
1189
1146
|
break;
|
|
1190
1147
|
default:
|
|
1191
|
-
this.emit('warn', `Unknown operating mode: ${operationMode}`);
|
|
1148
|
+
this.emit('warn', `Unknown operating mode: ${obj.operationMode}`);
|
|
1192
1149
|
break;
|
|
1193
1150
|
};
|
|
1194
1151
|
|
|
1195
|
-
obj.currentOperationMode = !power ? 0 : obj.currentOperationMode;
|
|
1196
|
-
obj.targetOperationMode = !power ? 0 : obj.targetOperationMode;
|
|
1152
|
+
obj.currentOperationMode = !obj.power ? 0 : obj.currentOperationMode;
|
|
1153
|
+
obj.targetOperationMode = !obj.power ? 0 : obj.targetOperationMode;
|
|
1197
1154
|
obj.operationModeSetPropsMinValue = 0
|
|
1198
|
-
obj.operationModeSetPropsMaxValue = modelSupportsAuto && modelSupportsHeat ? 3 : !modelSupportsAuto && modelSupportsHeat ? 2 : modelSupportsAuto && !modelSupportsHeat ? 3 : 2;
|
|
1199
|
-
obj.operationModeSetPropsValidValues = modelSupportsAuto && modelSupportsHeat ? [0, 1, 2, 3] : !modelSupportsAuto && modelSupportsHeat ? [0, 1, 2] : modelSupportsAuto && !modelSupportsHeat ? [0, 2, 3] : [0, 2];
|
|
1155
|
+
obj.operationModeSetPropsMaxValue = obj.modelSupportsAuto && obj.modelSupportsHeat ? 3 : !obj.modelSupportsAuto && obj.modelSupportsHeat ? 2 : obj.modelSupportsAuto && !obj.modelSupportsHeat ? 3 : 2;
|
|
1156
|
+
obj.operationModeSetPropsValidValues = obj.modelSupportsAuto && obj.modelSupportsHeat ? [0, 1, 2, 3] : !obj.modelSupportsAuto && obj.modelSupportsHeat ? [0, 1, 2] : obj.modelSupportsAuto && !obj.modelSupportsHeat ? [0, 2, 3] : [0, 2];
|
|
1200
1157
|
|
|
1201
1158
|
//add obj to mielHvac
|
|
1202
1159
|
this.mielHvac = obj;
|
|
1203
1160
|
|
|
1204
1161
|
//update characteristics
|
|
1205
|
-
if (this.
|
|
1206
|
-
|
|
1207
|
-
this.melCloudService
|
|
1162
|
+
if (this.melCloudServiceT) {
|
|
1163
|
+
this.melCloudServiceT
|
|
1208
1164
|
.updateCharacteristic(Characteristic.CurrentHeatingCoolingState, obj.currentOperationMode)
|
|
1209
1165
|
.updateCharacteristic(Characteristic.TargetHeatingCoolingState, obj.targetOperationMode)
|
|
1210
|
-
.updateCharacteristic(Characteristic.CurrentTemperature, roomTemperature)
|
|
1211
|
-
.updateCharacteristic(Characteristic.TargetTemperature, setTemperature)
|
|
1166
|
+
.updateCharacteristic(Characteristic.CurrentTemperature, obj.roomTemperature)
|
|
1167
|
+
.updateCharacteristic(Characteristic.TargetTemperature, obj.setTemperature)
|
|
1212
1168
|
.updateCharacteristic(Characteristic.TemperatureDisplayUnits, obj.useFahrenheit);
|
|
1213
1169
|
};
|
|
1214
1170
|
break;
|
|
@@ -1216,25 +1172,25 @@ class DeviceAta extends EventEmitter {
|
|
|
1216
1172
|
|
|
1217
1173
|
if (this.roomTemperatureSensorService) {
|
|
1218
1174
|
this.roomTemperatureSensorService
|
|
1219
|
-
.updateCharacteristic(Characteristic.CurrentTemperature, roomTemperature)
|
|
1175
|
+
.updateCharacteristic(Characteristic.CurrentTemperature, obj.roomTemperature)
|
|
1220
1176
|
};
|
|
1221
1177
|
|
|
1222
1178
|
if (this.outdoorTemperatureSensorService) {
|
|
1223
1179
|
this.outdoorTemperatureSensorService
|
|
1224
|
-
.updateCharacteristic(Characteristic.CurrentTemperature, outdoorTemperature)
|
|
1180
|
+
.updateCharacteristic(Characteristic.CurrentTemperature, obj.outdoorTemperature)
|
|
1225
1181
|
};
|
|
1226
1182
|
|
|
1227
1183
|
//update presets state
|
|
1228
1184
|
if (this.presetsConfigured.length > 0) {
|
|
1229
1185
|
this.presetsConfigured.forEach((preset, i) => {
|
|
1230
|
-
const presetData =
|
|
1186
|
+
const presetData = obj.presets.find(p => p.ID === preset.Id);
|
|
1231
1187
|
|
|
1232
|
-
preset.state = presetData ? (presetData.Power === power
|
|
1233
|
-
&& presetData.SetTemperature === setTemperature
|
|
1234
|
-
&& presetData.OperationMode === operationMode
|
|
1235
|
-
&& presetData.VaneHorizontal === vaneHorizontalDirection
|
|
1236
|
-
&& presetData.VaneVertical === vaneVerticalDirection
|
|
1237
|
-
&& presetData.FanSpeed === fanSpeed) : false;
|
|
1188
|
+
preset.state = presetData ? (presetData.Power === obj.power
|
|
1189
|
+
&& presetData.SetTemperature === obj.setTemperature
|
|
1190
|
+
&& presetData.OperationMode === obj.operationMode
|
|
1191
|
+
&& presetData.VaneHorizontal === obj.vaneHorizontalDirection
|
|
1192
|
+
&& presetData.VaneVertical === obj.vaneVerticalDirection
|
|
1193
|
+
&& presetData.FanSpeed === obj.fanSpeed) : false;
|
|
1238
1194
|
|
|
1239
1195
|
if (this.presetsServices) {
|
|
1240
1196
|
const characteristicType = preset.characteristicType;
|
|
@@ -1250,109 +1206,109 @@ class DeviceAta extends EventEmitter {
|
|
|
1250
1206
|
const mode = button.mode;
|
|
1251
1207
|
switch (mode) {
|
|
1252
1208
|
case 0: //POWER ON,OFF
|
|
1253
|
-
button.state = (power === true);
|
|
1209
|
+
button.state = (obj.power === true);
|
|
1254
1210
|
break;
|
|
1255
1211
|
case 1: //OPERATING MODE HEAT
|
|
1256
|
-
button.state = power ? (operationMode === 1 || operationMode === 9) : false;
|
|
1212
|
+
button.state = obj.power ? (obj.operationMode === 1 || obj.operationMode === 9) : false;
|
|
1257
1213
|
break;
|
|
1258
1214
|
case 2: //OPERATING MODE DRY
|
|
1259
|
-
button.state = power ? (operationMode === 2 || operationMode === 10) : false;
|
|
1215
|
+
button.state = obj.power ? (obj.operationMode === 2 || obj.operationMode === 10) : false;
|
|
1260
1216
|
break
|
|
1261
1217
|
case 3: //OPERATING MODE COOL
|
|
1262
|
-
button.state = power ? (operationMode === 3 || operationMode === 11) : false;
|
|
1218
|
+
button.state = obj.power ? (obj.operationMode === 3 || obj.operationMode === 11) : false;
|
|
1263
1219
|
break;
|
|
1264
1220
|
case 4: //OPERATING MODE FAN
|
|
1265
|
-
button.state = power ? (operationMode === 7) : false;
|
|
1221
|
+
button.state = obj.power ? (obj.operationMode === 7) : false;
|
|
1266
1222
|
break;
|
|
1267
1223
|
case 5: //OPERATING MODE AUTO
|
|
1268
|
-
button.state = power ? (operationMode === 8) : false;
|
|
1224
|
+
button.state = obj.power ? (obj.operationMode === 8) : false;
|
|
1269
1225
|
break;
|
|
1270
1226
|
case 6: //OPERATING MODE PURIFY
|
|
1271
|
-
button.state = power ? (operationMode === 12) : false;
|
|
1227
|
+
button.state = obj.power ? (obj.operationMode === 12) : false;
|
|
1272
1228
|
break;
|
|
1273
1229
|
case 7: //OPERATING MODE DRY CONTROL HIDE
|
|
1274
|
-
button.state = power ? (hideDryModeControl === true) : false;
|
|
1230
|
+
button.state = obj.power ? (obj.hideDryModeControl === true) : false;
|
|
1275
1231
|
break;
|
|
1276
1232
|
case 10: //VANE H SWING MODE AUTO
|
|
1277
|
-
button.state = power ? (vaneHorizontalDirection === 0) : false;
|
|
1233
|
+
button.state = obj.power ? (obj.vaneHorizontalDirection === 0) : false;
|
|
1278
1234
|
break;
|
|
1279
1235
|
case 11: //VANE H SWING MODE 1
|
|
1280
|
-
button.state = power ? (vaneHorizontalDirection === 1) : false;
|
|
1236
|
+
button.state = obj.power ? (obj.vaneHorizontalDirection === 1) : false;
|
|
1281
1237
|
break;
|
|
1282
1238
|
case 12: //VANE H SWING MODE 2
|
|
1283
|
-
button.state = power ? (vaneHorizontalDirection === 2) : false;
|
|
1239
|
+
button.state = obj.power ? (obj.vaneHorizontalDirection === 2) : false;
|
|
1284
1240
|
break;
|
|
1285
1241
|
case 13: //VANE H SWING MODE 3
|
|
1286
|
-
button.state = power ? (vaneHorizontalDirection === 3) : false;
|
|
1242
|
+
button.state = obj.power ? (obj.vaneHorizontalDirection === 3) : false;
|
|
1287
1243
|
break;
|
|
1288
1244
|
case 14: //VANE H SWING MODE 4
|
|
1289
|
-
button.state = power ? (vaneHorizontalDirection === 4) : false;
|
|
1245
|
+
button.state = obj.power ? (obj.vaneHorizontalDirection === 4) : false;
|
|
1290
1246
|
break;
|
|
1291
1247
|
case 15: //VANE H SWING MODE 5
|
|
1292
|
-
button.state = power ? (vaneHorizontalDirection === 5) : false;
|
|
1248
|
+
button.state = obj.power ? (obj.vaneHorizontalDirection === 5) : false;
|
|
1293
1249
|
break;
|
|
1294
1250
|
case 16: //VANE H SWING MODE SPLIT
|
|
1295
|
-
button.state = power ? (vaneHorizontalDirection === 8) : false;
|
|
1251
|
+
button.state = obj.power ? (obj.vaneHorizontalDirection === 8) : false;
|
|
1296
1252
|
break;
|
|
1297
1253
|
case 17: //VANE H SWING MODE SWING
|
|
1298
|
-
button.state = power ? (vaneHorizontalDirection === 12) : false;
|
|
1254
|
+
button.state = obj.power ? (obj.vaneHorizontalDirection === 12) : false;
|
|
1299
1255
|
break;
|
|
1300
1256
|
case 20: //VANE V SWING MODE AUTO
|
|
1301
|
-
button.state = power ? (vaneVerticalDirection === 0) : false;
|
|
1257
|
+
button.state = obj.power ? (obj.vaneVerticalDirection === 0) : false;
|
|
1302
1258
|
break;
|
|
1303
1259
|
case 21: //VANE V SWING MODE 1
|
|
1304
|
-
button.state = power ? (vaneVerticalDirection === 1) : false;
|
|
1260
|
+
button.state = obj.power ? (obj.vaneVerticalDirection === 1) : false;
|
|
1305
1261
|
break;
|
|
1306
1262
|
case 22: //VANE V SWING MODE 2
|
|
1307
|
-
button.state = power ? (vaneVerticalDirection === 2) : false;
|
|
1263
|
+
button.state = obj.power ? (obj.vaneVerticalDirection === 2) : false;
|
|
1308
1264
|
break;
|
|
1309
1265
|
case 23: //VANE V SWING MODE 3
|
|
1310
|
-
button.state = power ? (vaneVerticalDirection === 3) : false;
|
|
1266
|
+
button.state = obj.power ? (obj.vaneVerticalDirection === 3) : false;
|
|
1311
1267
|
break;
|
|
1312
1268
|
case 24: //VANE V SWING MODE 4
|
|
1313
|
-
button.state = power ? (vaneVerticalDirection === 4) : false;
|
|
1269
|
+
button.state = obj.power ? (obj.vaneVerticalDirection === 4) : false;
|
|
1314
1270
|
break;
|
|
1315
1271
|
case 25: //VANE V SWING MODE 5
|
|
1316
|
-
button.state = power ? (vaneVerticalDirection === 5) : false;
|
|
1272
|
+
button.state = obj.power ? (obj.vaneVerticalDirection === 5) : false;
|
|
1317
1273
|
break;
|
|
1318
1274
|
case 26: //VANE V SWING MODE SWING
|
|
1319
|
-
button.state = power ? (vaneVerticalDirection === 7) : false;
|
|
1275
|
+
button.state = obj.power ? (obj.vaneVerticalDirection === 7) : false;
|
|
1320
1276
|
break;
|
|
1321
1277
|
case 27: //VANE H/V CONTROLS HIDE
|
|
1322
|
-
button.state = power ? (hideVaneControls === true) : false;
|
|
1278
|
+
button.state = obj.power ? (obj.hideVaneControls === true) : false;
|
|
1323
1279
|
break;
|
|
1324
1280
|
case 30: //FAN SPEED MODE AUTO
|
|
1325
|
-
button.state = power ? (fanSpeed === 0) : false;
|
|
1281
|
+
button.state = obj.power ? (obj.fanSpeed === 0) : false;
|
|
1326
1282
|
break;
|
|
1327
1283
|
case 31: //FAN SPEED MODE 1
|
|
1328
|
-
button.state = power ? (fanSpeed === 1) : false;
|
|
1284
|
+
button.state = obj.power ? (obj.fanSpeed === 1) : false;
|
|
1329
1285
|
break;
|
|
1330
1286
|
case 32: //FAN SPEED MODE 2
|
|
1331
|
-
button.state = power ? (fanSpeed === 2) : false;
|
|
1287
|
+
button.state = obj.power ? (obj.fanSpeed === 2) : false;
|
|
1332
1288
|
break;
|
|
1333
1289
|
case 33: //FAN SPEED MODE 3
|
|
1334
|
-
button.state = power ? (fanSpeed === 3) : false;
|
|
1290
|
+
button.state = obj.power ? (obj.fanSpeed === 3) : false;
|
|
1335
1291
|
break;
|
|
1336
1292
|
case 34: //FAN SPEED MODE 4
|
|
1337
|
-
button.state = power ? (fanSpeed === 4) : false;
|
|
1293
|
+
button.state = obj.power ? (obj.fanSpeed === 4) : false;
|
|
1338
1294
|
break;
|
|
1339
1295
|
case 35: //FAN SPEED MODE 5
|
|
1340
|
-
button.state = power ? (fanSpeed === 5) : false;
|
|
1296
|
+
button.state = obj.power ? (obj.fanSpeed === 5) : false;
|
|
1341
1297
|
break;
|
|
1342
1298
|
case 36: //FAN SPEED MODE 6
|
|
1343
|
-
button.state = power ? (fanSpeed === 6) : false;
|
|
1299
|
+
button.state = obj.power ? (obj.fanSpeed === 6) : false;
|
|
1344
1300
|
break;
|
|
1345
1301
|
case 37: //PHYSICAL LOCK CONTROLS ALL
|
|
1346
1302
|
button.state = (obj.lockPhysicalControl === 1);
|
|
1347
1303
|
break;
|
|
1348
1304
|
case 38: //PHYSICAL LOCK CONTROLS POWER
|
|
1349
|
-
button.state = (prohibitPower === true);
|
|
1305
|
+
button.state = (obj.prohibitPower === true);
|
|
1350
1306
|
break;
|
|
1351
1307
|
case 39: //PHYSICAL LOCK CONTROLS MODE
|
|
1352
|
-
button.state = (prohibitOperationMode === true);
|
|
1308
|
+
button.state = (obj.prohibitOperationMode === true);
|
|
1353
1309
|
break;
|
|
1354
1310
|
case 40: //PHYSICAL LOCK CONTROLS TEMP
|
|
1355
|
-
button.state = (prohibitSetTemperature === true);
|
|
1311
|
+
button.state = (obj.prohibitSetTemperature === true);
|
|
1356
1312
|
break;
|
|
1357
1313
|
default: //Unknown button
|
|
1358
1314
|
this.emit('message', `Unknown button mode: ${mode} detected`);
|
|
@@ -1370,19 +1326,19 @@ class DeviceAta extends EventEmitter {
|
|
|
1370
1326
|
|
|
1371
1327
|
//log current state
|
|
1372
1328
|
if (!this.disableLogInfo) {
|
|
1373
|
-
this.emit('
|
|
1374
|
-
this.emit('
|
|
1375
|
-
this.emit('
|
|
1376
|
-
this.emit('
|
|
1377
|
-
this.emit('
|
|
1378
|
-
const info = hasOutdoorTemperature && outdoorTemperature !== null ? this.emit('
|
|
1379
|
-
const info3 = modelSupportsFanSpeed ? this.emit('
|
|
1380
|
-
const info4 = modelSupportsFanSpeed ? this.emit('
|
|
1381
|
-
const info5 = vaneHorizontalDirection !== null ? this.emit('
|
|
1382
|
-
const info6 = vaneVerticalDirection !== null ? this.emit('
|
|
1383
|
-
const info7 = swingFunction ? this.emit('
|
|
1384
|
-
this.emit('
|
|
1385
|
-
this.emit('
|
|
1329
|
+
this.emit('info', `Power: ${obj.power ? 'ON' : 'OFF'}`);
|
|
1330
|
+
this.emit('info', `Target operation mode: ${AirConditioner.DriveMode[obj.operationMode]}`);
|
|
1331
|
+
this.emit('info', `Current operation mode: ${this.displayMode === 1 ? AirConditioner.CurrentOperationModeHeatherCooler[obj.currentOperationMode] : AirConditioner.CurrentOperationModeThermostat[obj.currentOperationMode]}`);
|
|
1332
|
+
this.emit('info', `Target temperature: ${obj.setTemperature}${obj.temperatureUnit}`);
|
|
1333
|
+
this.emit('info', `Current temperature: ${obj.roomTemperature}${obj.temperatureUnit}`);
|
|
1334
|
+
const info = obj.hasOutdoorTemperature && obj.outdoorTemperature !== null ? this.emit('info', `Outdoor temperature: ${obj.outdoorTemperature}${obj.temperatureUnit}`) : false;
|
|
1335
|
+
const info3 = obj.modelSupportsFanSpeed ? this.emit('info', `Target fan speed: ${AirConditioner.FanSpeed[obj.fanSpeed]}`) : false;
|
|
1336
|
+
const info4 = obj.modelSupportsFanSpeed ? this.emit('info', `Current fan speed: ${AirConditioner.FanSpeed[obj.actualFanSpeed]}`) : false;
|
|
1337
|
+
const info5 = obj.vaneHorizontalDirection !== null ? this.emit('info', `Vane horizontal: ${AirConditioner.HorizontalVane[obj.vaneHorizontalDirection] ?? obj.vaneHorizontalDirection}`) : false;
|
|
1338
|
+
const info6 = obj.vaneVerticalDirection !== null ? this.emit('info', `Vane vertical: ${AirConditioner.VerticalVane[obj.vaneVerticalDirection] ?? obj.vaneVerticalDirection}`) : false;
|
|
1339
|
+
const info7 = obj.swingFunction ? this.emit('info', `Air direction: ${AirConditioner.AirDirection[obj.swingMode]}`) : false;
|
|
1340
|
+
this.emit('info', `Temperature display unit: ${obj.temperatureUnit}`);
|
|
1341
|
+
this.emit('info', `Lock physical controls: ${obj.lockPhysicalControl ? 'LOCKED' : 'UNLOCKED'}`);
|
|
1386
1342
|
};
|
|
1387
1343
|
|
|
1388
1344
|
//prepare accessory
|
package/src/deviceatw.js
CHANGED
|
@@ -1843,24 +1843,24 @@ class DeviceAtw extends EventEmitter {
|
|
|
1843
1843
|
if (!this.disableLogInfo) {
|
|
1844
1844
|
switch (i) {
|
|
1845
1845
|
case caseHeatPumpSensor: //Heat Pump - HEAT, COOL, OFF
|
|
1846
|
-
const info = outdoorTemperature !== null ? this.emit('
|
|
1847
|
-
const info0 = flowTemperatureHeatPump !== null ? this.emit('
|
|
1848
|
-
const info1 = returnTemperatureHeatPump !== null ? this.emit('
|
|
1846
|
+
const info = outdoorTemperature !== null ? this.emit('info', `${heatPumpName}, Outdoor temperature: ${outdoorTemperature}${obj.temperatureUnit}`) : false;
|
|
1847
|
+
const info0 = flowTemperatureHeatPump !== null ? this.emit('info', `${heatPumpName}, Flow temperature: ${flowTemperatureHeatPump}${obj.temperatureUnit}`) : false;
|
|
1848
|
+
const info1 = returnTemperatureHeatPump !== null ? this.emit('info', `${heatPumpName}, Return temperature: ${returnTemperatureHeatPump}${obj.temperatureUnit}`) : false;
|
|
1849
1849
|
break;
|
|
1850
1850
|
case caseZone1Sensor: //Zone 1 - HEAT THERMOSTAT, HEAT FLOW, HEAT CURVE, COOL THERMOSTAT, COOL FLOW, FLOOR DRY UP
|
|
1851
|
-
const info2 = roomTemperatureZone1 !== null ? this.emit('
|
|
1852
|
-
const info3 = flowTemperatureZone1 !== null ? this.emit('
|
|
1853
|
-
const info4 = returnTemperatureZone1 !== null ? this.emit('
|
|
1851
|
+
const info2 = roomTemperatureZone1 !== null ? this.emit('info', `${zone1Name}, Room temperature: ${roomTemperatureZone1}${obj.temperatureUnit}`) : false;
|
|
1852
|
+
const info3 = flowTemperatureZone1 !== null ? this.emit('info', `${zone1Name}, Flow temperature: ${flowTemperatureZone1}${obj.temperatureUnit}`) : false;
|
|
1853
|
+
const info4 = returnTemperatureZone1 !== null ? this.emit('info', `${zone1Name}, Return temperature: ${returnTemperatureZone1}${obj.temperatureUnit}`) : false;
|
|
1854
1854
|
break;
|
|
1855
1855
|
case caseHotWaterSensor: //Hot Water - AUTO, HEAT NOW
|
|
1856
|
-
const info5 = tankWaterTemperature !== null ? this.emit('
|
|
1857
|
-
const info6 = flowTemperatureWaterTank !== null ? this.emit('
|
|
1858
|
-
const info7 = returnTemperatureWaterTank !== null ? this.emit('
|
|
1856
|
+
const info5 = tankWaterTemperature !== null ? this.emit('info', `${hotWaterName}, Temperature: ${tankWaterTemperature}${obj.temperatureUnit}`) : false;
|
|
1857
|
+
const info6 = flowTemperatureWaterTank !== null ? this.emit('info', `${hotWaterName}, Flow temperature: ${flowTemperatureWaterTank}${obj.temperatureUnit}`) : false;
|
|
1858
|
+
const info7 = returnTemperatureWaterTank !== null ? this.emit('info', `${hotWaterName}, Return temperature: ${returnTemperatureWaterTank}${obj.temperatureUnit}`) : false;
|
|
1859
1859
|
break;
|
|
1860
1860
|
case caseZone2Sensor: //Zone 2 - HEAT THERMOSTAT, HEAT FLOW, HEAT CURVE, COOL THERMOSTAT, COOL FLOW, FLOOR DRY UP
|
|
1861
|
-
const info8 = roomTemperatureZone2 !== null ? this.emit('
|
|
1862
|
-
const info9 = flowTemperatureZone2 !== null ? this.emit('
|
|
1863
|
-
const info10 = returnTemperatureZone2 !== null ? this.emit('
|
|
1861
|
+
const info8 = roomTemperatureZone2 !== null ? this.emit('info', `${zone2Name}, Room temperature: ${roomTemperatureZone2}${obj.temperatureUnit}`) : false;
|
|
1862
|
+
const info9 = flowTemperatureZone2 !== null ? this.emit('info', `${zone2Name}, Flow temperature: ${flowTemperatureZone2}${obj.temperatureUnit}`) : false;
|
|
1863
|
+
const info10 = returnTemperatureZone2 !== null ? this.emit('info', `${zone2Name}, Return temperature: ${returnTemperatureZone2}${obj.temperatureUnit}`) : false;
|
|
1864
1864
|
break;
|
|
1865
1865
|
};
|
|
1866
1866
|
};
|
package/src/deviceerv.js
CHANGED
|
@@ -1223,21 +1223,21 @@ class DeviceErv extends EventEmitter {
|
|
|
1223
1223
|
|
|
1224
1224
|
//log current state
|
|
1225
1225
|
if (!this.disableLogInfo) {
|
|
1226
|
-
this.emit('
|
|
1227
|
-
this.emit('
|
|
1228
|
-
this.emit('
|
|
1229
|
-
this.emit('
|
|
1230
|
-
this.emit('
|
|
1231
|
-
const info1 = hasSupplyTemperature && deviceData.Device.SupplyTemperature !== null ? this.emit('
|
|
1232
|
-
const info2 = hasOutdoorTemperature && deviceData.Device.OutdoorTemperature !== null ? this.emit('
|
|
1233
|
-
this.emit('
|
|
1234
|
-
this.emit('
|
|
1235
|
-
this.emit('
|
|
1236
|
-
this.emit('
|
|
1237
|
-
const info5 = hasCO2Sensor ? this.emit('
|
|
1238
|
-
const info6 = hasCO2Sensor ? this.emit('
|
|
1239
|
-
const info7 = hasPM25Sensor ? this.emit('
|
|
1240
|
-
const info8 = hasPM25Sensor ? this.emit('
|
|
1226
|
+
this.emit('info', `Power: ${power ? 'ON' : 'OFF'}`);
|
|
1227
|
+
this.emit('info', `Target ventilation mode: ${Ventilation.OperationMode[ventilationMode]}`);
|
|
1228
|
+
this.emit('info', `Current ventilation mode: ${Ventilation.OperationMode[actualVentilationMode]}`);
|
|
1229
|
+
this.emit('info', `Target temperature: ${setTemperature}${obj.temperatureUnit}`);
|
|
1230
|
+
this.emit('info', `Room temperature: ${roomTemperature}${obj.temperatureUnit}`);
|
|
1231
|
+
const info1 = hasSupplyTemperature && deviceData.Device.SupplyTemperature !== null ? this.emit('info', `Supply temperature: ${roomTemperature}${obj.temperatureUnit}`) : false;
|
|
1232
|
+
const info2 = hasOutdoorTemperature && deviceData.Device.OutdoorTemperature !== null ? this.emit('info', `Outdoor temperature: ${roomTemperature}${obj.temperatureUnit}`) : false;
|
|
1233
|
+
this.emit('info', `Fan speed mode: ${Ventilation.FanSpeed[setFanSpeed]}`);
|
|
1234
|
+
this.emit('info', `Temperature display unit: ${obj.temperatureUnit}`);
|
|
1235
|
+
this.emit('info', `Core maintenance: ${Ventilation.CoreMaintenance[coreMaintenanceRequired]}`);
|
|
1236
|
+
this.emit('info', `Filter maintenance: ${Ventilation.FilterMaintenance[filterMaintenanceRequired]}`);
|
|
1237
|
+
const info5 = hasCO2Sensor ? this.emit('info', `CO2 detected: ${Ventilation.Co2Detected[roomCO2Detected]}`) : false;
|
|
1238
|
+
const info6 = hasCO2Sensor ? this.emit('info', `CO2 level: ${roomCO2Level} ppm`) : false;
|
|
1239
|
+
const info7 = hasPM25Sensor ? this.emit('info', `PM2.5 air quality: ${Ventilation.PM25AirQuality[pM25AirQuality]}`) : false;
|
|
1240
|
+
const info8 = hasPM25Sensor ? this.emit('info', `PM2.5 level: ${pM25Level} µg/m`) : false;
|
|
1241
1241
|
};
|
|
1242
1242
|
|
|
1243
1243
|
//prepare accessory
|
package/src/melcloudata.js
CHANGED
|
@@ -336,6 +336,7 @@ class MelCloudAta extends EventEmitter {
|
|
|
336
336
|
//check state changes
|
|
337
337
|
const deviceDataHasNotChanged = JSON.stringify(deviceState) === JSON.stringify(this.deviceState);
|
|
338
338
|
if (deviceDataHasNotChanged) {
|
|
339
|
+
const debug = this.enableDebugMode ? this.emit('debug', `Data not changed`) : false;
|
|
339
340
|
return;
|
|
340
341
|
}
|
|
341
342
|
this.deviceState = deviceState;
|
|
@@ -447,7 +448,6 @@ class MelCloudAta extends EventEmitter {
|
|
|
447
448
|
|
|
448
449
|
updateData(deviceData) {
|
|
449
450
|
setTimeout(() => {
|
|
450
|
-
this.emit('externalIntegrations', deviceData);
|
|
451
451
|
this.emit('deviceState', deviceData);
|
|
452
452
|
}, 500);
|
|
453
453
|
}
|
package/src/melcloudatw.js
CHANGED
|
@@ -400,6 +400,7 @@ class MelCloudAtw extends EventEmitter {
|
|
|
400
400
|
//check state changes
|
|
401
401
|
const deviceDataHasNotChanged = JSON.stringify(deviceState) === JSON.stringify(this.deviceState);
|
|
402
402
|
if (deviceDataHasNotChanged) {
|
|
403
|
+
const debug = this.enableDebugMode ? this.emit('debug', `Data not changed`) : false;
|
|
403
404
|
return;
|
|
404
405
|
}
|
|
405
406
|
this.deviceState = deviceState;
|
|
@@ -492,7 +493,6 @@ class MelCloudAtw extends EventEmitter {
|
|
|
492
493
|
|
|
493
494
|
updateData(deviceData) {
|
|
494
495
|
setTimeout(() => {
|
|
495
|
-
this.emit('externalIntegrations', deviceData);
|
|
496
496
|
this.emit('deviceState', deviceData);
|
|
497
497
|
}, 500);
|
|
498
498
|
}
|
package/src/melclouderv.js
CHANGED
|
@@ -324,6 +324,7 @@ class MelCloudErv extends EventEmitter {
|
|
|
324
324
|
//check state changes
|
|
325
325
|
const deviceDataHasNotChanged = JSON.stringify(deviceState) === JSON.stringify(this.deviceState);
|
|
326
326
|
if (deviceDataHasNotChanged) {
|
|
327
|
+
const debug = this.enableDebugMode ? this.emit('debug', `Data not changed`) : false;
|
|
327
328
|
return;
|
|
328
329
|
}
|
|
329
330
|
this.deviceState = deviceState;
|
|
@@ -418,7 +419,6 @@ class MelCloudErv extends EventEmitter {
|
|
|
418
419
|
|
|
419
420
|
updateData(deviceData) {
|
|
420
421
|
setTimeout(() => {
|
|
421
|
-
this.emit('externalIntegrations', deviceData);
|
|
422
422
|
this.emit('deviceState', deviceData);
|
|
423
423
|
}, 500);
|
|
424
424
|
}
|