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 CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "displayName": "MELCloud Control",
3
3
  "name": "homebridge-melcloud-control",
4
- "version": "3.8.3-beta.1",
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
- this.melCloudService = new Service.HeaterCooler(serviceName, `HeaterCooler ${deviceId}`);
301
- this.melCloudService.setPrimaryService(true);
302
- this.melCloudService.getCharacteristic(Characteristic.Active)
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
- this.melCloudService.getCharacteristic(Characteristic.CurrentHeaterCoolerState)
317
+ melCloudService.getCharacteristic(Characteristic.CurrentHeaterCoolerState)
318
318
  .onGet(async () => {
319
319
  const value = mielHvac.currentOperationMode;
320
320
  return value;
321
321
  });
322
- this.melCloudService.getCharacteristic(Characteristic.TargetHeaterCoolerState)
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
- this.melCloudService.getCharacteristic(Characteristic.CurrentTemperature)
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
- this.melCloudService.getCharacteristic(Characteristic.RotationSpeed)
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.fanSpeed; //AUTO, 1, 2, 3, 4, 5, 6, OFF
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
- this.melCloudService.getCharacteristic(Characteristic.SwingMode)
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
- this.melCloudService.getCharacteristic(Characteristic.CoolingThresholdTemperature)
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
- this.melCloudService.getCharacteristic(Characteristic.HeatingThresholdTemperature)
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
- this.melCloudService.getCharacteristic(Characteristic.LockPhysicalControls)
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
- this.melCloudService.getCharacteristic(Characteristic.TemperatureDisplayUnits)
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
- accessory.addService(this.melCloudService);
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
- this.melCloudService = new Service.Thermostat(serviceName, `Thermostat ${deviceId}`);
502
- this.melCloudService.setPrimaryService(true);
503
- this.melCloudService.getCharacteristic(Characteristic.CurrentHeatingCoolingState)
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
- this.melCloudService.getCharacteristic(Characteristic.TargetHeatingCoolingState)
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
- this.melCloudService.getCharacteristic(Characteristic.CurrentTemperature)
549
+ melCloudServiceT.getCharacteristic(Characteristic.CurrentTemperature)
550
550
  .onGet(async () => {
551
551
  const value = mielHvac.roomTemperature;
552
552
  return value;
553
553
  });
554
- this.melCloudService.getCharacteristic(Characteristic.TargetTemperature)
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
- this.melCloudService.getCharacteristic(Characteristic.TemperatureDisplayUnits)
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
- accessory.addService(this.melCloudService);
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('externalIntegrations', (deviceData) => {
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: presetsOnServer,
1024
- hasAutomaticFanSpeed: hasAutomaticFanSpeed,
1025
- airDirectionFunction: airDirectionFunction,
1026
- swingFunction: swingFunction,
1027
- hasOutdoorTemperature: hasOutdoorTemperature,
1028
- numberOfFanSpeeds: numberOfFanSpeeds,
1029
- modelSupportsFanSpeed: modelSupportsFanSpeed,
1030
- modelSupportsAuto: modelSupportsAuto,
1031
- modelSupportsHeat: modelSupportsHeat,
1032
- modelSupportsDry: modelSupportsDry,
1033
- modelSupportsCool: modelSupportsCool,
1034
- minTempHeat: minTempHeat,
1035
- maxTempHeat: maxTempHeat,
1036
- minTempCoolDry: minTempCoolDry,
1037
- maxTempCoolDry: maxTempCoolDry,
1038
- power: power ? 1 : 0,
1039
- inStandbyMode: inStandbyMode,
1040
- operationMode: 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: roomTemperature,
1044
- outdoorTemperature: outdoorTemperature,
1045
- setTemperature: setTemperature,
1046
- defaultHeatingSetTemperature: defaultHeatingSetTemperature,
1047
- defaultCoolingSetTemperature: defaultCoolingSetTemperature,
1048
- fanSpeed: 0,
1049
- actualFanSpeed: actualFanSpeed,
1050
- automaticFanSpeed: automaticFanSpeed,
1051
- vaneVerticalSwing: vaneVerticalSwing,
1052
- vaneHorizontalSwing: vaneHorizontalSwing,
1053
- swingMode: swingFunction && vaneHorizontalDirection === 12 && vaneVerticalDirection === 7 ? 1 : 0,
1054
- lockPhysicalControl: prohibitSetTemperature && prohibitOperationMode && prohibitPower ? 1 : 0,
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.useFahrenheit,
1057
- temperatureIncrement: 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.fanSpeed = hasAutomaticFanSpeed ? [3, 1, 2][fanSpeed] : [0, 1, 2][fanSpeed];
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.fanSpeed = hasAutomaticFanSpeed ? [4, 1, 2, 3][fanSpeed] : [0, 1, 2, 3][fanSpeed];
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.fanSpeed = hasAutomaticFanSpeed ? [5, 1, 2, 3, 4][fanSpeed] : [0, 1, 2, 3, 4][fanSpeed];
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.fanSpeed = hasAutomaticFanSpeed ? [6, 1, 2, 3, 4, 5][fanSpeed] : [0, 1, 2, 3, 4, 5][fanSpeed];
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.fanSpeed = hasAutomaticFanSpeed ? [7, 1, 2, 3, 4, 5, 6][fanSpeed] : [0, 1, 2, 3, 4, 5, 6][fanSpeed];
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 ? 1 : 0)
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.fanSpeed) : false;
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.melCloudService) {
1206
- this.emit('warn', `Update characteristics: ${power ? 1 : 0}, ${obj.currentOperationMode}, ${obj.targetOperationMode}, ${roomTemperature}, ${obj.useFahrenheit}`);
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 = presetsOnServer.find(p => p.ID === preset.Id);
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('message', `Power: ${power ? 'ON' : 'OFF'}`);
1374
- this.emit('message', `Target operation mode: ${AirConditioner.DriveMode[operationMode]}`);
1375
- this.emit('message', `Current operation mode: ${this.displayMode === 1 ? AirConditioner.CurrentOperationModeHeatherCooler[obj.currentOperationMode] : AirConditioner.CurrentOperationModeThermostat[obj.currentOperationMode]}`);
1376
- this.emit('message', `Target temperature: ${setTemperature}${obj.temperatureUnit}`);
1377
- this.emit('message', `Current temperature: ${roomTemperature}${obj.temperatureUnit}`);
1378
- const info = hasOutdoorTemperature && outdoorTemperature !== null ? this.emit('message', `Outdoor temperature: ${outdoorTemperature}${obj.temperatureUnit}`) : false;
1379
- const info3 = modelSupportsFanSpeed ? this.emit('message', `Target fan speed: ${AirConditioner.FanSpeed[fanSpeed]}`) : false;
1380
- const info4 = modelSupportsFanSpeed ? this.emit('message', `Current fan speed: ${AirConditioner.FanSpeed[actualFanSpeed]}`) : false;
1381
- const info5 = vaneHorizontalDirection !== null ? this.emit('message', `Vane horizontal: ${AirConditioner.HorizontalVane[vaneHorizontalDirection] ?? vaneHorizontalDirection}`) : false;
1382
- const info6 = vaneVerticalDirection !== null ? this.emit('message', `Vane vertical: ${AirConditioner.VerticalVane[vaneVerticalDirection] ?? vaneVerticalDirection}`) : false;
1383
- const info7 = swingFunction ? this.emit('message', `Air direction: ${AirConditioner.AirDirection[obj.swingMode]}`) : false;
1384
- this.emit('message', `Temperature display unit: ${obj.temperatureUnit}`);
1385
- this.emit('message', `Lock physical controls: ${obj.lockPhysicalControl ? 'LOCKED' : 'UNLOCKED'}`);
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('message', `${heatPumpName}, Outdoor temperature: ${outdoorTemperature}${obj.temperatureUnit}`) : false;
1847
- const info0 = flowTemperatureHeatPump !== null ? this.emit('message', `${heatPumpName}, Flow temperature: ${flowTemperatureHeatPump}${obj.temperatureUnit}`) : false;
1848
- const info1 = returnTemperatureHeatPump !== null ? this.emit('message', `${heatPumpName}, Return temperature: ${returnTemperatureHeatPump}${obj.temperatureUnit}`) : false;
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('message', `${zone1Name}, Room temperature: ${roomTemperatureZone1}${obj.temperatureUnit}`) : false;
1852
- const info3 = flowTemperatureZone1 !== null ? this.emit('message', `${zone1Name}, Flow temperature: ${flowTemperatureZone1}${obj.temperatureUnit}`) : false;
1853
- const info4 = returnTemperatureZone1 !== null ? this.emit('message', `${zone1Name}, Return temperature: ${returnTemperatureZone1}${obj.temperatureUnit}`) : false;
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('message', `${hotWaterName}, Temperature: ${tankWaterTemperature}${obj.temperatureUnit}`) : false;
1857
- const info6 = flowTemperatureWaterTank !== null ? this.emit('message', `${hotWaterName}, Flow temperature: ${flowTemperatureWaterTank}${obj.temperatureUnit}`) : false;
1858
- const info7 = returnTemperatureWaterTank !== null ? this.emit('message', `${hotWaterName}, Return temperature: ${returnTemperatureWaterTank}${obj.temperatureUnit}`) : false;
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('message', `${zone2Name}, Room temperature: ${roomTemperatureZone2}${obj.temperatureUnit}`) : false;
1862
- const info9 = flowTemperatureZone2 !== null ? this.emit('message', `${zone2Name}, Flow temperature: ${flowTemperatureZone2}${obj.temperatureUnit}`) : false;
1863
- const info10 = returnTemperatureZone2 !== null ? this.emit('message', `${zone2Name}, Return temperature: ${returnTemperatureZone2}${obj.temperatureUnit}`) : false;
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('message', `Power: ${power ? 'ON' : 'OFF'}`);
1227
- this.emit('message', `Target ventilation mode: ${Ventilation.OperationMode[ventilationMode]}`);
1228
- this.emit('message', `Current ventilation mode: ${Ventilation.OperationMode[actualVentilationMode]}`);
1229
- this.emit('message', `Target temperature: ${setTemperature}${obj.temperatureUnit}`);
1230
- this.emit('message', `Room temperature: ${roomTemperature}${obj.temperatureUnit}`);
1231
- const info1 = hasSupplyTemperature && deviceData.Device.SupplyTemperature !== null ? this.emit('message', `Supply temperature: ${roomTemperature}${obj.temperatureUnit}`) : false;
1232
- const info2 = hasOutdoorTemperature && deviceData.Device.OutdoorTemperature !== null ? this.emit('message', `Outdoor temperature: ${roomTemperature}${obj.temperatureUnit}`) : false;
1233
- this.emit('message', `Fan speed mode: ${Ventilation.FanSpeed[setFanSpeed]}`);
1234
- this.emit('message', `Temperature display unit: ${obj.temperatureUnit}`);
1235
- this.emit('message', `Core maintenance: ${Ventilation.CoreMaintenance[coreMaintenanceRequired]}`);
1236
- this.emit('message', `Filter maintenance: ${Ventilation.FilterMaintenance[filterMaintenanceRequired]}`);
1237
- const info5 = hasCO2Sensor ? this.emit('message', `CO2 detected: ${Ventilation.Co2Detected[roomCO2Detected]}`) : false;
1238
- const info6 = hasCO2Sensor ? this.emit('message', `CO2 level: ${roomCO2Level} ppm`) : false;
1239
- const info7 = hasPM25Sensor ? this.emit('message', `PM2.5 air quality: ${Ventilation.PM25AirQuality[pM25AirQuality]}`) : false;
1240
- const info8 = hasPM25Sensor ? this.emit('message', `PM2.5 level: ${pM25Level} µg/m`) : false;
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
@@ -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
  }
@@ -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
  }
@@ -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
  }