homebridge-melcloud-control 4.2.5-beta.2 → 4.2.5-beta.4
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 +36 -18
- package/package.json +1 -1
- package/src/deviceata.js +250 -225
- package/src/deviceatw.js +181 -160
- package/src/deviceerv.js +124 -100
package/src/deviceatw.js
CHANGED
|
@@ -89,8 +89,8 @@ class DeviceAtw extends EventEmitter {
|
|
|
89
89
|
//buttons configured
|
|
90
90
|
for (const button of this.buttons) {
|
|
91
91
|
button.name = button.name || 'Button'
|
|
92
|
-
button.serviceType = [
|
|
93
|
-
button.characteristicType = [
|
|
92
|
+
button.serviceType = serviceType[button.displayType];
|
|
93
|
+
button.characteristicType = characteristicType[button.displayType];
|
|
94
94
|
button.state = false;
|
|
95
95
|
button.previousValue = null;
|
|
96
96
|
}
|
|
@@ -1371,15 +1371,13 @@ class DeviceAtw extends EventEmitter {
|
|
|
1371
1371
|
|
|
1372
1372
|
//buttons services
|
|
1373
1373
|
if (this.buttons.length > 0) {
|
|
1374
|
-
if (this.logDebug) this.emit('debug', `Prepare buttons services`);
|
|
1375
|
-
this.
|
|
1374
|
+
if (this.logDebug) this.emit('debug', `Prepare buttons / sensors services`);
|
|
1375
|
+
this.buttonControlServices = [];
|
|
1376
|
+
this.buttonControlSensorServices = [];
|
|
1376
1377
|
this.buttons.lengthforEach((button, i) => {
|
|
1377
1378
|
//get button mode
|
|
1378
1379
|
const mode = button.mode;
|
|
1379
1380
|
|
|
1380
|
-
//get button display type
|
|
1381
|
-
const displayType = button.displayType;
|
|
1382
|
-
|
|
1383
1381
|
//get button name
|
|
1384
1382
|
const name = button.name;
|
|
1385
1383
|
|
|
@@ -1389,160 +1387,178 @@ class DeviceAtw extends EventEmitter {
|
|
|
1389
1387
|
const serviceName1 = namePrefix ? `${accessoryName} ${name}` : name;
|
|
1390
1388
|
const serviceType = button.serviceType;
|
|
1391
1389
|
const characteristicType = button.characteristicType;
|
|
1392
|
-
|
|
1393
|
-
|
|
1394
|
-
|
|
1395
|
-
|
|
1390
|
+
|
|
1391
|
+
//control
|
|
1392
|
+
if (button.displayType > 3) {
|
|
1393
|
+
if (this.logDebug) this.emit('debug', `Prepare button control ${name} service`);
|
|
1394
|
+
const buttonControlService = new serviceType(serviceName1, `buttonControlService${deviceId} ${i}`);
|
|
1395
|
+
buttonControlService.addOptionalCharacteristic(Characteristic.ConfiguredName);
|
|
1396
|
+
buttonControlService.setCharacteristic(Characteristic.ConfiguredName, serviceName1);
|
|
1397
|
+
buttonControlService.getCharacteristic(Characteristic.On)
|
|
1398
|
+
.onGet(async () => {
|
|
1399
|
+
const state = button.state;
|
|
1400
|
+
return state;
|
|
1401
|
+
})
|
|
1402
|
+
.onSet(async (state) => {
|
|
1403
|
+
if (displayType > 0 && displayType < 3) {
|
|
1404
|
+
try {
|
|
1405
|
+
let flag = null;
|
|
1406
|
+
switch (mode) {
|
|
1407
|
+
case 0: //POWER ON,OFF
|
|
1408
|
+
deviceData.Device.Power = state;
|
|
1409
|
+
flag = HeatPump.EffectiveFlags.Power;
|
|
1410
|
+
break;
|
|
1411
|
+
case 1: //HEAT PUMP HEAT
|
|
1412
|
+
button.previousValue = state ? deviceData.Device.UnitStatus : button.previousValue ?? deviceData.Device.UnitStatus;
|
|
1413
|
+
deviceData.Device.Power = true;
|
|
1414
|
+
deviceData.Device.UnitStatus = state ? 0 : button.previousValue;
|
|
1415
|
+
flag = HeatPump.EffectiveFlags.Power + HeatPump.EffectiveFlags.OperationMode;
|
|
1416
|
+
break;
|
|
1417
|
+
case 2: //COOL
|
|
1418
|
+
button.previousValue = state ? deviceData.Device.UnitStatus : button.previousValue ?? deviceData.Device.UnitStatus;
|
|
1419
|
+
deviceData.Device.Power = true;
|
|
1420
|
+
deviceData.Device.UnitStatus = state ? 1 : button.previousValue;
|
|
1421
|
+
flag = HeatPump.EffectiveFlags.Power + HeatPump.EffectiveFlags.OperationMode;
|
|
1422
|
+
break;
|
|
1423
|
+
case 3: //HOLIDAY
|
|
1424
|
+
if (this.accountType === 'melcloud') {
|
|
1425
|
+
deviceData.Device.HolidayMode = state;
|
|
1426
|
+
flag = HeatPump.EffectiveFlags.HolidayMode;
|
|
1427
|
+
}
|
|
1428
|
+
|
|
1429
|
+
if (this.accountType === 'melcloudhome') {
|
|
1430
|
+
deviceData.Device.HolidayMode.Enabled = state;
|
|
1431
|
+
flag = 'holidaymode';
|
|
1432
|
+
}
|
|
1433
|
+
break;
|
|
1434
|
+
case 10: //ALL ZONES PHYSICAL LOCK CONTROL
|
|
1435
|
+
deviceData.Device.ProhibitZone1 = state;
|
|
1436
|
+
deviceData.Device.ProhibitHotWater = state;
|
|
1437
|
+
deviceData.Device.ProhibitZone2 = state;
|
|
1438
|
+
flag = HeatPump.EffectiveFlags.ProhibitHeatingZone1 + HeatPump.EffectiveFlags.ProhibitHotWater + HeatPump.EffectiveFlags.ProhibitHeatingZone2;
|
|
1439
|
+
break;
|
|
1440
|
+
case 20: //ZONE 1 HEAT THERMOSTAT
|
|
1441
|
+
button.previousValue = state ? deviceData.Device.OperationModeZone1 : button.previousValue ?? deviceData.Device.OperationModeZone1;
|
|
1442
|
+
deviceData.Device.Power = true;
|
|
1443
|
+
deviceData.Device.OperationModeZone1 = state ? 0 : button.previousValue;
|
|
1444
|
+
flag = HeatPump.EffectiveFlags.Power + HeatPump.EffectiveFlags.OperationModeZone1;
|
|
1445
|
+
break;
|
|
1446
|
+
case 21: //HEAT FLOW
|
|
1447
|
+
button.previousValue = state ? deviceData.Device.OperationModeZone1 : button.previousValue ?? deviceData.Device.OperationModeZone1;
|
|
1448
|
+
deviceData.Device.Power = true;
|
|
1449
|
+
deviceData.Device.OperationModeZone1 = state ? 1 : button.previousValue;
|
|
1450
|
+
flag = HeatPump.EffectiveFlags.Power + HeatPump.EffectiveFlags.OperationModeZone1;
|
|
1451
|
+
break;
|
|
1452
|
+
case 22: //HEAT CURVE
|
|
1453
|
+
button.previousValue = state ? deviceData.Device.OperationModeZone1 : button.previousValue ?? deviceData.Device.OperationModeZone1;
|
|
1454
|
+
deviceData.Device.Power = true;
|
|
1455
|
+
deviceData.Device.OperationModeZone1 = state ? 2 : button.previousValue;
|
|
1456
|
+
flag = HeatPump.EffectiveFlags.Power + HeatPump.EffectiveFlags.OperationModeZone1;
|
|
1457
|
+
break;
|
|
1458
|
+
case 23: //COOL THERMOSTAT
|
|
1459
|
+
button.previousValue = state ? deviceData.Device.OperationModeZone1 : button.previousValue ?? deviceData.Device.OperationModeZone1;
|
|
1460
|
+
deviceData.Device.Power = true;
|
|
1461
|
+
deviceData.Device.OperationModeZone1 = state ? 3 : button.previousValue;
|
|
1462
|
+
flag = HeatPump.EffectiveFlags.Power + HeatPump.EffectiveFlags.OperationModeZone1;
|
|
1463
|
+
break;
|
|
1464
|
+
case 24: //COOL FLOW
|
|
1465
|
+
button.previousValue = state ? deviceData.Device.OperationModeZone1 : button.previousValue ?? deviceData.Device.OperationModeZone1;
|
|
1466
|
+
deviceData.Device.Power = true;
|
|
1467
|
+
deviceData.Device.OperationModeZone1 = state ? 4 : button.previousValue;
|
|
1468
|
+
flag = HeatPump.EffectiveFlags.Power + HeatPump.EffectiveFlags.OperationModeZone1;
|
|
1469
|
+
break;
|
|
1470
|
+
case 25: //FLOOR DRY UP
|
|
1471
|
+
button.previousValue = state ? deviceData.Device.OperationModeZone1 : button.previousValue ?? deviceData.Device.OperationModeZone1;
|
|
1472
|
+
deviceData.Device.Power = true;
|
|
1473
|
+
deviceData.Device.OperationModeZone1 = state ? 5 : button.previousValue;
|
|
1474
|
+
flag = HeatPump.EffectiveFlags.Power + HeatPump.EffectiveFlags.OperationModeZone1;
|
|
1475
|
+
break;
|
|
1476
|
+
case 30: //PHYSICAL LOCK CONTROL
|
|
1477
|
+
deviceData.Device.ProhibitZone1 = state;
|
|
1478
|
+
flag = HeatPump.EffectiveFlags.ProhibitHeatingZone1;
|
|
1479
|
+
break;
|
|
1480
|
+
case 40: //HOT WATER NORMAL/FORCE HOT WATER
|
|
1481
|
+
deviceData.Device.Power = true;
|
|
1482
|
+
deviceData.Device.ForcedHotWaterMode = state;
|
|
1483
|
+
flag = HeatPump.EffectiveFlags.Power + HeatPump.EffectiveFlags.ForcedHotWaterMode;
|
|
1484
|
+
break;
|
|
1485
|
+
case 41: //NORMAL/ECO
|
|
1486
|
+
deviceData.Device.Power = true;
|
|
1487
|
+
deviceData.Device.EcoHotWater = state;
|
|
1488
|
+
flag = HeatPump.EffectiveFlags.Power + HeatPump.EffectiveFlags.EcoHotWater;
|
|
1489
|
+
break;
|
|
1490
|
+
case 50: //PHYSICAL LOCK CONTROL
|
|
1491
|
+
deviceData.Device.ProhibitHotWater = state;
|
|
1492
|
+
flag = HeatPump.EffectiveFlags.ProhibitHotWater;
|
|
1493
|
+
break;
|
|
1494
|
+
case 60: //ZONE 2 HEAT THERMOSTAT
|
|
1495
|
+
button.previousValue = state ? deviceData.Device.OperationModeZone2 : button.previousValue ?? deviceData.Device.OperationModeZone2;
|
|
1496
|
+
deviceData.Device.Power = true;
|
|
1497
|
+
deviceData.Device.OperationModeZone2 = state ? 0 : button.previousValue;
|
|
1498
|
+
flag = HeatPump.EffectiveFlags.Power + HeatPump.EffectiveFlags.OperationModeZone2;
|
|
1499
|
+
break;
|
|
1500
|
+
case 61: // HEAT FLOW
|
|
1501
|
+
button.previousValue = state ? deviceData.Device.OperationModeZone2 : button.previousValue ?? deviceData.Device.OperationModeZone2;
|
|
1502
|
+
deviceData.Device.Power = true;
|
|
1503
|
+
deviceData.Device.OperationModeZone2 = state ? 1 : button.previousValue;
|
|
1504
|
+
flag = HeatPump.EffectiveFlags.Power + HeatPump.EffectiveFlags.OperationModeZone2;
|
|
1505
|
+
break;
|
|
1506
|
+
case 62: //HEAT CURVE
|
|
1507
|
+
button.previousValue = state ? deviceData.Device.OperationModeZone2 : button.previousValue ?? deviceData.Device.OperationModeZone2;
|
|
1508
|
+
deviceData.Device.Power = true;
|
|
1509
|
+
deviceData.Device.OperationModeZone2 = state ? 2 : button.previousValue;
|
|
1510
|
+
flag = HeatPump.EffectiveFlags.Power + HeatPump.EffectiveFlags.OperationModeZone2;
|
|
1511
|
+
break;
|
|
1512
|
+
case 63: //COOL THERMOSTAT
|
|
1513
|
+
button.previousValue = state ? deviceData.Device.OperationModeZone2 : button.previousValue ?? deviceData.Device.OperationModeZone2;
|
|
1514
|
+
deviceData.Device.Power = true;
|
|
1515
|
+
deviceData.Device.OperationModeZone2 = state ? 3 : button.previousValue;
|
|
1516
|
+
flag = HeatPump.EffectiveFlags.Power + HeatPump.EffectiveFlags.OperationModeZone2;
|
|
1517
|
+
break;
|
|
1518
|
+
case 64: //COOL FLOW
|
|
1519
|
+
button.previousValue = state ? deviceData.Device.OperationModeZone2 : button.previousValue ?? deviceData.Device.OperationModeZone2;
|
|
1520
|
+
deviceData.Device.Power = true;
|
|
1521
|
+
deviceData.Device.OperationModeZone2 = state ? 4 : button.previousValue;
|
|
1522
|
+
flag = HeatPump.EffectiveFlags.Power + HeatPump.EffectiveFlags.OperationModeZone2;
|
|
1523
|
+
break;
|
|
1524
|
+
case 65: //FLOOR DRY UP
|
|
1525
|
+
button.previousValue = state ? deviceData.Device.OperationModeZone2 : button.previousValue ?? deviceData.Device.OperationModeZone2;
|
|
1526
|
+
deviceData.Device.Power = true;
|
|
1527
|
+
deviceData.Device.OperationModeZone2 = state ? 5 : button.previousValue;
|
|
1528
|
+
flag = HeatPump.EffectiveFlags.Power + HeatPump.EffectiveFlags.OperationModeZone2;
|
|
1529
|
+
break;
|
|
1530
|
+
case 70: //PHYSICAL LOCK CONTROL
|
|
1531
|
+
deviceData.Device.ProhibitZone2 = state;
|
|
1532
|
+
HeatPump.EffectiveFlags.ProhibitHeatingZone2;
|
|
1533
|
+
break;
|
|
1534
|
+
default:
|
|
1535
|
+
if (this.logWarn) this.emit('warn', `Unknown button mode: ${mode}`);
|
|
1536
|
+
break;
|
|
1537
|
+
};
|
|
1538
|
+
|
|
1539
|
+
if (this.logInfo) this.emit('info', `${state ? `Set: ${name}` : `Unset: ${name}, Set: ${button.previousValue}`}`);
|
|
1540
|
+
await this.melCloudAtw.send(this.accountType, this.displayType, deviceData, flag);
|
|
1541
|
+
} catch (error) {
|
|
1542
|
+
if (this.logWarn) this.emit('warn', `Set button error: ${error}`);
|
|
1543
|
+
};
|
|
1544
|
+
};
|
|
1545
|
+
});
|
|
1546
|
+
this.buttonControlServices.push(buttonControlService);
|
|
1547
|
+
accessory.addService(buttonControlService)
|
|
1548
|
+
}
|
|
1549
|
+
|
|
1550
|
+
//sensor
|
|
1551
|
+
if (this.logDebug) this.emit('debug', `Prepare button control sensor ${name} service`);
|
|
1552
|
+
const buttonControlSensorService = new serviceType(serviceName1, `buttonControlSensorService${deviceId} ${i}`);
|
|
1553
|
+
buttonControlSensorService.addOptionalCharacteristic(Characteristic.ConfiguredName);
|
|
1554
|
+
buttonControlSensorService.setCharacteristic(Characteristic.ConfiguredName, serviceName1);
|
|
1555
|
+
buttonControlSensorService.getCharacteristic(characteristicType)
|
|
1396
1556
|
.onGet(async () => {
|
|
1397
1557
|
const state = button.state;
|
|
1398
1558
|
return state;
|
|
1399
1559
|
})
|
|
1400
|
-
|
|
1401
|
-
|
|
1402
|
-
try {
|
|
1403
|
-
let flag = null;
|
|
1404
|
-
switch (mode) {
|
|
1405
|
-
case 0: //POWER ON,OFF
|
|
1406
|
-
deviceData.Device.Power = state;
|
|
1407
|
-
flag = HeatPump.EffectiveFlags.Power;
|
|
1408
|
-
break;
|
|
1409
|
-
case 1: //HEAT PUMP HEAT
|
|
1410
|
-
button.previousValue = state ? deviceData.Device.UnitStatus : button.previousValue ?? deviceData.Device.UnitStatus;
|
|
1411
|
-
deviceData.Device.Power = true;
|
|
1412
|
-
deviceData.Device.UnitStatus = state ? 0 : button.previousValue;
|
|
1413
|
-
flag = HeatPump.EffectiveFlags.Power + HeatPump.EffectiveFlags.OperationMode;
|
|
1414
|
-
break;
|
|
1415
|
-
case 2: //COOL
|
|
1416
|
-
button.previousValue = state ? deviceData.Device.UnitStatus : button.previousValue ?? deviceData.Device.UnitStatus;
|
|
1417
|
-
deviceData.Device.Power = true;
|
|
1418
|
-
deviceData.Device.UnitStatus = state ? 1 : button.previousValue;
|
|
1419
|
-
flag = HeatPump.EffectiveFlags.Power + HeatPump.EffectiveFlags.OperationMode;
|
|
1420
|
-
break;
|
|
1421
|
-
case 3: //HOLIDAY
|
|
1422
|
-
if (this.accountType === 'melcloud') {
|
|
1423
|
-
deviceData.Device.HolidayMode = state;
|
|
1424
|
-
flag = HeatPump.EffectiveFlags.HolidayMode;
|
|
1425
|
-
}
|
|
1426
|
-
|
|
1427
|
-
if (this.accountType === 'melcloudhome') {
|
|
1428
|
-
deviceData.Device.HolidayMode.Enabled = state;
|
|
1429
|
-
flag = 'holidaymode';
|
|
1430
|
-
}
|
|
1431
|
-
break;
|
|
1432
|
-
case 10: //ALL ZONES PHYSICAL LOCK CONTROL
|
|
1433
|
-
deviceData.Device.ProhibitZone1 = state;
|
|
1434
|
-
deviceData.Device.ProhibitHotWater = state;
|
|
1435
|
-
deviceData.Device.ProhibitZone2 = state;
|
|
1436
|
-
flag = HeatPump.EffectiveFlags.ProhibitHeatingZone1 + HeatPump.EffectiveFlags.ProhibitHotWater + HeatPump.EffectiveFlags.ProhibitHeatingZone2;
|
|
1437
|
-
break;
|
|
1438
|
-
case 20: //ZONE 1 HEAT THERMOSTAT
|
|
1439
|
-
button.previousValue = state ? deviceData.Device.OperationModeZone1 : button.previousValue ?? deviceData.Device.OperationModeZone1;
|
|
1440
|
-
deviceData.Device.Power = true;
|
|
1441
|
-
deviceData.Device.OperationModeZone1 = state ? 0 : button.previousValue;
|
|
1442
|
-
flag = HeatPump.EffectiveFlags.Power + HeatPump.EffectiveFlags.OperationModeZone1;
|
|
1443
|
-
break;
|
|
1444
|
-
case 21: //HEAT FLOW
|
|
1445
|
-
button.previousValue = state ? deviceData.Device.OperationModeZone1 : button.previousValue ?? deviceData.Device.OperationModeZone1;
|
|
1446
|
-
deviceData.Device.Power = true;
|
|
1447
|
-
deviceData.Device.OperationModeZone1 = state ? 1 : button.previousValue;
|
|
1448
|
-
flag = HeatPump.EffectiveFlags.Power + HeatPump.EffectiveFlags.OperationModeZone1;
|
|
1449
|
-
break;
|
|
1450
|
-
case 22: //HEAT CURVE
|
|
1451
|
-
button.previousValue = state ? deviceData.Device.OperationModeZone1 : button.previousValue ?? deviceData.Device.OperationModeZone1;
|
|
1452
|
-
deviceData.Device.Power = true;
|
|
1453
|
-
deviceData.Device.OperationModeZone1 = state ? 2 : button.previousValue;
|
|
1454
|
-
flag = HeatPump.EffectiveFlags.Power + HeatPump.EffectiveFlags.OperationModeZone1;
|
|
1455
|
-
break;
|
|
1456
|
-
case 23: //COOL THERMOSTAT
|
|
1457
|
-
button.previousValue = state ? deviceData.Device.OperationModeZone1 : button.previousValue ?? deviceData.Device.OperationModeZone1;
|
|
1458
|
-
deviceData.Device.Power = true;
|
|
1459
|
-
deviceData.Device.OperationModeZone1 = state ? 3 : button.previousValue;
|
|
1460
|
-
flag = HeatPump.EffectiveFlags.Power + HeatPump.EffectiveFlags.OperationModeZone1;
|
|
1461
|
-
break;
|
|
1462
|
-
case 24: //COOL FLOW
|
|
1463
|
-
button.previousValue = state ? deviceData.Device.OperationModeZone1 : button.previousValue ?? deviceData.Device.OperationModeZone1;
|
|
1464
|
-
deviceData.Device.Power = true;
|
|
1465
|
-
deviceData.Device.OperationModeZone1 = state ? 4 : button.previousValue;
|
|
1466
|
-
flag = HeatPump.EffectiveFlags.Power + HeatPump.EffectiveFlags.OperationModeZone1;
|
|
1467
|
-
break;
|
|
1468
|
-
case 25: //FLOOR DRY UP
|
|
1469
|
-
button.previousValue = state ? deviceData.Device.OperationModeZone1 : button.previousValue ?? deviceData.Device.OperationModeZone1;
|
|
1470
|
-
deviceData.Device.Power = true;
|
|
1471
|
-
deviceData.Device.OperationModeZone1 = state ? 5 : button.previousValue;
|
|
1472
|
-
flag = HeatPump.EffectiveFlags.Power + HeatPump.EffectiveFlags.OperationModeZone1;
|
|
1473
|
-
break;
|
|
1474
|
-
case 30: //PHYSICAL LOCK CONTROL
|
|
1475
|
-
deviceData.Device.ProhibitZone1 = state;
|
|
1476
|
-
flag = HeatPump.EffectiveFlags.ProhibitHeatingZone1;
|
|
1477
|
-
break;
|
|
1478
|
-
case 40: //HOT WATER NORMAL/FORCE HOT WATER
|
|
1479
|
-
deviceData.Device.Power = true;
|
|
1480
|
-
deviceData.Device.ForcedHotWaterMode = state;
|
|
1481
|
-
flag = HeatPump.EffectiveFlags.Power + HeatPump.EffectiveFlags.ForcedHotWaterMode;
|
|
1482
|
-
break;
|
|
1483
|
-
case 41: //NORMAL/ECO
|
|
1484
|
-
deviceData.Device.Power = true;
|
|
1485
|
-
deviceData.Device.EcoHotWater = state;
|
|
1486
|
-
flag = HeatPump.EffectiveFlags.Power + HeatPump.EffectiveFlags.EcoHotWater;
|
|
1487
|
-
break;
|
|
1488
|
-
case 50: //PHYSICAL LOCK CONTROL
|
|
1489
|
-
deviceData.Device.ProhibitHotWater = state;
|
|
1490
|
-
flag = HeatPump.EffectiveFlags.ProhibitHotWater;
|
|
1491
|
-
break;
|
|
1492
|
-
case 60: //ZONE 2 HEAT THERMOSTAT
|
|
1493
|
-
button.previousValue = state ? deviceData.Device.OperationModeZone2 : button.previousValue ?? deviceData.Device.OperationModeZone2;
|
|
1494
|
-
deviceData.Device.Power = true;
|
|
1495
|
-
deviceData.Device.OperationModeZone2 = state ? 0 : button.previousValue;
|
|
1496
|
-
flag = HeatPump.EffectiveFlags.Power + HeatPump.EffectiveFlags.OperationModeZone2;
|
|
1497
|
-
break;
|
|
1498
|
-
case 61: // HEAT FLOW
|
|
1499
|
-
button.previousValue = state ? deviceData.Device.OperationModeZone2 : button.previousValue ?? deviceData.Device.OperationModeZone2;
|
|
1500
|
-
deviceData.Device.Power = true;
|
|
1501
|
-
deviceData.Device.OperationModeZone2 = state ? 1 : button.previousValue;
|
|
1502
|
-
flag = HeatPump.EffectiveFlags.Power + HeatPump.EffectiveFlags.OperationModeZone2;
|
|
1503
|
-
break;
|
|
1504
|
-
case 62: //HEAT CURVE
|
|
1505
|
-
button.previousValue = state ? deviceData.Device.OperationModeZone2 : button.previousValue ?? deviceData.Device.OperationModeZone2;
|
|
1506
|
-
deviceData.Device.Power = true;
|
|
1507
|
-
deviceData.Device.OperationModeZone2 = state ? 2 : button.previousValue;
|
|
1508
|
-
flag = HeatPump.EffectiveFlags.Power + HeatPump.EffectiveFlags.OperationModeZone2;
|
|
1509
|
-
break;
|
|
1510
|
-
case 63: //COOL THERMOSTAT
|
|
1511
|
-
button.previousValue = state ? deviceData.Device.OperationModeZone2 : button.previousValue ?? deviceData.Device.OperationModeZone2;
|
|
1512
|
-
deviceData.Device.Power = true;
|
|
1513
|
-
deviceData.Device.OperationModeZone2 = state ? 3 : button.previousValue;
|
|
1514
|
-
flag = HeatPump.EffectiveFlags.Power + HeatPump.EffectiveFlags.OperationModeZone2;
|
|
1515
|
-
break;
|
|
1516
|
-
case 64: //COOL FLOW
|
|
1517
|
-
button.previousValue = state ? deviceData.Device.OperationModeZone2 : button.previousValue ?? deviceData.Device.OperationModeZone2;
|
|
1518
|
-
deviceData.Device.Power = true;
|
|
1519
|
-
deviceData.Device.OperationModeZone2 = state ? 4 : button.previousValue;
|
|
1520
|
-
flag = HeatPump.EffectiveFlags.Power + HeatPump.EffectiveFlags.OperationModeZone2;
|
|
1521
|
-
break;
|
|
1522
|
-
case 65: //FLOOR DRY UP
|
|
1523
|
-
button.previousValue = state ? deviceData.Device.OperationModeZone2 : button.previousValue ?? deviceData.Device.OperationModeZone2;
|
|
1524
|
-
deviceData.Device.Power = true;
|
|
1525
|
-
deviceData.Device.OperationModeZone2 = state ? 5 : button.previousValue;
|
|
1526
|
-
flag = HeatPump.EffectiveFlags.Power + HeatPump.EffectiveFlags.OperationModeZone2;
|
|
1527
|
-
break;
|
|
1528
|
-
case 70: //PHYSICAL LOCK CONTROL
|
|
1529
|
-
deviceData.Device.ProhibitZone2 = state;
|
|
1530
|
-
HeatPump.EffectiveFlags.ProhibitHeatingZone2;
|
|
1531
|
-
break;
|
|
1532
|
-
default:
|
|
1533
|
-
if (this.logWarn) this.emit('warn', `Unknown button mode: ${mode}`);
|
|
1534
|
-
break;
|
|
1535
|
-
};
|
|
1536
|
-
|
|
1537
|
-
if (this.logInfo) this.emit('info', `${state ? `Set: ${name}` : `Unset: ${name}, Set: ${button.previousValue}`}`);
|
|
1538
|
-
await this.melCloudAtw.send(this.accountType, this.displayType, deviceData, flag);
|
|
1539
|
-
} catch (error) {
|
|
1540
|
-
if (this.logWarn) this.emit('warn', `Set button error: ${error}`);
|
|
1541
|
-
};
|
|
1542
|
-
};
|
|
1543
|
-
});
|
|
1544
|
-
this.buttonsServices.push(buttonService);
|
|
1545
|
-
accessory.addService(buttonService)
|
|
1560
|
+
this.buttonControlSensorServices.push(buttonControlSensorService);
|
|
1561
|
+
accessory.addService(buttonControlSensorService);
|
|
1546
1562
|
});
|
|
1547
1563
|
};
|
|
1548
1564
|
|
|
@@ -2245,9 +2261,14 @@ class DeviceAtw extends EventEmitter {
|
|
|
2245
2261
|
break;
|
|
2246
2262
|
};
|
|
2247
2263
|
|
|
2248
|
-
//
|
|
2249
|
-
|
|
2250
|
-
|
|
2264
|
+
//control
|
|
2265
|
+
if (button.displayType > 3) {
|
|
2266
|
+
this.buttonControlServices?.[i]?.updateCharacteristic(Characteristic.On, button.state);
|
|
2267
|
+
}
|
|
2268
|
+
|
|
2269
|
+
//sensor
|
|
2270
|
+
const characteristicType = scene.characteristicType;
|
|
2271
|
+
this.buttonControlSensorServices?.[i]?.updateCharacteristic(characteristicType, button.state);
|
|
2251
2272
|
});
|
|
2252
2273
|
};
|
|
2253
2274
|
})
|