zigbee-herdsman-converters 14.0.311 → 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 +151 -0
- package/converters/toZigbee.js +69 -0
- package/devices/lidl.js +11 -0
- package/devices/neo.js +6 -0
- package/devices/rgb_genie.js +8 -0
- package/devices/tuya.js +45 -2
- package/lib/exposes.js +2 -0
- package/npm-shrinkwrap.json +1 -1
- package/package.json +1 -1
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'],
|
package/converters/toZigbee.js
CHANGED
|
@@ -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/lidl.js
CHANGED
|
@@ -155,6 +155,17 @@ module.exports = [
|
|
|
155
155
|
device.getEndpoint(1).saveClusterAttributeKeyValue('lightingColorCtrl', {colorCapabilities: 29});
|
|
156
156
|
},
|
|
157
157
|
},
|
|
158
|
+
{
|
|
159
|
+
fingerprint: [{modelID: 'TS0505B', manufacturerName: '_TZ3000_qd7hej8u'}],
|
|
160
|
+
model: 'HG07834C',
|
|
161
|
+
vendor: 'Lidl',
|
|
162
|
+
description: 'Livarno Lux E27 bulb RGB',
|
|
163
|
+
...extend.light_onoff_brightness_colortemp_color({disableColorTempStartup: true, colorTempRange: [153, 500]}),
|
|
164
|
+
meta: {applyRedFix: true, enhancedHue: false},
|
|
165
|
+
configure: async (device, coordinatorEndpoint, logger) => {
|
|
166
|
+
device.getEndpoint(1).saveClusterAttributeKeyValue('lightingColorCtrl', {colorCapabilities: 29});
|
|
167
|
+
},
|
|
168
|
+
},
|
|
158
169
|
{
|
|
159
170
|
fingerprint: [{modelID: 'TS0502A', manufacturerName: '_TZ3000_el5kt5im'}],
|
|
160
171
|
model: 'HG06492A',
|
package/devices/neo.js
CHANGED
|
@@ -27,6 +27,12 @@ module.exports = [
|
|
|
27
27
|
exposes.enum('volume', ea.STATE_SET, ['low', 'medium', 'high']),
|
|
28
28
|
exposes.enum('power_type', ea.STATE, ['battery_full', 'battery_high', 'battery_medium', 'battery_low', 'usb']),
|
|
29
29
|
],
|
|
30
|
+
onEvent: tuya.onEventSetLocalTime,
|
|
31
|
+
configure: async (device, coordinatorEndpoint, logger) => {
|
|
32
|
+
const endpoint = device.getEndpoint(1);
|
|
33
|
+
await endpoint.command('manuSpecificTuya', 'resetDevice', {});
|
|
34
|
+
await endpoint.command('manuSpecificTuya', 'unknown0x10', {'data': [0x00, 0x02]});
|
|
35
|
+
},
|
|
30
36
|
},
|
|
31
37
|
{
|
|
32
38
|
fingerprint: [{modelID: 'TS0601', manufacturerName: '_TZE200_7hfcudw5'}],
|
package/devices/rgb_genie.js
CHANGED
|
@@ -1,9 +1,17 @@
|
|
|
1
1
|
const exposes = require('../lib/exposes');
|
|
2
2
|
const fz = {...require('../converters/fromZigbee'), legacy: require('../lib/legacy').fromZigbee};
|
|
3
3
|
const reporting = require('../lib/reporting');
|
|
4
|
+
const extend = require('../lib/extend');
|
|
4
5
|
const e = exposes.presets;
|
|
5
6
|
|
|
6
7
|
module.exports = [
|
|
8
|
+
{
|
|
9
|
+
zigbeeModel: ['RGBgenie ZB-1026'],
|
|
10
|
+
model: 'ZB-1026',
|
|
11
|
+
vendor: 'RGB Genie',
|
|
12
|
+
description: 'Zigbee LED dimmer controller',
|
|
13
|
+
extend: extend.light_onoff_brightness(),
|
|
14
|
+
},
|
|
7
15
|
{
|
|
8
16
|
zigbeeModel: ['RGBgenie ZB-5001'],
|
|
9
17
|
model: 'ZB-5001',
|
package/devices/tuya.js
CHANGED
|
@@ -634,7 +634,8 @@ module.exports = [
|
|
|
634
634
|
},
|
|
635
635
|
},
|
|
636
636
|
{
|
|
637
|
-
fingerprint: [{modelID: 'TS0003', manufacturerName: '_TZ3000_vsasbzkf'}
|
|
637
|
+
fingerprint: [{modelID: 'TS0003', manufacturerName: '_TZ3000_vsasbzkf'},
|
|
638
|
+
{modelID: 'TS0003', manufacturerName: '_TZ3000_odzoiovu'}],
|
|
638
639
|
model: 'TS0003_switch_module',
|
|
639
640
|
vendor: 'TuYa',
|
|
640
641
|
description: '3 gang switch module',
|
|
@@ -785,6 +786,48 @@ module.exports = [
|
|
|
785
786
|
e.auto_lock(), e.away_mode(), e.away_preset_days(), e.boost_time(), e.comfort_temperature(), e.eco_temperature(), e.force(),
|
|
786
787
|
e.max_temperature(), e.min_temperature(), e.week(), e.away_preset_temperature()],
|
|
787
788
|
},
|
|
789
|
+
{
|
|
790
|
+
fingerprint: [
|
|
791
|
+
{/* model: 'TV02-Zigbee', vendor: 'TuYa', */modelID: 'TS0601', manufacturerName: '_TZE200_hue3yfsn'}],
|
|
792
|
+
model: 'TV02-Zigbee',
|
|
793
|
+
vendor: 'TuYa',
|
|
794
|
+
description: 'Thermostat radiator valve',
|
|
795
|
+
ota: ota.zigbeeOTA,
|
|
796
|
+
fromZigbee: [fz.ignore_basic_report, fz.ignore_tuya_set_time, fz.tvtwo_thermostat],
|
|
797
|
+
toZigbee: [tz.tvtwo_thermostat],
|
|
798
|
+
onEvent: tuya.onEventSetLocalTime,
|
|
799
|
+
exposes: [
|
|
800
|
+
e.battery_low(), e.window_detection(), e.child_lock(), e.comfort_temperature(), e.eco_temperature(),
|
|
801
|
+
e.open_window_temperature(), e.holiday_temperature(),
|
|
802
|
+
exposes.climate().withPreset(['auto', 'manual', 'holiday']).withLocalTemperatureCalibration(ea.STATE_SET)
|
|
803
|
+
.withLocalTemperature(ea.STATE).withSetpoint('current_heating_setpoint', 0, 30, 0.5, ea.STATE_SET),
|
|
804
|
+
exposes.numeric('boost_timeset_countdown', ea.STATE_SET).withUnit('second').withDescription('Setting '+
|
|
805
|
+
'minimum 0 - maximum 465 seconds boost time. The boost (♨) function is activated. The remaining '+
|
|
806
|
+
'time for the function will be counted down in seconds ( 465 to 0 ).'),
|
|
807
|
+
exposes.binary('frost_protection', ea.STATE_SET, 'ON', 'OFF').withDescription('When Anti-Freezing function'+
|
|
808
|
+
' is activated, the temperature in the house is kept at 8 °C ‚the device display "AF".press the '+
|
|
809
|
+
'pair button to cancel.'),
|
|
810
|
+
exposes.binary('heating_stop', ea.STATE_SET, 'ON', 'OFF').withDescription('Battery life can be prolonged'+
|
|
811
|
+
' by switching the heating off. To achieve this, the valve is closed fully. To activate the '+
|
|
812
|
+
'heating stop, the device display "HS" ‚press the pair button to cancel.'),
|
|
813
|
+
exposes.binary('online', ea.STATE_SET, 'ON', 'OFF').withDescription('Is the device online'),
|
|
814
|
+
exposes.numeric('holiday_mode_date', ea.STATE_SET).withDescription('The holiday mode( ⛱ ) will '+
|
|
815
|
+
'automatically start at the set time starting point and run the holiday temperature.'),
|
|
816
|
+
exposes.composite('programming', 'programming').withDescription('Auto Mode ⏱ - In this mode,'+
|
|
817
|
+
' the device executes a preset week programming temperature time and temperature. ')
|
|
818
|
+
.withFeature(exposes.text('schedule_monday', ea.STATE))
|
|
819
|
+
.withFeature(exposes.text('schedule_tuesday', ea.STATE))
|
|
820
|
+
.withFeature(exposes.text('schedule_wednesday', ea.STATE))
|
|
821
|
+
.withFeature(exposes.text('schedule_thursday', ea.STATE))
|
|
822
|
+
.withFeature(exposes.text('schedule_friday', ea.STATE))
|
|
823
|
+
.withFeature(exposes.text('schedule_saturday', ea.STATE))
|
|
824
|
+
.withFeature(exposes.text('schedule_sunday', ea.STATE)),
|
|
825
|
+
exposes.numeric('error_status', ea.STATE).withDescription('Error status'),
|
|
826
|
+
// exposes.numeric('week_schedule', ea.STATE).withDescription('week_schedule'),
|
|
827
|
+
// exposes.numeric('working_day', ea.STATE).withDescription('working_day'),
|
|
828
|
+
// e.week(),
|
|
829
|
+
],
|
|
830
|
+
},
|
|
788
831
|
{
|
|
789
832
|
fingerprint: [
|
|
790
833
|
{modelID: 'v90ladg\u0000', manufacturerName: '_TYST11_wv90ladg'},
|
|
@@ -999,7 +1042,7 @@ module.exports = [
|
|
|
999
1042
|
},
|
|
1000
1043
|
{
|
|
1001
1044
|
zigbeeModel: ['5p1vj8r'],
|
|
1002
|
-
fingerprint: [{modelID: 'TS0601', manufacturerName: '_TZE200_t5p1vj8r'}],
|
|
1045
|
+
fingerprint: [{modelID: 'TS0601', manufacturerName: '_TZE200_t5p1vj8r'}, {modelID: 'TS0601', manufacturerName: '_TZE200_uebojraa'}],
|
|
1003
1046
|
model: 'TS0601_smoke',
|
|
1004
1047
|
vendor: 'TuYa',
|
|
1005
1048
|
description: 'Smoke sensor',
|
package/lib/exposes.js
CHANGED
|
@@ -530,6 +530,7 @@ module.exports = {
|
|
|
530
530
|
formaldehyd: () => new Numeric('formaldehyd', access.STATE).withDescription('The measured formaldehyd value'),
|
|
531
531
|
gas: () => new Binary('gas', access.STATE, true, false).withDescription('Indicates whether the device detected gas'),
|
|
532
532
|
hcho: () => new Numeric('hcho', access.STATE).withUnit('mg/m³').withDescription('Measured Hcho value'),
|
|
533
|
+
holiday_temperature: () => new Numeric('holiday_temperature', access.STATE_SET).withUnit('°C').withDescription('Holiday temperature'),
|
|
533
534
|
humidity: () => new Numeric('humidity', access.STATE).withUnit('%').withDescription('Measured relative humidity'),
|
|
534
535
|
illuminance: () => new Numeric('illuminance', access.STATE).withDescription('Raw measured illuminance'),
|
|
535
536
|
illuminance_lux: () => new Numeric('illuminance_lux', access.STATE).withUnit('lx').withDescription('Measured illuminance in lux'),
|
|
@@ -551,6 +552,7 @@ module.exports = {
|
|
|
551
552
|
max_temperature_limit: () => new Numeric('max_temperature_limit', access.STATE_SET).withUnit('°C').withDescription('Maximum temperature limit'),
|
|
552
553
|
min_temperature: () => new Numeric('min_temperature', access.STATE_SET).withUnit('°C').withDescription('Minimum temperature'),
|
|
553
554
|
occupancy: () => new Binary('occupancy', access.STATE, true, false).withDescription('Indicates whether the device detected occupancy'),
|
|
555
|
+
open_window_temperature: () => new Numeric('open_window_temperature', access.STATE_SET).withUnit('°C').withDescription('Open window temperature'),
|
|
554
556
|
pm10: () => new Numeric('pm10', access.STATE).withUnit('µg/m³').withDescription('Measured PM10 (particulate matter) concentration'),
|
|
555
557
|
pm25: () => new Numeric('pm25', access.STATE).withUnit('µg/m³').withDescription('Measured PM2.5 (particulate matter) concentration'),
|
|
556
558
|
position: () => new Numeric('position', access.STATE).withUnit('%').withDescription('Position'),
|
package/npm-shrinkwrap.json
CHANGED