zigbee-herdsman-converters 14.0.308 → 14.0.313
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/converters/fromZigbee.js +157 -11
- package/converters/toZigbee.js +71 -2
- package/devices/bitron.js +1 -2
- package/devices/candeo.js +1 -1
- package/devices/danfoss.js +4 -4
- package/devices/envilar.js +1 -1
- package/devices/eurotronic.js +5 -5
- package/devices/heiman.js +13 -13
- package/devices/hive.js +38 -38
- package/devices/lidl.js +11 -0
- package/devices/moes.js +3 -1
- package/devices/neo.js +6 -0
- package/devices/philips.js +27 -0
- package/devices/popp.js +4 -4
- package/devices/rgb_genie.js +8 -0
- package/devices/schneider_electric.js +8 -9
- package/devices/sengled.js +7 -0
- package/devices/sinope.js +15 -15
- package/devices/stelpro.js +43 -28
- package/devices/tuya.js +61 -9
- package/devices/viessmann.js +4 -4
- package/devices/xiaomi.js +7 -16
- package/lib/exposes.js +2 -0
- package/npm-shrinkwrap.json +1065 -1163
- package/package.json +2 -2
package/converters/fromZigbee.js
CHANGED
|
@@ -3539,6 +3539,157 @@ const converters = {
|
|
|
3539
3539
|
}
|
|
3540
3540
|
},
|
|
3541
3541
|
},
|
|
3542
|
+
tvtwo_thermostat: {
|
|
3543
|
+
cluster: 'manuSpecificTuya',
|
|
3544
|
+
type: ['commandGetData', 'commandSetDataResponse'],
|
|
3545
|
+
convert: (model, msg, publish, options, meta) => {
|
|
3546
|
+
const dp = msg.data.dp;
|
|
3547
|
+
const value = tuya.getDataValue(msg.data.datatype, msg.data.data);
|
|
3548
|
+
const presetLookup = {0: 'auto', 1: 'manual', 2: 'holiday'};
|
|
3549
|
+
switch (dp) {
|
|
3550
|
+
case tuya.dataPoints.tvMode:
|
|
3551
|
+
return {preset: presetLookup[value]};
|
|
3552
|
+
case tuya.dataPoints.tvChildLock:
|
|
3553
|
+
return {child_lock: value ? 'LOCK' : 'UNLOCK'};
|
|
3554
|
+
case tuya.dataPoints.tvHolidayTemp:
|
|
3555
|
+
return {holiday_temperature: (value / 10).toFixed(1)};
|
|
3556
|
+
case tuya.dataPoints.tvHeatingSetpoint:
|
|
3557
|
+
return {current_heating_setpoint: (value / 10).toFixed(1)};
|
|
3558
|
+
case tuya.dataPoints.tvFrostDetection:
|
|
3559
|
+
return {frost_protection: value ? 'ON' : 'OFF'};
|
|
3560
|
+
case tuya.dataPoints.tvWindowDetection:
|
|
3561
|
+
return {window_detection: value ? 'ON' : 'OFF'};
|
|
3562
|
+
case tuya.dataPoints.tvHeatingStop:
|
|
3563
|
+
return {heating_stop: value ? 'ON' : 'OFF'};
|
|
3564
|
+
case tuya.dataPoints.tvLocalTemp:
|
|
3565
|
+
return {local_temperature: (value / 10).toFixed(1)};
|
|
3566
|
+
case tuya.dataPoints.tvBattery:
|
|
3567
|
+
return {battery_low: value === 0 ? true : false};
|
|
3568
|
+
case tuya.dataPoints.tvTempCalibration:
|
|
3569
|
+
return {local_temperature_calibration: value > 55 ?
|
|
3570
|
+
((value - 0x100000000)/10).toFixed(1): (value/ 10).toFixed(1)};
|
|
3571
|
+
case tuya.dataPoints.tvBoostTime:
|
|
3572
|
+
// Setting minimum 0 - maximum 465 seconds
|
|
3573
|
+
return {boost_timeset_countdown: value};
|
|
3574
|
+
case tuya.dataPoints.tvComfortTemp:
|
|
3575
|
+
return {comfort_temperature: (value / 10).toFixed(1)};
|
|
3576
|
+
case tuya.dataPoints.tvEcoTemp:
|
|
3577
|
+
return {eco_temperature: (value / 10).toFixed(1)};
|
|
3578
|
+
case tuya.dataPoints.tvOpenWindowTemp:
|
|
3579
|
+
return {open_window_temperature: (value / 10).toFixed(1)};
|
|
3580
|
+
case tuya.dataPoints.tvErrorStatus:
|
|
3581
|
+
return {fault_alarm: value};
|
|
3582
|
+
case tuya.dataPoints.tvHolidayMode:
|
|
3583
|
+
return {holiday_mode_date: value};
|
|
3584
|
+
|
|
3585
|
+
case tuya.dataPoints.tvBoostMode:
|
|
3586
|
+
// Online ?
|
|
3587
|
+
return {online: value ? 'ON' : 'OFF'};
|
|
3588
|
+
case tuya.dataPoints.tvWorkingDay:
|
|
3589
|
+
// tvWorkingDay: 31,
|
|
3590
|
+
return {working_day: value};
|
|
3591
|
+
case tuya.dataPoints.tvWeekSchedule:
|
|
3592
|
+
// tvWeekSchedule: 106, Week select 0 - 5 days, 1 - 6 days, 2 - 7 days
|
|
3593
|
+
return {week_schedule: value};
|
|
3594
|
+
|
|
3595
|
+
case tuya.dataPoints.tvMondaySchedule:
|
|
3596
|
+
return {schedule_monday:
|
|
3597
|
+
' ' + value[0] / 6 + 'h:' + value[1] + 'm ' + value[2] / 10 + '°C' +
|
|
3598
|
+
', ' + value[3] / 6 + 'h:' + value[4] + 'm ' + value[5] / 10 + '°C' +
|
|
3599
|
+
', ' + value[6] / 6 + 'h:' + value[7] + 'm ' + value[8] / 10 + '°C' +
|
|
3600
|
+
', ' + value[9] / 6 + 'h:' + value[10] + 'm ' + value[11] / 10 + '°C' +
|
|
3601
|
+
', ' + value[12] / 6 + 'h:' + value[13] + 'm ' + value[14] / 10 + '°C ' +
|
|
3602
|
+
', ' + value[15] / 6 + 'h:' + value[16] + 'm ' + value[17] / 10 + '°C ' +
|
|
3603
|
+
', ' + value[18] / 6 + 'h:' + value[19] + 'm ' + value[20] / 10 + '°C ' +
|
|
3604
|
+
', ' + value[21] / 6 + 'h:' + value[22] + 'm ' + value[23] / 10 + '°C ' +
|
|
3605
|
+
', ' + value[24] / 6 + 'h:' + value[25] + 'm ' + value[26] / 10 + '°C ' +
|
|
3606
|
+
', ' + value[27] / 6 + 'h:' + value[28] + 'm ' + value[29] / 10 + '°C ',
|
|
3607
|
+
};
|
|
3608
|
+
case tuya.dataPoints.tvTuesdaySchedule:
|
|
3609
|
+
return {schedule_tuesday:
|
|
3610
|
+
' ' + value[0] / 6 + 'h:' + value[1] + 'm ' + value[2] / 10 + '°C' +
|
|
3611
|
+
', ' + value[3] / 6 + 'h:' + value[4] + 'm ' + value[5] / 10 + '°C' +
|
|
3612
|
+
', ' + value[6] / 6 + 'h:' + value[7] + 'm ' + value[8] / 10 + '°C' +
|
|
3613
|
+
', ' + value[9] / 6 + 'h:' + value[10] + 'm ' + value[11] / 10 + '°C' +
|
|
3614
|
+
', ' + value[12] / 6 + 'h:' + value[13] + 'm ' + value[14] / 10 + '°C ' +
|
|
3615
|
+
', ' + value[15] / 6 + 'h:' + value[16] + 'm ' + value[17] / 10 + '°C ' +
|
|
3616
|
+
', ' + value[18] / 6 + 'h:' + value[19] + 'm ' + value[20] / 10 + '°C ' +
|
|
3617
|
+
', ' + value[21] / 6 + 'h:' + value[22] + 'm ' + value[23] / 10 + '°C ' +
|
|
3618
|
+
', ' + value[24] / 6 + 'h:' + value[25] + 'm ' + value[26] / 10 + '°C ' +
|
|
3619
|
+
', ' + value[27] / 6 + 'h:' + value[28] + 'm ' + value[29] / 10 + '°C ',
|
|
3620
|
+
};
|
|
3621
|
+
case tuya.dataPoints.tvWednesdaySchedule:
|
|
3622
|
+
return {schedule_wednesday:
|
|
3623
|
+
' ' + value[0] / 6 + 'h:' + value[1] + 'm ' + value[2] / 10 + '°C' +
|
|
3624
|
+
', ' + value[3] / 6 + 'h:' + value[4] + 'm ' + value[5] / 10 + '°C' +
|
|
3625
|
+
', ' + value[6] / 6 + 'h:' + value[7] + 'm ' + value[8] / 10 + '°C' +
|
|
3626
|
+
', ' + value[9] / 6 + 'h:' + value[10] + 'm ' + value[11] / 10 + '°C' +
|
|
3627
|
+
', ' + value[12] / 6 + 'h:' + value[13] + 'm ' + value[14] / 10 + '°C ' +
|
|
3628
|
+
', ' + value[15] / 6 + 'h:' + value[16] + 'm ' + value[17] / 10 + '°C ' +
|
|
3629
|
+
', ' + value[18] / 6 + 'h:' + value[19] + 'm ' + value[20] / 10 + '°C ' +
|
|
3630
|
+
', ' + value[21] / 6 + 'h:' + value[22] + 'm ' + value[23] / 10 + '°C ' +
|
|
3631
|
+
', ' + value[24] / 6 + 'h:' + value[25] + 'm ' + value[26] / 10 + '°C ' +
|
|
3632
|
+
', ' + value[27] / 6 + 'h:' + value[28] + 'm ' + value[29] / 10 + '°C ',
|
|
3633
|
+
};
|
|
3634
|
+
case tuya.dataPoints.tvThursdaySchedule:
|
|
3635
|
+
return {schedule_thursday:
|
|
3636
|
+
' ' + value[0] / 6 + 'h:' + value[1] + 'm ' + value[2] / 10 + '°C' +
|
|
3637
|
+
', ' + value[3] / 6 + 'h:' + value[4] + 'm ' + value[5] / 10 + '°C' +
|
|
3638
|
+
', ' + value[6] / 6 + 'h:' + value[7] + 'm ' + value[8] / 10 + '°C' +
|
|
3639
|
+
', ' + value[9] / 6 + 'h:' + value[10] + 'm ' + value[11] / 10 + '°C' +
|
|
3640
|
+
', ' + value[12] / 6 + 'h:' + value[13] + 'm ' + value[14] / 10 + '°C ' +
|
|
3641
|
+
', ' + value[15] / 6 + 'h:' + value[16] + 'm ' + value[17] / 10 + '°C ' +
|
|
3642
|
+
', ' + value[18] / 6 + 'h:' + value[19] + 'm ' + value[20] / 10 + '°C ' +
|
|
3643
|
+
', ' + value[21] / 6 + 'h:' + value[22] + 'm ' + value[23] / 10 + '°C ' +
|
|
3644
|
+
', ' + value[24] / 6 + 'h:' + value[25] + 'm ' + value[26] / 10 + '°C ' +
|
|
3645
|
+
', ' + value[27] / 6 + 'h:' + value[28] + 'm ' + value[29] / 10 + '°C ',
|
|
3646
|
+
};
|
|
3647
|
+
case tuya.dataPoints.tvFridaySchedule:
|
|
3648
|
+
return {schedule_friday:
|
|
3649
|
+
' ' + value[0] / 6 + 'h:' + value[1] + 'm ' + value[2] / 10 + '°C' +
|
|
3650
|
+
', ' + value[3] / 6 + 'h:' + value[4] + 'm ' + value[5] / 10 + '°C' +
|
|
3651
|
+
', ' + value[6] / 6 + 'h:' + value[7] + 'm ' + value[8] / 10 + '°C' +
|
|
3652
|
+
', ' + value[9] / 6 + 'h:' + value[10] + 'm ' + value[11] / 10 + '°C' +
|
|
3653
|
+
', ' + value[12] / 6 + 'h:' + value[13] + 'm ' + value[14] / 10 + '°C ' +
|
|
3654
|
+
', ' + value[15] / 6 + 'h:' + value[16] + 'm ' + value[17] / 10 + '°C ' +
|
|
3655
|
+
', ' + value[18] / 6 + 'h:' + value[19] + 'm ' + value[20] / 10 + '°C ' +
|
|
3656
|
+
', ' + value[21] / 6 + 'h:' + value[22] + 'm ' + value[23] / 10 + '°C ' +
|
|
3657
|
+
', ' + value[24] / 6 + 'h:' + value[25] + 'm ' + value[26] / 10 + '°C ' +
|
|
3658
|
+
', ' + value[27] / 6 + 'h:' + value[28] + 'm ' + value[29] / 10 + '°C ',
|
|
3659
|
+
};
|
|
3660
|
+
case tuya.dataPoints.tvSaturdaySchedule:
|
|
3661
|
+
return {schedule_saturday:
|
|
3662
|
+
' ' + value[0] / 6 + 'h:' + value[1] + 'm ' + value[2] / 10 + '°C' +
|
|
3663
|
+
', ' + value[3] / 6 + 'h:' + value[4] + 'm ' + value[5] / 10 + '°C' +
|
|
3664
|
+
', ' + value[6] / 6 + 'h:' + value[7] + 'm ' + value[8] / 10 + '°C' +
|
|
3665
|
+
', ' + value[9] / 6 + 'h:' + value[10] + 'm ' + value[11] / 10 + '°C' +
|
|
3666
|
+
', ' + value[12] / 6 + 'h:' + value[13] + 'm ' + value[14] / 10 + '°C ' +
|
|
3667
|
+
', ' + value[15] / 6 + 'h:' + value[16] + 'm ' + value[17] / 10 + '°C ' +
|
|
3668
|
+
', ' + value[18] / 6 + 'h:' + value[19] + 'm ' + value[20] / 10 + '°C ' +
|
|
3669
|
+
', ' + value[21] / 6 + 'h:' + value[22] + 'm ' + value[23] / 10 + '°C ' +
|
|
3670
|
+
', ' + value[24] / 6 + 'h:' + value[25] + 'm ' + value[26] / 10 + '°C ' +
|
|
3671
|
+
', ' + value[27] / 6 + 'h:' + value[28] + 'm ' + value[29] / 10 + '°C ',
|
|
3672
|
+
};
|
|
3673
|
+
case tuya.dataPoints.tvSundaySchedule:
|
|
3674
|
+
return {schedule_sunday:
|
|
3675
|
+
' ' + value[0] / 6 + 'h:' + value[1] + 'm ' + value[2] / 10 + '°C' +
|
|
3676
|
+
', ' + value[3] / 6 + 'h:' + value[4] + 'm ' + value[5] / 10 + '°C' +
|
|
3677
|
+
', ' + value[6] / 6 + 'h:' + value[7] + 'm ' + value[8] / 10 + '°C' +
|
|
3678
|
+
', ' + value[9] / 6 + 'h:' + value[10] + 'm ' + value[11] / 10 + '°C' +
|
|
3679
|
+
', ' + value[12] / 6 + 'h:' + value[13] + 'm ' + value[14] / 10 + '°C ' +
|
|
3680
|
+
', ' + value[15] / 6 + 'h:' + value[16] + 'm ' + value[17] / 10 + '°C ' +
|
|
3681
|
+
', ' + value[18] / 6 + 'h:' + value[19] + 'm ' + value[20] / 10 + '°C ' +
|
|
3682
|
+
', ' + value[21] / 6 + 'h:' + value[22] + 'm ' + value[23] / 10 + '°C ' +
|
|
3683
|
+
', ' + value[24] / 6 + 'h:' + value[25] + 'm ' + value[26] / 10 + '°C ' +
|
|
3684
|
+
', ' + value[27] / 6 + 'h:' + value[28] + 'm ' + value[29] / 10 + '°C ',
|
|
3685
|
+
};
|
|
3686
|
+
|
|
3687
|
+
default:
|
|
3688
|
+
meta.logger.warn(`zigbee-herdsman-converters:tvtwo_thermostat: NOT RECOGNIZED DP #${
|
|
3689
|
+
dp} with data ${JSON.stringify(msg.data)}`);
|
|
3690
|
+
}
|
|
3691
|
+
},
|
|
3692
|
+
},
|
|
3542
3693
|
haozee_thermostat: {
|
|
3543
3694
|
cluster: 'manuSpecificTuya',
|
|
3544
3695
|
type: ['commandGetData', 'commandSetDataResponse'],
|
|
@@ -4752,6 +4903,10 @@ const converters = {
|
|
|
4752
4903
|
const lookup = {4: 'anti_flicker_mode', 1: 'quick_mode'};
|
|
4753
4904
|
payload.mode_switch = lookup[msg.data['4']];
|
|
4754
4905
|
}
|
|
4906
|
+
if (msg.data.hasOwnProperty('10')) {
|
|
4907
|
+
const lookup = {1: 'toggle', 2: 'momentary'};
|
|
4908
|
+
payload.switch_type = lookup[msg.data['10']];
|
|
4909
|
+
}
|
|
4755
4910
|
if (msg.data.hasOwnProperty('512')) {
|
|
4756
4911
|
if (['ZNCZ15LM', 'QBCZ14LM', 'QBCZ15LM'].includes(model.model)) {
|
|
4757
4912
|
payload.button_lock = msg.data['512'] === 1 ? 'OFF' : 'ON';
|
|
@@ -4986,15 +5141,6 @@ const converters = {
|
|
|
4986
5141
|
}
|
|
4987
5142
|
},
|
|
4988
5143
|
},
|
|
4989
|
-
WSDCGQ11LM_pressure: {
|
|
4990
|
-
cluster: 'msPressureMeasurement',
|
|
4991
|
-
type: ['attributeReport', 'readResponse'],
|
|
4992
|
-
options: [exposes.options.precision('pressure'), exposes.options.calibration('pressure')],
|
|
4993
|
-
convert: (model, msg, publish, options, meta) => {
|
|
4994
|
-
const pressure = msg.data.hasOwnProperty('16') ? parseFloat(msg.data['16']) / 10 : parseFloat(msg.data['measuredValue']);
|
|
4995
|
-
return {pressure: calibrateAndPrecisionRoundOptions(pressure, options, 'pressure')};
|
|
4996
|
-
},
|
|
4997
|
-
},
|
|
4998
5144
|
W2_module_carbon_monoxide: {
|
|
4999
5145
|
cluster: 'ssIasZone',
|
|
5000
5146
|
type: 'commandStatusChangeNotification',
|
|
@@ -7179,10 +7325,10 @@ const converters = {
|
|
|
7179
7325
|
result.voltage_rms = (value[1] | value[0] << 8) / 10;
|
|
7180
7326
|
}
|
|
7181
7327
|
if (dp === tuya.dataPoints.hochCurrent) {
|
|
7182
|
-
result.current = value[2] | value[1] << 8;
|
|
7328
|
+
result.current = (value[2] | value[1] << 8) / 1000;
|
|
7183
7329
|
}
|
|
7184
7330
|
if (dp === tuya.dataPoints.hochHistoricalCurrent) {
|
|
7185
|
-
result.current_average = value[2] | value[1] << 8;
|
|
7331
|
+
result.current_average = (value[2] | value[1] << 8) / 1000;
|
|
7186
7332
|
}
|
|
7187
7333
|
if (dp === tuya.dataPoints.hochActivePower) {
|
|
7188
7334
|
result.power = (value[2] | value[1] << 8) / 10;
|
package/converters/toZigbee.js
CHANGED
|
@@ -2078,7 +2078,7 @@ const converters = {
|
|
|
2078
2078
|
xiaomi_led_disabled_night: {
|
|
2079
2079
|
key: ['led_disabled_night'],
|
|
2080
2080
|
convertSet: async (entity, key, value, meta) => {
|
|
2081
|
-
if (['ZNCZ04LM', 'ZNCZ15LM', 'QBCZ15LM', 'QBCZ14LM', 'QBKG20LM', 'QBKG25LM', 'QBKG19LM',
|
|
2081
|
+
if (['ZNCZ04LM', 'ZNCZ15LM', 'QBCZ15LM', 'QBCZ14LM', 'QBKG20LM', 'QBKG25LM', 'QBKG19LM', 'DLKZMK11LM',
|
|
2082
2082
|
'QBKG34LM'].includes(meta.mapped.model)) {
|
|
2083
2083
|
await entity.write('aqaraOpple', {0x0203: {value: value ? 1 : 0, type: 0x10}}, manufacturerOptions.xiaomi);
|
|
2084
2084
|
} else if (['ZNCZ11LM'].includes(meta.mapped.model)) {
|
|
@@ -2093,7 +2093,7 @@ const converters = {
|
|
|
2093
2093
|
return {state: {led_disabled_night: value}};
|
|
2094
2094
|
},
|
|
2095
2095
|
convertGet: async (entity, key, meta) => {
|
|
2096
|
-
if (['ZNCZ04LM', 'ZNCZ15LM', 'QBCZ15LM', 'QBCZ14LM', 'QBKG20LM', 'QBKG25LM', 'QBKG19LM',
|
|
2096
|
+
if (['ZNCZ04LM', 'ZNCZ15LM', 'QBCZ15LM', 'QBCZ14LM', 'QBKG20LM', 'QBKG25LM', 'QBKG19LM', 'DLKZMK11LM',
|
|
2097
2097
|
'QBKG34LM'].includes(meta.mapped.model)) {
|
|
2098
2098
|
await entity.read('aqaraOpple', [0x0203], manufacturerOptions.xiaomi);
|
|
2099
2099
|
} else {
|
|
@@ -2735,6 +2735,75 @@ const converters = {
|
|
|
2735
2735
|
await tuya.sendDataPointValue(entity, tuya.dataPoints.moesSminTempSet, temp);
|
|
2736
2736
|
},
|
|
2737
2737
|
},
|
|
2738
|
+
tvtwo_thermostat: {
|
|
2739
|
+
key: [
|
|
2740
|
+
'window_detection', 'frost_protection', 'child_lock',
|
|
2741
|
+
'current_heating_setpoint', 'local_temperature_calibration',
|
|
2742
|
+
'holiday_temperature', 'comfort_temperature', 'eco_temperature',
|
|
2743
|
+
'open_window_temperature', 'heating_stop', 'preset', 'boost_timeset_countdown',
|
|
2744
|
+
'holiday_mode_date', 'working_day', 'week_schedule', 'week', 'online',
|
|
2745
|
+
],
|
|
2746
|
+
convertSet: async (entity, key, value, meta) => {
|
|
2747
|
+
switch (key) {
|
|
2748
|
+
case 'preset': {
|
|
2749
|
+
const presetLookup = {'auto': 0, 'manual': 1, 'holiday': 3};
|
|
2750
|
+
await tuya.sendDataPointEnum(entity, tuya.dataPoints.tvMode, presetLookup[value]);
|
|
2751
|
+
return {state: {preset: value}};}
|
|
2752
|
+
case 'frost_protection':
|
|
2753
|
+
await tuya.sendDataPointBool(entity, tuya.dataPoints.tvFrostDetection, value === 'ON');
|
|
2754
|
+
break;
|
|
2755
|
+
case 'heating_stop':
|
|
2756
|
+
await tuya.sendDataPointBool(entity, tuya.dataPoints.tvHeatingStop, value === 'ON');
|
|
2757
|
+
break;
|
|
2758
|
+
case 'window_detection':
|
|
2759
|
+
await tuya.sendDataPointBool(entity, tuya.dataPoints.tvWindowDetection, value === 'ON');
|
|
2760
|
+
break;
|
|
2761
|
+
case 'child_lock':
|
|
2762
|
+
await tuya.sendDataPointBool(entity, tuya.dataPoints.tvChildLock, value === 'LOCK');
|
|
2763
|
+
break;
|
|
2764
|
+
case 'local_temperature_calibration':
|
|
2765
|
+
// value = Math.round(value);
|
|
2766
|
+
value = (value < 0) ? 0xFFFFFFFF + value + 1 : value;
|
|
2767
|
+
await tuya.sendDataPointValue(entity, tuya.dataPoints.tvTempCalibration, value * 10);
|
|
2768
|
+
break;
|
|
2769
|
+
case 'current_heating_setpoint':
|
|
2770
|
+
await tuya.sendDataPointValue(entity, tuya.dataPoints.tvHeatingSetpoint, value * 10);
|
|
2771
|
+
break;
|
|
2772
|
+
case 'holiday_temperature':
|
|
2773
|
+
await tuya.sendDataPointValue(entity, tuya.dataPoints.tvHolidayTemp, value * 10);
|
|
2774
|
+
break;
|
|
2775
|
+
case 'comfort_temperature':
|
|
2776
|
+
await tuya.sendDataPointValue(entity, tuya.dataPoints.tvComfortTemp, value * 10);
|
|
2777
|
+
break;
|
|
2778
|
+
case 'eco_temperature':
|
|
2779
|
+
await tuya.sendDataPointValue(entity, tuya.dataPoints.tvEcoTemp, value * 10);
|
|
2780
|
+
break;
|
|
2781
|
+
case 'boost_timeset_countdown':
|
|
2782
|
+
// set min 0 - max 465 sec boost time
|
|
2783
|
+
await tuya.sendDataPointValue(entity, tuya.dataPoints.tvBoostTime, value);
|
|
2784
|
+
break;
|
|
2785
|
+
case 'open_window_temperature':
|
|
2786
|
+
await tuya.sendDataPointValue(entity, tuya.dataPoints.tvOpenWindowTemp, value * 10);
|
|
2787
|
+
break;
|
|
2788
|
+
case 'holiday_mode_date':
|
|
2789
|
+
await tuya.sendDataPointBitmap(entity, tuya.dataPoints.tvWorkingDayTimetvHolidayMode, value);
|
|
2790
|
+
break;
|
|
2791
|
+
|
|
2792
|
+
case 'online':
|
|
2793
|
+
// 115 ????? online
|
|
2794
|
+
await tuya.sendDataPointBool(entity, tuya.dataPoints.tvBoostMode, value === 'ON');
|
|
2795
|
+
break;
|
|
2796
|
+
case 'week': {
|
|
2797
|
+
const weekLookup = {'5+2': 0, '6+1': 1, '7': 2};
|
|
2798
|
+
const week = weekLookup[value];
|
|
2799
|
+
await tuya.sendDataPointEnum(entity, tuya.dataPoints.tvWorkingDay, week);
|
|
2800
|
+
return {state: {week: value}};}
|
|
2801
|
+
|
|
2802
|
+
default: // Unknown key
|
|
2803
|
+
meta.logger.warn(`toZigbee.tvtwo_thermostat: Unhandled key ${key}`);
|
|
2804
|
+
}
|
|
2805
|
+
},
|
|
2806
|
+
},
|
|
2738
2807
|
haozee_thermostat_system_mode: {
|
|
2739
2808
|
key: ['preset'],
|
|
2740
2809
|
convertSet: async (entity, key, value, meta) => {
|
package/devices/bitron.js
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
const exposes = require('../lib/exposes');
|
|
2
2
|
const fz = {...require('../converters/fromZigbee'), legacy: require('../lib/legacy').fromZigbee};
|
|
3
3
|
const tz = require('../converters/toZigbee');
|
|
4
|
-
const constants = require('../lib/constants');
|
|
5
4
|
const reporting = require('../lib/reporting');
|
|
6
5
|
const extend = require('../lib/extend');
|
|
7
6
|
const e = exposes.presets;
|
|
@@ -199,7 +198,7 @@ module.exports = [
|
|
|
199
198
|
'genBasic', 'genPowerCfg', 'genIdentify', 'genPollCtrl', 'hvacThermostat', 'hvacUserInterfaceCfg',
|
|
200
199
|
];
|
|
201
200
|
await reporting.bind(endpoint, coordinatorEndpoint, binds);
|
|
202
|
-
await reporting.thermostatTemperature(endpoint
|
|
201
|
+
await reporting.thermostatTemperature(endpoint);
|
|
203
202
|
await reporting.thermostatTemperatureCalibration(endpoint);
|
|
204
203
|
await reporting.thermostatOccupiedHeatingSetpoint(endpoint);
|
|
205
204
|
await reporting.thermostatRunningState(endpoint);
|
package/devices/candeo.js
CHANGED
|
@@ -13,7 +13,7 @@ module.exports = [
|
|
|
13
13
|
const endpoint = device.getEndpoint(1);
|
|
14
14
|
await reporting.bind(endpoint, coordinatorEndpoint, ['genOnOff', 'genLevelCtrl']);
|
|
15
15
|
await reporting.onOff(endpoint);
|
|
16
|
-
await reporting.brightness(endpoint
|
|
16
|
+
await reporting.brightness(endpoint);
|
|
17
17
|
},
|
|
18
18
|
},
|
|
19
19
|
];
|
package/devices/danfoss.js
CHANGED
|
@@ -73,15 +73,15 @@ module.exports = [
|
|
|
73
73
|
|
|
74
74
|
// standard ZCL attributes
|
|
75
75
|
await reporting.batteryPercentageRemaining(endpoint);
|
|
76
|
-
await reporting.thermostatTemperature(endpoint
|
|
76
|
+
await reporting.thermostatTemperature(endpoint);
|
|
77
77
|
await reporting.thermostatPIHeatingDemand(endpoint);
|
|
78
|
-
await reporting.thermostatOccupiedHeatingSetpoint(endpoint
|
|
78
|
+
await reporting.thermostatOccupiedHeatingSetpoint(endpoint);
|
|
79
79
|
|
|
80
80
|
// danfoss attributes
|
|
81
81
|
await endpoint.configureReporting('hvacThermostat', [{
|
|
82
82
|
attribute: 'danfossMountedModeActive',
|
|
83
83
|
minimumReportInterval: constants.repInterval.MINUTE,
|
|
84
|
-
maximumReportInterval:
|
|
84
|
+
maximumReportInterval: constants.repInterval.MAX,
|
|
85
85
|
reportableChange: 1,
|
|
86
86
|
}], options);
|
|
87
87
|
await endpoint.configureReporting('hvacThermostat', [{
|
|
@@ -93,7 +93,7 @@ module.exports = [
|
|
|
93
93
|
await endpoint.configureReporting('hvacThermostat', [{
|
|
94
94
|
attribute: 'danfossHeatRequired',
|
|
95
95
|
minimumReportInterval: constants.repInterval.MINUTE,
|
|
96
|
-
maximumReportInterval: constants.repInterval.
|
|
96
|
+
maximumReportInterval: constants.repInterval.HOUR,
|
|
97
97
|
reportableChange: 1,
|
|
98
98
|
}], options);
|
|
99
99
|
await endpoint.configureReporting('hvacThermostat', [{
|
package/devices/envilar.js
CHANGED
package/devices/eurotronic.js
CHANGED
|
@@ -34,12 +34,12 @@ module.exports = [
|
|
|
34
34
|
const endpoint = device.getEndpoint(1);
|
|
35
35
|
const options = {manufacturerCode: 4151};
|
|
36
36
|
await reporting.bind(endpoint, coordinatorEndpoint, ['genPowerCfg', 'hvacThermostat']);
|
|
37
|
-
await reporting.thermostatTemperature(endpoint
|
|
38
|
-
await reporting.thermostatPIHeatingDemand(endpoint
|
|
39
|
-
await reporting.thermostatOccupiedHeatingSetpoint(endpoint
|
|
40
|
-
await reporting.thermostatUnoccupiedHeatingSetpoint(endpoint
|
|
37
|
+
await reporting.thermostatTemperature(endpoint);
|
|
38
|
+
await reporting.thermostatPIHeatingDemand(endpoint);
|
|
39
|
+
await reporting.thermostatOccupiedHeatingSetpoint(endpoint);
|
|
40
|
+
await reporting.thermostatUnoccupiedHeatingSetpoint(endpoint);
|
|
41
41
|
await endpoint.configureReporting('hvacThermostat', [{attribute: {ID: 0x4003, type: 41}, minimumReportInterval: 0,
|
|
42
|
-
maximumReportInterval: constants.repInterval.
|
|
42
|
+
maximumReportInterval: constants.repInterval.HOUR, reportableChange: 25}], options);
|
|
43
43
|
await endpoint.configureReporting('hvacThermostat', [{attribute: {ID: 0x4008, type: 34}, minimumReportInterval: 0,
|
|
44
44
|
maximumReportInterval: constants.repInterval.HOUR, reportableChange: 1}], options);
|
|
45
45
|
},
|
package/devices/heiman.js
CHANGED
|
@@ -149,7 +149,7 @@ module.exports = [
|
|
|
149
149
|
configure: async (device, coordinatorEndpoint, logger) => {
|
|
150
150
|
const endpoint = device.getEndpoint(1);
|
|
151
151
|
await reporting.bind(endpoint, coordinatorEndpoint, ['genPowerCfg']);
|
|
152
|
-
await reporting.batteryPercentageRemaining(endpoint
|
|
152
|
+
await reporting.batteryPercentageRemaining(endpoint);
|
|
153
153
|
await endpoint.read('genPowerCfg', ['batteryPercentageRemaining']);
|
|
154
154
|
},
|
|
155
155
|
exposes: [e.contact(), e.battery(), e.battery_low(), e.tamper()],
|
|
@@ -164,7 +164,7 @@ module.exports = [
|
|
|
164
164
|
configure: async (device, coordinatorEndpoint, logger) => {
|
|
165
165
|
const endpoint = device.getEndpoint(1);
|
|
166
166
|
await reporting.bind(endpoint, coordinatorEndpoint, ['genPowerCfg']);
|
|
167
|
-
await reporting.batteryPercentageRemaining(endpoint
|
|
167
|
+
await reporting.batteryPercentageRemaining(endpoint);
|
|
168
168
|
await endpoint.read('genPowerCfg', ['batteryPercentageRemaining']);
|
|
169
169
|
},
|
|
170
170
|
exposes: [e.contact(), e.battery_low(), e.tamper(), e.battery()],
|
|
@@ -188,7 +188,7 @@ module.exports = [
|
|
|
188
188
|
configure: async (device, coordinatorEndpoint, logger) => {
|
|
189
189
|
const endpoint = device.getEndpoint(1);
|
|
190
190
|
await reporting.bind(endpoint, coordinatorEndpoint, ['genPowerCfg']);
|
|
191
|
-
await reporting.batteryPercentageRemaining(endpoint
|
|
191
|
+
await reporting.batteryPercentageRemaining(endpoint);
|
|
192
192
|
await endpoint.read('genPowerCfg', ['batteryPercentageRemaining']);
|
|
193
193
|
},
|
|
194
194
|
exposes: [e.water_leak(), e.battery_low(), e.tamper(), e.battery()],
|
|
@@ -204,7 +204,7 @@ module.exports = [
|
|
|
204
204
|
configure: async (device, coordinatorEndpoint, logger) => {
|
|
205
205
|
const endpoint = device.getEndpoint(1);
|
|
206
206
|
await reporting.bind(endpoint, coordinatorEndpoint, ['genPowerCfg']);
|
|
207
|
-
await reporting.batteryPercentageRemaining(endpoint
|
|
207
|
+
await reporting.batteryPercentageRemaining(endpoint);
|
|
208
208
|
await endpoint.read('genPowerCfg', ['batteryPercentageRemaining']);
|
|
209
209
|
},
|
|
210
210
|
},
|
|
@@ -219,7 +219,7 @@ module.exports = [
|
|
|
219
219
|
configure: async (device, coordinatorEndpoint, logger) => {
|
|
220
220
|
const endpoint = device.getEndpoint(1);
|
|
221
221
|
await reporting.bind(endpoint, coordinatorEndpoint, ['genPowerCfg']);
|
|
222
|
-
await reporting.batteryPercentageRemaining(endpoint
|
|
222
|
+
await reporting.batteryPercentageRemaining(endpoint);
|
|
223
223
|
await endpoint.read('genPowerCfg', ['batteryPercentageRemaining']);
|
|
224
224
|
},
|
|
225
225
|
onEvent: async (type, data, device) => {
|
|
@@ -241,7 +241,7 @@ module.exports = [
|
|
|
241
241
|
configure: async (device, coordinatorEndpoint, logger) => {
|
|
242
242
|
const endpoint = device.getEndpoint(1);
|
|
243
243
|
await reporting.bind(endpoint, coordinatorEndpoint, ['genPowerCfg']);
|
|
244
|
-
await reporting.batteryPercentageRemaining(endpoint
|
|
244
|
+
await reporting.batteryPercentageRemaining(endpoint);
|
|
245
245
|
await endpoint.read('genPowerCfg', ['batteryPercentageRemaining']);
|
|
246
246
|
},
|
|
247
247
|
},
|
|
@@ -334,7 +334,7 @@ module.exports = [
|
|
|
334
334
|
const endpoint1 = device.getEndpoint(1);
|
|
335
335
|
await reporting.bind(endpoint1, coordinatorEndpoint, ['msTemperatureMeasurement', 'genPowerCfg']);
|
|
336
336
|
await reporting.temperature(endpoint1);
|
|
337
|
-
await reporting.batteryPercentageRemaining(endpoint1
|
|
337
|
+
await reporting.batteryPercentageRemaining(endpoint1);
|
|
338
338
|
await endpoint1.read('genPowerCfg', ['batteryPercentageRemaining']);
|
|
339
339
|
|
|
340
340
|
const endpoint2 = device.getEndpoint(2);
|
|
@@ -405,7 +405,7 @@ module.exports = [
|
|
|
405
405
|
const bindClusters = ['msTemperatureMeasurement', 'msRelativeHumidity', 'genPowerCfg'];
|
|
406
406
|
await reporting.bind(endpoint, coordinatorEndpoint, bindClusters);
|
|
407
407
|
await reporting.temperature(endpoint);
|
|
408
|
-
await reporting.humidity(endpoint
|
|
408
|
+
await reporting.humidity(endpoint);
|
|
409
409
|
await reporting.batteryVoltage(endpoint);
|
|
410
410
|
},
|
|
411
411
|
exposes: [e.temperature(), e.humidity(), e.battery()],
|
|
@@ -421,7 +421,7 @@ module.exports = [
|
|
|
421
421
|
configure: async (device, coordinatorEndpoint, logger) => {
|
|
422
422
|
const endpoint = device.getEndpoint(1);
|
|
423
423
|
await reporting.bind(endpoint, coordinatorEndpoint, ['genPowerCfg']);
|
|
424
|
-
await reporting.batteryPercentageRemaining(endpoint
|
|
424
|
+
await reporting.batteryPercentageRemaining(endpoint);
|
|
425
425
|
await endpoint.read('genPowerCfg', ['batteryPercentageRemaining']);
|
|
426
426
|
},
|
|
427
427
|
},
|
|
@@ -436,7 +436,7 @@ module.exports = [
|
|
|
436
436
|
configure: async (device, coordinatorEndpoint, logger) => {
|
|
437
437
|
const endpoint = device.getEndpoint(1);
|
|
438
438
|
await reporting.bind(endpoint, coordinatorEndpoint, ['genPowerCfg', 'heimanSpecificScenes']);
|
|
439
|
-
await reporting.batteryPercentageRemaining(endpoint
|
|
439
|
+
await reporting.batteryPercentageRemaining(endpoint);
|
|
440
440
|
},
|
|
441
441
|
},
|
|
442
442
|
{
|
|
@@ -468,7 +468,7 @@ module.exports = [
|
|
|
468
468
|
configure: async (device, coordinatorEndpoint, logger) => {
|
|
469
469
|
const endpoint = device.getEndpoint(1);
|
|
470
470
|
await reporting.bind(endpoint, coordinatorEndpoint, ['genPowerCfg']);
|
|
471
|
-
await reporting.batteryPercentageRemaining(endpoint
|
|
471
|
+
await reporting.batteryPercentageRemaining(endpoint);
|
|
472
472
|
await endpoint.read('genPowerCfg', ['batteryPercentageRemaining']);
|
|
473
473
|
},
|
|
474
474
|
exposes: [e.vibration(), e.battery_low(), e.tamper(), e.battery()],
|
|
@@ -483,7 +483,7 @@ module.exports = [
|
|
|
483
483
|
configure: async (device, coordinatorEndpoint, logger) => {
|
|
484
484
|
const endpoint = device.getEndpoint(1);
|
|
485
485
|
await reporting.bind(endpoint, coordinatorEndpoint, ['genPowerCfg']);
|
|
486
|
-
await reporting.batteryPercentageRemaining(endpoint
|
|
486
|
+
await reporting.batteryPercentageRemaining(endpoint);
|
|
487
487
|
await endpoint.read('genPowerCfg', ['batteryPercentageRemaining']);
|
|
488
488
|
},
|
|
489
489
|
exposes: [e.vibration(), e.battery_low(), e.tamper(), e.battery()],
|
|
@@ -564,7 +564,7 @@ module.exports = [
|
|
|
564
564
|
configure: async (device, coordinatorEndpoint, logger) => {
|
|
565
565
|
const endpoint = device.getEndpoint(1);
|
|
566
566
|
await reporting.bind(endpoint, coordinatorEndpoint, ['genPowerCfg', 'heimanSpecificInfraRedRemote']);
|
|
567
|
-
await reporting.batteryPercentageRemaining(endpoint
|
|
567
|
+
await reporting.batteryPercentageRemaining(endpoint);
|
|
568
568
|
},
|
|
569
569
|
},
|
|
570
570
|
{
|
package/devices/hive.js
CHANGED
|
@@ -213,15 +213,15 @@ module.exports = [
|
|
|
213
213
|
|
|
214
214
|
// standard ZCL attributes
|
|
215
215
|
await reporting.batteryPercentageRemaining(endpoint);
|
|
216
|
-
await reporting.thermostatTemperature(endpoint
|
|
216
|
+
await reporting.thermostatTemperature(endpoint);
|
|
217
217
|
await reporting.thermostatPIHeatingDemand(endpoint);
|
|
218
|
-
await reporting.thermostatOccupiedHeatingSetpoint(endpoint
|
|
218
|
+
await reporting.thermostatOccupiedHeatingSetpoint(endpoint);
|
|
219
219
|
|
|
220
220
|
// danfoss attributes
|
|
221
221
|
await endpoint.configureReporting('hvacThermostat', [{
|
|
222
222
|
attribute: 'danfossMountedModeActive',
|
|
223
223
|
minimumReportInterval: constants.repInterval.MINUTE,
|
|
224
|
-
maximumReportInterval:
|
|
224
|
+
maximumReportInterval: constants.repInterval.MAX,
|
|
225
225
|
reportableChange: 1,
|
|
226
226
|
}], options);
|
|
227
227
|
await endpoint.configureReporting('hvacThermostat', [{
|
|
@@ -233,7 +233,7 @@ module.exports = [
|
|
|
233
233
|
await endpoint.configureReporting('hvacThermostat', [{
|
|
234
234
|
attribute: 'danfossHeatRequired',
|
|
235
235
|
minimumReportInterval: constants.repInterval.MINUTE,
|
|
236
|
-
maximumReportInterval: constants.repInterval.
|
|
236
|
+
maximumReportInterval: constants.repInterval.HOUR,
|
|
237
237
|
reportableChange: 1,
|
|
238
238
|
}], options);
|
|
239
239
|
await endpoint.configureReporting('hvacThermostat', [{
|
|
@@ -293,12 +293,12 @@ module.exports = [
|
|
|
293
293
|
const endpoint = device.getEndpoint(5);
|
|
294
294
|
const binds = ['genBasic', 'genIdentify', 'genAlarms', 'genTime', 'hvacThermostat'];
|
|
295
295
|
await reporting.bind(endpoint, coordinatorEndpoint, binds);
|
|
296
|
-
await reporting.thermostatTemperature(endpoint
|
|
297
|
-
await reporting.thermostatRunningState(endpoint
|
|
298
|
-
await reporting.thermostatSystemMode(endpoint
|
|
299
|
-
await reporting.thermostatOccupiedHeatingSetpoint(endpoint
|
|
300
|
-
await reporting.thermostatTemperatureSetpointHold(endpoint
|
|
301
|
-
await reporting.thermostatTemperatureSetpointHoldDuration(endpoint
|
|
296
|
+
await reporting.thermostatTemperature(endpoint);
|
|
297
|
+
await reporting.thermostatRunningState(endpoint);
|
|
298
|
+
await reporting.thermostatSystemMode(endpoint);
|
|
299
|
+
await reporting.thermostatOccupiedHeatingSetpoint(endpoint);
|
|
300
|
+
await reporting.thermostatTemperatureSetpointHold(endpoint);
|
|
301
|
+
await reporting.thermostatTemperatureSetpointHoldDuration(endpoint);
|
|
302
302
|
},
|
|
303
303
|
},
|
|
304
304
|
{
|
|
@@ -324,12 +324,12 @@ module.exports = [
|
|
|
324
324
|
const endpoint = device.getEndpoint(5);
|
|
325
325
|
const binds = ['genBasic', 'genIdentify', 'genAlarms', 'genTime', 'hvacThermostat'];
|
|
326
326
|
await reporting.bind(endpoint, coordinatorEndpoint, binds);
|
|
327
|
-
await reporting.thermostatTemperature(endpoint
|
|
328
|
-
await reporting.thermostatRunningState(endpoint
|
|
329
|
-
await reporting.thermostatSystemMode(endpoint
|
|
330
|
-
await reporting.thermostatOccupiedHeatingSetpoint(endpoint
|
|
331
|
-
await reporting.thermostatTemperatureSetpointHold(endpoint
|
|
332
|
-
await reporting.thermostatTemperatureSetpointHoldDuration(endpoint
|
|
327
|
+
await reporting.thermostatTemperature(endpoint);
|
|
328
|
+
await reporting.thermostatRunningState(endpoint);
|
|
329
|
+
await reporting.thermostatSystemMode(endpoint);
|
|
330
|
+
await reporting.thermostatOccupiedHeatingSetpoint(endpoint);
|
|
331
|
+
await reporting.thermostatTemperatureSetpointHold(endpoint);
|
|
332
|
+
await reporting.thermostatTemperatureSetpointHoldDuration(endpoint);
|
|
333
333
|
},
|
|
334
334
|
},
|
|
335
335
|
{
|
|
@@ -352,18 +352,18 @@ module.exports = [
|
|
|
352
352
|
'genBasic', 'genIdentify', 'genAlarms', 'genTime', 'hvacThermostat',
|
|
353
353
|
];
|
|
354
354
|
await reporting.bind(heatEndpoint, coordinatorEndpoint, binds);
|
|
355
|
-
await reporting.thermostatTemperature(heatEndpoint
|
|
356
|
-
await reporting.thermostatRunningState(heatEndpoint
|
|
357
|
-
await reporting.thermostatSystemMode(heatEndpoint
|
|
358
|
-
await reporting.thermostatOccupiedHeatingSetpoint(heatEndpoint
|
|
359
|
-
await reporting.thermostatTemperatureSetpointHold(heatEndpoint
|
|
360
|
-
await reporting.thermostatTemperatureSetpointHoldDuration(heatEndpoint
|
|
355
|
+
await reporting.thermostatTemperature(heatEndpoint);
|
|
356
|
+
await reporting.thermostatRunningState(heatEndpoint);
|
|
357
|
+
await reporting.thermostatSystemMode(heatEndpoint);
|
|
358
|
+
await reporting.thermostatOccupiedHeatingSetpoint(heatEndpoint);
|
|
359
|
+
await reporting.thermostatTemperatureSetpointHold(heatEndpoint);
|
|
360
|
+
await reporting.thermostatTemperatureSetpointHoldDuration(heatEndpoint);
|
|
361
361
|
await reporting.bind(waterEndpoint, coordinatorEndpoint, binds);
|
|
362
|
-
await reporting.thermostatRunningState(waterEndpoint
|
|
363
|
-
await reporting.thermostatSystemMode(waterEndpoint
|
|
364
|
-
await reporting.thermostatOccupiedHeatingSetpoint(waterEndpoint
|
|
365
|
-
await reporting.thermostatTemperatureSetpointHold(waterEndpoint
|
|
366
|
-
await reporting.thermostatTemperatureSetpointHoldDuration(waterEndpoint
|
|
362
|
+
await reporting.thermostatRunningState(waterEndpoint);
|
|
363
|
+
await reporting.thermostatSystemMode(waterEndpoint);
|
|
364
|
+
await reporting.thermostatOccupiedHeatingSetpoint(waterEndpoint);
|
|
365
|
+
await reporting.thermostatTemperatureSetpointHold(waterEndpoint);
|
|
366
|
+
await reporting.thermostatTemperatureSetpointHoldDuration(waterEndpoint);
|
|
367
367
|
},
|
|
368
368
|
exposes: [
|
|
369
369
|
exposes.climate().withSetpoint('occupied_heating_setpoint', 5, 32, 0.5).withLocalTemperature()
|
|
@@ -403,18 +403,18 @@ module.exports = [
|
|
|
403
403
|
'genBasic', 'genIdentify', 'genAlarms', 'genTime', 'hvacThermostat',
|
|
404
404
|
];
|
|
405
405
|
await reporting.bind(heatEndpoint, coordinatorEndpoint, binds);
|
|
406
|
-
await reporting.thermostatTemperature(heatEndpoint
|
|
407
|
-
await reporting.thermostatRunningState(heatEndpoint
|
|
408
|
-
await reporting.thermostatSystemMode(heatEndpoint
|
|
409
|
-
await reporting.thermostatOccupiedHeatingSetpoint(heatEndpoint
|
|
410
|
-
await reporting.thermostatTemperatureSetpointHold(heatEndpoint
|
|
411
|
-
await reporting.thermostatTemperatureSetpointHoldDuration(heatEndpoint
|
|
406
|
+
await reporting.thermostatTemperature(heatEndpoint);
|
|
407
|
+
await reporting.thermostatRunningState(heatEndpoint);
|
|
408
|
+
await reporting.thermostatSystemMode(heatEndpoint);
|
|
409
|
+
await reporting.thermostatOccupiedHeatingSetpoint(heatEndpoint);
|
|
410
|
+
await reporting.thermostatTemperatureSetpointHold(heatEndpoint);
|
|
411
|
+
await reporting.thermostatTemperatureSetpointHoldDuration(heatEndpoint);
|
|
412
412
|
await reporting.bind(waterEndpoint, coordinatorEndpoint, binds);
|
|
413
|
-
await reporting.thermostatRunningState(waterEndpoint
|
|
414
|
-
await reporting.thermostatSystemMode(waterEndpoint
|
|
415
|
-
await reporting.thermostatOccupiedHeatingSetpoint(waterEndpoint
|
|
416
|
-
await reporting.thermostatTemperatureSetpointHold(waterEndpoint
|
|
417
|
-
await reporting.thermostatTemperatureSetpointHoldDuration(waterEndpoint
|
|
413
|
+
await reporting.thermostatRunningState(waterEndpoint);
|
|
414
|
+
await reporting.thermostatSystemMode(waterEndpoint);
|
|
415
|
+
await reporting.thermostatOccupiedHeatingSetpoint(waterEndpoint);
|
|
416
|
+
await reporting.thermostatTemperatureSetpointHold(waterEndpoint);
|
|
417
|
+
await reporting.thermostatTemperatureSetpointHoldDuration(waterEndpoint);
|
|
418
418
|
},
|
|
419
419
|
exposes: [
|
|
420
420
|
exposes.climate().withSetpoint('occupied_heating_setpoint', 5, 32, 0.5).withLocalTemperature()
|