zigbee-herdsman-converters 25.53.0 → 25.55.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 (62) hide show
  1. package/CHANGELOG.md +47 -0
  2. package/dist/converters/fromZigbee.d.ts.map +1 -1
  3. package/dist/converters/fromZigbee.js +22 -1
  4. package/dist/converters/fromZigbee.js.map +1 -1
  5. package/dist/devices/frient.d.ts.map +1 -1
  6. package/dist/devices/frient.js +3 -2
  7. package/dist/devices/frient.js.map +1 -1
  8. package/dist/devices/innr.d.ts.map +1 -1
  9. package/dist/devices/innr.js +14 -0
  10. package/dist/devices/innr.js.map +1 -1
  11. package/dist/devices/lixee.d.ts.map +1 -1
  12. package/dist/devices/lixee.js +10 -5
  13. package/dist/devices/lixee.js.map +1 -1
  14. package/dist/devices/lumi.d.ts.map +1 -1
  15. package/dist/devices/lumi.js +0 -1
  16. package/dist/devices/lumi.js.map +1 -1
  17. package/dist/devices/moes.d.ts.map +1 -1
  18. package/dist/devices/moes.js +138 -0
  19. package/dist/devices/moes.js.map +1 -1
  20. package/dist/devices/nous.d.ts.map +1 -1
  21. package/dist/devices/nous.js +59 -0
  22. package/dist/devices/nous.js.map +1 -1
  23. package/dist/devices/philips.d.ts.map +1 -1
  24. package/dist/devices/philips.js +14 -0
  25. package/dist/devices/philips.js.map +1 -1
  26. package/dist/devices/schneider_electric.d.ts.map +1 -1
  27. package/dist/devices/schneider_electric.js +80 -0
  28. package/dist/devices/schneider_electric.js.map +1 -1
  29. package/dist/devices/tuya.d.ts.map +1 -1
  30. package/dist/devices/tuya.js +107 -31
  31. package/dist/devices/tuya.js.map +1 -1
  32. package/dist/devices/weten.js +1 -1
  33. package/dist/devices/weten.js.map +1 -1
  34. package/dist/devices/woox.js +1 -1
  35. package/dist/devices/woox.js.map +1 -1
  36. package/dist/devices/zemismart.d.ts.map +1 -1
  37. package/dist/devices/zemismart.js +34 -0
  38. package/dist/devices/zemismart.js.map +1 -1
  39. package/dist/lib/exposes.js +1 -1
  40. package/dist/lib/exposes.js.map +1 -1
  41. package/dist/lib/generateDefinition.d.ts.map +1 -1
  42. package/dist/lib/generateDefinition.js +0 -3
  43. package/dist/lib/generateDefinition.js.map +1 -1
  44. package/dist/lib/lumi.js +4 -4
  45. package/dist/lib/lumi.js.map +1 -1
  46. package/dist/lib/modernExtend.d.ts +1 -0
  47. package/dist/lib/modernExtend.d.ts.map +1 -1
  48. package/dist/lib/modernExtend.js +53 -0
  49. package/dist/lib/modernExtend.js.map +1 -1
  50. package/dist/lib/ota.d.ts.map +1 -1
  51. package/dist/lib/ota.js +3 -6
  52. package/dist/lib/ota.js.map +1 -1
  53. package/dist/lib/store.d.ts +2 -2
  54. package/dist/lib/store.d.ts.map +1 -1
  55. package/dist/lib/store.js +21 -14
  56. package/dist/lib/store.js.map +1 -1
  57. package/dist/lib/tuya.d.ts +5 -3
  58. package/dist/lib/tuya.d.ts.map +1 -1
  59. package/dist/lib/tuya.js +6 -4
  60. package/dist/lib/tuya.js.map +1 -1
  61. package/dist/models-index.json +1 -1
  62. package/package.json +6 -5
@@ -1229,34 +1229,47 @@ exports.definitions = [
1229
1229
  description: "Ultrasonic water meter",
1230
1230
  extend: [tuya.modernExtend.tuyaBase({ dp: true })],
1231
1231
  exposes: [
1232
- // Water consumption sensor
1233
- e
1234
- .numeric("water_consumed", ea.STATE)
1235
- .withUnit("")
1236
- .withDescription("Total water consumption")
1237
- .withValueMin(0)
1238
- .withValueStep(0.001),
1239
- // Flow rate sensor
1240
- e
1241
- .numeric("flow_rate", ea.STATE)
1242
- .withUnit("m³/h")
1243
- .withDescription("Instantaneous water flow rate")
1244
- .withValueMin(0)
1245
- .withValueStep(0.001),
1246
- // Temperature sensor
1247
- e.temperature(),
1248
- // Voltage monitoring
1249
- e.voltage(),
1232
+ e.numeric("water_consumed", ea.STATE).withUnit("m³").withDescription("Total water consumption").withValueMin(0).withValueStep(0.001),
1233
+ e.numeric("month_consumption", ea.STATE).withUnit("m³").withDescription("Monthly water consumption").withValueMin(0).withValueStep(0.001),
1234
+ e.numeric("daily_consumption", ea.STATE).withUnit("m³").withDescription("Daily water consumption").withValueMin(0).withValueStep(0.001),
1235
+ e.enum("report_period", ea.ALL, ["1h", "2h", "3h", "4h", "6h", "8h", "12h", "24h"]).withDescription("Report period (1h–24h)"),
1236
+ e.text("meter_id", ea.STATE).withDescription("Meter identification SN"),
1237
+ e.numeric("flow_rate", ea.STATE).withUnit("m³/h").withDescription("Instantaneous water flow rate").withValueMin(0).withValueStep(0.001),
1238
+ e.temperature().withDescription("Working temperature"),
1239
+ e.voltage().withDescription("Power supply voltage"),
1240
+ e.enum("fault", ea.STATE, ["empty_pipe", "no_fault"]).withDescription("Fault status"),
1250
1241
  ],
1251
1242
  meta: {
1252
1243
  tuyaDatapoints: [
1253
1244
  [1, "water_consumed", tuya.valueConverter.divideBy1000],
1245
+ [
1246
+ 4,
1247
+ "report_period",
1248
+ tuya.valueConverterBasic.lookup({
1249
+ "1h": 0,
1250
+ "2h": 1,
1251
+ "3h": 2,
1252
+ "4h": 3,
1253
+ "6h": 4,
1254
+ "8h": 5,
1255
+ "12h": 6,
1256
+ "24h": 7,
1257
+ }),
1258
+ ],
1259
+ [16, "meter_id", tuya.valueConverter.raw],
1254
1260
  [21, "flow_rate", tuya.valueConverter.divideBy1000],
1255
1261
  [22, "temperature", tuya.valueConverter.divideBy100],
1256
1262
  [26, "voltage", tuya.valueConverter.divideBy100],
1263
+ [
1264
+ 5,
1265
+ "fault",
1266
+ tuya.valueConverterBasic.lookup({
1267
+ empty_pipe: 6144,
1268
+ no_fault: 0,
1269
+ }),
1270
+ ],
1257
1271
  ],
1258
1272
  },
1259
- // Optional: Add device-specific options
1260
1273
  options: [
1261
1274
  exposes.options.precision("water_consumed"),
1262
1275
  exposes.options.calibration("water_consumed"),
@@ -2490,7 +2503,7 @@ exports.definitions = [
2490
2503
  "_TZ3000_n0lphcok",
2491
2504
  "_TZ3000_r80pzsb9",
2492
2505
  ]),
2493
- ...tuya.fingerprint("TS0001", ["_TZ3000_n0lphcok"]),
2506
+ ...tuya.fingerprint("TS0001", ["_TZ3000_n0lphcok", "_TZ3000_wn65ixz9"]),
2494
2507
  ],
2495
2508
  model: "TS0207_repeater",
2496
2509
  vendor: "Tuya",
@@ -4461,6 +4474,7 @@ exports.definitions = [
4461
4474
  "_TZ3000_g92baclx",
4462
4475
  "_TZ3000_qlai3277",
4463
4476
  "_TZ3000_qaabwu5c",
4477
+ "_TZ3000_qorepo2x",
4464
4478
  "_TZ3000_ikuxinvo",
4465
4479
  "_TZ3000_hzlsaltw",
4466
4480
  "_TZ3000_jsfzkftc",
@@ -6739,7 +6753,7 @@ exports.definitions = [
6739
6753
  },
6740
6754
  },
6741
6755
  {
6742
- fingerprint: tuya.fingerprint("TS0601", ["_TZE204_qyr2m29i", "_TZE204_ltwbm23f"]),
6756
+ fingerprint: tuya.fingerprint("TS0601", ["_TZE204_qyr2m29i", "_TZE204_ltwbm23f", "_TZE284_ltwbm23f"]),
6743
6757
  model: "TRV602Z",
6744
6758
  vendor: "Tuya",
6745
6759
  description: "Thermostatic radiator valve.",
@@ -7192,16 +7206,18 @@ exports.definitions = [
7192
7206
  tuya.whitelabel("Nous", "A7Z", "Smart Zigbee Socket", ["_TZ3210_rwmitwj4"]),
7193
7207
  tuya.whitelabel("Zbeacon", "TS011F_plug_1_1", "Smart plug (with power monitoring)", ["Zbeacon"]),
7194
7208
  tuya.whitelabel("NEO", "NAS-WR01B", "Smart plug (with electrical measurements)", ["_TZ3000_gjnozsaz"]),
7209
+ tuya.whitelabel("GreenSun", "HSC-ZW-EU", "Outdoor Smart Plug (with power monitoring)", ["_TZ3000_cicwjqth"]),
7195
7210
  ],
7196
7211
  ota: true,
7197
7212
  extend: [
7198
7213
  tuya.modernExtend.tuyaOnOff({
7199
7214
  electricalMeasurements: true,
7200
7215
  electricalMeasurementsFzConverter: fzLocal.TS011F_electrical_measurement,
7201
- powerOutageMemory: true,
7202
- indicatorMode: (manufacturerName) => manufacturerName !== "_TZ3000_ww6drja5",
7203
- childLock: true,
7204
- onOffCountdown: true,
7216
+ // Conditional features
7217
+ powerOutageMemory: (manufacturerName) => manufacturerName !== "_TZ3000_cicwjqth",
7218
+ indicatorMode: (manufacturerName) => manufacturerName === "_TZ3000_ww6drja5",
7219
+ childLock: (manufacturerName) => manufacturerName !== "_TZ3000_cicwjqth",
7220
+ onOffCountdown: (manufacturerName) => manufacturerName !== "_TZ3000_cicwjqth",
7205
7221
  }),
7206
7222
  ],
7207
7223
  configure: async (device, coordinatorEndpoint) => {
@@ -7214,14 +7230,14 @@ exports.definitions = [
7214
7230
  await reporting.rmsVoltage(endpoint, { change: 5 });
7215
7231
  await reporting.rmsCurrent(endpoint, { change: 50 });
7216
7232
  }
7217
- if (!["_TZ3000_0zfrhq4i", "_TZ3000_okaz9tjs", "_TZ3000_typdpbpg", "_TZ3000_ww6drja5", "Zbeacon"].includes(device.manufacturerName)) {
7233
+ if (!["_TZ3000_0zfrhq4i", "_TZ3000_okaz9tjs", "_TZ3000_typdpbpg", "_TZ3000_ww6drja5", "Zbeacon", "_TZ3000_cicwjqth"].includes(device.manufacturerName)) {
7218
7234
  // Gives INVALID_DATA_TYPE error for _TZ3000_0zfrhq4i (as well as a few others in issue 20028)
7219
7235
  // https://github.com/Koenkk/zigbee2mqtt/discussions/19680#discussioncomment-7667035
7220
7236
  // Don't do this for `_TZ3000_gjnozsaz` (was previously in the list, but removed after:
7221
7237
  // https://github.com/Koenkk/zigbee2mqtt/issues/28729#issuecomment-3370261334
7222
7238
  await reporting.activePower(endpoint, { change: 10 });
7223
7239
  }
7224
- const acCurrentDivisor = device.manufacturerName === "_TZ3000_typdpbpg" ? 2000 : 1000;
7240
+ const acCurrentDivisor = ["_TZ3000_typdpbpg"].includes(device.manufacturerName) ? 2000 : 1000;
7225
7241
  endpoint.saveClusterAttributeKeyValue("haElectricalMeasurement", {
7226
7242
  acCurrentDivisor,
7227
7243
  acCurrentMultiplier: 1,
@@ -9105,6 +9121,65 @@ exports.definitions = [
9105
9121
  ],
9106
9122
  extend: [tuya.modernExtend.tuyaBase({ timeStart: "2000" })],
9107
9123
  },
9124
+ {
9125
+ fingerprint: tuya.fingerprint("TS0601", ["_TZE284_agcxaw3f"]),
9126
+ model: "BOT-R15W",
9127
+ vendor: "Tuya",
9128
+ description: "Beok wall thermostat (battery powered)",
9129
+ extend: [
9130
+ tuya.modernExtend.tuyaBase({
9131
+ dp: true,
9132
+ respondToMcuVersionResponse: true,
9133
+ timeStart: "1970",
9134
+ }),
9135
+ ],
9136
+ exposes: [
9137
+ e.child_lock(),
9138
+ e
9139
+ .climate()
9140
+ .withSystemMode(["off", "heat"], ea.STATE_SET)
9141
+ .withPreset(["manual", "auto", "mixed", "away"])
9142
+ .withSetpoint("current_heating_setpoint", 5, 35, 0.5, ea.STATE_SET)
9143
+ .withRunningState(["idle", "heat"], ea.STATE)
9144
+ .withLocalTemperature(ea.STATE)
9145
+ .withLocalTemperatureCalibration(-9.9, 9.9, 0.1, ea.STATE_SET),
9146
+ e.binary("frost_protection", ea.STATE_SET, "ON", "OFF").withDescription("Antifreeze function"),
9147
+ e
9148
+ .max_temperature_limit()
9149
+ .withUnit("°C")
9150
+ .withValueMin(15)
9151
+ .withValueMax(90)
9152
+ .withValueStep(0.5)
9153
+ .withPreset("default", 60, "Default value")
9154
+ .withDescription("Maximum upper temperature"),
9155
+ e
9156
+ .numeric("temperature_delta", ea.STATE_SET)
9157
+ .withUnit("°C")
9158
+ .withValueMax(10)
9159
+ .withValueMin(0.5)
9160
+ .withValueStep(0.5)
9161
+ .withPreset("default", 1, "Default value")
9162
+ .withDescription("Delta between local temp and setpoint to trigger heat"),
9163
+ e.binary("factory_reset", ea.STATE_SET, "ON", "OFF").withDescription("Full factory reset, use with caution!"),
9164
+ e.battery(),
9165
+ ],
9166
+ meta: {
9167
+ tuyaDatapoints: [
9168
+ [1, "system_mode", tuya.valueConverterBasic.lookup({ heat: true, off: false })],
9169
+ [2, "current_heating_setpoint", tuya.valueConverter.divideBy10],
9170
+ [3, "local_temperature", tuya.valueConverter.divideBy10],
9171
+ [4, "preset", tuya.valueConverterBasic.lookup({ manual: tuya.enum(0), auto: tuya.enum(1), mixed: tuya.enum(2), away: tuya.enum(3) })],
9172
+ [9, "child_lock", tuya.valueConverter.lockUnlock],
9173
+ [15, "max_temperature_limit", tuya.valueConverter.divideBy10],
9174
+ [19, "local_temperature_calibration", tuya.valueConverter.localTempCalibration3],
9175
+ [101, "running_state", tuya.valueConverterBasic.lookup({ heat: tuya.enum(1), idle: tuya.enum(0) })],
9176
+ [102, "frost_protection", tuya.valueConverter.onOff],
9177
+ [103, "factory_reset", tuya.valueConverter.onOff],
9178
+ [107, "temperature_delta", tuya.valueConverter.divideBy10],
9179
+ [113, "battery", tuya.valueConverter.raw],
9180
+ ],
9181
+ },
9182
+ },
9108
9183
  {
9109
9184
  fingerprint: tuya.fingerprint("TS0601", [
9110
9185
  "_TZE200_viy9ihs7",
@@ -9366,7 +9441,7 @@ exports.definitions = [
9366
9441
  extend: [m.illuminance()],
9367
9442
  },
9368
9443
  {
9369
- fingerprint: tuya.fingerprint("TS0222", ["_TZ3000_8uxxzz4b", "_TZ3000_hy6ncvmw", "_TZ3000_9kbbfeho", "_TZ3000_l6rsaipj"]),
9444
+ fingerprint: tuya.fingerprint("TS0222", ["_TZ3000_8uxxzz4b", "_TZ3000_9kbbfeho", "_TZ3000_l6rsaipj"]),
9370
9445
  model: "TS0222_light",
9371
9446
  vendor: "Tuya",
9372
9447
  description: "Light sensor",
@@ -9389,7 +9464,7 @@ exports.definitions = [
9389
9464
  extend: [m.illuminance()],
9390
9465
  },
9391
9466
  {
9392
- fingerprint: tuya.fingerprint("TS0222", ["_TYZB01_4mdqxxnn", "_TYZB01_m6ec2pgj", "_TZ3000_do6txrcw", "_TZ3000_7kscdesh"]),
9467
+ fingerprint: tuya.fingerprint("TS0222", ["_TYZB01_4mdqxxnn", "_TYZB01_m6ec2pgj", "_TZ3000_do6txrcw", "_TZ3000_7kscdesh", "_TZ3000_hy6ncvmw"]),
9393
9468
  model: "TS0222",
9394
9469
  vendor: "Tuya",
9395
9470
  description: "Light intensity sensor",
@@ -18525,7 +18600,7 @@ exports.definitions = [
18525
18600
  },
18526
18601
  {
18527
18602
  zigbeeModel: ["ZG-223Z"],
18528
- fingerprint: tuya.fingerprint("TS0601", ["_TZE200_jsaqgakf", "_TZE200_u6x1zyv2"]),
18603
+ fingerprint: tuya.fingerprint("TS0601", ["_TZE200_jsaqgakf", "_TZE200_u6x1zyv2", "_TZE200_2pddnnrk"]),
18529
18604
  model: "ZG-223Z",
18530
18605
  vendor: "HOBEIAN",
18531
18606
  description: "Rainwater detection sensor",
@@ -19257,11 +19332,12 @@ exports.definitions = [
19257
19332
  ],
19258
19333
  },
19259
19334
  {
19260
- fingerprint: tuya.fingerprint("TS0601", ["_TZE204_3regm3h6"]),
19335
+ fingerprint: tuya.fingerprint("TS0601", ["_TZE204_3regm3h6", "_TZE204_0hcjew5p"]),
19261
19336
  model: "_TZE204_3regm3h6",
19262
19337
  vendor: "Tuya",
19263
19338
  description: "Smart thermostat for electric radiator with pilot wire",
19264
19339
  extend: [tuya.modernExtend.tuyaBase({ dp: true, timeStart: "1970" })],
19340
+ whiteLabel: [tuya.whitelabel("THALEOS", "TH-P1Z", "Smart thermostat for electric heater", ["_TZE204_0hcjew5p"])],
19265
19341
  exposes: [
19266
19342
  e.binary("state", ea.STATE_SET, "ON", "OFF").withDescription("Turn the heater on or off").withCategory("config"),
19267
19343
  e.child_lock(),