homebridge-melcloud-control 3.8.0-beta.2 → 3.8.0-beta.21
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/config.schema.json +84 -12
- package/index.js +4 -4
- package/package.json +1 -1
- package/src/deviceata.js +10 -13
- package/src/deviceatw.js +680 -687
- package/src/deviceerv.js +10 -13
- package/src/melcloudata.js +1 -1
- package/src/melcloudatw.js +1 -1
- package/src/melclouderv.js +1 -1
package/src/deviceatw.js
CHANGED
|
@@ -275,6 +275,7 @@ class DeviceAtw extends EventEmitter {
|
|
|
275
275
|
async startImpulseGenerator() {
|
|
276
276
|
try {
|
|
277
277
|
//start impule generator
|
|
278
|
+
await new Promise(resolve => setTimeout(resolve, 1000));
|
|
278
279
|
await this.melCloudAtw.impulseGenerator.start([{ name: 'checkState', sampling: this.refreshInterval }]);
|
|
279
280
|
return true;
|
|
280
281
|
} catch (error) {
|
|
@@ -287,6 +288,7 @@ class DeviceAtw extends EventEmitter {
|
|
|
287
288
|
try {
|
|
288
289
|
const presetsOnServer = this.accessory.presets;
|
|
289
290
|
const zonesCount = this.accessory.zonesCount;
|
|
291
|
+
const caseHeatPump = this.accessory.caseHeatPump;
|
|
290
292
|
const caseZone1 = this.accessory.caseZone1;
|
|
291
293
|
const caseHotWater = this.accessory.caseHotWater;
|
|
292
294
|
const caseZone2 = this.accessory.caseZone2;
|
|
@@ -318,208 +320,451 @@ class DeviceAtw extends EventEmitter {
|
|
|
318
320
|
.setCharacteristic(Characteristic.ConfiguredName, accessoryName);
|
|
319
321
|
|
|
320
322
|
//services
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
.
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
323
|
+
if (zonesCount > 0) {
|
|
324
|
+
this.melCloudServices = [];
|
|
325
|
+
for (let i = 0; i < zonesCount; i++) {
|
|
326
|
+
const zoneName = this.accessory.zones[i].name
|
|
327
|
+
const serviceName = `${deviceTypeText} ${accessoryName}: ${zoneName}`;
|
|
328
|
+
switch (this.displayMode) {
|
|
329
|
+
case 1: //Heater Cooler
|
|
330
|
+
const debug = this.enableDebugMode ? this.emit('debug', `Prepare heather/cooler ${zoneName} service`) : false;
|
|
331
|
+
const melCloudService = new Service.HeaterCooler(serviceName, `HeaterCooler ${deviceId} ${i}`);
|
|
332
|
+
melCloudService.setPrimaryService(true);
|
|
333
|
+
melCloudService.getCharacteristic(Characteristic.Active)
|
|
334
|
+
.onGet(async () => {
|
|
335
|
+
const state = this.accessory.power;
|
|
336
|
+
return state;
|
|
337
|
+
})
|
|
338
|
+
.onSet(async (state) => {
|
|
339
|
+
try {
|
|
340
|
+
switch (i) {
|
|
341
|
+
case 0: //Heat Pump
|
|
342
|
+
deviceData.Device.Power = [false, true][state];
|
|
343
|
+
deviceData.Device.EffectiveFlags = HeatPump.EffectiveFlags.Power;
|
|
344
|
+
await this.melCloudAtw.send(deviceData);
|
|
345
|
+
const info = this.disableLogInfo ? false : this.emit('message', `${zoneName}, Set power: ${state ? 'ON' : 'OFF'}`);
|
|
346
|
+
break;
|
|
347
|
+
};
|
|
348
|
+
} catch (error) {
|
|
349
|
+
this.emit('warn', `Set power error: ${error}`);
|
|
344
350
|
};
|
|
345
|
-
}
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
351
|
+
});
|
|
352
|
+
melCloudService.getCharacteristic(Characteristic.CurrentHeaterCoolerState)
|
|
353
|
+
.onGet(async () => {
|
|
354
|
+
const value = this.accessory.zones[i].currentOperationMode;
|
|
355
|
+
return value;
|
|
356
|
+
});
|
|
357
|
+
melCloudService.getCharacteristic(Characteristic.TargetHeaterCoolerState)
|
|
358
|
+
.setProps({
|
|
359
|
+
minValue: this.accessory.zones[i].operationModesSetPropsMinValue,
|
|
360
|
+
maxValue: this.accessory.zones[i].operationModesSetPropsMaxValue,
|
|
361
|
+
validValues: this.accessory.zones[i].operationModesSetPropsValidValues
|
|
362
|
+
})
|
|
363
|
+
.onGet(async () => {
|
|
364
|
+
const value = this.accessory.zones[i].targetOperationMode;
|
|
365
|
+
return value;
|
|
366
|
+
})
|
|
367
|
+
.onSet(async (value) => {
|
|
368
|
+
try {
|
|
369
|
+
let operationModeText = '';
|
|
370
|
+
switch (i) {
|
|
371
|
+
case 0: //Heat Pump - ON, HEAT, COOL
|
|
372
|
+
switch (value) {
|
|
373
|
+
case caseHeatPump: //AUTO
|
|
374
|
+
deviceData.Device.Power = true;
|
|
375
|
+
deviceData.Device.EffectiveFlags = HeatPump.EffectiveFlags.Power;
|
|
376
|
+
break;
|
|
377
|
+
case 1: //HEAT
|
|
378
|
+
deviceData.Device.Power = true;
|
|
379
|
+
deviceData.Device.UnitStatus = 0;
|
|
380
|
+
deviceData.Device.EffectiveFlags = HeatPump.EffectiveFlags.Power + HeatPump.EffectiveFlags.OperationMode;
|
|
381
|
+
break;
|
|
382
|
+
case 2: //COOL
|
|
383
|
+
deviceData.Device.Power = true;
|
|
384
|
+
deviceData.Device.UnitStatus = 1;
|
|
385
|
+
deviceData.Device.EffectiveFlags = HeatPump.EffectiveFlags.Power + HeatPump.EffectiveFlags.OperationMode;
|
|
386
|
+
break;
|
|
387
|
+
};
|
|
388
|
+
operationModeText = [HeatPump.System[0], HeatPump.System[deviceData.Device.UnitStatus]][this.accessory.power];
|
|
389
|
+
break;
|
|
390
|
+
case caseZone1: //Zone 1 - HEAT THERMOSTAT, HEAT FLOW, HEAT CURVE, COOL THERMOSTAT, COOL FLOW, FLOOR DRY UP
|
|
391
|
+
switch (value) {
|
|
392
|
+
case 0: //AUTO - HEAT CURVE
|
|
393
|
+
deviceData.Device.OperationModeZone1 = 2;
|
|
394
|
+
deviceData.Device.EffectiveFlags = HeatPump.EffectiveFlags.OperationModeZone1;
|
|
395
|
+
break;
|
|
396
|
+
case 1: //HEAT - HEAT THERMOSTAT / COOL THERMOSTAT
|
|
397
|
+
deviceData.Device.OperationModeZone1 = [0, 3][this.unitStatus];
|
|
398
|
+
deviceData.Device.EffectiveFlags = HeatPump.EffectiveFlags.OperationModeZone1;
|
|
399
|
+
break;
|
|
400
|
+
case 2: //COOL - HEAT FLOW / COOL FLOW
|
|
401
|
+
deviceData.Device.OperationModeZone1 = [1, 4][this.unitStatus];
|
|
402
|
+
deviceData.Device.EffectiveFlags = HeatPump.EffectiveFlags.OperationModeZone1;
|
|
403
|
+
break;
|
|
404
|
+
};
|
|
405
|
+
operationModeText = HeatPump.ZoneOperation[deviceData.Device.OperationModeZone1];
|
|
406
|
+
break;
|
|
407
|
+
case caseHotWater: //Hot Water - AUTO, HEAT NOW
|
|
408
|
+
switch (value) {
|
|
409
|
+
case 0: //AUTO
|
|
410
|
+
deviceData.Device.ForcedHotWaterMode = false;
|
|
411
|
+
deviceData.Device.EffectiveFlags = HeatPump.EffectiveFlags.ForcedHotWaterMode;
|
|
412
|
+
break;
|
|
413
|
+
case 1: //HEAT
|
|
414
|
+
deviceData.Device.ForcedHotWaterMode = true;
|
|
415
|
+
deviceData.Device.EffectiveFlags = HeatPump.EffectiveFlags.ForcedHotWaterMode;
|
|
416
|
+
break;
|
|
417
|
+
case 2: //COOL
|
|
418
|
+
deviceData.Device.ForcedHotWaterMode = false;
|
|
419
|
+
deviceData.Device.EffectiveFlags = HeatPump.EffectiveFlags.ForcedHotWaterMode;
|
|
420
|
+
break
|
|
421
|
+
};
|
|
422
|
+
operationModeText = deviceData.Device.OperationMode === 1 ? HeatPump.ForceDhw[1] : HeatPump.ForceDhw[deviceData.Device.ForcedHotWaterMode ? 1 : 0];
|
|
423
|
+
break;
|
|
424
|
+
case caseZone2: //Zone 2 - HEAT THERMOSTAT, HEAT FLOW, HEAT CURVE, COOL THERMOSTAT, COOL FLOW, FLOOR DRY UP
|
|
425
|
+
switch (value) {
|
|
426
|
+
case 0: //AUTO
|
|
427
|
+
deviceData.Device.OperationModeZone2 = 2;
|
|
428
|
+
deviceData.Device.EffectiveFlags = HeatPump.EffectiveFlags.OperationModeZone2;
|
|
429
|
+
break;
|
|
430
|
+
case 1: //HEAT - HEAT THERMOSTAT / COOL THERMOSTAT
|
|
431
|
+
deviceData.Device.OperationModeZone2 = [0, 3][this.unitStatus];
|
|
432
|
+
deviceData.Device.EffectiveFlags = HeatPump.EffectiveFlags.OperationModeZone2;
|
|
433
|
+
break;
|
|
434
|
+
case 2: //COOL - HEAT FLOW / COOL FLOW
|
|
435
|
+
deviceData.Device.OperationModeZone2 = [1, 4][this.unitStatus];
|
|
436
|
+
deviceData.Device.EffectiveFlags = HeatPump.EffectiveFlags.OperationModeZone2;
|
|
437
|
+
break;
|
|
438
|
+
};
|
|
439
|
+
operationModeText = HeatPump.ZoneOperation[deviceData.Device.OperationModeZone2];
|
|
440
|
+
break;
|
|
441
|
+
};
|
|
442
|
+
|
|
443
|
+
await this.melCloudAtw.send(deviceData);
|
|
444
|
+
const info = this.disableLogInfo ? false : this.emit('message', `${zoneName}, Set operation mode: ${operationModeText}`);
|
|
445
|
+
} catch (error) {
|
|
446
|
+
this.emit('warn', `${zoneName}, Set operation mode error: ${error}`);
|
|
447
|
+
};
|
|
448
|
+
});
|
|
449
|
+
melCloudService.getCharacteristic(Characteristic.CurrentTemperature)
|
|
450
|
+
.setProps({
|
|
451
|
+
minValue: -35,
|
|
452
|
+
maxValue: 150,
|
|
453
|
+
minStep: 0.5
|
|
454
|
+
})
|
|
455
|
+
.onGet(async () => {
|
|
456
|
+
const value = this.accessory.zones[i].roomTemperature;
|
|
457
|
+
return value;
|
|
458
|
+
});
|
|
459
|
+
//only for heat/cool, only cool and not for hot water tank
|
|
460
|
+
if ((heatCoolModes === 0 || heatCoolModes === 2) && i !== caseHotWater) {
|
|
461
|
+
melCloudService.getCharacteristic(Characteristic.CoolingThresholdTemperature)
|
|
462
|
+
.setProps({
|
|
463
|
+
minValue: this.accessory.zones[i].temperaturesSetPropsMinValue,
|
|
464
|
+
maxValue: this.accessory.zones[i].temperaturesSetPropsMaxValue,
|
|
465
|
+
minStep: this.accessory.temperatureIncrement
|
|
466
|
+
})
|
|
467
|
+
.onGet(async () => {
|
|
468
|
+
const value = this.accessory.zones[i].setTemperature;
|
|
469
|
+
return value;
|
|
470
|
+
})
|
|
471
|
+
.onSet(async (value) => {
|
|
472
|
+
try {
|
|
473
|
+
switch (i) {
|
|
474
|
+
case caseHeatPump: //Heat Pump
|
|
475
|
+
//deviceData.Device.SetTemperatureZone1 = value;
|
|
476
|
+
//deviceData.Device.EffectiveFlags = CONSTANTS.HeatPump.EffectiveFlags.SetTemperatureZone1;
|
|
383
477
|
break;
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
478
|
+
case caseZone1: //Zone 1
|
|
479
|
+
switch (this.accessory.zones[i].operationMode) {
|
|
480
|
+
case 1: //HEAT FLOW
|
|
481
|
+
deviceData.Device.SetHeatFlowTemperatureZone1 = value;
|
|
482
|
+
deviceData.Device.EffectiveFlags = HeatPump.EffectiveFlags.SetHeatFlowTemperatureZone1;
|
|
483
|
+
break;
|
|
484
|
+
case 4: //COOL FLOW
|
|
485
|
+
deviceData.Device.SetCoolFlowTemperatureZone1 = value;
|
|
486
|
+
deviceData.Device.EffectiveFlags = HeatPump.EffectiveFlags.SetCoolFlowTemperatureZone1;
|
|
487
|
+
break;
|
|
488
|
+
default:
|
|
489
|
+
deviceData.Device.SetTemperatureZone1 = value;
|
|
490
|
+
deviceData.Device.EffectiveFlags = HeatPump.EffectiveFlags.SetTemperatureZone1;
|
|
491
|
+
break
|
|
492
|
+
};
|
|
392
493
|
break;
|
|
393
|
-
case
|
|
394
|
-
deviceData.Device.
|
|
395
|
-
deviceData.Device.EffectiveFlags = HeatPump.EffectiveFlags.
|
|
494
|
+
case caseHotWater: //Hot Water
|
|
495
|
+
deviceData.Device.SetTankWaterTemperature = value;
|
|
496
|
+
deviceData.Device.EffectiveFlags = HeatPump.EffectiveFlags.SetTankWaterTemperature;
|
|
396
497
|
break;
|
|
397
|
-
case
|
|
398
|
-
|
|
399
|
-
|
|
498
|
+
case caseZone2: //Zone 2
|
|
499
|
+
switch (this.accessory.zones[i].operationMode) {
|
|
500
|
+
case 1: //HEAT FLOW
|
|
501
|
+
deviceData.Device.SetHeatFlowTemperatureZone2 = value;
|
|
502
|
+
deviceData.Device.EffectiveFlags = HeatPump.EffectiveFlags.SetHeatFlowTemperatureZone2;
|
|
503
|
+
break;
|
|
504
|
+
case 4: //COOL FLOW
|
|
505
|
+
deviceData.Device.SetCoolFlowTemperatureZone2 = value;
|
|
506
|
+
deviceData.Device.EffectiveFlags = HeatPump.EffectiveFlags.SetCoolFlowTemperatureZone2;
|
|
507
|
+
break;
|
|
508
|
+
default:
|
|
509
|
+
deviceData.Device.SetTemperatureZone2 = value;
|
|
510
|
+
deviceData.Device.EffectiveFlags = HeatPump.EffectiveFlags.SetTemperatureZone2;
|
|
511
|
+
break
|
|
512
|
+
};
|
|
400
513
|
break;
|
|
401
514
|
};
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
515
|
+
|
|
516
|
+
const set = i > 0 ? await this.melCloudAtw.send(deviceData) : false;
|
|
517
|
+
const info = this.disableLogInfo || i === 0 ? false : this.emit('message', `${zoneName}, Set cooling threshold temperature: ${value}${this.accessory.temperatureUnit}`);
|
|
518
|
+
} catch (error) {
|
|
519
|
+
this.emit('warn', `${zoneName}, Set cooling threshold temperature error: ${error}`);
|
|
520
|
+
};
|
|
521
|
+
});
|
|
522
|
+
};
|
|
523
|
+
//device can heat/cool or only heat
|
|
524
|
+
if (heatCoolModes === 0 || heatCoolModes === 1) {
|
|
525
|
+
melCloudService.getCharacteristic(Characteristic.HeatingThresholdTemperature)
|
|
526
|
+
.setProps({
|
|
527
|
+
minValue: this.accessory.zones[i].temperaturesSetPropsMinValue,
|
|
528
|
+
maxValue: this.accessory.zones[i].temperaturesSetPropsMaxValue,
|
|
529
|
+
minStep: this.accessory.temperatureIncrement
|
|
530
|
+
})
|
|
531
|
+
.onGet(async () => {
|
|
532
|
+
const value = this.accessory.zones[i].setTemperature;
|
|
533
|
+
return value;
|
|
534
|
+
})
|
|
535
|
+
.onSet(async (value) => {
|
|
536
|
+
try {
|
|
537
|
+
switch (i) {
|
|
538
|
+
case caseHeatPump: //Heat Pump
|
|
539
|
+
//deviceData.Device.SetTemperatureZone1 = value;
|
|
540
|
+
//deviceData.Device.EffectiveFlags = CONSTANTS.HeatPump.EffectiveFlags.SetTemperatureZone1;
|
|
413
541
|
break;
|
|
414
|
-
case
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
542
|
+
case caseZone1: //Zone 1
|
|
543
|
+
switch (this.accessory.zones[i].operationMode) {
|
|
544
|
+
case 1: //HEAT FLOW
|
|
545
|
+
deviceData.Device.SetHeatFlowTemperatureZone1 = value;
|
|
546
|
+
deviceData.Device.EffectiveFlags = HeatPump.EffectiveFlags.SetHeatFlowTemperatureZone1;
|
|
547
|
+
break;
|
|
548
|
+
case 4: //COOL FLOW
|
|
549
|
+
deviceData.Device.SetCoolFlowTemperatureZone1 = value;
|
|
550
|
+
deviceData.Device.EffectiveFlags = HeatPump.EffectiveFlags.SetCoolFlowTemperatureZone1;
|
|
551
|
+
break;
|
|
552
|
+
default:
|
|
553
|
+
deviceData.Device.SetTemperatureZone1 = value;
|
|
554
|
+
deviceData.Device.EffectiveFlags = HeatPump.EffectiveFlags.SetTemperatureZone1;
|
|
555
|
+
break
|
|
556
|
+
};
|
|
426
557
|
break;
|
|
427
|
-
case
|
|
428
|
-
deviceData.Device.
|
|
429
|
-
deviceData.Device.EffectiveFlags = HeatPump.EffectiveFlags.
|
|
558
|
+
case caseHotWater: //Hot Water
|
|
559
|
+
deviceData.Device.SetTankWaterTemperature = value;
|
|
560
|
+
deviceData.Device.EffectiveFlags = HeatPump.EffectiveFlags.SetTankWaterTemperature;
|
|
430
561
|
break;
|
|
431
|
-
case
|
|
432
|
-
|
|
433
|
-
|
|
562
|
+
case caseZone2: //Zone 2
|
|
563
|
+
switch (this.accessory.zones[i].operationMode) {
|
|
564
|
+
case 1: //HEAT FLOW
|
|
565
|
+
deviceData.Device.SetHeatFlowTemperatureZone2 = value;
|
|
566
|
+
deviceData.Device.EffectiveFlags = HeatPump.EffectiveFlags.SetHeatFlowTemperatureZone2;
|
|
567
|
+
break;
|
|
568
|
+
case 4: //COOL FLOW
|
|
569
|
+
deviceData.Device.SetCoolFlowTemperatureZone2 = value;
|
|
570
|
+
deviceData.Device.EffectiveFlags = HeatPump.EffectiveFlags.SetCoolFlowTemperatureZone2;
|
|
571
|
+
break;
|
|
572
|
+
default:
|
|
573
|
+
deviceData.Device.SetTemperatureZone2 = value;
|
|
574
|
+
deviceData.Device.EffectiveFlags = HeatPump.EffectiveFlags.SetTemperatureZone2;
|
|
575
|
+
break
|
|
576
|
+
};
|
|
434
577
|
break;
|
|
435
578
|
};
|
|
436
|
-
operationModeText = HeatPump.ZoneOperation[deviceData.Device.OperationModeZone2];
|
|
437
|
-
break;
|
|
438
|
-
};
|
|
439
579
|
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
.
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
580
|
+
const set = i > 0 ? await this.melCloudAtw.send(deviceData) : false;
|
|
581
|
+
const info = this.disableLogInfo || i === 0 ? false : this.emit('message', `${zoneName}, Set heating threshold temperature: ${value}${this.accessory.temperatureUnit}`);
|
|
582
|
+
} catch (error) {
|
|
583
|
+
this.emit('warn', `${zoneName}, Set heating threshold temperature error: ${error}`);
|
|
584
|
+
};
|
|
585
|
+
});
|
|
586
|
+
};
|
|
587
|
+
melCloudService.getCharacteristic(Characteristic.LockPhysicalControls)
|
|
588
|
+
.onGet(async () => {
|
|
589
|
+
const value = this.accessory.zones[i].lockPhysicalControl;
|
|
590
|
+
return value;
|
|
591
|
+
})
|
|
592
|
+
.onSet(async (value) => {
|
|
593
|
+
try {
|
|
594
|
+
value = value ? true : false;
|
|
595
|
+
switch (i) {
|
|
596
|
+
case caseHeatPump: //Heat Pump
|
|
597
|
+
deviceData.Device.ProhibitZone1 = value;
|
|
598
|
+
deviceData.Device.ProhibitHotWater = value;
|
|
599
|
+
deviceData.Device.ProhibitZone2 = value;
|
|
600
|
+
HeatPump.EffectiveFlags.ProhibitHeatingZone1 + HeatPump.EffectiveFlags.ProhibitHotWater + HeatPump.EffectiveFlags.ProhibitHeatingZone2;
|
|
601
|
+
break;
|
|
602
|
+
case caseZone1: //Zone 1
|
|
603
|
+
deviceData.Device.ProhibitZone1 = value;
|
|
604
|
+
HeatPump.EffectiveFlags.ProhibitHeatingZone1;
|
|
605
|
+
break;
|
|
606
|
+
case caseHotWater: //Hot Water
|
|
607
|
+
deviceData.Device.ProhibitHotWater = value;
|
|
608
|
+
HeatPump.EffectiveFlags.ProhibitHotWater;
|
|
609
|
+
break;
|
|
610
|
+
case caseZone2: //Zone 2
|
|
611
|
+
deviceData.Device.ProhibitZone2 = value;
|
|
612
|
+
HeatPump.EffectiveFlags.ProhibitHeatingZone2;
|
|
613
|
+
break;
|
|
614
|
+
};
|
|
615
|
+
|
|
616
|
+
await this.melCloudAtw.send(deviceData);
|
|
617
|
+
const info = this.disableLogInfo ? false : this.emit('message', `${zoneName}, Set lock physical controls: ${value ? 'LOCK' : 'UNLOCK'}`);
|
|
618
|
+
} catch (error) {
|
|
619
|
+
this.emit('warn', `${zoneName}, Set lock physical controls error: ${error}`);
|
|
620
|
+
};
|
|
621
|
+
});
|
|
622
|
+
melCloudService.getCharacteristic(Characteristic.TemperatureDisplayUnits)
|
|
623
|
+
.onGet(async () => {
|
|
624
|
+
const value = this.accessory.useFahrenheit;
|
|
625
|
+
return value;
|
|
626
|
+
})
|
|
627
|
+
.onSet(async (value) => {
|
|
628
|
+
try {
|
|
629
|
+
accountInfo.UseFahrenheit = [false, true][value];
|
|
630
|
+
await this.melCloud.send(accountInfo);
|
|
631
|
+
this.accessory.useFahrenheit = value;
|
|
632
|
+
const info = this.disableLogInfo ? false : this.emit('message', `Set temperature display unit: ${TemperatureDisplayUnits[value]}`);
|
|
633
|
+
} catch (error) {
|
|
634
|
+
this.emit('warn', `Set temperature display unit error: ${error}`);
|
|
635
|
+
};
|
|
636
|
+
});
|
|
637
|
+
this.melCloudServices.push(melCloudService);
|
|
638
|
+
accessory.addService(melCloudService);
|
|
639
|
+
break;
|
|
640
|
+
case 2: //Thermostat
|
|
641
|
+
const debug3 = this.enableDebugMode ? this.emit('debug', `Prepare thermostat ${zoneName} service`) : false;
|
|
642
|
+
const melCloudServiceT = new Service.Thermostat(serviceName, `Thermostat ${deviceId} ${i}`);
|
|
643
|
+
melCloudServiceT.setPrimaryService(true);
|
|
644
|
+
melCloudServiceT.getCharacteristic(Characteristic.CurrentHeatingCoolingState)
|
|
645
|
+
.onGet(async () => {
|
|
646
|
+
const value = this.accessory.zones[i].currentOperationMode;
|
|
647
|
+
return value;
|
|
648
|
+
});
|
|
649
|
+
melCloudServiceT.getCharacteristic(Characteristic.TargetHeatingCoolingState)
|
|
459
650
|
.setProps({
|
|
460
|
-
minValue: this.accessory.zones[i].
|
|
461
|
-
maxValue: this.accessory.zones[i].
|
|
462
|
-
|
|
651
|
+
minValue: this.accessory.zones[i].operationModesSetPropsMinValue,
|
|
652
|
+
maxValue: this.accessory.zones[i].operationModesSetPropsMaxValue,
|
|
653
|
+
validValues: this.accessory.zones[i].operationModesSetPropsValidValues
|
|
463
654
|
})
|
|
464
655
|
.onGet(async () => {
|
|
465
|
-
const value = this.accessory.zones[i].
|
|
656
|
+
const value = this.accessory.zones[i].targetOperationMode;
|
|
466
657
|
return value;
|
|
467
658
|
})
|
|
468
659
|
.onSet(async (value) => {
|
|
469
660
|
try {
|
|
661
|
+
let operationModeText = '';
|
|
470
662
|
switch (i) {
|
|
471
|
-
case
|
|
472
|
-
|
|
473
|
-
|
|
663
|
+
case caseHeatPump: //Heat Pump - HEAT, COOL
|
|
664
|
+
switch (value) {
|
|
665
|
+
case 0: //OFF
|
|
666
|
+
deviceData.Device.Power = false;
|
|
667
|
+
deviceData.Device.EffectiveFlags = HeatPump.EffectiveFlags.Power;
|
|
668
|
+
break;
|
|
669
|
+
case 1: //HEAT
|
|
670
|
+
deviceData.Device.Power = true;
|
|
671
|
+
deviceData.Device.UnitStatus = 0;
|
|
672
|
+
deviceData.Device.EffectiveFlags = HeatPump.EffectiveFlags.Power + HeatPump.EffectiveFlags.OperationMode;
|
|
673
|
+
break;
|
|
674
|
+
case 2: //COOL
|
|
675
|
+
deviceData.Device.Power = true;
|
|
676
|
+
deviceData.Device.UnitStatus = 1;
|
|
677
|
+
deviceData.Device.EffectiveFlags = HeatPump.EffectiveFlags.Power + HeatPump.EffectiveFlags.OperationMode;
|
|
678
|
+
break;
|
|
679
|
+
case 3: //AUTO
|
|
680
|
+
deviceData.Device.Power = true;
|
|
681
|
+
deviceData.Device.EffectiveFlags = HeatPump.EffectiveFlags.Power;
|
|
682
|
+
break;
|
|
683
|
+
};
|
|
684
|
+
operationModeText = [HeatPump.System[0], HeatPump.System[deviceData.Device.UnitStatus]][this.accessory.power];
|
|
474
685
|
break;
|
|
475
|
-
case caseZone1: //Zone 1
|
|
476
|
-
switch (
|
|
477
|
-
case
|
|
478
|
-
deviceData.Device.
|
|
479
|
-
deviceData.Device.EffectiveFlags = HeatPump.EffectiveFlags.
|
|
686
|
+
case caseZone1: //Zone 1 - HEAT THERMOSTAT, HEAT FLOW, HEAT CURVE, COOL THERMOSTAT, COOL FLOW, FLOOR DRY UP
|
|
687
|
+
switch (value) {
|
|
688
|
+
case 0: //OFF - HEAT CURVE
|
|
689
|
+
deviceData.Device.OperationModeZone1 = 2;
|
|
690
|
+
deviceData.Device.EffectiveFlags = HeatPump.EffectiveFlags.OperationModeZone1;
|
|
480
691
|
break;
|
|
481
|
-
case
|
|
482
|
-
deviceData.Device.
|
|
483
|
-
deviceData.Device.EffectiveFlags = HeatPump.EffectiveFlags.
|
|
692
|
+
case 1: //HEAT - HEAT THERMOSTAT / COOL THERMOSTAT
|
|
693
|
+
deviceData.Device.OperationModeZone1 = [0, 3][this.unitStatus];
|
|
694
|
+
deviceData.Device.EffectiveFlags = HeatPump.EffectiveFlags.OperationModeZone1;
|
|
695
|
+
break;
|
|
696
|
+
case 2: //COOL - HEAT FLOW / COOL FLOW
|
|
697
|
+
deviceData.Device.OperationModeZone1 = [1, 4][this.unitStatus];
|
|
698
|
+
deviceData.Device.EffectiveFlags = HeatPump.EffectiveFlags.OperationModeZone1;
|
|
699
|
+
break;
|
|
700
|
+
case 3: //AUTO - HEAT CURVE
|
|
701
|
+
deviceData.Device.OperationModeZone1 = 2;
|
|
702
|
+
deviceData.Device.EffectiveFlags = HeatPump.EffectiveFlags.OperationModeZone1;
|
|
484
703
|
break;
|
|
485
|
-
default:
|
|
486
|
-
deviceData.Device.SetTemperatureZone1 = value;
|
|
487
|
-
deviceData.Device.EffectiveFlags = HeatPump.EffectiveFlags.SetTemperatureZone1;
|
|
488
|
-
break
|
|
489
704
|
};
|
|
705
|
+
operationModeText = HeatPump.ZoneOperation[deviceData.Device.OperationModeZone1];
|
|
490
706
|
break;
|
|
491
|
-
case caseHotWater: //Hot Water
|
|
492
|
-
|
|
493
|
-
|
|
707
|
+
case caseHotWater: //Hot Water - AUTO, HEAT NOW
|
|
708
|
+
switch (value) {
|
|
709
|
+
case 0: //OFF
|
|
710
|
+
deviceData.Device.ForcedHotWaterMode = false;
|
|
711
|
+
deviceData.Device.EffectiveFlags = HeatPump.EffectiveFlags.ForcedHotWaterMode;
|
|
712
|
+
break;
|
|
713
|
+
case 1: //HEAT
|
|
714
|
+
deviceData.Device.ForcedHotWaterMode = true;
|
|
715
|
+
deviceData.Device.EffectiveFlags = HeatPump.EffectiveFlags.ForcedHotWaterMode;
|
|
716
|
+
break;
|
|
717
|
+
case 2: //COOL
|
|
718
|
+
deviceData.Device.ForcedHotWaterMode = false;
|
|
719
|
+
deviceData.Device.EffectiveFlags = HeatPump.EffectiveFlags.ForcedHotWaterMode;
|
|
720
|
+
break;
|
|
721
|
+
case 3: //AUTO
|
|
722
|
+
deviceData.Device.ForcedHotWaterMode = false;
|
|
723
|
+
deviceData.Device.EffectiveFlags = HeatPump.EffectiveFlags.ForcedHotWaterMode;
|
|
724
|
+
break;
|
|
725
|
+
};
|
|
726
|
+
operationModeText = deviceData.Device.OperationMode === 1 ? HeatPump.ForceDhw[1] : HeatPump.ForceDhw[deviceData.Device.ForcedHotWaterMode ? 1 : 0];
|
|
494
727
|
break;
|
|
495
|
-
case caseZone2: //Zone 2
|
|
496
|
-
switch (
|
|
497
|
-
case
|
|
498
|
-
deviceData.Device.
|
|
499
|
-
deviceData.Device.EffectiveFlags = HeatPump.EffectiveFlags.
|
|
728
|
+
case caseZone2: //Zone 2 - HEAT THERMOSTAT, HEAT FLOW, HEAT CURVE, COOL THERMOSTAT, COOL FLOW, FLOOR DRY UP
|
|
729
|
+
switch (value) {
|
|
730
|
+
case 0: //OFF - HEAT CURVE
|
|
731
|
+
deviceData.Device.OperationModeZone2 = 2;
|
|
732
|
+
deviceData.Device.EffectiveFlags = HeatPump.EffectiveFlags.OperationModeZone2;
|
|
500
733
|
break;
|
|
501
|
-
case
|
|
502
|
-
deviceData.Device.
|
|
503
|
-
deviceData.Device.EffectiveFlags = HeatPump.EffectiveFlags.
|
|
734
|
+
case 1: //HEAT - HEAT THERMOSTAT / COOL THERMOSTAT
|
|
735
|
+
deviceData.Device.OperationModeZone2 = [0, 3][this.unitStatus];
|
|
736
|
+
deviceData.Device.EffectiveFlags = HeatPump.EffectiveFlags.OperationModeZone2;
|
|
737
|
+
break;
|
|
738
|
+
case 2: //COOL - HEAT FLOW / COOL FLOW
|
|
739
|
+
deviceData.Device.OperationModeZone2 = [1, 4][this.unitStatus];
|
|
740
|
+
deviceData.Device.EffectiveFlags = HeatPump.EffectiveFlags.OperationModeZone2;
|
|
741
|
+
break;
|
|
742
|
+
case 3: //AUTO - HEAT CURVE
|
|
743
|
+
deviceData.Device.OperationModeZone2 = 2;
|
|
744
|
+
deviceData.Device.EffectiveFlags = HeatPump.EffectiveFlags.OperationModeZone2;
|
|
504
745
|
break;
|
|
505
|
-
default:
|
|
506
|
-
deviceData.Device.SetTemperatureZone2 = value;
|
|
507
|
-
deviceData.Device.EffectiveFlags = HeatPump.EffectiveFlags.SetTemperatureZone2;
|
|
508
|
-
break
|
|
509
746
|
};
|
|
747
|
+
operationModeText = HeatPump.ZoneOperation[deviceData.Device.OperationModeZone2];
|
|
510
748
|
break;
|
|
511
749
|
};
|
|
512
750
|
|
|
513
|
-
|
|
514
|
-
const info = this.disableLogInfo
|
|
751
|
+
await this.melCloudAtw.send(deviceData);
|
|
752
|
+
const info = this.disableLogInfo ? false : this.emit('message', `${zoneName}, Set operation mode: ${operationModeText}`);
|
|
515
753
|
} catch (error) {
|
|
516
|
-
this.emit('warn', `${zoneName}, Set
|
|
754
|
+
this.emit('warn', `${zoneName}, Set operation mode error: ${error}`);
|
|
517
755
|
};
|
|
518
756
|
});
|
|
519
|
-
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
|
|
757
|
+
melCloudServiceT.getCharacteristic(Characteristic.CurrentTemperature)
|
|
758
|
+
.setProps({
|
|
759
|
+
minValue: -35,
|
|
760
|
+
maxValue: 150,
|
|
761
|
+
minStep: 0.5
|
|
762
|
+
})
|
|
763
|
+
.onGet(async () => {
|
|
764
|
+
const value = this.accessory.zones[i].roomTemperature;
|
|
765
|
+
return value;
|
|
766
|
+
});
|
|
767
|
+
melCloudServiceT.getCharacteristic(Characteristic.TargetTemperature)
|
|
523
768
|
.setProps({
|
|
524
769
|
minValue: this.accessory.zones[i].temperaturesSetPropsMinValue,
|
|
525
770
|
maxValue: this.accessory.zones[i].temperaturesSetPropsMaxValue,
|
|
@@ -532,514 +777,273 @@ class DeviceAtw extends EventEmitter {
|
|
|
532
777
|
.onSet(async (value) => {
|
|
533
778
|
try {
|
|
534
779
|
switch (i) {
|
|
535
|
-
case
|
|
780
|
+
case caseHeatPump: //Heat Pump
|
|
536
781
|
//deviceData.Device.SetTemperatureZone1 = value;
|
|
537
782
|
//deviceData.Device.EffectiveFlags = CONSTANTS.HeatPump.EffectiveFlags.SetTemperatureZone1;
|
|
538
783
|
break;
|
|
539
784
|
case caseZone1: //Zone 1
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
deviceData.Device.SetHeatFlowTemperatureZone1 = value;
|
|
543
|
-
deviceData.Device.EffectiveFlags = HeatPump.EffectiveFlags.SetHeatFlowTemperatureZone1;
|
|
544
|
-
break;
|
|
545
|
-
case 4: //COOL FLOW
|
|
546
|
-
deviceData.Device.SetCoolFlowTemperatureZone1 = value;
|
|
547
|
-
deviceData.Device.EffectiveFlags = HeatPump.EffectiveFlags.SetCoolFlowTemperatureZone1;
|
|
548
|
-
break;
|
|
549
|
-
default:
|
|
550
|
-
deviceData.Device.SetTemperatureZone1 = value;
|
|
551
|
-
deviceData.Device.EffectiveFlags = HeatPump.EffectiveFlags.SetTemperatureZone1;
|
|
552
|
-
break
|
|
553
|
-
};
|
|
785
|
+
deviceData.Device.SetTemperatureZone1 = value;
|
|
786
|
+
deviceData.Device.EffectiveFlags = HeatPump.EffectiveFlags.SetTemperatureZone1;
|
|
554
787
|
break;
|
|
555
788
|
case caseHotWater: //Hot Water
|
|
556
789
|
deviceData.Device.SetTankWaterTemperature = value;
|
|
557
790
|
deviceData.Device.EffectiveFlags = HeatPump.EffectiveFlags.SetTankWaterTemperature;
|
|
558
791
|
break;
|
|
559
792
|
case caseZone2: //Zone 2
|
|
560
|
-
|
|
561
|
-
|
|
562
|
-
deviceData.Device.SetHeatFlowTemperatureZone2 = value;
|
|
563
|
-
deviceData.Device.EffectiveFlags = HeatPump.EffectiveFlags.SetHeatFlowTemperatureZone2;
|
|
564
|
-
break;
|
|
565
|
-
case 4: //COOL FLOW
|
|
566
|
-
deviceData.Device.SetCoolFlowTemperatureZone2 = value;
|
|
567
|
-
deviceData.Device.EffectiveFlags = HeatPump.EffectiveFlags.SetCoolFlowTemperatureZone2;
|
|
568
|
-
break;
|
|
569
|
-
default:
|
|
570
|
-
deviceData.Device.SetTemperatureZone2 = value;
|
|
571
|
-
deviceData.Device.EffectiveFlags = HeatPump.EffectiveFlags.SetTemperatureZone2;
|
|
572
|
-
break
|
|
573
|
-
};
|
|
793
|
+
deviceData.Device.SetTemperatureZone2 = value;
|
|
794
|
+
deviceData.Device.EffectiveFlags = HeatPump.EffectiveFlags.SetTemperatureZone2;
|
|
574
795
|
break;
|
|
575
796
|
};
|
|
576
797
|
|
|
577
798
|
const set = i > 0 ? await this.melCloudAtw.send(deviceData) : false;
|
|
578
|
-
const info = this.disableLogInfo || i === 0 ? false : this.emit('message', `${zoneName}, Set
|
|
799
|
+
const info = this.disableLogInfo || i === 0 ? false : this.emit('message', `${zoneName}, Set temperature: ${value}${this.accessory.temperatureUnit}`);
|
|
579
800
|
} catch (error) {
|
|
580
|
-
this.emit('warn', `${zoneName}, Set
|
|
801
|
+
this.emit('warn', `${zoneName}, Set temperature error: ${error}`);
|
|
581
802
|
};
|
|
582
803
|
});
|
|
583
|
-
|
|
584
|
-
melCloudService.getCharacteristic(Characteristic.LockPhysicalControls)
|
|
585
|
-
.onGet(async () => {
|
|
586
|
-
const value = this.accessory.zones[i].lockPhysicalControl;
|
|
587
|
-
return value;
|
|
588
|
-
})
|
|
589
|
-
.onSet(async (value) => {
|
|
590
|
-
try {
|
|
591
|
-
value = value ? true : false;
|
|
592
|
-
switch (i) {
|
|
593
|
-
case 0: //Heat Pump
|
|
594
|
-
deviceData.Device.ProhibitZone1 = value;
|
|
595
|
-
deviceData.Device.ProhibitHotWater = value;
|
|
596
|
-
deviceData.Device.ProhibitZone2 = value;
|
|
597
|
-
HeatPump.EffectiveFlags.ProhibitHeatingZone1 + HeatPump.EffectiveFlags.ProhibitHotWater + HeatPump.EffectiveFlags.ProhibitHeatingZone2;
|
|
598
|
-
break;
|
|
599
|
-
case caseZone1: //Zone 1
|
|
600
|
-
deviceData.Device.ProhibitZone1 = value;
|
|
601
|
-
HeatPump.EffectiveFlags.ProhibitHeatingZone1;
|
|
602
|
-
break;
|
|
603
|
-
case caseHotWater: //Hot Water
|
|
604
|
-
deviceData.Device.ProhibitHotWater = value;
|
|
605
|
-
HeatPump.EffectiveFlags.ProhibitHotWater;
|
|
606
|
-
break;
|
|
607
|
-
case caseZone2: //Zone 2
|
|
608
|
-
deviceData.Device.ProhibitZone2 = value;
|
|
609
|
-
HeatPump.EffectiveFlags.ProhibitHeatingZone2;
|
|
610
|
-
break;
|
|
611
|
-
};
|
|
612
|
-
|
|
613
|
-
await this.melCloudAtw.send(deviceData);
|
|
614
|
-
const info = this.disableLogInfo ? false : this.emit('message', `${zoneName}, Set lock physical controls: ${value ? 'LOCK' : 'UNLOCK'}`);
|
|
615
|
-
} catch (error) {
|
|
616
|
-
this.emit('warn', `${zoneName}, Set lock physical controls error: ${error}`);
|
|
617
|
-
};
|
|
618
|
-
});
|
|
619
|
-
melCloudService.getCharacteristic(Characteristic.TemperatureDisplayUnits)
|
|
620
|
-
.onGet(async () => {
|
|
621
|
-
const value = this.accessory.useFahrenheit;
|
|
622
|
-
return value;
|
|
623
|
-
})
|
|
624
|
-
.onSet(async (value) => {
|
|
625
|
-
try {
|
|
626
|
-
accountInfo.UseFahrenheit = [false, true][value];
|
|
627
|
-
await this.melCloud.send(accountInfo);
|
|
628
|
-
this.accessory.useFahrenheit = value;
|
|
629
|
-
const info = this.disableLogInfo ? false : this.emit('message', `Set temperature display unit: ${TemperatureDisplayUnits[value]}`);
|
|
630
|
-
} catch (error) {
|
|
631
|
-
this.emit('warn', `Set temperature display unit error: ${error}`);
|
|
632
|
-
};
|
|
633
|
-
});
|
|
634
|
-
this.melCloudServices.push(melCloudService);
|
|
635
|
-
accessory.addService(melCloudService);
|
|
636
|
-
break;
|
|
637
|
-
case 2: //Thermostat
|
|
638
|
-
const debug3 = this.enableDebugMode ? this.emit('debug', `Prepare thermostat ${zoneName} service`) : false;
|
|
639
|
-
const melCloudServiceT = new Service.Thermostat(serviceName, `Thermostat ${deviceId} ${i}`);
|
|
640
|
-
melCloudServiceT.setPrimaryService(true);
|
|
641
|
-
melCloudServiceT.getCharacteristic(Characteristic.CurrentHeatingCoolingState)
|
|
642
|
-
.onGet(async () => {
|
|
643
|
-
const value = this.accessory.zones[i].currentOperationMode;
|
|
644
|
-
return value;
|
|
645
|
-
});
|
|
646
|
-
melCloudServiceT.getCharacteristic(Characteristic.TargetHeatingCoolingState)
|
|
647
|
-
.setProps({
|
|
648
|
-
minValue: this.accessory.zones[i].operationModesSetPropsMinValue,
|
|
649
|
-
maxValue: this.accessory.zones[i].operationModesSetPropsMaxValue,
|
|
650
|
-
validValues: this.accessory.zones[i].operationModesSetPropsValidValues
|
|
651
|
-
})
|
|
652
|
-
.onGet(async () => {
|
|
653
|
-
const value = this.accessory.zones[i].targetOperationMode;
|
|
654
|
-
return value;
|
|
655
|
-
})
|
|
656
|
-
.onSet(async (value) => {
|
|
657
|
-
try {
|
|
658
|
-
let operationModeText = '';
|
|
659
|
-
switch (i) {
|
|
660
|
-
case 0: //Heat Pump - HEAT, COOL
|
|
661
|
-
switch (value) {
|
|
662
|
-
case 0: //OFF
|
|
663
|
-
deviceData.Device.Power = false;
|
|
664
|
-
deviceData.Device.EffectiveFlags = HeatPump.EffectiveFlags.Power;
|
|
665
|
-
break;
|
|
666
|
-
case 1: //HEAT
|
|
667
|
-
deviceData.Device.Power = true;
|
|
668
|
-
deviceData.Device.UnitStatus = 0;
|
|
669
|
-
deviceData.Device.EffectiveFlags = HeatPump.EffectiveFlags.Power + HeatPump.EffectiveFlags.OperationMode;
|
|
670
|
-
break;
|
|
671
|
-
case 2: //COOL
|
|
672
|
-
deviceData.Device.Power = true;
|
|
673
|
-
deviceData.Device.UnitStatus = 1;
|
|
674
|
-
deviceData.Device.EffectiveFlags = HeatPump.EffectiveFlags.Power + HeatPump.EffectiveFlags.OperationMode;
|
|
675
|
-
break;
|
|
676
|
-
case 3: //AUTO
|
|
677
|
-
deviceData.Device.Power = true;
|
|
678
|
-
deviceData.Device.EffectiveFlags = HeatPump.EffectiveFlags.Power;
|
|
679
|
-
break;
|
|
680
|
-
};
|
|
681
|
-
operationModeText = [HeatPump.System[0], HeatPump.System[deviceData.Device.UnitStatus]][this.accessory.power];
|
|
682
|
-
break;
|
|
683
|
-
case caseZone1: //Zone 1 - HEAT THERMOSTAT, HEAT FLOW, HEAT CURVE, COOL THERMOSTAT, COOL FLOW, FLOOR DRY UP
|
|
684
|
-
switch (value) {
|
|
685
|
-
case 0: //OFF - HEAT CURVE
|
|
686
|
-
deviceData.Device.OperationModeZone1 = 2;
|
|
687
|
-
deviceData.Device.EffectiveFlags = HeatPump.EffectiveFlags.OperationModeZone1;
|
|
688
|
-
break;
|
|
689
|
-
case 1: //HEAT - HEAT THERMOSTAT / COOL THERMOSTAT
|
|
690
|
-
deviceData.Device.OperationModeZone1 = [0, 3][this.unitStatus];
|
|
691
|
-
deviceData.Device.EffectiveFlags = HeatPump.EffectiveFlags.OperationModeZone1;
|
|
692
|
-
break;
|
|
693
|
-
case 2: //COOL - HEAT FLOW / COOL FLOW
|
|
694
|
-
deviceData.Device.OperationModeZone1 = [1, 4][this.unitStatus];
|
|
695
|
-
deviceData.Device.EffectiveFlags = HeatPump.EffectiveFlags.OperationModeZone1;
|
|
696
|
-
break;
|
|
697
|
-
case 3: //AUTO - HEAT CURVE
|
|
698
|
-
deviceData.Device.OperationModeZone1 = 2;
|
|
699
|
-
deviceData.Device.EffectiveFlags = HeatPump.EffectiveFlags.OperationModeZone1;
|
|
700
|
-
break;
|
|
701
|
-
};
|
|
702
|
-
operationModeText = HeatPump.ZoneOperation[deviceData.Device.OperationModeZone1];
|
|
703
|
-
break;
|
|
704
|
-
case caseHotWater: //Hot Water - AUTO, HEAT NOW
|
|
705
|
-
switch (value) {
|
|
706
|
-
case 0: //OFF
|
|
707
|
-
deviceData.Device.ForcedHotWaterMode = false;
|
|
708
|
-
deviceData.Device.EffectiveFlags = HeatPump.EffectiveFlags.ForcedHotWaterMode;
|
|
709
|
-
break;
|
|
710
|
-
case 1: //HEAT
|
|
711
|
-
deviceData.Device.ForcedHotWaterMode = true;
|
|
712
|
-
deviceData.Device.EffectiveFlags = HeatPump.EffectiveFlags.ForcedHotWaterMode;
|
|
713
|
-
break;
|
|
714
|
-
case 2: //COOL
|
|
715
|
-
deviceData.Device.ForcedHotWaterMode = false;
|
|
716
|
-
deviceData.Device.EffectiveFlags = HeatPump.EffectiveFlags.ForcedHotWaterMode;
|
|
717
|
-
break;
|
|
718
|
-
case 3: //AUTO
|
|
719
|
-
deviceData.Device.ForcedHotWaterMode = false;
|
|
720
|
-
deviceData.Device.EffectiveFlags = HeatPump.EffectiveFlags.ForcedHotWaterMode;
|
|
721
|
-
break;
|
|
722
|
-
};
|
|
723
|
-
operationModeText = deviceData.Device.OperationMode === 1 ? HeatPump.ForceDhw[1] : HeatPump.ForceDhw[deviceData.Device.ForcedHotWaterMode ? 1 : 0];
|
|
724
|
-
break;
|
|
725
|
-
case caseZone2: //Zone 2 - HEAT THERMOSTAT, HEAT FLOW, HEAT CURVE, COOL THERMOSTAT, COOL FLOW, FLOOR DRY UP
|
|
726
|
-
switch (value) {
|
|
727
|
-
case 0: //OFF - HEAT CURVE
|
|
728
|
-
deviceData.Device.OperationModeZone2 = 2;
|
|
729
|
-
deviceData.Device.EffectiveFlags = HeatPump.EffectiveFlags.OperationModeZone2;
|
|
730
|
-
break;
|
|
731
|
-
case 1: //HEAT - HEAT THERMOSTAT / COOL THERMOSTAT
|
|
732
|
-
deviceData.Device.OperationModeZone2 = [0, 3][this.unitStatus];
|
|
733
|
-
deviceData.Device.EffectiveFlags = HeatPump.EffectiveFlags.OperationModeZone2;
|
|
734
|
-
break;
|
|
735
|
-
case 2: //COOL - HEAT FLOW / COOL FLOW
|
|
736
|
-
deviceData.Device.OperationModeZone2 = [1, 4][this.unitStatus];
|
|
737
|
-
deviceData.Device.EffectiveFlags = HeatPump.EffectiveFlags.OperationModeZone2;
|
|
738
|
-
break;
|
|
739
|
-
case 3: //AUTO - HEAT CURVE
|
|
740
|
-
deviceData.Device.OperationModeZone2 = 2;
|
|
741
|
-
deviceData.Device.EffectiveFlags = HeatPump.EffectiveFlags.OperationModeZone2;
|
|
742
|
-
break;
|
|
743
|
-
};
|
|
744
|
-
operationModeText = HeatPump.ZoneOperation[deviceData.Device.OperationModeZone2];
|
|
745
|
-
break;
|
|
746
|
-
};
|
|
747
|
-
|
|
748
|
-
await this.melCloudAtw.send(deviceData);
|
|
749
|
-
const info = this.disableLogInfo ? false : this.emit('message', `${zoneName}, Set operation mode: ${operationModeText}`);
|
|
750
|
-
} catch (error) {
|
|
751
|
-
this.emit('warn', `${zoneName}, Set operation mode error: ${error}`);
|
|
752
|
-
};
|
|
753
|
-
});
|
|
754
|
-
melCloudServiceT.getCharacteristic(Characteristic.CurrentTemperature)
|
|
755
|
-
.setProps({
|
|
756
|
-
minValue: -35,
|
|
757
|
-
maxValue: 150,
|
|
758
|
-
minStep: 0.5
|
|
759
|
-
})
|
|
760
|
-
.onGet(async () => {
|
|
761
|
-
const value = this.accessory.zones[i].roomTemperature;
|
|
762
|
-
return value;
|
|
763
|
-
});
|
|
764
|
-
melCloudServiceT.getCharacteristic(Characteristic.TargetTemperature)
|
|
765
|
-
.setProps({
|
|
766
|
-
minValue: this.accessory.zones[i].temperaturesSetPropsMinValue,
|
|
767
|
-
maxValue: this.accessory.zones[i].temperaturesSetPropsMaxValue,
|
|
768
|
-
minStep: this.accessory.temperatureIncrement
|
|
769
|
-
})
|
|
770
|
-
.onGet(async () => {
|
|
771
|
-
const value = this.accessory.zones[i].setTemperature;
|
|
772
|
-
return value;
|
|
773
|
-
})
|
|
774
|
-
.onSet(async (value) => {
|
|
775
|
-
try {
|
|
776
|
-
switch (i) {
|
|
777
|
-
case 0: //Heat Pump
|
|
778
|
-
//deviceData.Device.SetTemperatureZone1 = value;
|
|
779
|
-
//deviceData.Device.EffectiveFlags = CONSTANTS.HeatPump.EffectiveFlags.SetTemperatureZone1;
|
|
780
|
-
break;
|
|
781
|
-
case caseZone1: //Zone 1
|
|
782
|
-
deviceData.Device.SetTemperatureZone1 = value;
|
|
783
|
-
deviceData.Device.EffectiveFlags = HeatPump.EffectiveFlags.SetTemperatureZone1;
|
|
784
|
-
break;
|
|
785
|
-
case caseHotWater: //Hot Water
|
|
786
|
-
deviceData.Device.SetTankWaterTemperature = value;
|
|
787
|
-
deviceData.Device.EffectiveFlags = HeatPump.EffectiveFlags.SetTankWaterTemperature;
|
|
788
|
-
break;
|
|
789
|
-
case caseZone2: //Zone 2
|
|
790
|
-
deviceData.Device.SetTemperatureZone2 = value;
|
|
791
|
-
deviceData.Device.EffectiveFlags = HeatPump.EffectiveFlags.SetTemperatureZone2;
|
|
792
|
-
break;
|
|
793
|
-
};
|
|
794
|
-
|
|
795
|
-
const set = i > 0 ? await this.melCloudAtw.send(deviceData) : false;
|
|
796
|
-
const info = this.disableLogInfo || i === 0 ? false : this.emit('message', `${zoneName}, Set temperature: ${value}${this.accessory.temperatureUnit}`);
|
|
797
|
-
} catch (error) {
|
|
798
|
-
this.emit('warn', `${zoneName}, Set temperature error: ${error}`);
|
|
799
|
-
};
|
|
800
|
-
});
|
|
801
|
-
melCloudServiceT.getCharacteristic(Characteristic.TemperatureDisplayUnits)
|
|
802
|
-
.onGet(async () => {
|
|
803
|
-
const value = this.accessory.useFahrenheit;
|
|
804
|
-
return value;
|
|
805
|
-
})
|
|
806
|
-
.onSet(async (value) => {
|
|
807
|
-
try {
|
|
808
|
-
accountInfo.UseFahrenheit = [false, true][value];
|
|
809
|
-
await this.melCloud.send(accountInfo);
|
|
810
|
-
this.accessory.useFahrenheit = value;
|
|
811
|
-
const info = this.disableLogInfo ? false : this.emit('message', `Set temperature display unit: ${TemperatureDisplayUnits[value]}`);
|
|
812
|
-
} catch (error) {
|
|
813
|
-
this.emit('warn', `Set temperature display unit error: ${error}`);
|
|
814
|
-
};
|
|
815
|
-
});
|
|
816
|
-
this.melCloudServices.push(melCloudServiceT);
|
|
817
|
-
accessory.addService(melCloudServiceT);
|
|
818
|
-
break;
|
|
819
|
-
};
|
|
820
|
-
|
|
821
|
-
//temperature sensor services zones
|
|
822
|
-
switch (i) {
|
|
823
|
-
case 0: //Heat Pump
|
|
824
|
-
if (temperatureSensor && this.accessory.zones[i].roomTemperature !== null) {
|
|
825
|
-
const debug = this.enableDebugMode ? this.emit('debug', `${zoneName}, Prepare temperature sensor service`) : false;
|
|
826
|
-
this.roomTemperatureSensorService = new Service.TemperatureSensor(`${serviceName}`, `${zoneName} Temperature Sensor ${deviceId} ${i}`);
|
|
827
|
-
this.roomTemperatureSensorService.addOptionalCharacteristic(Characteristic.ConfiguredName);
|
|
828
|
-
this.roomTemperatureSensorService.setCharacteristic(Characteristic.ConfiguredName, `${accessoryName} ${zoneName}`);
|
|
829
|
-
this.roomTemperatureSensorService.getCharacteristic(Characteristic.CurrentTemperature)
|
|
830
|
-
.setProps({
|
|
831
|
-
minValue: -35,
|
|
832
|
-
maxValue: 150,
|
|
833
|
-
minStep: 0.5
|
|
834
|
-
})
|
|
804
|
+
melCloudServiceT.getCharacteristic(Characteristic.TemperatureDisplayUnits)
|
|
835
805
|
.onGet(async () => {
|
|
836
|
-
const
|
|
837
|
-
return
|
|
806
|
+
const value = this.accessory.useFahrenheit;
|
|
807
|
+
return value;
|
|
838
808
|
})
|
|
839
|
-
|
|
840
|
-
|
|
809
|
+
.onSet(async (value) => {
|
|
810
|
+
try {
|
|
811
|
+
accountInfo.UseFahrenheit = [false, true][value];
|
|
812
|
+
await this.melCloud.send(accountInfo);
|
|
813
|
+
this.accessory.useFahrenheit = value;
|
|
814
|
+
const info = this.disableLogInfo ? false : this.emit('message', `Set temperature display unit: ${TemperatureDisplayUnits[value]}`);
|
|
815
|
+
} catch (error) {
|
|
816
|
+
this.emit('warn', `Set temperature display unit error: ${error}`);
|
|
817
|
+
};
|
|
818
|
+
});
|
|
819
|
+
this.melCloudServices.push(melCloudServiceT);
|
|
820
|
+
accessory.addService(melCloudServiceT);
|
|
821
|
+
break;
|
|
822
|
+
};
|
|
841
823
|
|
|
842
|
-
|
|
843
|
-
|
|
844
|
-
|
|
845
|
-
this.
|
|
846
|
-
|
|
847
|
-
|
|
848
|
-
.
|
|
849
|
-
|
|
850
|
-
|
|
851
|
-
|
|
852
|
-
|
|
853
|
-
|
|
854
|
-
|
|
855
|
-
|
|
856
|
-
|
|
857
|
-
|
|
824
|
+
//temperature sensor services zones
|
|
825
|
+
switch (i) {
|
|
826
|
+
case caseHeatPump: //Heat Pump
|
|
827
|
+
if (temperatureSensor && this.accessory.zones[i].roomTemperature !== null) {
|
|
828
|
+
const debug = this.enableDebugMode ? this.emit('debug', `${zoneName}, Prepare temperature sensor service`) : false;
|
|
829
|
+
this.roomTemperatureSensorService = new Service.TemperatureSensor(`${serviceName}`, `${zoneName} Temperature Sensor ${deviceId} ${i}`);
|
|
830
|
+
this.roomTemperatureSensorService.addOptionalCharacteristic(Characteristic.ConfiguredName);
|
|
831
|
+
this.roomTemperatureSensorService.setCharacteristic(Characteristic.ConfiguredName, `${accessoryName} ${zoneName}`);
|
|
832
|
+
this.roomTemperatureSensorService.getCharacteristic(Characteristic.CurrentTemperature)
|
|
833
|
+
.setProps({
|
|
834
|
+
minValue: -35,
|
|
835
|
+
maxValue: 150,
|
|
836
|
+
minStep: 0.5
|
|
837
|
+
})
|
|
838
|
+
.onGet(async () => {
|
|
839
|
+
const state = this.accessory.zones[i].roomTemperature;
|
|
840
|
+
return state;
|
|
841
|
+
})
|
|
842
|
+
accessory.addService(this.roomTemperatureSensorService);
|
|
843
|
+
};
|
|
858
844
|
|
|
859
|
-
|
|
860
|
-
|
|
861
|
-
|
|
862
|
-
|
|
863
|
-
|
|
864
|
-
|
|
865
|
-
|
|
866
|
-
|
|
867
|
-
|
|
868
|
-
|
|
869
|
-
|
|
870
|
-
|
|
871
|
-
|
|
872
|
-
|
|
873
|
-
|
|
874
|
-
|
|
875
|
-
accessory.addService(this.returnTemperatureSensorService);
|
|
876
|
-
};
|
|
877
|
-
break;
|
|
878
|
-
case caseZone1: //Zone 1
|
|
879
|
-
if (temperatureSensor && this.accessory.zones[i].roomTemperature !== null) {
|
|
880
|
-
const debug = this.enableDebugMode ? this.emit('debug', `${zoneName}, Prepare temperature sensor service`) : false;
|
|
881
|
-
this.roomTemperatureZone1SensorService = new Service.TemperatureSensor(`${serviceName}`, `${zoneName} Temperature Sensor ${deviceId} ${i}`);
|
|
882
|
-
this.roomTemperatureZone1SensorService.addOptionalCharacteristic(Characteristic.ConfiguredName);
|
|
883
|
-
this.roomTemperatureZone1SensorService.setCharacteristic(Characteristic.ConfiguredName, `${accessoryName} ${zoneName}`);
|
|
884
|
-
this.roomTemperatureZone1SensorService.getCharacteristic(Characteristic.CurrentTemperature)
|
|
885
|
-
.setProps({
|
|
886
|
-
minValue: -35,
|
|
887
|
-
maxValue: 150,
|
|
888
|
-
minStep: 0.5
|
|
889
|
-
})
|
|
890
|
-
.onGet(async () => {
|
|
891
|
-
const state = this.accessory.zones[i].roomTemperature;
|
|
892
|
-
return state;
|
|
893
|
-
})
|
|
894
|
-
accessory.addService(this.roomTemperatureZone1SensorService);
|
|
895
|
-
};
|
|
845
|
+
if (temperatureSensorFlow && this.accessory.zones[i].flowTemperature !== null) {
|
|
846
|
+
const debug = this.enableDebugMode ? this.emit('debug', `Prepare flow temperature sensor service`) : false;
|
|
847
|
+
this.flowTemperatureSensorService = new Service.TemperatureSensor(`${serviceName} Flow`, `${zoneName} Temperature Sensor Flow ${deviceId} ${i}`);
|
|
848
|
+
this.flowTemperatureSensorService.addOptionalCharacteristic(Characteristic.ConfiguredName);
|
|
849
|
+
this.flowTemperatureSensorService.setCharacteristic(Characteristic.ConfiguredName, `${accessoryName} ${zoneName} Flow`);
|
|
850
|
+
this.flowTemperatureSensorService.getCharacteristic(Characteristic.CurrentTemperature)
|
|
851
|
+
.setProps({
|
|
852
|
+
minValue: -35,
|
|
853
|
+
maxValue: 150,
|
|
854
|
+
minStep: 0.5
|
|
855
|
+
})
|
|
856
|
+
.onGet(async () => {
|
|
857
|
+
const state = this.accessory.zones[i].flowTemperature;
|
|
858
|
+
return state;
|
|
859
|
+
})
|
|
860
|
+
accessory.addService(this.flowTemperatureSensorService);
|
|
896
861
|
|
|
897
|
-
|
|
898
|
-
|
|
899
|
-
|
|
900
|
-
|
|
901
|
-
|
|
902
|
-
|
|
903
|
-
.
|
|
904
|
-
|
|
905
|
-
|
|
906
|
-
|
|
907
|
-
|
|
908
|
-
|
|
909
|
-
|
|
910
|
-
|
|
911
|
-
|
|
912
|
-
|
|
913
|
-
|
|
862
|
+
};
|
|
863
|
+
if (temperatureSensorReturn && this.accessory.zones[i].returnTemperature !== null) {
|
|
864
|
+
const debug1 = this.enableDebugMode ? this.emit('debug', `Prepare return temperature sensor service`) : false;
|
|
865
|
+
this.returnTemperatureSensorService = new Service.TemperatureSensor(`${serviceName} Return`, `${zoneName} Temperature Sensor Return ${deviceId} ${i}`);
|
|
866
|
+
this.returnTemperatureSensorService.addOptionalCharacteristic(Characteristic.ConfiguredName);
|
|
867
|
+
this.returnTemperatureSensorService.setCharacteristic(Characteristic.ConfiguredName, `${accessoryName} ${zoneName} Return`);
|
|
868
|
+
this.returnTemperatureSensorService.getCharacteristic(Characteristic.CurrentTemperature)
|
|
869
|
+
.setProps({
|
|
870
|
+
minValue: -35,
|
|
871
|
+
maxValue: 150,
|
|
872
|
+
minStep: 0.5
|
|
873
|
+
})
|
|
874
|
+
.onGet(async () => {
|
|
875
|
+
const state = this.accessory.zones[i].returnTemperature;
|
|
876
|
+
return state;
|
|
877
|
+
})
|
|
878
|
+
accessory.addService(this.returnTemperatureSensorService);
|
|
879
|
+
};
|
|
880
|
+
break;
|
|
881
|
+
case caseZone1: //Zone 1
|
|
882
|
+
if (temperatureSensor && this.accessory.zones[i].roomTemperature !== null) {
|
|
883
|
+
const debug = this.enableDebugMode ? this.emit('debug', `${zoneName}, Prepare temperature sensor service`) : false;
|
|
884
|
+
this.roomTemperatureZone1SensorService = new Service.TemperatureSensor(`${serviceName}`, `${zoneName} Temperature Sensor ${deviceId} ${i}`);
|
|
885
|
+
this.roomTemperatureZone1SensorService.addOptionalCharacteristic(Characteristic.ConfiguredName);
|
|
886
|
+
this.roomTemperatureZone1SensorService.setCharacteristic(Characteristic.ConfiguredName, `${accessoryName} ${zoneName}`);
|
|
887
|
+
this.roomTemperatureZone1SensorService.getCharacteristic(Characteristic.CurrentTemperature)
|
|
888
|
+
.setProps({
|
|
889
|
+
minValue: -35,
|
|
890
|
+
maxValue: 150,
|
|
891
|
+
minStep: 0.5
|
|
892
|
+
})
|
|
893
|
+
.onGet(async () => {
|
|
894
|
+
const state = this.accessory.zones[i].roomTemperature;
|
|
895
|
+
return state;
|
|
896
|
+
})
|
|
897
|
+
accessory.addService(this.roomTemperatureZone1SensorService);
|
|
898
|
+
};
|
|
914
899
|
|
|
915
|
-
|
|
916
|
-
|
|
917
|
-
|
|
918
|
-
|
|
919
|
-
|
|
920
|
-
|
|
921
|
-
|
|
922
|
-
|
|
923
|
-
|
|
924
|
-
|
|
925
|
-
|
|
926
|
-
|
|
927
|
-
|
|
928
|
-
|
|
929
|
-
|
|
930
|
-
|
|
931
|
-
|
|
932
|
-
break;
|
|
933
|
-
case caseHotWater: //Hot Water
|
|
934
|
-
if (temperatureSensor && this.accessory.zones[i].roomTemperature !== null) {
|
|
935
|
-
const debug = this.enableDebugMode ? this.emit('debug', `${zoneName}, Prepare temperature sensor service`) : false;
|
|
936
|
-
this.roomTemperatureWaterTankSensorService = new Service.TemperatureSensor(`${serviceName}`, `${zoneName} Temperature Sensor ${deviceId} ${i}`);
|
|
937
|
-
this.roomTemperatureWaterTankSensorService.addOptionalCharacteristic(Characteristic.ConfiguredName);
|
|
938
|
-
this.roomTemperatureWaterTankSensorService.setCharacteristic(Characteristic.ConfiguredName, `${accessoryName} ${zoneName}`);
|
|
939
|
-
this.roomTemperatureWaterTankSensorService.getCharacteristic(Characteristic.CurrentTemperature)
|
|
940
|
-
.setProps({
|
|
941
|
-
minValue: -35,
|
|
942
|
-
maxValue: 150,
|
|
943
|
-
minStep: 0.5
|
|
944
|
-
})
|
|
945
|
-
.onGet(async () => {
|
|
946
|
-
const state = this.accessory.zones[i].roomTemperature;
|
|
947
|
-
return state;
|
|
948
|
-
})
|
|
949
|
-
accessory.addService(this.roomTemperatureWaterTankSensorService);
|
|
950
|
-
};
|
|
900
|
+
if (temperatureSensorFlowZone1 && this.accessory.zones[i].flowTemperature !== null) {
|
|
901
|
+
const debug2 = this.enableDebugMode ? this.emit('debug', `Prepare flow temperature zone 1 sensor service`) : false;
|
|
902
|
+
this.flowTemperatureZone1SensorService = new Service.TemperatureSensor(`${serviceName} Flow`, `${zoneName} Temperature Sensor Flow ${deviceId} ${i}`);
|
|
903
|
+
this.flowTemperatureZone1SensorService.addOptionalCharacteristic(Characteristic.ConfiguredName);
|
|
904
|
+
this.flowTemperatureZone1SensorService.setCharacteristic(Characteristic.ConfiguredName, `${accessoryName} ${zoneName} Flow`);
|
|
905
|
+
this.flowTemperatureZone1SensorService.getCharacteristic(Characteristic.CurrentTemperature)
|
|
906
|
+
.setProps({
|
|
907
|
+
minValue: -35,
|
|
908
|
+
maxValue: 150,
|
|
909
|
+
minStep: 0.5
|
|
910
|
+
})
|
|
911
|
+
.onGet(async () => {
|
|
912
|
+
const state = this.accessory.zones[i].flowTemperature;
|
|
913
|
+
return state;
|
|
914
|
+
})
|
|
915
|
+
accessory.addService(this.flowTemperatureZone1SensorService);
|
|
916
|
+
};
|
|
951
917
|
|
|
952
|
-
|
|
953
|
-
|
|
954
|
-
|
|
955
|
-
|
|
956
|
-
|
|
957
|
-
|
|
958
|
-
|
|
959
|
-
|
|
960
|
-
|
|
961
|
-
|
|
962
|
-
|
|
963
|
-
|
|
964
|
-
|
|
965
|
-
|
|
966
|
-
|
|
967
|
-
|
|
968
|
-
|
|
918
|
+
if (temperatureSensorReturnZone1 && this.accessory.zones[i].returnTemperature !== null) {
|
|
919
|
+
const debug3 = this.enableDebugMode ? this.emit('debug', `Prepare return temperature zone 1 sensor service`) : false;
|
|
920
|
+
this.returnTemperatureZone1SensorService = new Service.TemperatureSensor(`${serviceName} Return`, `${zoneName} Temperature Sensor Return ${deviceId} ${i}`);
|
|
921
|
+
this.returnTemperatureZone1SensorService.addOptionalCharacteristic(Characteristic.ConfiguredName);
|
|
922
|
+
this.returnTemperatureZone1SensorService.setCharacteristic(Characteristic.ConfiguredName, `${accessoryName} ${zoneName} Return`);
|
|
923
|
+
this.returnTemperatureZone1SensorService.getCharacteristic(Characteristic.CurrentTemperature)
|
|
924
|
+
.setProps({
|
|
925
|
+
minValue: -35,
|
|
926
|
+
maxValue: 150,
|
|
927
|
+
minStep: 0.5
|
|
928
|
+
})
|
|
929
|
+
.onGet(async () => {
|
|
930
|
+
const state = this.accessory.zones[i].returnTemperature;
|
|
931
|
+
return state;
|
|
932
|
+
})
|
|
933
|
+
accessory.addService(this.returnTemperatureZone1SensorService);
|
|
934
|
+
};
|
|
935
|
+
break;
|
|
936
|
+
case caseHotWater: //Hot Water
|
|
937
|
+
if (temperatureSensor && this.accessory.zones[i].roomTemperature !== null) {
|
|
938
|
+
const debug = this.enableDebugMode ? this.emit('debug', `${zoneName}, Prepare temperature sensor service`) : false;
|
|
939
|
+
this.roomTemperatureWaterTankSensorService = new Service.TemperatureSensor(`${serviceName}`, `${zoneName} Temperature Sensor ${deviceId} ${i}`);
|
|
940
|
+
this.roomTemperatureWaterTankSensorService.addOptionalCharacteristic(Characteristic.ConfiguredName);
|
|
941
|
+
this.roomTemperatureWaterTankSensorService.setCharacteristic(Characteristic.ConfiguredName, `${accessoryName} ${zoneName}`);
|
|
942
|
+
this.roomTemperatureWaterTankSensorService.getCharacteristic(Characteristic.CurrentTemperature)
|
|
943
|
+
.setProps({
|
|
944
|
+
minValue: -35,
|
|
945
|
+
maxValue: 150,
|
|
946
|
+
minStep: 0.5
|
|
947
|
+
})
|
|
948
|
+
.onGet(async () => {
|
|
949
|
+
const state = this.accessory.zones[i].roomTemperature;
|
|
950
|
+
return state;
|
|
951
|
+
})
|
|
952
|
+
accessory.addService(this.roomTemperatureWaterTankSensorService);
|
|
953
|
+
};
|
|
969
954
|
|
|
970
|
-
|
|
971
|
-
|
|
972
|
-
|
|
973
|
-
|
|
974
|
-
|
|
975
|
-
|
|
976
|
-
|
|
977
|
-
|
|
978
|
-
|
|
979
|
-
|
|
980
|
-
|
|
981
|
-
|
|
982
|
-
|
|
983
|
-
|
|
984
|
-
|
|
985
|
-
|
|
986
|
-
|
|
987
|
-
break;
|
|
988
|
-
case caseZone2: //Zone 2
|
|
989
|
-
if (temperatureSensor && this.accessory.zones[i].roomTemperature !== null) {
|
|
990
|
-
const debug = this.enableDebugMode ? this.emit('debug', `${zoneName}, Prepare temperature sensor service`) : false;
|
|
991
|
-
this.roomTemperatureZone2SensorService = new Service.TemperatureSensor(`${serviceName}`, `${zoneName} Temperature Sensor ${deviceId} ${i}`);
|
|
992
|
-
this.roomTemperatureZone2SensorService.addOptionalCharacteristic(Characteristic.ConfiguredName);
|
|
993
|
-
this.roomTemperatureZone2SensorService.setCharacteristic(Characteristic.ConfiguredName, `${accessoryName} ${zoneName}`);
|
|
994
|
-
this.roomTemperatureZone2SensorService.getCharacteristic(Characteristic.CurrentTemperature)
|
|
995
|
-
.setProps({
|
|
996
|
-
minValue: -35,
|
|
997
|
-
maxValue: 150,
|
|
998
|
-
minStep: 0.5
|
|
999
|
-
})
|
|
1000
|
-
.onGet(async () => {
|
|
1001
|
-
const state = this.accessory.zones[i].roomTemperature;
|
|
1002
|
-
return state;
|
|
1003
|
-
})
|
|
1004
|
-
accessory.addService(this.roomTemperatureZone2SensorService);
|
|
1005
|
-
};
|
|
955
|
+
if (temperatureSensorFlowWaterTank && this.accessory.zones[i].flowTemperature !== null) {
|
|
956
|
+
const debug = this.enableDebugMode ? this.emit('debug', `Prepare flow temperature water tank sensor service`) : false;
|
|
957
|
+
this.flowTemperatureWaterTankSensorService = new Service.TemperatureSensor(`${serviceName} Flow`, `${zoneName} Temperature Sensor Flow ${deviceId} ${i}`);
|
|
958
|
+
this.flowTemperatureWaterTankSensorService.addOptionalCharacteristic(Characteristic.ConfiguredName);
|
|
959
|
+
this.flowTemperatureWaterTankSensorService.setCharacteristic(Characteristic.ConfiguredName, `${accessoryName} ${zoneName} Flow`);
|
|
960
|
+
this.flowTemperatureWaterTankSensorService.getCharacteristic(Characteristic.CurrentTemperature)
|
|
961
|
+
.setProps({
|
|
962
|
+
minValue: -35,
|
|
963
|
+
maxValue: 150,
|
|
964
|
+
minStep: 0.5
|
|
965
|
+
})
|
|
966
|
+
.onGet(async () => {
|
|
967
|
+
const state = this.accessory.zones[i].flowTemperature;
|
|
968
|
+
return state;
|
|
969
|
+
})
|
|
970
|
+
accessory.addService(this.flowTemperatureWaterTankSensorService);
|
|
971
|
+
};
|
|
1006
972
|
|
|
1007
|
-
|
|
1008
|
-
|
|
1009
|
-
|
|
1010
|
-
|
|
1011
|
-
|
|
1012
|
-
|
|
1013
|
-
|
|
1014
|
-
|
|
1015
|
-
|
|
1016
|
-
|
|
1017
|
-
|
|
1018
|
-
|
|
1019
|
-
|
|
1020
|
-
|
|
1021
|
-
|
|
1022
|
-
|
|
1023
|
-
|
|
973
|
+
if (temperatureSensorReturnWaterTank && this.accessory.zones[i].returnTemperature !== null) {
|
|
974
|
+
const debug1 = this.enableDebugMode ? this.emit('debug', `Prepare return temperature water tank sensor service`) : false;
|
|
975
|
+
this.returnTemperatureWaterTankSensorService = new Service.TemperatureSensor(`${serviceName} Return`, `${zoneName} Temperature Sensor Return ${deviceId} ${i}`);
|
|
976
|
+
this.returnTemperatureWaterTankSensorService.addOptionalCharacteristic(Characteristic.ConfiguredName);
|
|
977
|
+
this.returnTemperatureWaterTankSensorService.setCharacteristic(Characteristic.ConfiguredName, `${accessoryName} ${zoneName} Return`);
|
|
978
|
+
this.returnTemperatureWaterTankSensorService.getCharacteristic(Characteristic.CurrentTemperature)
|
|
979
|
+
.setProps({
|
|
980
|
+
minValue: -35,
|
|
981
|
+
maxValue: 150,
|
|
982
|
+
minStep: 0.5
|
|
983
|
+
})
|
|
984
|
+
.onGet(async () => {
|
|
985
|
+
const state = this.accessory.zones[i].returnTemperature;
|
|
986
|
+
return state;
|
|
987
|
+
})
|
|
988
|
+
accessory.addService(this.returnTemperatureWaterTankSensorService);
|
|
989
|
+
};
|
|
990
|
+
break;
|
|
991
|
+
case caseZone2: //Zone 2
|
|
992
|
+
if (temperatureSensor && this.accessory.zones[i].roomTemperature !== null) {
|
|
993
|
+
const debug = this.enableDebugMode ? this.emit('debug', `${zoneName}, Prepare temperature sensor service`) : false;
|
|
994
|
+
this.roomTemperatureZone2SensorService = new Service.TemperatureSensor(`${serviceName}`, `${zoneName} Temperature Sensor ${deviceId} ${i}`);
|
|
995
|
+
this.roomTemperatureZone2SensorService.addOptionalCharacteristic(Characteristic.ConfiguredName);
|
|
996
|
+
this.roomTemperatureZone2SensorService.setCharacteristic(Characteristic.ConfiguredName, `${accessoryName} ${zoneName}`);
|
|
997
|
+
this.roomTemperatureZone2SensorService.getCharacteristic(Characteristic.CurrentTemperature)
|
|
998
|
+
.setProps({
|
|
999
|
+
minValue: -35,
|
|
1000
|
+
maxValue: 150,
|
|
1001
|
+
minStep: 0.5
|
|
1002
|
+
})
|
|
1003
|
+
.onGet(async () => {
|
|
1004
|
+
const state = this.accessory.zones[i].roomTemperature;
|
|
1005
|
+
return state;
|
|
1006
|
+
})
|
|
1007
|
+
accessory.addService(this.roomTemperatureZone2SensorService);
|
|
1008
|
+
};
|
|
1024
1009
|
|
|
1025
|
-
|
|
1026
|
-
|
|
1027
|
-
|
|
1028
|
-
|
|
1029
|
-
|
|
1030
|
-
|
|
1031
|
-
|
|
1032
|
-
|
|
1033
|
-
|
|
1034
|
-
|
|
1035
|
-
|
|
1036
|
-
|
|
1037
|
-
|
|
1038
|
-
|
|
1039
|
-
|
|
1040
|
-
|
|
1041
|
-
|
|
1042
|
-
|
|
1010
|
+
if (temperatureSensorFlowZone2 && this.accessory.zones[i].flowTemperature !== null) {
|
|
1011
|
+
const debug = this.enableDebugMode ? this.emit('debug', `Prepare flow temperature zone 2 sensor service`) : false;
|
|
1012
|
+
this.flowTemperatureZone2SensorService = new Service.TemperatureSensor(`${serviceName} Flow`, `${zoneName} Temperature Sensor Flow${deviceId} ${i}`);
|
|
1013
|
+
this.flowTemperatureZone2SensorService.addOptionalCharacteristic(Characteristic.ConfiguredName);
|
|
1014
|
+
this.flowTemperatureZone2SensorService.setCharacteristic(Characteristic.ConfiguredName, `${accessoryName} ${zoneName} Flow`);
|
|
1015
|
+
this.flowTemperatureZone2SensorService.getCharacteristic(Characteristic.CurrentTemperature)
|
|
1016
|
+
.setProps({
|
|
1017
|
+
minValue: -35,
|
|
1018
|
+
maxValue: 150,
|
|
1019
|
+
minStep: 0.5
|
|
1020
|
+
})
|
|
1021
|
+
.onGet(async () => {
|
|
1022
|
+
const state = this.accessory.zones[i].flowTemperature;
|
|
1023
|
+
return state;
|
|
1024
|
+
})
|
|
1025
|
+
accessory.addService(this.flowTemperatureZone2SensorService);
|
|
1026
|
+
};
|
|
1027
|
+
|
|
1028
|
+
if (temperatureSensorReturnZone2 && this.accessory.zones[i].returnTemperature !== null) {
|
|
1029
|
+
const debug1 = this.enableDebugMode ? this.emit('debug', `Prepare return temperature zone 2 sensor service`) : false;
|
|
1030
|
+
this.returnTemperatureZone2SensorService = new Service.TemperatureSensor(`${serviceName} Return`, `${zoneName} Temperature Sensor Return${deviceId} ${i}`);
|
|
1031
|
+
this.returnTemperatureZone2SensorService.addOptionalCharacteristic(Characteristic.ConfiguredName);
|
|
1032
|
+
this.returnTemperatureZone2SensorService.setCharacteristic(Characteristic.ConfiguredName, `${accessoryName} ${zoneName} Return`);
|
|
1033
|
+
this.returnTemperatureZone2SensorService.getCharacteristic(Characteristic.CurrentTemperature)
|
|
1034
|
+
.setProps({
|
|
1035
|
+
minValue: -35,
|
|
1036
|
+
maxValue: 150,
|
|
1037
|
+
minStep: 0.5
|
|
1038
|
+
})
|
|
1039
|
+
.onGet(async () => {
|
|
1040
|
+
const state = this.accessory.zones[i].returnTemperature;
|
|
1041
|
+
return state;
|
|
1042
|
+
})
|
|
1043
|
+
accessory.addService(this.returnTemperatureZone2SensorService);
|
|
1044
|
+
};
|
|
1045
|
+
break;
|
|
1046
|
+
};
|
|
1043
1047
|
};
|
|
1044
1048
|
};
|
|
1045
1049
|
|
|
@@ -1331,34 +1335,32 @@ class DeviceAtw extends EventEmitter {
|
|
|
1331
1335
|
this.firmwareRevision = firmwareAppVersion;
|
|
1332
1336
|
this.displayDeviceInfo = false;
|
|
1333
1337
|
})
|
|
1334
|
-
.on('deviceState', (deviceData) => {
|
|
1338
|
+
.on('deviceState', async (deviceData) => {
|
|
1335
1339
|
this.deviceData = deviceData;
|
|
1336
1340
|
|
|
1337
1341
|
//presets
|
|
1338
1342
|
const presetsOnServer = deviceData.Presets ?? [];
|
|
1339
1343
|
|
|
1340
1344
|
//device info
|
|
1341
|
-
const
|
|
1342
|
-
const
|
|
1343
|
-
const
|
|
1345
|
+
const hasHeatPump = ![1, 2, 3, 4, 5, 6, 13].includes(this.hideZone);
|
|
1346
|
+
const hasZone1 = ![2, 3, 4, 7, 8, 9, 13].includes(this.hideZone);
|
|
1347
|
+
const hasHotWaterTank = ![3, 5, 6, 8, 9, 10, 11, 13].includes(this.hideZone) && deviceData.Device.HasHotWaterTank;
|
|
1348
|
+
const hasZone2 = ![4, 6, 9, 11, 13].includes(this.hideZone) && deviceData.Device.HasZone2;
|
|
1344
1349
|
const canHeat = deviceData.Device.CanHeat ?? false;
|
|
1345
1350
|
const canCool = deviceData.Device.CanCool ?? false;
|
|
1346
1351
|
const heatCoolModes = canHeat && canCool ? 0 : canHeat ? 1 : canCool ? 2 : 3;
|
|
1347
1352
|
const temperatureIncrement = deviceData.Device.TemperatureIncrement ?? 1;
|
|
1348
1353
|
const minSetTemperature = deviceData.Device.MinSetTemperature ?? 10;
|
|
1349
1354
|
const maxSetTemperature = deviceData.Device.MaxSetTemperature ?? 30;
|
|
1350
|
-
const maxTankTemperature = deviceData.Device.MaxTankTemperature ?? 70
|
|
1355
|
+
const maxTankTemperature = deviceData.Device.MaxTankTemperature ?? 70;
|
|
1351
1356
|
|
|
1352
1357
|
//zones
|
|
1353
|
-
|
|
1354
|
-
const
|
|
1355
|
-
const
|
|
1356
|
-
const
|
|
1357
|
-
|
|
1358
|
-
|
|
1359
|
-
const caseZone1 = hasZone1 ? 1 : -1;
|
|
1360
|
-
const caseHotWater = hasHotWaterTank ? 2 : -1;
|
|
1361
|
-
const caseZone2 = hasZone2 ? hasHotWaterTank ? 3 : 2 : -1;
|
|
1358
|
+
let currentCase = 0;
|
|
1359
|
+
const caseHeatPump = hasHeatPump ? currentCase++ : -1;
|
|
1360
|
+
const caseZone1 = hasZone1 ? currentCase++ : -1;
|
|
1361
|
+
const caseHotWater = hasHotWaterTank ? currentCase++ : -1;
|
|
1362
|
+
const caseZone2 = hasZone2 ? currentCase++ : -1;
|
|
1363
|
+
const zonesCount = currentCase;
|
|
1362
1364
|
|
|
1363
1365
|
//heat pump
|
|
1364
1366
|
const heatPumpName = 'Heat Pump';
|
|
@@ -1415,6 +1417,7 @@ class DeviceAtw extends EventEmitter {
|
|
|
1415
1417
|
this.accessory.hasZone2 = hasZone2;
|
|
1416
1418
|
this.accessory.zonesCount = zonesCount;
|
|
1417
1419
|
this.accessory.heatCoolModes = heatCoolModes;
|
|
1420
|
+
this.accessory.caseHeatPump = caseHeatPump;
|
|
1418
1421
|
this.accessory.caseZone1 = caseZone1;
|
|
1419
1422
|
this.accessory.caseHotWater = caseHotWater;
|
|
1420
1423
|
this.accessory.caseZone2 = caseZone2;
|
|
@@ -1439,7 +1442,7 @@ class DeviceAtw extends EventEmitter {
|
|
|
1439
1442
|
switch (this.displayMode) {
|
|
1440
1443
|
case 1: //Heater Cooler
|
|
1441
1444
|
switch (i) {
|
|
1442
|
-
case
|
|
1445
|
+
case caseHeatPump: //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
|
|
1443
1446
|
name = heatPumpName;
|
|
1444
1447
|
operationModeZone = operationMode;
|
|
1445
1448
|
currentOperationMode = !power ? 0 : [1, 2, 2, 3, 2, 1, 1, 2, 1, 1, 1, 2][operationMode]; //INACTIVE, IDLE, HEATING, COOLING
|
|
@@ -1543,9 +1546,6 @@ class DeviceAtw extends EventEmitter {
|
|
|
1543
1546
|
operationModeSetPropsMaxValue = [2, 2, 2, 0][heatCoolModes];
|
|
1544
1547
|
operationModeSetPropsValidValues = [[0, 1, 2], [0, 1, 2], [1, 2], [0]][heatCoolModes];
|
|
1545
1548
|
break;
|
|
1546
|
-
default: //unknown zone detected
|
|
1547
|
-
this.emit('message', `Unknown zone: ${i} detected`);
|
|
1548
|
-
break;
|
|
1549
1549
|
};
|
|
1550
1550
|
|
|
1551
1551
|
//update characteristics
|
|
@@ -1563,7 +1563,7 @@ class DeviceAtw extends EventEmitter {
|
|
|
1563
1563
|
break;
|
|
1564
1564
|
case 2: //Thermostat
|
|
1565
1565
|
switch (i) {
|
|
1566
|
-
case
|
|
1566
|
+
case caseHeatPump: //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
|
|
1567
1567
|
name = heatPumpName;
|
|
1568
1568
|
operationModeZone = operationMode;
|
|
1569
1569
|
currentOperationMode = !power ? 0 : [0, 1, 1, 2, 1, 0, 0, 1, 0, 0, 0, 1][operationMode]; //OFF, HEAT, COOL
|
|
@@ -1653,9 +1653,6 @@ class DeviceAtw extends EventEmitter {
|
|
|
1653
1653
|
operationModeSetPropsMaxValue = [3, 3, 2, 0][heatCoolModes];
|
|
1654
1654
|
operationModeSetPropsValidValues = [[1, 2, 3], [1, 2, 3], [1, 2], [0]][heatCoolModes];
|
|
1655
1655
|
break;
|
|
1656
|
-
default: //unknown zone detected
|
|
1657
|
-
this.emit('message', `Unknown zone: ${i} detected`);
|
|
1658
|
-
break;
|
|
1659
1656
|
};
|
|
1660
1657
|
|
|
1661
1658
|
//update characteristics
|
|
@@ -1670,7 +1667,7 @@ class DeviceAtw extends EventEmitter {
|
|
|
1670
1667
|
break;
|
|
1671
1668
|
};
|
|
1672
1669
|
|
|
1673
|
-
//
|
|
1670
|
+
//add value to arrays
|
|
1674
1671
|
this.accessory.zones[i].name = name;
|
|
1675
1672
|
this.accessory.zones[i].operationMode = operationModeZone;
|
|
1676
1673
|
this.accessory.zones[i].currentOperationMode = currentOperationMode;
|
|
@@ -1692,7 +1689,7 @@ class DeviceAtw extends EventEmitter {
|
|
|
1692
1689
|
|
|
1693
1690
|
//update temperature sensors
|
|
1694
1691
|
switch (i) {
|
|
1695
|
-
case
|
|
1692
|
+
case caseHeatPump: //Heat Pump
|
|
1696
1693
|
if (this.roomTemperatureSensorService) {
|
|
1697
1694
|
this.roomTemperatureSensorService
|
|
1698
1695
|
.updateCharacteristic(Characteristic.CurrentTemperature, roomTemperature)
|
|
@@ -1708,7 +1705,7 @@ class DeviceAtw extends EventEmitter {
|
|
|
1708
1705
|
.updateCharacteristic(Characteristic.CurrentTemperature, returnTemperature)
|
|
1709
1706
|
};
|
|
1710
1707
|
break;
|
|
1711
|
-
case
|
|
1708
|
+
case caseZone1: //Zone 1
|
|
1712
1709
|
if (this.roomTemperatureZone1SensorService) {
|
|
1713
1710
|
this.roomTemperatureZone1SensorService
|
|
1714
1711
|
.updateCharacteristic(Characteristic.CurrentTemperature, roomTemperature)
|
|
@@ -1762,7 +1759,7 @@ class DeviceAtw extends EventEmitter {
|
|
|
1762
1759
|
if (!this.disableLogInfo) {
|
|
1763
1760
|
let operationModeText = '';
|
|
1764
1761
|
switch (i) {
|
|
1765
|
-
case
|
|
1762
|
+
case caseHeatPump: //Heat Pump - HEAT, COOL, OFF
|
|
1766
1763
|
this.emit('message', `${heatPumpName}, Power: ${power ? 'ON' : 'OFF'}`)
|
|
1767
1764
|
this.emit('message', `${heatPumpName}, Operation mode: ${HeatPump.System[unitStatus]}`);
|
|
1768
1765
|
this.emit('message', `${heatPumpName},'Outdoor temperature: ${roomTemperature}${this.accessory.temperatureUnit}`);
|
|
@@ -1771,7 +1768,7 @@ class DeviceAtw extends EventEmitter {
|
|
|
1771
1768
|
this.emit('message', `${heatPumpName}, Temperature display unit: ${this.accessory.temperatureUnit}`);
|
|
1772
1769
|
this.emit('message', `${heatPumpName}, Lock physical controls: ${lockPhysicalControl ? 'LOCKED' : 'UNLOCKED'}`);
|
|
1773
1770
|
break;
|
|
1774
|
-
case
|
|
1771
|
+
case caseZone1: //Zone 1 - HEAT THERMOSTAT, HEAT FLOW, HEAT CURVE, COOL THERMOSTAT, COOL FLOW, FLOOR DRY UP
|
|
1775
1772
|
operationModeText = idleZone1 ? HeatPump.ZoneOperation[6] : HeatPump.ZoneOperation[operationModeZone1];
|
|
1776
1773
|
this.emit('message', `${zone1Name}, Operation mode: ${operationModeText}`);
|
|
1777
1774
|
this.emit('message', `${zone1Name}, Temperature: ${roomTemperature}${this.accessory.temperatureUnit}`);
|
|
@@ -1920,6 +1917,13 @@ class DeviceAtw extends EventEmitter {
|
|
|
1920
1917
|
};
|
|
1921
1918
|
};
|
|
1922
1919
|
};
|
|
1920
|
+
|
|
1921
|
+
//prepare accessory
|
|
1922
|
+
if (this.startPrepareAccessory) {
|
|
1923
|
+
const accessory = await this.prepareAccessory(this.accountInfo, deviceData, this.deviceId, this.deviceTypeText, this.deviceName, this.accountName);
|
|
1924
|
+
this.emit('publishAccessory', accessory);
|
|
1925
|
+
this.startPrepareAccessory = false;
|
|
1926
|
+
}
|
|
1923
1927
|
})
|
|
1924
1928
|
.on('success', (success) => {
|
|
1925
1929
|
this.emit('success', success);
|
|
@@ -1947,18 +1951,7 @@ class DeviceAtw extends EventEmitter {
|
|
|
1947
1951
|
const startExternalIntegrations = this.restFul.enable || this.mqtt.enable ? await this.externalIntegrations() : false;
|
|
1948
1952
|
|
|
1949
1953
|
//check state
|
|
1950
|
-
|
|
1951
|
-
|
|
1952
|
-
if (deviceData === false) {
|
|
1953
|
-
return null;
|
|
1954
|
-
}
|
|
1955
|
-
|
|
1956
|
-
//prepare accessory
|
|
1957
|
-
if (this.startPrepareAccessory) {
|
|
1958
|
-
const accessory = await this.prepareAccessory(this.accountInfo, deviceData, this.deviceId, this.deviceTypeText, this.deviceName, this.accountName);
|
|
1959
|
-
this.emit('publishAccessory', accessory);
|
|
1960
|
-
this.startPrepareAccessory = false;
|
|
1961
|
-
}
|
|
1954
|
+
await this.melCloudAtw.checkState();
|
|
1962
1955
|
|
|
1963
1956
|
return true;
|
|
1964
1957
|
} catch (error) {
|