homebridge-melcloud-control 2.3.1-beta.2 → 2.3.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -21,6 +21,21 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
21
21
 
22
22
  - After update to v2 from v1 only RESTFull and MQTT config settings need to be updated in config.
23
23
 
24
+ ## [2.4.0] - (28.08.2024)
25
+
26
+ ## Changes
27
+
28
+ - required upcomming homebridge 2.x.x required
29
+ - bump dependencies
30
+ - config schema updated
31
+
32
+ ## [2.3.3] - (28.08.2024)
33
+
34
+ ## Changes
35
+
36
+ - cleanup and refactor accessory code
37
+ - bump dependencies
38
+
24
39
  ## [2.3.0] - (25.08.2024)
25
40
 
26
41
  ## Changes
@@ -629,7 +629,7 @@
629
629
  ]
630
630
  }
631
631
  ],
632
- "description": "Select the characterristic type to be displayed in HomeKit app.",
632
+ "description": "Select the characteristic type to be displayed in HomeKit app.",
633
633
  "required": true
634
634
  },
635
635
  "namePrefix": {
@@ -956,7 +956,7 @@
956
956
  ]
957
957
  }
958
958
  ],
959
- "description": "Select the characterristic type to be displayed in HomeKit app.",
959
+ "description": "Select the characteristic type to be displayed in HomeKit app.",
960
960
  "required": true
961
961
  },
962
962
  "namePrefix": {
@@ -1193,7 +1193,7 @@
1193
1193
  ]
1194
1194
  }
1195
1195
  ],
1196
- "description": "Select the characterristic type to be displayed in HomeKit app.",
1196
+ "description": "Select the characteristic type to be displayed in HomeKit app.",
1197
1197
  "required": false
1198
1198
  },
1199
1199
  "namePrefix": {
package/index.js CHANGED
@@ -98,13 +98,13 @@ class MelCloudPlatform {
98
98
 
99
99
  //publish device
100
100
  api.publishExternalAccessories(CONSTANTS.PluginName, [accessory]);
101
- log.success(`${accountName}, ${deviceTypeText} ${deviceName}, published as external accessory.`);
101
+ log.info(`${accountName}, ${deviceTypeText} ${deviceName}, published as external accessory.`);
102
102
  })
103
103
  .on('devInfo', (devInfo) => {
104
104
  log.info(devInfo);
105
105
  })
106
106
  .on('success', (message) => {
107
- log.success(`${deviceTypeText}, ${deviceName}, ${message}`);
107
+ log.info(`${deviceTypeText}, ${deviceName}, ${message}`);
108
108
  })
109
109
  .on('message', (message) => {
110
110
  log.info(`${deviceTypeText}, ${deviceName}, ${message}`);
@@ -130,13 +130,13 @@ class MelCloudPlatform {
130
130
 
131
131
  //publish device
132
132
  api.publishExternalAccessories(CONSTANTS.PluginName, [accessory]);
133
- log.success(`${accountName}, ${deviceTypeText} ${deviceName}, published as external accessory.`);
133
+ log.info(`${accountName}, ${deviceTypeText} ${deviceName}, published as external accessory.`);
134
134
  })
135
135
  .on('devInfo', (devInfo) => {
136
136
  log.info(devInfo);
137
137
  })
138
138
  .on('success', (message) => {
139
- log.success(`${deviceTypeText}, ${deviceName}, ${message}`);
139
+ log.info(`${deviceTypeText}, ${deviceName}, ${message}`);
140
140
  })
141
141
  .on('message', (message) => {
142
142
  log.info(`${deviceTypeText}, ${deviceName}, ${message}`);
@@ -162,13 +162,13 @@ class MelCloudPlatform {
162
162
 
163
163
  //publish device
164
164
  api.publishExternalAccessories(CONSTANTS.PluginName, [accessory]);
165
- log.success(`${accountName}, ${deviceTypeText} ${deviceName}, published as external accessory.`);
165
+ log.info(`${accountName}, ${deviceTypeText} ${deviceName}, published as external accessory.`);
166
166
  })
167
167
  .on('devInfo', (devInfo) => {
168
168
  log.info(devInfo);
169
169
  })
170
170
  .on('success', (message) => {
171
- log.success(`${deviceTypeText}, ${deviceName}, ${message}`);
171
+ log.info(`${deviceTypeText}, ${deviceName}, ${message}`);
172
172
  })
173
173
  .on('message', (message) => {
174
174
  log.info(`${deviceTypeText}, ${deviceName}, ${message}`);
@@ -189,7 +189,7 @@ class MelCloudPlatform {
189
189
  }
190
190
  })
191
191
  .on('success', (message) => {
192
- log.success(`Account ${accountName}, ${message}`);
192
+ log.info(`Account ${accountName}, ${message}`);
193
193
  })
194
194
  .on('message', (message) => {
195
195
  log.info(`Account ${accountName}, ${message}`);
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "displayName": "MELCloud Control",
3
3
  "name": "homebridge-melcloud-control",
4
- "version": "2.3.1-beta.2",
4
+ "version": "2.3.3",
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
@@ -197,8 +197,7 @@ class DeviceAta extends EventEmitter {
197
197
  const offline = deviceState.Offline;
198
198
 
199
199
  //presets
200
- const presets = deviceData.Presets ?? [];
201
- this.presetsCount = this.presetsEnabled ? presets.length : 0;
200
+ const presets = this.presetsEnabled ? deviceData.Presets : [];
202
201
 
203
202
  //accessory
204
203
  this.accessory.power = power;
@@ -212,6 +211,8 @@ class DeviceAta extends EventEmitter {
212
211
  this.accessory.targetOperationMode = 0;
213
212
  this.accessory.vaneHorizontal = vaneHorizontal;
214
213
  this.accessory.vaneVertical = vaneVertical;
214
+ this.accessory.swingMode = swingFunction && vaneHorizontal === 12 && vaneVertical === 7 ? 1 : 0;
215
+ this.accessory.lockPhysicalControl = prohibitSetTemperature && prohibitOperationMode && prohibitPower ? 1 : 0;
215
216
  this.accessory.temperatureIncrement = temperatureIncrement;
216
217
  this.accessory.useFahrenheit = useFahrenheit;
217
218
  this.accessory.hasAutomaticFanSpeed = hasAutomaticFanSpeed;
@@ -312,12 +313,6 @@ class DeviceAta extends EventEmitter {
312
313
  };
313
314
  };
314
315
 
315
- //swing and vane mode
316
- this.accessory.swingMode = swingFunction && vaneHorizontal === 12 && vaneVertical === 7 ? 1 : 0;
317
-
318
- //lock physical controls
319
- this.accessory.lockPhysicalControl = prohibitSetTemperature && prohibitOperationMode && prohibitPower ? 1 : 0;
320
-
321
316
  //update characteristics
322
317
  if (this.melCloudService) {
323
318
  this.melCloudService
@@ -538,10 +533,10 @@ class DeviceAta extends EventEmitter {
538
533
  };
539
534
 
540
535
  //update presets state
541
- if (this.presetsCount > 0) {
536
+ if (presets.length > 0) {
542
537
  this.presetsStates = [];
543
538
 
544
- for (let i = 0; i < this.presetsCount; i++) {
539
+ for (let i = 0; i < presets.length; i++) {
545
540
  const preset = presets[i];
546
541
  const state = preset.Power === power
547
542
  && preset.SetTemperature === setTemperature
@@ -703,7 +698,6 @@ class DeviceAta extends EventEmitter {
703
698
  const buttonsConfigured = this.buttonsConfigured;
704
699
  const buttonsConfiguredCount = this.buttonsConfiguredCount;
705
700
  const presets = this.accessory.presets;
706
- const presetsCount = this.presetsCount;
707
701
  const hasAutomaticFanSpeed = this.accessory.hasAutomaticFanSpeed;
708
702
  const modelSupportsFanSpeed = this.accessory.modelSupportsFanSpeed;
709
703
  const modelSupportsDry = this.accessory.modelSupportsDry;
@@ -1285,12 +1279,12 @@ class DeviceAta extends EventEmitter {
1285
1279
  };
1286
1280
 
1287
1281
  //presets services
1288
- if (presetsCount > 0) {
1282
+ if (presets.length > 0) {
1289
1283
  const debug = this.enableDebugMode ? this.emit('debug', `Prepare presets service`) : false;
1290
1284
  this.presetsServices = [];
1291
1285
  const previousPresets = [];
1292
1286
 
1293
- for (let i = 0; i < presetsCount; i++) {
1287
+ for (let i = 0; i < presets.length; i++) {
1294
1288
  const preset = presets[i];
1295
1289
  const presetName = preset.NumberDescription;
1296
1290
 
package/src/deviceatw.js CHANGED
@@ -65,18 +65,7 @@ class DeviceAtw extends EventEmitter {
65
65
 
66
66
  //accessory
67
67
  this.startPrepareAccessory = true;
68
- this.accessory = {
69
- power: false,
70
- offline: false,
71
- unitStatus: 0,
72
- idleZone1: false,
73
- idleZone2: false,
74
- useFahrenheit: 0,
75
- temperatureUnit: '°C',
76
- temperatureIncrement: 1,
77
- presets: [],
78
- zones: [{}, {}, {}, {}]
79
- };
68
+ this.accessory = { zones: [{}, {}, {}, {}] };
80
69
 
81
70
  //melcloud device
82
71
  this.melCloudAtw = new MelCloudAtw({
@@ -196,26 +185,15 @@ class DeviceAtw extends EventEmitter {
196
185
  const minSetTemperature = deviceData.Device.MinSetTemperature ?? 10;
197
186
  const maxSetTemperature = deviceData.Device.MaxSetTemperature ?? 30;
198
187
  const maxTankTemperature = deviceData.Device.MaxTankTemperature ?? 70;
199
- const flowTemperature = deviceData.Device.FlowTemperature;
188
+ const flowTemperatureHeatPump = deviceData.Device.FlowTemperature;
200
189
  const flowTemperatureZone1 = deviceData.Device.FlowTemperatureZone1;
201
190
  const flowTemperatureZone2 = deviceData.Device.FlowTemperatureZone2;
202
191
  const flowTemperatureWaterTank = deviceData.Device.FlowTemperatureBoiler;
203
- const returnTemperature = deviceData.Device.ReturnTemperature;
192
+ const returnTemperatureHeatPump = deviceData.Device.ReturnTemperature;
204
193
  const returnTemperatureZone1 = deviceData.Device.ReturnTemperatureZone1;
205
194
  const returnTemperatureZone2 = deviceData.Device.ReturnTemperatureZone2;
206
195
  const returnTemperatureWaterTank = deviceData.Device.ReturnTemperatureBoiler;
207
196
 
208
- this.hasHotWaterTank = hasHotWaterTank;
209
- this.hasZone2 = hasZone2;
210
- this.flowTemperature = flowTemperature;
211
- this.flowTemperatureZone1 = flowTemperatureZone1;
212
- this.flowTemperatureZone2 = flowTemperatureZone2;
213
- this.flowTemperatureWaterTank = flowTemperatureWaterTank;
214
- this.returnTemperature = returnTemperature;
215
- this.returnTemperatureZone1 = returnTemperatureZone1;
216
- this.returnTemperatureZone2 = returnTemperatureZone2;
217
- this.returnTemperatureWaterTank = returnTemperatureWaterTank;
218
-
219
197
  //zones
220
198
  const hotWater = hasHotWaterTank ? 1 : 0;
221
199
  const zone2 = hasZone2 ? 1 : 0;
@@ -256,8 +234,7 @@ class DeviceAtw extends EventEmitter {
256
234
  const offline = deviceState.Offline;
257
235
 
258
236
  //presets
259
- const presets = deviceData.Presets ?? [];
260
- this.presetsCount = this.presetsEnabled ? presets.length : 0;
237
+ const presets = this.presetsEnabled ? deviceData.Presets : [];
261
238
 
262
239
  //accessory
263
240
  this.accessory.power = power;
@@ -268,15 +245,19 @@ class DeviceAtw extends EventEmitter {
268
245
  this.accessory.useFahrenheit = useFahrenheit;
269
246
  this.accessory.temperatureUnit = temperatureUnit;
270
247
  this.accessory.temperatureIncrement = temperatureIncrement;
248
+ this.accessory.hasHotWaterTank = hasHotWaterTank;
249
+ this.accessory.hasZone2 = hasZone2;
271
250
  this.accessory.presets = presets;
272
251
 
273
252
  //default values
253
+ let name = 'Heat Pump'
274
254
  let currentOperationMode = 0;
275
255
  let targetOperationMode = 0;
276
256
  let roomTemperature = 20;
277
257
  let setTemperature = 20;
278
258
  let lockPhysicalControl = 0;
279
-
259
+ let flowTemperature = 0;
260
+ let returnTemperature = 0;
280
261
  let operationModeSetPropsMinValue = 0;
281
262
  let operationModeSetPropsMaxValue = 3;
282
263
  let operationModeSetPropsValidValues = [0];
@@ -288,60 +269,68 @@ class DeviceAtw extends EventEmitter {
288
269
  case 0: //Heater Cooler
289
270
  switch (i) {
290
271
  case 0: //Heat Pump Operation Mode - IDLE, HOT WATER, HEATING ZONES, COOLING, HOT WATER STORAGE, FREEZE STAT, LEGIONELLA, HEATING ECO, MODE 1, MODE 2, MODE 3, HEATING UP /// Unit Status - HEAT, COOL
272
+ name = heatPumpName;
291
273
  currentOperationMode = !power ? 0 : [1, 2, 2, 3, 2, 1, 1, 2, 1, 1, 1, 2][operationMode]; //INACTIVE, IDLE, HEATING, COOLING
292
274
  targetOperationMode = [1, 2][unitStatus]; //AUTO, HEAT, COOL
293
275
  roomTemperature = outdoorTemperature;
294
276
  setTemperature = outdoorTemperature;
295
277
  lockPhysicalControl = hasHotWaterTank && hasZone2 ? (prohibitZone1 && prohibitHotWater && prohibitZone2 ? 1 : 0) : hasHotWaterTank ? (prohibitZone1 && prohibitHotWater ? 1 : 0) : hasZone2 ? (prohibitZone1 && prohibitZone2 ? 1 : 0) : 0;
278
+ flowTemperature = flowTemperatureHeatPump;
279
+ returnTemperature = returnTemperatureHeatPump;
296
280
 
297
281
  operationModeSetPropsMinValue = [1, 1, 2, 0][heatCoolModes];
298
282
  operationModeSetPropsMaxValue = [2, 1, 2, 0][heatCoolModes];
299
283
  operationModeSetPropsValidValues = [[1, 2], [1], [2], [0]][heatCoolModes];
300
284
  temperatureSetPropsMinValue = -35;
301
285
  temperatureSetPropsMaxValue = 100;
302
- this.accessory.zones[i].name = heatPumpName;
303
286
  break;
304
287
  case 1: //Zone 1 - HEAT THERMOSTAT, HEAT FLOW, HEAT CURVE, COOL THERMOSTAT, COOL FLOW, FLOOR DRY UP
288
+ name = zone1Name;
305
289
  currentOperationMode = !power ? 0 : idleZone1 ? 1 : [2, 2, 2, 3, 3, 2][operationModeZone1]; //INACTIVE, IDLE, HEATING, COOLING
306
290
  targetOperationMode = [1, 2, 0, 1, 2, 1][operationModeZone1]; //AUTO, HEAT, COOL
307
291
  roomTemperature = roomTemperatureZone1;
308
292
  setTemperature = setTemperatureZone1;
309
293
  lockPhysicalControl = prohibitZone1 ? 1 : 0;
294
+ flowTemperature = flowTemperatureZone1;
295
+ returnTemperature = returnTemperatureZone1;
310
296
 
311
297
  operationModeSetPropsMinValue = [0, 0, 1, 0][heatCoolModes];
312
298
  operationModeSetPropsMaxValue = [2, 2, 2, 0][heatCoolModes];
313
299
  operationModeSetPropsValidValues = [[0, 1, 2], [0, 1, 2], [1, 2], [0]][heatCoolModes];
314
300
  temperatureSetPropsMinValue = 0;
315
301
  temperatureSetPropsMaxValue = 31;
316
- this.accessory.zones[i].name = zone1Name;
317
302
  break;
318
303
  case caseHotWater: //Hot Water - NORMAL, HEAT NOW
304
+ name = hotWaterName;
319
305
  currentOperationMode = !power ? 0 : operationMode === 1 ? 2 : [1, 2][forcedHotWaterMode]; //INACTIVE, IDLE, HEATING, COOLING
320
306
  targetOperationMode = [0, 1][forcedHotWaterMode] //AUTO, HEAT, COOL
321
307
  roomTemperature = tankWaterTemperature;
322
308
  setTemperature = setTankWaterTemperature;
323
309
  lockPhysicalControl = prohibitHotWater ? 1 : 0;
310
+ flowTemperature = flowTemperatureWaterTank;
311
+ returnTemperature = returnTemperatureWaterTank;
324
312
 
325
313
  operationModeSetPropsMinValue = 0;
326
314
  operationModeSetPropsMaxValue = 1;
327
315
  operationModeSetPropsValidValues = [0, 1];
328
316
  temperatureSetPropsMinValue = 0;
329
317
  temperatureSetPropsMaxValue = maxTankTemperature;
330
- this.accessory.zones[i].name = hotWaterName;
331
318
  break;
332
319
  case caseZone2: //Zone 2 - HEAT THERMOSTAT, HEAT FLOW, HEAT CURVE, COOL THERMOSTAT, COOL FLOW, FLOOR DRY UP
320
+ name = zone2Name;
333
321
  currentOperationMode = !power ? 0 : idleZone2 ? 1 : [2, 2, 2, 3, 3, 2][operationModeZone2]; //INACTIVE, IDLE, HEATING, COOLING
334
322
  targetOperationMode = [1, 2, 0, 1, 2, 1][operationModeZone2]; //AUTO, HEAT, COOL
335
323
  roomTemperature = roomTemperatureZone2;
336
324
  setTemperature = setTemperatureZone2;
337
325
  lockPhysicalControl = prohibitZone2 ? 1 : 0;
326
+ flowTemperature = flowTemperatureZone2;
327
+ returnTemperature = returnTemperatureZone2;
338
328
 
339
329
  operationModeSetPropsMinValue = [0, 0, 1, 0][heatCoolModes];
340
330
  operationModeSetPropsMaxValue = [2, 2, 2, 0][heatCoolModes];
341
331
  operationModeSetPropsValidValues = [[0, 1, 2], [0, 1, 2], [1, 2], [0]][heatCoolModes];
342
332
  temperatureSetPropsMinValue = 0;
343
333
  temperatureSetPropsMaxValue = 31;
344
- this.accessory.zones[i].name = zone2Name;
345
334
  break;
346
335
  default: //unknown zone detected
347
336
  this.emit('message', `Unknown zone: ${i} detected.`);
@@ -374,6 +363,7 @@ class DeviceAtw extends EventEmitter {
374
363
  operationModeSetPropsValidValues = [[0, 1, 2], [0, 1], [0, 2], [0]][heatCoolModes];
375
364
  temperatureSetPropsMinValue = -35;
376
365
  temperatureSetPropsMaxValue = 100;
366
+ this.accessory.zones[i].name = heatPumpName;
377
367
  break;
378
368
  case 1: //Zone 1 - HEAT THERMOSTAT, HEAT FLOW, HEAT CURVE, COOL THERMOSTAT, COOL FLOW, FLOOR DRY UP
379
369
  currentOperationMode = !power ? 0 : idleZone1 ? 0 : [1, 1, 1, 2, 2, 1][operationModeZone1]; //OFF, HEAT, COOL
@@ -386,6 +376,7 @@ class DeviceAtw extends EventEmitter {
386
376
  operationModeSetPropsValidValues = [[1, 2, 3], [1, 2, 3], [1, 2], [0]][heatCoolModes];
387
377
  temperatureSetPropsMinValue = 0;
388
378
  temperatureSetPropsMaxValue = 31;
379
+ this.accessory.zones[i].name = heatPumpName;
389
380
  break;
390
381
  case caseHotWater: //Hot Water - NORMAL, HEAT NOW
391
382
  currentOperationMode = !power ? 0 : operationMode === 1 ? 1 : [0, 1][forcedHotWaterMode]; //OFF, HEAT, COOL
@@ -398,6 +389,7 @@ class DeviceAtw extends EventEmitter {
398
389
  operationModeSetPropsValidValues = [1, 3];
399
390
  temperatureSetPropsMinValue = 0;
400
391
  temperatureSetPropsMaxValue = 60;
392
+ this.accessory.zones[i].name = heatPumpName;
401
393
  break;
402
394
  case caseZone2: //Zone 2 - HEAT THERMOSTAT, HEAT FLOW, HEAT CURVE, COOL THERMOSTAT, COOL FLOW, FLOOR DRY UP
403
395
  currentOperationMode = !power ? 0 : idleZone2 ? 0 : [1, 1, 1, 2, 2, 1][operationModeZone2]; //OFF, HEAT, COOL
@@ -410,6 +402,7 @@ class DeviceAtw extends EventEmitter {
410
402
  operationModeSetPropsValidValues = [[1, 2, 3], [1, 2, 3], [1, 2], [0]][heatCoolModes];
411
403
  temperatureSetPropsMinValue = 0;
412
404
  temperatureSetPropsMaxValue = 31;
405
+ this.accessory.zones[i].name = heatPumpName;
413
406
  break;
414
407
  default: //unknown zone detected
415
408
  this.emit('message', `Unknown zone: ${i} detected.`);
@@ -432,11 +425,14 @@ class DeviceAtw extends EventEmitter {
432
425
  };
433
426
 
434
427
  //push value to arrays
428
+ this.accessory.zones[i].name = name;
435
429
  this.accessory.zones[i].currentOperationMode = currentOperationMode;
436
430
  this.accessory.zones[i].targetOperationMode = targetOperationMode;
437
431
  this.accessory.zones[i].roomTemperature = roomTemperature;
438
432
  this.accessory.zones[i].setTemperature = setTemperature;
439
433
  this.accessory.zones[i].lockPhysicalControl = lockPhysicalControl;
434
+ this.accessory.zones[i].flowTemperature = flowTemperature;
435
+ this.accessory.zones[i].returnTemperature = returnTemperature;
440
436
  this.accessory.zones[i].operationModesSetPropsMinValue = operationModeSetPropsMinValue;
441
437
  this.accessory.zones[i].operationModesSetPropsMaxValue = operationModeSetPropsMaxValue;
442
438
  this.accessory.zones[i].operationModesSetPropsValidValues = operationModeSetPropsValidValues;
@@ -648,10 +644,10 @@ class DeviceAtw extends EventEmitter {
648
644
  };
649
645
 
650
646
  //update presets state
651
- if (this.presetsCount > 0) {
647
+ if (presets.length > 0) {
652
648
  this.presetsStates = [];
653
649
 
654
- for (let i = 0; i < this.presetsCount; i++) {
650
+ for (let i = 0; i < presets.length; i++) {
655
651
  const preset = presets[i];
656
652
  const state = preset.Power === power
657
653
  && preset.EcoHotWater === ecoHotWater
@@ -829,7 +825,6 @@ class DeviceAtw extends EventEmitter {
829
825
  const buttonsConfigured = this.buttonsConfigured;
830
826
  const buttonsConfiguredCount = this.buttonsConfiguredCount;
831
827
  const presets = this.accessory.presets;
832
- const presetsCount = this.presetsCount;
833
828
  const displayMode = this.displayMode;
834
829
  const caseHotWater = this.caseHotWater;
835
830
  const caseZone2 = this.caseZone2;
@@ -1307,7 +1302,7 @@ class DeviceAtw extends EventEmitter {
1307
1302
  accessory.addService(this.roomTemperatureSensorService);
1308
1303
  };
1309
1304
 
1310
- if (temperatureSensorFlow && this.flowTemperature !== null) {
1305
+ if (temperatureSensorFlow && this.accessory.zones[i].flowTemperature !== null) {
1311
1306
  const debug = this.enableDebugMode ? this.emit('debug', `Prepare flow temperature sensor service`) : false;
1312
1307
  this.flowTemperatureSensorService = new Service.TemperatureSensor(`${serviceName} Flow`, `${zoneName} Temperature Sensor Flow ${deviceId} ${i}`);
1313
1308
  this.flowTemperatureSensorService.addOptionalCharacteristic(Characteristic.ConfiguredName);
@@ -1319,13 +1314,13 @@ class DeviceAtw extends EventEmitter {
1319
1314
  minStep: 0.5
1320
1315
  })
1321
1316
  .onGet(async () => {
1322
- const state = this.flowTemperature;
1317
+ const state = this.accessory.zones[i].flowTemperature;
1323
1318
  return state;
1324
1319
  })
1325
1320
  accessory.addService(this.flowTemperatureSensorService);
1326
1321
 
1327
1322
  };
1328
- if (temperatureSensorReturn && this.returnTemperature !== null) {
1323
+ if (temperatureSensorReturn && this.accessory.zones[i].returnTemperature !== null) {
1329
1324
  const debug1 = this.enableDebugMode ? this.emit('debug', `Prepare return temperature sensor service`) : false;
1330
1325
  this.returnTemperatureSensorService = new Service.TemperatureSensor(`${serviceName} Return`, `${zoneName} Temperature Sensor Return ${deviceId} ${i}`);
1331
1326
  this.returnTemperatureSensorService.addOptionalCharacteristic(Characteristic.ConfiguredName);
@@ -1337,7 +1332,7 @@ class DeviceAtw extends EventEmitter {
1337
1332
  minStep: 0.5
1338
1333
  })
1339
1334
  .onGet(async () => {
1340
- const state = this.returnTemperature;
1335
+ const state = this.accessory.zones[i].returnTemperature;
1341
1336
  return state;
1342
1337
  })
1343
1338
  accessory.addService(this.returnTemperatureSensorService);
@@ -1362,7 +1357,7 @@ class DeviceAtw extends EventEmitter {
1362
1357
  accessory.addService(this.roomTemperatureZone1SensorService);
1363
1358
  };
1364
1359
 
1365
- if (temperatureSensorFlowZone1 && this.flowTemperatureZone1 !== null) {
1360
+ if (temperatureSensorFlowZone1 && this.accessory.zones[i].flowTemperature !== null) {
1366
1361
  const debug2 = this.enableDebugMode ? this.emit('debug', `Prepare flow temperature zone 1 sensor service`) : false;
1367
1362
  this.flowTemperatureZone1SensorService = new Service.TemperatureSensor(`${serviceName} Flow`, `${zoneName} Temperature Sensor Flow ${deviceId} ${i}`);
1368
1363
  this.flowTemperatureZone1SensorService.addOptionalCharacteristic(Characteristic.ConfiguredName);
@@ -1374,13 +1369,13 @@ class DeviceAtw extends EventEmitter {
1374
1369
  minStep: 0.5
1375
1370
  })
1376
1371
  .onGet(async () => {
1377
- const state = this.flowTemperatureZone1;
1372
+ const state = this.accessory.zones[i].flowTemperature;
1378
1373
  return state;
1379
1374
  })
1380
1375
  accessory.addService(this.flowTemperatureZone1SensorService);
1381
1376
  };
1382
1377
 
1383
- if (temperatureSensorReturnZone1 && this.returnTemperatureZone1 !== null) {
1378
+ if (temperatureSensorReturnZone1 && this.accessory.zones[i].returnTemperature !== null) {
1384
1379
  const debug3 = this.enableDebugMode ? this.emit('debug', `Prepare return temperature zone 1 sensor service`) : false;
1385
1380
  this.returnTemperatureZone1SensorService = new Service.TemperatureSensor(`${serviceName} Return`, `${zoneName} Temperature Sensor Return ${deviceId} ${i}`);
1386
1381
  this.returnTemperatureZone1SensorService.addOptionalCharacteristic(Characteristic.ConfiguredName);
@@ -1392,7 +1387,7 @@ class DeviceAtw extends EventEmitter {
1392
1387
  minStep: 0.5
1393
1388
  })
1394
1389
  .onGet(async () => {
1395
- const state = this.returnTemperatureZone1;
1390
+ const state = this.accessory.zones[i].returnTemperature;
1396
1391
  return state;
1397
1392
  })
1398
1393
  accessory.addService(this.returnTemperatureZone1SensorService);
@@ -1417,7 +1412,7 @@ class DeviceAtw extends EventEmitter {
1417
1412
  accessory.addService(this.roomTemperatureWaterTankSensorService);
1418
1413
  };
1419
1414
 
1420
- if (temperatureSensorFlowWaterTank && this.flowTemperatureWaterTank !== null) {
1415
+ if (temperatureSensorFlowWaterTank && this.accessory.zones[i].flowTemperature !== null) {
1421
1416
  const debug = this.enableDebugMode ? this.emit('debug', `Prepare flow temperature water tank sensor service`) : false;
1422
1417
  this.flowTemperatureWaterTankSensorService = new Service.TemperatureSensor(`${serviceName} Flow`, `${zoneName} Temperature Sensor Flow ${deviceId} ${i}`);
1423
1418
  this.flowTemperatureWaterTankSensorService.addOptionalCharacteristic(Characteristic.ConfiguredName);
@@ -1429,13 +1424,13 @@ class DeviceAtw extends EventEmitter {
1429
1424
  minStep: 0.5
1430
1425
  })
1431
1426
  .onGet(async () => {
1432
- const state = this.flowTemperatureWaterTank;
1427
+ const state = this.accessory.zones[i].flowTemperature;
1433
1428
  return state;
1434
1429
  })
1435
1430
  accessory.addService(this.flowTemperatureWaterTankSensorService);
1436
1431
  };
1437
1432
 
1438
- if (temperatureSensorReturnWaterTank && this.returnTemperatureWaterTank !== null) {
1433
+ if (temperatureSensorReturnWaterTank && this.accessory.zones[i].returnTemperature !== null) {
1439
1434
  const debug1 = this.enableDebugMode ? this.emit('debug', `Prepare return temperature water tank sensor service`) : false;
1440
1435
  this.returnTemperatureWaterTankSensorService = new Service.TemperatureSensor(`${serviceName} Return`, `${zoneName} Temperature Sensor Return ${deviceId} ${i}`);
1441
1436
  this.returnTemperatureWaterTankSensorService.addOptionalCharacteristic(Characteristic.ConfiguredName);
@@ -1447,7 +1442,7 @@ class DeviceAtw extends EventEmitter {
1447
1442
  minStep: 0.5
1448
1443
  })
1449
1444
  .onGet(async () => {
1450
- const state = this.returnTemperatureWaterTank;
1445
+ const state = this.accessory.zones[i].returnTemperature;
1451
1446
  return state;
1452
1447
  })
1453
1448
  accessory.addService(this.returnTemperatureWaterTankSensorService);
@@ -1472,7 +1467,7 @@ class DeviceAtw extends EventEmitter {
1472
1467
  accessory.addService(this.roomTemperatureZone2SensorService);
1473
1468
  };
1474
1469
 
1475
- if (temperatureSensorFlowZone2 && this.flowTemperatureZone2 !== null) {
1470
+ if (temperatureSensorFlowZone2 && this.accessory.zones[i].flowTemperature !== null) {
1476
1471
  const debug = this.enableDebugMode ? this.emit('debug', `Prepare flow temperature zone 2 sensor service`) : false;
1477
1472
  this.flowTemperatureZone2SensorService = new Service.TemperatureSensor(`${serviceName} Flow`, `${zoneName} Temperature Sensor Flow${deviceId} ${i}`);
1478
1473
  this.flowTemperatureZone2SensorService.addOptionalCharacteristic(Characteristic.ConfiguredName);
@@ -1484,13 +1479,13 @@ class DeviceAtw extends EventEmitter {
1484
1479
  minStep: 0.5
1485
1480
  })
1486
1481
  .onGet(async () => {
1487
- const state = this.flowTemperatureZone2;
1482
+ const state = this.accessory.zones[i].flowTemperature;
1488
1483
  return state;
1489
1484
  })
1490
1485
  accessory.addService(this.flowTemperatureZone2SensorService);
1491
1486
  };
1492
1487
 
1493
- if (temperatureSensorReturnZone2 && this.returnTemperatureZone2 !== null) {
1488
+ if (temperatureSensorReturnZone2 && this.accessory.zones[i].returnTemperature !== null) {
1494
1489
  const debug1 = this.enableDebugMode ? this.emit('debug', `Prepare return temperature zone 2 sensor service`) : false;
1495
1490
  this.returnTemperatureZone2SensorService = new Service.TemperatureSensor(`${serviceName} Return`, `${zoneName} Temperature Sensor Return${deviceId} ${i}`);
1496
1491
  this.returnTemperatureZone2SensorService.addOptionalCharacteristic(Characteristic.ConfiguredName);
@@ -1502,7 +1497,7 @@ class DeviceAtw extends EventEmitter {
1502
1497
  minStep: 0.5
1503
1498
  })
1504
1499
  .onGet(async () => {
1505
- const state = this.returnTemperatureZone2;
1500
+ const state = this.accessory.zones[i].returnTemperature;
1506
1501
  return state;
1507
1502
  })
1508
1503
  accessory.addService(this.returnTemperatureZone2SensorService);
@@ -1674,12 +1669,12 @@ class DeviceAtw extends EventEmitter {
1674
1669
  };
1675
1670
 
1676
1671
  //presets services
1677
- if (presetsCount > 0) {
1672
+ if (presets.length > 0) {
1678
1673
  const debug = this.enableDebugMode ? this.emit('debug', `Prepare presets service`) : false;
1679
1674
  this.presetsServices = [];
1680
1675
  const previousPresets = [];
1681
1676
 
1682
- for (let i = 0; i < presetsCount; i++) {
1677
+ for (let i = 0; i < presets.length; i++) {
1683
1678
  const preset = presets[i];
1684
1679
  const presetName = preset.NumberDescription;
1685
1680
 
package/src/deviceerv.js CHANGED
@@ -204,9 +204,7 @@ class DeviceErv extends EventEmitter {
204
204
  const temperatureUnit = CONSTANTS.TemperatureDisplayUnits[useFahrenheit];
205
205
 
206
206
  //presets
207
- const presets = deviceData.Presets ?? [];
208
- this.presetsCount = this.presetsEnabled ? presets.length : 0;
209
-
207
+ const presets = this.presetsEnabled ? deviceData.Presets : [];
210
208
 
211
209
  //set temperature
212
210
  const targetTemperature = hasCoolOperationMode || hasHeatOperationMode ? setTemperature : 20;
@@ -483,10 +481,10 @@ class DeviceErv extends EventEmitter {
483
481
  };
484
482
 
485
483
  //update presets state
486
- if (this.presetsCount > 0) {
484
+ if (presets.length > 0) {
487
485
  this.presetsStates = [];
488
486
 
489
- for (let i = 0; i < this.presetsCount; i++) {
487
+ for (let i = 0; i < presets.length; i++) {
490
488
  const preset = presets[i];
491
489
  const state = preset.Power === power
492
490
  && preset.SetTemperature === targetTemperature
@@ -643,7 +641,6 @@ class DeviceErv extends EventEmitter {
643
641
  const buttonsConfigured = this.buttonsConfigured;
644
642
  const buttonsConfiguredCount = this.buttonsConfiguredCount;
645
643
  const presets = this.accessory.presets;
646
- const presetsCount = this.presetsCount;
647
644
  const hasCoolOperationMode = this.accessory.hasCoolOperationMode;
648
645
  const hasHeatOperationMode = this.accessory.hasHeatOperationMode;
649
646
  const hasCO2Sensor = this.accessory.hasCO2Sensor;
@@ -1175,12 +1172,12 @@ class DeviceErv extends EventEmitter {
1175
1172
  };
1176
1173
 
1177
1174
  //presets services
1178
- if (presetsCount > 0) {
1175
+ if (presets.length > 0) {
1179
1176
  const debug = this.enableDebugMode ? this.emit('debug', `Prepare presets service`) : false;
1180
1177
  this.presetsServices = [];
1181
1178
  const previousPresets = [];
1182
1179
 
1183
- for (let i = 0; i < presetsCount; i++) {
1180
+ for (let i = 0; i < presets.length; i++) {
1184
1181
  const preset = presets[i];
1185
1182
  const presetName = preset.NumberDescription;
1186
1183