homebridge-melcloud-control 3.8.3-beta.6 → 3.8.3-beta.8
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 +137 -180
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.8",
|
|
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
|
-
temperatureUnit: this.
|
|
1054
|
-
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,
|
|
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,67 +1053,64 @@ 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
|
};
|
|
1133
1094
|
|
|
1134
|
-
//add obj to mielHvac
|
|
1135
|
-
this.mielHvac = obj;
|
|
1136
|
-
|
|
1137
1095
|
//update characteristics
|
|
1138
1096
|
if (this.melCloudService) {
|
|
1139
1097
|
this.melCloudService
|
|
1140
|
-
.updateCharacteristic(Characteristic.Active, power
|
|
1098
|
+
.updateCharacteristic(Characteristic.Active, obj.power)
|
|
1141
1099
|
.updateCharacteristic(Characteristic.CurrentHeaterCoolerState, obj.currentOperationMode)
|
|
1142
1100
|
.updateCharacteristic(Characteristic.TargetHeaterCoolerState, obj.targetOperationMode)
|
|
1143
|
-
.updateCharacteristic(Characteristic.CurrentTemperature, roomTemperature)
|
|
1101
|
+
.updateCharacteristic(Characteristic.CurrentTemperature, obj.roomTemperature)
|
|
1144
1102
|
.updateCharacteristic(Characteristic.LockPhysicalControls, obj.lockPhysicalControl)
|
|
1145
1103
|
.updateCharacteristic(Characteristic.TemperatureDisplayUnits, obj.useFahrenheit)
|
|
1146
|
-
.updateCharacteristic(Characteristic.CoolingThresholdTemperature, defaultCoolingSetTemperature);
|
|
1147
|
-
const updateDefHeat = modelSupportsHeat ? this.melCloudService.updateCharacteristic(Characteristic.HeatingThresholdTemperature, defaultHeatingSetTemperature) : false;
|
|
1148
|
-
const updateRS = modelSupportsFanSpeed ? this.melCloudService.updateCharacteristic(Characteristic.RotationSpeed, obj.
|
|
1149
|
-
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.currentFanSpeed) : false;
|
|
1107
|
+
const updateSM = obj.swingFunction ? this.melCloudService.updateCharacteristic(Characteristic.SwingMode, obj.swingMode) : false;
|
|
1150
1108
|
};
|
|
1151
1109
|
break;
|
|
1152
1110
|
case 2: //Thermostat
|
|
1153
|
-
switch (operationMode) {
|
|
1111
|
+
switch (obj.operationMode) {
|
|
1154
1112
|
case 1: //HEAT
|
|
1155
|
-
obj.currentOperationMode = roomTemperature > setTemperature ? 0 : 1; //OFF, HEATING, COOLING
|
|
1113
|
+
obj.currentOperationMode = obj.roomTemperature > obj.setTemperature ? 0 : 1; //OFF, HEATING, COOLING
|
|
1156
1114
|
obj.targetOperationMode = 1; //OFF, HEAT, COOL, AUTO
|
|
1157
1115
|
break;
|
|
1158
1116
|
case 2: //DRY
|
|
@@ -1160,7 +1118,7 @@ class DeviceAta extends EventEmitter {
|
|
|
1160
1118
|
obj.targetOperationMode = this.autoDryFanMode === 2 ? 3 : this.heatDryFanMode === 2 ? 1 : this.coolDryFanMode === 2 ? 2 : obj.targetOperationMode ?? 0;
|
|
1161
1119
|
break;
|
|
1162
1120
|
case 3: //COOL
|
|
1163
|
-
obj.currentOperationMode = roomTemperature < setTemperature ? 0 : 2;
|
|
1121
|
+
obj.currentOperationMode = obj.roomTemperature < obj.setTemperature ? 0 : 2;
|
|
1164
1122
|
obj.targetOperationMode = 2;
|
|
1165
1123
|
break;
|
|
1166
1124
|
case 7: //FAN
|
|
@@ -1168,11 +1126,11 @@ class DeviceAta extends EventEmitter {
|
|
|
1168
1126
|
obj.targetOperationMode = this.autoDryFanMode === 3 ? 3 : this.heatDryFanMode === 3 ? 1 : this.coolDryFanMode === 3 ? 2 : obj.targetOperationMode ?? 0;
|
|
1169
1127
|
break;
|
|
1170
1128
|
case 8: //AUTO
|
|
1171
|
-
obj.currentOperationMode = roomTemperature < setTemperature ? 1 : roomTemperature > setTemperature ? 2 : 0;
|
|
1129
|
+
obj.currentOperationMode = obj.roomTemperature < obj.setTemperature ? 1 : obj.roomTemperature > obj.setTemperature ? 2 : 0;
|
|
1172
1130
|
obj.targetOperationMode = 3;
|
|
1173
1131
|
break;
|
|
1174
1132
|
case 9: //ISEE HEAT
|
|
1175
|
-
obj.currentOperationMode = roomTemperature > setTemperature ? 0 : 1;
|
|
1133
|
+
obj.currentOperationMode = obj.roomTemperature > obj.setTemperature ? 0 : 1;
|
|
1176
1134
|
obj.targetOperationMode = 1;
|
|
1177
1135
|
break;
|
|
1178
1136
|
case 10: //ISEE DRY
|
|
@@ -1180,56 +1138,55 @@ class DeviceAta extends EventEmitter {
|
|
|
1180
1138
|
obj.targetOperationMode = this.autoDryFanMode === 2 ? 3 : this.heatDryFanMode === 2 ? 1 : this.coolDryFanMode === 2 ? 2 : obj.targetOperationMode ?? 0;
|
|
1181
1139
|
break;
|
|
1182
1140
|
case 11: //ISEE COOL;
|
|
1183
|
-
obj.currentOperationMode = roomTemperature < setTemperature ? 0 : 2;
|
|
1141
|
+
obj.currentOperationMode = obj.roomTemperature < obj.setTemperature ? 0 : 2;
|
|
1184
1142
|
obj.targetOperationMode = 2;
|
|
1185
1143
|
break;
|
|
1186
1144
|
default:
|
|
1187
|
-
this.emit('warn', `Unknown operating mode: ${operationMode}`);
|
|
1145
|
+
this.emit('warn', `Unknown operating mode: ${obj.operationMode}`);
|
|
1188
1146
|
break;
|
|
1189
1147
|
};
|
|
1190
1148
|
|
|
1191
|
-
obj.currentOperationMode = !power ? 0 : obj.currentOperationMode;
|
|
1192
|
-
obj.targetOperationMode = !power ? 0 : obj.targetOperationMode;
|
|
1149
|
+
obj.currentOperationMode = !obj.power ? 0 : obj.currentOperationMode;
|
|
1150
|
+
obj.targetOperationMode = !obj.power ? 0 : obj.targetOperationMode;
|
|
1193
1151
|
obj.operationModeSetPropsMinValue = 0
|
|
1194
|
-
obj.operationModeSetPropsMaxValue = modelSupportsAuto && modelSupportsHeat ? 3 : !modelSupportsAuto && modelSupportsHeat ? 2 : modelSupportsAuto && !modelSupportsHeat ? 3 : 2;
|
|
1195
|
-
obj.operationModeSetPropsValidValues = modelSupportsAuto && modelSupportsHeat ? [0, 1, 2, 3] : !modelSupportsAuto && modelSupportsHeat ? [0, 1, 2] : modelSupportsAuto && !modelSupportsHeat ? [0, 2, 3] : [0, 2];
|
|
1196
|
-
|
|
1197
|
-
//add obj to mielHvac
|
|
1198
|
-
this.mielHvac = obj;
|
|
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];
|
|
1199
1154
|
|
|
1200
1155
|
//update characteristics
|
|
1201
1156
|
if (this.melCloudServiceT) {
|
|
1202
1157
|
this.melCloudServiceT
|
|
1203
1158
|
.updateCharacteristic(Characteristic.CurrentHeatingCoolingState, obj.currentOperationMode)
|
|
1204
1159
|
.updateCharacteristic(Characteristic.TargetHeatingCoolingState, obj.targetOperationMode)
|
|
1205
|
-
.updateCharacteristic(Characteristic.CurrentTemperature, roomTemperature)
|
|
1206
|
-
.updateCharacteristic(Characteristic.TargetTemperature, setTemperature)
|
|
1160
|
+
.updateCharacteristic(Characteristic.CurrentTemperature, obj.roomTemperature)
|
|
1161
|
+
.updateCharacteristic(Characteristic.TargetTemperature, obj.setTemperature)
|
|
1207
1162
|
.updateCharacteristic(Characteristic.TemperatureDisplayUnits, obj.useFahrenheit);
|
|
1208
1163
|
};
|
|
1209
1164
|
break;
|
|
1210
1165
|
};
|
|
1166
|
+
//add obj to mielHvac
|
|
1167
|
+
this.mielHvac = obj;
|
|
1211
1168
|
|
|
1212
1169
|
if (this.roomTemperatureSensorService) {
|
|
1213
1170
|
this.roomTemperatureSensorService
|
|
1214
|
-
.updateCharacteristic(Characteristic.CurrentTemperature, roomTemperature)
|
|
1171
|
+
.updateCharacteristic(Characteristic.CurrentTemperature, obj.roomTemperature)
|
|
1215
1172
|
};
|
|
1216
1173
|
|
|
1217
1174
|
if (this.outdoorTemperatureSensorService) {
|
|
1218
1175
|
this.outdoorTemperatureSensorService
|
|
1219
|
-
.updateCharacteristic(Characteristic.CurrentTemperature, outdoorTemperature)
|
|
1176
|
+
.updateCharacteristic(Characteristic.CurrentTemperature, obj.outdoorTemperature)
|
|
1220
1177
|
};
|
|
1221
1178
|
|
|
1222
1179
|
//update presets state
|
|
1223
1180
|
if (this.presetsConfigured.length > 0) {
|
|
1224
1181
|
this.presetsConfigured.forEach((preset, i) => {
|
|
1225
|
-
const presetData =
|
|
1182
|
+
const presetData = obj.presets.find(p => p.ID === preset.Id);
|
|
1226
1183
|
|
|
1227
|
-
preset.state = presetData ? (presetData.Power === power
|
|
1228
|
-
&& presetData.SetTemperature === setTemperature
|
|
1229
|
-
&& presetData.OperationMode === operationMode
|
|
1230
|
-
&& presetData.VaneHorizontal === vaneHorizontalDirection
|
|
1231
|
-
&& presetData.VaneVertical === vaneVerticalDirection
|
|
1232
|
-
&& 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;
|
|
1233
1190
|
|
|
1234
1191
|
if (this.presetsServices) {
|
|
1235
1192
|
const characteristicType = preset.characteristicType;
|
|
@@ -1245,109 +1202,109 @@ class DeviceAta extends EventEmitter {
|
|
|
1245
1202
|
const mode = button.mode;
|
|
1246
1203
|
switch (mode) {
|
|
1247
1204
|
case 0: //POWER ON,OFF
|
|
1248
|
-
button.state = (power === true);
|
|
1205
|
+
button.state = (obj.power === true);
|
|
1249
1206
|
break;
|
|
1250
1207
|
case 1: //OPERATING MODE HEAT
|
|
1251
|
-
button.state = power ? (operationMode === 1 || operationMode === 9) : false;
|
|
1208
|
+
button.state = obj.power ? (obj.operationMode === 1 || obj.operationMode === 9) : false;
|
|
1252
1209
|
break;
|
|
1253
1210
|
case 2: //OPERATING MODE DRY
|
|
1254
|
-
button.state = power ? (operationMode === 2 || operationMode === 10) : false;
|
|
1211
|
+
button.state = obj.power ? (obj.operationMode === 2 || obj.operationMode === 10) : false;
|
|
1255
1212
|
break
|
|
1256
1213
|
case 3: //OPERATING MODE COOL
|
|
1257
|
-
button.state = power ? (operationMode === 3 || operationMode === 11) : false;
|
|
1214
|
+
button.state = obj.power ? (obj.operationMode === 3 || obj.operationMode === 11) : false;
|
|
1258
1215
|
break;
|
|
1259
1216
|
case 4: //OPERATING MODE FAN
|
|
1260
|
-
button.state = power ? (operationMode === 7) : false;
|
|
1217
|
+
button.state = obj.power ? (obj.operationMode === 7) : false;
|
|
1261
1218
|
break;
|
|
1262
1219
|
case 5: //OPERATING MODE AUTO
|
|
1263
|
-
button.state = power ? (operationMode === 8) : false;
|
|
1220
|
+
button.state = obj.power ? (obj.operationMode === 8) : false;
|
|
1264
1221
|
break;
|
|
1265
1222
|
case 6: //OPERATING MODE PURIFY
|
|
1266
|
-
button.state = power ? (operationMode === 12) : false;
|
|
1223
|
+
button.state = obj.power ? (obj.operationMode === 12) : false;
|
|
1267
1224
|
break;
|
|
1268
1225
|
case 7: //OPERATING MODE DRY CONTROL HIDE
|
|
1269
|
-
button.state = power ? (hideDryModeControl === true) : false;
|
|
1226
|
+
button.state = obj.power ? (obj.hideDryModeControl === true) : false;
|
|
1270
1227
|
break;
|
|
1271
1228
|
case 10: //VANE H SWING MODE AUTO
|
|
1272
|
-
button.state = power ? (vaneHorizontalDirection === 0) : false;
|
|
1229
|
+
button.state = obj.power ? (obj.vaneHorizontalDirection === 0) : false;
|
|
1273
1230
|
break;
|
|
1274
1231
|
case 11: //VANE H SWING MODE 1
|
|
1275
|
-
button.state = power ? (vaneHorizontalDirection === 1) : false;
|
|
1232
|
+
button.state = obj.power ? (obj.vaneHorizontalDirection === 1) : false;
|
|
1276
1233
|
break;
|
|
1277
1234
|
case 12: //VANE H SWING MODE 2
|
|
1278
|
-
button.state = power ? (vaneHorizontalDirection === 2) : false;
|
|
1235
|
+
button.state = obj.power ? (obj.vaneHorizontalDirection === 2) : false;
|
|
1279
1236
|
break;
|
|
1280
1237
|
case 13: //VANE H SWING MODE 3
|
|
1281
|
-
button.state = power ? (vaneHorizontalDirection === 3) : false;
|
|
1238
|
+
button.state = obj.power ? (obj.vaneHorizontalDirection === 3) : false;
|
|
1282
1239
|
break;
|
|
1283
1240
|
case 14: //VANE H SWING MODE 4
|
|
1284
|
-
button.state = power ? (vaneHorizontalDirection === 4) : false;
|
|
1241
|
+
button.state = obj.power ? (obj.vaneHorizontalDirection === 4) : false;
|
|
1285
1242
|
break;
|
|
1286
1243
|
case 15: //VANE H SWING MODE 5
|
|
1287
|
-
button.state = power ? (vaneHorizontalDirection === 5) : false;
|
|
1244
|
+
button.state = obj.power ? (obj.vaneHorizontalDirection === 5) : false;
|
|
1288
1245
|
break;
|
|
1289
1246
|
case 16: //VANE H SWING MODE SPLIT
|
|
1290
|
-
button.state = power ? (vaneHorizontalDirection === 8) : false;
|
|
1247
|
+
button.state = obj.power ? (obj.vaneHorizontalDirection === 8) : false;
|
|
1291
1248
|
break;
|
|
1292
1249
|
case 17: //VANE H SWING MODE SWING
|
|
1293
|
-
button.state = power ? (vaneHorizontalDirection === 12) : false;
|
|
1250
|
+
button.state = obj.power ? (obj.vaneHorizontalDirection === 12) : false;
|
|
1294
1251
|
break;
|
|
1295
1252
|
case 20: //VANE V SWING MODE AUTO
|
|
1296
|
-
button.state = power ? (vaneVerticalDirection === 0) : false;
|
|
1253
|
+
button.state = obj.power ? (obj.vaneVerticalDirection === 0) : false;
|
|
1297
1254
|
break;
|
|
1298
1255
|
case 21: //VANE V SWING MODE 1
|
|
1299
|
-
button.state = power ? (vaneVerticalDirection === 1) : false;
|
|
1256
|
+
button.state = obj.power ? (obj.vaneVerticalDirection === 1) : false;
|
|
1300
1257
|
break;
|
|
1301
1258
|
case 22: //VANE V SWING MODE 2
|
|
1302
|
-
button.state = power ? (vaneVerticalDirection === 2) : false;
|
|
1259
|
+
button.state = obj.power ? (obj.vaneVerticalDirection === 2) : false;
|
|
1303
1260
|
break;
|
|
1304
1261
|
case 23: //VANE V SWING MODE 3
|
|
1305
|
-
button.state = power ? (vaneVerticalDirection === 3) : false;
|
|
1262
|
+
button.state = obj.power ? (obj.vaneVerticalDirection === 3) : false;
|
|
1306
1263
|
break;
|
|
1307
1264
|
case 24: //VANE V SWING MODE 4
|
|
1308
|
-
button.state = power ? (vaneVerticalDirection === 4) : false;
|
|
1265
|
+
button.state = obj.power ? (obj.vaneVerticalDirection === 4) : false;
|
|
1309
1266
|
break;
|
|
1310
1267
|
case 25: //VANE V SWING MODE 5
|
|
1311
|
-
button.state = power ? (vaneVerticalDirection === 5) : false;
|
|
1268
|
+
button.state = obj.power ? (obj.vaneVerticalDirection === 5) : false;
|
|
1312
1269
|
break;
|
|
1313
1270
|
case 26: //VANE V SWING MODE SWING
|
|
1314
|
-
button.state = power ? (vaneVerticalDirection === 7) : false;
|
|
1271
|
+
button.state = obj.power ? (obj.vaneVerticalDirection === 7) : false;
|
|
1315
1272
|
break;
|
|
1316
1273
|
case 27: //VANE H/V CONTROLS HIDE
|
|
1317
|
-
button.state = power ? (hideVaneControls === true) : false;
|
|
1274
|
+
button.state = obj.power ? (obj.hideVaneControls === true) : false;
|
|
1318
1275
|
break;
|
|
1319
1276
|
case 30: //FAN SPEED MODE AUTO
|
|
1320
|
-
button.state = power ? (fanSpeed === 0) : false;
|
|
1277
|
+
button.state = obj.power ? (obj.fanSpeed === 0) : false;
|
|
1321
1278
|
break;
|
|
1322
1279
|
case 31: //FAN SPEED MODE 1
|
|
1323
|
-
button.state = power ? (fanSpeed === 1) : false;
|
|
1280
|
+
button.state = obj.power ? (obj.fanSpeed === 1) : false;
|
|
1324
1281
|
break;
|
|
1325
1282
|
case 32: //FAN SPEED MODE 2
|
|
1326
|
-
button.state = power ? (fanSpeed === 2) : false;
|
|
1283
|
+
button.state = obj.power ? (obj.fanSpeed === 2) : false;
|
|
1327
1284
|
break;
|
|
1328
1285
|
case 33: //FAN SPEED MODE 3
|
|
1329
|
-
button.state = power ? (fanSpeed === 3) : false;
|
|
1286
|
+
button.state = obj.power ? (obj.fanSpeed === 3) : false;
|
|
1330
1287
|
break;
|
|
1331
1288
|
case 34: //FAN SPEED MODE 4
|
|
1332
|
-
button.state = power ? (fanSpeed === 4) : false;
|
|
1289
|
+
button.state = obj.power ? (obj.fanSpeed === 4) : false;
|
|
1333
1290
|
break;
|
|
1334
1291
|
case 35: //FAN SPEED MODE 5
|
|
1335
|
-
button.state = power ? (fanSpeed === 5) : false;
|
|
1292
|
+
button.state = obj.power ? (obj.fanSpeed === 5) : false;
|
|
1336
1293
|
break;
|
|
1337
1294
|
case 36: //FAN SPEED MODE 6
|
|
1338
|
-
button.state = power ? (fanSpeed === 6) : false;
|
|
1295
|
+
button.state = obj.power ? (obj.fanSpeed === 6) : false;
|
|
1339
1296
|
break;
|
|
1340
1297
|
case 37: //PHYSICAL LOCK CONTROLS ALL
|
|
1341
1298
|
button.state = (obj.lockPhysicalControl === 1);
|
|
1342
1299
|
break;
|
|
1343
1300
|
case 38: //PHYSICAL LOCK CONTROLS POWER
|
|
1344
|
-
button.state = (prohibitPower === true);
|
|
1301
|
+
button.state = (obj.prohibitPower === true);
|
|
1345
1302
|
break;
|
|
1346
1303
|
case 39: //PHYSICAL LOCK CONTROLS MODE
|
|
1347
|
-
button.state = (prohibitOperationMode === true);
|
|
1304
|
+
button.state = (obj.prohibitOperationMode === true);
|
|
1348
1305
|
break;
|
|
1349
1306
|
case 40: //PHYSICAL LOCK CONTROLS TEMP
|
|
1350
|
-
button.state = (prohibitSetTemperature === true);
|
|
1307
|
+
button.state = (obj.prohibitSetTemperature === true);
|
|
1351
1308
|
break;
|
|
1352
1309
|
default: //Unknown button
|
|
1353
1310
|
this.emit('message', `Unknown button mode: ${mode} detected`);
|
|
@@ -1365,17 +1322,17 @@ class DeviceAta extends EventEmitter {
|
|
|
1365
1322
|
|
|
1366
1323
|
//log current state
|
|
1367
1324
|
if (!this.disableLogInfo) {
|
|
1368
|
-
this.emit('message', `Power: ${power ? 'ON' : 'OFF'}`);
|
|
1369
|
-
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]}`);
|
|
1370
1327
|
this.emit('message', `Current operation mode: ${this.displayMode === 1 ? AirConditioner.CurrentOperationModeHeatherCooler[obj.currentOperationMode] : AirConditioner.CurrentOperationModeThermostat[obj.currentOperationMode]}`);
|
|
1371
|
-
this.emit('message', `Target temperature: ${setTemperature}${obj.temperatureUnit}`);
|
|
1372
|
-
this.emit('message', `Current temperature: ${roomTemperature}${obj.temperatureUnit}`);
|
|
1373
|
-
const info = hasOutdoorTemperature && outdoorTemperature !== null ? this.emit('message', `Outdoor temperature: ${outdoorTemperature}${obj.temperatureUnit}`) : false;
|
|
1374
|
-
const info3 = modelSupportsFanSpeed ? this.emit('message', `Target fan speed: ${AirConditioner.FanSpeed[fanSpeed]}`) : false;
|
|
1375
|
-
const info4 = modelSupportsFanSpeed ? this.emit('message', `Current fan speed: ${AirConditioner.FanSpeed[actualFanSpeed]}`) : false;
|
|
1376
|
-
const info5 = vaneHorizontalDirection !== null ? this.emit('message', `Vane horizontal: ${AirConditioner.HorizontalVane[vaneHorizontalDirection] ?? vaneHorizontalDirection}`) : false;
|
|
1377
|
-
const info6 = vaneVerticalDirection !== null ? this.emit('message', `Vane vertical: ${AirConditioner.VerticalVane[vaneVerticalDirection] ?? vaneVerticalDirection}`) : false;
|
|
1378
|
-
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;
|
|
1379
1336
|
this.emit('message', `Temperature display unit: ${obj.temperatureUnit}`);
|
|
1380
1337
|
this.emit('message', `Lock physical controls: ${obj.lockPhysicalControl ? 'LOCKED' : 'UNLOCKED'}`);
|
|
1381
1338
|
};
|