homebridge-melcloud-control 4.6.7-beta.6 → 4.6.7-beta.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -24,6 +24,16 @@ 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.0] - (xx.01.2026)
28
+
29
+ ## Changes
30
+
31
+ - add support for ATW, fix [#233](https://github.com/grzegorz914/homebridge-melcloud-control/issues/233), thanks @bastienb99
32
+ - fix [#232](https://github.com/grzegorz914/homebridge-melcloud-control/issues/232)
33
+ - config schema updated
34
+ - bump dependencies
35
+ - cleanup
36
+
27
37
  # [4.6.6] - (23.01.2026)
28
38
 
29
39
  ## Changes
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "displayName": "MELCloud Control",
3
3
  "name": "homebridge-melcloud-control",
4
- "version": "4.6.7-beta.6",
4
+ "version": "4.6.7-beta.8",
5
5
  "description": "Homebridge plugin to control Mitsubishi Air Conditioner, Heat Pump and Energy Recovery Ventilation.",
6
6
  "license": "MIT",
7
7
  "author": "grzegorz914",
package/src/deviceatw.js CHANGED
@@ -1718,9 +1718,9 @@ class DeviceAtw extends EventEmitter {
1718
1718
  const inStandbyMode = deviceData.Device.InStandbyMode;
1719
1719
  const unitStatus = deviceData.Device.UnitStatus ?? 0;
1720
1720
  const operationMode = deviceData.Device.OperationMode;
1721
- const outdoorTemperature = deviceData.Device.OutdoorTemperature ?? deviceData.Device.RoomTemperatureZone1;
1722
- const flowTemperatureHeatPump = deviceData.Device.FlowTemperature ?? null;
1723
- const returnTemperatureHeatPump = deviceData.Device.ReturnTemperature ?? null;
1721
+ const outdoorTemperature = deviceData.Device.OutdoorTemperature ?? deviceData.Device.RoomTemperatureZone1; // fallback to room temperature zone 1 melcloud home
1722
+ const flowTemperatureHeatPump = deviceData.Device.FlowTemperature ?? null; // only sensor
1723
+ const returnTemperatureHeatPump = deviceData.Device.ReturnTemperature ?? null; // only sensor
1724
1724
 
1725
1725
  //zone 1
1726
1726
  const zone1Name = deviceData.Zone1Name ?? 'Zone 1';
@@ -1731,8 +1731,8 @@ class DeviceAtw extends EventEmitter {
1731
1731
  const setCoolFlowTemperatureZone1 = deviceData.Device.SetCoolFlowTemperatureZone1 ?? setTemperatureZone1;
1732
1732
  const prohibitZone1 = deviceData.Device.ProhibitZone1 ?? false;
1733
1733
  const idleZone1 = deviceData.Device.IdleZone1 ?? false;
1734
- const flowTemperatureZone1 = deviceData.Device.FlowTemperatureZone1 ?? roomTemperatureZone1; // fallback to set temperature melcloud home
1735
- const returnTemperatureZone1 = deviceData.Device.ReturnTemperatureZone1 ?? null;
1734
+ const flowTemperatureZone1 = deviceData.Device.FlowTemperatureZone1 ?? roomTemperatureZone1; // fallback to room temperature melcloud home
1735
+ const returnTemperatureZone1 = deviceData.Device.ReturnTemperatureZone1 ?? null; // only sensor
1736
1736
 
1737
1737
  //hot water
1738
1738
  const hotWaterName = 'Hot Water';
@@ -1741,8 +1741,8 @@ class DeviceAtw extends EventEmitter {
1741
1741
  const forcedHotWaterMode = deviceData.Device.ForcedHotWaterMode ? 1 : 0;
1742
1742
  const ecoHotWater = deviceData.Device.EcoHotWater ?? false;
1743
1743
  const prohibitHotWater = deviceData.Device.ProhibitHotWater ?? false;
1744
- const flowTemperatureWaterTank = deviceData.Device.FlowTemperatureBoiler ?? null;
1745
- const returnTemperatureWaterTank = deviceData.Device.ReturnTemperatureBoiler ?? null;
1744
+ const flowTemperatureWaterTank = deviceData.Device.FlowTemperatureBoiler ?? null; // only sensor
1745
+ const returnTemperatureWaterTank = deviceData.Device.ReturnTemperatureBoiler ?? null; // only sensor
1746
1746
 
1747
1747
  //zone 2
1748
1748
  const zone2Name = deviceData.Zone2Name ?? 'Zone 2';
@@ -1753,8 +1753,8 @@ class DeviceAtw extends EventEmitter {
1753
1753
  const setCoolFlowTemperatureZone2 = deviceData.Device.SetCoolFlowTemperatureZone2 ?? setTemperatureZone2;
1754
1754
  const prohibitZone2 = deviceData.Device.ProhibitZone2 ?? false;
1755
1755
  const idleZone2 = deviceData.Device.IdleZone2 ?? false;
1756
- const flowTemperatureZone2 = deviceData.Device.FlowTemperatureZone2 ?? roomTemperatureZone2; // fallback to set temperature melcloud home
1757
- const returnTemperatureZone2 = deviceData.Device.ReturnTemperatureZone2 ?? null;
1756
+ const flowTemperatureZone2 = deviceData.Device.FlowTemperatureZone2 ?? roomTemperatureZone2; // fallback to room temperature melcloud home
1757
+ const returnTemperatureZone2 = deviceData.Device.ReturnTemperatureZone2 ?? null; // only sensor
1758
1758
 
1759
1759
  //device
1760
1760
  const isConnected = accountTypeMelcloud ? !deviceData.Device[connectKey] : deviceData.Device[connectKey];
@@ -1798,26 +1798,24 @@ class DeviceAtw extends EventEmitter {
1798
1798
  zonesSensors: []
1799
1799
  };
1800
1800
 
1801
- //characteristics array
1802
- const characteristics = [];
1803
-
1804
- //default values
1805
- let name = 'Heat Pump'
1806
- let operationModeZone = 0;
1807
- let currentOperationMode = 0;
1808
- let targetOperationMode = 0;
1809
- let roomTemperature = 20;
1810
- let setTemperature = 20;
1811
- let lockPhysicalControl = 0;
1812
- let flowTemperature = 0;
1813
- let returnTemperature = 0;
1814
- let operationModeSetPropsMinValue = 0;
1815
- let operationModeSetPropsMaxValue = 3;
1816
- let operationModeSetPropsValidValues = [0];
1817
- let temperatureSetPropsMinValue = -35;
1818
- let temperatureSetPropsMaxValue = 100;
1819
-
1820
1801
  for (let i = 0; i < zonesCount; i++) {
1802
+ //characteristics array
1803
+ const characteristics = [];
1804
+
1805
+ let name = '';
1806
+ let operationModeZone = 0;
1807
+ let currentOperationMode = 0;
1808
+ let targetOperationMode = 0;
1809
+ let roomTemperature = null;
1810
+ let setTemperature = 0;
1811
+ let lockPhysicalControl = 0;
1812
+ let operationModeSetPropsMinValue = 0;
1813
+ let operationModeSetPropsMaxValue = 0;
1814
+ let operationModeSetPropsValidValues = [];
1815
+ let temperatureSetPropsMinValue = 0;
1816
+ let temperatureSetPropsMaxValue = 0;
1817
+
1818
+
1821
1819
  switch (this.displayType) {
1822
1820
  case 1: //Heater Cooler
1823
1821
  switch (i) {
@@ -2034,6 +2032,12 @@ class DeviceAtw extends EventEmitter {
2034
2032
  break;
2035
2033
  };
2036
2034
 
2035
+ //update services
2036
+ for (const { type, value } of characteristics) {
2037
+ if (!this.functions.isValidValue(value)) continue;
2038
+ this.melCloudServices?.[i]?.updateCharacteristic(type, value);
2039
+ }
2040
+
2037
2041
  //add every zone to array
2038
2042
  const zone = {
2039
2043
  name: name,
@@ -2093,52 +2097,61 @@ class DeviceAtw extends EventEmitter {
2093
2097
 
2094
2098
  //update sensors characteristics
2095
2099
  for (let i = 0; i < zonesSensorsCount; i++) {
2100
+
2101
+ // helper function to update sensor characteristics
2102
+ const updateSensorCharacteristics = (service, value) => {
2103
+ if (this.functions.isValidValue(value)) service?.updateCharacteristic(Characteristic.CurrentTemperature, value);
2104
+ };
2105
+
2106
+ // default values
2107
+ let name = '';
2108
+ let roomTemperature = null;
2109
+ let flowTemperature = null;
2110
+ let returnTemperature = null;
2111
+
2096
2112
  switch (i) {
2097
- case caseHeatPumpSensor: //Heat Pump
2113
+ case caseHeatPumpSensor: // Heat Pump
2098
2114
  name = heatPumpName;
2099
2115
  roomTemperature = outdoorTemperature;
2100
2116
  flowTemperature = flowTemperatureHeatPump;
2101
2117
  returnTemperature = returnTemperatureHeatPump;
2102
2118
 
2103
- //updte characteristics
2104
- this.roomTemperatureSensorService?.updateCharacteristic(Characteristic.CurrentTemperature, outdoorTemperature);
2105
- this.flowTemperatureSensorService?.updateCharacteristic(Characteristic.CurrentTemperature, flowTemperatureHeatPump);
2106
- this.returnTemperatureSensorService?.updateCharacteristic(Characteristic.CurrentTemperature, returnTemperatureHeatPump);
2119
+ updateSensorCharacteristics(this.roomTemperatureSensorService, outdoorTemperature);
2120
+ updateSensorCharacteristics(this.flowTemperatureSensorService, flowTemperatureHeatPump);
2121
+ updateSensorCharacteristics(this.returnTemperatureSensorService, returnTemperatureHeatPump);
2107
2122
  break;
2108
- case caseZone1Sensor: //Zone 1
2123
+ case caseZone1Sensor: // Zone 1
2109
2124
  name = zone1Name;
2110
2125
  roomTemperature = roomTemperatureZone1;
2111
2126
  flowTemperature = flowTemperatureZone1;
2112
2127
  returnTemperature = returnTemperatureZone1;
2113
2128
 
2114
- //updte characteristics
2115
- this.roomTemperatureZone1SensorService?.updateCharacteristic(Characteristic.CurrentTemperature, roomTemperatureZone1);
2116
- this.flowTemperatureZone1SensorService?.updateCharacteristic(Characteristic.CurrentTemperature, flowTemperatureZone1);
2117
- this.returnTemperatureZone1SensorService?.updateCharacteristic(Characteristic.CurrentTemperature, returnTemperatureZone1);
2129
+ updateSensorCharacteristics(this.roomTemperatureZone1SensorService, roomTemperatureZone1);
2130
+ updateSensorCharacteristics(this.flowTemperatureZone1SensorService, flowTemperatureZone1);
2131
+ updateSensorCharacteristics(this.returnTemperatureZone1SensorService, returnTemperatureZone1);
2118
2132
  break;
2119
- case caseHotWaterSensor: //Hot Water
2133
+ case caseHotWaterSensor: // Hot Water
2120
2134
  name = hotWaterName;
2121
2135
  roomTemperature = tankWaterTemperature;
2122
2136
  flowTemperature = flowTemperatureWaterTank;
2123
2137
  returnTemperature = returnTemperatureWaterTank;
2124
2138
 
2125
- //updte characteristics
2126
- this.roomTemperatureWaterTankSensorService?.updateCharacteristic(Characteristic.CurrentTemperature, tankWaterTemperature);
2127
- this.flowTemperatureWaterTankSensorService?.updateCharacteristic(Characteristic.CurrentTemperature, flowTemperatureWaterTank);
2128
- this.returnTemperatureWaterTankSensorService?.updateCharacteristic(Characteristic.CurrentTemperature, returnTemperatureWaterTank);
2139
+ updateSensorCharacteristics(this.roomTemperatureWaterTankSensorService, tankWaterTemperature);
2140
+ updateSensorCharacteristics(this.flowTemperatureWaterTankSensorService, flowTemperatureWaterTank);
2141
+ updateSensorCharacteristics(this.returnTemperatureWaterTankSensorService, returnTemperatureWaterTank);
2129
2142
  break;
2130
- case caseZone2Sensor: //Zone 2
2143
+ case caseZone2Sensor: // Zone 2
2131
2144
  name = zone2Name;
2132
2145
  roomTemperature = roomTemperatureZone2;
2133
2146
  flowTemperature = flowTemperatureZone2;
2134
2147
  returnTemperature = returnTemperatureZone2;
2135
2148
 
2136
- //updte characteristics
2137
- this.roomTemperatureZone2SensorService?.updateCharacteristic(Characteristic.CurrentTemperature, roomTemperatureZone2);
2138
- this.flowTemperatureZone2SensorService?.updateCharacteristic(Characteristic.CurrentTemperature, flowTemperatureZone2);
2139
- this.returnTemperatureZone2SensorService?.updateCharacteristic(Characteristic.CurrentTemperature, returnTemperatureZone2);
2149
+ updateSensorCharacteristics(this.roomTemperatureZone2SensorService, roomTemperatureZone2);
2150
+ updateSensorCharacteristics(this.flowTemperatureZone2SensorService, flowTemperatureZone2);
2151
+ updateSensorCharacteristics(this.returnTemperatureZone2SensorService, returnTemperatureZone2);
2140
2152
  break;
2141
- };
2153
+ }
2154
+
2142
2155
 
2143
2156
  //add every sensor to array
2144
2157
  const sensor = {
@@ -2177,12 +2190,6 @@ class DeviceAtw extends EventEmitter {
2177
2190
  }
2178
2191
  this.accessory = obj;
2179
2192
 
2180
- //update services
2181
- for (const { type, value } of characteristics) {
2182
- if (!this.functions.isValidValue(value)) continue;
2183
- this.melCloudService?.[i]?.updateCharacteristic(type, value);
2184
- }
2185
-
2186
2193
  //other sensors
2187
2194
  this.inStandbyService?.updateCharacteristic(Characteristic.ContactSensorState, inStandbyMode);
2188
2195
  this.connectService?.updateCharacteristic(Characteristic.ContactSensorState, isConnected);