homebridge-melcloud-control 3.8.4-beta.5 → 3.8.4-beta.7

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.4-beta.5",
4
+ "version": "3.8.4-beta.7",
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
@@ -1045,6 +1045,7 @@ class DeviceAta extends EventEmitter {
1045
1045
  swingMode: swingFunction && vaneHorizontalDirection === 12 && vaneVerticalDirection === 7 ? 1 : 0,
1046
1046
  lockPhysicalControl: prohibitSetTemperature && prohibitOperationMode && prohibitPower ? 1 : 0,
1047
1047
  temperatureIncrement: temperatureIncrement,
1048
+ useFahrenheit: this.useFahrenheit,
1048
1049
  temperatureUnit: TemperatureDisplayUnits[this.useFahrenheit]
1049
1050
  };
1050
1051
 
@@ -1090,6 +1091,7 @@ class DeviceAta extends EventEmitter {
1090
1091
  };
1091
1092
 
1092
1093
  obj.currentOperationMode = !power ? 0 : inStandbyMode ? 1 : obj.currentOperationMode;
1094
+ obj.targetOperationMode = obj.targetOperationMode;
1093
1095
  obj.operationModeSetPropsMinValue = modelSupportsAuto && modelSupportsHeat ? 0 : !modelSupportsAuto && modelSupportsHeat ? 1 : modelSupportsAuto && !modelSupportsHeat ? 0 : 2;
1094
1096
  obj.operationModeSetPropsMaxValue = 2
1095
1097
  obj.operationModeSetPropsValidValues = modelSupportsAuto && modelSupportsHeat ? [0, 1, 2] : !modelSupportsAuto && modelSupportsHeat ? [1, 2] : modelSupportsAuto && !modelSupportsHeat ? [0, 2] : [2];
@@ -1191,7 +1193,6 @@ class DeviceAta extends EventEmitter {
1191
1193
  };
1192
1194
  break;
1193
1195
  };
1194
-
1195
1196
  this.accessory = obj;
1196
1197
 
1197
1198
  if (this.roomTemperatureSensorService) {
package/src/deviceatw.js CHANGED
@@ -91,11 +91,8 @@ class DeviceAtw extends EventEmitter {
91
91
  this.deviceData = {};
92
92
 
93
93
  //accessory
94
- this.accessory = {
95
- zones: [{}, {}, {}, {}],
96
- zonesSensors: [{}, {}, {}, {}]
97
- };
98
- this.accessory.useFahrenheit = useFahrenheit ? 1 : 0;
94
+ this.accessory = {};
95
+ this.useFahrenheit = useFahrenheit ? 1 : 0;
99
96
  };
100
97
 
101
98
  async externalIntegrations() {
@@ -1417,28 +1414,33 @@ class DeviceAtw extends EventEmitter {
1417
1414
  const returnTemperatureZone2 = deviceData.Device.ReturnTemperatureZone2;
1418
1415
 
1419
1416
  //accessory
1420
- this.accessory.presets = presetsOnServer;
1421
- this.accessory.power = power ? 1 : 0;
1422
- this.accessory.unitStatus = unitStatus;
1423
- this.accessory.idleZone1 = idleZone1;
1424
- this.accessory.idleZone2 = idleZone2;
1425
- this.accessory.temperatureIncrement = temperatureIncrement;
1426
- this.accessory.hasHeatPump = hasHeatPump;
1427
- this.accessory.hasZone1 = hasZone1;
1428
- this.accessory.hasHotWaterTank = hasHotWaterTank;
1429
- this.accessory.hasZone2 = hasZone2;
1430
- this.accessory.heatCoolModes = heatCoolModes;
1431
- this.accessory.caseHeatPump = caseHeatPump;
1432
- this.accessory.caseZone1 = caseZone1;
1433
- this.accessory.caseHotWater = caseHotWater;
1434
- this.accessory.caseZone2 = caseZone2;
1435
- this.accessory.zonesCount = zonesCount;
1436
- this.accessory.caseHeatPumpSensor = caseHeatPumpSensor;
1437
- this.accessory.caseZone1Sensor = caseZone1Sensor;
1438
- this.accessory.caseHotWaterSensor = caseHotWaterSensor;
1439
- this.accessory.caseZone2Sensor = caseZone2Sensor;
1440
- this.accessory.sensorsCount = zonesSensorsCount;
1441
- this.accessory.temperatureUnit = TemperatureDisplayUnits[this.accessory.useFahrenheit];
1417
+ const obj = {
1418
+ presets: presetsOnServer,
1419
+ power: power ? 1 : 0,
1420
+ unitStatus: unitStatus,
1421
+ idleZone1: idleZone1,
1422
+ idleZone2: idleZone2,
1423
+ temperatureIncrement: temperatureIncrement,
1424
+ hasHeatPump: hasHeatPump,
1425
+ hasZone1: hasZone1,
1426
+ hasHotWaterTank: hasHotWaterTank,
1427
+ hasZone2: hasZone2,
1428
+ heatCoolModes: heatCoolModes,
1429
+ caseHeatPump: caseHeatPump,
1430
+ caseZone1: caseZone1,
1431
+ caseHotWater: caseHotWater,
1432
+ caseZone2: caseZone2,
1433
+ zonesCount: zonesCount,
1434
+ caseHeatPumpSensor: caseHeatPumpSensor,
1435
+ caseZone1Sensor: caseZone1Sensor,
1436
+ caseHotWaterSensor: caseHotWaterSensor,
1437
+ caseZone2Sensor: caseZone2Sensor,
1438
+ sensorsCount: zonesSensorsCount,
1439
+ useFahrenheit: this.useFahrenheit,
1440
+ temperatureUnit: TemperatureDisplayUnits[this.useFahrenheit],
1441
+ zones: [{}, {}, {}, {}],
1442
+ zonesSensors: [{}, {}, {}, {}]
1443
+ };
1442
1444
 
1443
1445
  //default values
1444
1446
  let name = 'Heat Pump'
@@ -1564,7 +1566,7 @@ class DeviceAtw extends EventEmitter {
1564
1566
  .updateCharacteristic(Characteristic.TargetHeaterCoolerState, targetOperationMode)
1565
1567
  .updateCharacteristic(Characteristic.CurrentTemperature, roomTemperature)
1566
1568
  .updateCharacteristic(Characteristic.LockPhysicalControls, lockPhysicalControl)
1567
- .updateCharacteristic(Characteristic.TemperatureDisplayUnits, this.accessory.useFahrenheit);
1569
+ .updateCharacteristic(Characteristic.TemperatureDisplayUnits, obj.useFahrenheit);
1568
1570
  const updateDefCool = heatCoolModes === 0 || heatCoolModes === 2 ? this.melCloudServices[i].updateCharacteristic(Characteristic.CoolingThresholdTemperature, setTemperature) : false;
1569
1571
  const updateDefHeat = heatCoolModes === 0 || heatCoolModes === 1 ? this.melCloudServices[i].updateCharacteristic(Characteristic.HeatingThresholdTemperature, setTemperature) : false;
1570
1572
  }
@@ -1670,24 +1672,24 @@ class DeviceAtw extends EventEmitter {
1670
1672
  .updateCharacteristic(Characteristic.TargetHeatingCoolingState, targetOperationMode)
1671
1673
  .updateCharacteristic(Characteristic.CurrentTemperature, roomTemperature)
1672
1674
  .updateCharacteristic(Characteristic.TargetTemperature, setTemperature)
1673
- .updateCharacteristic(Characteristic.TemperatureDisplayUnits, this.accessory.useFahrenheit);
1675
+ .updateCharacteristic(Characteristic.TemperatureDisplayUnits, obj.useFahrenheit);
1674
1676
  }
1675
1677
  break;
1676
1678
  };
1677
1679
 
1678
1680
  //add value to zones arrays
1679
- this.accessory.zones[i].name = name;
1680
- this.accessory.zones[i].operationMode = operationModeZone;
1681
- this.accessory.zones[i].currentOperationMode = currentOperationMode;
1682
- this.accessory.zones[i].targetOperationMode = targetOperationMode;
1683
- this.accessory.zones[i].roomTemperature = roomTemperature;
1684
- this.accessory.zones[i].setTemperature = setTemperature;
1685
- this.accessory.zones[i].lockPhysicalControl = lockPhysicalControl;
1686
- this.accessory.zones[i].temperaturesSetPropsMinValue = temperatureSetPropsMinValue;
1687
- this.accessory.zones[i].temperaturesSetPropsMaxValue = temperatureSetPropsMaxValue;
1688
- const setPropsMinValue = this.startPrepareAccessory ? this.accessory.zones[i].operationModesSetPropsMinValue = operationModeSetPropsMinValue : false;
1689
- const setPropsMaxValue = this.startPrepareAccessory ? this.accessory.zones[i].operationModesSetPropsMaxValue = operationModeSetPropsMaxValue : false;
1690
- const setPropsValidValues = this.startPrepareAccessory ? this.accessory.zones[i].operationModesSetPropsValidValues = operationModeSetPropsValidValues : false;
1681
+ obj.zones[i].name = name;
1682
+ obj.zones[i].operationMode = operationModeZone;
1683
+ obj.zones[i].currentOperationMode = currentOperationMode;
1684
+ obj.zones[i].targetOperationMode = targetOperationMode;
1685
+ obj.zones[i].roomTemperature = roomTemperature;
1686
+ obj.zones[i].setTemperature = setTemperature;
1687
+ obj.zones[i].lockPhysicalControl = lockPhysicalControl;
1688
+ obj.zones[i].temperaturesSetPropsMinValue = temperatureSetPropsMinValue;
1689
+ obj.zones[i].temperaturesSetPropsMaxValue = temperatureSetPropsMaxValue;
1690
+ const setPropsMinValue = this.startPrepareAccessory ? obj.zones[i].operationModesSetPropsMinValue = operationModeSetPropsMinValue : false;
1691
+ const setPropsMaxValue = this.startPrepareAccessory ? obj.zones[i].operationModesSetPropsMaxValue = operationModeSetPropsMaxValue : false;
1692
+ const setPropsValidValues = this.startPrepareAccessory ? obj.zones[i].operationModesSetPropsValidValues = operationModeSetPropsValidValues : false;
1691
1693
 
1692
1694
  //log current state
1693
1695
  if (!this.disableLogInfo) {
@@ -1696,32 +1698,32 @@ class DeviceAtw extends EventEmitter {
1696
1698
  case caseHeatPump: //Heat Pump - HEAT, COOL, OFF
1697
1699
  this.emit('info', `${heatPumpName}, Power: ${power ? 'ON' : 'OFF'}`)
1698
1700
  this.emit('info', `${heatPumpName}, Operation mode: ${HeatPump.System[unitStatus]}`);
1699
- this.emit('info', `${heatPumpName},'Outdoor temperature: ${roomTemperature}${this.accessory.temperatureUnit}`);
1700
- this.emit('info', `${heatPumpName}, Temperature display unit: ${this.accessory.temperatureUnit}`);
1701
+ this.emit('info', `${heatPumpName},'Outdoor temperature: ${roomTemperature}${obj.temperatureUnit}`);
1702
+ this.emit('info', `${heatPumpName}, Temperature display unit: ${obj.temperatureUnit}`);
1701
1703
  this.emit('info', `${heatPumpName}, Lock physical controls: ${lockPhysicalControl ? 'LOCKED' : 'UNLOCKED'}`);
1702
1704
  break;
1703
1705
  case caseZone1: //Zone 1 - HEAT THERMOSTAT, HEAT FLOW, HEAT CURVE, COOL THERMOSTAT, COOL FLOW, FLOOR DRY UP
1704
1706
  operationModeText = idleZone1 ? HeatPump.ZoneOperation[6] : HeatPump.ZoneOperation[operationModeZone1];
1705
1707
  this.emit('info', `${zone1Name}, Operation mode: ${operationModeText}`);
1706
- this.emit('info', `${zone1Name}, Temperature: ${roomTemperature}${this.accessory.temperatureUnit}`);
1707
- this.emit('info', `${zone1Name}, Target temperature: ${setTemperature}${this.accessory.temperatureUnit}`)
1708
- this.emit('info', `${zone1Name}, Temperature display unit: ${this.accessory.temperatureUnit}`);
1708
+ this.emit('info', `${zone1Name}, Temperature: ${roomTemperature}${obj.temperatureUnit}`);
1709
+ this.emit('info', `${zone1Name}, Target temperature: ${setTemperature}${obj.temperatureUnit}`)
1710
+ this.emit('info', `${zone1Name}, Temperature display unit: ${obj.temperatureUnit}`);
1709
1711
  this.emit('info', `${zone1Name}, Lock physical controls: ${lockPhysicalControl ? 'LOCKED' : 'UNLOCKED'}`);
1710
1712
  break;
1711
1713
  case caseHotWater: //Hot Water - AUTO, HEAT NOW
1712
1714
  operationModeText = operationMode === 1 ? HeatPump.ForceDhw[1] : HeatPump.ForceDhw[forcedHotWaterMode ? 1 : 0];
1713
1715
  this.emit('info', `${hotWaterName}, Operation mode: ${operationModeText}`);
1714
- this.emit('info', `${hotWaterName}, Temperature: ${roomTemperature}${this.accessory.temperatureUnit}`);
1715
- this.emit('info', `${hotWaterName}, Target temperature: ${setTemperature}${this.accessory.temperatureUnit}`)
1716
- this.emit('info', `${hotWaterName}, Temperature display unit: ${this.accessory.temperatureUnit}`);
1716
+ this.emit('info', `${hotWaterName}, Temperature: ${roomTemperature}${obj.temperatureUnit}`);
1717
+ this.emit('info', `${hotWaterName}, Target temperature: ${setTemperature}${obj.temperatureUnit}`)
1718
+ this.emit('info', `${hotWaterName}, Temperature display unit: ${obj.temperatureUnit}`);
1717
1719
  this.emit('info', `${hotWaterName}, Lock physical controls: ${lockPhysicalControl ? 'LOCKED' : 'UNLOCKED'}`);
1718
1720
  break;
1719
1721
  case caseZone2: //Zone 2 - HEAT THERMOSTAT, HEAT FLOW, HEAT CURVE, COOL THERMOSTAT, COOL FLOW, FLOOR DRY UP
1720
1722
  operationModeText = idleZone2 ? HeatPump.ZoneOperation[6] : HeatPump.ZoneOperation[operationModeZone2];
1721
1723
  this.emit('info', `${zone2Name}, Operation mode: ${operationModeText}`);
1722
- this.emit('info', `${zone2Name}, Temperature: ${roomTemperature}${this.accessory.temperatureUnit}`);
1723
- this.emit('info', `${zone2Name}, Target temperature: ${setTemperature}${this.accessory.temperatureUnit}`)
1724
- this.emit('info', `${zone2Name}, Temperature display unit: ${this.accessory.temperatureUnit}`);
1724
+ this.emit('info', `${zone2Name}, Temperature: ${roomTemperature}${obj.temperatureUnit}`);
1725
+ this.emit('info', `${zone2Name}, Target temperature: ${setTemperature}${obj.temperatureUnit}`)
1726
+ this.emit('info', `${zone2Name}, Temperature display unit: ${obj.temperatureUnit}`);
1725
1727
  this.emit('info', `${zone2Name}, Lock physical controls: ${lockPhysicalControl ? 'LOCKED' : 'UNLOCKED'}`);
1726
1728
  break;
1727
1729
  };
@@ -1822,37 +1824,38 @@ class DeviceAtw extends EventEmitter {
1822
1824
  };
1823
1825
 
1824
1826
  //add value to sensors arrays
1825
- this.accessory.zonesSensors[i].name = name;
1826
- this.accessory.zonesSensors[i].roomTemperature = roomTemperature;
1827
- this.accessory.zonesSensors[i].flowTemperature = flowTemperature;
1828
- this.accessory.zonesSensors[i].returnTemperature = returnTemperature;
1827
+ obj.zonesSensors[i].name = name;
1828
+ obj.zonesSensors[i].roomTemperature = roomTemperature;
1829
+ obj.zonesSensors[i].flowTemperature = flowTemperature;
1830
+ obj.zonesSensors[i].returnTemperature = returnTemperature;
1829
1831
 
1830
1832
  //log current state
1831
1833
  if (!this.disableLogInfo) {
1832
1834
  switch (i) {
1833
1835
  case caseHeatPumpSensor: //Heat Pump - HEAT, COOL, OFF
1834
- const info = outdoorTemperature !== null ? this.emit('info', `${heatPumpName}, Outdoor temperature: ${outdoorTemperature}${this.accessory.temperatureUnit}`) : false;
1835
- const info0 = flowTemperatureHeatPump !== null ? this.emit('info', `${heatPumpName}, Flow temperature: ${flowTemperatureHeatPump}${this.accessory.temperatureUnit}`) : false;
1836
- const info1 = returnTemperatureHeatPump !== null ? this.emit('info', `${heatPumpName}, Return temperature: ${returnTemperatureHeatPump}${this.accessory.temperatureUnit}`) : false;
1836
+ const info = outdoorTemperature !== null ? this.emit('info', `${heatPumpName}, Outdoor temperature: ${outdoorTemperature}${obj.temperatureUnit}`) : false;
1837
+ const info0 = flowTemperatureHeatPump !== null ? this.emit('info', `${heatPumpName}, Flow temperature: ${flowTemperatureHeatPump}${obj.temperatureUnit}`) : false;
1838
+ const info1 = returnTemperatureHeatPump !== null ? this.emit('info', `${heatPumpName}, Return temperature: ${returnTemperatureHeatPump}${obj.temperatureUnit}`) : false;
1837
1839
  break;
1838
1840
  case caseZone1Sensor: //Zone 1 - HEAT THERMOSTAT, HEAT FLOW, HEAT CURVE, COOL THERMOSTAT, COOL FLOW, FLOOR DRY UP
1839
- const info2 = roomTemperatureZone1 !== null ? this.emit('info', `${zone1Name}, Room temperature: ${roomTemperatureZone1}${this.accessory.temperatureUnit}`) : false;
1840
- const info3 = flowTemperatureZone1 !== null ? this.emit('info', `${zone1Name}, Flow temperature: ${flowTemperatureZone1}${this.accessory.temperatureUnit}`) : false;
1841
- const info4 = returnTemperatureZone1 !== null ? this.emit('info', `${zone1Name}, Return temperature: ${returnTemperatureZone1}${this.accessory.temperatureUnit}`) : false;
1841
+ const info2 = roomTemperatureZone1 !== null ? this.emit('info', `${zone1Name}, Room temperature: ${roomTemperatureZone1}${obj.temperatureUnit}`) : false;
1842
+ const info3 = flowTemperatureZone1 !== null ? this.emit('info', `${zone1Name}, Flow temperature: ${flowTemperatureZone1}${obj.temperatureUnit}`) : false;
1843
+ const info4 = returnTemperatureZone1 !== null ? this.emit('info', `${zone1Name}, Return temperature: ${returnTemperatureZone1}${obj.temperatureUnit}`) : false;
1842
1844
  break;
1843
1845
  case caseHotWaterSensor: //Hot Water - AUTO, HEAT NOW
1844
- const info5 = tankWaterTemperature !== null ? this.emit('info', `${hotWaterName}, Temperature: ${tankWaterTemperature}${this.accessory.temperatureUnit}`) : false;
1845
- const info6 = flowTemperatureWaterTank !== null ? this.emit('info', `${hotWaterName}, Flow temperature: ${flowTemperatureWaterTank}${this.accessory.temperatureUnit}`) : false;
1846
- const info7 = returnTemperatureWaterTank !== null ? this.emit('info', `${hotWaterName}, Return temperature: ${returnTemperatureWaterTank}${this.accessory.temperatureUnit}`) : false;
1846
+ const info5 = tankWaterTemperature !== null ? this.emit('info', `${hotWaterName}, Temperature: ${tankWaterTemperature}${obj.temperatureUnit}`) : false;
1847
+ const info6 = flowTemperatureWaterTank !== null ? this.emit('info', `${hotWaterName}, Flow temperature: ${flowTemperatureWaterTank}${obj.temperatureUnit}`) : false;
1848
+ const info7 = returnTemperatureWaterTank !== null ? this.emit('info', `${hotWaterName}, Return temperature: ${returnTemperatureWaterTank}${obj.temperatureUnit}`) : false;
1847
1849
  break;
1848
1850
  case caseZone2Sensor: //Zone 2 - HEAT THERMOSTAT, HEAT FLOW, HEAT CURVE, COOL THERMOSTAT, COOL FLOW, FLOOR DRY UP
1849
- const info8 = roomTemperatureZone2 !== null ? this.emit('info', `${zone2Name}, Room temperature: ${roomTemperatureZone2}${this.accessory.temperatureUnit}`) : false;
1850
- const info9 = flowTemperatureZone2 !== null ? this.emit('info', `${zone2Name}, Flow temperature: ${flowTemperatureZone2}${this.accessory.temperatureUnit}`) : false;
1851
- const info10 = returnTemperatureZone2 !== null ? this.emit('info', `${zone2Name}, Return temperature: ${returnTemperatureZone2}${this.accessory.temperatureUnit}`) : false;
1851
+ const info8 = roomTemperatureZone2 !== null ? this.emit('info', `${zone2Name}, Room temperature: ${roomTemperatureZone2}${obj.temperatureUnit}`) : false;
1852
+ const info9 = flowTemperatureZone2 !== null ? this.emit('info', `${zone2Name}, Flow temperature: ${flowTemperatureZone2}${obj.temperatureUnit}`) : false;
1853
+ const info10 = returnTemperatureZone2 !== null ? this.emit('info', `${zone2Name}, Return temperature: ${returnTemperatureZone2}${obj.temperatureUnit}`) : false;
1852
1854
  break;
1853
1855
  };
1854
1856
  };
1855
1857
  };
1858
+ this.accessory = obj;
1856
1859
 
1857
1860
  //update presets state
1858
1861
  if (this.presetsConfigured.length > 0) {
package/src/deviceerv.js CHANGED
@@ -85,7 +85,7 @@ class DeviceErv extends EventEmitter {
85
85
 
86
86
  //accessory
87
87
  this.accessory = {};
88
- this.accessory.useFahrenheit = useFahrenheit ? 1 : 0;
88
+ this.useFahrenheit = useFahrenheit ? 1 : 0;
89
89
  };
90
90
 
91
91
  async externalIntegrations() {
@@ -936,93 +936,99 @@ class DeviceErv extends EventEmitter {
936
936
  const ventilationMode = deviceData.Device.VentilationMode;
937
937
 
938
938
  //accessory
939
- this.accessory.presets = presetsOnServer;
940
- this.accessory.hasRoomTemperature = hasRoomTemperature;
941
- this.accessory.hasSupplyTemperature = hasSupplyTemperature;
942
- this.accessory.hasOutdoorTemperature = hasOutdoorTemperature;
943
- this.accessory.hasCoolOperationMode = hasCoolOperationMode;
944
- this.accessory.hasHeatOperationMode = hasHeatOperationMode;
945
- this.accessory.hasCO2Sensor = hasCO2Sensor;
946
- this.accessory.roomCO2Level = roomCO2Level;
947
- this.accessory.roomCO2Detected = roomCO2Detected;
948
- this.accessory.hasPM25Sensor = hasPM25Sensor;
949
- this.accessory.pM25SensorStatus = pM25SensorStatus;
950
- this.accessory.pM25Level = pM25Level;
951
- this.accessory.pM25AirQuality = pM25AirQuality;
952
- this.accessory.hasAutoVentilationMode = hasAutoVentilationMode;
953
- this.accessory.hasBypassVentilationMode = hasBypassVentilationMode;
954
- this.accessory.hasAutomaticFanSpeed = hasAutomaticFanSpeed;
955
- this.accessory.coreMaintenanceRequired = coreMaintenanceRequired;
956
- this.accessory.filterMaintenanceRequired = filterMaintenanceRequired;
957
- this.accessory.actualVentilationMode = actualVentilationMode;
958
- this.accessory.numberOfFanSpeeds = numberOfFanSpeeds;
959
- this.accessory.power = power ? 1 : 0;
960
- this.accessory.operationMode = operationMode;
961
- this.accessory.ventilationMode = ventilationMode;
962
- this.accessory.roomTemperature = roomTemperature;
963
- this.accessory.supplyTemperature = supplyTemperature;
964
- this.accessory.outdoorTemperature = outdoorTemperature;
965
- this.accessory.setTemperature = setTemperature;
966
- this.accessory.defaultHeatingSetTemperature = defaultHeatingSetTemperature;
967
- this.accessory.defaultCoolingSetTemperature = defaultCoolingSetTemperature;
968
- this.accessory.lockPhysicalControl = 0;
969
- this.accessory.temperatureIncrement = temperatureIncrement;
970
- this.accessory.minTempHeat = minTempHeat;
971
- this.accessory.temperatureIncrement = maxTempHeat;
972
- this.accessory.minTempCoolDry = minTempCoolDry;
973
- this.accessory.maxTempCoolDry = maxTempCoolDry;
974
- this.accessory.temperatureUnit = TemperatureDisplayUnits[this.accessory.useFahrenheit];
939
+ const obj = {
940
+ presets: presetsOnServer,
941
+ hasRoomTemperature: hasRoomTemperature,
942
+ hasSupplyTemperature: hasSupplyTemperature,
943
+ hasOutdoorTemperature: hasOutdoorTemperature,
944
+ hasCoolOperationMode: hasCoolOperationMode,
945
+ hasHeatOperationMode: hasHeatOperationMode,
946
+ hasCO2Sensor: hasCO2Sensor,
947
+ roomCO2Level: roomCO2Level,
948
+ roomCO2Detected: roomCO2Detected,
949
+ hasPM25Sensor: hasPM25Sensor,
950
+ pM25SensorStatus: pM25SensorStatus,
951
+ pM25Level: pM25Level,
952
+ pM25AirQuality: pM25AirQuality,
953
+ hasAutoVentilationMode: hasAutoVentilationMode,
954
+ hasBypassVentilationMode: hasBypassVentilationMode,
955
+ hasAutomaticFanSpeed: hasAutomaticFanSpeed,
956
+ coreMaintenanceRequired: coreMaintenanceRequired,
957
+ filterMaintenanceRequired: filterMaintenanceRequired,
958
+ actualVentilationMode: actualVentilationMode,
959
+ numberOfFanSpeeds: numberOfFanSpeeds,
960
+ power: power ? 1 : 0,
961
+ operationMode: operationMode,
962
+ currentOperationMode: 0,
963
+ targetOperationMode: 0,
964
+ ventilationMode: ventilationMode,
965
+ roomTemperature: roomTemperature,
966
+ supplyTemperature: supplyTemperature,
967
+ outdoorTemperature: outdoorTemperature,
968
+ setTemperature: setTemperature,
969
+ defaultHeatingSetTemperature: defaultHeatingSetTemperature,
970
+ defaultCoolingSetTemperature: defaultCoolingSetTemperature,
971
+ lockPhysicalControl: 0,
972
+ temperatureIncrement: temperatureIncrement,
973
+ minTempHeat: minTempHeat,
974
+ temperatureIncrement: maxTempHeat,
975
+ minTempCoolDry: minTempCoolDry,
976
+ maxTempCoolDry: maxTempCoolDry,
977
+ useFahrenheit: this.useFahrenheit,
978
+ temperatureUnit: TemperatureDisplayUnits[this.useFahrenheit]
979
+ };
975
980
 
976
981
  //ventilation mode - 0, HEAT, 2, COOL, 4, 5, 6, FAN, AUTO
977
982
  switch (this.displayMode) {
978
983
  case 1: //Heater Cooler
979
984
  switch (ventilationMode) {
980
985
  case 0: //LOSSNAY
981
- this.accessory.currentOperationMode = 2; //INACTIVE, IDLE, HEATING, COOLIN
982
- this.accessory.targetOperationMode = 1; //AUTO, HEAT, COOL
986
+ obj.currentOperationMode = 2; //INACTIVE, IDLE, HEATING, COOLIN
987
+ obj.targetOperationMode = 1; //AUTO, HEAT, COOL
983
988
  break;
984
989
  case 1: //BYPASS
985
- this.accessory.currentOperationMode = 3;
986
- this.accessory.targetOperationMode = 2;
990
+ obj.currentOperationMode = 3;
991
+ obj.targetOperationMode = 2;
987
992
  break;
988
993
  case 2: //AUTO
989
994
  switch (actualVentilationMode) {
990
995
  case 0: //LOSSNAY
991
- this.accessory.currentOperationMode = 2;
996
+ obj.currentOperationMode = 2;
992
997
  break;
993
998
  case 1: //BYPASS
994
- this.accessory.currentOperationMode = 3;
999
+ obj.currentOperationMode = 3;
995
1000
  break;
996
1001
  default:
997
1002
  this.emit('warn', `Unknown actual ventilation mode: ${actualVentilationMode}`);
998
1003
  break;
999
1004
  };
1000
- this.accessory.targetOperationMode = 0;
1005
+ obj.targetOperationMode = 0;
1001
1006
  break;
1002
1007
  default:
1003
1008
  this.emit('warn', `Unknown ventilation mode: ${ventilationMode}`);
1004
1009
  break;
1005
1010
  };
1006
1011
 
1007
- this.accessory.currentOperationMode = !power ? 0 : this.accessory.currentOperationMode;
1008
- this.accessory.operationModeSetPropsMinValue = hasAutoVentilationMode ? 0 : 1;
1009
- this.accessory.operationModeSetPropsMaxValue = hasAutoVentilationMode ? 2 : 2;
1010
- this.accessory.operationModeSetPropsValidValues = hasAutoVentilationMode ? (hasBypassVentilationMode ? [0, 1, 2] : [0, 2]) : (hasBypassVentilationMode ? [1, 2] : [2]);
1012
+ obj.currentOperationMode = !power ? 0 : obj.currentOperationMode;
1013
+ obj.targetOperationMode = obj.targetOperationMode;
1014
+ obj.operationModeSetPropsMinValue = hasAutoVentilationMode ? 0 : 1;
1015
+ obj.operationModeSetPropsMaxValue = hasAutoVentilationMode ? 2 : 2;
1016
+ obj.operationModeSetPropsValidValues = hasAutoVentilationMode ? (hasBypassVentilationMode ? [0, 1, 2] : [0, 2]) : (hasBypassVentilationMode ? [1, 2] : [2]);
1011
1017
 
1012
1018
  //fan speed mode
1013
- this.accessory.fanSpeedSetPropsMaxValue = 2;
1019
+ obj.fanSpeedSetPropsMaxValue = 2;
1014
1020
  switch (numberOfFanSpeeds) {
1015
1021
  case 2: //Fan speed mode 2
1016
- this.accessory.fanSpeed = hasAutomaticFanSpeed ? [3, 1, 2][setFanSpeed] : [0, 1, 2][setFanSpeed];
1017
- this.accessory.fanSpeedSetPropsMaxValue = hasAutomaticFanSpeed ? 3 : 2;
1022
+ obj.fanSpeed = hasAutomaticFanSpeed ? [3, 1, 2][setFanSpeed] : [0, 1, 2][setFanSpeed];
1023
+ obj.fanSpeedSetPropsMaxValue = hasAutomaticFanSpeed ? 3 : 2;
1018
1024
  break;
1019
1025
  case 3: //Fan speed mode 3
1020
- this.this.accessory.fanSpeed = hasAutomaticFanSpeed ? [4, 1, 2, 3][setFanSpeed] : [0, 1, 2, 3][setFanSpeed];
1021
- this.accessory.fanSpeedSetPropsMaxValue = hasAutomaticFanSpeed ? 4 : 3;
1026
+ this.obj.fanSpeed = hasAutomaticFanSpeed ? [4, 1, 2, 3][setFanSpeed] : [0, 1, 2, 3][setFanSpeed];
1027
+ obj.fanSpeedSetPropsMaxValue = hasAutomaticFanSpeed ? 4 : 3;
1022
1028
  break;
1023
1029
  case 4: //Fan speed mode 4
1024
- this.accessory.fanSpeed = hasAutomaticFanSpeed ? [5, 1, 2, 3, 4][setFanSpeed] : [0, 1, 2, 3, 4][setFanSpeed];
1025
- this.accessory.fanSpeedSetPropsMaxValue = hasAutomaticFanSpeed ? 5 : 4;
1030
+ obj.fanSpeed = hasAutomaticFanSpeed ? [5, 1, 2, 3, 4][setFanSpeed] : [0, 1, 2, 3, 4][setFanSpeed];
1031
+ obj.fanSpeedSetPropsMaxValue = hasAutomaticFanSpeed ? 5 : 4;
1026
1032
  break;
1027
1033
  };
1028
1034
 
@@ -1030,12 +1036,12 @@ class DeviceErv extends EventEmitter {
1030
1036
  if (this.melCloudService) {
1031
1037
  this.melCloudService
1032
1038
  .updateCharacteristic(Characteristic.Active, power)
1033
- .updateCharacteristic(Characteristic.CurrentHeaterCoolerState, this.accessory.currentOperationMode)
1034
- .updateCharacteristic(Characteristic.TargetHeaterCoolerState, this.accessory.targetOperationMode)
1039
+ .updateCharacteristic(Characteristic.CurrentHeaterCoolerState, obj.currentOperationMode)
1040
+ .updateCharacteristic(Characteristic.TargetHeaterCoolerState, obj.targetOperationMode)
1035
1041
  .updateCharacteristic(Characteristic.CurrentTemperature, roomTemperature)
1036
- .updateCharacteristic(Characteristic.RotationSpeed, this.accessory.fanSpeed)
1037
- .updateCharacteristic(Characteristic.LockPhysicalControls, this.accessory.lockPhysicalControl)
1038
- .updateCharacteristic(Characteristic.TemperatureDisplayUnits, this.accessory.useFahrenheit);
1042
+ .updateCharacteristic(Characteristic.RotationSpeed, obj.fanSpeed)
1043
+ .updateCharacteristic(Characteristic.LockPhysicalControls, obj.lockPhysicalControl)
1044
+ .updateCharacteristic(Characteristic.TemperatureDisplayUnits, obj.useFahrenheit);
1039
1045
  const updateDefCool = hasCoolOperationMode ? this.melCloudService.updateCharacteristic(Characteristic.CoolingThresholdTemperature, defaultCoolingSetTemperature) : false;
1040
1046
  const updateDefHeat = hasHeatOperationMode ? this.melCloudService.updateCharacteristic(Characteristic.HeatingThresholdTemperature, defaultHeatingSetTemperature) : false;
1041
1047
  };
@@ -1044,49 +1050,50 @@ class DeviceErv extends EventEmitter {
1044
1050
  //operation mode - 0, HEAT, 2, COOL, 4, 5, 6, FAN, AUTO
1045
1051
  switch (ventilationMode) {
1046
1052
  case 0: //LOSSNAY
1047
- this.accessory.currentOperationMode = 1; //OFF, HEAT, COOL
1048
- this.accessory.targetOperationMode = 1; //OFF, HEAT, COOL, AUTO
1053
+ obj.currentOperationMode = 1; //OFF, HEAT, COOL
1054
+ obj.targetOperationMode = 1; //OFF, HEAT, COOL, AUTO
1049
1055
  break;
1050
1056
  case 1: //BYPASS
1051
- this.accessory.currentOperationMode = 2;
1052
- this.accessory.targetOperationMode = 2;
1057
+ obj.currentOperationMode = 2;
1058
+ obj.targetOperationMode = 2;
1053
1059
  break;
1054
1060
  case 2: //AUTO
1055
1061
  switch (actualVentilationMode) {
1056
1062
  case 0: //LOSSNAY
1057
- this.accessory.currentOperationMode = 1;
1063
+ obj.currentOperationMode = 1;
1058
1064
  break;
1059
1065
  case 1: //BYPASS
1060
- this.accessory.currentOperationMode = 2;
1066
+ obj.currentOperationMode = 2;
1061
1067
  break;
1062
1068
  default:
1063
1069
  this.emit('warn', `Unknown actual ventilation mode: ${actualVentilationMode}`);
1064
1070
  break;
1065
1071
  };
1066
- this.accessory.targetOperationMode = 3;
1072
+ obj.targetOperationMode = 3;
1067
1073
  break;
1068
1074
  default:
1069
1075
  this.emit('warn', `Unknown ventilation mode: ${ventilationMode}`);
1070
1076
  break;
1071
1077
  };
1072
1078
 
1073
- this.accessory.currentOperationMode = !power ? 0 : this.accessory.currentOperationMode;
1074
- this.accessory.targetOperationMode = !power ? 0 : this.accessory.targetOperationMode;
1075
- this.accessory.operationModeSetPropsMinValue = hasAutoVentilationMode ? 0 : 0;
1076
- this.accessory.operationModeSetPropsMaxValue = hasAutoVentilationMode ? 3 : 2;
1077
- this.accessory.operationModeSetPropsValidValues = hasAutoVentilationMode ? (hasBypassVentilationMode ? [0, 1, 2, 3] : [0, 2, 3]) : (hasBypassVentilationMode ? [0, 1, 2] : [0, 2]);
1079
+ obj.currentOperationMode = !power ? 0 : obj.currentOperationMode;
1080
+ obj.targetOperationMode = !power ? 0 : obj.targetOperationMode;
1081
+ obj.operationModeSetPropsMinValue = hasAutoVentilationMode ? 0 : 0;
1082
+ obj.operationModeSetPropsMaxValue = hasAutoVentilationMode ? 3 : 2;
1083
+ obj.operationModeSetPropsValidValues = hasAutoVentilationMode ? (hasBypassVentilationMode ? [0, 1, 2, 3] : [0, 2, 3]) : (hasBypassVentilationMode ? [0, 1, 2] : [0, 2]);
1078
1084
 
1079
1085
  //update characteristics
1080
1086
  if (this.melCloudService) {
1081
1087
  this.melCloudService
1082
- .updateCharacteristic(Characteristic.CurrentHeatingCoolingState, this.accessory.currentOperationMode)
1083
- .updateCharacteristic(Characteristic.TargetHeatingCoolingState, this.accessory.targetOperationMode)
1088
+ .updateCharacteristic(Characteristic.CurrentHeatingCoolingState, obj.currentOperationMode)
1089
+ .updateCharacteristic(Characteristic.TargetHeatingCoolingState, obj.targetOperationMode)
1084
1090
  .updateCharacteristic(Characteristic.CurrentTemperature, roomTemperature)
1085
1091
  .updateCharacteristic(Characteristic.TargetTemperature, setTemperature)
1086
- .updateCharacteristic(Characteristic.TemperatureDisplayUnits, this.accessory.useFahrenheit);
1092
+ .updateCharacteristic(Characteristic.TemperatureDisplayUnits, obj.useFahrenheit);
1087
1093
  };
1088
1094
  break;
1089
1095
  };
1096
+ this.accessory = obj;
1090
1097
 
1091
1098
  //update temperature sensors
1092
1099
  if (this.roomTemperatureSensorService) {
@@ -1185,7 +1192,7 @@ class DeviceErv extends EventEmitter {
1185
1192
  button.state = power ? (setFanSpeed === 4) : false;
1186
1193
  break;
1187
1194
  case 15: //PHYSICAL LOCK CONTROLS
1188
- button.state = (this.accessory.lockPhysicalControl === 1);
1195
+ button.state = (obj.lockPhysicalControl === 1);
1189
1196
  break;
1190
1197
  case 16: //ROOM TEMP HIDE
1191
1198
  button.state = (hideRoomTemperature === true);
@@ -1215,12 +1222,12 @@ class DeviceErv extends EventEmitter {
1215
1222
  this.emit('info', `Power: ${power ? 'ON' : 'OFF'}`);
1216
1223
  this.emit('info', `Target ventilation mode: ${Ventilation.OperationMode[ventilationMode]}`);
1217
1224
  this.emit('info', `Current ventilation mode: ${Ventilation.OperationMode[actualVentilationMode]}`);
1218
- this.emit('info', `Target temperature: ${setTemperature}${this.accessory.temperatureUnit}`);
1219
- this.emit('info', `Room temperature: ${roomTemperature}${this.accessory.temperatureUnit}`);
1220
- const info1 = hasSupplyTemperature && deviceData.Device.SupplyTemperature !== null ? this.emit('info', `Supply temperature: ${roomTemperature}${this.accessory.temperatureUnit}`) : false;
1221
- const info2 = hasOutdoorTemperature && deviceData.Device.OutdoorTemperature !== null ? this.emit('info', `Outdoor temperature: ${roomTemperature}${this.accessory.temperatureUnit}`) : false;
1225
+ this.emit('info', `Target temperature: ${setTemperature}${obj.temperatureUnit}`);
1226
+ this.emit('info', `Room temperature: ${roomTemperature}${obj.temperatureUnit}`);
1227
+ const info1 = hasSupplyTemperature && deviceData.Device.SupplyTemperature !== null ? this.emit('info', `Supply temperature: ${roomTemperature}${obj.temperatureUnit}`) : false;
1228
+ const info2 = hasOutdoorTemperature && deviceData.Device.OutdoorTemperature !== null ? this.emit('info', `Outdoor temperature: ${roomTemperature}${obj.temperatureUnit}`) : false;
1222
1229
  this.emit('info', `Fan speed mode: ${Ventilation.FanSpeed[setFanSpeed]}`);
1223
- this.emit('info', `Temperature display unit: ${this.accessory.temperatureUnit}`);
1230
+ this.emit('info', `Temperature display unit: ${obj.temperatureUnit}`);
1224
1231
  this.emit('info', `Core maintenance: ${Ventilation.CoreMaintenance[coreMaintenanceRequired]}`);
1225
1232
  this.emit('info', `Filter maintenance: ${Ventilation.FilterMaintenance[filterMaintenanceRequired]}`);
1226
1233
  const info5 = hasCO2Sensor ? this.emit('info', `CO2 detected: ${Ventilation.Co2Detected[roomCO2Detected]}`) : false;