homebridge-melcloud-control 3.8.3-beta.5 → 3.8.3-beta.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/src/deviceata.js +135 -174
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.7",
|
|
5
5
|
"description": "Homebridge plugin to control Mitsubishi Air Conditioner, Heat Pump and Energy Recovery Ventilation.",
|
|
6
6
|
"license": "MIT",
|
|
7
7
|
"author": "grzegorz914",
|
package/src/deviceata.js
CHANGED
|
@@ -364,7 +364,7 @@ class DeviceAta extends EventEmitter {
|
|
|
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) => {
|
|
@@ -969,102 +969,63 @@ class DeviceAta extends EventEmitter {
|
|
|
969
969
|
.on('deviceState', async (deviceData) => {
|
|
970
970
|
this.deviceData = deviceData;
|
|
971
971
|
|
|
972
|
-
//presets
|
|
973
|
-
const presetsOnServer = deviceData.Presets ?? [];
|
|
974
|
-
|
|
975
|
-
//device control
|
|
976
|
-
const hideVaneControls = deviceData.HideVaneControls ?? false;
|
|
977
|
-
const hideDryModeControl = deviceData.HideDryModeControl ?? false;
|
|
978
|
-
|
|
979
|
-
//device info
|
|
980
|
-
const hasAutomaticFanSpeed = deviceData.Device.HasAutomaticFanSpeed ?? false;
|
|
981
|
-
const airDirectionFunction = deviceData.Device.AirDirectionFunction ?? false;
|
|
982
|
-
const swingFunction = deviceData.Device.SwingFunction ?? false;
|
|
983
|
-
const hasOutdoorTemperature = deviceData.Device.HasOutdoorTemperature ?? false;
|
|
984
|
-
const numberOfFanSpeeds = deviceData.Device.NumberOfFanSpeeds ?? 0;
|
|
985
|
-
const modelSupportsFanSpeed = deviceData.Device.ModelSupportsFanSpeed ?? false;
|
|
986
|
-
const modelSupportsAuto1 = deviceData.Device.ModelSupportsAuto ?? false;
|
|
987
|
-
const modelSupportsAuto = this.autoDryFanMode >= 1 && modelSupportsAuto1
|
|
988
|
-
const modelSupportsHeat1 = deviceData.Device.ModelSupportsHeat ?? false;
|
|
989
|
-
const modelSupportsHeat = this.heatDryFanMode >= 1 && modelSupportsHeat1;
|
|
990
|
-
const modelSupportsDry = deviceData.Device.ModelSupportsDry ?? false;
|
|
991
|
-
const modelSupportsCool = this.coolDryFanMode >= 1;
|
|
992
|
-
const minTempHeat = 10;
|
|
993
|
-
const maxTempHeat = 31;
|
|
994
|
-
const minTempCoolDry = 16;
|
|
995
|
-
const maxTempCoolDry = 31;
|
|
996
|
-
|
|
997
|
-
//device state
|
|
998
|
-
const power = deviceData.Device.Power ?? false;
|
|
999
|
-
const inStandbyMode = deviceData.Device.InStandbyMode ?? false;
|
|
1000
|
-
const roomTemperature = deviceData.Device.RoomTemperature;
|
|
1001
|
-
const setTemperature = deviceData.Device.SetTemperature ?? 20;
|
|
1002
|
-
const defaultHeatingSetTemperature = deviceData.Device.DefaultHeatingSetTemperature ?? 20;
|
|
1003
|
-
const defaultCoolingSetTemperature = deviceData.Device.DefaultCoolingSetTemperature ?? 23;
|
|
1004
|
-
const actualFanSpeed = deviceData.Device.ActualFanSpeed;
|
|
1005
|
-
const automaticFanSpeed = deviceData.Device.AutomaticFanSpeed;
|
|
1006
|
-
const fanSpeed = deviceData.Device.FanSpeed ?? 0;
|
|
1007
|
-
const operationMode = deviceData.Device.OperationMode;
|
|
1008
|
-
const vaneVerticalDirection = deviceData.Device.VaneVerticalDirection;
|
|
1009
|
-
const vaneVerticalSwing = deviceData.Device.VaneVerticalSwing;
|
|
1010
|
-
const vaneHorizontalDirection = deviceData.Device.VaneHorizontalDirection;
|
|
1011
|
-
const vaneHorizontalSwing = deviceData.Device.VaneHorizontalSwing;
|
|
1012
|
-
const prohibitSetTemperature = deviceData.Device.ProhibitSetTemperature ?? false;
|
|
1013
|
-
const prohibitOperationMode = deviceData.Device.ProhibitOperationMode ?? false;
|
|
1014
|
-
const prohibitPower = deviceData.Device.ProhibitPower ?? false;
|
|
1015
|
-
const temperatureIncrement = deviceData.Device.TemperatureIncrement ?? 1;
|
|
1016
|
-
const outdoorTemperature = deviceData.Device.OutdoorTemperature;
|
|
1017
|
-
|
|
1018
972
|
//accessory
|
|
1019
973
|
const obj = {
|
|
1020
|
-
presets:
|
|
1021
|
-
hasAutomaticFanSpeed:
|
|
1022
|
-
airDirectionFunction:
|
|
1023
|
-
swingFunction:
|
|
1024
|
-
hasOutdoorTemperature:
|
|
1025
|
-
numberOfFanSpeeds:
|
|
1026
|
-
modelSupportsFanSpeed:
|
|
1027
|
-
modelSupportsAuto:
|
|
1028
|
-
modelSupportsHeat:
|
|
1029
|
-
modelSupportsDry:
|
|
1030
|
-
modelSupportsCool:
|
|
1031
|
-
minTempHeat:
|
|
1032
|
-
maxTempHeat:
|
|
1033
|
-
minTempCoolDry:
|
|
1034
|
-
maxTempCoolDry:
|
|
1035
|
-
power:
|
|
1036
|
-
inStandbyMode:
|
|
1037
|
-
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,
|
|
1038
992
|
currentOperationMode: 0,
|
|
1039
993
|
targetOperationMode: 0,
|
|
1040
|
-
roomTemperature:
|
|
1041
|
-
outdoorTemperature:
|
|
1042
|
-
setTemperature:
|
|
1043
|
-
defaultHeatingSetTemperature:
|
|
1044
|
-
defaultCoolingSetTemperature:
|
|
1045
|
-
fanSpeed: 0,
|
|
1046
|
-
|
|
1047
|
-
|
|
1048
|
-
|
|
1049
|
-
|
|
1050
|
-
|
|
1051
|
-
|
|
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
|
+
currentFanSpeed: 0,
|
|
1001
|
+
actualFanSpeed: deviceData.Device.ActualFanSpeed,
|
|
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,
|
|
1052
1009
|
useFahrenheit: this.useFahrenheit,
|
|
1053
1010
|
temperatureUnit: this.useFahrenheit,
|
|
1054
|
-
temperatureIncrement:
|
|
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,
|
|
1055
1017
|
operationModeSetPropsMinValue: 0,
|
|
1056
1018
|
operationModeSetPropsMaxValue: 3,
|
|
1057
1019
|
operationModeSetPropsValidValues: [0, 1, 2],
|
|
1058
1020
|
fanSpeedSetPropsMaxValue: 6
|
|
1059
|
-
|
|
1060
1021
|
};
|
|
1061
1022
|
|
|
1062
1023
|
//operating mode 0, HEAT, DRY, COOL, 4, 5, 6, FAN, AUTO, ISEE HEAT, ISEE DRY, ISEE COOL
|
|
1063
1024
|
switch (this.displayMode) {
|
|
1064
1025
|
case 1: //Heater Cooler
|
|
1065
|
-
switch (operationMode) {
|
|
1026
|
+
switch (obj.operationMode) {
|
|
1066
1027
|
case 1: //HEAT
|
|
1067
|
-
obj.currentOperationMode = roomTemperature > setTemperature ? 1 : 2; //INACTIVE, IDLE, HEATING, COOLING
|
|
1028
|
+
obj.currentOperationMode = obj.roomTemperature > obj.setTemperature ? 1 : 2; //INACTIVE, IDLE, HEATING, COOLING
|
|
1068
1029
|
obj.targetOperationMode = 1; //AUTO, HEAT, COOL
|
|
1069
1030
|
break;
|
|
1070
1031
|
case 2: //DRY
|
|
@@ -1072,7 +1033,7 @@ class DeviceAta extends EventEmitter {
|
|
|
1072
1033
|
obj.targetOperationMode = this.autoDryFanMode === 2 ? 0 : this.heatDryFanMode === 2 ? 1 : this.coolDryFanMode === 2 ? 2 : obj.targetOperationMode ?? 0;
|
|
1073
1034
|
break;
|
|
1074
1035
|
case 3: //COOL
|
|
1075
|
-
obj.currentOperationMode = roomTemperature < setTemperature ? 1 : 3;
|
|
1036
|
+
obj.currentOperationMode = obj.roomTemperature < obj.setTemperature ? 1 : 3;
|
|
1076
1037
|
obj.targetOperationMode = 2;
|
|
1077
1038
|
break;
|
|
1078
1039
|
case 7: //FAN
|
|
@@ -1080,11 +1041,11 @@ class DeviceAta extends EventEmitter {
|
|
|
1080
1041
|
obj.targetOperationMode = this.autoDryFanMode === 3 ? 0 : this.heatDryFanMode === 3 ? 1 : this.coolDryFanMode === 3 ? 2 : obj.targetOperationMode ?? 0;
|
|
1081
1042
|
break;
|
|
1082
1043
|
case 8: //AUTO
|
|
1083
|
-
obj.currentOperationMode = roomTemperature > setTemperature ? 3 : roomTemperature < setTemperature ? 2 : 1;
|
|
1044
|
+
obj.currentOperationMode = obj.roomTemperature > obj.setTemperature ? 3 : obj.roomTemperature < obj.setTemperature ? 2 : 1;
|
|
1084
1045
|
obj.targetOperationMode = 0;
|
|
1085
1046
|
break;
|
|
1086
1047
|
case 9: //ISEE HEAT
|
|
1087
|
-
obj.currentOperationMode = roomTemperature > setTemperature ? 1 : 2
|
|
1048
|
+
obj.currentOperationMode = obj.roomTemperature > obj.setTemperature ? 1 : 2
|
|
1088
1049
|
obj.targetOperationMode = 1;
|
|
1089
1050
|
break;
|
|
1090
1051
|
case 10: //ISEE DRY
|
|
@@ -1092,41 +1053,41 @@ class DeviceAta extends EventEmitter {
|
|
|
1092
1053
|
obj.targetOperationMode = this.autoDryFanMode === 2 ? 0 : this.heatDryFanMode === 2 ? 1 : this.coolDryFanMode === 2 ? 2 : obj.targetOperationMode ?? 0;
|
|
1093
1054
|
break;
|
|
1094
1055
|
case 11: //ISEE COOL;
|
|
1095
|
-
obj.currentOperationMode = roomTemperature < setTemperature ? 1 : 3;
|
|
1056
|
+
obj.currentOperationMode = obj.roomTemperature < obj.setTemperature ? 1 : 3;
|
|
1096
1057
|
obj.targetOperationMode = 2;
|
|
1097
1058
|
break;
|
|
1098
1059
|
default:
|
|
1099
|
-
this.emit('warn', `Unknown operating mode: ${operationMode}`);
|
|
1060
|
+
this.emit('warn', `Unknown operating mode: ${obj.operationMode}`);
|
|
1100
1061
|
return
|
|
1101
1062
|
};
|
|
1102
1063
|
|
|
1103
|
-
obj.currentOperationMode = !power ? 0 : inStandbyMode ? 1 : obj.currentOperationMode;
|
|
1104
|
-
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;
|
|
1105
1066
|
obj.operationModeSetPropsMaxValue = 2
|
|
1106
|
-
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];
|
|
1107
1068
|
|
|
1108
1069
|
//fan speed mode
|
|
1109
|
-
if (modelSupportsFanSpeed) {
|
|
1110
|
-
switch (numberOfFanSpeeds) {
|
|
1070
|
+
if (obj.modelSupportsFanSpeed) {
|
|
1071
|
+
switch (obj.numberOfFanSpeeds) {
|
|
1111
1072
|
case 2: //Fan speed mode 2
|
|
1112
|
-
obj.
|
|
1113
|
-
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;
|
|
1114
1075
|
break;
|
|
1115
1076
|
case 3: //Fan speed mode 3
|
|
1116
|
-
obj.
|
|
1117
|
-
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;
|
|
1118
1079
|
break;
|
|
1119
1080
|
case 4: //Fan speed mode 4
|
|
1120
|
-
obj.
|
|
1121
|
-
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;
|
|
1122
1083
|
break;
|
|
1123
1084
|
case 5: //Fan speed mode 5
|
|
1124
|
-
obj.
|
|
1125
|
-
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;
|
|
1126
1087
|
break;
|
|
1127
1088
|
case 6: //Fan speed mode 6
|
|
1128
|
-
obj.
|
|
1129
|
-
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;
|
|
1130
1091
|
break;
|
|
1131
1092
|
};
|
|
1132
1093
|
};
|
|
@@ -1134,22 +1095,22 @@ class DeviceAta extends EventEmitter {
|
|
|
1134
1095
|
//update characteristics
|
|
1135
1096
|
if (this.melCloudService) {
|
|
1136
1097
|
this.melCloudService
|
|
1137
|
-
.updateCharacteristic(Characteristic.Active, power
|
|
1098
|
+
.updateCharacteristic(Characteristic.Active, obj.power)
|
|
1138
1099
|
.updateCharacteristic(Characteristic.CurrentHeaterCoolerState, obj.currentOperationMode)
|
|
1139
1100
|
.updateCharacteristic(Characteristic.TargetHeaterCoolerState, obj.targetOperationMode)
|
|
1140
|
-
.updateCharacteristic(Characteristic.CurrentTemperature, roomTemperature)
|
|
1101
|
+
.updateCharacteristic(Characteristic.CurrentTemperature, obj.roomTemperature)
|
|
1141
1102
|
.updateCharacteristic(Characteristic.LockPhysicalControls, obj.lockPhysicalControl)
|
|
1142
1103
|
.updateCharacteristic(Characteristic.TemperatureDisplayUnits, obj.useFahrenheit)
|
|
1143
|
-
.updateCharacteristic(Characteristic.CoolingThresholdTemperature, defaultCoolingSetTemperature);
|
|
1144
|
-
const updateDefHeat = modelSupportsHeat ? this.melCloudService.updateCharacteristic(Characteristic.HeatingThresholdTemperature, defaultHeatingSetTemperature) : false;
|
|
1145
|
-
const updateRS = modelSupportsFanSpeed ? this.melCloudService.updateCharacteristic(Characteristic.RotationSpeed, obj.fanSpeed) : false;
|
|
1146
|
-
const updateSM = swingFunction ? this.melCloudService.updateCharacteristic(Characteristic.SwingMode, obj.swingMode) : false;
|
|
1104
|
+
.updateCharacteristic(Characteristic.CoolingThresholdTemperature, obj.defaultCoolingSetTemperature);
|
|
1105
|
+
const updateDefHeat = obj.modelSupportsHeat ? this.melCloudService.updateCharacteristic(Characteristic.HeatingThresholdTemperature, obj.defaultHeatingSetTemperature) : false;
|
|
1106
|
+
const updateRS = obj.modelSupportsFanSpeed ? this.melCloudService.updateCharacteristic(Characteristic.RotationSpeed, obj.fanSpeed) : false;
|
|
1107
|
+
const updateSM = obj.swingFunction ? this.melCloudService.updateCharacteristic(Characteristic.SwingMode, obj.swingMode) : false;
|
|
1147
1108
|
};
|
|
1148
1109
|
break;
|
|
1149
1110
|
case 2: //Thermostat
|
|
1150
|
-
switch (operationMode) {
|
|
1111
|
+
switch (obj.operationMode) {
|
|
1151
1112
|
case 1: //HEAT
|
|
1152
|
-
obj.currentOperationMode = roomTemperature > setTemperature ? 0 : 1; //OFF, HEATING, COOLING
|
|
1113
|
+
obj.currentOperationMode = obj.roomTemperature > obj.setTemperature ? 0 : 1; //OFF, HEATING, COOLING
|
|
1153
1114
|
obj.targetOperationMode = 1; //OFF, HEAT, COOL, AUTO
|
|
1154
1115
|
break;
|
|
1155
1116
|
case 2: //DRY
|
|
@@ -1157,7 +1118,7 @@ class DeviceAta extends EventEmitter {
|
|
|
1157
1118
|
obj.targetOperationMode = this.autoDryFanMode === 2 ? 3 : this.heatDryFanMode === 2 ? 1 : this.coolDryFanMode === 2 ? 2 : obj.targetOperationMode ?? 0;
|
|
1158
1119
|
break;
|
|
1159
1120
|
case 3: //COOL
|
|
1160
|
-
obj.currentOperationMode = roomTemperature < setTemperature ? 0 : 2;
|
|
1121
|
+
obj.currentOperationMode = obj.roomTemperature < obj.setTemperature ? 0 : 2;
|
|
1161
1122
|
obj.targetOperationMode = 2;
|
|
1162
1123
|
break;
|
|
1163
1124
|
case 7: //FAN
|
|
@@ -1165,11 +1126,11 @@ class DeviceAta extends EventEmitter {
|
|
|
1165
1126
|
obj.targetOperationMode = this.autoDryFanMode === 3 ? 3 : this.heatDryFanMode === 3 ? 1 : this.coolDryFanMode === 3 ? 2 : obj.targetOperationMode ?? 0;
|
|
1166
1127
|
break;
|
|
1167
1128
|
case 8: //AUTO
|
|
1168
|
-
obj.currentOperationMode = roomTemperature < setTemperature ? 1 : roomTemperature > setTemperature ? 2 : 0;
|
|
1129
|
+
obj.currentOperationMode = obj.roomTemperature < obj.setTemperature ? 1 : obj.roomTemperature > obj.setTemperature ? 2 : 0;
|
|
1169
1130
|
obj.targetOperationMode = 3;
|
|
1170
1131
|
break;
|
|
1171
1132
|
case 9: //ISEE HEAT
|
|
1172
|
-
obj.currentOperationMode = roomTemperature > setTemperature ? 0 : 1;
|
|
1133
|
+
obj.currentOperationMode = obj.roomTemperature > obj.setTemperature ? 0 : 1;
|
|
1173
1134
|
obj.targetOperationMode = 1;
|
|
1174
1135
|
break;
|
|
1175
1136
|
case 10: //ISEE DRY
|
|
@@ -1177,27 +1138,27 @@ class DeviceAta extends EventEmitter {
|
|
|
1177
1138
|
obj.targetOperationMode = this.autoDryFanMode === 2 ? 3 : this.heatDryFanMode === 2 ? 1 : this.coolDryFanMode === 2 ? 2 : obj.targetOperationMode ?? 0;
|
|
1178
1139
|
break;
|
|
1179
1140
|
case 11: //ISEE COOL;
|
|
1180
|
-
obj.currentOperationMode = roomTemperature < setTemperature ? 0 : 2;
|
|
1141
|
+
obj.currentOperationMode = obj.roomTemperature < obj.setTemperature ? 0 : 2;
|
|
1181
1142
|
obj.targetOperationMode = 2;
|
|
1182
1143
|
break;
|
|
1183
1144
|
default:
|
|
1184
|
-
this.emit('warn', `Unknown operating mode: ${operationMode}`);
|
|
1145
|
+
this.emit('warn', `Unknown operating mode: ${obj.operationMode}`);
|
|
1185
1146
|
break;
|
|
1186
1147
|
};
|
|
1187
1148
|
|
|
1188
|
-
obj.currentOperationMode = !power ? 0 : obj.currentOperationMode;
|
|
1189
|
-
obj.targetOperationMode = !power ? 0 : obj.targetOperationMode;
|
|
1149
|
+
obj.currentOperationMode = !obj.power ? 0 : obj.currentOperationMode;
|
|
1150
|
+
obj.targetOperationMode = !obj.power ? 0 : obj.targetOperationMode;
|
|
1190
1151
|
obj.operationModeSetPropsMinValue = 0
|
|
1191
|
-
obj.operationModeSetPropsMaxValue = modelSupportsAuto && modelSupportsHeat ? 3 : !modelSupportsAuto && modelSupportsHeat ? 2 : modelSupportsAuto && !modelSupportsHeat ? 3 : 2;
|
|
1192
|
-
obj.operationModeSetPropsValidValues = modelSupportsAuto && modelSupportsHeat ? [0, 1, 2, 3] : !modelSupportsAuto && modelSupportsHeat ? [0, 1, 2] : modelSupportsAuto && !modelSupportsHeat ? [0, 2, 3] : [0, 2];
|
|
1152
|
+
obj.operationModeSetPropsMaxValue = obj.modelSupportsAuto && obj.modelSupportsHeat ? 3 : !obj.modelSupportsAuto && obj.modelSupportsHeat ? 2 : obj.modelSupportsAuto && !obj.modelSupportsHeat ? 3 : 2;
|
|
1153
|
+
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];
|
|
1193
1154
|
|
|
1194
1155
|
//update characteristics
|
|
1195
1156
|
if (this.melCloudServiceT) {
|
|
1196
|
-
this.
|
|
1157
|
+
this.melCloudServiceT
|
|
1197
1158
|
.updateCharacteristic(Characteristic.CurrentHeatingCoolingState, obj.currentOperationMode)
|
|
1198
1159
|
.updateCharacteristic(Characteristic.TargetHeatingCoolingState, obj.targetOperationMode)
|
|
1199
|
-
.updateCharacteristic(Characteristic.CurrentTemperature, roomTemperature)
|
|
1200
|
-
.updateCharacteristic(Characteristic.TargetTemperature, setTemperature)
|
|
1160
|
+
.updateCharacteristic(Characteristic.CurrentTemperature, obj.roomTemperature)
|
|
1161
|
+
.updateCharacteristic(Characteristic.TargetTemperature, obj.setTemperature)
|
|
1201
1162
|
.updateCharacteristic(Characteristic.TemperatureDisplayUnits, obj.useFahrenheit);
|
|
1202
1163
|
};
|
|
1203
1164
|
break;
|
|
@@ -1207,25 +1168,25 @@ class DeviceAta extends EventEmitter {
|
|
|
1207
1168
|
|
|
1208
1169
|
if (this.roomTemperatureSensorService) {
|
|
1209
1170
|
this.roomTemperatureSensorService
|
|
1210
|
-
.updateCharacteristic(Characteristic.CurrentTemperature, roomTemperature)
|
|
1171
|
+
.updateCharacteristic(Characteristic.CurrentTemperature, obj.roomTemperature)
|
|
1211
1172
|
};
|
|
1212
1173
|
|
|
1213
1174
|
if (this.outdoorTemperatureSensorService) {
|
|
1214
1175
|
this.outdoorTemperatureSensorService
|
|
1215
|
-
.updateCharacteristic(Characteristic.CurrentTemperature, outdoorTemperature)
|
|
1176
|
+
.updateCharacteristic(Characteristic.CurrentTemperature, obj.outdoorTemperature)
|
|
1216
1177
|
};
|
|
1217
1178
|
|
|
1218
1179
|
//update presets state
|
|
1219
1180
|
if (this.presetsConfigured.length > 0) {
|
|
1220
1181
|
this.presetsConfigured.forEach((preset, i) => {
|
|
1221
|
-
const presetData =
|
|
1182
|
+
const presetData = obj.presets.find(p => p.ID === preset.Id);
|
|
1222
1183
|
|
|
1223
|
-
preset.state = presetData ? (presetData.Power === power
|
|
1224
|
-
&& presetData.SetTemperature === setTemperature
|
|
1225
|
-
&& presetData.OperationMode === operationMode
|
|
1226
|
-
&& presetData.VaneHorizontal === vaneHorizontalDirection
|
|
1227
|
-
&& presetData.VaneVertical === vaneVerticalDirection
|
|
1228
|
-
&& presetData.FanSpeed === fanSpeed) : false;
|
|
1184
|
+
preset.state = presetData ? (presetData.Power === obj.power
|
|
1185
|
+
&& presetData.SetTemperature === obj.setTemperature
|
|
1186
|
+
&& presetData.OperationMode === obj.operationMode
|
|
1187
|
+
&& presetData.VaneHorizontal === obj.vaneHorizontalDirection
|
|
1188
|
+
&& presetData.VaneVertical === obj.vaneVerticalDirection
|
|
1189
|
+
&& presetData.FanSpeed === obj.fanSpeed) : false;
|
|
1229
1190
|
|
|
1230
1191
|
if (this.presetsServices) {
|
|
1231
1192
|
const characteristicType = preset.characteristicType;
|
|
@@ -1241,109 +1202,109 @@ class DeviceAta extends EventEmitter {
|
|
|
1241
1202
|
const mode = button.mode;
|
|
1242
1203
|
switch (mode) {
|
|
1243
1204
|
case 0: //POWER ON,OFF
|
|
1244
|
-
button.state = (power === true);
|
|
1205
|
+
button.state = (obj.power === true);
|
|
1245
1206
|
break;
|
|
1246
1207
|
case 1: //OPERATING MODE HEAT
|
|
1247
|
-
button.state = power ? (operationMode === 1 || operationMode === 9) : false;
|
|
1208
|
+
button.state = obj.power ? (obj.operationMode === 1 || obj.operationMode === 9) : false;
|
|
1248
1209
|
break;
|
|
1249
1210
|
case 2: //OPERATING MODE DRY
|
|
1250
|
-
button.state = power ? (operationMode === 2 || operationMode === 10) : false;
|
|
1211
|
+
button.state = obj.power ? (obj.operationMode === 2 || obj.operationMode === 10) : false;
|
|
1251
1212
|
break
|
|
1252
1213
|
case 3: //OPERATING MODE COOL
|
|
1253
|
-
button.state = power ? (operationMode === 3 || operationMode === 11) : false;
|
|
1214
|
+
button.state = obj.power ? (obj.operationMode === 3 || obj.operationMode === 11) : false;
|
|
1254
1215
|
break;
|
|
1255
1216
|
case 4: //OPERATING MODE FAN
|
|
1256
|
-
button.state = power ? (operationMode === 7) : false;
|
|
1217
|
+
button.state = obj.power ? (obj.operationMode === 7) : false;
|
|
1257
1218
|
break;
|
|
1258
1219
|
case 5: //OPERATING MODE AUTO
|
|
1259
|
-
button.state = power ? (operationMode === 8) : false;
|
|
1220
|
+
button.state = obj.power ? (obj.operationMode === 8) : false;
|
|
1260
1221
|
break;
|
|
1261
1222
|
case 6: //OPERATING MODE PURIFY
|
|
1262
|
-
button.state = power ? (operationMode === 12) : false;
|
|
1223
|
+
button.state = obj.power ? (obj.operationMode === 12) : false;
|
|
1263
1224
|
break;
|
|
1264
1225
|
case 7: //OPERATING MODE DRY CONTROL HIDE
|
|
1265
|
-
button.state = power ? (hideDryModeControl === true) : false;
|
|
1226
|
+
button.state = obj.power ? (obj.hideDryModeControl === true) : false;
|
|
1266
1227
|
break;
|
|
1267
1228
|
case 10: //VANE H SWING MODE AUTO
|
|
1268
|
-
button.state = power ? (vaneHorizontalDirection === 0) : false;
|
|
1229
|
+
button.state = obj.power ? (obj.vaneHorizontalDirection === 0) : false;
|
|
1269
1230
|
break;
|
|
1270
1231
|
case 11: //VANE H SWING MODE 1
|
|
1271
|
-
button.state = power ? (vaneHorizontalDirection === 1) : false;
|
|
1232
|
+
button.state = obj.power ? (obj.vaneHorizontalDirection === 1) : false;
|
|
1272
1233
|
break;
|
|
1273
1234
|
case 12: //VANE H SWING MODE 2
|
|
1274
|
-
button.state = power ? (vaneHorizontalDirection === 2) : false;
|
|
1235
|
+
button.state = obj.power ? (obj.vaneHorizontalDirection === 2) : false;
|
|
1275
1236
|
break;
|
|
1276
1237
|
case 13: //VANE H SWING MODE 3
|
|
1277
|
-
button.state = power ? (vaneHorizontalDirection === 3) : false;
|
|
1238
|
+
button.state = obj.power ? (obj.vaneHorizontalDirection === 3) : false;
|
|
1278
1239
|
break;
|
|
1279
1240
|
case 14: //VANE H SWING MODE 4
|
|
1280
|
-
button.state = power ? (vaneHorizontalDirection === 4) : false;
|
|
1241
|
+
button.state = obj.power ? (obj.vaneHorizontalDirection === 4) : false;
|
|
1281
1242
|
break;
|
|
1282
1243
|
case 15: //VANE H SWING MODE 5
|
|
1283
|
-
button.state = power ? (vaneHorizontalDirection === 5) : false;
|
|
1244
|
+
button.state = obj.power ? (obj.vaneHorizontalDirection === 5) : false;
|
|
1284
1245
|
break;
|
|
1285
1246
|
case 16: //VANE H SWING MODE SPLIT
|
|
1286
|
-
button.state = power ? (vaneHorizontalDirection === 8) : false;
|
|
1247
|
+
button.state = obj.power ? (obj.vaneHorizontalDirection === 8) : false;
|
|
1287
1248
|
break;
|
|
1288
1249
|
case 17: //VANE H SWING MODE SWING
|
|
1289
|
-
button.state = power ? (vaneHorizontalDirection === 12) : false;
|
|
1250
|
+
button.state = obj.power ? (obj.vaneHorizontalDirection === 12) : false;
|
|
1290
1251
|
break;
|
|
1291
1252
|
case 20: //VANE V SWING MODE AUTO
|
|
1292
|
-
button.state = power ? (vaneVerticalDirection === 0) : false;
|
|
1253
|
+
button.state = obj.power ? (obj.vaneVerticalDirection === 0) : false;
|
|
1293
1254
|
break;
|
|
1294
1255
|
case 21: //VANE V SWING MODE 1
|
|
1295
|
-
button.state = power ? (vaneVerticalDirection === 1) : false;
|
|
1256
|
+
button.state = obj.power ? (obj.vaneVerticalDirection === 1) : false;
|
|
1296
1257
|
break;
|
|
1297
1258
|
case 22: //VANE V SWING MODE 2
|
|
1298
|
-
button.state = power ? (vaneVerticalDirection === 2) : false;
|
|
1259
|
+
button.state = obj.power ? (obj.vaneVerticalDirection === 2) : false;
|
|
1299
1260
|
break;
|
|
1300
1261
|
case 23: //VANE V SWING MODE 3
|
|
1301
|
-
button.state = power ? (vaneVerticalDirection === 3) : false;
|
|
1262
|
+
button.state = obj.power ? (obj.vaneVerticalDirection === 3) : false;
|
|
1302
1263
|
break;
|
|
1303
1264
|
case 24: //VANE V SWING MODE 4
|
|
1304
|
-
button.state = power ? (vaneVerticalDirection === 4) : false;
|
|
1265
|
+
button.state = obj.power ? (obj.vaneVerticalDirection === 4) : false;
|
|
1305
1266
|
break;
|
|
1306
1267
|
case 25: //VANE V SWING MODE 5
|
|
1307
|
-
button.state = power ? (vaneVerticalDirection === 5) : false;
|
|
1268
|
+
button.state = obj.power ? (obj.vaneVerticalDirection === 5) : false;
|
|
1308
1269
|
break;
|
|
1309
1270
|
case 26: //VANE V SWING MODE SWING
|
|
1310
|
-
button.state = power ? (vaneVerticalDirection === 7) : false;
|
|
1271
|
+
button.state = obj.power ? (obj.vaneVerticalDirection === 7) : false;
|
|
1311
1272
|
break;
|
|
1312
1273
|
case 27: //VANE H/V CONTROLS HIDE
|
|
1313
|
-
button.state = power ? (hideVaneControls === true) : false;
|
|
1274
|
+
button.state = obj.power ? (obj.hideVaneControls === true) : false;
|
|
1314
1275
|
break;
|
|
1315
1276
|
case 30: //FAN SPEED MODE AUTO
|
|
1316
|
-
button.state = power ? (fanSpeed === 0) : false;
|
|
1277
|
+
button.state = obj.power ? (obj.fanSpeed === 0) : false;
|
|
1317
1278
|
break;
|
|
1318
1279
|
case 31: //FAN SPEED MODE 1
|
|
1319
|
-
button.state = power ? (fanSpeed === 1) : false;
|
|
1280
|
+
button.state = obj.power ? (obj.fanSpeed === 1) : false;
|
|
1320
1281
|
break;
|
|
1321
1282
|
case 32: //FAN SPEED MODE 2
|
|
1322
|
-
button.state = power ? (fanSpeed === 2) : false;
|
|
1283
|
+
button.state = obj.power ? (obj.fanSpeed === 2) : false;
|
|
1323
1284
|
break;
|
|
1324
1285
|
case 33: //FAN SPEED MODE 3
|
|
1325
|
-
button.state = power ? (fanSpeed === 3) : false;
|
|
1286
|
+
button.state = obj.power ? (obj.fanSpeed === 3) : false;
|
|
1326
1287
|
break;
|
|
1327
1288
|
case 34: //FAN SPEED MODE 4
|
|
1328
|
-
button.state = power ? (fanSpeed === 4) : false;
|
|
1289
|
+
button.state = obj.power ? (obj.fanSpeed === 4) : false;
|
|
1329
1290
|
break;
|
|
1330
1291
|
case 35: //FAN SPEED MODE 5
|
|
1331
|
-
button.state = power ? (fanSpeed === 5) : false;
|
|
1292
|
+
button.state = obj.power ? (obj.fanSpeed === 5) : false;
|
|
1332
1293
|
break;
|
|
1333
1294
|
case 36: //FAN SPEED MODE 6
|
|
1334
|
-
button.state = power ? (fanSpeed === 6) : false;
|
|
1295
|
+
button.state = obj.power ? (obj.fanSpeed === 6) : false;
|
|
1335
1296
|
break;
|
|
1336
1297
|
case 37: //PHYSICAL LOCK CONTROLS ALL
|
|
1337
1298
|
button.state = (obj.lockPhysicalControl === 1);
|
|
1338
1299
|
break;
|
|
1339
1300
|
case 38: //PHYSICAL LOCK CONTROLS POWER
|
|
1340
|
-
button.state = (prohibitPower === true);
|
|
1301
|
+
button.state = (obj.prohibitPower === true);
|
|
1341
1302
|
break;
|
|
1342
1303
|
case 39: //PHYSICAL LOCK CONTROLS MODE
|
|
1343
|
-
button.state = (prohibitOperationMode === true);
|
|
1304
|
+
button.state = (obj.prohibitOperationMode === true);
|
|
1344
1305
|
break;
|
|
1345
1306
|
case 40: //PHYSICAL LOCK CONTROLS TEMP
|
|
1346
|
-
button.state = (prohibitSetTemperature === true);
|
|
1307
|
+
button.state = (obj.prohibitSetTemperature === true);
|
|
1347
1308
|
break;
|
|
1348
1309
|
default: //Unknown button
|
|
1349
1310
|
this.emit('message', `Unknown button mode: ${mode} detected`);
|
|
@@ -1361,17 +1322,17 @@ class DeviceAta extends EventEmitter {
|
|
|
1361
1322
|
|
|
1362
1323
|
//log current state
|
|
1363
1324
|
if (!this.disableLogInfo) {
|
|
1364
|
-
this.emit('message', `Power: ${power ? 'ON' : 'OFF'}`);
|
|
1365
|
-
this.emit('message', `Target operation mode: ${AirConditioner.DriveMode[operationMode]}`);
|
|
1325
|
+
this.emit('message', `Power: ${obj.power ? 'ON' : 'OFF'}`);
|
|
1326
|
+
this.emit('message', `Target operation mode: ${AirConditioner.DriveMode[obj.operationMode]}`);
|
|
1366
1327
|
this.emit('message', `Current operation mode: ${this.displayMode === 1 ? AirConditioner.CurrentOperationModeHeatherCooler[obj.currentOperationMode] : AirConditioner.CurrentOperationModeThermostat[obj.currentOperationMode]}`);
|
|
1367
|
-
this.emit('message', `Target temperature: ${setTemperature}${obj.temperatureUnit}`);
|
|
1368
|
-
this.emit('message', `Current temperature: ${roomTemperature}${obj.temperatureUnit}`);
|
|
1369
|
-
const info = hasOutdoorTemperature && outdoorTemperature !== null ? this.emit('message', `Outdoor temperature: ${outdoorTemperature}${obj.temperatureUnit}`) : false;
|
|
1370
|
-
const info3 = modelSupportsFanSpeed ? this.emit('message', `Target fan speed: ${AirConditioner.FanSpeed[fanSpeed]}`) : false;
|
|
1371
|
-
const info4 = modelSupportsFanSpeed ? this.emit('message', `Current fan speed: ${AirConditioner.FanSpeed[actualFanSpeed]}`) : false;
|
|
1372
|
-
const info5 = vaneHorizontalDirection !== null ? this.emit('message', `Vane horizontal: ${AirConditioner.HorizontalVane[vaneHorizontalDirection] ?? vaneHorizontalDirection}`) : false;
|
|
1373
|
-
const info6 = vaneVerticalDirection !== null ? this.emit('message', `Vane vertical: ${AirConditioner.VerticalVane[vaneVerticalDirection] ?? vaneVerticalDirection}`) : false;
|
|
1374
|
-
const info7 = swingFunction ? this.emit('message', `Air direction: ${AirConditioner.AirDirection[obj.swingMode]}`) : false;
|
|
1328
|
+
this.emit('message', `Target temperature: ${obj.setTemperature}${obj.temperatureUnit}`);
|
|
1329
|
+
this.emit('message', `Current temperature: ${obj.roomTemperature}${obj.temperatureUnit}`);
|
|
1330
|
+
const info = obj.hasOutdoorTemperature && obj.outdoorTemperature !== null ? this.emit('message', `Outdoor temperature: ${obj.outdoorTemperature}${obj.temperatureUnit}`) : false;
|
|
1331
|
+
const info3 = obj.modelSupportsFanSpeed ? this.emit('message', `Target fan speed: ${AirConditioner.FanSpeed[obj.fanSpeed]}`) : false;
|
|
1332
|
+
const info4 = obj.modelSupportsFanSpeed ? this.emit('message', `Current fan speed: ${AirConditioner.FanSpeed[obj.actualFanSpeed]}`) : false;
|
|
1333
|
+
const info5 = obj.vaneHorizontalDirection !== null ? this.emit('message', `Vane horizontal: ${AirConditioner.HorizontalVane[obj.vaneHorizontalDirection] ?? obj.vaneHorizontalDirection}`) : false;
|
|
1334
|
+
const info6 = obj.vaneVerticalDirection !== null ? this.emit('message', `Vane vertical: ${AirConditioner.VerticalVane[obj.vaneVerticalDirection] ?? obj.vaneVerticalDirection}`) : false;
|
|
1335
|
+
const info7 = obj.swingFunction ? this.emit('message', `Air direction: ${AirConditioner.AirDirection[obj.swingMode]}`) : false;
|
|
1375
1336
|
this.emit('message', `Temperature display unit: ${obj.temperatureUnit}`);
|
|
1376
1337
|
this.emit('message', `Lock physical controls: ${obj.lockPhysicalControl ? 'LOCKED' : 'UNLOCKED'}`);
|
|
1377
1338
|
};
|