homebridge-melcloud-control 4.7.9-beta.2 → 4.7.9-beta.20

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/CHANGELOG.md CHANGED
@@ -24,6 +24,15 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
24
24
  - For plugin < v4.6.0 use Homebridge UI <= v5.5.0
25
25
  - For plugin >= v4.6.0 use Homebridge UI >= v5.13.0
26
26
 
27
+ # [4.7.9] - (02.02.2026)
28
+
29
+ ## Changes
30
+
31
+ - fix wrong display zone 2 for ATW (MELCloud Home)
32
+ - fix set ATW params
33
+ - bump dependencies
34
+ - cleanup
35
+
27
36
  # [4.7.8] - (02.02.2026)
28
37
 
29
38
  ## Changes
package/index.js CHANGED
@@ -54,10 +54,12 @@ class MelCloudPlatform {
54
54
  log.info(`${name}, debug: did finish launching.`);
55
55
  const safeConfig = {
56
56
  ...account,
57
+ user: 'removed',
57
58
  passwd: 'removed',
58
59
  mqtt: {
59
60
  auth: {
60
61
  ...account.mqtt?.auth,
62
+ user: 'removed',
61
63
  passwd: 'removed',
62
64
  }
63
65
  },
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "displayName": "MELCloud Control",
3
3
  "name": "homebridge-melcloud-control",
4
- "version": "4.7.9-beta.2",
4
+ "version": "4.7.9-beta.20",
5
5
  "description": "Homebridge plugin to control Mitsubishi Air Conditioner, Heat Pump and Energy Recovery Ventilation.",
6
6
  "license": "MIT",
7
7
  "author": "grzegorz914",
@@ -36,7 +36,7 @@
36
36
  },
37
37
  "dependencies": {
38
38
  "@homebridge/plugin-ui-utils": "^2.1.2",
39
- "mqtt": "^5.14.1",
39
+ "mqtt": "^5.15.0",
40
40
  "axios": "^1.13.4",
41
41
  "express": "^5.2.1",
42
42
  "puppeteer": "^24.36.1",
package/src/constants.js CHANGED
@@ -113,21 +113,24 @@ export const AirConditioner = {
113
113
  export const HeatPump = {
114
114
  ZoneNameMapEnumToString: { 0: "Heat Pump", 1: "Zone 1", 2: "Hot Water", 3: "Zone 2" },
115
115
  SystemMapEnumToStringInfo: { 0: "System Off", 1: "System On", 2: "Emergency Run", 3: "Test Run" },
116
- ControlTypeMapStringToEnum: { "Heat": 0, "Cool": 1 },
117
- ControlTypeMapEnumToString: { 0: "Heat", 1: "Cool" },
116
+ UnitStatusMapEnumToStringInfo: { 0: "Heat", 1: "Cool" },
117
+ HeatPumpModeMapStringToEnum: { "Off": 0, "Heat": 1, "Cool": 2, "Auto": 3 },
118
+ HeatPumpModeMapEnumToString: { 0: "Off", 1: "Heat", 2: "Cool", 3: "Auto" },
119
+ HeatPumpModeMapEnumToStringInfoHeaterCooler: { 0: "On", 1: "Heat", 2: "Cool" },
120
+ HeatPumpModeMapEnumToStringInfoThermostat: { 0: "Off", 1: "Heat", 2: "Cool", 3: "On" },
118
121
  DefrostMapStringToEnum: { "Normal": 0, "Standby": 1, "Defrost": 2, "Waiting Restart": 3 },
119
122
  DefrostMapEnumToString: { 0: "Normal", 1: "Standby", 2: "Defrost", 3: "Waiting Restart" },
120
- OperationModeMapStringToEnum: { "Idle": 0, "HotWater": 1, "Heating": 2, "Cooling": 3, "HotWaterStorage": 4, "FreezeStat": 5, "Legionella": 6, "HeatEco": 7, "Mode1": 8, "Mode2": 9, "Mode3": 10, "HeatUp": 11 },
121
- OperationModeMapEnumToString: { 0: "Idle", 1: "HotWater", 2: "Heating", 3: "Cooling", 4: "HotWaterStorage", 5: "FreezeStat", 6: "Legionella", 7: "HeatEco", 8: "Mode1", 9: "Mode2", 10: "Mode3", 11: "HeatUp" },
122
- OperationModeMapEnumToStringInfo: { 0: "Idle", 1: "Hot Water", 2: "Heating", 3: "Cooling", 4: "Hot Water Storage", 5: "Freeze Stat", 6: "Legionella", 7: "Heat Eco", 8: "Mode 1", 9: "Mode 2", 10: "Mode 3", 11: "Heat Up" },
123
- OperationModeZoneMapStringToEnum: { "HeatThermostat": 0, "HeatFlowTemperature": 1, "HeatCurve": 2, "CoolThermostat": 3, "CoolFlowTemperature": 4, "FloorDryUp": 5, "Idle": 6 },
124
- OperationModeZoneMapEnumToString: { 0: "HeatThermostat", 1: "HeatFlowTemperature", 2: "HeatCurve", 3: "CoolThermostat", 4: "CoolFlowTemperature", 5: "FloorDryUp", 6: "Idle" },
125
- OperationModeZoneMapEnumToStringInfo: { 0: "Heat Thermostat", 1: "Heat Flow Temperature", 2: "Heat Curve", 3: "Cool Thermostat", 4: "Cool Flow Temperature", 5: "Floor Dry Up", 6: "Idle" },
123
+ OperationModeMapStringToEnum: { "Stop": 0, "HotWater": 1, "Heating": 2, "Cooling": 3, "HotWaterStorage": 4, "FreezeStat": 5, "Legionella": 6, "HeatEco": 7, "Mode1": 8, "Mode2": 9, "Mode3": 10, "HeatUp": 11 },
124
+ OperationModeMapEnumToString: { 0: "Stop", 1: "HotWater", 2: "Heating", 3: "Cooling", 4: "HotWaterStorage", 5: "FreezeStat", 6: "Legionella", 7: "HeatEco", 8: "Mode1", 9: "Mode2", 10: "Mode3", 11: "HeatUp" },
125
+ OperationModeMapEnumToStringInfo: { 0: "Stop", 1: "Hot Water", 2: "Heating", 3: "Cooling", 4: "Hot Water Storage", 5: "Freeze Stat", 6: "Legionella", 7: "Heat Eco", 8: "Mode 1", 9: "Mode 2", 10: "Mode 3", 11: "Heat Up" },
126
+ OperationModeZoneMapStringToEnum: { "HeatRoomTemperature": 0, "HeatFlowTemperature": 1, "HeatCurve": 2, "CoolRoomTemperature": 3, "CoolFlowTemperature": 4, "FloorDryUp": 5, "Stop": 6 },
127
+ OperationModeZoneMapEnumToString: { 0: "HeatRoomTemperature", 1: "HeatFlowTemperature", 2: "HeatCurve", 3: "CoolRoomTemperature", 4: "CoolFlowTemperature", 5: "FloorDryUp", 6: "Stop" },
128
+ OperationModeZoneMapEnumToStringInfo: { 0: "Heat Room Temperature", 1: "Heat Flow Temperature", 2: "Heat Curve", 3: "Cool Room Temperature", 4: "Cool Flow Temperature", 5: "Floor Dry Up", 6: "Stop" },
126
129
  OperationModeDhwMapStringToEnum: { "Normal": 0, "Eco": 1 },
127
130
  OperationModeDhwMapEnumToString: { 0: "Normal", 1: "Eco" },
128
131
  ForceDhwMapStringToEnum: { "Normal": 0, "HeatNow": 1 },
129
132
  ForceDhwMapEnumToString: { 0: "Normal", 1: "HeatNow" },
130
- ForceDhwMapEnumToStringInfo: { 0: "Normal", 1: "Heat Now" },
133
+ ForceDhwMapEnumToStringInfo: { 0: "Hot Water Heat Normal", 1: "Hot Water Heat Now" },
131
134
  HolidayMapStringToEnum: { "Normal": 0, "Holiday": 1 },
132
135
  HolidayMapEnumToString: { 0: "Normal", 1: "Holiday" },
133
136
  EffectiveFlags: {
package/src/deviceata.js CHANGED
@@ -630,6 +630,9 @@ class DeviceAta extends EventEmitter {
630
630
  this.melCloudService = melCloudServiceT;
631
631
  accessory.addService(melCloudServiceT);
632
632
  break;
633
+ default:
634
+ if (this.logWarn) this.emit('warn', `Received unknown display type: ${this.displayType}`);
635
+ return;
633
636
  };
634
637
 
635
638
  //temperature sensor services
@@ -646,7 +649,7 @@ class DeviceAta extends EventEmitter {
646
649
  accessory.addService(this.roomTemperatureSensorService);
647
650
  }
648
651
 
649
- if (this.temperatureOutdoorSensor && supportsOutdoorTemperature && this.accessory.outdoorTemperature !== null) {
652
+ if (this.temperatureOutdoorSensor && supportsOutdoorTemperature) {
650
653
  if (this.logDebug) this.emit('debug', `Prepare outdoor temperature sensor service`);
651
654
  this.outdoorTemperatureSensorService = new Service.TemperatureSensor(`${serviceName} Outdoor`, `outdoorTemperatureSensorService${deviceId}`);
652
655
  this.outdoorTemperatureSensorService.addOptionalCharacteristic(Characteristic.ConfiguredName);
@@ -702,7 +705,7 @@ class DeviceAta extends EventEmitter {
702
705
  }
703
706
 
704
707
  //frost protection
705
- if (supportsHeat && this.frostProtectionSupport && this.accessory.frostProtection.Enabled !== null) {
708
+ if (supportsHeat && this.frostProtectionSupport && this.accessory.frostProtectionEnabled !== null) {
706
709
  //control
707
710
  if (this.logDebug) this.emit('debug', `Prepare frost protection control service`);
708
711
  const frostProtectionControlService = new Service.HeaterCooler(`${serviceName} Frost Protection`, `frostProtectionControlService${deviceId}`);
@@ -710,7 +713,7 @@ class DeviceAta extends EventEmitter {
710
713
  frostProtectionControlService.setCharacteristic(Characteristic.ConfiguredName, `${accessoryName} Frost Protection`);
711
714
  frostProtectionControlService.getCharacteristic(Characteristic.Active)
712
715
  .onGet(async () => {
713
- const state = this.accessory.frostProtection.Enabled;
716
+ const state = this.accessory.frostProtectionEnabled;
714
717
  return state;
715
718
  })
716
719
  .onSet(async (state) => {
@@ -802,7 +805,7 @@ class DeviceAta extends EventEmitter {
802
805
  this.frostProtectionControlSensorService.setCharacteristic(Characteristic.ConfiguredName, `${accessoryName} Frost Protection Control`);
803
806
  this.frostProtectionControlSensorService.getCharacteristic(Characteristic.ContactSensorState)
804
807
  .onGet(async () => {
805
- const state = this.accessory.frostProtection.Enabled;
808
+ const state = this.accessory.frostProtectionEnabled;
806
809
  return state;
807
810
  })
808
811
  accessory.addService(this.frostProtectionControlSensorService);
@@ -821,7 +824,7 @@ class DeviceAta extends EventEmitter {
821
824
  }
822
825
 
823
826
  //overheat protection
824
- if (this.overheatProtectionSupport && this.accessory.overheatProtection.Enabled !== null) {
827
+ if (this.overheatProtectionSupport && this.accessory.overheatProtectionEnabled !== null) {
825
828
  //control
826
829
  if (this.logDebug) this.emit('debug', `Prepare overheat protection control service`);
827
830
  const overheatProtectionControlService = new Service.HeaterCooler(`${serviceName} Overheat Protection`, `overheatProtectionControlService${deviceId}`);
@@ -829,7 +832,7 @@ class DeviceAta extends EventEmitter {
829
832
  overheatProtectionControlService.setCharacteristic(Characteristic.ConfiguredName, `${accessoryName} Overheat Protection`);
830
833
  overheatProtectionControlService.getCharacteristic(Characteristic.Active)
831
834
  .onGet(async () => {
832
- const state = this.accessory.overheatProtection.Enabled;
835
+ const state = this.accessory.overheatProtectionEnabled;
833
836
  return state;
834
837
  })
835
838
  .onSet(async (state) => {
@@ -921,7 +924,7 @@ class DeviceAta extends EventEmitter {
921
924
  this.overheatProtectionControlSensorService.setCharacteristic(Characteristic.ConfiguredName, `${accessoryName} Overheat Protection Control`);
922
925
  this.overheatProtectionControlSensorService.getCharacteristic(Characteristic.ContactSensorState)
923
926
  .onGet(async () => {
924
- const state = this.accessory.overheatProtection.Enabled;
927
+ const state = this.accessory.overheatProtectionEnabled;
925
928
  return state;
926
929
  })
927
930
  accessory.addService(this.overheatProtectionControlSensorService);
@@ -939,7 +942,7 @@ class DeviceAta extends EventEmitter {
939
942
  }
940
943
 
941
944
  //holiday mode
942
- if (this.holidayModeSupport && this.accessory.holidayMode.Enabled !== null) {
945
+ if (this.holidayModeSupport && this.accessory.holidayModeEnabled !== null) {
943
946
  //control
944
947
  if (this.logDebug) this.emit('debug', `Prepare holiday mode control service`);
945
948
  this.holidayModeControlService = new Service.Switch(`${serviceName} Holiday Mode`, `holidayModeControlService${deviceId}`);
@@ -947,7 +950,7 @@ class DeviceAta extends EventEmitter {
947
950
  this.holidayModeControlService.setCharacteristic(Characteristic.ConfiguredName, `${accessoryName} Holiday Mode`);
948
951
  this.holidayModeControlService.getCharacteristic(Characteristic.On)
949
952
  .onGet(async () => {
950
- const state = this.accessory.holidayMode.Enabled;
953
+ const state = this.accessory.holidayModeEnabled;
951
954
  return state;
952
955
  })
953
956
  .onSet(async (state) => {
@@ -967,7 +970,7 @@ class DeviceAta extends EventEmitter {
967
970
  this.holidayModeControlSensorService.setCharacteristic(Characteristic.ConfiguredName, `${accessoryName} Holiday Mode Control`);
968
971
  this.holidayModeControlSensorService.getCharacteristic(Characteristic.ContactSensorState)
969
972
  .onGet(async () => {
970
- const state = this.accessory.holidayMode.Enabled;
973
+ const state = this.accessory.holidayModeEnabled;
971
974
  return state;
972
975
  })
973
976
  accessory.addService(this.holidayModeControlSensorService);
@@ -1429,7 +1432,7 @@ class DeviceAta extends EventEmitter {
1429
1432
  flag = AirConditioner.EffectiveFlags.Prohibit;
1430
1433
  break;
1431
1434
  default:
1432
- if (this.logWarn) this.emit('warn', `Unknown button mode: ${mode}`);
1435
+ if (this.logWarn) this.emit('warn', `Received unknown button mode: ${mode}`);
1433
1436
  break;
1434
1437
  };
1435
1438
 
@@ -1518,8 +1521,11 @@ class DeviceAta extends EventEmitter {
1518
1521
 
1519
1522
  //protection
1520
1523
  const frostProtection = deviceData.FrostProtection ?? {};
1524
+ const frostProtectionEnabled = frostProtection.Enabled ?? null;
1521
1525
  const overheatProtection = deviceData.OverheatProtection ?? {};
1526
+ const overheatProtectionEnabled = overheatProtection.Enabled ?? null;
1522
1527
  const holidayMode = deviceData.HolidayMode ?? {};
1528
+ const holidayModeEnabled = holidayMode.Enabled ?? null;
1523
1529
 
1524
1530
  //device control
1525
1531
  const hideVaneControls = deviceData.HideVaneControls ?? false;
@@ -1527,11 +1533,11 @@ class DeviceAta extends EventEmitter {
1527
1533
 
1528
1534
  //device info
1529
1535
  const supportsStanbyMode = deviceData.Device[supportStandbyKey];
1530
- const supportsAutomaticFanSpeed = deviceData.Device.HasAutomaticFanSpeed ?? false;
1536
+ const supportsAutomaticFanSpeed = deviceData.Device.HasAutomaticFanSpeed;
1531
1537
  const supportsAirDirectionFunction = deviceData.Device[supportAirDirectionKey];
1532
1538
  const supportsSwingFunction = deviceData.Device[supportSwingKey];
1533
1539
  const supportsWideVane = deviceData.Device[supportVideWaneKey];
1534
- const supportsOutdoorTemperature = deviceData.Device.HasOutdoorTemperature;
1540
+ const supportsOutdoorTemperature = deviceData.Device.HasOutdoorTemperature && this.functions.isValidValue(deviceData.Device.OutdoorTemperature);
1535
1541
  const supportsFanSpeed = accountTypeMelCloud ? deviceData.Device.ModelSupportsFanSpeed : deviceData.Device.NumberOfFanSpeeds > 0;
1536
1542
  const supportsAuto1 = deviceData.Device[supportAutoKey];
1537
1543
  const supportsAuto = this.autoDryFanMode >= 1 && supportsAuto1
@@ -1560,9 +1566,9 @@ class DeviceAta extends EventEmitter {
1560
1566
  const vaneVerticalSwing = deviceData.Device.VaneVerticalSwing;
1561
1567
  const vaneHorizontalDirection = deviceData.Device.VaneHorizontalDirection;
1562
1568
  const vaneHorizontalSwing = deviceData.Device.VaneHorizontalSwing;
1563
- const prohibitSetTemperature = deviceData.Device.ProhibitSetTemperature ?? false;
1564
- const prohibitOperationMode = deviceData.Device.ProhibitOperationMode ?? false;
1565
- const prohibitPower = deviceData.Device.ProhibitPower ?? false;
1569
+ const prohibitSetTemperature = deviceData.Device.ProhibitSetTemperature;
1570
+ const prohibitOperationMode = deviceData.Device.ProhibitOperationMode;
1571
+ const prohibitPower = deviceData.Device.ProhibitPower;
1566
1572
  const temperatureStep = deviceData.Device[tempStepKey] ? 0.5 : 1;
1567
1573
  const outdoorTemperature = deviceData.Device.OutdoorTemperature;
1568
1574
  const isConnected = accountTypeMelCloud ? !deviceData.Device[connectKey] : deviceData.Device[connectKey];
@@ -1576,8 +1582,11 @@ class DeviceAta extends EventEmitter {
1576
1582
  scheduleEnabled: scheduleEnabled,
1577
1583
  scenes: scenesOnServer,
1578
1584
  frostProtection: frostProtection,
1585
+ frostProtectionEnabled: frostProtectionEnabled,
1579
1586
  overheatProtection: overheatProtection,
1587
+ overheatProtectionEnabled: overheatProtectionEnabled,
1580
1588
  holidayMode: holidayMode,
1589
+ holidayModeEnabled: holidayModeEnabled,
1581
1590
  supportsAutomaticFanSpeed: supportsAutomaticFanSpeed,
1582
1591
  supportsAirDirectionFunction: supportsAirDirectionFunction,
1583
1592
  supportsSwingFunction: supportsSwingFunction,
@@ -1768,6 +1777,9 @@ class DeviceAta extends EventEmitter {
1768
1777
  { type: Characteristic.TemperatureDisplayUnits, value: obj.useFahrenheit }
1769
1778
  );
1770
1779
  break;
1780
+ default:
1781
+ if (this.logWarn) this.emit('warn', `Received unknown display type: ${this.displayType}`);
1782
+ return;
1771
1783
  };
1772
1784
  this.accessory = obj;
1773
1785
 
@@ -1785,35 +1797,35 @@ class DeviceAta extends EventEmitter {
1785
1797
  this.errorService?.updateCharacteristic(Characteristic.ContactSensorState, isInError);
1786
1798
 
1787
1799
  //frost protection
1788
- if (this.frostProtectionSupport && frostProtection.Enabled !== null) {
1800
+ if (this.frostProtectionSupport && frostProtectionEnabled !== null) {
1789
1801
  this.frostProtectionControlService
1790
- ?.updateCharacteristic(Characteristic.Active, frostProtection.Enabled)
1802
+ ?.updateCharacteristic(Characteristic.Active, frostProtectionEnabled)
1791
1803
  .updateCharacteristic(Characteristic.CurrentHeaterCoolerState, frostProtection.Active ? 2 : 1)
1792
1804
  .updateCharacteristic(Characteristic.TargetHeaterCoolerState, 0)
1793
1805
  .updateCharacteristic(Characteristic.CurrentTemperature, roomTemperature)
1794
1806
  .updateCharacteristic(Characteristic.CoolingThresholdTemperature, frostProtection.Max)
1795
1807
  .updateCharacteristic(Characteristic.HeatingThresholdTemperature, frostProtection.Min);
1796
- this.frostProtectionControlSensorService?.updateCharacteristic(Characteristic.ContactSensorState, frostProtection.Enabled);
1808
+ this.frostProtectionControlSensorService?.updateCharacteristic(Characteristic.ContactSensorState, frostProtectionEnabled);
1797
1809
  this.frostProtectionSensorService?.updateCharacteristic(Characteristic.ContactSensorState, frostProtection.Active);
1798
1810
  }
1799
1811
 
1800
1812
  //overheat protection
1801
- if (this.overheatProtectionSupport && overheatProtection.Enabled !== null) {
1813
+ if (this.overheatProtectionSupport && overheatProtectionEnabled !== null) {
1802
1814
  this.overheatProtectionControlService
1803
- ?.updateCharacteristic(Characteristic.Active, overheatProtection.Enabled)
1815
+ ?.updateCharacteristic(Characteristic.Active, overheatProtectionEnabled)
1804
1816
  .updateCharacteristic(Characteristic.CurrentHeaterCoolerState, overheatProtection.Active ? 2 : 1)
1805
1817
  .updateCharacteristic(Characteristic.TargetHeaterCoolerState, 0)
1806
1818
  .updateCharacteristic(Characteristic.CurrentTemperature, roomTemperature)
1807
1819
  .updateCharacteristic(Characteristic.CoolingThresholdTemperature, overheatProtection.Max)
1808
1820
  .updateCharacteristic(Characteristic.HeatingThresholdTemperature, overheatProtection.Min);
1809
- this.overheatProtectionControlSensorService?.updateCharacteristic(Characteristic.ContactSensorState, overheatProtection.Enabled);
1821
+ this.overheatProtectionControlSensorService?.updateCharacteristic(Characteristic.ContactSensorState, overheatProtectionEnabled);
1810
1822
  this.overheatProtectionSensorService?.updateCharacteristic(Characteristic.ContactSensorState, overheatProtection.Active);
1811
1823
  }
1812
1824
 
1813
1825
  //holiday mode
1814
- if (this.holidayModeSupport && holidayMode.Enabled !== null) {
1826
+ if (this.holidayModeSupport && holidayModeEnabled !== null) {
1815
1827
  this.holidayModeControlService?.updateCharacteristic(Characteristic.On, holidayMode.Enabled);
1816
- this.holidayModeControlSensorService?.updateCharacteristic(Characteristic.ContactSensorState, holidayMode.Enabled);
1828
+ this.holidayModeControlSensorService?.updateCharacteristic(Characteristic.ContactSensorState, holidayModeEnabled);
1817
1829
  this.holidayModeSensorService?.updateCharacteristic(Characteristic.ContactSensorState, holidayMode.Active);
1818
1830
  }
1819
1831
 
@@ -1984,16 +1996,16 @@ class DeviceAta extends EventEmitter {
1984
1996
  button.state = (obj.lockPhysicalControl === 1);
1985
1997
  break;
1986
1998
  case 38: //PHYSICAL LOCK CONTROLS POWER
1987
- button.state = (prohibitPower === true);
1999
+ button.state = prohibitPower;
1988
2000
  break;
1989
2001
  case 39: //PHYSICAL LOCK CONTROLS MODE
1990
- button.state = (prohibitOperationMode === true);
2002
+ button.state = prohibitOperationMode;
1991
2003
  break;
1992
2004
  case 40: //PHYSICAL LOCK CONTROLS TEMP
1993
- button.state = (prohibitSetTemperature === true);
2005
+ button.state = prohibitSetTemperature;
1994
2006
  break;
1995
2007
  default: //Unknown button
1996
- if (this.logWarn) this.emit('warn', `Unknown button mode: ${mode} detected`);
2008
+ if (this.logWarn) this.emit('warn', `Received unknown button mode: ${mode} detected`);
1997
2009
  break;
1998
2010
  };
1999
2011
 
@@ -2013,7 +2025,7 @@ class DeviceAta extends EventEmitter {
2013
2025
  this.emit('info', `Current operation mode: ${this.displayType === 1 ? AirConditioner.CurrentOperationModeMapEnumToStringHeatherCooler[obj.currentOperationMode] : AirConditioner.CurrentOperationModeMapEnumToStringThermostat[obj.currentOperationMode]}`);
2014
2026
  this.emit('info', `Target temperature: ${setTemperature}${obj.temperatureUnit}`);
2015
2027
  this.emit('info', `Current temperature: ${roomTemperature}${obj.temperatureUnit}`);
2016
- if (supportsOutdoorTemperature && outdoorTemperature !== null) this.emit('info', `Outdoor temperature: ${outdoorTemperature}${obj.temperatureUnit}`);
2028
+ if (supportsOutdoorTemperature) this.emit('info', `Outdoor temperature: ${outdoorTemperature}${obj.temperatureUnit}`);
2017
2029
  if (supportsFanSpeed) this.emit('info', `Target fan speed: ${AirConditioner.FanSpeedMapEnumToString[setFanSpeed]}`);
2018
2030
  if (supportsFanSpeed) this.emit('info', `Current fan speed: ${AirConditioner.AktualFanSpeedMapEnumToString[actualFanSpeed]}`);
2019
2031
  if (vaneHorizontalDirection !== null) this.emit('info', `Vane horizontal: ${AirConditioner.VaneHorizontalDirectionMapEnumToString[vaneHorizontalDirection]}`);
@@ -2021,7 +2033,7 @@ class DeviceAta extends EventEmitter {
2021
2033
  if (supportsSwingFunction) this.emit('info', `Air direction: ${AirConditioner.AirDirectionMapEnumToString[currentSwingMode]}`);
2022
2034
  this.emit('info', `Temperature display unit: ${obj.temperatureUnit}`);
2023
2035
  this.emit('info', `Lock physical controls: ${obj.lockPhysicalControl ? 'Locked' : 'Unlocked'}`);
2024
- if (!accountTypeMelCloud) this.emit('info', `Signal strength: ${deviceData.Rssi}dBm`);
2036
+ if (!accountTypeMelCloud) this.emit('info', `WiFi signal strength: ${deviceData.Rssi}dBm`);
2025
2037
  }
2026
2038
  })
2027
2039
  .on('success', (success) => this.emit('success', success))