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.
@@ -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'],
@@ -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'}],
@@ -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'),
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "zigbee-herdsman-converters",
3
- "version": "14.0.311",
3
+ "version": "14.0.313",
4
4
  "lockfileVersion": 1,
5
5
  "requires": true,
6
6
  "dependencies": {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "zigbee-herdsman-converters",
3
- "version": "14.0.311",
3
+ "version": "14.0.313",
4
4
  "description": "Collection of device converters to be used with zigbee-herdsman",
5
5
  "main": "index.js",
6
6
  "files": [