zigbee-herdsman-converters 24.13.0 → 25.0.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 (242) hide show
  1. package/CHANGELOG.md +54 -0
  2. package/README.md +6 -0
  3. package/dist/converters/fromZigbee.d.ts +1 -0
  4. package/dist/converters/fromZigbee.d.ts.map +1 -1
  5. package/dist/converters/fromZigbee.js +19 -7
  6. package/dist/converters/fromZigbee.js.map +1 -1
  7. package/dist/converters/toZigbee.js +2 -2
  8. package/dist/converters/toZigbee.js.map +1 -1
  9. package/dist/devices/adeo.d.ts.map +1 -1
  10. package/dist/devices/adeo.js +1 -7
  11. package/dist/devices/adeo.js.map +1 -1
  12. package/dist/devices/adurosmart.d.ts.map +1 -1
  13. package/dist/devices/adurosmart.js +7 -0
  14. package/dist/devices/adurosmart.js.map +1 -1
  15. package/dist/devices/amina.d.ts.map +1 -1
  16. package/dist/devices/amina.js +22 -12
  17. package/dist/devices/amina.js.map +1 -1
  18. package/dist/devices/aurora_lighting.js +3 -3
  19. package/dist/devices/aurora_lighting.js.map +1 -1
  20. package/dist/devices/avatto.d.ts.map +1 -1
  21. package/dist/devices/avatto.js +2 -12
  22. package/dist/devices/avatto.js.map +1 -1
  23. package/dist/devices/busch_jaeger.d.ts.map +1 -1
  24. package/dist/devices/busch_jaeger.js +20 -20
  25. package/dist/devices/busch_jaeger.js.map +1 -1
  26. package/dist/devices/centralite.d.ts.map +1 -1
  27. package/dist/devices/centralite.js +1 -15
  28. package/dist/devices/centralite.js.map +1 -1
  29. package/dist/devices/danfoss.d.ts.map +1 -1
  30. package/dist/devices/danfoss.js +14 -21
  31. package/dist/devices/danfoss.js.map +1 -1
  32. package/dist/devices/datek.d.ts.map +1 -1
  33. package/dist/devices/datek.js +10 -11
  34. package/dist/devices/datek.js.map +1 -1
  35. package/dist/devices/develco.d.ts.map +1 -1
  36. package/dist/devices/develco.js +13 -23
  37. package/dist/devices/develco.js.map +1 -1
  38. package/dist/devices/engo.d.ts.map +1 -1
  39. package/dist/devices/engo.js +2 -8
  40. package/dist/devices/engo.js.map +1 -1
  41. package/dist/devices/evanell.d.ts.map +1 -1
  42. package/dist/devices/evanell.js +1 -6
  43. package/dist/devices/evanell.js.map +1 -1
  44. package/dist/devices/ewelink.js +3 -3
  45. package/dist/devices/ewelink.js.map +1 -1
  46. package/dist/devices/fantem.d.ts.map +1 -1
  47. package/dist/devices/fantem.js +1 -7
  48. package/dist/devices/fantem.js.map +1 -1
  49. package/dist/devices/feibit.d.ts.map +1 -1
  50. package/dist/devices/feibit.js +1 -6
  51. package/dist/devices/feibit.js.map +1 -1
  52. package/dist/devices/futurehome.d.ts +1 -1
  53. package/dist/devices/futurehome.d.ts.map +1 -1
  54. package/dist/devices/futurehome.js +1 -4
  55. package/dist/devices/futurehome.js.map +1 -1
  56. package/dist/devices/giex.js +1 -1
  57. package/dist/devices/giex.js.map +1 -1
  58. package/dist/devices/gledopto.d.ts.map +1 -1
  59. package/dist/devices/gledopto.js +9 -17
  60. package/dist/devices/gledopto.js.map +1 -1
  61. package/dist/devices/gmmts.d.ts.map +1 -1
  62. package/dist/devices/gmmts.js +45 -74
  63. package/dist/devices/gmmts.js.map +1 -1
  64. package/dist/devices/heiman.d.ts.map +1 -1
  65. package/dist/devices/heiman.js +2 -9
  66. package/dist/devices/heiman.js.map +1 -1
  67. package/dist/devices/hive.d.ts.map +1 -1
  68. package/dist/devices/hive.js +9 -29
  69. package/dist/devices/hive.js.map +1 -1
  70. package/dist/devices/immax.js +1 -1
  71. package/dist/devices/immax.js.map +1 -1
  72. package/dist/devices/inovelli.d.ts.map +1 -1
  73. package/dist/devices/inovelli.js +2 -1
  74. package/dist/devices/inovelli.js.map +1 -1
  75. package/dist/devices/legrand.d.ts.map +1 -1
  76. package/dist/devices/legrand.js +10 -22
  77. package/dist/devices/legrand.js.map +1 -1
  78. package/dist/devices/lellki.d.ts.map +1 -1
  79. package/dist/devices/lellki.js +9 -8
  80. package/dist/devices/lellki.js.map +1 -1
  81. package/dist/devices/lidl.d.ts.map +1 -1
  82. package/dist/devices/lidl.js +14 -15
  83. package/dist/devices/lidl.js.map +1 -1
  84. package/dist/devices/lifecontrol.d.ts.map +1 -1
  85. package/dist/devices/lifecontrol.js +9 -21
  86. package/dist/devices/lifecontrol.js.map +1 -1
  87. package/dist/devices/lincukoo.d.ts.map +1 -1
  88. package/dist/devices/lincukoo.js +6 -24
  89. package/dist/devices/lincukoo.js.map +1 -1
  90. package/dist/devices/linkind.d.ts.map +1 -1
  91. package/dist/devices/linkind.js +2 -22
  92. package/dist/devices/linkind.js.map +1 -1
  93. package/dist/devices/linptech.js +5 -5
  94. package/dist/devices/linptech.js.map +1 -1
  95. package/dist/devices/livolo.d.ts.map +1 -1
  96. package/dist/devices/livolo.js +94 -249
  97. package/dist/devices/livolo.js.map +1 -1
  98. package/dist/devices/lixee.d.ts.map +1 -1
  99. package/dist/devices/lixee.js +38 -51
  100. package/dist/devices/lixee.js.map +1 -1
  101. package/dist/devices/lumi.d.ts.map +1 -1
  102. package/dist/devices/lumi.js +21 -62
  103. package/dist/devices/lumi.js.map +1 -1
  104. package/dist/devices/mazda.d.ts.map +1 -1
  105. package/dist/devices/mazda.js +1 -4
  106. package/dist/devices/mazda.js.map +1 -1
  107. package/dist/devices/mindy.d.ts.map +1 -1
  108. package/dist/devices/mindy.js +13 -18
  109. package/dist/devices/mindy.js.map +1 -1
  110. package/dist/devices/moes.d.ts.map +1 -1
  111. package/dist/devices/moes.js +24 -60
  112. package/dist/devices/moes.js.map +1 -1
  113. package/dist/devices/namron.d.ts.map +1 -1
  114. package/dist/devices/namron.js +17 -59
  115. package/dist/devices/namron.js.map +1 -1
  116. package/dist/devices/neo.d.ts.map +1 -1
  117. package/dist/devices/neo.js +7 -34
  118. package/dist/devices/neo.js.map +1 -1
  119. package/dist/devices/nous.d.ts.map +1 -1
  120. package/dist/devices/nous.js +2 -6
  121. package/dist/devices/nous.js.map +1 -1
  122. package/dist/devices/onesti.d.ts +1 -1
  123. package/dist/devices/onesti.d.ts.map +1 -1
  124. package/dist/devices/onesti.js.map +1 -1
  125. package/dist/devices/orvibo.d.ts.map +1 -1
  126. package/dist/devices/orvibo.js +5 -4
  127. package/dist/devices/orvibo.js.map +1 -1
  128. package/dist/devices/orztech.d.ts.map +1 -1
  129. package/dist/devices/orztech.js +5 -20
  130. package/dist/devices/orztech.js.map +1 -1
  131. package/dist/devices/osram.d.ts.map +1 -1
  132. package/dist/devices/osram.js +6 -4
  133. package/dist/devices/osram.js.map +1 -1
  134. package/dist/devices/philips.d.ts.map +1 -1
  135. package/dist/devices/philips.js +7 -0
  136. package/dist/devices/philips.js.map +1 -1
  137. package/dist/devices/profalux.d.ts.map +1 -1
  138. package/dist/devices/profalux.js +20 -16
  139. package/dist/devices/profalux.js.map +1 -1
  140. package/dist/devices/rtx.js +1 -1
  141. package/dist/devices/rtx.js.map +1 -1
  142. package/dist/devices/saswell.d.ts.map +1 -1
  143. package/dist/devices/saswell.js +1 -6
  144. package/dist/devices/saswell.js.map +1 -1
  145. package/dist/devices/schneider_electric.d.ts.map +1 -1
  146. package/dist/devices/schneider_electric.js +15 -12
  147. package/dist/devices/schneider_electric.js.map +1 -1
  148. package/dist/devices/senoro.d.ts.map +1 -1
  149. package/dist/devices/senoro.js +1 -4
  150. package/dist/devices/senoro.js.map +1 -1
  151. package/dist/devices/shinasystem.d.ts.map +1 -1
  152. package/dist/devices/shinasystem.js +83 -21
  153. package/dist/devices/shinasystem.js.map +1 -1
  154. package/dist/devices/sinope.d.ts.map +1 -1
  155. package/dist/devices/sinope.js +14 -4
  156. package/dist/devices/sinope.js.map +1 -1
  157. package/dist/devices/smart9.d.ts.map +1 -1
  158. package/dist/devices/smart9.js +2 -7
  159. package/dist/devices/smart9.js.map +1 -1
  160. package/dist/devices/sonoff.d.ts.map +1 -1
  161. package/dist/devices/sonoff.js +1 -0
  162. package/dist/devices/sonoff.js.map +1 -1
  163. package/dist/devices/sunricher.d.ts.map +1 -1
  164. package/dist/devices/sunricher.js +4 -27
  165. package/dist/devices/sunricher.js.map +1 -1
  166. package/dist/devices/tech.d.ts.map +1 -1
  167. package/dist/devices/tech.js +2 -8
  168. package/dist/devices/tech.js.map +1 -1
  169. package/dist/devices/technicolor.d.ts.map +1 -1
  170. package/dist/devices/technicolor.js +2 -15
  171. package/dist/devices/technicolor.js.map +1 -1
  172. package/dist/devices/tuya.d.ts.map +1 -1
  173. package/dist/devices/tuya.js +193 -409
  174. package/dist/devices/tuya.js.map +1 -1
  175. package/dist/devices/ubisys.d.ts.map +1 -1
  176. package/dist/devices/ubisys.js +31 -52
  177. package/dist/devices/ubisys.js.map +1 -1
  178. package/dist/devices/universal_electronics_inc.d.ts.map +1 -1
  179. package/dist/devices/universal_electronics_inc.js +3 -29
  180. package/dist/devices/universal_electronics_inc.js.map +1 -1
  181. package/dist/devices/vesternet.d.ts.map +1 -1
  182. package/dist/devices/vesternet.js +4 -1
  183. package/dist/devices/vesternet.js.map +1 -1
  184. package/dist/devices/weiser.d.ts.map +1 -1
  185. package/dist/devices/weiser.js +3 -48
  186. package/dist/devices/weiser.js.map +1 -1
  187. package/dist/devices/woox.d.ts.map +1 -1
  188. package/dist/devices/woox.js +2 -3
  189. package/dist/devices/woox.js.map +1 -1
  190. package/dist/devices/yale.d.ts +1 -1
  191. package/dist/devices/yale.d.ts.map +1 -1
  192. package/dist/devices/yale.js.map +1 -1
  193. package/dist/devices/yandex.d.ts.map +1 -1
  194. package/dist/devices/yandex.js +4 -4
  195. package/dist/devices/yandex.js.map +1 -1
  196. package/dist/devices/zemismart.d.ts.map +1 -1
  197. package/dist/devices/zemismart.js +8 -23
  198. package/dist/devices/zemismart.js.map +1 -1
  199. package/dist/index.d.ts +4 -4
  200. package/dist/index.d.ts.map +1 -1
  201. package/dist/index.js +14 -7
  202. package/dist/index.js.map +1 -1
  203. package/dist/lib/develco.d.ts.map +1 -1
  204. package/dist/lib/develco.js +0 -2
  205. package/dist/lib/develco.js.map +1 -1
  206. package/dist/lib/ikea.d.ts.map +1 -1
  207. package/dist/lib/ikea.js +3 -2
  208. package/dist/lib/ikea.js.map +1 -1
  209. package/dist/lib/ledvance.js +1 -1
  210. package/dist/lib/ledvance.js.map +1 -1
  211. package/dist/lib/legrand.d.ts +6 -1
  212. package/dist/lib/legrand.d.ts.map +1 -1
  213. package/dist/lib/legrand.js +14 -3
  214. package/dist/lib/legrand.js.map +1 -1
  215. package/dist/lib/lumi.d.ts +1 -0
  216. package/dist/lib/lumi.d.ts.map +1 -1
  217. package/dist/lib/lumi.js +72 -18
  218. package/dist/lib/lumi.js.map +1 -1
  219. package/dist/lib/modernExtend.d.ts +14 -1
  220. package/dist/lib/modernExtend.d.ts.map +1 -1
  221. package/dist/lib/modernExtend.js +108 -14
  222. package/dist/lib/modernExtend.js.map +1 -1
  223. package/dist/lib/store.d.ts +4 -4
  224. package/dist/lib/store.d.ts.map +1 -1
  225. package/dist/lib/store.js +3 -0
  226. package/dist/lib/store.js.map +1 -1
  227. package/dist/lib/tuya.d.ts +18 -18
  228. package/dist/lib/tuya.d.ts.map +1 -1
  229. package/dist/lib/tuya.js +142 -155
  230. package/dist/lib/tuya.js.map +1 -1
  231. package/dist/lib/types.d.ts +31 -15
  232. package/dist/lib/types.d.ts.map +1 -1
  233. package/dist/lib/ubisys.d.ts +2 -1
  234. package/dist/lib/ubisys.d.ts.map +1 -1
  235. package/dist/lib/ubisys.js +46 -0
  236. package/dist/lib/ubisys.js.map +1 -1
  237. package/dist/lib/utils.d.ts +1 -2
  238. package/dist/lib/utils.d.ts.map +1 -1
  239. package/dist/lib/utils.js +0 -30
  240. package/dist/lib/utils.js.map +1 -1
  241. package/dist/models-index.json +1 -1
  242. package/package.json +3 -3
package/dist/lib/lumi.js CHANGED
@@ -1809,16 +1809,13 @@ exports.lumiModernExtend = {
1809
1809
  ...args,
1810
1810
  }),
1811
1811
  lumiPreventReset: () => {
1812
- const onEvent = [
1813
- async (type, data, device) => {
1814
- if (
1815
- // options.allow_reset ||
1816
- type !== "message" ||
1817
- data.type !== "attributeReport" ||
1818
- data.cluster !== "genBasic" ||
1819
- !data.data[0xfff0] ||
1812
+ const converter = {
1813
+ cluster: "genBasic",
1814
+ type: ["attributeReport"],
1815
+ convert: (model, msg, publish, options, meta) => {
1816
+ if (!msg.data[0xfff0] ||
1820
1817
  // eg: [0xaa, 0x10, 0x05, 0x41, 0x87, 0x01, 0x01, 0x10, 0x00]
1821
- !data.data[0xfff0].slice(0, 5).equals(node_buffer_1.Buffer.from([0xaa, 0x10, 0x05, 0x41, 0x87]))) {
1818
+ !msg.data[0xfff0].slice(0, 5).equals(node_buffer_1.Buffer.from([0xaa, 0x10, 0x05, 0x41, 0x87]))) {
1822
1819
  return;
1823
1820
  }
1824
1821
  const payload = {
@@ -1827,10 +1824,13 @@ exports.lumiModernExtend = {
1827
1824
  type: 0x41,
1828
1825
  },
1829
1826
  };
1830
- await device.getEndpoint(1).write("genBasic", payload, { manufacturerCode: exports.manufacturerCode });
1827
+ msg.device
1828
+ .getEndpoint(1)
1829
+ .write("genBasic", payload, { manufacturerCode: exports.manufacturerCode })
1830
+ .catch((error) => logger_1.logger.error(`Failed to prevent reset of '${msg.device.ieeeAddr}' (${error})`, NS));
1831
1831
  },
1832
- ];
1833
- return { onEvent, isModernExtend: true };
1832
+ };
1833
+ return { fromZigbee: [converter], isModernExtend: true };
1834
1834
  },
1835
1835
  lumiClickMode: (args) => modernExtend.enumLookup({
1836
1836
  name: "click_mode",
@@ -2189,20 +2189,25 @@ exports.lumiModernExtend = {
2189
2189
  ...args,
2190
2190
  }),
2191
2191
  lumiPreventLeave: () => {
2192
- const onEvent = [
2193
- async (type, data, device) => {
2194
- if (type === "message" && data.type === "attributeReport" && data.cluster === "manuSpecificLumi" && data.data[0x00fc] === false) {
2192
+ const converter = {
2193
+ cluster: "manuSpecificLumi",
2194
+ type: ["attributeReport"],
2195
+ convert: (model, msg, publish, options, meta) => {
2196
+ if (msg.cluster === "manuSpecificLumi" && msg.data[0x00fc] === false) {
2195
2197
  const payload = {
2196
2198
  [0x00fc]: {
2197
2199
  value: true,
2198
2200
  type: 0x10,
2199
2201
  },
2200
2202
  };
2201
- await device.getEndpoint(1).write("manuSpecificLumi", payload, { manufacturerCode: exports.manufacturerCode });
2203
+ msg.device
2204
+ .getEndpoint(1)
2205
+ .write("manuSpecificLumi", payload, { manufacturerCode: exports.manufacturerCode })
2206
+ .catch((error) => logger_1.logger.error(`Failed to prevent leave of '${msg.device.ieeeAddr}' (${error})`, NS));
2202
2207
  }
2203
2208
  },
2204
- ];
2205
- return { onEvent, isModernExtend: true };
2209
+ };
2210
+ return { fromZigbee: [converter], isModernExtend: true };
2206
2211
  },
2207
2212
  lumiExternalSensor: () => {
2208
2213
  return {
@@ -2412,6 +2417,55 @@ exports.lumiModernExtend = {
2412
2417
  ],
2413
2418
  };
2414
2419
  },
2420
+ lumiReadPositionOnReport: (type) => {
2421
+ let converter;
2422
+ if (type === "genAnalogOutput") {
2423
+ converter = {
2424
+ cluster: "genAnalogOutput",
2425
+ type: ["attributeReport"],
2426
+ convert: (model, msg, publish, options, meta) => {
2427
+ // The position (genAnalogOutput.presentValue) reported via an attribute contains an invalid value
2428
+ // however when reading it will provide the correct value.
2429
+ msg.device.endpoints[0]
2430
+ .read("genAnalogOutput", ["presentValue"])
2431
+ .catch((error) => logger_1.logger.error(`Failed to read position '${msg.device.ieeeAddr}' (${error})`, NS));
2432
+ },
2433
+ };
2434
+ }
2435
+ else if (type === "genMultistateOutput") {
2436
+ converter = {
2437
+ cluster: "genMultistateOutput",
2438
+ type: ["attributeReport"],
2439
+ convert: (model, msg, publish, options, meta) => {
2440
+ if (msg.data.presentValue !== undefined && msg.data.presentValue > 1) {
2441
+ // Try to read the position after the motor stops, the device occasionally report wrong data right after stopping
2442
+ // Might need to add delay, seems to be working without one but needs more tests.
2443
+ msg.device
2444
+ .getEndpoint(1)
2445
+ .read("genAnalogOutput", ["presentValue"])
2446
+ .catch((error) => logger_1.logger.error(`Failed to read position '${msg.device.ieeeAddr}' (${error})`, NS));
2447
+ }
2448
+ },
2449
+ };
2450
+ }
2451
+ else if (type === "genBasic") {
2452
+ converter = {
2453
+ cluster: "genBasic",
2454
+ type: ["attributeReport"],
2455
+ convert: (model, msg, publish, options, meta) => {
2456
+ if (msg.data["1028"] === 0) {
2457
+ // Try to read the position after the motor stops, the device occasionally report wrong data right after stopping
2458
+ // Might need to add delay, seems to be working without one but needs more tests.
2459
+ msg.device
2460
+ .getEndpoint(1)
2461
+ .read("genAnalogOutput", ["presentValue"])
2462
+ .catch((error) => logger_1.logger.error(`Failed to read position '${msg.device.ieeeAddr}' (${error})`, NS));
2463
+ }
2464
+ },
2465
+ };
2466
+ }
2467
+ return { fromZigbee: [converter], isModernExtend: true };
2468
+ },
2415
2469
  };
2416
2470
  exports.modernExtend = exports.lumiModernExtend;
2417
2471
  const feederDaysLookup = {