zigbee-herdsman-converters 20.12.1 → 20.14.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/CHANGELOG.md +44 -0
- package/converters/fromZigbee.d.ts.map +1 -1
- package/converters/fromZigbee.js +345 -334
- package/converters/fromZigbee.js.map +1 -1
- package/converters/toZigbee.d.ts +1 -1
- package/converters/toZigbee.d.ts.map +1 -1
- package/converters/toZigbee.js +80 -82
- package/converters/toZigbee.js.map +1 -1
- package/devices/ITCommander.d.ts.map +1 -1
- package/devices/ITCommander.js +1 -1
- package/devices/ITCommander.js.map +1 -1
- package/devices/acova.d.ts.map +1 -1
- package/devices/acova.js.map +1 -1
- package/devices/akuvox.d.ts.map +1 -1
- package/devices/akuvox.js.map +1 -1
- package/devices/aldi.d.ts.map +1 -1
- package/devices/aldi.js.map +1 -1
- package/devices/alecto.d.ts.map +1 -1
- package/devices/alecto.js.map +1 -1
- package/devices/atlantic.d.ts.map +1 -1
- package/devices/atlantic.js.map +1 -1
- package/devices/aubess.d.ts.map +1 -1
- package/devices/aubess.js.map +1 -1
- package/devices/aurora_lighting.d.ts.map +1 -1
- package/devices/aurora_lighting.js +2 -2
- package/devices/aurora_lighting.js.map +1 -1
- package/devices/avatto.js +0 -1
- package/devices/avatto.js.map +1 -1
- package/devices/axis.d.ts.map +1 -1
- package/devices/axis.js.map +1 -1
- package/devices/bitron.d.ts.map +1 -1
- package/devices/bitron.js +9 -9
- package/devices/bitron.js.map +1 -1
- package/devices/bituo_technik.d.ts.map +1 -1
- package/devices/bituo_technik.js +2 -2
- package/devices/bituo_technik.js.map +1 -1
- package/devices/blaupunkt.d.ts.map +1 -1
- package/devices/blaupunkt.js +1 -1
- package/devices/blaupunkt.js.map +1 -1
- package/devices/blitzwolf.d.ts.map +1 -1
- package/devices/blitzwolf.js.map +1 -1
- package/devices/bosch.d.ts.map +1 -1
- package/devices/bosch.js +25 -25
- package/devices/bosch.js.map +1 -1
- package/devices/brimate.d.ts.map +1 -1
- package/devices/brimate.js.map +1 -1
- package/devices/bseed.d.ts.map +1 -1
- package/devices/bseed.js.map +1 -1
- package/devices/bticino.d.ts.map +1 -1
- package/devices/bticino.js.map +1 -1
- package/devices/busch_jaeger.d.ts.map +1 -1
- package/devices/busch_jaeger.js.map +1 -1
- package/devices/byun.d.ts.map +1 -1
- package/devices/byun.js.map +1 -1
- package/devices/casaia.d.ts.map +1 -1
- package/devices/casaia.js +2 -2
- package/devices/casaia.js.map +1 -1
- package/devices/centralite.d.ts.map +1 -1
- package/devices/centralite.js +5 -5
- package/devices/centralite.js.map +1 -1
- package/devices/cleverio.d.ts.map +1 -1
- package/devices/cleverio.js.map +1 -1
- package/devices/ctm.d.ts.map +1 -1
- package/devices/ctm.js +62 -62
- package/devices/ctm.js.map +1 -1
- package/devices/current_products_corp.d.ts.map +1 -1
- package/devices/current_products_corp.js.map +1 -1
- package/devices/custom_devices_diy.d.ts.map +1 -1
- package/devices/custom_devices_diy.js +12 -12
- package/devices/custom_devices_diy.js.map +1 -1
- package/devices/danalock.d.ts.map +1 -1
- package/devices/danalock.js.map +1 -1
- package/devices/danfoss.d.ts.map +1 -1
- package/devices/danfoss.js +2 -2
- package/devices/danfoss.js.map +1 -1
- package/devices/datek.d.ts.map +1 -1
- package/devices/datek.js +1 -1
- package/devices/datek.js.map +1 -1
- package/devices/dawon_dns.d.ts.map +1 -1
- package/devices/dawon_dns.js.map +1 -1
- package/devices/develco.d.ts.map +1 -1
- package/devices/develco.js +15 -14
- package/devices/develco.js.map +1 -1
- package/devices/digi.d.ts.map +1 -1
- package/devices/digi.js.map +1 -1
- package/devices/dlink.d.ts.map +1 -1
- package/devices/dlink.js.map +1 -1
- package/devices/easyaccess.d.ts.map +1 -1
- package/devices/easyaccess.js.map +1 -1
- package/devices/easyiot.d.ts.map +1 -1
- package/devices/easyiot.js.map +1 -1
- package/devices/echostar.d.ts.map +1 -1
- package/devices/echostar.js.map +1 -1
- package/devices/ecodim.d.ts.map +1 -1
- package/devices/ecodim.js +1 -1
- package/devices/ecodim.js.map +1 -1
- package/devices/ecolink.d.ts.map +1 -1
- package/devices/ecolink.js.map +1 -1
- package/devices/ecozy.d.ts.map +1 -1
- package/devices/ecozy.js.map +1 -1
- package/devices/enocean.d.ts.map +1 -1
- package/devices/enocean.js.map +1 -1
- package/devices/envilar.d.ts.map +1 -1
- package/devices/envilar.js +2 -2
- package/devices/envilar.js.map +1 -1
- package/devices/eurotronic.d.ts.map +1 -1
- package/devices/eurotronic.js.map +1 -1
- package/devices/evanell.d.ts.map +1 -1
- package/devices/evanell.js.map +1 -1
- package/devices/evology.d.ts.map +1 -1
- package/devices/evology.js.map +1 -1
- package/devices/ewelink.d.ts.map +1 -1
- package/devices/ewelink.js +1 -1
- package/devices/ewelink.js.map +1 -1
- package/devices/fantem.d.ts.map +1 -1
- package/devices/fantem.js +2 -2
- package/devices/fantem.js.map +1 -1
- package/devices/fireangel.d.ts.map +1 -1
- package/devices/fireangel.js.map +1 -1
- package/devices/frankever.d.ts.map +1 -1
- package/devices/frankever.js.map +1 -1
- package/devices/frient.d.ts.map +1 -1
- package/devices/frient.js.map +1 -1
- package/devices/gewiss.d.ts.map +1 -1
- package/devices/gewiss.js.map +1 -1
- package/devices/giex.d.ts.map +1 -1
- package/devices/giex.js.map +1 -1
- package/devices/gledopto.js +2 -2
- package/devices/gledopto.js.map +1 -1
- package/devices/gmmts.d.ts.map +1 -1
- package/devices/gmmts.js +23 -23
- package/devices/gmmts.js.map +1 -1
- package/devices/gumax.d.ts +4 -0
- package/devices/gumax.d.ts.map +1 -0
- package/devices/gumax.js +15 -0
- package/devices/gumax.js.map +1 -0
- package/devices/heiman.d.ts.map +1 -1
- package/devices/heiman.js +2 -2
- package/devices/heiman.js.map +1 -1
- package/devices/heimgard_technologies.d.ts.map +1 -1
- package/devices/heimgard_technologies.js +2 -2
- package/devices/heimgard_technologies.js.map +1 -1
- package/devices/hive.js +1 -1
- package/devices/hive.js.map +1 -1
- package/devices/hommyn.d.ts.map +1 -1
- package/devices/hommyn.js.map +1 -1
- package/devices/hzc.d.ts.map +1 -1
- package/devices/hzc.js.map +1 -1
- package/devices/hzc_electric.d.ts.map +1 -1
- package/devices/hzc_electric.js.map +1 -1
- package/devices/ihorn.d.ts.map +1 -1
- package/devices/ihorn.js.map +1 -1
- package/devices/imhotepcreation.d.ts.map +1 -1
- package/devices/index.d.ts.map +1 -1
- package/devices/index.js +4 -2
- package/devices/index.js.map +1 -1
- package/devices/innr.d.ts.map +1 -1
- package/devices/innr.js +3 -3
- package/devices/innr.js.map +1 -1
- package/devices/inovelli.d.ts.map +1 -1
- package/devices/inovelli.js +38 -38
- package/devices/inovelli.js.map +1 -1
- package/devices/insta.d.ts.map +1 -1
- package/devices/insta.js.map +1 -1
- package/devices/iotperfect.d.ts.map +1 -1
- package/devices/iotperfect.js.map +1 -1
- package/devices/iris.d.ts.map +1 -1
- package/devices/iris.js +1 -1
- package/devices/iris.js.map +1 -1
- package/devices/javis.d.ts.map +1 -1
- package/devices/javis.js.map +1 -1
- package/devices/jxuan.d.ts.map +1 -1
- package/devices/jxuan.js +2 -2
- package/devices/jxuan.js.map +1 -1
- package/devices/kami.d.ts.map +1 -1
- package/devices/kami.js.map +1 -1
- package/devices/keen_home.d.ts.map +1 -1
- package/devices/keen_home.js.map +1 -1
- package/devices/kmpcil.d.ts.map +1 -1
- package/devices/kmpcil.js +5 -5
- package/devices/kmpcil.js.map +1 -1
- package/devices/kwikset.d.ts.map +1 -1
- package/devices/kwikset.js.map +1 -1
- package/devices/led_trading.d.ts.map +1 -1
- package/devices/led_trading.js +1 -8
- package/devices/led_trading.js.map +1 -1
- package/devices/legrand.d.ts.map +1 -1
- package/devices/legrand.js +2 -2
- package/devices/legrand.js.map +1 -1
- package/devices/lellki.d.ts.map +1 -1
- package/devices/lellki.js +2 -2
- package/devices/lellki.js.map +1 -1
- package/devices/letv.d.ts.map +1 -1
- package/devices/letv.js.map +1 -1
- package/devices/leviton.d.ts.map +1 -1
- package/devices/leviton.js +1 -1
- package/devices/leviton.js.map +1 -1
- package/devices/lidl.d.ts.map +1 -1
- package/devices/lidl.js +15 -15
- package/devices/lidl.js.map +1 -1
- package/devices/lifecontrol.d.ts.map +1 -1
- package/devices/lifecontrol.js +1 -1
- package/devices/lifecontrol.js.map +1 -1
- package/devices/linkind.d.ts.map +1 -1
- package/devices/linkind.js +2 -2
- package/devices/linkind.js.map +1 -1
- package/devices/linptech.d.ts.map +1 -1
- package/devices/linptech.js +5 -5
- package/devices/linptech.js.map +1 -1
- package/devices/livolo.d.ts.map +1 -1
- package/devices/livolo.js +1 -1
- package/devices/livolo.js.map +1 -1
- package/devices/lixee.d.ts.map +1 -1
- package/devices/lixee.js +29 -28
- package/devices/lixee.js.map +1 -1
- package/devices/ls.d.ts.map +1 -1
- package/devices/ls.js.map +1 -1
- package/devices/lumi.d.ts.map +1 -1
- package/devices/lumi.js +7 -7
- package/devices/lumi.js.map +1 -1
- package/devices/lupus.d.ts.map +1 -1
- package/devices/lupus.js +2 -2
- package/devices/lupus.js.map +1 -1
- package/devices/lutron.d.ts.map +1 -1
- package/devices/lutron.js.map +1 -1
- package/devices/lux.d.ts.map +1 -1
- package/devices/lux.js.map +1 -1
- package/devices/lytko.js +6 -6
- package/devices/lytko.js.map +1 -1
- package/devices/meazon.d.ts.map +1 -1
- package/devices/meazon.js.map +1 -1
- package/devices/mercator.d.ts.map +1 -1
- package/devices/mercator.js +2 -2
- package/devices/mercator.js.map +1 -1
- package/devices/miboxer.d.ts.map +1 -1
- package/devices/miboxer.js +1 -1
- package/devices/miboxer.js.map +1 -1
- package/devices/moes.d.ts.map +1 -1
- package/devices/moes.js +3 -3
- package/devices/moes.js.map +1 -1
- package/devices/multiterm.js +1 -1
- package/devices/multiterm.js.map +1 -1
- package/devices/namron.js +6 -6
- package/devices/namron.js.map +1 -1
- package/devices/neo.d.ts.map +1 -1
- package/devices/neo.js +1 -1
- package/devices/neo.js.map +1 -1
- package/devices/net2grid.d.ts.map +1 -1
- package/devices/net2grid.js.map +1 -1
- package/devices/netvox.d.ts.map +1 -1
- package/devices/netvox.js.map +1 -1
- package/devices/niko.d.ts.map +1 -1
- package/devices/niko.js +10 -10
- package/devices/niko.js.map +1 -1
- package/devices/ninja_blocks.d.ts.map +1 -1
- package/devices/ninja_blocks.js.map +1 -1
- package/devices/nodon.d.ts.map +1 -1
- package/devices/nodon.js +2 -2
- package/devices/nodon.js.map +1 -1
- package/devices/nous.d.ts.map +1 -1
- package/devices/nous.js.map +1 -1
- package/devices/novo.d.ts.map +1 -1
- package/devices/novo.js.map +1 -1
- package/devices/nue_3a.js +2 -2
- package/devices/nue_3a.js.map +1 -1
- package/devices/nyce.d.ts.map +1 -1
- package/devices/nyce.js.map +1 -1
- package/devices/onesti.d.ts.map +1 -1
- package/devices/onesti.js.map +1 -1
- package/devices/openlumi.d.ts.map +1 -1
- package/devices/openlumi.js.map +1 -1
- package/devices/orvibo.d.ts.map +1 -1
- package/devices/orvibo.js +9 -0
- package/devices/orvibo.js.map +1 -1
- package/devices/oujiabao.d.ts.map +1 -1
- package/devices/oujiabao.js.map +1 -1
- package/devices/owon.d.ts.map +1 -1
- package/devices/owon.js +35 -26
- package/devices/owon.js.map +1 -1
- package/devices/peq.d.ts.map +1 -1
- package/devices/peq.js.map +1 -1
- package/devices/perenio.d.ts.map +1 -1
- package/devices/perenio.js +21 -21
- package/devices/perenio.js.map +1 -1
- package/devices/philips.d.ts.map +1 -1
- package/devices/philips.js +28 -0
- package/devices/philips.js.map +1 -1
- package/devices/plaid.d.ts.map +1 -1
- package/devices/plaid.js.map +1 -1
- package/devices/plugwise.d.ts.map +1 -1
- package/devices/plugwise.js +1 -1
- package/devices/plugwise.js.map +1 -1
- package/devices/qa.d.ts.map +1 -1
- package/devices/qa.js.map +1 -1
- package/devices/qmotion.d.ts.map +1 -1
- package/devices/qmotion.js +1 -1
- package/devices/qmotion.js.map +1 -1
- package/devices/qoto.d.ts.map +1 -1
- package/devices/qoto.js.map +1 -1
- package/devices/rgb_genie.d.ts.map +1 -1
- package/devices/rgb_genie.js +2 -2
- package/devices/rgb_genie.js.map +1 -1
- package/devices/roome.d.ts.map +1 -1
- package/devices/roome.js.map +1 -1
- package/devices/rtx.d.ts.map +1 -1
- package/devices/rtx.js.map +1 -1
- package/devices/salus_controls.d.ts.map +1 -1
- package/devices/salus_controls.js.map +1 -1
- package/devices/saswell.d.ts.map +1 -1
- package/devices/saswell.js +1 -1
- package/devices/saswell.js.map +1 -1
- package/devices/sber.d.ts.map +1 -1
- package/devices/sber.js.map +1 -1
- package/devices/schlage.d.ts.map +1 -1
- package/devices/schlage.js.map +1 -1
- package/devices/schneider_electric.d.ts.map +1 -1
- package/devices/schneider_electric.js +22 -22
- package/devices/schneider_electric.js.map +1 -1
- package/devices/securifi.d.ts.map +1 -1
- package/devices/securifi.js.map +1 -1
- package/devices/sengled.d.ts.map +1 -1
- package/devices/sercomm.d.ts.map +1 -1
- package/devices/sercomm.js.map +1 -1
- package/devices/shade_control.d.ts.map +1 -1
- package/devices/shade_control.js.map +1 -1
- package/devices/shinasystem.js +1 -1
- package/devices/shinasystem.js.map +1 -1
- package/devices/siglis.d.ts.map +1 -1
- package/devices/siglis.js +4 -5
- package/devices/siglis.js.map +1 -1
- package/devices/sinope.d.ts.map +1 -1
- package/devices/sinope.js +76 -84
- package/devices/sinope.js.map +1 -1
- package/devices/siterwell.d.ts.map +1 -1
- package/devices/siterwell.js.map +1 -1
- package/devices/skydance.d.ts.map +1 -1
- package/devices/skydance.js.map +1 -1
- package/devices/smart9.d.ts.map +1 -1
- package/devices/smart9.js.map +1 -1
- package/devices/smartenit.d.ts.map +1 -1
- package/devices/smartenit.js.map +1 -1
- package/devices/smartthings.js +1 -1
- package/devices/smartthings.js.map +1 -1
- package/devices/smartwings.d.ts.map +1 -1
- package/devices/smartwings.js.map +1 -1
- package/devices/somgoms.d.ts.map +1 -1
- package/devices/somgoms.js.map +1 -1
- package/devices/sonoff.d.ts.map +1 -1
- package/devices/sonoff.js +2 -2
- package/devices/sonoff.js.map +1 -1
- package/devices/stelpro.d.ts.map +1 -1
- package/devices/stelpro.js +3 -3
- package/devices/stelpro.js.map +1 -1
- package/devices/sunricher.d.ts.map +1 -1
- package/devices/sunricher.js +3 -8
- package/devices/sunricher.js.map +1 -1
- package/devices/swann.d.ts.map +1 -1
- package/devices/swann.js.map +1 -1
- package/devices/tapestry.d.ts.map +1 -1
- package/devices/tapestry.js.map +1 -1
- package/devices/technicolor.d.ts.map +1 -1
- package/devices/technicolor.js.map +1 -1
- package/devices/third_reality.d.ts.map +1 -1
- package/devices/third_reality.js +185 -13
- package/devices/third_reality.js.map +1 -1
- package/devices/titan_products.d.ts.map +1 -1
- package/devices/titan_products.js.map +1 -1
- package/devices/tplink.d.ts.map +1 -1
- package/devices/tplink.js.map +1 -1
- package/devices/tuya.d.ts.map +1 -1
- package/devices/tuya.js +48 -41
- package/devices/tuya.js.map +1 -1
- package/devices/ubisys.d.ts.map +1 -1
- package/devices/ubisys.js +37 -28
- package/devices/ubisys.js.map +1 -1
- package/devices/uhome.d.ts.map +1 -1
- package/devices/uhome.js.map +1 -1
- package/devices/universal_electronics_inc.d.ts.map +1 -1
- package/devices/universal_electronics_inc.js +1 -1
- package/devices/universal_electronics_inc.js.map +1 -1
- package/devices/vesternet.d.ts.map +1 -1
- package/devices/vesternet.js.map +1 -1
- package/devices/viessmann.d.ts.map +1 -1
- package/devices/viessmann.js.map +1 -1
- package/devices/vimar.d.ts.map +1 -1
- package/devices/vimar.js.map +1 -1
- package/devices/visonic.d.ts.map +1 -1
- package/devices/visonic.js.map +1 -1
- package/devices/wally.d.ts.map +1 -1
- package/devices/wally.js.map +1 -1
- package/devices/waxman.d.ts.map +1 -1
- package/devices/waxman.js.map +1 -1
- package/devices/weiser.d.ts.map +1 -1
- package/devices/weiser.js.map +1 -1
- package/devices/wirenboard.d.ts.map +1 -1
- package/devices/wirenboard.js +11 -11
- package/devices/wirenboard.js.map +1 -1
- package/devices/woolley.d.ts.map +1 -1
- package/devices/woolley.js +1 -1
- package/devices/woolley.js.map +1 -1
- package/devices/woox.d.ts.map +1 -1
- package/devices/woox.js.map +1 -1
- package/devices/wyze.d.ts.map +1 -1
- package/devices/wyze.js.map +1 -1
- package/devices/xyzroe.d.ts.map +1 -1
- package/devices/xyzroe.js +6 -6
- package/devices/xyzroe.js.map +1 -1
- package/devices/yale.d.ts.map +1 -1
- package/devices/yale.js +3 -3
- package/devices/yale.js.map +1 -1
- package/devices/yookee.d.ts.map +1 -1
- package/devices/yookee.js.map +1 -1
- package/devices/zemismart.d.ts.map +1 -1
- package/devices/zemismart.js +2 -2
- package/devices/zemismart.js.map +1 -1
- package/devices/zen.d.ts.map +1 -1
- package/devices/zen.js.map +1 -1
- package/index.d.ts +5 -5
- package/index.d.ts.map +1 -1
- package/index.js +31 -16
- package/index.js.map +1 -1
- package/lib/color.d.ts +1 -1
- package/lib/color.d.ts.map +1 -1
- package/lib/color.js +47 -50
- package/lib/color.js.map +1 -1
- package/lib/configureKey.js +2 -2
- package/lib/configureKey.js.map +1 -1
- package/lib/develco.d.ts.map +1 -1
- package/lib/develco.js +5 -6
- package/lib/develco.js.map +1 -1
- package/lib/ewelink.d.ts.map +1 -1
- package/lib/exposes.js +1 -1
- package/lib/exposes.js.map +1 -1
- package/lib/ikea.d.ts +1 -1
- package/lib/ikea.d.ts.map +1 -1
- package/lib/ikea.js +10 -10
- package/lib/ikea.js.map +1 -1
- package/lib/ledvance.d.ts +1 -1
- package/lib/ledvance.d.ts.map +1 -1
- package/lib/legacy.d.ts +3 -16
- package/lib/legacy.d.ts.map +1 -1
- package/lib/legacy.js +121 -131
- package/lib/legacy.js.map +1 -1
- package/lib/legrand.d.ts +1 -1
- package/lib/legrand.d.ts.map +1 -1
- package/lib/legrand.js +4 -4
- package/lib/legrand.js.map +1 -1
- package/lib/light.d.ts +1 -1
- package/lib/light.js +5 -5
- package/lib/light.js.map +1 -1
- package/lib/logger.d.ts.map +1 -1
- package/lib/logger.js +4 -4
- package/lib/logger.js.map +1 -1
- package/lib/lumi.d.ts +1 -1
- package/lib/lumi.d.ts.map +1 -1
- package/lib/lumi.js +90 -92
- package/lib/lumi.js.map +1 -1
- package/lib/modernExtend.d.ts +1 -1
- package/lib/modernExtend.d.ts.map +1 -1
- package/lib/modernExtend.js +15 -15
- package/lib/modernExtend.js.map +1 -1
- package/lib/ota/common.d.ts +1 -1
- package/lib/ota/common.d.ts.map +1 -1
- package/lib/ota/common.js +5 -5
- package/lib/ota/common.js.map +1 -1
- package/lib/ota/gmmts.d.ts +1 -1
- package/lib/ota/gmmts.d.ts.map +1 -1
- package/lib/ota/gmmts.js +2 -2
- package/lib/ota/gmmts.js.map +1 -1
- package/lib/ota/index.d.ts +5 -5
- package/lib/ota/index.d.ts.map +1 -1
- package/lib/ota/index.js +7 -7
- package/lib/ota/index.js.map +1 -1
- package/lib/ota/inovelli.d.ts +1 -6
- package/lib/ota/inovelli.d.ts.map +1 -1
- package/lib/ota/inovelli.js +11 -11
- package/lib/ota/inovelli.js.map +1 -1
- package/lib/ota/jethome.d.ts +1 -1
- package/lib/ota/jethome.d.ts.map +1 -1
- package/lib/ota/jethome.js +4 -4
- package/lib/ota/jethome.js.map +1 -1
- package/lib/ota/ledvance.d.ts +1 -1
- package/lib/ota/ledvance.d.ts.map +1 -1
- package/lib/ota/ledvance.js +4 -4
- package/lib/ota/ledvance.js.map +1 -1
- package/lib/ota/lixee.d.ts +1 -1
- package/lib/ota/lixee.d.ts.map +1 -1
- package/lib/ota/lixee.js +3 -3
- package/lib/ota/lixee.js.map +1 -1
- package/lib/ota/salus.d.ts +1 -1
- package/lib/ota/salus.d.ts.map +1 -1
- package/lib/ota/salus.js +5 -5
- package/lib/ota/salus.js.map +1 -1
- package/lib/ota/securifi.d.ts +1 -1
- package/lib/ota/securifi.d.ts.map +1 -1
- package/lib/ota/securifi.js +2 -2
- package/lib/ota/securifi.js.map +1 -1
- package/lib/ota/tradfri.d.ts.map +1 -1
- package/lib/ota/tradfri.js +4 -4
- package/lib/ota/tradfri.js.map +1 -1
- package/lib/ota/ubisys.d.ts.map +1 -1
- package/lib/ota/ubisys.js +4 -4
- package/lib/ota/ubisys.js.map +1 -1
- package/lib/ota/zigbeeOTA.d.ts +1 -1
- package/lib/ota/zigbeeOTA.d.ts.map +1 -1
- package/lib/ota/zigbeeOTA.js +9 -9
- package/lib/ota/zigbeeOTA.js.map +1 -1
- package/lib/philips.js +12 -12
- package/lib/philips.js.map +1 -1
- package/lib/reporting.d.ts +1 -1
- package/lib/reporting.d.ts.map +1 -1
- package/lib/reporting.js +7 -7
- package/lib/reporting.js.map +1 -1
- package/lib/store.d.ts +1 -1
- package/lib/store.d.ts.map +1 -1
- package/lib/store.js +2 -2
- package/lib/store.js.map +1 -1
- package/lib/tuya.d.ts +1 -1
- package/lib/tuya.d.ts.map +1 -1
- package/lib/tuya.js +24 -56
- package/lib/tuya.js.map +1 -1
- package/lib/types.d.ts +4 -4
- package/lib/types.d.ts.map +1 -1
- package/lib/types.js +1 -0
- package/lib/types.js.map +1 -1
- package/lib/ubisys.d.ts +1 -1
- package/lib/ubisys.d.ts.map +1 -1
- package/lib/ubisys.js +1 -1
- package/lib/ubisys.js.map +1 -1
- package/lib/utils.d.ts +1 -1
- package/lib/utils.d.ts.map +1 -1
- package/lib/utils.js +26 -26
- package/lib/utils.js.map +1 -1
- package/package.json +8 -9
package/lib/lumi.js
CHANGED
|
@@ -316,7 +316,7 @@ const numericAttributes2Payload = async (msg, meta, model, options, dataObject)
|
|
|
316
316
|
else if (['WSDCGQ01LM', 'WSDCGQ11LM', 'WSDCGQ12LM', 'VOCKQJK11LM'].includes(model.model)) {
|
|
317
317
|
// https://github.com/Koenkk/zigbee2mqtt/issues/798
|
|
318
318
|
// Sometimes the sensor publishes non-realistic vales, filter these
|
|
319
|
-
// @ts-expect-error
|
|
319
|
+
// @ts-expect-error ignore
|
|
320
320
|
const temperature = parseFloat(value) / 100.0;
|
|
321
321
|
if (temperature > -65 && temperature < 65) {
|
|
322
322
|
payload.temperature = temperature;
|
|
@@ -391,7 +391,7 @@ const numericAttributes2Payload = async (msg, meta, model, options, dataObject)
|
|
|
391
391
|
else if (['WSDCGQ01LM', 'WSDCGQ11LM', 'WSDCGQ12LM', 'VOCKQJK11LM'].includes(model.model)) {
|
|
392
392
|
// https://github.com/Koenkk/zigbee2mqtt/issues/798
|
|
393
393
|
// Sometimes the sensor publishes non-realistic vales, filter these
|
|
394
|
-
// @ts-expect-error
|
|
394
|
+
// @ts-expect-error ignore
|
|
395
395
|
const humidity = parseFloat(value) / 100.0;
|
|
396
396
|
if (humidity >= 0 && humidity <= 100) {
|
|
397
397
|
payload.humidity = humidity;
|
|
@@ -616,7 +616,7 @@ const numericAttributes2Payload = async (msg, meta, model, options, dataObject)
|
|
|
616
616
|
payload.operation_mode = newMode;
|
|
617
617
|
globalStore.putValue(meta.device, 'opModeSwitchTask', null);
|
|
618
618
|
}
|
|
619
|
-
catch
|
|
619
|
+
catch {
|
|
620
620
|
// do nothing when callback fails
|
|
621
621
|
}
|
|
622
622
|
}
|
|
@@ -796,7 +796,7 @@ const numericAttributes2Payload = async (msg, meta, model, options, dataObject)
|
|
|
796
796
|
}
|
|
797
797
|
else {
|
|
798
798
|
// next values update only when curtain finished initial setup and knows current position
|
|
799
|
-
// @ts-expect-error
|
|
799
|
+
// @ts-expect-error ignore
|
|
800
800
|
payload.options = { ...payload.options, reverse_direction: value[2] == '\u0001', hand_open: value[5] == '\u0000' };
|
|
801
801
|
}
|
|
802
802
|
break;
|
|
@@ -884,7 +884,7 @@ const numericAttributes2Payload = async (msg, meta, model, options, dataObject)
|
|
|
884
884
|
break;
|
|
885
885
|
case '65281':
|
|
886
886
|
{
|
|
887
|
-
// @ts-expect-error
|
|
887
|
+
// @ts-expect-error ignore
|
|
888
888
|
const payload65281 = await (0, exports.numericAttributes2Payload)(msg, meta, model, options, value);
|
|
889
889
|
payload = { ...payload, ...payload65281 };
|
|
890
890
|
}
|
|
@@ -893,13 +893,13 @@ const numericAttributes2Payload = async (msg, meta, model, options, dataObject)
|
|
|
893
893
|
// This is a a complete structure with attributes, like element 0 for state, element 1 for voltage...
|
|
894
894
|
// At this moment we only extract what we are sure, for example, position 0 seems to be always 1 for a
|
|
895
895
|
// occupancy sensor, so we ignore it at this moment
|
|
896
|
-
// @ts-expect-error
|
|
896
|
+
// @ts-expect-error ignore
|
|
897
897
|
payload.voltage = value[1].elmVal;
|
|
898
898
|
if (model.meta && model.meta.battery && model.meta.battery.voltageToPercentage) {
|
|
899
899
|
(0, utils_1.assertNumber)(payload.voltage);
|
|
900
900
|
payload.battery = (0, utils_1.batteryVoltageToPercentage)(payload.voltage, model.meta.battery.voltageToPercentage);
|
|
901
901
|
}
|
|
902
|
-
// @ts-expect-error
|
|
902
|
+
// @ts-expect-error ignore
|
|
903
903
|
payload.power_outage_count = value[4].elmVal - 1;
|
|
904
904
|
break;
|
|
905
905
|
case 'mode':
|
|
@@ -1100,7 +1100,7 @@ function writeDaySelection(buffer, offset, selectedDays) {
|
|
|
1100
1100
|
validateDaySelection(selectedDays);
|
|
1101
1101
|
const bitMap = dayNames.reduce((repeat, dayName, index) => {
|
|
1102
1102
|
const isDaySelected = selectedDays.includes(dayName);
|
|
1103
|
-
// @ts-expect-error
|
|
1103
|
+
// @ts-expect-error ignore
|
|
1104
1104
|
return repeat | (isDaySelected << (index + 1));
|
|
1105
1105
|
}, 0);
|
|
1106
1106
|
buffer.writeUInt8(bitMap, offset);
|
|
@@ -1325,7 +1325,7 @@ exports.trv = {
|
|
|
1325
1325
|
const stringifiedScheduleFragments = stringifiedSchedule.split(stringifiedScheduleFragmentSeparator);
|
|
1326
1326
|
stringifiedScheduleFragments.forEach((fragment, index) => {
|
|
1327
1327
|
if (index === 0) {
|
|
1328
|
-
// @ts-expect-error
|
|
1328
|
+
// @ts-expect-error ignore
|
|
1329
1329
|
schedule.days.push(...fragment.split(stringifiedScheduleValueSeparator));
|
|
1330
1330
|
}
|
|
1331
1331
|
else {
|
|
@@ -1661,9 +1661,9 @@ exports.lumiModernExtend = {
|
|
|
1661
1661
|
// there is however an outage counter published in the 'special' buffer data reported
|
|
1662
1662
|
// under the manuSpecificLumi cluster as attribute 247, we simple decode and grab value with ID 5.
|
|
1663
1663
|
// Normal attribute publishing and decoding will be left to the classic fromZigbee or modernExtends.
|
|
1664
|
-
if (msg.data
|
|
1664
|
+
if (msg.data['247'] !== undefined) {
|
|
1665
1665
|
const dataDecoded = (0, exports.buffer2DataObject)(model, msg.data['247']);
|
|
1666
|
-
if (dataDecoded
|
|
1666
|
+
if (dataDecoded['5'] !== undefined) {
|
|
1667
1667
|
(0, utils_1.assertNumber)(dataDecoded['5']);
|
|
1668
1668
|
const currentOutageCount = dataDecoded['5'] - 1;
|
|
1669
1669
|
const previousOutageCount = meta.device?.meta?.outageCount ? meta.device.meta.outageCount : 0;
|
|
@@ -1680,7 +1680,7 @@ exports.lumiModernExtend = {
|
|
|
1680
1680
|
await endpoint.bind(b.cluster.name, b.target);
|
|
1681
1681
|
}
|
|
1682
1682
|
catch (error) {
|
|
1683
|
-
logger_1.logger.debug(`Failed to re-bind ${b.cluster.name} from ${b.target} for ${msg.device.ieeeAddr}
|
|
1683
|
+
logger_1.logger.debug(`Failed to re-bind ${b.cluster.name} from ${b.target} for ${msg.device.ieeeAddr} (${error})`, NS);
|
|
1684
1684
|
}
|
|
1685
1685
|
}
|
|
1686
1686
|
// restore reporting
|
|
@@ -1695,7 +1695,7 @@ exports.lumiModernExtend = {
|
|
|
1695
1695
|
},
|
|
1696
1696
|
]);
|
|
1697
1697
|
}
|
|
1698
|
-
catch
|
|
1698
|
+
catch {
|
|
1699
1699
|
logger_1.logger.debug(`Failed to re-setup reporting of ${c.cluster.name}/${c.attribute.name} for ${msg.device.ieeeAddr}.`, NS);
|
|
1700
1700
|
}
|
|
1701
1701
|
}
|
|
@@ -1843,7 +1843,7 @@ exports.lumiModernExtend = {
|
|
|
1843
1843
|
cluster: 'manuSpecificLumi',
|
|
1844
1844
|
type: ['attributeReport', 'readResponse'],
|
|
1845
1845
|
convert: (model, msg, publish, options, meta) => {
|
|
1846
|
-
if (msg.data
|
|
1846
|
+
if (msg.data[652] !== undefined) {
|
|
1847
1847
|
const actionLookup = {
|
|
1848
1848
|
1: 'slider_single',
|
|
1849
1849
|
2: 'slider_double',
|
|
@@ -1912,7 +1912,7 @@ exports.lumiModernExtend = {
|
|
|
1912
1912
|
cluster: 'ssIasZone',
|
|
1913
1913
|
type: ['attributeReport', 'readResponse'],
|
|
1914
1914
|
convert: (model, msg, publish, options, meta) => {
|
|
1915
|
-
if (msg.data
|
|
1915
|
+
if (msg.data[45] !== undefined) {
|
|
1916
1916
|
const zoneStatus = msg.data[45];
|
|
1917
1917
|
const actionLookup = { 1: 'shake', 2: 'triple_strike' };
|
|
1918
1918
|
return { action: actionLookup[zoneStatus] };
|
|
@@ -1931,12 +1931,12 @@ exports.lumiModernExtend = {
|
|
|
1931
1931
|
type: ['attributeReport', 'readResponse'],
|
|
1932
1932
|
convert: (model, msg, publish, options, meta) => {
|
|
1933
1933
|
const payload = {};
|
|
1934
|
-
if (msg.data
|
|
1934
|
+
if (msg.data[args.deviceTemperatureAttribute] !== undefined) {
|
|
1935
1935
|
const value = msg.data[args.deviceTemperatureAttribute];
|
|
1936
1936
|
(0, utils_1.assertNumber)(value);
|
|
1937
1937
|
payload['device_temperature'] = value;
|
|
1938
1938
|
}
|
|
1939
|
-
if (msg.data
|
|
1939
|
+
if (msg.data[args.powerOutageCountAttribute] !== undefined) {
|
|
1940
1940
|
const value = msg.data[args.powerOutageCountAttribute];
|
|
1941
1941
|
(0, utils_1.assertNumber)(value);
|
|
1942
1942
|
payload['power_outage_count'] = value - 1;
|
|
@@ -1965,7 +1965,7 @@ exports.lumiModernExtend = {
|
|
|
1965
1965
|
cluster: 'manuSpecificLumi',
|
|
1966
1966
|
type: ['attributeReport', 'readResponse'],
|
|
1967
1967
|
convert: (model, msg, publish, options, meta) => {
|
|
1968
|
-
if (msg.data
|
|
1968
|
+
if (msg.data[570] !== undefined) {
|
|
1969
1969
|
const act = { 1: 'start_rotating', 2: 'rotation', 3: 'stop_rotating' };
|
|
1970
1970
|
const state = { 0: 'released', 128: 'pressed' };
|
|
1971
1971
|
return {
|
|
@@ -2374,7 +2374,7 @@ exports.fromZigbee = {
|
|
|
2374
2374
|
cluster: 'msPressureMeasurement',
|
|
2375
2375
|
type: ['attributeReport', 'readResponse'],
|
|
2376
2376
|
convert: async (model, msg, publish, options, meta) => {
|
|
2377
|
-
const result =
|
|
2377
|
+
const result = fromZigbee_1.default.pressure.convert(model, msg, publish, options, meta);
|
|
2378
2378
|
if (result && result.pressure > 500 && result.pressure < 2000) {
|
|
2379
2379
|
return result;
|
|
2380
2380
|
}
|
|
@@ -2389,16 +2389,16 @@ exports.fromZigbee = {
|
|
|
2389
2389
|
Object.entries(msg.data).forEach(([key, value]) => {
|
|
2390
2390
|
switch (parseInt(key)) {
|
|
2391
2391
|
case 0xfff1: {
|
|
2392
|
-
// @ts-expect-error
|
|
2392
|
+
// @ts-expect-error ignore
|
|
2393
2393
|
if (value.length < 8) {
|
|
2394
2394
|
logger_1.logger.debug(`Cannot handle ${value}, frame too small`, 'zhc:lumi:feeder');
|
|
2395
2395
|
return;
|
|
2396
2396
|
}
|
|
2397
|
-
// @ts-expect-error
|
|
2397
|
+
// @ts-expect-error ignore
|
|
2398
2398
|
const attr = value.slice(3, 7);
|
|
2399
|
-
// @ts-expect-error
|
|
2399
|
+
// @ts-expect-error ignore
|
|
2400
2400
|
const len = value.slice(7, 8).readUInt8();
|
|
2401
|
-
// @ts-expect-error
|
|
2401
|
+
// @ts-expect-error ignore
|
|
2402
2402
|
const val = value.slice(8, 8 + len);
|
|
2403
2403
|
switch (attr.readInt32BE()) {
|
|
2404
2404
|
case 0x04150055: // feeding
|
|
@@ -2486,7 +2486,7 @@ exports.fromZigbee = {
|
|
|
2486
2486
|
result['system_mode'] = (0, utils_1.getFromLookup)(value, { 1: 'heat', 0: 'off' });
|
|
2487
2487
|
break;
|
|
2488
2488
|
case 0x0272:
|
|
2489
|
-
// @ts-expect-error
|
|
2489
|
+
// @ts-expect-error ignore
|
|
2490
2490
|
Object.assign(result, exports.trv.decodePreset(value));
|
|
2491
2491
|
break;
|
|
2492
2492
|
case 0x0273:
|
|
@@ -2518,7 +2518,7 @@ exports.fromZigbee = {
|
|
|
2518
2518
|
result['valve_alarm'] = (0, utils_1.getFromLookup)(value, { 1: true, 0: false });
|
|
2519
2519
|
break;
|
|
2520
2520
|
case 247: {
|
|
2521
|
-
// @ts-expect-error
|
|
2521
|
+
// @ts-expect-error ignore
|
|
2522
2522
|
const heartbeat = exports.trv.decodeHeartbeat(meta, model, value);
|
|
2523
2523
|
logger_1.logger.debug(`${model.model}: Processed heartbeat message into payload ${JSON.stringify(heartbeat)}`, 'zhc:lumi:trv');
|
|
2524
2524
|
if (heartbeat.firmware_version) {
|
|
@@ -2527,7 +2527,7 @@ exports.fromZigbee = {
|
|
|
2527
2527
|
// This is not reflected in the frontend unless the device is reconfigured
|
|
2528
2528
|
// or the whole service restarted.
|
|
2529
2529
|
// See https://github.com/Koenkk/zigbee-herdsman-converters/pull/5363#discussion_r1081477047
|
|
2530
|
-
// @ts-expect-error
|
|
2530
|
+
// @ts-expect-error ignore
|
|
2531
2531
|
meta.device.softwareBuildID = heartbeat.firmware_version;
|
|
2532
2532
|
delete heartbeat.firmware_version;
|
|
2533
2533
|
}
|
|
@@ -2581,9 +2581,9 @@ exports.fromZigbee = {
|
|
|
2581
2581
|
break;
|
|
2582
2582
|
}
|
|
2583
2583
|
const [regionIdRaw, eventTypeCodeRaw] = value;
|
|
2584
|
-
// @ts-expect-error
|
|
2584
|
+
// @ts-expect-error ignore
|
|
2585
2585
|
const regionId = parseInt(regionIdRaw, 10);
|
|
2586
|
-
// @ts-expect-error
|
|
2586
|
+
// @ts-expect-error ignore
|
|
2587
2587
|
const eventTypeCode = parseInt(eventTypeCodeRaw, 10);
|
|
2588
2588
|
if (Number.isNaN(regionId)) {
|
|
2589
2589
|
logger_1.logger.warning(`Action: Invalid regionId "${regionIdRaw}"`, NS);
|
|
@@ -2645,16 +2645,16 @@ exports.fromZigbee = {
|
|
|
2645
2645
|
type: ['attributeReport', 'readResponse'],
|
|
2646
2646
|
options: [exposes.options.occupancy_timeout_2(), exposes.options.no_occupancy_since_true()],
|
|
2647
2647
|
convert: (model, msg, publish, options, meta) => {
|
|
2648
|
-
if (msg.data.
|
|
2648
|
+
if (msg.data.illuminance !== undefined) {
|
|
2649
2649
|
// The occupancy sensor only sends a message when motion detected.
|
|
2650
2650
|
// Therefore we need to publish the no_motion detected by ourselves.
|
|
2651
|
-
let timeout = meta && meta.state && meta.state.
|
|
2651
|
+
let timeout = meta && meta.state && meta.state.detection_interval !== undefined
|
|
2652
2652
|
? Number(meta.state.detection_interval)
|
|
2653
2653
|
: ['RTCGQ14LM'].includes(model.model)
|
|
2654
2654
|
? 30
|
|
2655
2655
|
: 60;
|
|
2656
2656
|
timeout =
|
|
2657
|
-
options && options.
|
|
2657
|
+
options && options.occupancy_timeout !== undefined && Number(options.occupancy_timeout) >= timeout
|
|
2658
2658
|
? Number(options.occupancy_timeout)
|
|
2659
2659
|
: timeout + 2;
|
|
2660
2660
|
// Stop existing timers because motion is detected and set a new one.
|
|
@@ -2696,14 +2696,14 @@ exports.fromZigbee = {
|
|
|
2696
2696
|
convert: (model, msg, publish, options, meta) => {
|
|
2697
2697
|
const result = {};
|
|
2698
2698
|
const invert = model.meta && model.meta.coverInverted ? !options.invert_cover : options.invert_cover;
|
|
2699
|
-
if (msg.data.
|
|
2699
|
+
if (msg.data.currentPositionLiftPercentage !== undefined && msg.data['currentPositionLiftPercentage'] <= 100) {
|
|
2700
2700
|
const value = msg.data['currentPositionLiftPercentage'];
|
|
2701
2701
|
const position = invert ? 100 - value : value;
|
|
2702
2702
|
const state = invert ? (position > 0 ? 'CLOSE' : 'OPEN') : position > 0 ? 'OPEN' : 'CLOSE';
|
|
2703
2703
|
result[(0, utils_1.postfixWithEndpointName)('position', msg, model, meta)] = position;
|
|
2704
2704
|
result[(0, utils_1.postfixWithEndpointName)('state', msg, model, meta)] = state;
|
|
2705
2705
|
}
|
|
2706
|
-
if (msg.data.
|
|
2706
|
+
if (msg.data.currentPositionTiltPercentage !== undefined && msg.data['currentPositionTiltPercentage'] <= 100) {
|
|
2707
2707
|
const value = msg.data['currentPositionTiltPercentage'];
|
|
2708
2708
|
result[(0, utils_1.postfixWithEndpointName)('tilt', msg, model, meta)] = invert ? 100 - value : value;
|
|
2709
2709
|
}
|
|
@@ -2718,7 +2718,7 @@ exports.fromZigbee = {
|
|
|
2718
2718
|
if (model.meta && !model.meta.multiEndpoint) {
|
|
2719
2719
|
const mappingMode = { 0x12: 'control_relay', 0xfe: 'decoupled' };
|
|
2720
2720
|
const key = 0xff22;
|
|
2721
|
-
if (msg.data
|
|
2721
|
+
if (msg.data[key] !== undefined) {
|
|
2722
2722
|
payload.operation_mode = mappingMode[msg.data[key]];
|
|
2723
2723
|
}
|
|
2724
2724
|
}
|
|
@@ -2726,7 +2726,7 @@ exports.fromZigbee = {
|
|
|
2726
2726
|
const mappingButton = { 0xff22: 'left', 0xff23: 'right' };
|
|
2727
2727
|
const mappingMode = { 0x12: 'control_left_relay', 0x22: 'control_right_relay', 0xfe: 'decoupled' };
|
|
2728
2728
|
for (const key in mappingButton) {
|
|
2729
|
-
if (msg.data
|
|
2729
|
+
if (msg.data[key] !== undefined) {
|
|
2730
2730
|
payload[`operation_mode_${mappingButton[key]}`] = mappingMode[msg.data[key]];
|
|
2731
2731
|
}
|
|
2732
2732
|
}
|
|
@@ -2753,7 +2753,7 @@ exports.fromZigbee = {
|
|
|
2753
2753
|
type: ['attributeReport', 'readResponse'],
|
|
2754
2754
|
convert: (model, msg, publish, options, meta) => {
|
|
2755
2755
|
// Lumi wall switches use endpoint 4, 5 or 6 to indicate an action on the button so we have to skip that.
|
|
2756
|
-
if (msg.data.
|
|
2756
|
+
if (msg.data.onOff !== undefined && ![4, 5, 6].includes(msg.endpoint.ID)) {
|
|
2757
2757
|
const property = (0, utils_1.postfixWithEndpointName)('state', msg, model, meta);
|
|
2758
2758
|
return { [property]: msg.data['onOff'] === 1 ? 'ON' : 'OFF' };
|
|
2759
2759
|
}
|
|
@@ -2772,7 +2772,7 @@ exports.fromZigbee = {
|
|
|
2772
2772
|
// for lumi.curtain.acn002
|
|
2773
2773
|
if (['ZNJLBL01LM'].includes(model.model))
|
|
2774
2774
|
lookup = { 0: 'closing', 1: 'opening', 2: 'stopped', 3: 'blocked' };
|
|
2775
|
-
if (data && data.
|
|
2775
|
+
if (data && data.presentValue !== undefined) {
|
|
2776
2776
|
const value = data['presentValue'];
|
|
2777
2777
|
if (value < 2) {
|
|
2778
2778
|
running = true;
|
|
@@ -2788,13 +2788,13 @@ exports.fromZigbee = {
|
|
|
2788
2788
|
cluster: 'manuSpecificLumi',
|
|
2789
2789
|
type: ['attributeReport', 'readResponse'],
|
|
2790
2790
|
convert: (model, msg, publish, options, meta) => {
|
|
2791
|
-
if (msg.data.
|
|
2791
|
+
if (msg.data.curtainHandOpen !== undefined) {
|
|
2792
2792
|
return { hand_open: msg.data['curtainHandOpen'] === 0 };
|
|
2793
2793
|
}
|
|
2794
|
-
else if (msg.data.
|
|
2794
|
+
else if (msg.data.curtainReverse !== undefined) {
|
|
2795
2795
|
return { reverse_direction: msg.data['curtainReverse'] === 1 };
|
|
2796
2796
|
}
|
|
2797
|
-
else if (msg.data.
|
|
2797
|
+
else if (msg.data.curtainCalibrated !== undefined) {
|
|
2798
2798
|
return { limits_calibration: msg.data['curtainCalibrated'] === 1 ? 'calibrated' : 'recalibrate' };
|
|
2799
2799
|
}
|
|
2800
2800
|
},
|
|
@@ -2817,7 +2817,7 @@ exports.fromZigbee = {
|
|
|
2817
2817
|
// Therefore we need to publish a no_vibration message on our own.
|
|
2818
2818
|
if (result.action === 'vibration') {
|
|
2819
2819
|
result.vibration = true;
|
|
2820
|
-
const timeout = options && options.
|
|
2820
|
+
const timeout = options && options.vibration_timeout !== undefined ? Number(options.vibration_timeout) : 90;
|
|
2821
2821
|
// Stop any existing timer cause vibration detected
|
|
2822
2822
|
clearTimeout(globalStore.getValue(msg.endpoint, 'vibration_timer', null));
|
|
2823
2823
|
globalStore.putValue(msg.endpoint, 'vibration_timer', null);
|
|
@@ -2904,9 +2904,9 @@ exports.fromZigbee = {
|
|
|
2904
2904
|
}
|
|
2905
2905
|
// The occupancy sensor only sends a message when motion detected.
|
|
2906
2906
|
// Therefore we need to publish the no_motion detected by ourselves.
|
|
2907
|
-
let timeout = meta && meta.state && meta.state.
|
|
2907
|
+
let timeout = meta && meta.state && meta.state.detection_interval !== undefined ? Number(meta.state.detection_interval) : 60;
|
|
2908
2908
|
timeout =
|
|
2909
|
-
options && options.
|
|
2909
|
+
options && options.occupancy_timeout !== undefined && Number(options.occupancy_timeout) >= timeout
|
|
2910
2910
|
? Number(options.occupancy_timeout)
|
|
2911
2911
|
: timeout + 2;
|
|
2912
2912
|
// Stop existing timers because motion is detected and set a new one.
|
|
@@ -2940,7 +2940,7 @@ exports.fromZigbee = {
|
|
|
2940
2940
|
const data = msg.data;
|
|
2941
2941
|
if (data && data['65281']) {
|
|
2942
2942
|
const basicAttrs = data['65281'];
|
|
2943
|
-
if (basicAttrs
|
|
2943
|
+
if (basicAttrs['100'] !== undefined) {
|
|
2944
2944
|
return { gas_density: basicAttrs['100'] };
|
|
2945
2945
|
}
|
|
2946
2946
|
}
|
|
@@ -2952,7 +2952,7 @@ exports.fromZigbee = {
|
|
|
2952
2952
|
convert: (model, msg, publish, options, meta) => {
|
|
2953
2953
|
const data = msg.data;
|
|
2954
2954
|
const lookup = { '1': 'low', '2': 'medium', '3': 'high' };
|
|
2955
|
-
if (data && data
|
|
2955
|
+
if (data && data['65520'] !== undefined) {
|
|
2956
2956
|
const value = data['65520'];
|
|
2957
2957
|
if (value && value.startsWith('0x020')) {
|
|
2958
2958
|
return {
|
|
@@ -2966,7 +2966,7 @@ exports.fromZigbee = {
|
|
|
2966
2966
|
cluster: 'genPowerCfg',
|
|
2967
2967
|
type: ['attributeReport', 'readResponse'],
|
|
2968
2968
|
convert: (model, msg, publish, options, meta) => {
|
|
2969
|
-
if (msg.data.
|
|
2969
|
+
if (msg.data.batteryAlarmMask !== undefined) {
|
|
2970
2970
|
return { battery_low: msg.data['batteryAlarmMask'] === 1 };
|
|
2971
2971
|
}
|
|
2972
2972
|
},
|
|
@@ -3328,65 +3328,65 @@ exports.fromZigbee = {
|
|
|
3328
3328
|
type: ['attributeReport', 'readResponse'],
|
|
3329
3329
|
convert: (model, msg, publish, options, meta) => {
|
|
3330
3330
|
const result = {};
|
|
3331
|
-
if (msg.data
|
|
3331
|
+
if (msg.data[0x0215] !== undefined) {
|
|
3332
3332
|
const lookup = { 0: 'classic', 1: 'concise' };
|
|
3333
3333
|
result.theme = lookup[msg.data[0x0215]];
|
|
3334
3334
|
}
|
|
3335
|
-
if (msg.data
|
|
3335
|
+
if (msg.data[0x0214] !== undefined) {
|
|
3336
3336
|
const lookup = { 1: 'classic', 2: 'analog clock' };
|
|
3337
3337
|
result.screen_saver_style = lookup[msg.data[0x0214]];
|
|
3338
3338
|
}
|
|
3339
|
-
if (msg.data
|
|
3339
|
+
if (msg.data[0x0213] !== undefined) {
|
|
3340
3340
|
result.standby_enabled = msg.data[0x0213] & 1 ? true : false;
|
|
3341
3341
|
}
|
|
3342
|
-
if (msg.data
|
|
3342
|
+
if (msg.data[0x0212] !== undefined) {
|
|
3343
3343
|
const lookup = { 0: 'mute', 1: 'low', 2: 'medium', 3: 'high' };
|
|
3344
3344
|
result.beep_volume = lookup[msg.data[0x0212]];
|
|
3345
3345
|
}
|
|
3346
|
-
if (msg.data
|
|
3346
|
+
if (msg.data[0x0211] !== undefined) {
|
|
3347
3347
|
result.lcd_brightness = msg.data[0x0211];
|
|
3348
3348
|
}
|
|
3349
|
-
if (msg.data
|
|
3349
|
+
if (msg.data[0x022b] !== undefined) {
|
|
3350
3350
|
const lookup = { 0: 'none', 1: '1', 2: '2', 3: '1 and 2', 4: '3', 5: '1 and 3', 6: '2 and 3', 7: 'all' };
|
|
3351
3351
|
result.available_switches = lookup[msg.data[0x022b]];
|
|
3352
3352
|
}
|
|
3353
|
-
if (msg.data
|
|
3353
|
+
if (msg.data[0x217] !== undefined) {
|
|
3354
3354
|
const lookup = { 3: 'small', 4: 'medium', 5: 'large' };
|
|
3355
3355
|
result.font_size = lookup[msg.data[0x217]];
|
|
3356
3356
|
}
|
|
3357
|
-
if (msg.data
|
|
3357
|
+
if (msg.data[0x219] !== undefined) {
|
|
3358
3358
|
const lookup = { 0: 'scene', 1: 'feel', 2: 'thermostat', 3: 'switch' };
|
|
3359
3359
|
result.homepage = lookup[msg.data[0x219]];
|
|
3360
3360
|
}
|
|
3361
|
-
if (msg.data
|
|
3361
|
+
if (msg.data[0x210] !== undefined) {
|
|
3362
3362
|
const lookup = { 0: 'chinese', 1: 'english' };
|
|
3363
3363
|
result.language = lookup[msg.data[0x210]];
|
|
3364
3364
|
}
|
|
3365
|
-
if (msg.data
|
|
3365
|
+
if (msg.data[0x216] !== undefined) {
|
|
3366
3366
|
result.standby_time = msg.data[0x216];
|
|
3367
3367
|
}
|
|
3368
|
-
if (msg.data
|
|
3368
|
+
if (msg.data[0x218] !== undefined) {
|
|
3369
3369
|
result.lcd_auto_brightness_enabled = msg.data[0x218] & 1 ? true : false;
|
|
3370
3370
|
}
|
|
3371
|
-
if (msg.data
|
|
3371
|
+
if (msg.data[0x221] !== undefined) {
|
|
3372
3372
|
result.screen_saver_enabled = msg.data[0x221] & 1 ? true : false;
|
|
3373
3373
|
}
|
|
3374
|
-
if (msg.data
|
|
3374
|
+
if (msg.data[0x222] !== undefined) {
|
|
3375
3375
|
result.standby_lcd_brightness = msg.data[0x222];
|
|
3376
3376
|
}
|
|
3377
|
-
if (msg.data
|
|
3377
|
+
if (msg.data[0x223] !== undefined) {
|
|
3378
3378
|
const lookup = { 1: '1', 2: '2', 3: '3', 4: '4', 5: '5', 6: '6', 7: '7', 8: '8', 9: '9', 10: '10', 11: '11' };
|
|
3379
3379
|
const textarr = msg.data[0x223].slice(1, msg.data[0x223].length);
|
|
3380
3380
|
result.switch_1_icon = lookup[msg.data[0x223][0]];
|
|
3381
3381
|
result.switch_1_text = String.fromCharCode(...textarr);
|
|
3382
3382
|
}
|
|
3383
|
-
if (msg.data
|
|
3383
|
+
if (msg.data[0x224] !== undefined) {
|
|
3384
3384
|
const lookup = { 1: '1', 2: '2', 3: '3', 4: '4', 5: '5', 6: '6', 7: '7', 8: '8', 9: '9', 10: '10', 11: '11' };
|
|
3385
3385
|
const textarr = msg.data[0x224].slice(1, msg.data[0x224].length);
|
|
3386
3386
|
result.switch_2_icon = lookup[msg.data[0x224][0]];
|
|
3387
3387
|
result.switch_2_text = String.fromCharCode(...textarr);
|
|
3388
3388
|
}
|
|
3389
|
-
if (msg.data
|
|
3389
|
+
if (msg.data[0x225] !== undefined) {
|
|
3390
3390
|
const lookup = { 1: '1', 2: '2', 3: '3', 4: '4', 5: '5', 6: '6', 7: '7', 8: '8', 9: '9', 10: '10', 11: '11' };
|
|
3391
3391
|
const textarr = msg.data[0x225].slice(1, msg.data[0x225].length);
|
|
3392
3392
|
result.switch_3_icon = lookup[msg.data[0x225][0]];
|
|
@@ -3523,11 +3523,11 @@ exports.toZigbee = {
|
|
|
3523
3523
|
key: ['feed', 'schedule', 'led_indicator', 'child_lock', 'mode', 'serving_size', 'portion_weight'],
|
|
3524
3524
|
convertSet: async (entity, key, value, meta) => {
|
|
3525
3525
|
const sendAttr = async (attrCode, value, length) => {
|
|
3526
|
-
// @ts-expect-error
|
|
3526
|
+
// @ts-expect-error ignore
|
|
3527
3527
|
entity.sendSeq = ((entity.sendSeq || 0) + 1) % 256;
|
|
3528
|
-
// @ts-expect-error
|
|
3528
|
+
// @ts-expect-error ignore
|
|
3529
3529
|
const val = node_buffer_1.Buffer.from([0x00, 0x02, entity.sendSeq, 0, 0, 0, 0, 0]);
|
|
3530
|
-
// @ts-expect-error
|
|
3530
|
+
// @ts-expect-error ignore
|
|
3531
3531
|
entity.sendSeq += 1;
|
|
3532
3532
|
val.writeInt32BE(attrCode, 3);
|
|
3533
3533
|
val.writeUInt8(length, 7);
|
|
@@ -3543,7 +3543,7 @@ exports.toZigbee = {
|
|
|
3543
3543
|
v.writeUInt32BE(value);
|
|
3544
3544
|
break;
|
|
3545
3545
|
default:
|
|
3546
|
-
// @ts-expect-error
|
|
3546
|
+
// @ts-expect-error ignore
|
|
3547
3547
|
v = value;
|
|
3548
3548
|
}
|
|
3549
3549
|
await entity.write('manuSpecificLumi', { 0xfff1: { value: node_buffer_1.Buffer.concat([val, v]), type: 0x41 } }, { manufacturerCode: exports.manufacturerCode });
|
|
@@ -3554,13 +3554,13 @@ exports.toZigbee = {
|
|
|
3554
3554
|
break;
|
|
3555
3555
|
case 'schedule': {
|
|
3556
3556
|
const schedule = [];
|
|
3557
|
-
// @ts-expect-error
|
|
3557
|
+
// @ts-expect-error ignore
|
|
3558
3558
|
value.forEach((item) => {
|
|
3559
3559
|
const schedItem = node_buffer_1.Buffer.from([(0, utils_1.getKey)(feederDaysLookup, item.days, 0x7f), item.hour, item.minute, item.size, 0]);
|
|
3560
3560
|
schedule.push(schedItem.toString('hex'));
|
|
3561
3561
|
});
|
|
3562
3562
|
const val = node_buffer_1.Buffer.concat([node_buffer_1.Buffer.from(schedule.join(',')), node_buffer_1.Buffer.from([0])]);
|
|
3563
|
-
// @ts-expect-error
|
|
3563
|
+
// @ts-expect-error ignore
|
|
3564
3564
|
await sendAttr(0x080008c8, val, val.length);
|
|
3565
3565
|
break;
|
|
3566
3566
|
}
|
|
@@ -3574,11 +3574,11 @@ exports.toZigbee = {
|
|
|
3574
3574
|
await sendAttr(0x04180055, (0, utils_1.getFromLookup)(value, { manual: 0, schedule: 1 }), 1);
|
|
3575
3575
|
break;
|
|
3576
3576
|
case 'serving_size':
|
|
3577
|
-
// @ts-expect-error
|
|
3577
|
+
// @ts-expect-error ignore
|
|
3578
3578
|
await sendAttr(0x0e5c0055, value, 4);
|
|
3579
3579
|
break;
|
|
3580
3580
|
case 'portion_weight':
|
|
3581
|
-
// @ts-expect-error
|
|
3581
|
+
// @ts-expect-error ignore
|
|
3582
3582
|
await sendAttr(0x0e5f0055, value, 4);
|
|
3583
3583
|
break;
|
|
3584
3584
|
default: // Unknown key
|
|
@@ -3758,7 +3758,7 @@ exports.toZigbee = {
|
|
|
3758
3758
|
}, { manufacturerCode: exports.manufacturerCode });
|
|
3759
3759
|
break;
|
|
3760
3760
|
case 'schedule_settings': {
|
|
3761
|
-
// @ts-expect-error
|
|
3761
|
+
// @ts-expect-error ignore
|
|
3762
3762
|
const schedule = exports.trv.parseSchedule(value);
|
|
3763
3763
|
exports.trv.validateSchedule(schedule);
|
|
3764
3764
|
const buffer = exports.trv.encodeSchedule(schedule);
|
|
@@ -3782,9 +3782,7 @@ exports.toZigbee = {
|
|
|
3782
3782
|
schedule: 0x027d,
|
|
3783
3783
|
schedule_settings: 0x0276,
|
|
3784
3784
|
};
|
|
3785
|
-
|
|
3786
|
-
await entity.read('manuSpecificLumi', [(0, utils_1.getFromLookup)(key, dict)], { manufacturerCode: exports.manufacturerCode });
|
|
3787
|
-
}
|
|
3785
|
+
await entity.read('manuSpecificLumi', [(0, utils_1.getFromLookup)(key, dict)], { manufacturerCode: exports.manufacturerCode });
|
|
3788
3786
|
},
|
|
3789
3787
|
},
|
|
3790
3788
|
lumi_presence_region_upsert: {
|
|
@@ -3841,7 +3839,7 @@ exports.toZigbee = {
|
|
|
3841
3839
|
const commandWrapper = exports.presence.parseAqaraFp1RegionDeleteInput(value);
|
|
3842
3840
|
if (!commandWrapper.isSuccess) {
|
|
3843
3841
|
logger_1.logger.warning(
|
|
3844
|
-
// @ts-expect-error
|
|
3842
|
+
// @ts-expect-error ignore
|
|
3845
3843
|
`Encountered an error (${commandWrapper.error.reason}) while parsing configuration commands (input: ${JSON.stringify(value)})`, NS);
|
|
3846
3844
|
return;
|
|
3847
3845
|
}
|
|
@@ -3888,7 +3886,7 @@ exports.toZigbee = {
|
|
|
3888
3886
|
(0, utils_1.assertEndpoint)(entity);
|
|
3889
3887
|
if (Array.isArray(meta.mapped))
|
|
3890
3888
|
throw new Error(`Not supported for groups`);
|
|
3891
|
-
let targetValue = (0, utils_1.isObject)(value) && value.
|
|
3889
|
+
let targetValue = (0, utils_1.isObject)(value) && value.state !== undefined ? value.state : value;
|
|
3892
3890
|
// 1/2 gang switches using genBasic on endpoint 1.
|
|
3893
3891
|
let attrId;
|
|
3894
3892
|
let attrValue;
|
|
@@ -3936,7 +3934,7 @@ exports.toZigbee = {
|
|
|
3936
3934
|
key: ['operation_mode'],
|
|
3937
3935
|
convertSet: async (entity, key, value, meta) => {
|
|
3938
3936
|
// Support existing syntax of a nested object just for the state field. Though it's quite silly IMO.
|
|
3939
|
-
const targetValue = (0, utils_1.isObject)(value) && value.
|
|
3937
|
+
const targetValue = (0, utils_1.isObject)(value) && value.state !== undefined ? value.state : value;
|
|
3940
3938
|
// Switches using manuSpecificLumi 0x0200 on the same endpoints as the onOff clusters.
|
|
3941
3939
|
const lookupState = { control_relay: 0x01, decoupled: 0x00 };
|
|
3942
3940
|
await entity.write('manuSpecificLumi', { 0x0200: { value: (0, utils_1.getFromLookup)(targetValue, lookupState), type: 0x20 } }, manufacturerOptions.lumi);
|
|
@@ -4008,7 +4006,7 @@ exports.toZigbee = {
|
|
|
4008
4006
|
const lookup = { rgbw: 3, dual_ct: 1 };
|
|
4009
4007
|
(0, utils_1.assertString)(value, key);
|
|
4010
4008
|
value = value.toLowerCase();
|
|
4011
|
-
// @ts-expect-error
|
|
4009
|
+
// @ts-expect-error ignore
|
|
4012
4010
|
if (['rgbw'].includes(value)) {
|
|
4013
4011
|
await entity.write('manuSpecificLumi', { 0x0509: { value: (0, utils_1.getFromLookup)(value, lookup), type: 0x23 } }, manufacturerOptions.lumi);
|
|
4014
4012
|
await entity.write('manuSpecificLumi', { 0x050f: { value: 1, type: 0x23 } }, manufacturerOptions.lumi);
|
|
@@ -4123,7 +4121,7 @@ exports.toZigbee = {
|
|
|
4123
4121
|
}
|
|
4124
4122
|
else if (['ZNQBKG38LM', 'ZNQBKG39LM', 'ZNQBKG40LM', 'ZNQBKG41LM'].includes(meta.mapped.model)) {
|
|
4125
4123
|
// Support existing syntax of a nested object just for the state field. Though it's quite silly IMO.
|
|
4126
|
-
const targetValue = (0, utils_1.isObject)(value) && value.
|
|
4124
|
+
const targetValue = (0, utils_1.isObject)(value) && value.state !== undefined ? value.state : value;
|
|
4127
4125
|
const lookupState = { on: 0x01, electric_appliances_on: 0x00, electric_appliances_off: 0x02, inverted: 0x03 };
|
|
4128
4126
|
await entity.write('manuSpecificLumi', { 0x0517: { value: (0, utils_1.getFromLookup)(targetValue, lookupState), type: 0x20 } }, manufacturerOptions.lumi);
|
|
4129
4127
|
}
|
|
@@ -4382,9 +4380,9 @@ exports.toZigbee = {
|
|
|
4382
4380
|
...value,
|
|
4383
4381
|
};
|
|
4384
4382
|
// Legacy names
|
|
4385
|
-
if (value.
|
|
4383
|
+
if (value.auto_close !== undefined)
|
|
4386
4384
|
opts.hand_open = value.auto_close;
|
|
4387
|
-
if (value.
|
|
4385
|
+
if (value.reset_move !== undefined)
|
|
4388
4386
|
opts.reset_limits = value.reset_move;
|
|
4389
4387
|
if (meta.mapped.model === 'ZNCLDJ12LM') {
|
|
4390
4388
|
await entity.write('genBasic', { 0xff28: { value: opts.reverse_direction, type: 0x10 } }, manufacturerOptions.lumi);
|
|
@@ -4613,7 +4611,7 @@ exports.toZigbee = {
|
|
|
4613
4611
|
logger_1.logger.info('Moving curtain and waiting to reach the end position.', NS);
|
|
4614
4612
|
// Wait until the curtain gets into a moving state, then wait until it gets blocked or stopped
|
|
4615
4613
|
const waitForStateTransition = async (initialStates, desiredStates) => {
|
|
4616
|
-
return new Promise((resolve) => {
|
|
4614
|
+
return await new Promise((resolve) => {
|
|
4617
4615
|
const checkState = async () => {
|
|
4618
4616
|
const result = await entity.read('manuSpecificLumi', [0x0421]);
|
|
4619
4617
|
const state = result ? result[0x0421] : null;
|
|
@@ -4845,7 +4843,7 @@ exports.toZigbee = {
|
|
|
4845
4843
|
const payload = [];
|
|
4846
4844
|
const statearr = {};
|
|
4847
4845
|
(0, utils_1.assertObject)(value);
|
|
4848
|
-
if (value.
|
|
4846
|
+
if (value.switch_1_icon !== undefined) {
|
|
4849
4847
|
payload.push((0, utils_1.getFromLookup)(value.switch_1_icon, lookup));
|
|
4850
4848
|
statearr.switch_1_icon = value.switch_1_icon;
|
|
4851
4849
|
}
|
|
@@ -4853,12 +4851,12 @@ exports.toZigbee = {
|
|
|
4853
4851
|
payload.push(1);
|
|
4854
4852
|
statearr.switch_1_icon = '1';
|
|
4855
4853
|
}
|
|
4856
|
-
if (value.
|
|
4854
|
+
if (value.switch_1_text !== undefined) {
|
|
4857
4855
|
payload.push(...value.switch_1_text.split('').map((c) => c.charCodeAt(0)));
|
|
4858
4856
|
statearr.switch_1_text = value.switch_1_text;
|
|
4859
4857
|
}
|
|
4860
4858
|
else {
|
|
4861
|
-
// @ts-expect-error
|
|
4859
|
+
// @ts-expect-error ignore
|
|
4862
4860
|
payload.push(...''.text.split('').map((c) => c.charCodeAt(0)));
|
|
4863
4861
|
statearr.switch_1_text = '';
|
|
4864
4862
|
}
|
|
@@ -4870,7 +4868,7 @@ exports.toZigbee = {
|
|
|
4870
4868
|
const payload = [];
|
|
4871
4869
|
const statearr = {};
|
|
4872
4870
|
(0, utils_1.assertObject)(value);
|
|
4873
|
-
if (value.
|
|
4871
|
+
if (value.switch_2_icon !== undefined) {
|
|
4874
4872
|
payload.push((0, utils_1.getFromLookup)(value.switch_2_icon, lookup));
|
|
4875
4873
|
statearr.switch_2_icon = value.switch_2_icon;
|
|
4876
4874
|
}
|
|
@@ -4878,12 +4876,12 @@ exports.toZigbee = {
|
|
|
4878
4876
|
payload.push(1);
|
|
4879
4877
|
statearr.switch_2_icon = '1';
|
|
4880
4878
|
}
|
|
4881
|
-
if (value.
|
|
4879
|
+
if (value.switch_2_text !== undefined) {
|
|
4882
4880
|
payload.push(...value.switch_2_text.split('').map((c) => c.charCodeAt(0)));
|
|
4883
4881
|
statearr.switch_2_text = value.switch_2_text;
|
|
4884
4882
|
}
|
|
4885
4883
|
else {
|
|
4886
|
-
// @ts-expect-error
|
|
4884
|
+
// @ts-expect-error ignore
|
|
4887
4885
|
payload.push(...''.text.split('').map((c) => c.charCodeAt(0)));
|
|
4888
4886
|
statearr.switch_2_text = '';
|
|
4889
4887
|
}
|
|
@@ -4895,7 +4893,7 @@ exports.toZigbee = {
|
|
|
4895
4893
|
const payload = [];
|
|
4896
4894
|
const statearr = {};
|
|
4897
4895
|
(0, utils_1.assertObject)(value);
|
|
4898
|
-
if (value.
|
|
4896
|
+
if (value.switch_3_icon !== undefined) {
|
|
4899
4897
|
payload.push((0, utils_1.getFromLookup)(value.switch_3_icon, lookup));
|
|
4900
4898
|
statearr.switch_3_icon = value.switch_3_icon;
|
|
4901
4899
|
}
|
|
@@ -4903,12 +4901,12 @@ exports.toZigbee = {
|
|
|
4903
4901
|
payload.push(1);
|
|
4904
4902
|
statearr.switch_3_icon = '1';
|
|
4905
4903
|
}
|
|
4906
|
-
if (value.
|
|
4904
|
+
if (value.switch_3_text !== undefined) {
|
|
4907
4905
|
payload.push(...value.switch_3_text.split('').map((c) => c.charCodeAt(0)));
|
|
4908
4906
|
statearr.switch_3_text = value.switch_3_text;
|
|
4909
4907
|
}
|
|
4910
4908
|
else {
|
|
4911
|
-
// @ts-expect-error
|
|
4909
|
+
// @ts-expect-error ignore
|
|
4912
4910
|
payload.push(...''.text.split('').map((c) => c.charCodeAt(0)));
|
|
4913
4911
|
statearr.switch_3_text = '';
|
|
4914
4912
|
}
|
|
@@ -4947,7 +4945,7 @@ exports.legacyFromZigbee = {
|
|
|
4947
4945
|
legacyFromZigbeeStore[key].long_timer = setTimeout(() => {
|
|
4948
4946
|
legacyFromZigbeeStore[key].long = false;
|
|
4949
4947
|
}, 4000); // After 4000 milliseconds of not receiving long_release we assume it will not happen.
|
|
4950
|
-
// @ts-expect-error
|
|
4948
|
+
// @ts-expect-error ignore
|
|
4951
4949
|
}, options.long_timeout || 1000); // After 1000 milliseconds of not releasing we assume long click.
|
|
4952
4950
|
}
|
|
4953
4951
|
else if (state === 1) {
|