homebridge-melcloud-control 3.8.0 → 3.8.2-beta.0

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/src/deviceatw.js CHANGED
@@ -22,8 +22,8 @@ class DeviceAtw extends EventEmitter {
22
22
  this.temperatureSensorFlow = device.temperatureSensorFlow || false;
23
23
  this.temperatureSensorReturn = device.temperatureSensorReturn || false;
24
24
  this.temperatureSensorFlowZone1 = device.temperatureSensorFlowZone1 || false;
25
- this.temperatureSensorReturnZone1 = device.temperatureSensorFlowWaterTank || false;
26
- this.temperatureSensorFlowWaterTank = device.temperatureSensorFlowZone1 || false;
25
+ this.temperatureSensorReturnZone1 = device.temperatureSensorReturnZone1 || false;
26
+ this.temperatureSensorFlowWaterTank = device.temperatureSensorFlowWaterTank || false;
27
27
  this.temperatureSensorReturnWaterTank = device.temperatureSensorReturnWaterTank || false;
28
28
  this.temperatureSensorFlowZone2 = device.temperatureSensorFlowZone2 || false;
29
29
  this.temperatureSensorReturnZone2 = device.temperatureSensorReturnZone2 || false;
@@ -49,6 +49,10 @@ class DeviceAtw extends EventEmitter {
49
49
  this.mqtt = mqtt;
50
50
  this.mqttConnected = false;
51
51
 
52
+ //variables
53
+ this.useFahrenheit = useFahrenheit ? 1 : 0;
54
+ this.temperatureUnit = TemperatureDisplayUnits[this.useFahrenheit];
55
+
52
56
  //function
53
57
  this.melCloud = melCloud; //function
54
58
 
@@ -94,12 +98,7 @@ class DeviceAtw extends EventEmitter {
94
98
  this.deviceData = {};
95
99
 
96
100
  //accessory
97
- this.accessory = {
98
- zones: [{}, {}, {}, {}],
99
- zonesSensors: [{}, {}, {}, {}]
100
- };
101
- this.accessory.useFahrenheit = useFahrenheit ? 1 : 0;
102
- this.accessory.temperatureUnit = TemperatureDisplayUnits[this.accessory.useFahrenheit];
101
+ this.mielHvac = {};
103
102
  };
104
103
 
105
104
  async externalIntegrations() {
@@ -288,19 +287,19 @@ class DeviceAtw extends EventEmitter {
288
287
  //prepare accessory
289
288
  async prepareAccessory(accountInfo, deviceData, deviceId, deviceTypeText, deviceName, accountName) {
290
289
  try {
291
- const presetsOnServer = this.accessory.presets;
292
- const zonesCount = this.accessory.zonesCount;
293
- const caseHeatPump = this.accessory.caseHeatPump;
294
- const caseZone1 = this.accessory.caseZone1;
295
- const caseHotWater = this.accessory.caseHotWater;
296
- const caseZone2 = this.accessory.caseZone2;
297
- const heatCoolModes = this.accessory.heatCoolModes;
298
-
299
- const zonesSensorsCount = this.accessory.sensorsCount;
300
- const caseHeatPumpSensor = this.accessory.caseHeatPumpSensor;
301
- const caseZone1Sensor = this.accessory.caseZone1Sensor;
302
- const caseHotWaterSensor = this.accessory.caseHotWaterSensor;
303
- const caseZone2Sensor = this.accessory.caseZone2Sensor;
290
+ const presetsOnServer = this.mielHvac.presets;
291
+ const zonesCount = this.mielHvac.zonesCount;
292
+ const caseHeatPump = this.mielHvac.caseHeatPump;
293
+ const caseZone1 = this.mielHvac.caseZone1;
294
+ const caseHotWater = this.mielHvac.caseHotWater;
295
+ const caseZone2 = this.mielHvac.caseZone2;
296
+ const heatCoolModes = this.mielHvac.heatCoolModes;
297
+
298
+ const zonesSensorsCount = this.mielHvac.sensorsCount;
299
+ const caseHeatPumpSensor = this.mielHvac.caseHeatPumpSensor;
300
+ const caseZone1Sensor = this.mielHvac.caseZone1Sensor;
301
+ const caseHotWaterSensor = this.mielHvac.caseHotWaterSensor;
302
+ const caseZone2Sensor = this.mielHvac.caseZone2Sensor;
304
303
 
305
304
  //accessory
306
305
  const debug = this.enableDebugMode ? this.emit('debug', `Prepare accessory`) : false;
@@ -321,7 +320,7 @@ class DeviceAtw extends EventEmitter {
321
320
  //services
322
321
  if (zonesCount > 0) {
323
322
  this.melCloudServices = [];
324
- this.accessory.zones.forEach((zone, i) => {
323
+ this.mielHvac.zones.forEach((zone, i) => {
325
324
  const zoneName = zone.name
326
325
  const serviceName = `${deviceTypeText} ${accessoryName}: ${zoneName}`;
327
326
  switch (this.displayMode) {
@@ -331,7 +330,7 @@ class DeviceAtw extends EventEmitter {
331
330
  melCloudService.setPrimaryService(true);
332
331
  melCloudService.getCharacteristic(Characteristic.Active)
333
332
  .onGet(async () => {
334
- const state = this.accessory.power;
333
+ const state = this.mielHvac.power;
335
334
  return state;
336
335
  })
337
336
  .onSet(async (state) => {
@@ -384,7 +383,7 @@ class DeviceAtw extends EventEmitter {
384
383
  deviceData.Device.EffectiveFlags = HeatPump.EffectiveFlags.Power + HeatPump.EffectiveFlags.OperationMode;
385
384
  break;
386
385
  };
387
- operationModeText = [HeatPump.System[0], HeatPump.System[deviceData.Device.UnitStatus]][this.accessory.power];
386
+ operationModeText = [HeatPump.System[0], HeatPump.System[deviceData.Device.UnitStatus]][this.mielHvac.power];
388
387
  break;
389
388
  case caseZone1: //Zone 1 - HEAT THERMOSTAT, HEAT FLOW, HEAT CURVE, COOL THERMOSTAT, COOL FLOW, FLOOR DRY UP
390
389
  switch (value) {
@@ -461,7 +460,7 @@ class DeviceAtw extends EventEmitter {
461
460
  .setProps({
462
461
  minValue: zone.temperaturesSetPropsMinValue,
463
462
  maxValue: zone.temperaturesSetPropsMaxValue,
464
- minStep: this.accessory.temperatureIncrement
463
+ minStep: this.mielHvac.temperatureIncrement
465
464
  })
466
465
  .onGet(async () => {
467
466
  const value = zone.setTemperature;
@@ -513,7 +512,7 @@ class DeviceAtw extends EventEmitter {
513
512
  };
514
513
 
515
514
  const set = i > 0 ? await this.melCloudAtw.send(deviceData) : false;
516
- const info = this.disableLogInfo || i === 0 ? false : this.emit('message', `${zoneName}, Set cooling threshold temperature: ${value}${this.accessory.temperatureUnit}`);
515
+ const info = this.disableLogInfo || i === 0 ? false : this.emit('message', `${zoneName}, Set cooling threshold temperature: ${value}${this.mielHvac.temperatureUnit}`);
517
516
  } catch (error) {
518
517
  this.emit('warn', `${zoneName}, Set cooling threshold temperature error: ${error}`);
519
518
  };
@@ -525,7 +524,7 @@ class DeviceAtw extends EventEmitter {
525
524
  .setProps({
526
525
  minValue: zone.temperaturesSetPropsMinValue,
527
526
  maxValue: zone.temperaturesSetPropsMaxValue,
528
- minStep: this.accessory.temperatureIncrement
527
+ minStep: this.mielHvac.temperatureIncrement
529
528
  })
530
529
  .onGet(async () => {
531
530
  const value = zone.setTemperature;
@@ -577,7 +576,7 @@ class DeviceAtw extends EventEmitter {
577
576
  };
578
577
 
579
578
  const set = i > 0 ? await this.melCloudAtw.send(deviceData) : false;
580
- const info = this.disableLogInfo || i === 0 ? false : this.emit('message', `${zoneName}, Set heating threshold temperature: ${value}${this.accessory.temperatureUnit}`);
579
+ const info = this.disableLogInfo || i === 0 ? false : this.emit('message', `${zoneName}, Set heating threshold temperature: ${value}${this.mielHvac.temperatureUnit}`);
581
580
  } catch (error) {
582
581
  this.emit('warn', `${zoneName}, Set heating threshold temperature error: ${error}`);
583
582
  };
@@ -620,14 +619,14 @@ class DeviceAtw extends EventEmitter {
620
619
  });
621
620
  melCloudService.getCharacteristic(Characteristic.TemperatureDisplayUnits)
622
621
  .onGet(async () => {
623
- const value = this.accessory.useFahrenheit;
622
+ const value = this.mielHvac.useFahrenheit;
624
623
  return value;
625
624
  })
626
625
  .onSet(async (value) => {
627
626
  try {
628
627
  accountInfo.UseFahrenheit = [false, true][value];
629
628
  await this.melCloud.send(accountInfo);
630
- this.accessory.useFahrenheit = value;
629
+ this.mielHvac.useFahrenheit = value;
631
630
  const info = this.disableLogInfo ? false : this.emit('message', `Set temperature display unit: ${TemperatureDisplayUnits[value]}`);
632
631
  } catch (error) {
633
632
  this.emit('warn', `Set temperature display unit error: ${error}`);
@@ -680,7 +679,7 @@ class DeviceAtw extends EventEmitter {
680
679
  deviceData.Device.EffectiveFlags = HeatPump.EffectiveFlags.Power;
681
680
  break;
682
681
  };
683
- operationModeText = [HeatPump.System[0], HeatPump.System[deviceData.Device.UnitStatus]][this.accessory.power];
682
+ operationModeText = [HeatPump.System[0], HeatPump.System[deviceData.Device.UnitStatus]][this.mielHvac.power];
684
683
  break;
685
684
  case caseZone1: //Zone 1 - HEAT THERMOSTAT, HEAT FLOW, HEAT CURVE, COOL THERMOSTAT, COOL FLOW, FLOOR DRY UP
686
685
  switch (value) {
@@ -767,7 +766,7 @@ class DeviceAtw extends EventEmitter {
767
766
  .setProps({
768
767
  minValue: zone.temperaturesSetPropsMinValue,
769
768
  maxValue: zone.temperaturesSetPropsMaxValue,
770
- minStep: this.accessory.temperatureIncrement
769
+ minStep: this.mielHvac.temperatureIncrement
771
770
  })
772
771
  .onGet(async () => {
773
772
  const value = zone.setTemperature;
@@ -795,21 +794,21 @@ class DeviceAtw extends EventEmitter {
795
794
  };
796
795
 
797
796
  const set = i > 0 ? await this.melCloudAtw.send(deviceData) : false;
798
- const info = this.disableLogInfo || i === 0 ? false : this.emit('message', `${zoneName}, Set temperature: ${value}${this.accessory.temperatureUnit}`);
797
+ const info = this.disableLogInfo || i === 0 ? false : this.emit('message', `${zoneName}, Set temperature: ${value}${this.mielHvac.temperatureUnit}`);
799
798
  } catch (error) {
800
799
  this.emit('warn', `${zoneName}, Set temperature error: ${error}`);
801
800
  };
802
801
  });
803
802
  melCloudServiceT.getCharacteristic(Characteristic.TemperatureDisplayUnits)
804
803
  .onGet(async () => {
805
- const value = this.accessory.useFahrenheit;
804
+ const value = this.mielHvac.useFahrenheit;
806
805
  return value;
807
806
  })
808
807
  .onSet(async (value) => {
809
808
  try {
810
809
  accountInfo.UseFahrenheit = [false, true][value];
811
810
  await this.melCloud.send(accountInfo);
812
- this.accessory.useFahrenheit = value;
811
+ this.mielHvac.useFahrenheit = value;
813
812
  const info = this.disableLogInfo ? false : this.emit('message', `Set temperature display unit: ${TemperatureDisplayUnits[value]}`);
814
813
  } catch (error) {
815
814
  this.emit('warn', `Set temperature display unit error: ${error}`);
@@ -824,7 +823,7 @@ class DeviceAtw extends EventEmitter {
824
823
 
825
824
  //sensor services
826
825
  if (zonesSensorsCount > 0) {
827
- this.accessory.zonesSensors.forEach((zone, i) => {
826
+ this.mielHvac.zonesSensors.forEach((zone, i) => {
828
827
  const zoneName = zone.name
829
828
  const serviceName = `${deviceTypeText} ${accessoryName}: ${zoneName}`;
830
829
  switch (i) {
@@ -1417,27 +1416,33 @@ class DeviceAtw extends EventEmitter {
1417
1416
  const returnTemperatureZone2 = deviceData.Device.ReturnTemperatureZone2;
1418
1417
 
1419
1418
  //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;
1419
+ const obj = {
1420
+ presets: presetsOnServer,
1421
+ power: power ? 1 : 0,
1422
+ unitStatus: unitStatus,
1423
+ idleZone1: idleZone1,
1424
+ idleZone2: idleZone2,
1425
+ temperatureIncrement: temperatureIncrement,
1426
+ hasHeatPump: hasHeatPump,
1427
+ hasZone1: hasZone1,
1428
+ hasHotWaterTank: hasHotWaterTank,
1429
+ hasZone2: hasZone2,
1430
+ heatCoolModes: heatCoolModes,
1431
+ caseHeatPump: caseHeatPump,
1432
+ caseZone1: caseZone1,
1433
+ caseHotWater: caseHotWater,
1434
+ caseZone2: caseZone2,
1435
+ zonesCount: zonesCount,
1436
+ caseHeatPumpSensor: caseHeatPumpSensor,
1437
+ caseZone1Sensor: caseZone1Sensor,
1438
+ caseHotWaterSensor: caseHotWaterSensor,
1439
+ caseZone2Sensor: caseZone2Sensor,
1440
+ sensorsCount: zonesSensorsCount,
1441
+ useFahrenheit: this.useFahrenheit,
1442
+ temperatureUnit: this.useFahrenheit,
1443
+ zones: [{}, {}, {}, {}],
1444
+ zonesSensors: [{}, {}, {}, {}]
1445
+ };
1441
1446
 
1442
1447
  //default values
1443
1448
  let name = 'Heat Pump'
@@ -1563,7 +1568,7 @@ class DeviceAtw extends EventEmitter {
1563
1568
  .updateCharacteristic(Characteristic.TargetHeaterCoolerState, targetOperationMode)
1564
1569
  .updateCharacteristic(Characteristic.CurrentTemperature, roomTemperature)
1565
1570
  .updateCharacteristic(Characteristic.LockPhysicalControls, lockPhysicalControl)
1566
- .updateCharacteristic(Characteristic.TemperatureDisplayUnits, this.accessory.useFahrenheit);
1571
+ .updateCharacteristic(Characteristic.TemperatureDisplayUnits, obj.useFahrenheit);
1567
1572
  const updateDefCool = heatCoolModes === 0 || heatCoolModes === 2 ? this.melCloudServices[i].updateCharacteristic(Characteristic.CoolingThresholdTemperature, setTemperature) : false;
1568
1573
  const updateDefHeat = heatCoolModes === 0 || heatCoolModes === 1 ? this.melCloudServices[i].updateCharacteristic(Characteristic.HeatingThresholdTemperature, setTemperature) : false;
1569
1574
  }
@@ -1669,24 +1674,24 @@ class DeviceAtw extends EventEmitter {
1669
1674
  .updateCharacteristic(Characteristic.TargetHeatingCoolingState, targetOperationMode)
1670
1675
  .updateCharacteristic(Characteristic.CurrentTemperature, roomTemperature)
1671
1676
  .updateCharacteristic(Characteristic.TargetTemperature, setTemperature)
1672
- .updateCharacteristic(Characteristic.TemperatureDisplayUnits, this.accessory.useFahrenheit);
1677
+ .updateCharacteristic(Characteristic.TemperatureDisplayUnits, obj.useFahrenheit);
1673
1678
  }
1674
1679
  break;
1675
1680
  };
1676
1681
 
1677
1682
  //add value to zones arrays
1678
- this.accessory.zones[i].name = name;
1679
- this.accessory.zones[i].operationMode = operationModeZone;
1680
- this.accessory.zones[i].currentOperationMode = currentOperationMode;
1681
- this.accessory.zones[i].targetOperationMode = targetOperationMode;
1682
- this.accessory.zones[i].roomTemperature = roomTemperature;
1683
- this.accessory.zones[i].setTemperature = setTemperature;
1684
- this.accessory.zones[i].lockPhysicalControl = lockPhysicalControl;
1685
- this.accessory.zones[i].temperaturesSetPropsMinValue = temperatureSetPropsMinValue;
1686
- this.accessory.zones[i].temperaturesSetPropsMaxValue = temperatureSetPropsMaxValue;
1687
- const setPropsMinValue = this.startPrepareAccessory ? this.accessory.zones[i].operationModesSetPropsMinValue = operationModeSetPropsMinValue : false;
1688
- const setPropsMaxValue = this.startPrepareAccessory ? this.accessory.zones[i].operationModesSetPropsMaxValue = operationModeSetPropsMaxValue : false;
1689
- const setPropsValidValues = this.startPrepareAccessory ? this.accessory.zones[i].operationModesSetPropsValidValues = operationModeSetPropsValidValues : false;
1683
+ obj.zones[i].name = name;
1684
+ obj.zones[i].operationMode = operationModeZone;
1685
+ obj.zones[i].currentOperationMode = currentOperationMode;
1686
+ obj.zones[i].targetOperationMode = targetOperationMode;
1687
+ obj.zones[i].roomTemperature = roomTemperature;
1688
+ obj.zones[i].setTemperature = setTemperature;
1689
+ obj.zones[i].lockPhysicalControl = lockPhysicalControl;
1690
+ obj.zones[i].temperaturesSetPropsMinValue = temperatureSetPropsMinValue;
1691
+ obj.zones[i].temperaturesSetPropsMaxValue = temperatureSetPropsMaxValue;
1692
+ const setPropsMinValue = this.startPrepareAccessory ? obj.zones[i].operationModesSetPropsMinValue = operationModeSetPropsMinValue : false;
1693
+ const setPropsMaxValue = this.startPrepareAccessory ? obj.zones[i].operationModesSetPropsMaxValue = operationModeSetPropsMaxValue : false;
1694
+ const setPropsValidValues = this.startPrepareAccessory ? obj.zones[i].operationModesSetPropsValidValues = operationModeSetPropsValidValues : false;
1690
1695
 
1691
1696
  //log current state
1692
1697
  if (!this.disableLogInfo) {
@@ -1695,32 +1700,32 @@ class DeviceAtw extends EventEmitter {
1695
1700
  case caseHeatPump: //Heat Pump - HEAT, COOL, OFF
1696
1701
  this.emit('message', `${heatPumpName}, Power: ${power ? 'ON' : 'OFF'}`)
1697
1702
  this.emit('message', `${heatPumpName}, Operation mode: ${HeatPump.System[unitStatus]}`);
1698
- this.emit('message', `${heatPumpName},'Outdoor temperature: ${roomTemperature}${this.accessory.temperatureUnit}`);
1699
- this.emit('message', `${heatPumpName}, Temperature display unit: ${this.accessory.temperatureUnit}`);
1703
+ this.emit('message', `${heatPumpName},'Outdoor temperature: ${roomTemperature}${obj.temperatureUnit}`);
1704
+ this.emit('message', `${heatPumpName}, Temperature display unit: ${obj.temperatureUnit}`);
1700
1705
  this.emit('message', `${heatPumpName}, Lock physical controls: ${lockPhysicalControl ? 'LOCKED' : 'UNLOCKED'}`);
1701
1706
  break;
1702
1707
  case caseZone1: //Zone 1 - HEAT THERMOSTAT, HEAT FLOW, HEAT CURVE, COOL THERMOSTAT, COOL FLOW, FLOOR DRY UP
1703
1708
  operationModeText = idleZone1 ? HeatPump.ZoneOperation[6] : HeatPump.ZoneOperation[operationModeZone1];
1704
1709
  this.emit('message', `${zone1Name}, Operation mode: ${operationModeText}`);
1705
- this.emit('message', `${zone1Name}, Temperature: ${roomTemperature}${this.accessory.temperatureUnit}`);
1706
- this.emit('message', `${zone1Name}, Target temperature: ${setTemperature}${this.accessory.temperatureUnit}`)
1707
- this.emit('message', `${zone1Name}, Temperature display unit: ${this.accessory.temperatureUnit}`);
1710
+ this.emit('message', `${zone1Name}, Temperature: ${roomTemperature}${obj.temperatureUnit}`);
1711
+ this.emit('message', `${zone1Name}, Target temperature: ${setTemperature}${obj.temperatureUnit}`)
1712
+ this.emit('message', `${zone1Name}, Temperature display unit: ${obj.temperatureUnit}`);
1708
1713
  this.emit('message', `${zone1Name}, Lock physical controls: ${lockPhysicalControl ? 'LOCKED' : 'UNLOCKED'}`);
1709
1714
  break;
1710
1715
  case caseHotWater: //Hot Water - AUTO, HEAT NOW
1711
1716
  operationModeText = operationMode === 1 ? HeatPump.ForceDhw[1] : HeatPump.ForceDhw[forcedHotWaterMode ? 1 : 0];
1712
1717
  this.emit('message', `${hotWaterName}, Operation mode: ${operationModeText}`);
1713
- this.emit('message', `${hotWaterName}, Temperature: ${roomTemperature}${this.accessory.temperatureUnit}`);
1714
- this.emit('message', `${hotWaterName}, Target temperature: ${setTemperature}${this.accessory.temperatureUnit}`)
1715
- this.emit('message', `${hotWaterName}, Temperature display unit: ${this.accessory.temperatureUnit}`);
1718
+ this.emit('message', `${hotWaterName}, Temperature: ${roomTemperature}${obj.temperatureUnit}`);
1719
+ this.emit('message', `${hotWaterName}, Target temperature: ${setTemperature}${obj.temperatureUnit}`)
1720
+ this.emit('message', `${hotWaterName}, Temperature display unit: ${obj.temperatureUnit}`);
1716
1721
  this.emit('message', `${hotWaterName}, Lock physical controls: ${lockPhysicalControl ? 'LOCKED' : 'UNLOCKED'}`);
1717
1722
  break;
1718
1723
  case caseZone2: //Zone 2 - HEAT THERMOSTAT, HEAT FLOW, HEAT CURVE, COOL THERMOSTAT, COOL FLOW, FLOOR DRY UP
1719
1724
  operationModeText = idleZone2 ? HeatPump.ZoneOperation[6] : HeatPump.ZoneOperation[operationModeZone2];
1720
1725
  this.emit('message', `${zone2Name}, Operation mode: ${operationModeText}`);
1721
- this.emit('message', `${zone2Name}, Temperature: ${roomTemperature}${this.accessory.temperatureUnit}`);
1722
- this.emit('message', `${zone2Name}, Target temperature: ${setTemperature}${this.accessory.temperatureUnit}`)
1723
- this.emit('message', `${zone2Name}, Temperature display unit: ${this.accessory.temperatureUnit}`);
1726
+ this.emit('message', `${zone2Name}, Temperature: ${roomTemperature}${obj.temperatureUnit}`);
1727
+ this.emit('message', `${zone2Name}, Target temperature: ${setTemperature}${obj.temperatureUnit}`)
1728
+ this.emit('message', `${zone2Name}, Temperature display unit: ${obj.temperatureUnit}`);
1724
1729
  this.emit('message', `${zone2Name}, Lock physical controls: ${lockPhysicalControl ? 'LOCKED' : 'UNLOCKED'}`);
1725
1730
  break;
1726
1731
  };
@@ -1821,36 +1826,38 @@ class DeviceAtw extends EventEmitter {
1821
1826
  };
1822
1827
 
1823
1828
  //add value to sensors arrays
1824
- this.accessory.zonesSensors[i].roomTemperature = roomTemperature;
1825
- this.accessory.zonesSensors[i].flowTemperature = flowTemperature;
1826
- this.accessory.zonesSensors[i].returnTemperature = returnTemperature;
1829
+ obj.zonesSensors[i].name = name;
1830
+ obj.zonesSensors[i].roomTemperature = roomTemperature;
1831
+ obj.zonesSensors[i].flowTemperature = flowTemperature;
1832
+ obj.zonesSensors[i].returnTemperature = returnTemperature;
1827
1833
 
1828
1834
  //log current state
1829
1835
  if (!this.disableLogInfo) {
1830
1836
  switch (i) {
1831
1837
  case caseHeatPumpSensor: //Heat Pump - HEAT, COOL, OFF
1832
- const info = outdoorTemperature !== null ? this.emit('message', `${heatPumpName}, Outdoor temperature: ${outdoorTemperature}${this.accessory.temperatureUnit}`) : false;
1833
- const info0 = flowTemperatureHeatPump !== null ? this.emit('message', `${heatPumpName}, Flow temperature: ${flowTemperatureHeatPump}${this.accessory.temperatureUnit}`) : false;
1834
- const info1 = returnTemperatureHeatPump !== null ? this.emit('message', `${heatPumpName}, Return temperature: ${returnTemperatureHeatPump}${this.accessory.temperatureUnit}`) : false;
1838
+ const info = outdoorTemperature !== null ? this.emit('message', `${heatPumpName}, Outdoor temperature: ${outdoorTemperature}${obj.temperatureUnit}`) : false;
1839
+ const info0 = flowTemperatureHeatPump !== null ? this.emit('message', `${heatPumpName}, Flow temperature: ${flowTemperatureHeatPump}${obj.temperatureUnit}`) : false;
1840
+ const info1 = returnTemperatureHeatPump !== null ? this.emit('message', `${heatPumpName}, Return temperature: ${returnTemperatureHeatPump}${obj.temperatureUnit}`) : false;
1835
1841
  break;
1836
1842
  case caseZone1Sensor: //Zone 1 - HEAT THERMOSTAT, HEAT FLOW, HEAT CURVE, COOL THERMOSTAT, COOL FLOW, FLOOR DRY UP
1837
- const info2 = roomTemperatureZone1 !== null ? this.emit('message', `${zone1Name}, Room temperature: ${roomTemperatureZone1}${this.accessory.temperatureUnit}`) : false;
1838
- const info3 = flowTemperatureZone1 !== null ? this.emit('message', `${zone1Name}, Flow temperature: ${flowTemperatureZone1}${this.accessory.temperatureUnit}`) : false;
1839
- const info4 = returnTemperatureZone1 !== null ? this.emit('message', `${zone1Name}, Return temperature: ${returnTemperatureZone1}${this.accessory.temperatureUnit}`) : false;
1843
+ const info2 = roomTemperatureZone1 !== null ? this.emit('message', `${zone1Name}, Room temperature: ${roomTemperatureZone1}${obj.temperatureUnit}`) : false;
1844
+ const info3 = flowTemperatureZone1 !== null ? this.emit('message', `${zone1Name}, Flow temperature: ${flowTemperatureZone1}${obj.temperatureUnit}`) : false;
1845
+ const info4 = returnTemperatureZone1 !== null ? this.emit('message', `${zone1Name}, Return temperature: ${returnTemperatureZone1}${obj.temperatureUnit}`) : false;
1840
1846
  break;
1841
1847
  case caseHotWaterSensor: //Hot Water - AUTO, HEAT NOW
1842
- const info5 = tankWaterTemperature !== null ? this.emit('message', `${hotWaterName}, Temperature: ${tankWaterTemperature}${this.accessory.temperatureUnit}`) : false;
1843
- const info6 = flowTemperatureWaterTank !== null ? this.emit('message', `${hotWaterName}, Flow temperature: ${flowTemperatureWaterTank}${this.accessory.temperatureUnit}`) : false;
1844
- const info7 = returnTemperatureWaterTank !== null ? this.emit('message', `${hotWaterName}, Return temperature: ${returnTemperatureWaterTank}${this.accessory.temperatureUnit}`) : false;
1848
+ const info5 = tankWaterTemperature !== null ? this.emit('message', `${hotWaterName}, Temperature: ${tankWaterTemperature}${obj.temperatureUnit}`) : false;
1849
+ const info6 = flowTemperatureWaterTank !== null ? this.emit('message', `${hotWaterName}, Flow temperature: ${flowTemperatureWaterTank}${obj.temperatureUnit}`) : false;
1850
+ const info7 = returnTemperatureWaterTank !== null ? this.emit('message', `${hotWaterName}, Return temperature: ${returnTemperatureWaterTank}${obj.temperatureUnit}`) : false;
1845
1851
  break;
1846
1852
  case caseZone2Sensor: //Zone 2 - HEAT THERMOSTAT, HEAT FLOW, HEAT CURVE, COOL THERMOSTAT, COOL FLOW, FLOOR DRY UP
1847
- const info8 = roomTemperatureZone2 !== null ? this.emit('message', `${zone2Name}, Room temperature: ${roomTemperatureZone2}${this.accessory.temperatureUnit}`) : false;
1848
- const info9 = flowTemperatureZone2 !== null ? this.emit('message', `${zone2Name}, Flow temperature: ${flowTemperatureZone2}${this.accessory.temperatureUnit}`) : false;
1849
- const info10 = returnTemperatureZone2 !== null ? this.emit('message', `${zone2Name}, Return temperature: ${returnTemperatureZone2}${this.accessory.temperatureUnit}`) : false;
1853
+ const info8 = roomTemperatureZone2 !== null ? this.emit('message', `${zone2Name}, Room temperature: ${roomTemperatureZone2}${obj.temperatureUnit}`) : false;
1854
+ const info9 = flowTemperatureZone2 !== null ? this.emit('message', `${zone2Name}, Flow temperature: ${flowTemperatureZone2}${obj.temperatureUnit}`) : false;
1855
+ const info10 = returnTemperatureZone2 !== null ? this.emit('message', `${zone2Name}, Return temperature: ${returnTemperatureZone2}${obj.temperatureUnit}`) : false;
1850
1856
  break;
1851
1857
  };
1852
1858
  };
1853
1859
  };
1860
+ this.mielHvac = obj;
1854
1861
 
1855
1862
  //update presets state
1856
1863
  if (this.presetsConfigured.length > 0) {
@@ -1880,8 +1887,7 @@ class DeviceAtw extends EventEmitter {
1880
1887
 
1881
1888
  //update buttons state
1882
1889
  if (this.buttonsConfiguredCount > 0) {
1883
- for (let i = 0; i < this.buttonsConfiguredCount; i++) {
1884
- const button = this.buttonsConfigured[i];
1890
+ this.buttonsConfigured.forEach((button, i) => {
1885
1891
  const mode = button.mode;
1886
1892
  switch (mode) {
1887
1893
  case 0: //POWER ON,OFF
@@ -1964,7 +1970,7 @@ class DeviceAtw extends EventEmitter {
1964
1970
  this.buttonsServices[i]
1965
1971
  .updateCharacteristic(characteristicType, button.state)
1966
1972
  };
1967
- };
1973
+ });
1968
1974
  };
1969
1975
 
1970
1976
  //prepare accessory