zigbee-herdsman-converters 20.37.0 → 20.38.0

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/devices/tuya.js CHANGED
@@ -4423,6 +4423,7 @@ const definitions = [
4423
4423
  '_TZE200_7yoranx2' /* model: 'TV01-ZB', vendor: 'Moes' */,
4424
4424
  '_TZE200_kds0pmmv',
4425
4425
  '_TZE200_py4cm3he' /* model: 'TV06-Zigbee', vendor: 'Tuya' */,
4426
+ '_TZE200_wsbfwodu' /* model: 'HA-08 THERMO', vendor: 'AlecoAir' */,
4426
4427
  ]),
4427
4428
  model: 'TV02-Zigbee',
4428
4429
  vendor: 'Tuya',
@@ -4435,6 +4436,7 @@ const definitions = [
4435
4436
  { vendor: 'Unknown/id3.pl', model: 'GTZ08' },
4436
4437
  tuya.whitelabel('Moes', 'ZTRV-ZX-TV01-MS', 'Thermostat radiator valve', ['_TZE200_7yoranx2']),
4437
4438
  tuya.whitelabel('Moes', 'TV01-ZB', 'Thermostat radiator valve', ['_TZE200_e9ba97vf']),
4439
+ tuya.whitelabel('AlecoAir', 'HA-08_THERMO', 'Thermostat radiator valve', ['_TZE200_wsbfwodu']),
4438
4440
  ],
4439
4441
  ota: ota.zigbeeOTA,
4440
4442
  fromZigbee: [tuya.fz.datapoints],
@@ -5601,6 +5603,131 @@ const definitions = [
5601
5603
  ]),
5602
5604
  ],
5603
5605
  },
5606
+ {
5607
+ fingerprint: tuya.fingerprint('TS0601', ['_TZE204_m64smti7']),
5608
+ model: 'RMDZB-1PNL63',
5609
+ vendor: 'TNCE',
5610
+ description: 'Zigbee DIN single phase RCBO energy meter',
5611
+ fromZigbee: [tuya.fz.datapoints],
5612
+ toZigbee: [tuya.tz.datapoints],
5613
+ configure: tuya.configureMagicPacket,
5614
+ exposes: [
5615
+ tuya.exposes.switch(),
5616
+ e.energy(),
5617
+ e
5618
+ .enum('fault', ea.STATE, [
5619
+ 'clear',
5620
+ 'short_circuit_alarm',
5621
+ 'surge_alarm',
5622
+ 'overload_alarm',
5623
+ 'leakagecurr_alarm',
5624
+ 'temp_dif_fault',
5625
+ 'fire_alarm',
5626
+ 'high_power_alarm',
5627
+ 'self_test_alarm',
5628
+ 'ov_cr',
5629
+ 'unbalance_alarm',
5630
+ 'ov_vol',
5631
+ 'undervoltage_alarm',
5632
+ 'miss_phase_alarm',
5633
+ 'outage_alarm',
5634
+ 'magnetism_alarm',
5635
+ 'credit_alarm',
5636
+ 'no_balance_alarm',
5637
+ ])
5638
+ .withDescription('Fault status of the device (clear = nothing)'),
5639
+ tuya.exposes.voltageWithPhase('a'),
5640
+ tuya.exposes.powerWithPhase('a'),
5641
+ tuya.exposes.currentWithPhase('a'),
5642
+ e.temperature(),
5643
+ e
5644
+ .binary('over_current_breaker', ea.STATE_SET, 'ON', 'OFF')
5645
+ .withDescription('OFF - alarm only, ON - relay will turn off when threshold reached'),
5646
+ e
5647
+ .numeric('over_current_threshold', ea.STATE_SET)
5648
+ .withUnit('A')
5649
+ .withDescription('Setup the value on the device')
5650
+ .withValueMin(1)
5651
+ .withValueMax(63),
5652
+ e
5653
+ .binary('over_voltage_breaker', ea.STATE_SET, 'ON', 'OFF')
5654
+ .withDescription('OFF - alarm only, ON - relay will turn off when threshold reached'),
5655
+ e
5656
+ .numeric('over_voltage_threshold', ea.STATE_SET)
5657
+ .withUnit('V')
5658
+ .withDescription('Setup value on the device')
5659
+ .withValueMin(250)
5660
+ .withValueMax(300),
5661
+ e
5662
+ .binary('under_voltage_breaker', ea.STATE_SET, 'ON', 'OFF')
5663
+ .withDescription('OFF - alarm only, ON - relay will turn off when threshold reached'),
5664
+ e
5665
+ .numeric('under_voltage_threshold', ea.STATE_SET)
5666
+ .withUnit('V')
5667
+ .withDescription('Setup value on the device')
5668
+ .withValueMin(150)
5669
+ .withValueMax(200),
5670
+ e
5671
+ .binary('high_temperature_breaker', ea.STATE_SET, 'ON', 'OFF')
5672
+ .withDescription('OFF - alarm only, ON - relay will turn off when threshold reached'),
5673
+ e
5674
+ .numeric('high_temperature_threshold', ea.STATE_SET)
5675
+ .withUnit('°C')
5676
+ .withDescription('Setup value on the device')
5677
+ .withValueMin(40)
5678
+ .withValueMax(100),
5679
+ ],
5680
+ meta: {
5681
+ tuyaDatapoints: [
5682
+ [1, 'energy', tuya.valueConverter.divideBy100],
5683
+ [6, null, tuya.valueConverter.phaseVariant2WithPhase('a')],
5684
+ [
5685
+ 9,
5686
+ 'fault',
5687
+ tuya.valueConverterBasic.lookup({
5688
+ clear: 0,
5689
+ short_circuit_alarm: 1,
5690
+ surge_alarm: 2,
5691
+ overload_alarm: 4,
5692
+ leakagecurr_alarm: 8,
5693
+ temp_dif_fault: 16,
5694
+ fire_alarm: 32,
5695
+ high_power_alarm: 64,
5696
+ self_test_alarm: 128,
5697
+ ov_cr: 256,
5698
+ unbalance_alarm: 512,
5699
+ ov_vol: 1024,
5700
+ undervoltage_alarm: 2048,
5701
+ miss_phase_alarm: 4096,
5702
+ outage_alarm: 8192,
5703
+ magnetism_alarm: 16384,
5704
+ credit_alarm: 32768,
5705
+ no_balance_alarm: 65536,
5706
+ }),
5707
+ ],
5708
+ [16, 'state', tuya.valueConverter.onOff],
5709
+ [17, null, tuya.valueConverter.threshold_2],
5710
+ [17, 'high_temperature_threshold', tuya.valueConverter.threshold_2],
5711
+ [17, 'high_temperature_breaker', tuya.valueConverter.threshold_2],
5712
+ [18, null, tuya.valueConverter.threshold_3],
5713
+ [18, 'over_current_threshold', tuya.valueConverter.threshold_3],
5714
+ [18, 'over_current_breaker', tuya.valueConverter.threshold_3],
5715
+ [18, 'over_voltage_threshold', tuya.valueConverter.threshold_3],
5716
+ [18, 'over_voltage_breaker', tuya.valueConverter.threshold_3],
5717
+ [18, 'under_voltage_threshold', tuya.valueConverter.threshold_3],
5718
+ [18, 'under_voltage_breaker', tuya.valueConverter.threshold_3],
5719
+ [103, 'temperature', tuya.valueConverter.divideBy10],
5720
+ // Ignored for now; we don't know what the values mean
5721
+ [11, null, null], // Switch prepayment
5722
+ [12, null, null], // Energy reset
5723
+ [13, null, null], // Balance enertgy
5724
+ [14, null, null], // Charge energy
5725
+ [105, null, null], // Countdown
5726
+ [106, null, null], // Cycle time
5727
+ ],
5728
+ },
5729
+ whiteLabel: [{ vendor: 'TNCE', model: 'RMDZB-1PNL63' }],
5730
+ },
5604
5731
  {
5605
5732
  fingerprint: tuya.fingerprint('TS0601', ['_TZE204_wbhaespm']),
5606
5733
  model: 'STB3L-125-ZJ',
@@ -6869,7 +6996,7 @@ const definitions = [
6869
6996
  ],
6870
6997
  },
6871
6998
  {
6872
- fingerprint: [{ modelID: 'TS011F', manufacturerName: '_TZ3000_qeuvnohg' }],
6999
+ fingerprint: tuya.fingerprint('TS011F', ['_TZ3000_qeuvnohg', '_TZ3000_6l1pjfqe']),
6873
7000
  model: 'TS011F_din_smart_relay_polling',
6874
7001
  description: 'Din smart relay (with power monitoring via polling)',
6875
7002
  vendor: 'Tuya',
@@ -8400,10 +8527,7 @@ const definitions = [
8400
8527
  },
8401
8528
  },
8402
8529
  {
8403
- fingerprint: [
8404
- { modelID: 'TS110E', manufacturerName: '_TZ3210_wdexaypg' },
8405
- { modelID: 'TS110E', manufacturerName: '_TZ3210_3mpwqzuu' },
8406
- ],
8530
+ fingerprint: [{ modelID: 'TS110E', manufacturerName: '_TZ3210_wdexaypg' }],
8407
8531
  model: 'TS110E_2gang_1',
8408
8532
  vendor: 'Tuya',
8409
8533
  description: '2 channel dimmer',
@@ -8425,7 +8549,7 @@ const definitions = [
8425
8549
  ],
8426
8550
  },
8427
8551
  {
8428
- fingerprint: tuya.fingerprint('TS110E', ['_TZ3210_pagajpog', '_TZ3210_4ubylghk', '_TZ3210_vfwhhldz']),
8552
+ fingerprint: tuya.fingerprint('TS110E', ['_TZ3210_pagajpog', '_TZ3210_4ubylghk', '_TZ3210_vfwhhldz', '_TZ3210_3mpwqzuu']),
8429
8553
  model: 'TS110E_2gang_2',
8430
8554
  vendor: 'Tuya',
8431
8555
  description: '2 channel dimmer',
@@ -10281,36 +10405,49 @@ const definitions = [
10281
10405
  toZigbee: [tuya.tz.datapoints],
10282
10406
  configure: tuya.configureMagicPacket,
10283
10407
  exposes: [
10284
- e.enum('state', ea.STATE, ['none', 'presence', 'move']).withDescription('Presence state sensor'),
10285
- e.presence().withDescription('Occupancy'),
10286
- e.numeric('distance', ea.STATE).withDescription('Target distance'),
10287
- e.illuminance_lux().withDescription('Illuminance sensor'),
10288
- e.numeric('move_sensitivity', ea.STATE_SET).withValueMin(1).withValueMax(10).withValueStep(1).withDescription('Motion sensitivity'),
10289
- e.numeric('presence_sensitivity', ea.STATE_SET).withValueMin(1).withValueMax(10).withValueStep(1).withDescription('Presence sensitivity'),
10408
+ e.enum('state', ea.STATE, ['none', 'presence', 'move']).withDescription('Presence state'),
10409
+ e.occupancy(),
10410
+ e.numeric('distance', ea.STATE).withUnit('m').withDescription('Target distance'),
10411
+ e.illuminance_lux(),
10290
10412
  e
10291
- .numeric('radar_range', ea.STATE_SET)
10413
+ .numeric('motion_sensitivity', ea.STATE_SET)
10414
+ .withValueMin(1)
10415
+ .withValueMax(10)
10416
+ .withValueStep(1)
10417
+ .withCategory('config')
10418
+ .withDescription('Motion sensitivity'),
10419
+ e
10420
+ .numeric('occupancy_sensitivity', ea.STATE_SET)
10421
+ .withValueMin(1)
10422
+ .withValueMax(10)
10423
+ .withValueStep(1)
10424
+ .withCategory('config')
10425
+ .withDescription('Occupancy sensitivity'),
10426
+ e
10427
+ .numeric('max_range', ea.STATE_SET)
10292
10428
  .withValueMin(1.5)
10293
10429
  .withValueMax(5.5)
10294
10430
  .withValueStep(1)
10295
10431
  .withUnit('m')
10432
+ .withCategory('config')
10296
10433
  .withDescription('Maximum range'),
10297
10434
  e
10298
- .numeric('presence_timeout', ea.STATE_SET)
10435
+ .numeric('occupancy_timeout', ea.STATE_SET)
10299
10436
  .withValueMin(1)
10300
10437
  .withValueMax(1500)
10301
10438
  .withValueStep(1)
10302
10439
  .withUnit('s')
10303
- .withDescription('Fade time'),
10440
+ .withDescription('Occupancy timeout'),
10304
10441
  ],
10305
10442
  meta: {
10306
10443
  multiEndpoint: true,
10307
10444
  tuyaDatapoints: [
10308
- [112, 'presence', tuya.valueConverter.trueFalse1],
10309
- [106, 'move_sensitivity', tuya.valueConverter.divideBy10FromOnly],
10310
- [111, 'presence_sensitivity', tuya.valueConverter.divideBy10FromOnly],
10311
- [107, 'radar_range', tuya.valueConverter.divideBy100],
10445
+ [112, 'occupancy', tuya.valueConverter.trueFalse1],
10446
+ [106, 'motion_sensitivity', tuya.valueConverter.raw],
10447
+ [111, 'occupancy_sensitivity', tuya.valueConverter.raw],
10448
+ [107, 'max_range', tuya.valueConverter.divideBy100],
10312
10449
  [109, 'distance', tuya.valueConverter.divideBy100],
10313
- [110, 'presence_timeout', tuya.valueConverter.raw],
10450
+ [110, 'occupancy_timeout', tuya.valueConverter.raw],
10314
10451
  [104, 'illuminance_lux', tuya.valueConverter.raw],
10315
10452
  [102, 'illuminance_treshold_max', tuya.valueConverter.raw],
10316
10453
  [103, 'illuminance_treshold_min', tuya.valueConverter.raw],
@@ -12371,6 +12508,123 @@ const definitions = [
12371
12508
  ],
12372
12509
  },
12373
12510
  },
12511
+ {
12512
+ fingerprint: tuya.fingerprint('TS0601', ['_TZE200_pbo8cj0z']),
12513
+ model: 'TS0601_GTZ10',
12514
+ vendor: 'Tuya',
12515
+ description: 'Thermostat radiator valve',
12516
+ fromZigbee: [tuya.fz.datapoints],
12517
+ toZigbee: [tuya.tz.datapoints],
12518
+ onEvent: tuya.onEventSetLocalTime,
12519
+ configure: tuya.configureMagicPacket,
12520
+ ota: ota.zigbeeOTA,
12521
+ exposes: [
12522
+ e.battery(),
12523
+ e.child_lock(),
12524
+ e.window_detection(),
12525
+ e.window_open(),
12526
+ e.open_window_temperature().withValueMin(5).withValueMax(30),
12527
+ e.max_temperature().withValueMin(15).withValueMax(45),
12528
+ e.min_temperature().withValueMin(5).withValueMax(15),
12529
+ e
12530
+ .climate()
12531
+ .withPreset(['manual', 'auto', 'holiday', 'comfort', 'eco', 'off'])
12532
+ .withSetpoint('current_heating_setpoint', 5, 40, 0.5, ea.STATE_SET)
12533
+ .withLocalTemperature(ea.STATE)
12534
+ .withLocalTemperatureCalibration(-9, 9, 0.5, ea.STATE_SET)
12535
+ .withSystemMode(['off', 'heat', 'auto'], ea.STATE_SET, 'Only for Homeassistant')
12536
+ .withRunningState(['idle', 'heat'], ea.STATE),
12537
+ ...tuya.exposes.scheduleAllDays(ea.STATE_SET, 'HH:MM/C HH:MM/C HH:MM/C HH:MM/C'),
12538
+ tuya.exposes
12539
+ .errorStatus()
12540
+ .withDescription('Error status. Possible codes: E1 - builtin sensor error, E2 - external sensor error, E3 - valve not installed, E4 - motor error.'),
12541
+ e
12542
+ .binary('frost_protection', ea.STATE_SET, 'ON', 'OFF')
12543
+ .withDescription('When the room temperature is lower than 5 °C, the valve opens; when the temperature rises to 8 °C, the valve closes.'),
12544
+ e.binary('boost_heating', ea.STATE_SET, 'ON', 'OFF').withDescription('Boost Heating: the device will enter the boost heating mode.'),
12545
+ e
12546
+ .numeric('boost_timeset_countdown', ea.STATE_SET)
12547
+ .withUnit('m')
12548
+ .withDescription('Setting ' +
12549
+ 'minimum 0 - maximum 90 minutes boost time. The boost function is activated. The remaining ' +
12550
+ 'time for the function will be counted down in minutes ( 90 to 0 ).')
12551
+ .withValueMin(0)
12552
+ .withValueMax(90),
12553
+ e.binary('switch_type', ea.STATE_SET, 'ON', 'OFF').withDescription('Enables/disables valve switch'),
12554
+ e.numeric('position', ea.STATE).withUnit('%').withValueMin(0).withValueMax(100).withDescription('Position'), // set actually not working
12555
+ e.enum('screen_orientation', ea.STATE_SET, ['up', 'right', 'down', 'left']).withDescription('Screen orientation'),
12556
+ ],
12557
+ meta: {
12558
+ tuyaDatapoints: [
12559
+ [2, null, tuya.valueConverter.thermostatGtz10SystemModeAndPreset(null)],
12560
+ [2, 'preset', tuya.valueConverter.thermostatGtz10SystemModeAndPreset('preset')],
12561
+ [2, 'system_mode', tuya.valueConverter.thermostatGtz10SystemModeAndPreset('system_mode')],
12562
+ [4, 'current_heating_setpoint', tuya.valueConverter.divideBy10],
12563
+ [5, 'local_temperature', tuya.valueConverter.divideBy10],
12564
+ [6, 'battery', tuya.valueConverter.raw],
12565
+ [7, 'child_lock', tuya.valueConverter.lockUnlock],
12566
+ [9, 'max_temperature', tuya.valueConverter.divideBy10],
12567
+ [10, 'min_temperature', tuya.valueConverter.divideBy10],
12568
+ [14, 'window_detection', tuya.valueConverter.onOff],
12569
+ [15, 'window_open', tuya.valueConverter.onOff],
12570
+ [16, 'open_window_temperature', tuya.valueConverter.divideBy10],
12571
+ [28, 'schedule_monday', tuya.valueConverter.thermostatScheduleDayMultiDPWithDayNumber(1)],
12572
+ [29, 'schedule_tuesday', tuya.valueConverter.thermostatScheduleDayMultiDPWithDayNumber(2)],
12573
+ [30, 'schedule_wednesday', tuya.valueConverter.thermostatScheduleDayMultiDPWithDayNumber(3)],
12574
+ [31, 'schedule_thursday', tuya.valueConverter.thermostatScheduleDayMultiDPWithDayNumber(4)],
12575
+ [32, 'schedule_friday', tuya.valueConverter.thermostatScheduleDayMultiDPWithDayNumber(5)],
12576
+ [33, 'schedule_saturday', tuya.valueConverter.thermostatScheduleDayMultiDPWithDayNumber(6)],
12577
+ [34, 'schedule_sunday', tuya.valueConverter.thermostatScheduleDayMultiDPWithDayNumber(7)],
12578
+ [35, 'error_status', tuya.valueConverter.raw],
12579
+ [36, 'frost_protection', tuya.valueConverter.onOff],
12580
+ [37, 'boost_heating', tuya.valueConverter.onOff],
12581
+ [38, 'boost_timeset_countdown', tuya.valueConverter.raw],
12582
+ [47, 'local_temperature_calibration', tuya.valueConverter.localTempCalibration1],
12583
+ [
12584
+ 49, //valve_state
12585
+ 'running_state',
12586
+ tuya.valueConverterBasic.lookup({
12587
+ idle: tuya.enum(0),
12588
+ heat: tuya.enum(1),
12589
+ closing: tuya.enum(2),
12590
+ opening: tuya.enum(3),
12591
+ }),
12592
+ ],
12593
+ [113, 'switch_type', tuya.valueConverter.onOff], // valve_switch
12594
+ [115, 'position', tuya.valueConverter.raw], // valve_opening
12595
+ [
12596
+ 119,
12597
+ 'screen_orientation',
12598
+ tuya.valueConverterBasic.lookup({
12599
+ up: tuya.enum(0),
12600
+ down: tuya.enum(1),
12601
+ left: tuya.enum(2),
12602
+ right: tuya.enum(3),
12603
+ }),
12604
+ ],
12605
+ // Exposed but not used DPs
12606
+ [1, 'preheat', tuya.valueConverter.raw],
12607
+ [3, 'working_status', tuya.valueConverter.raw],
12608
+ [8, 'temperature_scale', tuya.valueConverter.raw],
12609
+ [11, 'max_temperature_f', tuya.valueConverter.divideBy10],
12610
+ [12, 'min_temperature_f', tuya.valueConverter.divideBy10],
12611
+ [17, 'open_window_time', tuya.valueConverter.raw],
12612
+ [18, 'backlight', tuya.valueConverter.raw],
12613
+ [39, 'switch_scale', tuya.valueConverter.raw],
12614
+ [40, 'local_temperature_f', tuya.valueConverter.divideBy10],
12615
+ [41, 'current_heating_setpoint_f', tuya.valueConverter.divideBy10],
12616
+ [46, 'open_window_temperature_f', tuya.valueConverter.divideBy10],
12617
+ [48, 'valve_testing', tuya.valueConverter.raw],
12618
+ [112, 'local_temperature_calibration_f', tuya.valueConverter.localTempCalibration1],
12619
+ [114, 'valve_control_type', tuya.valueConverterBasic.lookup({ PID: 0, ONOFF: 1 })],
12620
+ [116, 'frost_temperature', tuya.valueConverter.raw],
12621
+ [117, 'frost_temperature_f', tuya.valueConverter.raw],
12622
+ [118, 'auto_time', tuya.valueConverter.raw],
12623
+ [120, 'multi_control_link', tuya.valueConverter.raw],
12624
+ [121, 'holiday_time', tuya.valueConverter.raw],
12625
+ ],
12626
+ },
12627
+ },
12374
12628
  ];
12375
12629
  exports.default = definitions;
12376
12630
  module.exports = definitions;