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