zigbee-herdsman-converters 25.105.0 → 25.107.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.
Files changed (69) hide show
  1. package/CHANGELOG.md +53 -0
  2. package/dist/converters/fromZigbee.d.ts +1 -0
  3. package/dist/converters/fromZigbee.d.ts.map +1 -1
  4. package/dist/converters/fromZigbee.js +16 -5
  5. package/dist/converters/fromZigbee.js.map +1 -1
  6. package/dist/devices/custom_devices_diy.d.ts.map +1 -1
  7. package/dist/devices/custom_devices_diy.js +5 -0
  8. package/dist/devices/custom_devices_diy.js.map +1 -1
  9. package/dist/devices/dresden_elektronik.d.ts.map +1 -1
  10. package/dist/devices/dresden_elektronik.js +48 -2
  11. package/dist/devices/dresden_elektronik.js.map +1 -1
  12. package/dist/devices/engo.d.ts.map +1 -1
  13. package/dist/devices/engo.js +179 -0
  14. package/dist/devices/engo.js.map +1 -1
  15. package/dist/devices/heiman.d.ts.map +1 -1
  16. package/dist/devices/heiman.js +94 -23
  17. package/dist/devices/heiman.js.map +1 -1
  18. package/dist/devices/ledvance.d.ts.map +1 -1
  19. package/dist/devices/ledvance.js +7 -0
  20. package/dist/devices/ledvance.js.map +1 -1
  21. package/dist/devices/ls.d.ts.map +1 -1
  22. package/dist/devices/ls.js +63 -0
  23. package/dist/devices/ls.js.map +1 -1
  24. package/dist/devices/lumi.d.ts.map +1 -1
  25. package/dist/devices/lumi.js +5 -3
  26. package/dist/devices/lumi.js.map +1 -1
  27. package/dist/devices/niko.d.ts.map +1 -1
  28. package/dist/devices/niko.js +144 -33
  29. package/dist/devices/niko.js.map +1 -1
  30. package/dist/devices/philips.d.ts.map +1 -1
  31. package/dist/devices/philips.js +7 -0
  32. package/dist/devices/philips.js.map +1 -1
  33. package/dist/devices/schneider_electric.d.ts.map +1 -1
  34. package/dist/devices/schneider_electric.js +66 -36
  35. package/dist/devices/schneider_electric.js.map +1 -1
  36. package/dist/devices/sinope.js +1 -1
  37. package/dist/devices/sinope.js.map +1 -1
  38. package/dist/devices/siterwell.d.ts.map +1 -1
  39. package/dist/devices/siterwell.js +1 -0
  40. package/dist/devices/siterwell.js.map +1 -1
  41. package/dist/devices/sonoff.d.ts +1 -0
  42. package/dist/devices/sonoff.d.ts.map +1 -1
  43. package/dist/devices/sonoff.js +16 -0
  44. package/dist/devices/sonoff.js.map +1 -1
  45. package/dist/devices/sunricher.d.ts.map +1 -1
  46. package/dist/devices/sunricher.js +13 -0
  47. package/dist/devices/sunricher.js.map +1 -1
  48. package/dist/devices/third_reality.js +4 -4
  49. package/dist/devices/third_reality.js.map +1 -1
  50. package/dist/devices/tuya.d.ts.map +1 -1
  51. package/dist/devices/tuya.js +511 -7
  52. package/dist/devices/tuya.js.map +1 -1
  53. package/dist/devices/yale.d.ts.map +1 -1
  54. package/dist/devices/yale.js +7 -0
  55. package/dist/devices/yale.js.map +1 -1
  56. package/dist/lib/exposes.d.ts.map +1 -1
  57. package/dist/lib/exposes.js +1 -1
  58. package/dist/lib/exposes.js.map +1 -1
  59. package/dist/lib/generateDefinition.js +367 -14
  60. package/dist/lib/generateDefinition.js.map +1 -1
  61. package/dist/lib/modernExtend.d.ts +5 -1
  62. package/dist/lib/modernExtend.d.ts.map +1 -1
  63. package/dist/lib/modernExtend.js +28 -3
  64. package/dist/lib/modernExtend.js.map +1 -1
  65. package/dist/lib/ota.d.ts.map +1 -1
  66. package/dist/lib/ota.js +7 -1
  67. package/dist/lib/ota.js.map +1 -1
  68. package/dist/models-index.json +1 -1
  69. package/package.json +3 -3
@@ -3009,7 +3009,7 @@ exports.definitions = [
3009
3009
  ]),
3010
3010
  tuya.whitelabel("MiBoxer", "E3-ZR", "3 in 1 LED Controller", ["_TZB210_wy1pyu1q", "_TZB210_yatkpuha"]),
3011
3011
  tuya.whitelabel("MiBoxer", "SZ5", "5 in 1 LED Controller", ["_TZB210_w9hcix2r"]),
3012
- tuya.whitelabel("MiBoxer", "FUT037Z+", "RGB led controller", ["_TZB210_417ikxay", "_TZB210_wxazcmsh"]),
3012
+ tuya.whitelabel("MiBoxer", "FUT037Z+", "RGB led controller", ["_TZB210_417ikxay", "_TZB210_wxazcmsh", "_TZB210_u3ri0968"]),
3013
3013
  tuya.whitelabel("MiBoxer", "FUT039Z", "RGB+CCT LED controller", ["_TZ3210_jicmoite", "_TZB210_rs0ufzwg"]),
3014
3014
  tuya.whitelabel("MiBoxer", "FUT066Z", "RGB+CCT LED Downlight", ["_TZ3210_zrvxvydd"]),
3015
3015
  tuya.whitelabel("MiBoxer", "FUT068ZR", "RGB+CCT LED Downlight", ["_TZB210_endmggws"]),
@@ -6043,7 +6043,7 @@ exports.definitions = [
6043
6043
  onOffCountdown: (m) => m !== "_TZ3000_xfxpoxe0",
6044
6044
  indicatorMode: (m) => m !== "_TZ3000_xfxpoxe0",
6045
6045
  powerOutageMemory: true,
6046
- backlightModeOffOn: true,
6046
+ backlightModeOffOn: (m) => m === "_TZ3000_xfxpoxe0",
6047
6047
  }),
6048
6048
  ],
6049
6049
  configure: async (device, coordinatorEndpoint) => {
@@ -9638,10 +9638,9 @@ exports.definitions = [
9638
9638
  extend: [
9639
9639
  m.deviceEndpoints({ endpoints: { l1: 1, l2: 2, l3: 3, l4: 4 } }),
9640
9640
  tuya.modernExtend.tuyaOnOff({
9641
- powerOnBehavior2: (m) => m !== "_TZ3000_r9e2w7dn",
9641
+ powerOnBehavior2: true,
9642
9642
  backlightModeOffOn: true,
9643
9643
  endpoints: ["l1", "l2", "l3", "l4"],
9644
- powerOutageMemory: (m) => m === "_TZ3000_r9e2w7dn",
9645
9644
  switchType: (m) => m === "_TZ3000_r9e2w7dn",
9646
9645
  }),
9647
9646
  ],
@@ -11556,7 +11555,7 @@ exports.definitions = [
11556
11555
  },
11557
11556
  },
11558
11557
  {
11559
- fingerprint: tuya.fingerprint("TS0601", ["_TZE204_qasjif9e", "_TZE204_ztqnh5cg", "_TZE204_iadro9bf", "_TZE284_iadro9bf"]),
11558
+ fingerprint: tuya.fingerprint("TS0601", ["_TZE204_qasjif9e", "_TZE200_qasjif9e", "_TZE204_ztqnh5cg", "_TZE204_iadro9bf", "_TZE284_iadro9bf"]),
11560
11559
  model: "ZY-M100-S_2",
11561
11560
  vendor: "Tuya",
11562
11561
  description: "Mini human breathe sensor",
@@ -14834,6 +14833,20 @@ exports.definitions = [
14834
14833
  ],
14835
14834
  },
14836
14835
  },
14836
+ {
14837
+ fingerprint: tuya.fingerprint("TS0601", ["_TZE204_w2vunxzm"]),
14838
+ model: "_TZE204_w2vunxzm",
14839
+ vendor: "Tuya",
14840
+ description: "Pressure sensor",
14841
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
14842
+ exposes: [e.pressure(), e.temperature()],
14843
+ meta: {
14844
+ tuyaDatapoints: [
14845
+ [101, "pressure", tuya.valueConverter.divideBy10],
14846
+ [8, "temperature", tuya.valueConverter.divideBy100],
14847
+ ],
14848
+ },
14849
+ },
14837
14850
  {
14838
14851
  fingerprint: tuya.fingerprint("TS0601", ["_TZE204_sooucan5", "_TZE204_oqtpvx51"]),
14839
14852
  model: "YXZBRB58",
@@ -18746,11 +18759,12 @@ exports.definitions = [
18746
18759
  },
18747
18760
  },
18748
18761
  {
18749
- fingerprint: tuya.fingerprint("TS0601", ["_TZE284_kyyu8rbj"]),
18762
+ fingerprint: tuya.fingerprint("TS0601", ["_TZE284_kyyu8rbj", "_TZE204_7yyuo8sr"]),
18750
18763
  model: "ME201WZ",
18751
18764
  vendor: "Tuya",
18752
18765
  description: "Water level sensor",
18753
18766
  extend: [tuya.modernExtend.tuyaBase({ dp: true, forceTimeUpdates: true })],
18767
+ whiteLabel: [tuya.whitelabel("Tuya", "872WZ", "Water level sensor", ["_TZE204_7yyuo8sr"])],
18754
18768
  exposes: [
18755
18769
  e.numeric("liquid_level_percent", ea.STATE).withUnit("%").withDescription("Liquid level ratio"),
18756
18770
  e.numeric("liquid_depth", ea.STATE).withUnit("m").withDescription("Liquid Depth"),
@@ -19683,6 +19697,84 @@ exports.definitions = [
19683
19697
  ],
19684
19698
  },
19685
19699
  },
19700
+ {
19701
+ fingerprint: tuya.fingerprint("TS0601", ["_TZE284_cgr0rhza"]),
19702
+ model: "TS0601_thermostat_6",
19703
+ vendor: "Tuya",
19704
+ description: "Thermostatic radiator valve",
19705
+ extend: [tuya.modernExtend.tuyaBase({ dp: true, forceTimeUpdates: true })],
19706
+ exposes: [
19707
+ e.child_lock(),
19708
+ e.battery(),
19709
+ e.open_window(),
19710
+ e.window_detection(),
19711
+ e.battery_low(),
19712
+ e
19713
+ .climate()
19714
+ .withSetpoint("current_heating_setpoint", 5, 35, 0.5, ea.STATE_SET)
19715
+ .withLocalTemperature(ea.STATE)
19716
+ .withPreset(["manual", "schedule", "eco", "comfort", "antifrost", "off"])
19717
+ .withSystemMode(["off", "heat"], ea.STATE)
19718
+ .withLocalTemperatureCalibration(-12, 12, 1, ea.STATE_SET),
19719
+ ...tuya.exposes.scheduleAllDays(ea.STATE_SET, "HH:MM/C HH:MM/C HH:MM/C HH:MM/C HH:MM/C HH:MM/C"),
19720
+ e.comfort_temperature().withValueMin(5).withValueMax(35),
19721
+ e.eco_temperature().withValueMin(5).withValueMax(35),
19722
+ e
19723
+ .binary("scale_protection", ea.STATE_SET, "ON", "OFF")
19724
+ .withDescription("If the heat sink is not fully opened within " +
19725
+ "two weeks or is not used for a long time, the valve will be blocked due to silting up and the heat sink will not be " +
19726
+ "able to be used. To ensure normal use of the heat sink, the controller will automatically open the valve fully every " +
19727
+ 'two weeks. It will run for 30 seconds per time with the screen displaying "Ad", then return to its normal working state ' +
19728
+ "again."),
19729
+ e
19730
+ .binary("frost_protection", ea.STATE_SET, "ON", "OFF")
19731
+ .withDescription("When the room temperature is lower than 5 °C, the valve opens; when the temperature rises to 8 °C, the valve closes."),
19732
+ e.numeric("error", ea.STATE).withDescription('If NTC is damaged, "Er" will be on the TRV display.'),
19733
+ ],
19734
+ meta: {
19735
+ tuyaDatapoints: [
19736
+ [
19737
+ 2,
19738
+ "preset",
19739
+ tuya.valueConverterBasic.lookup({
19740
+ manual: tuya.enum(0),
19741
+ schedule: tuya.enum(1),
19742
+ eco: tuya.enum(2),
19743
+ comfort: tuya.enum(3),
19744
+ antifrost: tuya.enum(4),
19745
+ off: tuya.enum(5),
19746
+ }),
19747
+ ],
19748
+ [4, "current_heating_setpoint", tuya.valueConverter.divideBy10],
19749
+ [5, "local_temperature", tuya.valueConverter.divideBy10],
19750
+ [6, "battery", tuya.valueConverter.raw],
19751
+ [7, "child_lock", tuya.valueConverter.lockUnlock],
19752
+ [8, "window_detection", tuya.valueConverter.onOff],
19753
+ [14, "open_window", tuya.valueConverter.onOff],
19754
+ [24, "comfort_temperature", tuya.valueConverter.divideBy10],
19755
+ [25, "eco_temperature", tuya.valueConverter.divideBy10],
19756
+ [28, "schedule_monday", tuya.valueConverter.thermostatScheduleDayMultiDPWithDayNumber(1)],
19757
+ [29, "schedule_tuesday", tuya.valueConverter.thermostatScheduleDayMultiDPWithDayNumber(2)],
19758
+ [30, "schedule_wednesday", tuya.valueConverter.thermostatScheduleDayMultiDPWithDayNumber(3)],
19759
+ [31, "schedule_thursday", tuya.valueConverter.thermostatScheduleDayMultiDPWithDayNumber(4)],
19760
+ [32, "schedule_friday", tuya.valueConverter.thermostatScheduleDayMultiDPWithDayNumber(5)],
19761
+ [33, "schedule_saturday", tuya.valueConverter.thermostatScheduleDayMultiDPWithDayNumber(6)],
19762
+ [34, "schedule_sunday", tuya.valueConverter.thermostatScheduleDayMultiDPWithDayNumber(7)],
19763
+ [35, "fault_alarm", tuya.valueConverter.errorOrBatteryLow],
19764
+ [36, "frost_protection", tuya.valueConverter.onOff],
19765
+ [39, "scale_protection", tuya.valueConverter.onOff],
19766
+ [47, "local_temperature_calibration", tuya.valueConverter.localTempCalibration2],
19767
+ [
19768
+ 49,
19769
+ "system_mode",
19770
+ tuya.valueConverterBasic.lookup({
19771
+ off: tuya.enum(0),
19772
+ heat: tuya.enum(1),
19773
+ }),
19774
+ ],
19775
+ ],
19776
+ },
19777
+ },
19686
19778
  {
19687
19779
  fingerprint: tuya.fingerprint("TS0601", ["_TZE200_wem3gxyx"]),
19688
19780
  model: "AE-940K",
@@ -22755,7 +22847,7 @@ exports.definitions = [
22755
22847
  e
22756
22848
  .numeric("soil_fertility_warning_setting", ea.STATE_SET)
22757
22849
  .withValueMin(100)
22758
- .withValueMax(1800)
22850
+ .withValueMax(5000)
22759
22851
  .withValueStep(1)
22760
22852
  .withUnit("μS/cm")
22761
22853
  .withDescription("When the soil fertility value is lower than what threshold should a warning be issued"),
@@ -23076,5 +23168,417 @@ exports.definitions = [
23076
23168
  ],
23077
23169
  },
23078
23170
  },
23171
+ {
23172
+ fingerprint: tuya.fingerprint("TS0601", ["_TZE284_vceqncho"]),
23173
+ model: "ZIS-01P",
23174
+ vendor: "Novato",
23175
+ description: "Dual-tech presence sensor (PIR + radar)",
23176
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
23177
+ exposes: [
23178
+ e.occupancy(),
23179
+ e
23180
+ .numeric("presence_distance", ea.STATE_SET)
23181
+ .withUnit("m")
23182
+ .withDescription("Detection distance")
23183
+ .withValueMin(1)
23184
+ .withValueMax(3)
23185
+ .withValueStep(1),
23186
+ e
23187
+ .numeric("presence_sensitivity", ea.STATE_SET)
23188
+ .withDescription("Presence detection sensitivity")
23189
+ .withValueMin(1)
23190
+ .withValueMax(3)
23191
+ .withValueStep(1),
23192
+ e.binary("radar_switch", ea.STATE_SET, "ON", "OFF").withDescription("Enable/disable radar detection"),
23193
+ e.numeric("pir_sensitivity", ea.STATE_SET).withDescription("PIR sensor sensitivity").withValueMin(1).withValueMax(3).withValueStep(1),
23194
+ e
23195
+ .numeric("delay_time", ea.STATE_SET)
23196
+ .withUnit("s")
23197
+ .withDescription("Delay time before reporting no presence")
23198
+ .withValueMin(10)
23199
+ .withValueMax(600),
23200
+ e.binary("led_switch", ea.STATE_SET, "ON", "OFF").withDescription("Enable/disable LED indicator"),
23201
+ e.illuminance().withUnit("lx"),
23202
+ e.battery().withUnit("%"),
23203
+ e.numeric("radar_threshold", ea.STATE_SET).withDescription("Radar detection threshold").withValueMin(5).withValueMax(50).withValueStep(1),
23204
+ ],
23205
+ meta: {
23206
+ tuyaDatapoints: [
23207
+ [1, "occupancy", tuya.valueConverter.trueFalse1],
23208
+ [102, "presence_distance", tuya.valueConverter.raw],
23209
+ [103, "presence_sensitivity", tuya.valueConverter.raw],
23210
+ [104, "radar_switch", tuya.valueConverter.onOff],
23211
+ [105, "pir_sensitivity", tuya.valueConverter.raw],
23212
+ [106, "delay_time", tuya.valueConverter.raw],
23213
+ [107, "led_switch", tuya.valueConverter.onOff],
23214
+ [108, "illuminance", tuya.valueConverter.raw],
23215
+ [109, "battery", tuya.valueConverter.raw],
23216
+ [164, "radar_threshold", tuya.valueConverter.raw],
23217
+ ],
23218
+ },
23219
+ },
23220
+ {
23221
+ fingerprint: tuya.fingerprint("Excellux", ["DHT0001", "DHTA001"]),
23222
+ model: "FEDHT-01",
23223
+ vendor: "Excellux",
23224
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
23225
+ description: "HT sensor with temperature and humidity",
23226
+ exposes: [
23227
+ e
23228
+ .enum("temperature_warning", ea.STATE, ["none", "low", "high"])
23229
+ .withDescription("Temperature warning.low :temperature is lower than v0 and v1.high:temperature is higher than v0 and v1"),
23230
+ e
23231
+ .enum("humidity_warning", ea.STATE, ["none", "low", "high"])
23232
+ .withDescription("Humidity warning.low :humidity is lower than v0 and v1.high:humidity is higher than v0 and v1"),
23233
+ e.numeric("battery", ea.STATE).withValueMin(1).withValueMax(100).withValueStep(1).withUnit("%").withDescription("Battery percentage"),
23234
+ e.temperature(),
23235
+ e.humidity(),
23236
+ e
23237
+ .numeric("sampling_interval", ea.STATE_SET)
23238
+ .withValueMin(5)
23239
+ .withValueMax(1200)
23240
+ .withValueStep(5)
23241
+ .withUnit("S")
23242
+ .withDescription("sampling interval"),
23243
+ e
23244
+ .numeric("temperature_calibration", ea.STATE_SET)
23245
+ .withValueMin(-2)
23246
+ .withValueMax(2)
23247
+ .withValueStep(0.1)
23248
+ .withUnit("°C")
23249
+ .withDescription("Temperature calibration"),
23250
+ e
23251
+ .numeric("temperature_v0_set", ea.STATE_SET)
23252
+ .withValueMin(-40)
23253
+ .withValueMax(85)
23254
+ .withValueStep(0.1)
23255
+ .withUnit("°C")
23256
+ .withDescription("Temperature v0 threshold setting"),
23257
+ e
23258
+ .numeric("temperature_v1_set", ea.STATE_SET)
23259
+ .withValueMin(-40)
23260
+ .withValueMax(85)
23261
+ .withValueStep(0.1)
23262
+ .withUnit("°C")
23263
+ .withDescription("Temperature v1 threshold setting"),
23264
+ e
23265
+ .numeric("humidity_calibration", ea.STATE_SET)
23266
+ .withValueMin(-10)
23267
+ .withValueMax(10)
23268
+ .withValueStep(1)
23269
+ .withUnit("%")
23270
+ .withDescription("Humidity calibration"),
23271
+ e
23272
+ .numeric("humidity_v0_set", ea.STATE_SET)
23273
+ .withValueMin(0)
23274
+ .withValueMax(100)
23275
+ .withValueStep(1)
23276
+ .withUnit("%")
23277
+ .withDescription("Humidity v0 threshold setting"),
23278
+ e
23279
+ .numeric("humidity_v1_set", ea.STATE_SET)
23280
+ .withValueMin(0)
23281
+ .withValueMax(100)
23282
+ .withValueStep(1)
23283
+ .withUnit("%")
23284
+ .withDescription("Humidity v1 threshold setting"),
23285
+ ],
23286
+ meta: {
23287
+ tuyaDatapoints: [
23288
+ [4, "battery", tuya.valueConverter.raw],
23289
+ [5, "temperature", tuya.valueConverter.divideBy100],
23290
+ [101, "sampling_interval", tuya.valueConverter.raw],
23291
+ [114, "temperature_calibration", tuya.valueConverter.divideBy10],
23292
+ [115, "temperature_v0_set", tuya.valueConverter.divideBy100],
23293
+ [116, "temperature_v1_set", tuya.valueConverter.divideBy100],
23294
+ [117, "temperature_warning", tuya.valueConverterBasic.lookup({ none: tuya.enum(0), low: tuya.enum(1), high: tuya.enum(2) })],
23295
+ [118, "humidity", tuya.valueConverter.divideBy100],
23296
+ [119, "humidity_calibration", tuya.valueConverter.divideBy100],
23297
+ [120, "humidity_v0_set", tuya.valueConverter.divideBy100],
23298
+ [121, "humidity_v1_set", tuya.valueConverter.divideBy100],
23299
+ [122, "humidity_warning", tuya.valueConverterBasic.lookup({ none: tuya.enum(0), low: tuya.enum(1), high: tuya.enum(2) })],
23300
+ ],
23301
+ },
23302
+ },
23303
+ {
23304
+ fingerprint: tuya.fingerprint("Excellux", ["NTCHT01"]),
23305
+ model: "NTCHT-01",
23306
+ vendor: "Excellux",
23307
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
23308
+ description: "Probe Temperature and ht(humidity and temperature) Sensor",
23309
+ exposes: [
23310
+ e
23311
+ .enum("probe_temperature_warning", ea.STATE, ["none", "low", "high"])
23312
+ .withDescription("Probe temperature sensor warning.low :temperature is lower than v0 and v1.high:temperature is higher than v0 and v1"),
23313
+ e
23314
+ .enum("temperature_warning", ea.STATE, ["none", "low", "high"])
23315
+ .withDescription("Temperature warning.low :temperature is lower than v0 and v1.high:temperature is higher than v0 and v1"),
23316
+ e
23317
+ .enum("humidity_warning", ea.STATE, ["none", "low", "high"])
23318
+ .withDescription("Humidity warning.low :humidity is lower than v0 and v1.high:humidity is higher than v0 and v1"),
23319
+ e.numeric("battery", ea.STATE).withValueMin(1).withValueMax(100).withValueStep(1).withUnit("%").withDescription("Battery percentage"),
23320
+ e
23321
+ .numeric("probe_temperature", ea.STATE)
23322
+ .withValueMin(-40)
23323
+ .withValueMax(120)
23324
+ .withValueStep(1)
23325
+ .withUnit("°C")
23326
+ .withDescription("Probe temperature sensor"),
23327
+ e.temperature(),
23328
+ e.humidity(),
23329
+ e
23330
+ .numeric("sampling_interval", ea.STATE_SET)
23331
+ .withValueMin(5)
23332
+ .withValueMax(1200)
23333
+ .withValueStep(5)
23334
+ .withUnit("S")
23335
+ .withDescription("sampling interval"),
23336
+ e
23337
+ .numeric("probe_temperature_calibration", ea.STATE_SET)
23338
+ .withValueMin(-2)
23339
+ .withValueMax(2)
23340
+ .withValueStep(0.1)
23341
+ .withUnit("°C")
23342
+ .withDescription("Probe temperature sensor calibration"),
23343
+ e
23344
+ .numeric("probe_temperature_v0_set", ea.STATE_SET)
23345
+ .withValueMin(-40)
23346
+ .withValueMax(125)
23347
+ .withValueStep(1)
23348
+ .withUnit("°C")
23349
+ .withDescription("Probe temperature sensor v0 threshold setting"),
23350
+ e
23351
+ .numeric("probe_temperature_v1_set", ea.STATE_SET)
23352
+ .withValueMin(-40)
23353
+ .withValueMax(125)
23354
+ .withValueStep(1)
23355
+ .withUnit("°C")
23356
+ .withDescription("Probe temperature sensor v1 threshold setting"),
23357
+ e
23358
+ .numeric("temperature_calibration", ea.STATE_SET)
23359
+ .withValueMin(-2)
23360
+ .withValueMax(2)
23361
+ .withValueStep(0.1)
23362
+ .withUnit("°C")
23363
+ .withDescription("Temperature calibration"),
23364
+ e
23365
+ .numeric("temperature_v0_set", ea.STATE_SET)
23366
+ .withValueMin(-40)
23367
+ .withValueMax(85)
23368
+ .withValueStep(1)
23369
+ .withUnit("°C")
23370
+ .withDescription("Temperature v0 threshold setting"),
23371
+ e
23372
+ .numeric("temperature_v1_set", ea.STATE_SET)
23373
+ .withValueMin(-40)
23374
+ .withValueMax(85)
23375
+ .withValueStep(1)
23376
+ .withUnit("°C")
23377
+ .withDescription("Temperature v1 threshold setting"),
23378
+ e
23379
+ .numeric("humidity_calibration", ea.STATE_SET)
23380
+ .withValueMin(-10)
23381
+ .withValueMax(10)
23382
+ .withValueStep(1)
23383
+ .withUnit("%")
23384
+ .withDescription("Humidity calibration"),
23385
+ e
23386
+ .numeric("humidity_v0_set", ea.STATE_SET)
23387
+ .withValueMin(0)
23388
+ .withValueMax(100)
23389
+ .withValueStep(1)
23390
+ .withUnit("%")
23391
+ .withDescription("Humidity v0 threshold setting"),
23392
+ e
23393
+ .numeric("humidity_v1_set", ea.STATE_SET)
23394
+ .withValueMin(0)
23395
+ .withValueMax(100)
23396
+ .withValueStep(1)
23397
+ .withUnit("%")
23398
+ .withDescription("Humidity v1 threshold setting"),
23399
+ ],
23400
+ meta: {
23401
+ tuyaDatapoints: [
23402
+ [1, "probe_temperature", tuya.valueConverter.divideBy10],
23403
+ [4, "battery", tuya.valueConverter.raw],
23404
+ [5, "temperature", tuya.valueConverter.divideBy100],
23405
+ [101, "sampling_interval", tuya.valueConverter.raw],
23406
+ [108, "probe_temperature_calibration", tuya.valueConverter.divideBy10],
23407
+ [109, "probe_temperature_v0_set", tuya.valueConverter.divideBy10],
23408
+ [110, "probe_temperature_v1_set", tuya.valueConverter.divideBy10],
23409
+ [112, "probe_temperature_warning", tuya.valueConverterBasic.lookup({ none: tuya.enum(0), low: tuya.enum(1), high: tuya.enum(2) })],
23410
+ [114, "temperature_calibration", tuya.valueConverter.divideBy100],
23411
+ [115, "temperature_v0_set", tuya.valueConverter.divideBy100],
23412
+ [116, "temperature_v1_set", tuya.valueConverter.divideBy100],
23413
+ [117, "temperature_warning", tuya.valueConverterBasic.lookup({ none: tuya.enum(0), low: tuya.enum(1), high: tuya.enum(2) })],
23414
+ [118, "humidity", tuya.valueConverter.divideBy100],
23415
+ [119, "humidity_calibration", tuya.valueConverter.divideBy100],
23416
+ [120, "humidity_v0_set", tuya.valueConverter.divideBy100],
23417
+ [121, "humidity_v1_set", tuya.valueConverter.divideBy100],
23418
+ [122, "humidity_warning", tuya.valueConverterBasic.lookup({ none: tuya.enum(0), low: tuya.enum(1), high: tuya.enum(2) })],
23419
+ ],
23420
+ },
23421
+ },
23422
+ {
23423
+ fingerprint: tuya.fingerprint("Excellux", ["PIRIV01"]),
23424
+ model: "PIRIV-01",
23425
+ vendor: "Excellux",
23426
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
23427
+ description: "PIR motion sensor, vibration sensor, and light sensor",
23428
+ exposes: [
23429
+ e.enum("presence_state", ea.STATE, ["true", "false"]).withDescription("Presence state,true:motion detected,false:no motion"),
23430
+ e.binary("vibration", ea.STATE, true, false).withDescription("Vibration state,true:vibration detected,false:no vibration"),
23431
+ e.enum("illumiance_warning", ea.STATE, ["none", "low", "high"]).withDescription("Illuminance warning level,low:low,high:high,none"),
23432
+ e.numeric("battery", ea.STATE).withValueMin(1).withValueMax(100).withValueStep(1).withUnit("%").withDescription("Battery percentage"),
23433
+ e.numeric("illumiance", ea.STATE).withValueMin(0).withValueMax(10000).withValueStep(1).withUnit("lux").withDescription("Illuminance"),
23434
+ e
23435
+ .numeric("sampling_interval", ea.STATE_SET)
23436
+ .withValueMin(5)
23437
+ .withValueMax(1200)
23438
+ .withValueStep(5)
23439
+ .withUnit("S")
23440
+ .withDescription("sampling illumiance interval"),
23441
+ e
23442
+ .numeric("vibration_sensitivity", ea.STATE_SET)
23443
+ .withValueMin(0)
23444
+ .withValueMax(50)
23445
+ .withValueStep(1)
23446
+ .withUnit("times")
23447
+ .withDescription("Vibration sensitivity"),
23448
+ e
23449
+ .numeric("illumiance_v0", ea.STATE_SET)
23450
+ .withValueMin(0)
23451
+ .withValueMax(10000)
23452
+ .withValueStep(1)
23453
+ .withUnit("lux")
23454
+ .withDescription("Illuminance v0 threshold setting"),
23455
+ e
23456
+ .numeric("illumiance_v1", ea.STATE_SET)
23457
+ .withValueMin(0)
23458
+ .withValueMax(10000)
23459
+ .withValueStep(1)
23460
+ .withUnit("lux")
23461
+ .withDescription("Illuminance v1 threshold setting"),
23462
+ e
23463
+ .numeric("illumiance_calibration", ea.STATE_SET)
23464
+ .withValueMin(-1000)
23465
+ .withValueMax(1000)
23466
+ .withValueStep(1)
23467
+ .withUnit("lux")
23468
+ .withDescription("Illuminance calibration"),
23469
+ ],
23470
+ meta: {
23471
+ tuyaDatapoints: [
23472
+ [4, "battery", tuya.valueConverter.raw],
23473
+ [1, "presence_state", tuya.valueConverterBasic.lookup({ true: tuya.enum(1), false: tuya.enum(0) })],
23474
+ [3, "vibration", tuya.valueConverter.raw],
23475
+ [6, "vibration_sensitivity", tuya.valueConverter.raw],
23476
+ [20, "illumiance", tuya.valueConverter.raw],
23477
+ [101, "sampling_interval", tuya.valueConverter.raw],
23478
+ [104, "illumiance_v0", tuya.valueConverter.raw],
23479
+ [105, "illumiance_v1", tuya.valueConverter.raw],
23480
+ [106, "illumiance_calibration", tuya.valueConverter.raw],
23481
+ [107, "illumiance_warning", tuya.valueConverterBasic.lookup({ none: tuya.enum(0), low: tuya.enum(1), high: tuya.enum(2) })],
23482
+ ],
23483
+ },
23484
+ },
23485
+ {
23486
+ fingerprint: tuya.fingerprint("Excellux", ["CAT0001"]),
23487
+ model: "Contact-01",
23488
+ vendor: "Excellux",
23489
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
23490
+ description: "contact sensor and vibration sensor",
23491
+ exposes: [
23492
+ e.contact(),
23493
+ e.binary("vibration", ea.STATE, true, false).withDescription("Vibration state,true:vibration detected,false:no vibration"),
23494
+ e.numeric("battery", ea.STATE).withValueMin(1).withValueMax(100).withValueStep(1).withUnit("%").withDescription("Battery percentage"),
23495
+ e
23496
+ .numeric("vibration_sensitivity", ea.STATE_SET)
23497
+ .withValueMin(0)
23498
+ .withValueMax(50)
23499
+ .withValueStep(1)
23500
+ .withUnit("times")
23501
+ .withDescription("Vibration sensitivity"),
23502
+ ],
23503
+ meta: {
23504
+ tuyaDatapoints: [
23505
+ [4, "battery", tuya.valueConverter.raw],
23506
+ [7, "contact", tuya.valueConverter.trueFalseInvert],
23507
+ [3, "vibration", tuya.valueConverter.raw],
23508
+ [6, "vibration_sensitivity", tuya.valueConverter.raw],
23509
+ ],
23510
+ },
23511
+ },
23512
+ {
23513
+ fingerprint: tuya.fingerprint("Excellux", ["DSS0010"]),
23514
+ model: "Scene-Switc",
23515
+ vendor: "Excellux",
23516
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
23517
+ description: "Scene switch",
23518
+ fromZigbee: [
23519
+ fz.command_step,
23520
+ fz.command_on,
23521
+ fz.command_off,
23522
+ fz.command_move_to_color_temp,
23523
+ fz.command_move_to_level,
23524
+ fz.tuya_multi_action,
23525
+ fz.tuya_operation_mode,
23526
+ ],
23527
+ exposes: [
23528
+ e.numeric("battery", ea.STATE).withValueMin(1).withValueMax(100).withValueStep(1).withUnit("%").withDescription("Battery percentage"),
23529
+ e.action([
23530
+ "single",
23531
+ "double",
23532
+ "hold",
23533
+ "brightness_move_to_level",
23534
+ "color_temperature_move",
23535
+ "brightness_step_up",
23536
+ "brightness_step_down",
23537
+ "on",
23538
+ "off",
23539
+ ]),
23540
+ e
23541
+ .enum("operation_mode", ea.ALL, ["command", "event"])
23542
+ .withDescription('Operation mode: "command" - for group control, "event" - for clicks'),
23543
+ ],
23544
+ meta: {
23545
+ tuyaDatapoints: [[4, "battery", tuya.valueConverter.raw]],
23546
+ },
23547
+ configure: async (device, coordinatorEndpoint) => {
23548
+ const endpoint = device.getEndpoint(1);
23549
+ await tuya.configureMagicPacket(device, coordinatorEndpoint);
23550
+ await endpoint.write("genOnOff", { tuyaOperationMode: 1 });
23551
+ await endpoint.read("genOnOff", ["tuyaOperationMode"]);
23552
+ await endpoint.read("genPowerCfg", ["batteryVoltage", "batteryPercentageRemaining"]);
23553
+ await reporting.bind(endpoint, coordinatorEndpoint, ["genPowerCfg"]);
23554
+ await reporting.bind(endpoint, coordinatorEndpoint, ["genOnOff"]);
23555
+ await reporting.batteryPercentageRemaining(endpoint);
23556
+ },
23557
+ },
23558
+ {
23559
+ fingerprint: tuya.fingerprint("Excellux", ["VABRATE"]),
23560
+ model: "VABRATE-01",
23561
+ vendor: "Excellux",
23562
+ extend: [tuya.modernExtend.tuyaBase({ dp: true })],
23563
+ description: "Vibration sensor",
23564
+ exposes: [
23565
+ e.binary("vibration", ea.STATE, true, false).withDescription("Vibration state"),
23566
+ e.battery(),
23567
+ e
23568
+ .numeric("vibration_sensitivity", ea.STATE_SET)
23569
+ .withValueMin(0)
23570
+ .withValueMax(50)
23571
+ .withValueStep(1)
23572
+ .withUnit("times")
23573
+ .withDescription("Vibration sensitivity"),
23574
+ ],
23575
+ meta: {
23576
+ tuyaDatapoints: [
23577
+ [4, "battery", tuya.valueConverter.raw],
23578
+ [3, "vibration", tuya.valueConverter.raw],
23579
+ [6, "vibration_sensitivity", tuya.valueConverter.raw],
23580
+ ],
23581
+ },
23582
+ },
23079
23583
  ];
23080
23584
  //# sourceMappingURL=tuya.js.map