zigbee-herdsman-converters 23.39.0 → 23.40.1

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 (73) hide show
  1. package/CHANGELOG.md +28 -0
  2. package/dist/converters/fromZigbee.js +11 -11
  3. package/dist/converters/fromZigbee.js.map +1 -1
  4. package/dist/converters/toZigbee.js +48 -48
  5. package/dist/converters/toZigbee.js.map +1 -1
  6. package/dist/devices/bitron.js +2 -2
  7. package/dist/devices/bitron.js.map +1 -1
  8. package/dist/devices/bosch.js +1 -1
  9. package/dist/devices/bosch.js.map +1 -1
  10. package/dist/devices/gmmts.js +6 -6
  11. package/dist/devices/gmmts.js.map +1 -1
  12. package/dist/devices/iluminize.d.ts.map +1 -1
  13. package/dist/devices/iluminize.js +0 -23
  14. package/dist/devices/iluminize.js.map +1 -1
  15. package/dist/devices/index.d.ts.map +1 -1
  16. package/dist/devices/index.js +2 -0
  17. package/dist/devices/index.js.map +1 -1
  18. package/dist/devices/innr.d.ts.map +1 -1
  19. package/dist/devices/innr.js +2 -0
  20. package/dist/devices/innr.js.map +1 -1
  21. package/dist/devices/inovelli.js +13 -13
  22. package/dist/devices/inovelli.js.map +1 -1
  23. package/dist/devices/kmpcil.js +2 -2
  24. package/dist/devices/kmpcil.js.map +1 -1
  25. package/dist/devices/lixee.js +3 -3
  26. package/dist/devices/lixee.js.map +1 -1
  27. package/dist/devices/perenio.js +4 -4
  28. package/dist/devices/perenio.js.map +1 -1
  29. package/dist/devices/philips.js +1 -1
  30. package/dist/devices/philips.js.map +1 -1
  31. package/dist/devices/schneider_electric.js +1 -1
  32. package/dist/devices/schneider_electric.js.map +1 -1
  33. package/dist/devices/siglis.js +1 -1
  34. package/dist/devices/siglis.js.map +1 -1
  35. package/dist/devices/slacky_diy.js +3 -3
  36. package/dist/devices/slacky_diy.js.map +1 -1
  37. package/dist/devices/stello.d.ts +3 -0
  38. package/dist/devices/stello.d.ts.map +1 -0
  39. package/dist/devices/stello.js +106 -0
  40. package/dist/devices/stello.js.map +1 -0
  41. package/dist/devices/sunricher.d.ts.map +1 -1
  42. package/dist/devices/sunricher.js +71 -17
  43. package/dist/devices/sunricher.js.map +1 -1
  44. package/dist/devices/superled.js +1 -1
  45. package/dist/devices/superled.js.map +1 -1
  46. package/dist/devices/tuya.d.ts.map +1 -1
  47. package/dist/devices/tuya.js +9 -12
  48. package/dist/devices/tuya.js.map +1 -1
  49. package/dist/devices/ubisys.js +4 -4
  50. package/dist/devices/ubisys.js.map +1 -1
  51. package/dist/devices/xyzroe.js +3 -3
  52. package/dist/devices/xyzroe.js.map +1 -1
  53. package/dist/lib/color.js +16 -16
  54. package/dist/lib/color.js.map +1 -1
  55. package/dist/lib/ikea.js +1 -1
  56. package/dist/lib/ikea.js.map +1 -1
  57. package/dist/lib/legacy.js +5 -5
  58. package/dist/lib/legacy.js.map +1 -1
  59. package/dist/lib/light.js +4 -4
  60. package/dist/lib/light.js.map +1 -1
  61. package/dist/lib/lumi.d.ts.map +1 -1
  62. package/dist/lib/lumi.js +14 -16
  63. package/dist/lib/lumi.js.map +1 -1
  64. package/dist/lib/modernExtend.js +5 -5
  65. package/dist/lib/modernExtend.js.map +1 -1
  66. package/dist/lib/philips.js +6 -6
  67. package/dist/lib/philips.js.map +1 -1
  68. package/dist/lib/tuya.js +4 -4
  69. package/dist/lib/tuya.js.map +1 -1
  70. package/dist/lib/utils.js +5 -5
  71. package/dist/lib/utils.js.map +1 -1
  72. package/dist/models-index.json +1 -1
  73. package/package.json +1 -1
package/CHANGELOG.md CHANGED
@@ -1,5 +1,33 @@
1
1
  # Changelog
2
2
 
3
+ ## [23.40.1](https://github.com/Koenkk/zigbee-herdsman-converters/compare/v23.40.0...v23.40.1) (2025-05-08)
4
+
5
+
6
+ ### Bug Fixes
7
+
8
+ * **detect:** Detect `_TZ3000_lmlsduws` as Aubess TMZ02 https://github.com/Koenkk/zigbee2mqtt/issues/27321 ([8ceca2c](https://github.com/Koenkk/zigbee-herdsman-converters/commit/8ceca2c6e07399494dcf5502845ca20abd65b17d))
9
+ * **detect:** Detect `_TZE200_gkfbdvyx` as Tuya ZY-M100-24GV3 https://github.com/zigbee2mqtt/hassio-zigbee2mqtt/issues/767 ([2c66d2b](https://github.com/Koenkk/zigbee-herdsman-converters/commit/2c66d2ba503fba624946e3c5a75b720785d8c7b1))
10
+ * **detect:** Detect `_TZE284_dqolcpcp` as Tuya TS0601_switch_12 https://github.com/Koenkk/zigbee2mqtt/discussions/27354 ([da540f0](https://github.com/Koenkk/zigbee-herdsman-converters/commit/da540f0285a6d4fe6ec09e6a77024db3dcf534b1))
11
+ * **detect:** Detect `1745430A7` as Philips 1743430P7 ([#9300](https://github.com/Koenkk/zigbee-herdsman-converters/issues/9300)) ([768a116](https://github.com/Koenkk/zigbee-herdsman-converters/commit/768a116a59896e895be8de6cdfa6dbd6f7b811d6))
12
+ * Expose Tilt for Schneider/Merten MEG5113-0300/MEG5165-0000 ([#9303](https://github.com/Koenkk/zigbee-herdsman-converters/issues/9303)) ([63a0a10](https://github.com/Koenkk/zigbee-herdsman-converters/commit/63a0a10c63e190e676f74114a909755e4b57bd5e))
13
+ * **ignore:** ZG2189S-RGBW and CCT ([#9302](https://github.com/Koenkk/zigbee-herdsman-converters/issues/9302)) ([d7b5fbb](https://github.com/Koenkk/zigbee-herdsman-converters/commit/d7b5fbb9427e76e4671ea70df04d24ed345fdda6))
14
+
15
+ ## [23.40.0](https://github.com/Koenkk/zigbee-herdsman-converters/compare/v23.39.0...v23.40.0) (2025-05-07)
16
+
17
+
18
+ ### Features
19
+
20
+ * **add:** STLO-34 ([#9296](https://github.com/Koenkk/zigbee-herdsman-converters/issues/9296)) ([9465284](https://github.com/Koenkk/zigbee-herdsman-converters/commit/94652841016d90af50bc30c8fef0b4b1a7a04378))
21
+
22
+
23
+ ### Bug Fixes
24
+
25
+ * Fix various null checks ([#9284](https://github.com/Koenkk/zigbee-herdsman-converters/issues/9284)) ([a7f2316](https://github.com/Koenkk/zigbee-herdsman-converters/commit/a7f23169d662b478d8cdab9e9ae530051b8b98c2))
26
+ * HK-SL-DIM-AU-R-A support externalSwitchType ([#9294](https://github.com/Koenkk/zigbee-herdsman-converters/issues/9294)) ([650784a](https://github.com/Koenkk/zigbee-herdsman-converters/commit/650784af9120252abad971d6511618efbe1139db))
27
+ * Innr FL 142 C and FL 122 C: support OTA ([#9298](https://github.com/Koenkk/zigbee-herdsman-converters/issues/9298)) ([72e0d84](https://github.com/Koenkk/zigbee-herdsman-converters/commit/72e0d8495ca378d085ad0cb49c73f8a94a815937))
28
+ * Superled 70012: disable effect ([#9295](https://github.com/Koenkk/zigbee-herdsman-converters/issues/9295)) ([cff5677](https://github.com/Koenkk/zigbee-herdsman-converters/commit/cff567703e6745f7eba100e6faf8c3acbf5f592d))
29
+ * Update Sunricher 4 channel remotes ([#9293](https://github.com/Koenkk/zigbee-herdsman-converters/issues/9293)) ([080c12d](https://github.com/Koenkk/zigbee-herdsman-converters/commit/080c12d060183c2a50dc850506e354f3bbb2ab78))
30
+
3
31
  ## [23.39.0](https://github.com/Koenkk/zigbee-herdsman-converters/compare/v23.38.0...v23.39.0) (2025-05-06)
4
32
 
5
33
 
@@ -558,7 +558,7 @@ exports.occupancy_with_timeout = {
558
558
  }
559
559
  // The occupancy sensor only sends a message when motion detected.
560
560
  // Therefore we need to publish the no_motion detected by ourselves.
561
- const timeout = options && options.occupancy_timeout !== undefined ? Number(options.occupancy_timeout) : 90;
561
+ const timeout = options?.occupancy_timeout != null ? Number(options.occupancy_timeout) : 90;
562
562
  // Stop existing timers because motion is detected and set a new one.
563
563
  clearTimeout(globalStore.getValue(msg.endpoint, "occupancy_timer", null));
564
564
  if (timeout !== 0) {
@@ -643,7 +643,7 @@ exports.level_config = {
643
643
  // when 1, CurrentLevel can be changed while the device is off.
644
644
  // bit 1: CoupleColorTempToLevel - when 1, changes to level also change color temperature.
645
645
  // (What this means is not defined, but it's most likely to be "dim to warm".)
646
- if (msg.data.options !== undefined && msg.data.options !== undefined) {
646
+ if (msg.data.options !== undefined) {
647
647
  result[level_config].execute_if_off = !!(Number(msg.data.options) & 1);
648
648
  }
649
649
  if (Object.keys(result[level_config]).length > 0) {
@@ -996,7 +996,7 @@ exports.ias_vibration_alarm_1_with_timeout = {
996
996
  options: [exposes.options.vibration_timeout()],
997
997
  convert: (model, msg, publish, options, meta) => {
998
998
  const zoneStatus = msg.data.zonestatus;
999
- const timeout = options && options.vibration_timeout !== undefined ? Number(options.vibration_timeout) : 90;
999
+ const timeout = options?.vibration_timeout != null ? Number(options.vibration_timeout) : 90;
1000
1000
  // Stop existing timers because vibration is detected and set a new one.
1001
1001
  // biome-ignore lint/complexity/noForEach: ignored using `--suppress`
1002
1002
  globalStore.getValue(msg.endpoint, "timers", []).forEach((t) => clearTimeout(t));
@@ -1186,7 +1186,7 @@ exports.ias_occupancy_alarm_1_with_timeout = {
1186
1186
  options: [exposes.options.occupancy_timeout()],
1187
1187
  convert: (model, msg, publish, options, meta) => {
1188
1188
  const zoneStatus = msg.data.zonestatus;
1189
- const timeout = options && options.occupancy_timeout !== undefined ? Number(options.occupancy_timeout) : 90;
1189
+ const timeout = options?.occupancy_timeout != null ? Number(options.occupancy_timeout) : 90;
1190
1190
  clearTimeout(globalStore.getValue(msg.endpoint, "timer"));
1191
1191
  if (timeout !== 0) {
1192
1192
  const timer = setTimeout(() => publish({ occupancy: false }), timeout * 1000);
@@ -1362,8 +1362,8 @@ exports.command_move = {
1362
1362
  (0, utils_1.addActionGroup)(payload, msg, model);
1363
1363
  if (options.simulated_brightness) {
1364
1364
  const opts = options.simulated_brightness;
1365
- const deltaOpts = typeof opts === "object" && opts.delta !== undefined ? opts.delta : 20;
1366
- const intervalOpts = typeof opts === "object" && opts.interval !== undefined ? opts.interval : 200;
1365
+ const deltaOpts = typeof opts === "object" && opts.delta != null ? opts.delta : 20;
1366
+ const intervalOpts = typeof opts === "object" && opts.interval != null ? opts.interval : 200;
1367
1367
  globalStore.putValue(msg.endpoint, "simulated_brightness_direction", direction);
1368
1368
  if (globalStore.getValue(msg.endpoint, "simulated_brightness_timer") === undefined) {
1369
1369
  const timer = setInterval(() => {
@@ -1805,7 +1805,7 @@ exports.checkin_presence = {
1805
1805
  type: ["commandCheckin"],
1806
1806
  options: [exposes.options.presence_timeout()],
1807
1807
  convert: (model, msg, publish, options, meta) => {
1808
- const useOptionsTimeout = options && options.presence_timeout !== undefined;
1808
+ const useOptionsTimeout = options?.presence_timeout != null;
1809
1809
  const timeout = useOptionsTimeout ? Number(options.presence_timeout) : 100; // 100 seconds by default
1810
1810
  // Stop existing timer because presence is detected and set a new one.
1811
1811
  clearTimeout(globalStore.getValue(msg.endpoint, "timer"));
@@ -3844,7 +3844,7 @@ exports.ZMCSW032D_cover_position = {
3844
3844
  const timeCoverSetMiddle = 60;
3845
3845
  // https://github.com/Koenkk/zigbee-herdsman-converters/pull/1336
3846
3846
  // Need to add time_close and time_open in your configuration.yaml after friendly_name (and set your time)
3847
- if (options.time_close !== undefined && options.time_open !== undefined) {
3847
+ if (options.time_close != null && options.time_open != null) {
3848
3848
  if (!globalStore.hasValue(msg.endpoint, "position")) {
3849
3849
  globalStore.putValue(msg.endpoint, "position", { lastPreviousAction: -1, CurrentPosition: -1, since: false });
3850
3850
  }
@@ -3915,7 +3915,7 @@ exports.PGC410EU_presence = {
3915
3915
  type: "commandArrivalSensorNotify",
3916
3916
  options: [exposes.options.presence_timeout()],
3917
3917
  convert: (model, msg, publish, options, meta) => {
3918
- const useOptionsTimeout = options && options.presence_timeout !== undefined;
3918
+ const useOptionsTimeout = options?.presence_timeout != null;
3919
3919
  const timeout = useOptionsTimeout ? Number(options.presence_timeout) : 100; // 100 seconds by default
3920
3920
  // Stop existing timer because motion is detected and set a new one.
3921
3921
  clearTimeout(globalStore.getValue(msg.endpoint, "timer"));
@@ -3930,7 +3930,7 @@ exports.STS_PRS_251_presence = {
3930
3930
  type: ["attributeReport", "readResponse"],
3931
3931
  options: [exposes.options.presence_timeout()],
3932
3932
  convert: (model, msg, publish, options, meta) => {
3933
- const useOptionsTimeout = options && options.presence_timeout !== undefined;
3933
+ const useOptionsTimeout = options?.presence_timeout != null;
3934
3934
  const timeout = useOptionsTimeout ? Number(options.presence_timeout) : 100; // 100 seconds by default
3935
3935
  // Stop existing timer because motion is detected and set a new one.
3936
3936
  clearTimeout(globalStore.getValue(msg.endpoint, "timer"));
@@ -4366,7 +4366,7 @@ exports.hue_dimmer_switch = {
4366
4366
  // simulated brightness
4367
4367
  if (options.simulated_brightness && (button === "down" || button === "up") && type !== "release") {
4368
4368
  const opts = options.simulated_brightness;
4369
- const deltaOpts = typeof opts === "object" && opts.delta !== undefined ? opts.delta : 35;
4369
+ const deltaOpts = typeof opts === "object" && opts.delta != null ? opts.delta : 35;
4370
4370
  const delta = button === "up" ? deltaOpts : deltaOpts * -1;
4371
4371
  const brightness = globalStore.getValue(msg.endpoint, "brightness", 255) + delta;
4372
4372
  payload.brightness = (0, utils_1.numberWithinRange)(brightness, 0, 255);