homebridge-melcloud-control 3.8.3-beta.0 → 3.8.3-beta.10

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.0",
4
+ "version": "3.8.3-beta.10",
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
+ 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,
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}, ${obj.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.defaultCoolingSetTemperature);
1108
+ const updateDefHeat = obj.modelSupportsHeat ? this.melCloudService.updateCharacteristic(Characteristic.HeatingThresholdTemperature, obj.defaultHeatingSetTemperature) : 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,30 +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.melCloudService
1162
+ if (this.melCloudServiceT) {
1163
+ this.melCloudServiceT
1207
1164
  .updateCharacteristic(Characteristic.CurrentHeatingCoolingState, obj.currentOperationMode)
1208
1165
  .updateCharacteristic(Characteristic.TargetHeatingCoolingState, obj.targetOperationMode)
1209
- .updateCharacteristic(Characteristic.CurrentTemperature, roomTemperature)
1210
- .updateCharacteristic(Characteristic.TargetTemperature, setTemperature)
1166
+ .updateCharacteristic(Characteristic.CurrentTemperature, obj.roomTemperature)
1167
+ .updateCharacteristic(Characteristic.TargetTemperature, obj.setTemperature)
1211
1168
  .updateCharacteristic(Characteristic.TemperatureDisplayUnits, obj.useFahrenheit);
1212
1169
  };
1213
1170
  break;
@@ -1215,25 +1172,25 @@ class DeviceAta extends EventEmitter {
1215
1172
 
1216
1173
  if (this.roomTemperatureSensorService) {
1217
1174
  this.roomTemperatureSensorService
1218
- .updateCharacteristic(Characteristic.CurrentTemperature, roomTemperature)
1175
+ .updateCharacteristic(Characteristic.CurrentTemperature, obj.roomTemperature)
1219
1176
  };
1220
1177
 
1221
1178
  if (this.outdoorTemperatureSensorService) {
1222
1179
  this.outdoorTemperatureSensorService
1223
- .updateCharacteristic(Characteristic.CurrentTemperature, outdoorTemperature)
1180
+ .updateCharacteristic(Characteristic.CurrentTemperature, obj.outdoorTemperature)
1224
1181
  };
1225
1182
 
1226
1183
  //update presets state
1227
1184
  if (this.presetsConfigured.length > 0) {
1228
1185
  this.presetsConfigured.forEach((preset, i) => {
1229
- const presetData = presetsOnServer.find(p => p.ID === preset.Id);
1186
+ const presetData = obj.presets.find(p => p.ID === preset.Id);
1230
1187
 
1231
- preset.state = presetData ? (presetData.Power === power
1232
- && presetData.SetTemperature === setTemperature
1233
- && presetData.OperationMode === operationMode
1234
- && presetData.VaneHorizontal === vaneHorizontalDirection
1235
- && presetData.VaneVertical === vaneVerticalDirection
1236
- && 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;
1237
1194
 
1238
1195
  if (this.presetsServices) {
1239
1196
  const characteristicType = preset.characteristicType;
@@ -1249,109 +1206,109 @@ class DeviceAta extends EventEmitter {
1249
1206
  const mode = button.mode;
1250
1207
  switch (mode) {
1251
1208
  case 0: //POWER ON,OFF
1252
- button.state = (power === true);
1209
+ button.state = (obj.power === true);
1253
1210
  break;
1254
1211
  case 1: //OPERATING MODE HEAT
1255
- button.state = power ? (operationMode === 1 || operationMode === 9) : false;
1212
+ button.state = obj.power ? (obj.operationMode === 1 || obj.operationMode === 9) : false;
1256
1213
  break;
1257
1214
  case 2: //OPERATING MODE DRY
1258
- button.state = power ? (operationMode === 2 || operationMode === 10) : false;
1215
+ button.state = obj.power ? (obj.operationMode === 2 || obj.operationMode === 10) : false;
1259
1216
  break
1260
1217
  case 3: //OPERATING MODE COOL
1261
- button.state = power ? (operationMode === 3 || operationMode === 11) : false;
1218
+ button.state = obj.power ? (obj.operationMode === 3 || obj.operationMode === 11) : false;
1262
1219
  break;
1263
1220
  case 4: //OPERATING MODE FAN
1264
- button.state = power ? (operationMode === 7) : false;
1221
+ button.state = obj.power ? (obj.operationMode === 7) : false;
1265
1222
  break;
1266
1223
  case 5: //OPERATING MODE AUTO
1267
- button.state = power ? (operationMode === 8) : false;
1224
+ button.state = obj.power ? (obj.operationMode === 8) : false;
1268
1225
  break;
1269
1226
  case 6: //OPERATING MODE PURIFY
1270
- button.state = power ? (operationMode === 12) : false;
1227
+ button.state = obj.power ? (obj.operationMode === 12) : false;
1271
1228
  break;
1272
1229
  case 7: //OPERATING MODE DRY CONTROL HIDE
1273
- button.state = power ? (hideDryModeControl === true) : false;
1230
+ button.state = obj.power ? (obj.hideDryModeControl === true) : false;
1274
1231
  break;
1275
1232
  case 10: //VANE H SWING MODE AUTO
1276
- button.state = power ? (vaneHorizontalDirection === 0) : false;
1233
+ button.state = obj.power ? (obj.vaneHorizontalDirection === 0) : false;
1277
1234
  break;
1278
1235
  case 11: //VANE H SWING MODE 1
1279
- button.state = power ? (vaneHorizontalDirection === 1) : false;
1236
+ button.state = obj.power ? (obj.vaneHorizontalDirection === 1) : false;
1280
1237
  break;
1281
1238
  case 12: //VANE H SWING MODE 2
1282
- button.state = power ? (vaneHorizontalDirection === 2) : false;
1239
+ button.state = obj.power ? (obj.vaneHorizontalDirection === 2) : false;
1283
1240
  break;
1284
1241
  case 13: //VANE H SWING MODE 3
1285
- button.state = power ? (vaneHorizontalDirection === 3) : false;
1242
+ button.state = obj.power ? (obj.vaneHorizontalDirection === 3) : false;
1286
1243
  break;
1287
1244
  case 14: //VANE H SWING MODE 4
1288
- button.state = power ? (vaneHorizontalDirection === 4) : false;
1245
+ button.state = obj.power ? (obj.vaneHorizontalDirection === 4) : false;
1289
1246
  break;
1290
1247
  case 15: //VANE H SWING MODE 5
1291
- button.state = power ? (vaneHorizontalDirection === 5) : false;
1248
+ button.state = obj.power ? (obj.vaneHorizontalDirection === 5) : false;
1292
1249
  break;
1293
1250
  case 16: //VANE H SWING MODE SPLIT
1294
- button.state = power ? (vaneHorizontalDirection === 8) : false;
1251
+ button.state = obj.power ? (obj.vaneHorizontalDirection === 8) : false;
1295
1252
  break;
1296
1253
  case 17: //VANE H SWING MODE SWING
1297
- button.state = power ? (vaneHorizontalDirection === 12) : false;
1254
+ button.state = obj.power ? (obj.vaneHorizontalDirection === 12) : false;
1298
1255
  break;
1299
1256
  case 20: //VANE V SWING MODE AUTO
1300
- button.state = power ? (vaneVerticalDirection === 0) : false;
1257
+ button.state = obj.power ? (obj.vaneVerticalDirection === 0) : false;
1301
1258
  break;
1302
1259
  case 21: //VANE V SWING MODE 1
1303
- button.state = power ? (vaneVerticalDirection === 1) : false;
1260
+ button.state = obj.power ? (obj.vaneVerticalDirection === 1) : false;
1304
1261
  break;
1305
1262
  case 22: //VANE V SWING MODE 2
1306
- button.state = power ? (vaneVerticalDirection === 2) : false;
1263
+ button.state = obj.power ? (obj.vaneVerticalDirection === 2) : false;
1307
1264
  break;
1308
1265
  case 23: //VANE V SWING MODE 3
1309
- button.state = power ? (vaneVerticalDirection === 3) : false;
1266
+ button.state = obj.power ? (obj.vaneVerticalDirection === 3) : false;
1310
1267
  break;
1311
1268
  case 24: //VANE V SWING MODE 4
1312
- button.state = power ? (vaneVerticalDirection === 4) : false;
1269
+ button.state = obj.power ? (obj.vaneVerticalDirection === 4) : false;
1313
1270
  break;
1314
1271
  case 25: //VANE V SWING MODE 5
1315
- button.state = power ? (vaneVerticalDirection === 5) : false;
1272
+ button.state = obj.power ? (obj.vaneVerticalDirection === 5) : false;
1316
1273
  break;
1317
1274
  case 26: //VANE V SWING MODE SWING
1318
- button.state = power ? (vaneVerticalDirection === 7) : false;
1275
+ button.state = obj.power ? (obj.vaneVerticalDirection === 7) : false;
1319
1276
  break;
1320
1277
  case 27: //VANE H/V CONTROLS HIDE
1321
- button.state = power ? (hideVaneControls === true) : false;
1278
+ button.state = obj.power ? (obj.hideVaneControls === true) : false;
1322
1279
  break;
1323
1280
  case 30: //FAN SPEED MODE AUTO
1324
- button.state = power ? (fanSpeed === 0) : false;
1281
+ button.state = obj.power ? (obj.fanSpeed === 0) : false;
1325
1282
  break;
1326
1283
  case 31: //FAN SPEED MODE 1
1327
- button.state = power ? (fanSpeed === 1) : false;
1284
+ button.state = obj.power ? (obj.fanSpeed === 1) : false;
1328
1285
  break;
1329
1286
  case 32: //FAN SPEED MODE 2
1330
- button.state = power ? (fanSpeed === 2) : false;
1287
+ button.state = obj.power ? (obj.fanSpeed === 2) : false;
1331
1288
  break;
1332
1289
  case 33: //FAN SPEED MODE 3
1333
- button.state = power ? (fanSpeed === 3) : false;
1290
+ button.state = obj.power ? (obj.fanSpeed === 3) : false;
1334
1291
  break;
1335
1292
  case 34: //FAN SPEED MODE 4
1336
- button.state = power ? (fanSpeed === 4) : false;
1293
+ button.state = obj.power ? (obj.fanSpeed === 4) : false;
1337
1294
  break;
1338
1295
  case 35: //FAN SPEED MODE 5
1339
- button.state = power ? (fanSpeed === 5) : false;
1296
+ button.state = obj.power ? (obj.fanSpeed === 5) : false;
1340
1297
  break;
1341
1298
  case 36: //FAN SPEED MODE 6
1342
- button.state = power ? (fanSpeed === 6) : false;
1299
+ button.state = obj.power ? (obj.fanSpeed === 6) : false;
1343
1300
  break;
1344
1301
  case 37: //PHYSICAL LOCK CONTROLS ALL
1345
1302
  button.state = (obj.lockPhysicalControl === 1);
1346
1303
  break;
1347
1304
  case 38: //PHYSICAL LOCK CONTROLS POWER
1348
- button.state = (prohibitPower === true);
1305
+ button.state = (obj.prohibitPower === true);
1349
1306
  break;
1350
1307
  case 39: //PHYSICAL LOCK CONTROLS MODE
1351
- button.state = (prohibitOperationMode === true);
1308
+ button.state = (obj.prohibitOperationMode === true);
1352
1309
  break;
1353
1310
  case 40: //PHYSICAL LOCK CONTROLS TEMP
1354
- button.state = (prohibitSetTemperature === true);
1311
+ button.state = (obj.prohibitSetTemperature === true);
1355
1312
  break;
1356
1313
  default: //Unknown button
1357
1314
  this.emit('message', `Unknown button mode: ${mode} detected`);
@@ -1369,19 +1326,19 @@ class DeviceAta extends EventEmitter {
1369
1326
 
1370
1327
  //log current state
1371
1328
  if (!this.disableLogInfo) {
1372
- this.emit('message', `Power: ${power ? 'ON' : 'OFF'}`);
1373
- this.emit('message', `Target operation mode: ${AirConditioner.DriveMode[operationMode]}`);
1374
- this.emit('message', `Current operation mode: ${this.displayMode === 1 ? AirConditioner.CurrentOperationModeHeatherCooler[obj.currentOperationMode] : AirConditioner.CurrentOperationModeThermostat[obj.currentOperationMode]}`);
1375
- this.emit('message', `Target temperature: ${setTemperature}${obj.temperatureUnit}`);
1376
- this.emit('message', `Current temperature: ${roomTemperature}${obj.temperatureUnit}`);
1377
- const info = hasOutdoorTemperature && outdoorTemperature !== null ? this.emit('message', `Outdoor temperature: ${outdoorTemperature}${obj.temperatureUnit}`) : false;
1378
- const info3 = modelSupportsFanSpeed ? this.emit('message', `Target fan speed: ${AirConditioner.FanSpeed[fanSpeed]}`) : false;
1379
- const info4 = modelSupportsFanSpeed ? this.emit('message', `Current fan speed: ${AirConditioner.FanSpeed[actualFanSpeed]}`) : false;
1380
- const info5 = vaneHorizontalDirection !== null ? this.emit('message', `Vane horizontal: ${AirConditioner.HorizontalVane[vaneHorizontalDirection] ?? vaneHorizontalDirection}`) : false;
1381
- const info6 = vaneVerticalDirection !== null ? this.emit('message', `Vane vertical: ${AirConditioner.VerticalVane[vaneVerticalDirection] ?? vaneVerticalDirection}`) : false;
1382
- const info7 = swingFunction ? this.emit('message', `Air direction: ${AirConditioner.AirDirection[obj.swingMode]}`) : false;
1383
- this.emit('message', `Temperature display unit: ${obj.temperatureUnit}`);
1384
- 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'}`);
1385
1342
  };
1386
1343
 
1387
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
  }