@willieee802/zigbee-herdsman-converters 19.44.4 → 19.45.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 +1101 -0
- package/dist/converters/actions.d.ts.map +1 -1
- package/dist/converters/actions.js +2 -0
- package/dist/converters/actions.js.map +1 -1
- package/dist/converters/fromZigbee.d.ts +1 -150
- package/dist/converters/fromZigbee.d.ts.map +1 -1
- package/dist/converters/fromZigbee.js +183 -3044
- package/dist/converters/fromZigbee.js.map +1 -1
- package/dist/converters/toZigbee.d.ts +0 -121
- package/dist/converters/toZigbee.d.ts.map +1 -1
- package/dist/converters/toZigbee.js +289 -2386
- package/dist/converters/toZigbee.js.map +1 -1
- package/dist/devices/ITCommander.d.ts.map +1 -1
- package/dist/devices/ITCommander.js +2 -1
- package/dist/devices/ITCommander.js.map +1 -1
- package/dist/devices/acova.d.ts.map +1 -1
- package/dist/devices/acova.js +69 -2
- package/dist/devices/acova.js.map +1 -1
- package/dist/devices/adeo.d.ts.map +1 -1
- package/dist/devices/adeo.js +35 -3
- package/dist/devices/adeo.js.map +1 -1
- package/dist/devices/adurosmart.js +1 -1
- package/dist/devices/adurosmart.js.map +1 -1
- package/dist/devices/amina.d.ts.map +1 -1
- package/dist/devices/amina.js +47 -10
- package/dist/devices/amina.js.map +1 -1
- package/dist/devices/aurora_lighting.d.ts.map +1 -1
- package/dist/devices/aurora_lighting.js +15 -0
- package/dist/devices/aurora_lighting.js.map +1 -1
- package/dist/devices/automaton.d.ts.map +1 -1
- package/dist/devices/automaton.js +1 -0
- package/dist/devices/automaton.js.map +1 -1
- package/dist/devices/avatto.d.ts.map +1 -1
- package/dist/devices/avatto.js +29 -24
- package/dist/devices/avatto.js.map +1 -1
- package/dist/devices/awox.d.ts.map +1 -1
- package/dist/devices/awox.js +41 -3
- package/dist/devices/awox.js.map +1 -1
- package/dist/devices/bacchus.d.ts.map +1 -1
- package/dist/devices/bacchus.js +75 -0
- package/dist/devices/bacchus.js.map +1 -1
- package/dist/devices/bitron.d.ts.map +1 -1
- package/dist/devices/bitron.js +29 -2
- package/dist/devices/bitron.js.map +1 -1
- package/dist/devices/bosch.d.ts.map +1 -1
- package/dist/devices/bosch.js +70 -50
- package/dist/devices/bosch.js.map +1 -1
- package/dist/devices/bticino.d.ts.map +1 -1
- package/dist/devices/bticino.js +11 -1
- package/dist/devices/bticino.js.map +1 -1
- package/dist/devices/byun.d.ts.map +1 -1
- package/dist/devices/byun.js +40 -3
- package/dist/devices/byun.js.map +1 -1
- package/dist/devices/candeo.d.ts.map +1 -1
- package/dist/devices/candeo.js +262 -9
- package/dist/devices/candeo.js.map +1 -1
- package/dist/devices/centralite.d.ts +9 -0
- package/dist/devices/centralite.d.ts.map +1 -1
- package/dist/devices/centralite.js +44 -5
- package/dist/devices/centralite.js.map +1 -1
- package/dist/devices/{aubess.d.ts → cigol.d.ts} +1 -1
- package/dist/devices/cigol.d.ts.map +1 -0
- package/dist/devices/cigol.js +260 -0
- package/dist/devices/cigol.js.map +1 -0
- package/dist/devices/cleverio.js +2 -2
- package/dist/devices/cleverio.js.map +1 -1
- package/dist/devices/climax.d.ts.map +1 -1
- package/dist/devices/climax.js +15 -1
- package/dist/devices/climax.js.map +1 -1
- package/dist/devices/ctm.d.ts.map +1 -1
- package/dist/devices/ctm.js +845 -496
- package/dist/devices/ctm.js.map +1 -1
- package/dist/devices/custom_devices_diy.d.ts +183 -1
- package/dist/devices/custom_devices_diy.d.ts.map +1 -1
- package/dist/devices/custom_devices_diy.js +390 -33
- package/dist/devices/custom_devices_diy.js.map +1 -1
- package/dist/devices/daewoo.d.ts +3 -0
- package/dist/devices/daewoo.d.ts.map +1 -0
- package/dist/devices/daewoo.js +198 -0
- package/dist/devices/daewoo.js.map +1 -0
- package/dist/devices/danfoss.d.ts.map +1 -1
- package/dist/devices/danfoss.js +1270 -296
- package/dist/devices/danfoss.js.map +1 -1
- package/dist/devices/databyte.d.ts.map +1 -1
- package/dist/devices/databyte.js +47 -3
- package/dist/devices/databyte.js.map +1 -1
- package/dist/devices/datek.d.ts.map +1 -1
- package/dist/devices/datek.js +202 -41
- package/dist/devices/datek.js.map +1 -1
- package/dist/devices/dawon_dns.d.ts.map +1 -1
- package/dist/devices/dawon_dns.js +14 -1
- package/dist/devices/dawon_dns.js.map +1 -1
- package/dist/devices/develco.d.ts.map +1 -1
- package/dist/devices/develco.js +145 -64
- package/dist/devices/develco.js.map +1 -1
- package/dist/devices/diyruz.d.ts.map +1 -1
- package/dist/devices/diyruz.js +444 -20
- package/dist/devices/diyruz.js.map +1 -1
- package/dist/devices/domraem.d.ts.map +1 -1
- package/dist/devices/domraem.js +7 -0
- package/dist/devices/domraem.js.map +1 -1
- package/dist/devices/easyaccess.d.ts.map +1 -1
- package/dist/devices/easyaccess.js +22 -2
- package/dist/devices/easyaccess.js.map +1 -1
- package/dist/devices/easyiot.d.ts.map +1 -1
- package/dist/devices/easyiot.js +767 -5
- package/dist/devices/easyiot.js.map +1 -1
- package/dist/devices/echostar.d.ts.map +1 -1
- package/dist/devices/echostar.js +25 -1
- package/dist/devices/echostar.js.map +1 -1
- package/dist/devices/ecodim.d.ts.map +1 -1
- package/dist/devices/ecodim.js +8 -0
- package/dist/devices/ecodim.js.map +1 -1
- package/dist/devices/ecolink.d.ts.map +1 -1
- package/dist/devices/ecolink.js +12 -0
- package/dist/devices/ecolink.js.map +1 -1
- package/dist/devices/efekta.d.ts.map +1 -1
- package/dist/devices/efekta.js +1615 -60
- package/dist/devices/efekta.js.map +1 -1
- package/dist/devices/eglo.d.ts.map +1 -1
- package/dist/devices/eglo.js +203 -17
- package/dist/devices/eglo.js.map +1 -1
- package/dist/devices/elko.d.ts.map +1 -1
- package/dist/devices/elko.js +20 -22
- package/dist/devices/elko.js.map +1 -1
- package/dist/devices/engo.d.ts.map +1 -1
- package/dist/devices/engo.js +201 -0
- package/dist/devices/engo.js.map +1 -1
- package/dist/devices/enocean.d.ts.map +1 -1
- package/dist/devices/enocean.js +132 -4
- package/dist/devices/enocean.js.map +1 -1
- package/dist/devices/ensystec.d.ts +3 -0
- package/dist/devices/ensystec.d.ts.map +1 -0
- package/dist/devices/ensystec.js +1200 -0
- package/dist/devices/ensystec.js.map +1 -0
- package/dist/devices/eurotronic.d.ts +78 -1
- package/dist/devices/eurotronic.d.ts.map +1 -1
- package/dist/devices/eurotronic.js +244 -40
- package/dist/devices/eurotronic.js.map +1 -1
- package/dist/devices/ewelink.d.ts.map +1 -1
- package/dist/devices/ewelink.js +154 -2
- package/dist/devices/ewelink.js.map +1 -1
- package/dist/devices/fantem.js +1 -1
- package/dist/devices/fantem.js.map +1 -1
- package/dist/devices/fireangel.d.ts.map +1 -1
- package/dist/devices/fireangel.js +12 -1
- package/dist/devices/fireangel.js.map +1 -1
- package/dist/devices/frankever.d.ts.map +1 -1
- package/dist/devices/frankever.js +96 -0
- package/dist/devices/frankever.js.map +1 -1
- package/dist/devices/frient.d.ts.map +1 -1
- package/dist/devices/frient.js +15 -0
- package/dist/devices/frient.js.map +1 -1
- package/dist/devices/girier.js +1 -1
- package/dist/devices/girier.js.map +1 -1
- package/dist/devices/gledopto.js +1 -1
- package/dist/devices/gledopto.js.map +1 -1
- package/dist/devices/gmmts.d.ts.map +1 -1
- package/dist/devices/gmmts.js +59 -55
- package/dist/devices/gmmts.js.map +1 -1
- package/dist/devices/halo_smart_labs.d.ts +3 -0
- package/dist/devices/halo_smart_labs.d.ts.map +1 -0
- package/dist/devices/halo_smart_labs.js +918 -0
- package/dist/devices/halo_smart_labs.js.map +1 -0
- package/dist/devices/handshake_finland.d.ts +3 -0
- package/dist/devices/handshake_finland.d.ts.map +1 -0
- package/dist/devices/handshake_finland.js +15 -0
- package/dist/devices/handshake_finland.js.map +1 -0
- package/dist/devices/heiman.d.ts.map +1 -1
- package/dist/devices/heiman.js +1361 -147
- package/dist/devices/heiman.js.map +1 -1
- package/dist/devices/heimgard_technologies.d.ts.map +1 -1
- package/dist/devices/heimgard_technologies.js +13 -0
- package/dist/devices/heimgard_technologies.js.map +1 -1
- package/dist/devices/hive.d.ts.map +1 -1
- package/dist/devices/hive.js +11 -0
- package/dist/devices/hive.js.map +1 -1
- package/dist/devices/ikea.d.ts.map +1 -1
- package/dist/devices/ikea.js +185 -135
- package/dist/devices/ikea.js.map +1 -1
- package/dist/devices/iluminize.d.ts.map +1 -1
- package/dist/devices/iluminize.js +8 -7
- package/dist/devices/iluminize.js.map +1 -1
- package/dist/devices/immax.d.ts.map +1 -1
- package/dist/devices/immax.js +3 -1
- package/dist/devices/immax.js.map +1 -1
- package/dist/devices/index.d.ts.map +1 -1
- package/dist/devices/index.js +20 -2
- package/dist/devices/index.js.map +1 -1
- package/dist/devices/innr.d.ts.map +1 -1
- package/dist/devices/innr.js +34 -2
- package/dist/devices/innr.js.map +1 -1
- package/dist/devices/inovelli.d.ts.map +1 -1
- package/dist/devices/inovelli.js +41 -2348
- package/dist/devices/inovelli.js.map +1 -1
- package/dist/devices/iris.d.ts.map +1 -1
- package/dist/devices/iris.js +13 -1
- package/dist/devices/iris.js.map +1 -1
- package/dist/devices/javis.d.ts.map +1 -1
- package/dist/devices/javis.js +39 -1
- package/dist/devices/javis.js.map +1 -1
- package/dist/devices/jxuan.d.ts.map +1 -1
- package/dist/devices/jxuan.js +37 -2
- package/dist/devices/jxuan.js.map +1 -1
- package/dist/devices/kami.d.ts.map +1 -1
- package/dist/devices/kami.js +21 -2
- package/dist/devices/kami.js.map +1 -1
- package/dist/devices/keen_home.d.ts.map +1 -1
- package/dist/devices/keen_home.js +13 -3
- package/dist/devices/keen_home.js.map +1 -1
- package/dist/devices/klikaanklikuit.d.ts.map +1 -1
- package/dist/devices/klikaanklikuit.js +7 -0
- package/dist/devices/klikaanklikuit.js.map +1 -1
- package/dist/devices/kmpcil.d.ts.map +1 -1
- package/dist/devices/kmpcil.js +44 -5
- package/dist/devices/kmpcil.js.map +1 -1
- package/dist/devices/konke.d.ts.map +1 -1
- package/dist/devices/konke.js +10 -1
- package/dist/devices/konke.js.map +1 -1
- package/dist/devices/lds.d.ts.map +1 -1
- package/dist/devices/lds.js +7 -0
- package/dist/devices/lds.js.map +1 -1
- package/dist/devices/led_trading.d.ts.map +1 -1
- package/dist/devices/led_trading.js +13 -13
- package/dist/devices/led_trading.js.map +1 -1
- package/dist/devices/leedarson.d.ts.map +1 -1
- package/dist/devices/leedarson.js +140 -1
- package/dist/devices/leedarson.js.map +1 -1
- package/dist/devices/legrand.d.ts.map +1 -1
- package/dist/devices/legrand.js +73 -42
- package/dist/devices/legrand.js.map +1 -1
- package/dist/devices/lellki.d.ts.map +1 -1
- package/dist/devices/lellki.js +3 -1
- package/dist/devices/lellki.js.map +1 -1
- package/dist/devices/letv.d.ts.map +1 -1
- package/dist/devices/letv.js +16 -2
- package/dist/devices/letv.js.map +1 -1
- package/dist/devices/lidl.d.ts.map +1 -1
- package/dist/devices/lidl.js +26 -6
- package/dist/devices/lidl.js.map +1 -1
- package/dist/devices/lincukoo.d.ts.map +1 -1
- package/dist/devices/lincukoo.js +92 -31
- package/dist/devices/lincukoo.js.map +1 -1
- package/dist/devices/linkind.d.ts.map +1 -1
- package/dist/devices/linkind.js +14 -1
- package/dist/devices/linkind.js.map +1 -1
- package/dist/devices/linptech.d.ts.map +1 -1
- package/dist/devices/linptech.js +3 -1
- package/dist/devices/linptech.js.map +1 -1
- package/dist/devices/livingwise.d.ts.map +1 -1
- package/dist/devices/livingwise.js +2 -1
- package/dist/devices/livingwise.js.map +1 -1
- package/dist/devices/livolo.d.ts.map +1 -1
- package/dist/devices/livolo.js +612 -20
- package/dist/devices/livolo.js.map +1 -1
- package/dist/devices/lixee.d.ts.map +1 -1
- package/dist/devices/lixee.js +46 -44
- package/dist/devices/lixee.js.map +1 -1
- package/dist/devices/lonsonho.d.ts.map +1 -1
- package/dist/devices/lonsonho.js +18 -11
- package/dist/devices/lonsonho.js.map +1 -1
- package/dist/devices/lumi.d.ts.map +1 -1
- package/dist/devices/lumi.js +877 -155
- package/dist/devices/lumi.js.map +1 -1
- package/dist/devices/lytko.d.ts.map +1 -1
- package/dist/devices/lytko.js +205 -556
- package/dist/devices/lytko.js.map +1 -1
- package/dist/devices/makegood.d.ts.map +1 -1
- package/dist/devices/makegood.js +5 -1
- package/dist/devices/makegood.js.map +1 -1
- package/dist/devices/mazda.js +7 -7
- package/dist/devices/mazda.js.map +1 -1
- package/dist/devices/meazon.d.ts.map +1 -1
- package/dist/devices/meazon.js +82 -20
- package/dist/devices/meazon.js.map +1 -1
- package/dist/devices/megaman.d.ts +4 -0
- package/dist/devices/megaman.d.ts.map +1 -0
- package/dist/devices/megaman.js +48 -0
- package/dist/devices/megaman.js.map +1 -0
- package/dist/devices/mercator.d.ts.map +1 -1
- package/dist/devices/mercator.js +20 -5
- package/dist/devices/mercator.js.map +1 -1
- package/dist/devices/miboxer.d.ts.map +1 -1
- package/dist/devices/miboxer.js +3 -1
- package/dist/devices/miboxer.js.map +1 -1
- package/dist/devices/mill.d.ts.map +1 -1
- package/dist/devices/mill.js +33 -7
- package/dist/devices/mill.js.map +1 -1
- package/dist/devices/moes.d.ts.map +1 -1
- package/dist/devices/moes.js +89 -15
- package/dist/devices/moes.js.map +1 -1
- package/dist/devices/msh.d.ts +3 -0
- package/dist/devices/msh.d.ts.map +1 -0
- package/dist/devices/msh.js +93 -0
- package/dist/devices/msh.js.map +1 -0
- package/dist/devices/muller_licht.d.ts.map +1 -1
- package/dist/devices/muller_licht.js +11 -0
- package/dist/devices/muller_licht.js.map +1 -1
- package/dist/devices/multir.d.ts.map +1 -1
- package/dist/devices/multir.js +12 -1
- package/dist/devices/multir.js.map +1 -1
- package/dist/devices/multiterm.js +2 -2
- package/dist/devices/multiterm.js.map +1 -1
- package/dist/devices/namron.d.ts.map +1 -1
- package/dist/devices/namron.js +488 -128
- package/dist/devices/namron.js.map +1 -1
- package/dist/devices/neo.d.ts.map +1 -1
- package/dist/devices/neo.js +151 -192
- package/dist/devices/neo.js.map +1 -1
- package/dist/devices/netica.d.ts +3 -0
- package/dist/devices/netica.d.ts.map +1 -0
- package/dist/devices/netica.js +153 -0
- package/dist/devices/netica.js.map +1 -0
- package/dist/devices/niko.d.ts.map +1 -1
- package/dist/devices/niko.js +10 -8
- package/dist/devices/niko.js.map +1 -1
- package/dist/devices/nodon.d.ts.map +1 -1
- package/dist/devices/nodon.js +6 -4
- package/dist/devices/nodon.js.map +1 -1
- package/dist/devices/nous.d.ts.map +1 -1
- package/dist/devices/nous.js +160 -61
- package/dist/devices/nous.js.map +1 -1
- package/dist/devices/nue_3a.d.ts.map +1 -1
- package/dist/devices/nue_3a.js +2 -0
- package/dist/devices/nue_3a.js.map +1 -1
- package/dist/devices/onesti.d.ts +11 -1
- package/dist/devices/onesti.d.ts.map +1 -1
- package/dist/devices/onesti.js +30 -6
- package/dist/devices/onesti.js.map +1 -1
- package/dist/devices/onokom.d.ts.map +1 -1
- package/dist/devices/onokom.js +1152 -2309
- package/dist/devices/onokom.js.map +1 -1
- package/dist/devices/orvibo.d.ts +17 -1
- package/dist/devices/orvibo.d.ts.map +1 -1
- package/dist/devices/orvibo.js +71 -4
- package/dist/devices/orvibo.js.map +1 -1
- package/dist/devices/owon.d.ts.map +1 -1
- package/dist/devices/owon.js +382 -62
- package/dist/devices/owon.js.map +1 -1
- package/dist/devices/paul_neuhaus.d.ts.map +1 -1
- package/dist/devices/paul_neuhaus.js +9 -0
- package/dist/devices/paul_neuhaus.js.map +1 -1
- package/dist/devices/paulmann.js +2 -2
- package/dist/devices/paulmann.js.map +1 -1
- package/dist/devices/perenio.d.ts.map +1 -1
- package/dist/devices/perenio.js +57 -39
- package/dist/devices/perenio.js.map +1 -1
- package/dist/devices/philips.d.ts.map +1 -1
- package/dist/devices/philips.js +194 -53
- package/dist/devices/philips.js.map +1 -1
- package/dist/devices/plaid.d.ts.map +1 -1
- package/dist/devices/plaid.js +18 -1
- package/dist/devices/plaid.js.map +1 -1
- package/dist/devices/plugwise.d.ts.map +1 -1
- package/dist/devices/plugwise.js +307 -26
- package/dist/devices/plugwise.js.map +1 -1
- package/dist/devices/profalux.d.ts.map +1 -1
- package/dist/devices/profalux.js +25 -1
- package/dist/devices/profalux.js.map +1 -1
- package/dist/devices/pushok.d.ts.map +1 -1
- package/dist/devices/pushok.js +44 -0
- package/dist/devices/pushok.js.map +1 -1
- package/dist/devices/qa.d.ts.map +1 -1
- package/dist/devices/qa.js +80 -32
- package/dist/devices/qa.js.map +1 -1
- package/dist/devices/repenic_ltd.d.ts +3 -0
- package/dist/devices/repenic_ltd.d.ts.map +1 -0
- package/dist/devices/repenic_ltd.js +97 -0
- package/dist/devices/repenic_ltd.js.map +1 -0
- package/dist/devices/robb.d.ts.map +1 -1
- package/dist/devices/robb.js +13 -1
- package/dist/devices/robb.js.map +1 -1
- package/dist/devices/rtx.js +1 -1
- package/dist/devices/rtx.js.map +1 -1
- package/dist/devices/salus_controls.d.ts.map +1 -1
- package/dist/devices/salus_controls.js +44 -17
- package/dist/devices/salus_controls.js.map +1 -1
- package/dist/devices/samotech.js +2 -2
- package/dist/devices/samotech.js.map +1 -1
- package/dist/devices/sber.d.ts.map +1 -1
- package/dist/devices/sber.js +435 -26
- package/dist/devices/sber.js.map +1 -1
- package/dist/devices/schneider_electric.d.ts.map +1 -1
- package/dist/devices/schneider_electric.js +808 -252
- package/dist/devices/schneider_electric.js.map +1 -1
- package/dist/devices/securifi.d.ts.map +1 -1
- package/dist/devices/securifi.js +24 -1
- package/dist/devices/securifi.js.map +1 -1
- package/dist/devices/sengled.d.ts.map +1 -1
- package/dist/devices/sengled.js +5 -4
- package/dist/devices/sengled.js.map +1 -1
- package/dist/devices/shada.d.ts +3 -0
- package/dist/devices/shada.d.ts.map +1 -0
- package/dist/devices/{aubess.js → shada.js} +7 -20
- package/dist/devices/shada.js.map +1 -0
- package/dist/devices/shelly.d.ts.map +1 -1
- package/dist/devices/shelly.js +646 -61
- package/dist/devices/shelly.js.map +1 -1
- package/dist/devices/shinasystem.d.ts.map +1 -1
- package/dist/devices/shinasystem.js +75 -16
- package/dist/devices/shinasystem.js.map +1 -1
- package/dist/devices/siglis.d.ts.map +1 -1
- package/dist/devices/siglis.js +26 -0
- package/dist/devices/siglis.js.map +1 -1
- package/dist/devices/sinope.d.ts.map +1 -1
- package/dist/devices/sinope.js +163 -83
- package/dist/devices/sinope.js.map +1 -1
- package/dist/devices/slacky_diy.d.ts.map +1 -1
- package/dist/devices/slacky_diy.js +3007 -69
- package/dist/devices/slacky_diy.js.map +1 -1
- package/dist/devices/smarli.d.ts.map +1 -1
- package/dist/devices/smarli.js +4 -5
- package/dist/devices/smarli.js.map +1 -1
- package/dist/devices/smartthings.d.ts +25 -0
- package/dist/devices/smartthings.d.ts.map +1 -1
- package/dist/devices/smartthings.js +62 -11
- package/dist/devices/smartthings.js.map +1 -1
- package/dist/devices/somfy.d.ts.map +1 -1
- package/dist/devices/somfy.js +14 -1
- package/dist/devices/somfy.js.map +1 -1
- package/dist/devices/sonoff.d.ts +42 -1
- package/dist/devices/sonoff.d.ts.map +1 -1
- package/dist/devices/sonoff.js +5161 -2007
- package/dist/devices/sonoff.js.map +1 -1
- package/dist/devices/sprut.d.ts.map +1 -1
- package/dist/devices/sprut.js +5 -4
- package/dist/devices/sprut.js.map +1 -1
- package/dist/devices/stello.d.ts.map +1 -1
- package/dist/devices/stello.js +6 -24
- package/dist/devices/stello.js.map +1 -1
- package/dist/devices/stelpro.d.ts +51 -1
- package/dist/devices/stelpro.d.ts.map +1 -1
- package/dist/devices/stelpro.js +86 -23
- package/dist/devices/stelpro.js.map +1 -1
- package/dist/devices/sunricher.d.ts.map +1 -1
- package/dist/devices/sunricher.js +215 -29
- package/dist/devices/sunricher.js.map +1 -1
- package/dist/devices/tech.d.ts.map +1 -1
- package/dist/devices/tech.js +35 -35
- package/dist/devices/tech.js.map +1 -1
- package/dist/devices/terncy.d.ts.map +1 -1
- package/dist/devices/terncy.js +398 -2
- package/dist/devices/terncy.js.map +1 -1
- package/dist/devices/third_reality.d.ts +42 -1
- package/dist/devices/third_reality.d.ts.map +1 -1
- package/dist/devices/third_reality.js +521 -110
- package/dist/devices/third_reality.js.map +1 -1
- package/dist/devices/tuya.d.ts.map +1 -1
- package/dist/devices/tuya.js +3139 -814
- package/dist/devices/tuya.js.map +1 -1
- package/dist/devices/ubisys.d.ts.map +1 -1
- package/dist/devices/ubisys.js +11 -8
- package/dist/devices/ubisys.js.map +1 -1
- package/dist/devices/vesternet.d.ts.map +1 -1
- package/dist/devices/vesternet.js +7 -0
- package/dist/devices/vesternet.js.map +1 -1
- package/dist/devices/viessmann.d.ts.map +1 -1
- package/dist/devices/viessmann.js +107 -4
- package/dist/devices/viessmann.js.map +1 -1
- package/dist/devices/vsmart.d.ts.map +1 -1
- package/dist/devices/vsmart.js +11 -0
- package/dist/devices/vsmart.js.map +1 -1
- package/dist/devices/weiser.d.ts.map +1 -1
- package/dist/devices/weiser.js +6 -0
- package/dist/devices/weiser.js.map +1 -1
- package/dist/devices/wirenboard.d.ts.map +1 -1
- package/dist/devices/wirenboard.js +124 -21
- package/dist/devices/wirenboard.js.map +1 -1
- package/dist/devices/wmun.d.ts.map +1 -1
- package/dist/devices/wmun.js +3 -2
- package/dist/devices/wmun.js.map +1 -1
- package/dist/devices/woolley.d.ts.map +1 -1
- package/dist/devices/woolley.js +6 -9
- package/dist/devices/woolley.js.map +1 -1
- package/dist/devices/woox.js +2 -2
- package/dist/devices/woox.js.map +1 -1
- package/dist/devices/xyzroe.d.ts.map +1 -1
- package/dist/devices/xyzroe.js +16 -4
- package/dist/devices/xyzroe.js.map +1 -1
- package/dist/devices/yale.d.ts.map +1 -1
- package/dist/devices/yale.js +138 -40
- package/dist/devices/yale.js.map +1 -1
- package/dist/devices/yandex.d.ts.map +1 -1
- package/dist/devices/yandex.js +93 -11
- package/dist/devices/yandex.js.map +1 -1
- package/dist/devices/yokis.d.ts.map +1 -1
- package/dist/devices/yokis.js +122 -85
- package/dist/devices/yokis.js.map +1 -1
- package/dist/devices/zbeacon.d.ts.map +1 -1
- package/dist/devices/zbeacon.js +0 -7
- package/dist/devices/zbeacon.js.map +1 -1
- package/dist/devices/zemismart.d.ts.map +1 -1
- package/dist/devices/zemismart.js +148 -11
- package/dist/devices/zemismart.js.map +1 -1
- package/dist/devices/zigbeetlc.js +1 -1
- package/dist/devices/zigbeetlc.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +40 -35
- package/dist/index.js.map +1 -1
- package/dist/lib/bosch.d.ts.map +1 -1
- package/dist/lib/bosch.js +212 -42
- package/dist/lib/bosch.js.map +1 -1
- package/dist/lib/constants.d.ts +99 -17
- package/dist/lib/constants.d.ts.map +1 -1
- package/dist/lib/constants.js +15 -2
- package/dist/lib/constants.js.map +1 -1
- package/dist/lib/develco.d.ts +11 -0
- package/dist/lib/develco.d.ts.map +1 -1
- package/dist/lib/develco.js +78 -9
- package/dist/lib/develco.js.map +1 -1
- package/dist/lib/exposes.d.ts +11 -10
- package/dist/lib/exposes.d.ts.map +1 -1
- package/dist/lib/exposes.js +7 -48
- package/dist/lib/exposes.js.map +1 -1
- package/dist/lib/heiman.d.ts.map +1 -1
- package/dist/lib/heiman.js +34 -14
- package/dist/lib/heiman.js.map +1 -1
- package/dist/lib/ikea.d.ts +17 -0
- package/dist/lib/ikea.d.ts.map +1 -1
- package/dist/lib/ikea.js +46 -20
- package/dist/lib/ikea.js.map +1 -1
- package/dist/lib/inovelli.d.ts +86 -0
- package/dist/lib/inovelli.d.ts.map +1 -0
- package/dist/lib/inovelli.js +2580 -0
- package/dist/lib/inovelli.js.map +1 -0
- package/dist/lib/ledvance.d.ts +4 -4
- package/dist/lib/ledvance.d.ts.map +1 -1
- package/dist/lib/ledvance.js +23 -7
- package/dist/lib/ledvance.js.map +1 -1
- package/dist/lib/legacy.d.ts +21 -2
- package/dist/lib/legacy.d.ts.map +1 -1
- package/dist/lib/legacy.js +29 -2
- package/dist/lib/legacy.js.map +1 -1
- package/dist/lib/legrand.d.ts +65 -6
- package/dist/lib/legrand.d.ts.map +1 -1
- package/dist/lib/legrand.js +188 -9
- package/dist/lib/legrand.js.map +1 -1
- package/dist/lib/light.d.ts +1 -1
- package/dist/lib/light.d.ts.map +1 -1
- package/dist/lib/light.js +2 -2
- package/dist/lib/light.js.map +1 -1
- package/dist/lib/lumi.d.ts +88 -44
- package/dist/lib/lumi.d.ts.map +1 -1
- package/dist/lib/lumi.js +1813 -59
- package/dist/lib/lumi.js.map +1 -1
- package/dist/lib/modernExtend.d.ts +19 -14
- package/dist/lib/modernExtend.d.ts.map +1 -1
- package/dist/lib/modernExtend.js +37 -35
- package/dist/lib/modernExtend.js.map +1 -1
- package/dist/lib/namron.d.ts +131 -28
- package/dist/lib/namron.d.ts.map +1 -1
- package/dist/lib/namron.js +723 -42
- package/dist/lib/namron.js.map +1 -1
- package/dist/lib/nodon.d.ts.map +1 -1
- package/dist/lib/nodon.js +3 -1
- package/dist/lib/nodon.js.map +1 -1
- package/dist/lib/philips.d.ts +106 -2
- package/dist/lib/philips.d.ts.map +1 -1
- package/dist/lib/philips.js +945 -44
- package/dist/lib/philips.js.map +1 -1
- package/dist/lib/sonoff.d.ts +77 -10
- package/dist/lib/sonoff.d.ts.map +1 -1
- package/dist/lib/sonoff.js +165 -34
- package/dist/lib/sonoff.js.map +1 -1
- package/dist/lib/sunricher.d.ts +1 -1
- package/dist/lib/sunricher.d.ts.map +1 -1
- package/dist/lib/sunricher.js +6 -8
- package/dist/lib/sunricher.js.map +1 -1
- package/dist/lib/tuya.d.ts +558 -13
- package/dist/lib/tuya.d.ts.map +1 -1
- package/dist/lib/tuya.js +1518 -10
- package/dist/lib/tuya.js.map +1 -1
- package/dist/lib/types.d.ts +9 -6
- package/dist/lib/types.d.ts.map +1 -1
- package/dist/lib/ubisys.d.ts +1 -1
- package/dist/lib/ubisys.d.ts.map +1 -1
- package/dist/lib/ubisys.js +60 -5
- package/dist/lib/ubisys.js.map +1 -1
- package/dist/lib/utils.d.ts +5 -8
- package/dist/lib/utils.d.ts.map +1 -1
- package/dist/lib/utils.js +30 -17
- package/dist/lib/utils.js.map +1 -1
- package/dist/lib/zosung.d.ts +69 -6
- package/dist/lib/zosung.d.ts.map +1 -1
- package/dist/lib/zosung.js +113 -1
- package/dist/lib/zosung.js.map +1 -1
- package/dist/models-index.json +1 -1
- package/package.json +2 -2
- package/dist/devices/aubess.d.ts.map +0 -1
- package/dist/devices/aubess.js.map +0 -1
package/dist/devices/lumi.js
CHANGED
|
@@ -42,11 +42,83 @@ const logger_1 = require("../lib/logger");
|
|
|
42
42
|
const lumi = __importStar(require("../lib/lumi"));
|
|
43
43
|
const m = __importStar(require("../lib/modernExtend"));
|
|
44
44
|
const reporting = __importStar(require("../lib/reporting"));
|
|
45
|
+
const utils_1 = require("../lib/utils");
|
|
45
46
|
const e = exposes.presets;
|
|
46
47
|
const ea = exposes.access;
|
|
47
|
-
const { lumiAction, lumiOperationMode, lumiPowerOnBehavior, lumiZigbeeOTA, lumiSwitchType, lumiAirQuality, lumiVoc, lumiDisplayUnit, lumiLight, lumiOutageCountRestoreBindReporting, lumiElectricityMeter, lumiPower, lumiOverloadProtection, lumiLedIndicator, lumiButtonLock, lumiMotorSpeed, lumiCurtainSpeed, lumiCurtainManualOpenClose, lumiCurtainAdaptivePullingSpeed, lumiCurtainManualStop, lumiCurtainReverse, lumiCurtainStatus, lumiCurtainLastManualOperation, lumiCurtainPosition, lumiCurtainTraverseTime, lumiCurtainCalibrationStatus, lumiCurtainCalibrated, lumiCurtainIdentifyBeep, lumiOnOff, lumiLedDisabledNight, lumiFlipIndicatorLight, lumiPreventReset, lumiClickMode, lumiSlider, lumiSetEventMode, lumiSwitchMode, lumiVibration, lumiReportInterval, lumiSensitivityAdjustment, lumiKnobRotation, lumiCommandMode, lumiBattery, lumiLockRelay, lumiMultiClick, lumiPreventLeave, lumiExternalSensor, lumiReadPositionOnReport, } = lumi.modernExtend;
|
|
48
|
+
const { lumiAction, lumiOperationMode, lumiPowerOnBehavior, lumiZigbeeOTA, lumiSwitchType, lumiAirQuality, lumiVoc, lumiDisplayUnit, lumiLight, lumiOutageCountRestoreBindReporting, lumiElectricityMeter, lumiPower, lumiOverloadProtection, lumiLedIndicator, lumiButtonLock, lumiMotorSpeed, lumiCurtainSpeed, lumiCurtainManualOpenClose, lumiCurtainAdaptivePullingSpeed, lumiCurtainManualStop, lumiCurtainReverse, lumiCurtainStatus, lumiCurtainLastManualOperation, lumiCurtainPosition, lumiCurtainTraverseTime, lumiCurtainCalibrationStatus, lumiCurtainCalibrated, lumiCurtainIdentifyBeep, lumiOnOff, lumiLedDisabledNight, lumiFlipIndicatorLight, lumiPreventReset, lumiClickMode, lumiSlider, lumiSetEventMode, lumiSwitchMode, lumiVibration, lumiReportInterval, lumiSensitivityAdjustment, lumiKnobRotation, lumiCommandMode, lumiBattery, lumiLockRelay, lumiMultiClick, lumiPreventLeave, lumiExternalSensor, w600ExternalTempSensor, w600Heartbeat, w600PresetTemperatureTable, w600Schedule, w600Thermostat, w600ValvePosition, w600WeeklySchedule, lumiReadPositionOnReport, } = lumi.modernExtend;
|
|
48
49
|
const NS = "zhc:lumi";
|
|
49
50
|
const { manufacturerCode } = lumi;
|
|
51
|
+
const aqaraH2EuShutterSwitchEndpoints = { top_wireless_button: 3, bottom_wireless_button: 4 };
|
|
52
|
+
const aqaraH2EuShutterSwitchEndpointNames = ["top_wireless_button", "bottom_wireless_button"];
|
|
53
|
+
const aqaraH2EuShutterSwitchActionLookup = { hold: 0, single: 1, double: 2, release: 255 };
|
|
54
|
+
const aqaraH2EuShutterSwitchMultiEndpointSkip = ["energy", "position", "state", "tilt"];
|
|
55
|
+
const aqaraH2EuShutterSwitchMultiClickAttribute = 0x0286;
|
|
56
|
+
async function configureAqaraH2EuShutterSwitch(device, coordinatorEndpoint) {
|
|
57
|
+
for (const endpointName of aqaraH2EuShutterSwitchEndpointNames) {
|
|
58
|
+
const endpoint = device.getEndpoint(aqaraH2EuShutterSwitchEndpoints[endpointName]);
|
|
59
|
+
await reporting.bind(endpoint, coordinatorEndpoint, ["manuSpecificLumi", "genMultistateInput"]);
|
|
60
|
+
await endpoint.configureReporting("genMultistateInput", reporting.payload("presentValue", 0, 3600, 1));
|
|
61
|
+
// Initialize Aqara's per-button multi-click setting on startup.
|
|
62
|
+
await endpoint.read("manuSpecificLumi", [aqaraH2EuShutterSwitchMultiClickAttribute], {
|
|
63
|
+
manufacturerCode,
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
function fp310DetectionRange() {
|
|
68
|
+
return {
|
|
69
|
+
isModernExtend: true,
|
|
70
|
+
exposes: [
|
|
71
|
+
e
|
|
72
|
+
.numeric("detection_range", ea.ALL)
|
|
73
|
+
.withValueMin(0)
|
|
74
|
+
.withValueMax(6)
|
|
75
|
+
.withValueStep(0.25)
|
|
76
|
+
.withUnit("m")
|
|
77
|
+
.withDescription("Specifies the range that is being detected. Press the on-device button to wake the device up and refresh it's settings."),
|
|
78
|
+
],
|
|
79
|
+
fromZigbee: [
|
|
80
|
+
{
|
|
81
|
+
cluster: "manuSpecificLumi",
|
|
82
|
+
type: ["attributeReport", "readResponse"],
|
|
83
|
+
convert: (model, msg, publish, options, meta) => {
|
|
84
|
+
if (msg.data["410"] && Buffer.isBuffer(msg.data["410"])) {
|
|
85
|
+
const buffer = msg.data["410"];
|
|
86
|
+
const mask = buffer[2] | (buffer[3] << 8) | (buffer[4] << 16);
|
|
87
|
+
let zones = 0;
|
|
88
|
+
let value = mask;
|
|
89
|
+
while (value > 0) {
|
|
90
|
+
zones++;
|
|
91
|
+
value >>= 1;
|
|
92
|
+
}
|
|
93
|
+
// 1 zone = 0.25m
|
|
94
|
+
const detection_range = zones * 0.25;
|
|
95
|
+
return { detection_range };
|
|
96
|
+
}
|
|
97
|
+
},
|
|
98
|
+
},
|
|
99
|
+
],
|
|
100
|
+
toZigbee: [
|
|
101
|
+
{
|
|
102
|
+
key: ["detection_range"],
|
|
103
|
+
convertSet: async (entity, key, value, meta) => {
|
|
104
|
+
(0, utils_1.assertNumber)(value);
|
|
105
|
+
const distance = Math.max(0, Math.min(6, value));
|
|
106
|
+
const zones = Math.round(distance / 0.25);
|
|
107
|
+
const mask = zones === 0 ? 0 : (1 << zones) - 1;
|
|
108
|
+
const buffer = Buffer.from([0x00, 0x03, mask & 0xff, (mask >> 8) & 0xff, (mask >> 16) & 0xff]);
|
|
109
|
+
await entity.write("manuSpecificLumi", { 410: { value: buffer, type: 0x41 } }, { manufacturerCode: manufacturerCode });
|
|
110
|
+
return {
|
|
111
|
+
state: { detection_range: value },
|
|
112
|
+
};
|
|
113
|
+
},
|
|
114
|
+
convertGet: async (entity, key, meta) => {
|
|
115
|
+
const endpoint = meta.device.getEndpoint(1);
|
|
116
|
+
await endpoint.read("manuSpecificLumi", [0x019a], { manufacturerCode: manufacturerCode });
|
|
117
|
+
},
|
|
118
|
+
},
|
|
119
|
+
],
|
|
120
|
+
};
|
|
121
|
+
}
|
|
50
122
|
exports.definitions = [
|
|
51
123
|
{
|
|
52
124
|
zigbeeModel: ["lumi.flood.acn001"],
|
|
@@ -61,7 +133,7 @@ exports.definitions = [
|
|
|
61
133
|
const endpoint = device.getEndpoint(1);
|
|
62
134
|
await endpoint.read("genPowerCfg", ["batteryVoltage"]);
|
|
63
135
|
},
|
|
64
|
-
extend: [m.quirkCheckinInterval("1_HOUR"), lumiZigbeeOTA()],
|
|
136
|
+
extend: [lumi.modernExtend.addManuSpecificLumiCluster(), m.quirkCheckinInterval("1_HOUR"), lumiZigbeeOTA()],
|
|
65
137
|
},
|
|
66
138
|
{
|
|
67
139
|
zigbeeModel: ["lumi.airm.fhac01"],
|
|
@@ -87,6 +159,7 @@ exports.definitions = [
|
|
|
87
159
|
await endpoint.read("genPowerCfg", ["batteryVoltage"]);
|
|
88
160
|
},
|
|
89
161
|
extend: [
|
|
162
|
+
lumi.modernExtend.addManuSpecificLumiCluster(),
|
|
90
163
|
m.quirkCheckinInterval("1_HOUR"),
|
|
91
164
|
// OTA request: "fieldControl":0, "manufacturerCode":4447, "imageType":10635, no available for now
|
|
92
165
|
// https://github.com/Koenkk/zigbee-OTA/pull/138
|
|
@@ -110,7 +183,7 @@ exports.definitions = [
|
|
|
110
183
|
.enum("detection_distance", ea.ALL, ["10mm", "20mm", "30mm"])
|
|
111
184
|
.withDescription('The sensor will be considered "off" within the set distance. Please press the device button before setting'),
|
|
112
185
|
],
|
|
113
|
-
extend: [m.quirkCheckinInterval("1_HOUR")],
|
|
186
|
+
extend: [lumi.modernExtend.addManuSpecificLumiCluster(), m.quirkCheckinInterval("1_HOUR")],
|
|
114
187
|
},
|
|
115
188
|
{
|
|
116
189
|
zigbeeModel: ["lumi.dimmer.rcbac1"],
|
|
@@ -135,21 +208,25 @@ exports.definitions = [
|
|
|
135
208
|
e.light_brightness_colortemp([153, 370]).removeFeature("color_temp_startup").withEndpoint("l2"),
|
|
136
209
|
e.enum("dimmer_mode", ea.ALL, ["rgbw", "dual_ct"]).withDescription("Switch between rgbw mode or dual color temperature mode"),
|
|
137
210
|
],
|
|
138
|
-
extend: [m.deviceEndpoints({ endpoints: { l1: 1, l2: 2 } }), lumiZigbeeOTA()],
|
|
211
|
+
extend: [lumi.modernExtend.addManuSpecificLumiCluster(), m.deviceEndpoints({ endpoints: { l1: 1, l2: 2 } }), lumiZigbeeOTA()],
|
|
139
212
|
},
|
|
140
213
|
{
|
|
141
214
|
zigbeeModel: ["lumi.light.aqcn02"],
|
|
142
215
|
model: "ZNLDP12LM",
|
|
143
216
|
vendor: "Aqara",
|
|
144
217
|
description: "Light bulb",
|
|
145
|
-
extend: [lumiLight({ colorTemp: true, powerOutageMemory: "light" }), lumiZigbeeOTA()],
|
|
218
|
+
extend: [lumi.modernExtend.addManuSpecificLumiCluster(), lumiLight({ colorTemp: true, powerOutageMemory: "light" }), lumiZigbeeOTA()],
|
|
146
219
|
},
|
|
147
220
|
{
|
|
148
221
|
zigbeeModel: ["lumi.light.acn003"],
|
|
149
222
|
model: "ZNXDD01LM",
|
|
150
223
|
vendor: "Aqara",
|
|
151
224
|
description: "Ceiling light L1-350",
|
|
152
|
-
extend: [
|
|
225
|
+
extend: [
|
|
226
|
+
lumi.modernExtend.addManuSpecificLumiCluster(),
|
|
227
|
+
lumiLight({ colorTemp: true, powerOutageMemory: "switch", levelConfig: { features: ["on_level"] } }),
|
|
228
|
+
lumiZigbeeOTA(),
|
|
229
|
+
],
|
|
153
230
|
},
|
|
154
231
|
{
|
|
155
232
|
zigbeeModel: ["lumi.light.cwac02", "lumi.light.acn014"],
|
|
@@ -158,6 +235,7 @@ exports.definitions = [
|
|
|
158
235
|
description: "Light bulb T1",
|
|
159
236
|
whiteLabel: [{ vendor: "Aqara", model: "LEDLBT1-L01" }],
|
|
160
237
|
extend: [
|
|
238
|
+
lumi.modernExtend.addManuSpecificLumiCluster(),
|
|
161
239
|
lumiZigbeeOTA(),
|
|
162
240
|
lumiLight({ colorTemp: true, powerOutageMemory: "switch" }),
|
|
163
241
|
m.forceDeviceType({ type: "Router" }),
|
|
@@ -170,7 +248,7 @@ exports.definitions = [
|
|
|
170
248
|
vendor: "Aqara",
|
|
171
249
|
description: "Opple MX960",
|
|
172
250
|
meta: { turnsOffAtBrightness1: true },
|
|
173
|
-
extend: [lumiLight({ colorTemp: true, powerOutageMemory: "switch" }), lumiZigbeeOTA()],
|
|
251
|
+
extend: [lumi.modernExtend.addManuSpecificLumiCluster(), lumiLight({ colorTemp: true, powerOutageMemory: "switch" }), lumiZigbeeOTA()],
|
|
174
252
|
},
|
|
175
253
|
{
|
|
176
254
|
zigbeeModel: ["lumi.light.cwopcn02"],
|
|
@@ -178,7 +256,7 @@ exports.definitions = [
|
|
|
178
256
|
vendor: "Aqara",
|
|
179
257
|
description: "Opple MX650",
|
|
180
258
|
meta: { turnsOffAtBrightness1: true },
|
|
181
|
-
extend: [lumiZigbeeOTA(), lumiLight({ colorTemp: true, powerOutageMemory: "switch" })],
|
|
259
|
+
extend: [lumi.modernExtend.addManuSpecificLumiCluster(), lumiZigbeeOTA(), lumiLight({ colorTemp: true, powerOutageMemory: "switch" })],
|
|
182
260
|
},
|
|
183
261
|
{
|
|
184
262
|
zigbeeModel: ["lumi.light.cwopcn03"],
|
|
@@ -186,21 +264,25 @@ exports.definitions = [
|
|
|
186
264
|
vendor: "Aqara",
|
|
187
265
|
description: "Opple MX480",
|
|
188
266
|
meta: { turnsOffAtBrightness1: true },
|
|
189
|
-
extend: [
|
|
267
|
+
extend: [
|
|
268
|
+
lumi.modernExtend.addManuSpecificLumiCluster(),
|
|
269
|
+
lumiLight({ colorTemp: true, powerOutageMemory: "switch", colorTempRange: [175, 370] }),
|
|
270
|
+
lumiZigbeeOTA(),
|
|
271
|
+
],
|
|
190
272
|
},
|
|
191
273
|
{
|
|
192
274
|
zigbeeModel: ["lumi.light.cwjwcn01"],
|
|
193
275
|
model: "JWSP001A",
|
|
194
276
|
vendor: "Aqara",
|
|
195
277
|
description: "Jiawen LED Driver & Dimmer",
|
|
196
|
-
extend: [lumiLight({ colorTemp: true, powerOutageMemory: "switch" })],
|
|
278
|
+
extend: [lumi.modernExtend.addManuSpecificLumiCluster(), lumiLight({ colorTemp: true, powerOutageMemory: "switch" })],
|
|
197
279
|
},
|
|
198
280
|
{
|
|
199
281
|
zigbeeModel: ["lumi.light.cwjwcn02"],
|
|
200
282
|
model: "JWDL001A",
|
|
201
283
|
vendor: "Aqara",
|
|
202
284
|
description: "Embedded spot led light",
|
|
203
|
-
extend: [lumiLight({ colorTemp: true, powerOutageMemory: "switch" })],
|
|
285
|
+
extend: [lumi.modernExtend.addManuSpecificLumiCluster(), lumiLight({ colorTemp: true, powerOutageMemory: "switch" })],
|
|
204
286
|
},
|
|
205
287
|
{
|
|
206
288
|
zigbeeModel: ["lumi.sensor_switch"],
|
|
@@ -318,6 +400,7 @@ exports.definitions = [
|
|
|
318
400
|
await endpoint.read("genLevelCtrl", [0x0013], {});
|
|
319
401
|
},
|
|
320
402
|
extend: [
|
|
403
|
+
lumi.modernExtend.addManuSpecificLumiCluster(),
|
|
321
404
|
lumiLight({
|
|
322
405
|
colorTemp: true,
|
|
323
406
|
color: { modes: ["xy"] },
|
|
@@ -442,7 +525,12 @@ exports.definitions = [
|
|
|
442
525
|
// set "event" mode
|
|
443
526
|
await endpoint1.write("manuSpecificLumi", { mode: 1 }, { manufacturerCode: manufacturerCode, disableResponse: true });
|
|
444
527
|
},
|
|
445
|
-
extend: [
|
|
528
|
+
extend: [
|
|
529
|
+
lumi.modernExtend.addManuSpecificLumiCluster(),
|
|
530
|
+
lumiZigbeeOTA(),
|
|
531
|
+
lumiPreventReset(),
|
|
532
|
+
m.forcePowerSource({ powerSource: "Mains (single phase)" }),
|
|
533
|
+
],
|
|
446
534
|
},
|
|
447
535
|
{
|
|
448
536
|
zigbeeModel: ["lumi.switch.b2laus01"],
|
|
@@ -479,9 +567,11 @@ exports.definitions = [
|
|
|
479
567
|
return { top: 1, bottom: 2 };
|
|
480
568
|
},
|
|
481
569
|
configure: async (device, coordinatorEndpoint) => {
|
|
482
|
-
await device
|
|
570
|
+
await device
|
|
571
|
+
.getEndpoint(1)
|
|
572
|
+
.write("manuSpecificLumi", { mode: 1 }, { manufacturerCode: manufacturerCode, disableResponse: true });
|
|
483
573
|
},
|
|
484
|
-
extend: [lumiZigbeeOTA(), lumiPreventReset()],
|
|
574
|
+
extend: [lumi.modernExtend.addManuSpecificLumiCluster(), lumiZigbeeOTA(), lumiPreventReset()],
|
|
485
575
|
},
|
|
486
576
|
{
|
|
487
577
|
zigbeeModel: ["lumi.switch.b1naus01"],
|
|
@@ -513,7 +603,7 @@ exports.definitions = [
|
|
|
513
603
|
// set "event" mode
|
|
514
604
|
await endpoint1.write("manuSpecificLumi", { mode: 1 }, { manufacturerCode: manufacturerCode, disableResponse: true });
|
|
515
605
|
},
|
|
516
|
-
extend: [lumiZigbeeOTA(), lumiPreventReset()],
|
|
606
|
+
extend: [lumi.modernExtend.addManuSpecificLumiCluster(), lumiZigbeeOTA(), lumiPreventReset()],
|
|
517
607
|
},
|
|
518
608
|
{
|
|
519
609
|
zigbeeModel: ["lumi.switch.b2naus01"],
|
|
@@ -550,9 +640,11 @@ exports.definitions = [
|
|
|
550
640
|
return { top: 1, bottom: 2 };
|
|
551
641
|
},
|
|
552
642
|
configure: async (device, coordinatorEndpoint) => {
|
|
553
|
-
await device
|
|
643
|
+
await device
|
|
644
|
+
.getEndpoint(1)
|
|
645
|
+
.write("manuSpecificLumi", { mode: 1 }, { manufacturerCode: manufacturerCode, disableResponse: true });
|
|
554
646
|
},
|
|
555
|
-
extend: [lumiZigbeeOTA(), lumiPreventReset()],
|
|
647
|
+
extend: [lumi.modernExtend.addManuSpecificLumiCluster(), lumiZigbeeOTA(), lumiPreventReset()],
|
|
556
648
|
},
|
|
557
649
|
{
|
|
558
650
|
zigbeeModel: ["lumi.switch.l1acn1"],
|
|
@@ -582,9 +674,11 @@ exports.definitions = [
|
|
|
582
674
|
.withDescription("Anti flicker mode can be used to solve blinking issues of some lights. Quick mode makes the device respond faster."),
|
|
583
675
|
],
|
|
584
676
|
configure: async (device, coordinatorEndpoint) => {
|
|
585
|
-
await device
|
|
677
|
+
await device
|
|
678
|
+
.getEndpoint(1)
|
|
679
|
+
.write("manuSpecificLumi", { mode: 1 }, { manufacturerCode: manufacturerCode, disableResponse: true });
|
|
586
680
|
},
|
|
587
|
-
extend: [lumiZigbeeOTA(), lumiPreventReset()],
|
|
681
|
+
extend: [lumi.modernExtend.addManuSpecificLumiCluster(), lumiZigbeeOTA(), lumiPreventReset()],
|
|
588
682
|
},
|
|
589
683
|
{
|
|
590
684
|
zigbeeModel: ["lumi.switch.l2acn1"],
|
|
@@ -619,9 +713,11 @@ exports.definitions = [
|
|
|
619
713
|
.withDescription("Anti flicker mode can be used to solve blinking issues of some lights. Quick mode makes the device respond faster."),
|
|
620
714
|
],
|
|
621
715
|
configure: async (device, coordinatorEndpoint) => {
|
|
622
|
-
await device
|
|
716
|
+
await device
|
|
717
|
+
.getEndpoint(1)
|
|
718
|
+
.write("manuSpecificLumi", { mode: 1 }, { manufacturerCode: manufacturerCode, disableResponse: true });
|
|
623
719
|
},
|
|
624
|
-
extend: [lumiZigbeeOTA(), lumiPreventReset()],
|
|
720
|
+
extend: [lumi.modernExtend.addManuSpecificLumiCluster(), lumiZigbeeOTA(), lumiPreventReset()],
|
|
625
721
|
},
|
|
626
722
|
{
|
|
627
723
|
zigbeeModel: ["lumi.switch.l3acn1"],
|
|
@@ -675,9 +771,11 @@ exports.definitions = [
|
|
|
675
771
|
]),
|
|
676
772
|
],
|
|
677
773
|
configure: async (device, coordinatorEndpoint) => {
|
|
678
|
-
await device
|
|
774
|
+
await device
|
|
775
|
+
.getEndpoint(1)
|
|
776
|
+
.write("manuSpecificLumi", { mode: 1 }, { manufacturerCode: manufacturerCode, disableResponse: true });
|
|
679
777
|
},
|
|
680
|
-
extend: [lumiPreventReset()],
|
|
778
|
+
extend: [lumi.modernExtend.addManuSpecificLumiCluster(), lumiPreventReset()],
|
|
681
779
|
},
|
|
682
780
|
{
|
|
683
781
|
zigbeeModel: ["lumi.switch.n1acn1"],
|
|
@@ -705,7 +803,7 @@ exports.definitions = [
|
|
|
705
803
|
e.enum("operation_mode", ea.ALL, ["control_relay", "decoupled"]).withDescription("Decoupled mode"),
|
|
706
804
|
e.power_outage_count(),
|
|
707
805
|
],
|
|
708
|
-
extend: [lumiZigbeeOTA(), lumiPreventReset()],
|
|
806
|
+
extend: [lumi.modernExtend.addManuSpecificLumiCluster(), lumiZigbeeOTA(), lumiPreventReset()],
|
|
709
807
|
},
|
|
710
808
|
{
|
|
711
809
|
zigbeeModel: ["lumi.switch.n2acn1"],
|
|
@@ -739,7 +837,7 @@ exports.definitions = [
|
|
|
739
837
|
e.enum("operation_mode", ea.ALL, ["control_relay", "decoupled"]).withDescription("Decoupled mode for right button").withEndpoint("right"),
|
|
740
838
|
e.power_outage_count(),
|
|
741
839
|
],
|
|
742
|
-
extend: [lumiZigbeeOTA(), lumiPreventReset()],
|
|
840
|
+
extend: [lumi.modernExtend.addManuSpecificLumiCluster(), lumiZigbeeOTA(), lumiPreventReset()],
|
|
743
841
|
},
|
|
744
842
|
{
|
|
745
843
|
zigbeeModel: ["lumi.switch.n3acn1"],
|
|
@@ -793,7 +891,7 @@ exports.definitions = [
|
|
|
793
891
|
.withEndpoint("center"),
|
|
794
892
|
e.power_outage_count(),
|
|
795
893
|
],
|
|
796
|
-
extend: [lumiZigbeeOTA(), lumiPreventReset()],
|
|
894
|
+
extend: [lumi.modernExtend.addManuSpecificLumiCluster(), lumiZigbeeOTA(), lumiPreventReset()],
|
|
797
895
|
},
|
|
798
896
|
{
|
|
799
897
|
zigbeeModel: ["lumi.switch.l1aeu1"],
|
|
@@ -828,7 +926,7 @@ exports.definitions = [
|
|
|
828
926
|
// set "event" mode
|
|
829
927
|
await endpoint1.write("manuSpecificLumi", { mode: 1 }, { manufacturerCode: manufacturerCode, disableResponse: true });
|
|
830
928
|
},
|
|
831
|
-
extend: [lumiPreventReset()],
|
|
929
|
+
extend: [lumi.modernExtend.addManuSpecificLumiCluster(), lumiPreventReset()],
|
|
832
930
|
},
|
|
833
931
|
{
|
|
834
932
|
zigbeeModel: ["lumi.switch.l2aeu1"],
|
|
@@ -864,9 +962,11 @@ exports.definitions = [
|
|
|
864
962
|
e.action(["single_left", "double_left", "single_right", "double_right", "single_both", "double_both"]),
|
|
865
963
|
],
|
|
866
964
|
configure: async (device, coordinatorEndpoint) => {
|
|
867
|
-
await device
|
|
965
|
+
await device
|
|
966
|
+
.getEndpoint(1)
|
|
967
|
+
.write("manuSpecificLumi", { mode: 1 }, { manufacturerCode: manufacturerCode, disableResponse: true });
|
|
868
968
|
},
|
|
869
|
-
extend: [lumiPreventReset()],
|
|
969
|
+
extend: [lumi.modernExtend.addManuSpecificLumiCluster(), lumiPreventReset()],
|
|
870
970
|
},
|
|
871
971
|
{
|
|
872
972
|
zigbeeModel: ["lumi.switch.n1aeu1"],
|
|
@@ -899,7 +999,7 @@ exports.definitions = [
|
|
|
899
999
|
// set "event" mode
|
|
900
1000
|
await endpoint1.write("manuSpecificLumi", { mode: 1 }, { manufacturerCode: manufacturerCode, disableResponse: true });
|
|
901
1001
|
},
|
|
902
|
-
extend: [lumiZigbeeOTA(), lumiPreventReset()],
|
|
1002
|
+
extend: [lumi.modernExtend.addManuSpecificLumiCluster(), lumiZigbeeOTA(), lumiPreventReset()],
|
|
903
1003
|
},
|
|
904
1004
|
{
|
|
905
1005
|
zigbeeModel: ["lumi.switch.n2aeu1"],
|
|
@@ -938,7 +1038,7 @@ exports.definitions = [
|
|
|
938
1038
|
// set "event" mode
|
|
939
1039
|
await endpoint1.write("manuSpecificLumi", { mode: 1 }, { manufacturerCode: manufacturerCode, disableResponse: true });
|
|
940
1040
|
},
|
|
941
|
-
extend: [lumiZigbeeOTA(), lumiPreventReset()],
|
|
1041
|
+
extend: [lumi.modernExtend.addManuSpecificLumiCluster(), lumiZigbeeOTA(), lumiPreventReset()],
|
|
942
1042
|
},
|
|
943
1043
|
{
|
|
944
1044
|
zigbeeModel: ["lumi.ctrl_neutral1"],
|
|
@@ -1208,9 +1308,11 @@ exports.definitions = [
|
|
|
1208
1308
|
e.power_outage_count(),
|
|
1209
1309
|
],
|
|
1210
1310
|
configure: async (device, coordinatorEndpoint) => {
|
|
1211
|
-
await device
|
|
1311
|
+
await device
|
|
1312
|
+
.getEndpoint(1)
|
|
1313
|
+
.write("manuSpecificLumi", { mode: 1 }, { manufacturerCode: manufacturerCode, disableResponse: true });
|
|
1212
1314
|
},
|
|
1213
|
-
extend: [lumiZigbeeOTA(), lumiPreventReset()],
|
|
1315
|
+
extend: [lumi.modernExtend.addManuSpecificLumiCluster(), lumiZigbeeOTA(), lumiPreventReset()],
|
|
1214
1316
|
},
|
|
1215
1317
|
{
|
|
1216
1318
|
zigbeeModel: ["lumi.switch.n3acn3"],
|
|
@@ -1264,9 +1366,11 @@ exports.definitions = [
|
|
|
1264
1366
|
return { left: 1, center: 2, right: 3 };
|
|
1265
1367
|
},
|
|
1266
1368
|
configure: async (device, coordinatorEndpoint) => {
|
|
1267
|
-
await device
|
|
1369
|
+
await device
|
|
1370
|
+
.getEndpoint(1)
|
|
1371
|
+
.write("manuSpecificLumi", { mode: 1 }, { manufacturerCode: manufacturerCode, disableResponse: true });
|
|
1268
1372
|
},
|
|
1269
|
-
extend: [lumiZigbeeOTA(), lumiPreventReset()],
|
|
1373
|
+
extend: [lumi.modernExtend.addManuSpecificLumiCluster(), lumiZigbeeOTA(), lumiPreventReset()],
|
|
1270
1374
|
},
|
|
1271
1375
|
{
|
|
1272
1376
|
zigbeeModel: ["lumi.switch.b1nacn02"],
|
|
@@ -1322,7 +1426,7 @@ exports.definitions = [
|
|
|
1322
1426
|
.withDescription("Decoupled mode for right button")
|
|
1323
1427
|
.withEndpoint("right"),
|
|
1324
1428
|
],
|
|
1325
|
-
extend: [lumiZigbeeOTA(), lumiPreventReset()],
|
|
1429
|
+
extend: [lumi.modernExtend.addManuSpecificLumiCluster(), lumiZigbeeOTA(), lumiPreventReset()],
|
|
1326
1430
|
},
|
|
1327
1431
|
{
|
|
1328
1432
|
zigbeeModel: ["lumi.switch.b1lacn01"],
|
|
@@ -1330,6 +1434,7 @@ exports.definitions = [
|
|
|
1330
1434
|
vendor: "Aqara",
|
|
1331
1435
|
description: "Smart wall switch T1 (no neutral, single rocker)",
|
|
1332
1436
|
extend: [
|
|
1437
|
+
lumi.modernExtend.addManuSpecificLumiCluster(),
|
|
1333
1438
|
lumiZigbeeOTA(),
|
|
1334
1439
|
lumiOnOff({ powerOutageMemory: "binary", operationMode: true }),
|
|
1335
1440
|
lumiLedDisabledNight(),
|
|
@@ -1344,6 +1449,7 @@ exports.definitions = [
|
|
|
1344
1449
|
vendor: "Aqara",
|
|
1345
1450
|
description: "Smart wall switch T1 (no neutral, double rocker)",
|
|
1346
1451
|
extend: [
|
|
1452
|
+
lumi.modernExtend.addManuSpecificLumiCluster(),
|
|
1347
1453
|
lumiZigbeeOTA(),
|
|
1348
1454
|
m.deviceEndpoints({ endpoints: { left: 1, right: 2 } }),
|
|
1349
1455
|
lumiOnOff({ powerOutageMemory: "binary", operationMode: true, endpointNames: ["left", "right"] }),
|
|
@@ -1359,6 +1465,7 @@ exports.definitions = [
|
|
|
1359
1465
|
vendor: "Aqara",
|
|
1360
1466
|
description: "Smart wall switch T1 (with neutral, single rocker)",
|
|
1361
1467
|
extend: [
|
|
1468
|
+
lumi.modernExtend.addManuSpecificLumiCluster(),
|
|
1362
1469
|
lumiZigbeeOTA(),
|
|
1363
1470
|
lumiOnOff({ powerOutageMemory: "binary", operationMode: true }),
|
|
1364
1471
|
lumiLedDisabledNight(),
|
|
@@ -1375,6 +1482,7 @@ exports.definitions = [
|
|
|
1375
1482
|
vendor: "Aqara",
|
|
1376
1483
|
description: "Smart wall switch T1 (with neutral, double rocker)",
|
|
1377
1484
|
extend: [
|
|
1485
|
+
lumi.modernExtend.addManuSpecificLumiCluster(),
|
|
1378
1486
|
m.forceDeviceType({ type: "Router" }),
|
|
1379
1487
|
m.forcePowerSource({ powerSource: "Mains (single phase)" }),
|
|
1380
1488
|
lumiZigbeeOTA(),
|
|
@@ -1394,6 +1502,7 @@ exports.definitions = [
|
|
|
1394
1502
|
vendor: "Aqara",
|
|
1395
1503
|
description: "Smart wall switch T1 (no neutral, triple rocker)",
|
|
1396
1504
|
extend: [
|
|
1505
|
+
lumi.modernExtend.addManuSpecificLumiCluster(),
|
|
1397
1506
|
lumiZigbeeOTA(),
|
|
1398
1507
|
m.deviceEndpoints({ endpoints: { left: 1, center: 2, right: 3 } }),
|
|
1399
1508
|
lumiOnOff({ powerOutageMemory: "binary", operationMode: true, endpointNames: ["left", "center", "right"] }),
|
|
@@ -1420,6 +1529,7 @@ exports.definitions = [
|
|
|
1420
1529
|
vendor: "Aqara",
|
|
1421
1530
|
description: "Smart wall switch T1 (with neutral, triple rocker)",
|
|
1422
1531
|
extend: [
|
|
1532
|
+
lumi.modernExtend.addManuSpecificLumiCluster(),
|
|
1423
1533
|
lumiZigbeeOTA(),
|
|
1424
1534
|
m.deviceEndpoints({ endpoints: { left: 1, center: 2, right: 3 } }),
|
|
1425
1535
|
lumiOnOff({ powerOutageMemory: "binary", operationMode: true, endpointNames: ["left", "center", "right"] }),
|
|
@@ -1487,7 +1597,7 @@ exports.definitions = [
|
|
|
1487
1597
|
await reporting.bind(endpoint, coordinatorEndpoint, binds);
|
|
1488
1598
|
await endpoint.read("genPowerCfg", ["batteryVoltage"]);
|
|
1489
1599
|
},
|
|
1490
|
-
extend: [m.quirkCheckinInterval("1_HOUR"), lumiZigbeeOTA()],
|
|
1600
|
+
extend: [lumi.modernExtend.addManuSpecificLumiCluster(), m.quirkCheckinInterval("1_HOUR"), lumiZigbeeOTA()],
|
|
1491
1601
|
},
|
|
1492
1602
|
{
|
|
1493
1603
|
zigbeeModel: ["lumi.sensor_motion"],
|
|
@@ -1545,7 +1655,7 @@ exports.definitions = [
|
|
|
1545
1655
|
await endpoint.read("genPowerCfg", ["batteryVoltage"]);
|
|
1546
1656
|
await endpoint.read("manuSpecificLumi", [0x0102], { manufacturerCode: manufacturerCode });
|
|
1547
1657
|
},
|
|
1548
|
-
extend: [m.quirkCheckinInterval("1_HOUR"), lumiZigbeeOTA()],
|
|
1658
|
+
extend: [lumi.modernExtend.addManuSpecificLumiCluster(), m.quirkCheckinInterval("1_HOUR"), lumiZigbeeOTA()],
|
|
1549
1659
|
},
|
|
1550
1660
|
{
|
|
1551
1661
|
zigbeeModel: ["lumi.motion.agl04"],
|
|
@@ -1575,7 +1685,7 @@ exports.definitions = [
|
|
|
1575
1685
|
await endpoint.read("manuSpecificLumi", [0x0102], { manufacturerCode: manufacturerCode });
|
|
1576
1686
|
await endpoint.read("manuSpecificLumi", [0x010c], { manufacturerCode: manufacturerCode });
|
|
1577
1687
|
},
|
|
1578
|
-
extend: [m.quirkCheckinInterval("1_HOUR"), lumiZigbeeOTA()],
|
|
1688
|
+
extend: [lumi.modernExtend.addManuSpecificLumiCluster(), m.quirkCheckinInterval("1_HOUR"), lumiZigbeeOTA()],
|
|
1579
1689
|
},
|
|
1580
1690
|
{
|
|
1581
1691
|
zigbeeModel: ["lumi.motion.ac02"],
|
|
@@ -1611,7 +1721,7 @@ exports.definitions = [
|
|
|
1611
1721
|
await endpoint.read("manuSpecificLumi", [0x010c], { manufacturerCode: manufacturerCode });
|
|
1612
1722
|
await endpoint.read("manuSpecificLumi", [0x0152], { manufacturerCode: manufacturerCode });
|
|
1613
1723
|
},
|
|
1614
|
-
extend: [m.quirkCheckinInterval("1_HOUR"), lumiZigbeeOTA()],
|
|
1724
|
+
extend: [lumi.modernExtend.addManuSpecificLumiCluster(), m.quirkCheckinInterval("1_HOUR"), lumiZigbeeOTA()],
|
|
1615
1725
|
},
|
|
1616
1726
|
{
|
|
1617
1727
|
zigbeeModel: ["lumi.motion.acn001"],
|
|
@@ -1640,7 +1750,7 @@ exports.definitions = [
|
|
|
1640
1750
|
await endpoint.read("genPowerCfg", ["batteryVoltage"]);
|
|
1641
1751
|
await endpoint.read("manuSpecificLumi", [0x0102], { manufacturerCode: manufacturerCode });
|
|
1642
1752
|
},
|
|
1643
|
-
extend: [m.quirkCheckinInterval("1_HOUR"), lumiZigbeeOTA()],
|
|
1753
|
+
extend: [lumi.modernExtend.addManuSpecificLumiCluster(), m.quirkCheckinInterval("1_HOUR"), lumiZigbeeOTA()],
|
|
1644
1754
|
},
|
|
1645
1755
|
{
|
|
1646
1756
|
zigbeeModel: ["lumi.motion.ac01"],
|
|
@@ -1717,7 +1827,7 @@ exports.definitions = [
|
|
|
1717
1827
|
await endpoint.read("manuSpecificLumi", [0x0144], { manufacturerCode: manufacturerCode });
|
|
1718
1828
|
await endpoint.read("manuSpecificLumi", [0x0146], { manufacturerCode: manufacturerCode });
|
|
1719
1829
|
},
|
|
1720
|
-
extend: [lumiZigbeeOTA()],
|
|
1830
|
+
extend: [lumi.modernExtend.addManuSpecificLumiCluster(), lumiZigbeeOTA()],
|
|
1721
1831
|
},
|
|
1722
1832
|
{
|
|
1723
1833
|
zigbeeModel: ["lumi.sensor_occupy.agl1"],
|
|
@@ -1738,6 +1848,7 @@ exports.definitions = [
|
|
|
1738
1848
|
await endpoint.read("manuSpecificLumi", [0x010c], { manufacturerCode: manufacturerCode });
|
|
1739
1849
|
},
|
|
1740
1850
|
extend: [
|
|
1851
|
+
lumi.modernExtend.addManuSpecificLumiCluster(),
|
|
1741
1852
|
lumiZigbeeOTA(),
|
|
1742
1853
|
lumi.lumiModernExtend.fp1ePresence(),
|
|
1743
1854
|
lumi.lumiModernExtend.fp1eMovement(),
|
|
@@ -1802,7 +1913,7 @@ exports.definitions = [
|
|
|
1802
1913
|
fromZigbee: [lumi.fromZigbee.lumi_basic, fz.ias_water_leak_alarm_1, lumi.fromZigbee.lumi_specific],
|
|
1803
1914
|
toZigbee: [],
|
|
1804
1915
|
exposes: [e.battery(), e.water_leak(), e.battery_low(), e.tamper(), e.battery_voltage()],
|
|
1805
|
-
extend: [m.quirkCheckinInterval("1_HOUR"), lumiZigbeeOTA()],
|
|
1916
|
+
extend: [lumi.modernExtend.addManuSpecificLumiCluster(), m.quirkCheckinInterval("1_HOUR"), lumiZigbeeOTA()],
|
|
1806
1917
|
},
|
|
1807
1918
|
{
|
|
1808
1919
|
zigbeeModel: ["lumi.sensor_cube", "lumi.sensor_cube.aqgl01"],
|
|
@@ -1873,7 +1984,7 @@ exports.definitions = [
|
|
|
1873
1984
|
e.auto_off(20),
|
|
1874
1985
|
e.overload_protection(100, 2300),
|
|
1875
1986
|
],
|
|
1876
|
-
extend: [lumiZigbeeOTA()],
|
|
1987
|
+
extend: [lumi.modernExtend.addManuSpecificLumiCluster(), lumiZigbeeOTA()],
|
|
1877
1988
|
},
|
|
1878
1989
|
{
|
|
1879
1990
|
zigbeeModel: ["lumi.plug.maus01"],
|
|
@@ -1909,7 +2020,7 @@ exports.definitions = [
|
|
|
1909
2020
|
e.auto_off(20),
|
|
1910
2021
|
e.overload_protection(100, 2300),
|
|
1911
2022
|
],
|
|
1912
|
-
extend: [lumiZigbeeOTA()],
|
|
2023
|
+
extend: [lumi.modernExtend.addManuSpecificLumiCluster(), lumiZigbeeOTA()],
|
|
1913
2024
|
},
|
|
1914
2025
|
{
|
|
1915
2026
|
zigbeeModel: ["lumi.plug.maeu01"],
|
|
@@ -1917,6 +2028,7 @@ exports.definitions = [
|
|
|
1917
2028
|
description: "Smart plug EU",
|
|
1918
2029
|
vendor: "Aqara",
|
|
1919
2030
|
extend: [
|
|
2031
|
+
lumi.modernExtend.addManuSpecificLumiCluster(),
|
|
1920
2032
|
m.forceDeviceType({ type: "Router" }),
|
|
1921
2033
|
lumiZigbeeOTA(),
|
|
1922
2034
|
m.poll({
|
|
@@ -2047,6 +2159,7 @@ exports.definitions = [
|
|
|
2047
2159
|
.withDescription("Control both relay and usb or only the relay with the physical switch button"),
|
|
2048
2160
|
],
|
|
2049
2161
|
extend: [
|
|
2162
|
+
lumi.modernExtend.addManuSpecificLumiCluster(),
|
|
2050
2163
|
lumi.lumiModernExtend.lumiZigbeeOTA(),
|
|
2051
2164
|
lumi.lumiModernExtend.lumiOnOff({ powerOutageMemory: "enum", endpointNames: ["relay", "usb"] }),
|
|
2052
2165
|
lumi.lumiModernExtend.lumiLedDisabledNight(),
|
|
@@ -2095,7 +2208,11 @@ exports.definitions = [
|
|
|
2095
2208
|
e.numeric("gas_density", ea.STATE),
|
|
2096
2209
|
e.enum("selftest", ea.SET, [""]),
|
|
2097
2210
|
],
|
|
2098
|
-
extend: [
|
|
2211
|
+
extend: [
|
|
2212
|
+
lumi.modernExtend.addManuSpecificLumiCluster(),
|
|
2213
|
+
m.forceDeviceType({ type: "Router" }),
|
|
2214
|
+
m.forcePowerSource({ powerSource: "Mains (single phase)" }),
|
|
2215
|
+
],
|
|
2099
2216
|
},
|
|
2100
2217
|
{
|
|
2101
2218
|
zigbeeModel: ["lumi.sensor_gas.acn02"],
|
|
@@ -2158,7 +2275,7 @@ exports.definitions = [
|
|
|
2158
2275
|
await endpoint.read("manuSpecificLumi", [0x014b], { manufacturerCode: manufacturerCode });
|
|
2159
2276
|
await endpoint.read("manuSpecificLumi", [0x0002], { manufacturerCode: manufacturerCode });
|
|
2160
2277
|
},
|
|
2161
|
-
extend: [lumiZigbeeOTA()],
|
|
2278
|
+
extend: [lumi.modernExtend.addManuSpecificLumiCluster(), lumiZigbeeOTA()],
|
|
2162
2279
|
},
|
|
2163
2280
|
{
|
|
2164
2281
|
zigbeeModel: ["lumi.sensor_smoke.acn03"],
|
|
@@ -2219,7 +2336,7 @@ exports.definitions = [
|
|
|
2219
2336
|
await endpoint.read("manuSpecificLumi", [0x0126], { manufacturerCode: manufacturerCode });
|
|
2220
2337
|
await endpoint.read("manuSpecificLumi", [0x014b], { manufacturerCode: manufacturerCode });
|
|
2221
2338
|
},
|
|
2222
|
-
extend: [m.quirkCheckinInterval("1_HOUR"), lumiZigbeeOTA()],
|
|
2339
|
+
extend: [lumi.modernExtend.addManuSpecificLumiCluster(), m.quirkCheckinInterval("1_HOUR"), lumiZigbeeOTA()],
|
|
2223
2340
|
},
|
|
2224
2341
|
{
|
|
2225
2342
|
zigbeeModel: ["lumi.lock.v1"],
|
|
@@ -2262,6 +2379,7 @@ exports.definitions = [
|
|
|
2262
2379
|
vendor: "Aqara",
|
|
2263
2380
|
description: "Vibration sensor T1",
|
|
2264
2381
|
extend: [
|
|
2382
|
+
lumi.modernExtend.addManuSpecificLumiCluster(),
|
|
2265
2383
|
lumiVibration(),
|
|
2266
2384
|
// lumiMiscellaneous(),
|
|
2267
2385
|
lumiReportInterval(),
|
|
@@ -2271,6 +2389,154 @@ exports.definitions = [
|
|
|
2271
2389
|
m.quirkCheckinInterval("1_HOUR"),
|
|
2272
2390
|
],
|
|
2273
2391
|
},
|
|
2392
|
+
{
|
|
2393
|
+
zigbeeModel: ["lumi.vibration.agl002"],
|
|
2394
|
+
model: "DWZTCGQ11LM",
|
|
2395
|
+
vendor: "Aqara",
|
|
2396
|
+
description: "Multi-state sensor P100",
|
|
2397
|
+
extend: [
|
|
2398
|
+
lumi.lumiModernExtend.addManuSpecificLumiCluster(),
|
|
2399
|
+
lumi.lumiModernExtend.lumiPreventReset(),
|
|
2400
|
+
lumi.lumiModernExtend.lumiBattery({
|
|
2401
|
+
voltageAttribute: 0x17,
|
|
2402
|
+
percentageAttribute: 0x18,
|
|
2403
|
+
}),
|
|
2404
|
+
lumi.lumiModernExtend.lumiZigbeeOTA(),
|
|
2405
|
+
m.enumLookup({
|
|
2406
|
+
name: "device_mode",
|
|
2407
|
+
cluster: "manuSpecificLumi",
|
|
2408
|
+
attribute: { ID: 0x0116, type: zigbee_herdsman_1.Zcl.DataType.UINT8 },
|
|
2409
|
+
lookup: { door_window: 3, object: 5 },
|
|
2410
|
+
description: "Device operating mode",
|
|
2411
|
+
access: "STATE_SET",
|
|
2412
|
+
entityCategory: "config",
|
|
2413
|
+
zigbeeCommandOptions: { manufacturerCode },
|
|
2414
|
+
}),
|
|
2415
|
+
m.enumLookup({
|
|
2416
|
+
name: "door_window_type",
|
|
2417
|
+
cluster: "manuSpecificLumi",
|
|
2418
|
+
attribute: { ID: 0x01eb, type: zigbee_herdsman_1.Zcl.DataType.UINT8 },
|
|
2419
|
+
lookup: { casement_window: 1, hopper_window: 2, composite_window: 3, hinged_door: 4 },
|
|
2420
|
+
description: "Door/window type (applies when device_mode = door_window)",
|
|
2421
|
+
access: "STATE_SET",
|
|
2422
|
+
label: "Door/window type",
|
|
2423
|
+
entityCategory: "config",
|
|
2424
|
+
zigbeeCommandOptions: { manufacturerCode },
|
|
2425
|
+
}),
|
|
2426
|
+
m.numeric({
|
|
2427
|
+
name: "sensitivity",
|
|
2428
|
+
cluster: "manuSpecificLumi",
|
|
2429
|
+
attribute: { ID: 0x010c, type: zigbee_herdsman_1.Zcl.DataType.UINT8 },
|
|
2430
|
+
valueMin: 1,
|
|
2431
|
+
valueMax: 10,
|
|
2432
|
+
description: "Detection sensitivity (1 = low, 10 = high)",
|
|
2433
|
+
access: "STATE_SET",
|
|
2434
|
+
entityCategory: "config",
|
|
2435
|
+
zigbeeCommandOptions: { manufacturerCode },
|
|
2436
|
+
}),
|
|
2437
|
+
m.numeric({
|
|
2438
|
+
name: "report_interval",
|
|
2439
|
+
cluster: "manuSpecificLumi",
|
|
2440
|
+
attribute: { ID: 0x01ec, type: zigbee_herdsman_1.Zcl.DataType.UINT32 },
|
|
2441
|
+
unit: "s",
|
|
2442
|
+
valueMin: 5,
|
|
2443
|
+
valueMax: 300,
|
|
2444
|
+
description: "Reporting interval in seconds. Also drives the device's 802.15.4 poll cadence — lower values are more responsive but reduce battery life.",
|
|
2445
|
+
access: "STATE_SET",
|
|
2446
|
+
entityCategory: "config",
|
|
2447
|
+
zigbeeCommandOptions: { manufacturerCode },
|
|
2448
|
+
}),
|
|
2449
|
+
m.binary({
|
|
2450
|
+
name: "orientation_detection",
|
|
2451
|
+
cluster: "manuSpecificLumi",
|
|
2452
|
+
attribute: { ID: 0x01f0, type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN },
|
|
2453
|
+
valueOn: ["ON", 1],
|
|
2454
|
+
valueOff: ["OFF", 0],
|
|
2455
|
+
description: "Enable orientation event detection (object mode, requires device button press)",
|
|
2456
|
+
access: "STATE_SET",
|
|
2457
|
+
zigbeeCommandOptions: { manufacturerCode },
|
|
2458
|
+
}),
|
|
2459
|
+
m.binary({
|
|
2460
|
+
name: "movement_detection",
|
|
2461
|
+
cluster: "manuSpecificLumi",
|
|
2462
|
+
attribute: { ID: 0x01ed, type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN },
|
|
2463
|
+
valueOn: ["ON", 1],
|
|
2464
|
+
valueOff: ["OFF", 0],
|
|
2465
|
+
description: "Enable movement event detection (object mode, requires device button press)",
|
|
2466
|
+
access: "STATE_SET",
|
|
2467
|
+
zigbeeCommandOptions: { manufacturerCode },
|
|
2468
|
+
}),
|
|
2469
|
+
m.binary({
|
|
2470
|
+
name: "fall_detection",
|
|
2471
|
+
cluster: "manuSpecificLumi",
|
|
2472
|
+
attribute: { ID: 0x01d8, type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN },
|
|
2473
|
+
valueOn: ["ON", 1],
|
|
2474
|
+
valueOff: ["OFF", 0],
|
|
2475
|
+
description: "Enable fall event detection (object mode, requires device button press)",
|
|
2476
|
+
access: "STATE_SET",
|
|
2477
|
+
zigbeeCommandOptions: { manufacturerCode },
|
|
2478
|
+
}),
|
|
2479
|
+
m.binary({
|
|
2480
|
+
name: "vibration_detection",
|
|
2481
|
+
cluster: "manuSpecificLumi",
|
|
2482
|
+
attribute: { ID: 0x0107, type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN },
|
|
2483
|
+
valueOn: ["ON", 1],
|
|
2484
|
+
valueOff: ["OFF", 0],
|
|
2485
|
+
description: "Enable vibration event detection (object mode, requires device button press)",
|
|
2486
|
+
access: "STATE_SET",
|
|
2487
|
+
zigbeeCommandOptions: { manufacturerCode },
|
|
2488
|
+
}),
|
|
2489
|
+
m.binary({
|
|
2490
|
+
name: "triple_tap_detection",
|
|
2491
|
+
cluster: "manuSpecificLumi",
|
|
2492
|
+
attribute: { ID: 0x01ef, type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN },
|
|
2493
|
+
valueOn: ["ON", 1],
|
|
2494
|
+
valueOff: ["OFF", 0],
|
|
2495
|
+
description: "Enable triple-tap event detection (object mode, requires device button press)",
|
|
2496
|
+
access: "STATE_SET",
|
|
2497
|
+
zigbeeCommandOptions: { manufacturerCode },
|
|
2498
|
+
}),
|
|
2499
|
+
m.enumLookup({
|
|
2500
|
+
name: "orientation",
|
|
2501
|
+
cluster: "manuSpecificLumi",
|
|
2502
|
+
attribute: { ID: 0x01f1, type: zigbee_herdsman_1.Zcl.DataType.UINT8 },
|
|
2503
|
+
lookup: { face_up: 1, face_down: 2, vertical: 3, tilt: 4 },
|
|
2504
|
+
description: "Last reported orientation (relevant when action = orientation)",
|
|
2505
|
+
access: "STATE",
|
|
2506
|
+
zigbeeCommandOptions: { manufacturerCode },
|
|
2507
|
+
}),
|
|
2508
|
+
// Primary actions on closuresDoorLock 0x0055
|
|
2509
|
+
m.actionEnumLookup({
|
|
2510
|
+
cluster: "closuresDoorLock",
|
|
2511
|
+
attribute: { ID: 0x0055, type: zigbee_herdsman_1.Zcl.DataType.UINT16 },
|
|
2512
|
+
actionLookup: { triple_tap: 0, movement: 1, vibration: 2, orientation: 3, fall: 4 },
|
|
2513
|
+
extraActions: ["static"],
|
|
2514
|
+
}),
|
|
2515
|
+
// and the static-state edge on manuSpecificLumi 0x01F3, declared as an
|
|
2516
|
+
// extraAction above. Emits true transition only (the device does
|
|
2517
|
+
// report the false transition)
|
|
2518
|
+
lumi.lumiModernExtend.lumiStaticStateAction(),
|
|
2519
|
+
m.binary({
|
|
2520
|
+
name: "contact",
|
|
2521
|
+
cluster: "genOnOff",
|
|
2522
|
+
attribute: "onOff",
|
|
2523
|
+
valueOn: [false, 1],
|
|
2524
|
+
valueOff: [true, 0],
|
|
2525
|
+
description: "Door/window state (door/window mode only)",
|
|
2526
|
+
access: "STATE",
|
|
2527
|
+
}),
|
|
2528
|
+
m.enumLookup({
|
|
2529
|
+
name: "device_posture",
|
|
2530
|
+
cluster: "manuSpecificLumi",
|
|
2531
|
+
attribute: { ID: 0x01ee, type: zigbee_herdsman_1.Zcl.DataType.UINT8 },
|
|
2532
|
+
lookup: { normal: 1, abnormal: 2 },
|
|
2533
|
+
description: "Door/window mounting orientation check — 'abnormal' if the sensor is incorrectly installed or needs calibration",
|
|
2534
|
+
access: "STATE",
|
|
2535
|
+
entityCategory: "diagnostic",
|
|
2536
|
+
zigbeeCommandOptions: { manufacturerCode },
|
|
2537
|
+
}),
|
|
2538
|
+
],
|
|
2539
|
+
},
|
|
2274
2540
|
{
|
|
2275
2541
|
zigbeeModel: ["lumi.curtain"],
|
|
2276
2542
|
model: "ZNCLDJ11LM",
|
|
@@ -2373,6 +2639,7 @@ exports.definitions = [
|
|
|
2373
2639
|
.withDescription("Performs an automatic calibration process similar to Aqara’s method to set curtain limits."),
|
|
2374
2640
|
],
|
|
2375
2641
|
extend: [
|
|
2642
|
+
lumi.modernExtend.addManuSpecificLumiCluster(),
|
|
2376
2643
|
m.windowCovering({ controls: ["lift"], coverInverted: true, configureReporting: true }),
|
|
2377
2644
|
lumiCurtainSpeed(),
|
|
2378
2645
|
lumiCurtainManualOpenClose(),
|
|
@@ -2420,6 +2687,7 @@ exports.definitions = [
|
|
|
2420
2687
|
await endpoint.read("manuSpecificLumi", [0x040a], { manufacturerCode: manufacturerCode });
|
|
2421
2688
|
},
|
|
2422
2689
|
extend: [
|
|
2690
|
+
lumi.modernExtend.addManuSpecificLumiCluster(),
|
|
2423
2691
|
m.quirkAddEndpointCluster({
|
|
2424
2692
|
endpointID: 1,
|
|
2425
2693
|
inputClusters: ["manuSpecificLumi"],
|
|
@@ -2478,7 +2746,7 @@ exports.definitions = [
|
|
|
2478
2746
|
await endpoint.read("genBasic", ["powerSource"]);
|
|
2479
2747
|
await endpoint.read("closuresWindowCovering", ["currentPositionLiftPercentage"]);
|
|
2480
2748
|
},
|
|
2481
|
-
extend: [lumiZigbeeOTA()],
|
|
2749
|
+
extend: [lumi.modernExtend.addManuSpecificLumiCluster(), lumiZigbeeOTA()],
|
|
2482
2750
|
},
|
|
2483
2751
|
{
|
|
2484
2752
|
zigbeeModel: ["lumi.relay.c2acn01"],
|
|
@@ -2527,6 +2795,7 @@ exports.definitions = [
|
|
|
2527
2795
|
e.device_temperature(),
|
|
2528
2796
|
],
|
|
2529
2797
|
extend: [
|
|
2798
|
+
lumi.modernExtend.addManuSpecificLumiCluster(),
|
|
2530
2799
|
lumiSwitchType(),
|
|
2531
2800
|
lumiPowerOnBehavior({ lookup: { on: 0, previous: 1, off: 2, toggle: 3 } }),
|
|
2532
2801
|
lumiOperationMode({ description: "Decoupled mode for 1st relay", endpointName: "l1" }),
|
|
@@ -2695,7 +2964,7 @@ exports.definitions = [
|
|
|
2695
2964
|
],
|
|
2696
2965
|
toZigbee: [lumi.toZigbee.lumi_operation_mode_opple],
|
|
2697
2966
|
meta: { battery: { voltageToPercentage: { min: 2850, max: 3000 } } },
|
|
2698
|
-
extend: [m.quirkCheckinInterval("1_HOUR")],
|
|
2967
|
+
extend: [lumi.modernExtend.addManuSpecificLumiCluster(), m.quirkCheckinInterval("1_HOUR")],
|
|
2699
2968
|
configure: async (device, coordinatorEndpoint) => {
|
|
2700
2969
|
const endpoint = device.getEndpoint(1);
|
|
2701
2970
|
await endpoint.write("manuSpecificLumi", { mode: 1 }, { manufacturerCode: manufacturerCode });
|
|
@@ -2747,7 +3016,7 @@ exports.definitions = [
|
|
|
2747
3016
|
],
|
|
2748
3017
|
toZigbee: [lumi.toZigbee.lumi_operation_mode_opple],
|
|
2749
3018
|
meta: { battery: { voltageToPercentage: { min: 2850, max: 3000 } } },
|
|
2750
|
-
extend: [m.quirkCheckinInterval("1_HOUR")],
|
|
3019
|
+
extend: [lumi.modernExtend.addManuSpecificLumiCluster(), m.quirkCheckinInterval("1_HOUR")],
|
|
2751
3020
|
configure: async (device, coordinatorEndpoint) => {
|
|
2752
3021
|
const endpoint = device.getEndpoint(1);
|
|
2753
3022
|
await endpoint.write("manuSpecificLumi", { mode: 1 }, { manufacturerCode: manufacturerCode });
|
|
@@ -2813,7 +3082,7 @@ exports.definitions = [
|
|
|
2813
3082
|
],
|
|
2814
3083
|
toZigbee: [lumi.toZigbee.lumi_operation_mode_opple],
|
|
2815
3084
|
meta: { battery: { voltageToPercentage: { min: 2850, max: 3000 } } },
|
|
2816
|
-
extend: [m.quirkCheckinInterval("1_HOUR")],
|
|
3085
|
+
extend: [lumi.modernExtend.addManuSpecificLumiCluster(), m.quirkCheckinInterval("1_HOUR")],
|
|
2817
3086
|
configure: async (device, coordinatorEndpoint) => {
|
|
2818
3087
|
const endpoint = device.getEndpoint(1);
|
|
2819
3088
|
await endpoint.write("manuSpecificLumi", { mode: 1 }, { manufacturerCode: manufacturerCode });
|
|
@@ -2828,7 +3097,7 @@ exports.definitions = [
|
|
|
2828
3097
|
description: "Mi light sensor",
|
|
2829
3098
|
fromZigbee: [fz.battery, lumi.fromZigbee.lumi_specific],
|
|
2830
3099
|
meta: { battery: { voltageToPercentage: { min: 2850, max: 3000 } } },
|
|
2831
|
-
extend: [m.quirkCheckinInterval("1_HOUR"), m.illuminance()],
|
|
3100
|
+
extend: [lumi.modernExtend.addManuSpecificLumiCluster(), m.quirkCheckinInterval("1_HOUR"), m.illuminance()],
|
|
2832
3101
|
exposes: [e.battery(), e.battery_voltage()],
|
|
2833
3102
|
},
|
|
2834
3103
|
{
|
|
@@ -2842,6 +3111,7 @@ exports.definitions = [
|
|
|
2842
3111
|
{ vendor: "Aqara", model: "MZTD11LM" },
|
|
2843
3112
|
],
|
|
2844
3113
|
extend: [
|
|
3114
|
+
lumi.modernExtend.addManuSpecificLumiCluster(),
|
|
2845
3115
|
lumiZigbeeOTA(),
|
|
2846
3116
|
lumiLight({
|
|
2847
3117
|
colorTemp: true,
|
|
@@ -2883,7 +3153,11 @@ exports.definitions = [
|
|
|
2883
3153
|
model: "ZNTGMK12LM",
|
|
2884
3154
|
vendor: "Aqara",
|
|
2885
3155
|
description: "Smart color temperature light controller",
|
|
2886
|
-
extend: [
|
|
3156
|
+
extend: [
|
|
3157
|
+
lumi.modernExtend.addManuSpecificLumiCluster(),
|
|
3158
|
+
lumiLight({ colorTemp: true, powerOutageCount: true, deviceTemperature: true }),
|
|
3159
|
+
lumiZigbeeOTA(),
|
|
3160
|
+
],
|
|
2887
3161
|
},
|
|
2888
3162
|
{
|
|
2889
3163
|
zigbeeModel: ["lumi.light.cbacn1"],
|
|
@@ -2897,7 +3171,7 @@ exports.definitions = [
|
|
|
2897
3171
|
model: "SSWQD02LM",
|
|
2898
3172
|
vendor: "Aqara",
|
|
2899
3173
|
description: "Smart dimmer controller T1 Pro",
|
|
2900
|
-
extend: [lumiZigbeeOTA(), lumiLight({ colorTemp: true, powerOutageMemory: "switch" })],
|
|
3174
|
+
extend: [lumi.modernExtend.addManuSpecificLumiCluster(), lumiZigbeeOTA(), lumiLight({ colorTemp: true, powerOutageMemory: "switch" })],
|
|
2901
3175
|
},
|
|
2902
3176
|
{
|
|
2903
3177
|
zigbeeModel: ["lumi.dimmer.acn003"],
|
|
@@ -2905,6 +3179,7 @@ exports.definitions = [
|
|
|
2905
3179
|
vendor: "Aqara",
|
|
2906
3180
|
description: "T1 light strip controller",
|
|
2907
3181
|
extend: [
|
|
3182
|
+
lumi.modernExtend.addManuSpecificLumiCluster(),
|
|
2908
3183
|
lumi.lumiModernExtend.lumiLight({ colorTemp: true, colorTempRange: [154, 370], color: false, powerOutageMemory: "enum" }),
|
|
2909
3184
|
m.identify(),
|
|
2910
3185
|
m.forcePowerSource({ powerSource: "Mains (single phase)" }),
|
|
@@ -2922,6 +3197,7 @@ exports.definitions = [
|
|
|
2922
3197
|
vendor: "Aqara",
|
|
2923
3198
|
description: "T1 light strip controller",
|
|
2924
3199
|
extend: [
|
|
3200
|
+
lumi.modernExtend.addManuSpecificLumiCluster(),
|
|
2925
3201
|
lumi.lumiModernExtend.lumiLight({ colorTemp: true, colorTempRange: [154, 370], color: false, powerOutageMemory: "enum" }),
|
|
2926
3202
|
m.identify(),
|
|
2927
3203
|
m.forcePowerSource({ powerSource: "Mains (single phase)" }),
|
|
@@ -2939,6 +3215,7 @@ exports.definitions = [
|
|
|
2939
3215
|
vendor: "Aqara",
|
|
2940
3216
|
description: "T1 light strip controller",
|
|
2941
3217
|
extend: [
|
|
3218
|
+
lumi.modernExtend.addManuSpecificLumiCluster(),
|
|
2942
3219
|
lumi.lumiModernExtend.lumiLight({ colorTemp: true, colorTempRange: [154, 370], color: false, powerOutageMemory: "enum" }),
|
|
2943
3220
|
m.identify(),
|
|
2944
3221
|
m.forcePowerSource({ powerSource: "Mains (single phase)" }),
|
|
@@ -2955,7 +3232,7 @@ exports.definitions = [
|
|
|
2955
3232
|
model: "SSWQD03LM",
|
|
2956
3233
|
vendor: "Aqara",
|
|
2957
3234
|
description: "Spotlight T2",
|
|
2958
|
-
extend: [lumiZigbeeOTA(), lumiLight({ colorTemp: true, powerOutageMemory: "switch" })],
|
|
3235
|
+
extend: [lumi.modernExtend.addManuSpecificLumiCluster(), lumiZigbeeOTA(), lumiLight({ colorTemp: true, powerOutageMemory: "switch" })],
|
|
2959
3236
|
},
|
|
2960
3237
|
{
|
|
2961
3238
|
zigbeeModel: ["lumi.switch.n0agl1"],
|
|
@@ -2989,7 +3266,12 @@ exports.definitions = [
|
|
|
2989
3266
|
await reporting.onOff(endpoint);
|
|
2990
3267
|
await reporting.deviceTemperature(endpoint);
|
|
2991
3268
|
},
|
|
2992
|
-
extend: [
|
|
3269
|
+
extend: [
|
|
3270
|
+
lumi.modernExtend.addManuSpecificLumiCluster(),
|
|
3271
|
+
lumiZigbeeOTA(),
|
|
3272
|
+
m.forceDeviceType({ type: "Router" }),
|
|
3273
|
+
m.forcePowerSource({ powerSource: "Mains (single phase)" }),
|
|
3274
|
+
],
|
|
2993
3275
|
},
|
|
2994
3276
|
{
|
|
2995
3277
|
zigbeeModel: ["lumi.switch.n0acn2"],
|
|
@@ -3016,9 +3298,11 @@ exports.definitions = [
|
|
|
3016
3298
|
e.switch_type(),
|
|
3017
3299
|
],
|
|
3018
3300
|
configure: async (device, coordinatorEndpoint) => {
|
|
3019
|
-
await device
|
|
3301
|
+
await device
|
|
3302
|
+
.getEndpoint(1)
|
|
3303
|
+
.write("manuSpecificLumi", { mode: 1 }, { manufacturerCode: manufacturerCode, disableResponse: true });
|
|
3020
3304
|
},
|
|
3021
|
-
extend: [lumiZigbeeOTA(), m.forcePowerSource({ powerSource: "Mains (single phase)" })],
|
|
3305
|
+
extend: [lumi.modernExtend.addManuSpecificLumiCluster(), lumiZigbeeOTA(), m.forcePowerSource({ powerSource: "Mains (single phase)" })],
|
|
3022
3306
|
},
|
|
3023
3307
|
{
|
|
3024
3308
|
zigbeeModel: ["lumi.switch.l0agl1"],
|
|
@@ -3028,7 +3312,7 @@ exports.definitions = [
|
|
|
3028
3312
|
fromZigbee: [fz.on_off, lumi.fromZigbee.lumi_specific],
|
|
3029
3313
|
exposes: [e.switch(), e.power_outage_memory(), e.switch_type(), e.power_outage_count(), e.device_temperature()],
|
|
3030
3314
|
toZigbee: [lumi.toZigbee.lumi_switch_type, tz.on_off, lumi.toZigbee.lumi_switch_power_outage_memory],
|
|
3031
|
-
extend: [m.forcePowerSource({ powerSource: "Mains (single phase)" })],
|
|
3315
|
+
extend: [lumi.modernExtend.addManuSpecificLumiCluster(), m.forcePowerSource({ powerSource: "Mains (single phase)" })],
|
|
3032
3316
|
configure: async (device, coordinatorEndpoint) => {
|
|
3033
3317
|
const endpoint = device.getEndpoint(1);
|
|
3034
3318
|
await reporting.bind(endpoint, coordinatorEndpoint, ["genOnOff"]);
|
|
@@ -3043,7 +3327,7 @@ exports.definitions = [
|
|
|
3043
3327
|
fromZigbee: [fz.on_off, lumi.fromZigbee.lumi_specific],
|
|
3044
3328
|
exposes: [e.switch(), e.power_outage_memory(), e.switch_type()],
|
|
3045
3329
|
toZigbee: [lumi.toZigbee.lumi_switch_type, tz.on_off, lumi.toZigbee.lumi_switch_power_outage_memory],
|
|
3046
|
-
extend: [m.forcePowerSource({ powerSource: "Mains (single phase)" })],
|
|
3330
|
+
extend: [lumi.modernExtend.addManuSpecificLumiCluster(), m.forcePowerSource({ powerSource: "Mains (single phase)" })],
|
|
3047
3331
|
configure: async (device, coordinatorEndpoint) => {
|
|
3048
3332
|
const endpoint = device.getEndpoint(1);
|
|
3049
3333
|
await reporting.bind(endpoint, coordinatorEndpoint, ["genOnOff"]);
|
|
@@ -3122,7 +3406,7 @@ exports.definitions = [
|
|
|
3122
3406
|
vendor: "Aqara",
|
|
3123
3407
|
description: "Wireless remote switch T1 (single rocker)",
|
|
3124
3408
|
meta: { battery: { voltageToPercentage: { min: 2850, max: 3000 } } },
|
|
3125
|
-
extend: [m.quirkCheckinInterval("1_HOUR")],
|
|
3409
|
+
extend: [lumi.modernExtend.addManuSpecificLumiCluster(), m.quirkCheckinInterval("1_HOUR")],
|
|
3126
3410
|
fromZigbee: [lumi.fromZigbee.lumi_action, lumi.fromZigbee.lumi_action_multistate, fz.battery, lumi.fromZigbee.lumi_specific],
|
|
3127
3411
|
toZigbee: [],
|
|
3128
3412
|
exposes: [e.action(["single", "double", "hold"]), e.battery()],
|
|
@@ -3136,7 +3420,7 @@ exports.definitions = [
|
|
|
3136
3420
|
fromZigbee: [fz.battery, lumi.fromZigbee.lumi_action_multistate, lumi.fromZigbee.lumi_specific, fz.command_toggle],
|
|
3137
3421
|
toZigbee: [lumi.toZigbee.lumi_switch_click_mode, lumi.toZigbee.lumi_operation_mode_opple],
|
|
3138
3422
|
meta: { battery: { voltageToPercentage: { min: 2850, max: 3000 } }, multiEndpoint: true },
|
|
3139
|
-
extend: [m.quirkCheckinInterval("1_HOUR")],
|
|
3423
|
+
extend: [lumi.modernExtend.addManuSpecificLumiCluster(), m.quirkCheckinInterval("1_HOUR")],
|
|
3140
3424
|
exposes: [
|
|
3141
3425
|
e.battery(),
|
|
3142
3426
|
e.battery_voltage(),
|
|
@@ -3202,9 +3486,11 @@ exports.definitions = [
|
|
|
3202
3486
|
.withDescription("Anti flicker mode can be used to solve blinking issues of some lights. Quick mode makes the device respond faster."),
|
|
3203
3487
|
],
|
|
3204
3488
|
configure: async (device, coordinatorEndpoint) => {
|
|
3205
|
-
await device
|
|
3489
|
+
await device
|
|
3490
|
+
.getEndpoint(1)
|
|
3491
|
+
.write("manuSpecificLumi", { mode: 1 }, { manufacturerCode: manufacturerCode, disableResponse: true });
|
|
3206
3492
|
},
|
|
3207
|
-
extend: [lumiZigbeeOTA(), lumiPreventReset()],
|
|
3493
|
+
extend: [lumi.modernExtend.addManuSpecificLumiCluster(), lumiZigbeeOTA(), lumiPreventReset()],
|
|
3208
3494
|
},
|
|
3209
3495
|
{
|
|
3210
3496
|
zigbeeModel: ["lumi.switch.b2lc04"],
|
|
@@ -3237,9 +3523,11 @@ exports.definitions = [
|
|
|
3237
3523
|
e.flip_indicator_light(),
|
|
3238
3524
|
],
|
|
3239
3525
|
configure: async (device, coordinatorEndpoint) => {
|
|
3240
|
-
await device
|
|
3526
|
+
await device
|
|
3527
|
+
.getEndpoint(1)
|
|
3528
|
+
.write("manuSpecificLumi", { mode: 1 }, { manufacturerCode: manufacturerCode, disableResponse: true });
|
|
3241
3529
|
},
|
|
3242
|
-
extend: [lumiZigbeeOTA(), lumiPreventReset()],
|
|
3530
|
+
extend: [lumi.modernExtend.addManuSpecificLumiCluster(), lumiZigbeeOTA(), lumiPreventReset()],
|
|
3243
3531
|
},
|
|
3244
3532
|
{
|
|
3245
3533
|
zigbeeModel: ["lumi.airmonitor.acn01"],
|
|
@@ -3251,6 +3539,7 @@ exports.definitions = [
|
|
|
3251
3539
|
meta: { battery: { voltageToPercentage: { min: 2850, max: 3000 } } },
|
|
3252
3540
|
exposes: [e.device_temperature(), e.battery(), e.battery_voltage()],
|
|
3253
3541
|
extend: [
|
|
3542
|
+
lumi.modernExtend.addManuSpecificLumiCluster(),
|
|
3254
3543
|
m.quirkCheckinInterval("1_HOUR"),
|
|
3255
3544
|
m.quirkAddEndpointCluster({
|
|
3256
3545
|
endpointID: 1,
|
|
@@ -3298,9 +3587,11 @@ exports.definitions = [
|
|
|
3298
3587
|
e.flip_indicator_light(),
|
|
3299
3588
|
],
|
|
3300
3589
|
configure: async (device, coordinatorEndpoint) => {
|
|
3301
|
-
await device
|
|
3590
|
+
await device
|
|
3591
|
+
.getEndpoint(1)
|
|
3592
|
+
.write("manuSpecificLumi", { mode: 1 }, { manufacturerCode: manufacturerCode, disableResponse: true });
|
|
3302
3593
|
},
|
|
3303
|
-
extend: [lumiZigbeeOTA(), lumiPreventReset()],
|
|
3594
|
+
extend: [lumi.modernExtend.addManuSpecificLumiCluster(), lumiZigbeeOTA(), lumiPreventReset()],
|
|
3304
3595
|
},
|
|
3305
3596
|
{
|
|
3306
3597
|
zigbeeModel: ["lumi.plug.macn01"],
|
|
@@ -3328,7 +3619,7 @@ exports.definitions = [
|
|
|
3328
3619
|
e.button_lock(),
|
|
3329
3620
|
e.overload_protection(100, 2500),
|
|
3330
3621
|
],
|
|
3331
|
-
extend: [lumiZigbeeOTA()],
|
|
3622
|
+
extend: [lumi.modernExtend.addManuSpecificLumiCluster(), lumiZigbeeOTA()],
|
|
3332
3623
|
},
|
|
3333
3624
|
{
|
|
3334
3625
|
zigbeeModel: ["lumi.switch.b1nc01"],
|
|
@@ -3351,9 +3642,11 @@ exports.definitions = [
|
|
|
3351
3642
|
e.enum("operation_mode", ea.ALL, ["control_relay", "decoupled"]).withDescription("Decoupled mode"),
|
|
3352
3643
|
],
|
|
3353
3644
|
configure: async (device, coordinatorEndpoint) => {
|
|
3354
|
-
await device
|
|
3645
|
+
await device
|
|
3646
|
+
.getEndpoint(1)
|
|
3647
|
+
.write("manuSpecificLumi", { mode: 1 }, { manufacturerCode: manufacturerCode, disableResponse: true });
|
|
3355
3648
|
},
|
|
3356
|
-
extend: [lumiZigbeeOTA(), lumiPreventReset()],
|
|
3649
|
+
extend: [lumi.modernExtend.addManuSpecificLumiCluster(), lumiZigbeeOTA(), lumiPreventReset()],
|
|
3357
3650
|
},
|
|
3358
3651
|
{
|
|
3359
3652
|
zigbeeModel: ["lumi.remote.b1acn02"],
|
|
@@ -3372,7 +3665,7 @@ exports.definitions = [
|
|
|
3372
3665
|
const endpoint1 = device.getEndpoint(1);
|
|
3373
3666
|
await endpoint1.write("manuSpecificLumi", { mode: 1 }, { manufacturerCode: manufacturerCode, disableResponse: true });
|
|
3374
3667
|
},
|
|
3375
|
-
extend: [m.quirkCheckinInterval("1_HOUR"), lumiZigbeeOTA()],
|
|
3668
|
+
extend: [lumi.modernExtend.addManuSpecificLumiCluster(), m.quirkCheckinInterval("1_HOUR"), lumiZigbeeOTA()],
|
|
3376
3669
|
},
|
|
3377
3670
|
{
|
|
3378
3671
|
zigbeeModel: ["lumi.sen_ill.agl01"],
|
|
@@ -3394,10 +3687,17 @@ exports.definitions = [
|
|
|
3394
3687
|
],
|
|
3395
3688
|
configure: async (device, coordinatorEndpoint) => {
|
|
3396
3689
|
const endpoint = device.getEndpoint(1);
|
|
3397
|
-
await device
|
|
3690
|
+
await device
|
|
3691
|
+
.getEndpoint(1)
|
|
3692
|
+
.write("manuSpecificLumi", { mode: 1 }, { manufacturerCode: manufacturerCode, disableResponse: true });
|
|
3398
3693
|
await endpoint.read("manuSpecificLumi", [0x0000], { manufacturerCode: manufacturerCode });
|
|
3399
3694
|
},
|
|
3400
|
-
extend: [
|
|
3695
|
+
extend: [
|
|
3696
|
+
lumi.modernExtend.addManuSpecificLumiCluster(),
|
|
3697
|
+
m.quirkCheckinInterval("1_HOUR"),
|
|
3698
|
+
lumiZigbeeOTA(),
|
|
3699
|
+
m.illuminance({ reporting: false }),
|
|
3700
|
+
],
|
|
3401
3701
|
},
|
|
3402
3702
|
{
|
|
3403
3703
|
zigbeeModel: ["lumi.plug.sacn03"],
|
|
@@ -3433,7 +3733,7 @@ exports.definitions = [
|
|
|
3433
3733
|
.withDescription("Control both relay and usb or only the relay with the physical switch button"),
|
|
3434
3734
|
e.overload_protection(100, 2500),
|
|
3435
3735
|
],
|
|
3436
|
-
extend: [lumiZigbeeOTA()],
|
|
3736
|
+
extend: [lumi.modernExtend.addManuSpecificLumiCluster(), lumiZigbeeOTA()],
|
|
3437
3737
|
},
|
|
3438
3738
|
{
|
|
3439
3739
|
zigbeeModel: ["lumi.magnet.agl02"],
|
|
@@ -3448,7 +3748,7 @@ exports.definitions = [
|
|
|
3448
3748
|
toZigbee: [],
|
|
3449
3749
|
exposes: [e.contact(), e.battery(), e.battery_voltage()],
|
|
3450
3750
|
meta: { battery: { voltageToPercentage: { min: 2850, max: 3000 } } },
|
|
3451
|
-
extend: [m.quirkCheckinInterval("1_HOUR")],
|
|
3751
|
+
extend: [lumi.modernExtend.addManuSpecificLumiCluster(), m.quirkCheckinInterval("1_HOUR")],
|
|
3452
3752
|
},
|
|
3453
3753
|
{
|
|
3454
3754
|
zigbeeModel: ["lumi.plug.sacn02"],
|
|
@@ -3475,7 +3775,7 @@ exports.definitions = [
|
|
|
3475
3775
|
e.button_lock(),
|
|
3476
3776
|
e.overload_protection(100, 2500),
|
|
3477
3777
|
],
|
|
3478
|
-
extend: [lumiZigbeeOTA()],
|
|
3778
|
+
extend: [lumi.modernExtend.addManuSpecificLumiCluster(), lumiZigbeeOTA()],
|
|
3479
3779
|
},
|
|
3480
3780
|
{
|
|
3481
3781
|
zigbeeModel: ["lumi.remote.rkba01"],
|
|
@@ -3483,6 +3783,7 @@ exports.definitions = [
|
|
|
3483
3783
|
vendor: "Aqara",
|
|
3484
3784
|
description: "Smart rotary knob H1 (wireless)",
|
|
3485
3785
|
extend: [
|
|
3786
|
+
lumi.modernExtend.addManuSpecificLumiCluster(),
|
|
3486
3787
|
m.quirkCheckinInterval("1_HOUR"),
|
|
3487
3788
|
lumiPreventReset(),
|
|
3488
3789
|
lumiCommandMode(),
|
|
@@ -3505,7 +3806,7 @@ exports.definitions = [
|
|
|
3505
3806
|
vendor: "Aqara",
|
|
3506
3807
|
description: "Wireless remote switch E1 (single rocker)",
|
|
3507
3808
|
meta: { battery: { voltageToPercentage: { min: 2850, max: 3000 } } },
|
|
3508
|
-
extend: [m.quirkCheckinInterval("1_HOUR")],
|
|
3809
|
+
extend: [lumi.modernExtend.addManuSpecificLumiCluster(), m.quirkCheckinInterval("1_HOUR")],
|
|
3509
3810
|
fromZigbee: [lumi.fromZigbee.lumi_action_multistate, lumi.fromZigbee.lumi_specific],
|
|
3510
3811
|
toZigbee: [lumi.toZigbee.lumi_switch_click_mode],
|
|
3511
3812
|
exposes: [
|
|
@@ -3518,7 +3819,9 @@ exports.definitions = [
|
|
|
3518
3819
|
"multi: supports more events like double and hold"),
|
|
3519
3820
|
],
|
|
3520
3821
|
configure: async (device, coordinatorEndpoint) => {
|
|
3521
|
-
await device
|
|
3822
|
+
await device
|
|
3823
|
+
.getEndpoint(1)
|
|
3824
|
+
.write("manuSpecificLumi", { 293: { value: 0x02, type: 0x20 } }, { manufacturerCode: manufacturerCode });
|
|
3522
3825
|
},
|
|
3523
3826
|
},
|
|
3524
3827
|
{
|
|
@@ -3527,7 +3830,7 @@ exports.definitions = [
|
|
|
3527
3830
|
vendor: "Aqara",
|
|
3528
3831
|
description: "Wireless remote switch E1 (double rocker)",
|
|
3529
3832
|
meta: { battery: { voltageToPercentage: { min: 2850, max: 3000 } } },
|
|
3530
|
-
extend: [m.quirkCheckinInterval("1_HOUR"), lumiPreventReset()],
|
|
3833
|
+
extend: [lumi.modernExtend.addManuSpecificLumiCluster(), m.quirkCheckinInterval("1_HOUR"), lumiPreventReset()],
|
|
3531
3834
|
exposes: [
|
|
3532
3835
|
e.battery(),
|
|
3533
3836
|
e.battery_voltage(),
|
|
@@ -3564,7 +3867,7 @@ exports.definitions = [
|
|
|
3564
3867
|
.withDescription('Operation mode, select "command" to enable bindings (wake up the device before changing modes!)'),
|
|
3565
3868
|
],
|
|
3566
3869
|
meta: { battery: { voltageToPercentage: { min: 2850, max: 3000 } } },
|
|
3567
|
-
extend: [m.quirkCheckinInterval("1_HOUR")],
|
|
3870
|
+
extend: [lumi.modernExtend.addManuSpecificLumiCluster(), m.quirkCheckinInterval("1_HOUR")],
|
|
3568
3871
|
configure: async (device, coordinatorEndpoint) => {
|
|
3569
3872
|
const endpoint1 = device.getEndpoint(1);
|
|
3570
3873
|
await endpoint1.write("manuSpecificLumi", { mode: 1 }, { manufacturerCode: manufacturerCode, disableResponse: true });
|
|
@@ -3616,7 +3919,7 @@ exports.definitions = [
|
|
|
3616
3919
|
await endpoint.read("manuSpecificLumi", [0x040a], { manufacturerCode: manufacturerCode });
|
|
3617
3920
|
await endpoint.read("genPowerCfg", ["batteryVoltage"]);
|
|
3618
3921
|
},
|
|
3619
|
-
extend: [m.quirkCheckinInterval("1_HOUR"), lumiZigbeeOTA()],
|
|
3922
|
+
extend: [lumi.modernExtend.addManuSpecificLumiCluster(), m.quirkCheckinInterval("1_HOUR"), lumiZigbeeOTA()],
|
|
3620
3923
|
},
|
|
3621
3924
|
{
|
|
3622
3925
|
zigbeeModel: ["aqara.feeder.acn001"],
|
|
@@ -3676,7 +3979,7 @@ exports.definitions = [
|
|
|
3676
3979
|
.withUnit("g")
|
|
3677
3980
|
.withCategory("config"),
|
|
3678
3981
|
],
|
|
3679
|
-
extend: [lumiZigbeeOTA(), m.forcePowerSource({ powerSource: "Mains (single phase)" })],
|
|
3982
|
+
extend: [lumi.modernExtend.addManuSpecificLumiCluster(), lumiZigbeeOTA(), m.forcePowerSource({ powerSource: "Mains (single phase)" })],
|
|
3680
3983
|
configure: async (device, coordinatorEndpoint) => {
|
|
3681
3984
|
const endpoint = device.getEndpoint(1);
|
|
3682
3985
|
await endpoint.read("manuSpecificLumi", [0xfff1], { manufacturerCode: manufacturerCode });
|
|
@@ -3690,7 +3993,7 @@ exports.definitions = [
|
|
|
3690
3993
|
fromZigbee: [fz.battery, lumi.fromZigbee.lumi_action_multistate, lumi.fromZigbee.lumi_specific],
|
|
3691
3994
|
toZigbee: [],
|
|
3692
3995
|
meta: { battery: { voltageToPercentage: { min: 2850, max: 3000 } } },
|
|
3693
|
-
extend: [m.quirkCheckinInterval("1_HOUR")],
|
|
3996
|
+
extend: [lumi.modernExtend.addManuSpecificLumiCluster(), m.quirkCheckinInterval("1_HOUR")],
|
|
3694
3997
|
exposes: [
|
|
3695
3998
|
e.battery(),
|
|
3696
3999
|
e.battery_voltage(),
|
|
@@ -3707,7 +4010,7 @@ exports.definitions = [
|
|
|
3707
4010
|
fromZigbee: [fz.battery, lumi.fromZigbee.lumi_action_multistate, lumi.fromZigbee.lumi_specific],
|
|
3708
4011
|
toZigbee: [lumi.toZigbee.lumi_switch_click_mode],
|
|
3709
4012
|
meta: { battery: { voltageToPercentage: { min: 2850, max: 3000 } } },
|
|
3710
|
-
extend: [m.quirkCheckinInterval("1_HOUR")],
|
|
4013
|
+
extend: [lumi.modernExtend.addManuSpecificLumiCluster(), m.quirkCheckinInterval("1_HOUR")],
|
|
3711
4014
|
exposes: [
|
|
3712
4015
|
e.battery(),
|
|
3713
4016
|
e.battery_voltage(),
|
|
@@ -3735,7 +4038,7 @@ exports.definitions = [
|
|
|
3735
4038
|
fromZigbee: [fz.battery, lumi.fromZigbee.lumi_action_multistate, lumi.fromZigbee.lumi_specific, fz.command_toggle],
|
|
3736
4039
|
toZigbee: [lumi.toZigbee.lumi_switch_click_mode, lumi.toZigbee.lumi_operation_mode_opple],
|
|
3737
4040
|
meta: { battery: { voltageToPercentage: { min: 2850, max: 3000 } }, multiEndpoint: true },
|
|
3738
|
-
extend: [m.quirkCheckinInterval("1_HOUR")],
|
|
4041
|
+
extend: [lumi.modernExtend.addManuSpecificLumiCluster(), m.quirkCheckinInterval("1_HOUR")],
|
|
3739
4042
|
exposes: [
|
|
3740
4043
|
e.battery(),
|
|
3741
4044
|
e.battery_voltage(),
|
|
@@ -3808,7 +4111,7 @@ exports.definitions = [
|
|
|
3808
4111
|
"button_3_triple",
|
|
3809
4112
|
]),
|
|
3810
4113
|
],
|
|
3811
|
-
extend: [m.quirkCheckinInterval("1_HOUR"), lumiZigbeeOTA()],
|
|
4114
|
+
extend: [lumi.modernExtend.addManuSpecificLumiCluster(), m.quirkCheckinInterval("1_HOUR"), lumiZigbeeOTA()],
|
|
3812
4115
|
},
|
|
3813
4116
|
{
|
|
3814
4117
|
zigbeeModel: ["lumi.switch.acn048"],
|
|
@@ -3816,6 +4119,7 @@ exports.definitions = [
|
|
|
3816
4119
|
vendor: "Aqara",
|
|
3817
4120
|
description: "Smart wall switch Z1 (single rocker)",
|
|
3818
4121
|
extend: [
|
|
4122
|
+
lumi.modernExtend.addManuSpecificLumiCluster(),
|
|
3819
4123
|
lumiZigbeeOTA(),
|
|
3820
4124
|
lumiPreventReset(),
|
|
3821
4125
|
lumiOnOff({ operationMode: true, powerOutageMemory: "enum", lockRelay: true }),
|
|
@@ -3833,6 +4137,7 @@ exports.definitions = [
|
|
|
3833
4137
|
vendor: "Aqara",
|
|
3834
4138
|
description: "Smart wall switch Z1 (double rocker)",
|
|
3835
4139
|
extend: [
|
|
4140
|
+
lumi.modernExtend.addManuSpecificLumiCluster(),
|
|
3836
4141
|
lumiZigbeeOTA(),
|
|
3837
4142
|
lumiPreventReset(),
|
|
3838
4143
|
m.deviceEndpoints({ endpoints: { top: 1, bottom: 2 } }),
|
|
@@ -3859,6 +4164,7 @@ exports.definitions = [
|
|
|
3859
4164
|
vendor: "Aqara",
|
|
3860
4165
|
description: "Smart wall switch Z1 (triple rocker)",
|
|
3861
4166
|
extend: [
|
|
4167
|
+
lumi.modernExtend.addManuSpecificLumiCluster(),
|
|
3862
4168
|
lumiZigbeeOTA(),
|
|
3863
4169
|
lumiPreventReset(),
|
|
3864
4170
|
m.deviceEndpoints({ endpoints: { top: 1, center: 2, bottom: 3 } }),
|
|
@@ -3885,6 +4191,7 @@ exports.definitions = [
|
|
|
3885
4191
|
vendor: "Aqara",
|
|
3886
4192
|
description: "Smart wall switch Z1 (quadruple rocker)",
|
|
3887
4193
|
extend: [
|
|
4194
|
+
lumi.modernExtend.addManuSpecificLumiCluster(),
|
|
3888
4195
|
lumiZigbeeOTA(),
|
|
3889
4196
|
lumiPreventReset(),
|
|
3890
4197
|
m.deviceEndpoints({ endpoints: { top: 1, center: 2, bottom: 3, wireless: 4 } }),
|
|
@@ -3911,6 +4218,7 @@ exports.definitions = [
|
|
|
3911
4218
|
vendor: "Aqara",
|
|
3912
4219
|
description: "Smart wall switch Z1 Pro (single rocker)",
|
|
3913
4220
|
extend: [
|
|
4221
|
+
lumi.modernExtend.addManuSpecificLumiCluster(),
|
|
3914
4222
|
lumiZigbeeOTA(),
|
|
3915
4223
|
lumiPreventReset(),
|
|
3916
4224
|
lumiOnOff({ operationMode: true, powerOutageMemory: "enum", lockRelay: true }),
|
|
@@ -3929,6 +4237,7 @@ exports.definitions = [
|
|
|
3929
4237
|
vendor: "Aqara",
|
|
3930
4238
|
description: "Smart wall switch Z1 Pro (double rocker)",
|
|
3931
4239
|
extend: [
|
|
4240
|
+
lumi.modernExtend.addManuSpecificLumiCluster(),
|
|
3932
4241
|
lumiZigbeeOTA(),
|
|
3933
4242
|
lumiPreventReset(),
|
|
3934
4243
|
m.deviceEndpoints({ endpoints: { top: 1, bottom: 2 } }),
|
|
@@ -3957,6 +4266,7 @@ exports.definitions = [
|
|
|
3957
4266
|
vendor: "Aqara",
|
|
3958
4267
|
description: "Smart wall switch Z1 Pro (triple rocker)",
|
|
3959
4268
|
extend: [
|
|
4269
|
+
lumi.modernExtend.addManuSpecificLumiCluster(),
|
|
3960
4270
|
lumiZigbeeOTA(),
|
|
3961
4271
|
lumiPreventReset(),
|
|
3962
4272
|
m.deviceEndpoints({ endpoints: { top: 1, center: 2, bottom: 3 } }),
|
|
@@ -3985,6 +4295,7 @@ exports.definitions = [
|
|
|
3985
4295
|
vendor: "Aqara",
|
|
3986
4296
|
description: "Smart wall switch Z1 Pro (quadruple rocker)",
|
|
3987
4297
|
extend: [
|
|
4298
|
+
lumi.modernExtend.addManuSpecificLumiCluster(),
|
|
3988
4299
|
lumiZigbeeOTA(),
|
|
3989
4300
|
lumiPreventReset(),
|
|
3990
4301
|
m.deviceEndpoints({ endpoints: { top: 1, center: 2, bottom: 3, wireless: 4 } }),
|
|
@@ -4013,6 +4324,7 @@ exports.definitions = [
|
|
|
4013
4324
|
vendor: "Aqara",
|
|
4014
4325
|
description: "Smart wall switch H1 20A (with neutral, single rocker)",
|
|
4015
4326
|
extend: [
|
|
4327
|
+
lumi.modernExtend.addManuSpecificLumiCluster(),
|
|
4016
4328
|
lumiZigbeeOTA(),
|
|
4017
4329
|
lumiPreventReset(),
|
|
4018
4330
|
lumiOnOff({ operationMode: true, powerOutageMemory: "binary" }),
|
|
@@ -4031,7 +4343,7 @@ exports.definitions = [
|
|
|
4031
4343
|
whiteLabel: [{ vendor: "Aqara", model: "MFCZQ12LM" }],
|
|
4032
4344
|
description: "Cube T1 Pro",
|
|
4033
4345
|
meta: { battery: { voltageToPercentage: { min: 2850, max: 3000 } } },
|
|
4034
|
-
extend: [m.quirkCheckinInterval("1_HOUR"), lumiZigbeeOTA()],
|
|
4346
|
+
extend: [lumi.modernExtend.addManuSpecificLumiCluster(), m.quirkCheckinInterval("1_HOUR"), lumiZigbeeOTA()],
|
|
4035
4347
|
fromZigbee: [
|
|
4036
4348
|
lumi.fromZigbee.lumi_specific,
|
|
4037
4349
|
lumi.fromZigbee.lumi_action_multistate,
|
|
@@ -4131,9 +4443,11 @@ exports.definitions = [
|
|
|
4131
4443
|
e.flip_indicator_light(),
|
|
4132
4444
|
],
|
|
4133
4445
|
configure: async (device, coordinatorEndpoint) => {
|
|
4134
|
-
await device
|
|
4446
|
+
await device
|
|
4447
|
+
.getEndpoint(1)
|
|
4448
|
+
.write("manuSpecificLumi", { mode: 1 }, { manufacturerCode: manufacturerCode, disableResponse: true });
|
|
4135
4449
|
},
|
|
4136
|
-
extend: [lumiZigbeeOTA(), lumiPreventReset()],
|
|
4450
|
+
extend: [lumi.modernExtend.addManuSpecificLumiCluster(), lumiZigbeeOTA(), lumiPreventReset()],
|
|
4137
4451
|
},
|
|
4138
4452
|
{
|
|
4139
4453
|
zigbeeModel: ["lumi.switch.acn029"],
|
|
@@ -4160,7 +4474,7 @@ exports.definitions = [
|
|
|
4160
4474
|
e.led_disabled_night(),
|
|
4161
4475
|
e.flip_indicator_light(),
|
|
4162
4476
|
],
|
|
4163
|
-
extend: [lumiZigbeeOTA(), lumiPreventReset()],
|
|
4477
|
+
extend: [lumi.modernExtend.addManuSpecificLumiCluster(), lumiZigbeeOTA(), lumiPreventReset()],
|
|
4164
4478
|
},
|
|
4165
4479
|
{
|
|
4166
4480
|
zigbeeModel: ["lumi.switch.acn030"],
|
|
@@ -4203,9 +4517,11 @@ exports.definitions = [
|
|
|
4203
4517
|
e.flip_indicator_light(),
|
|
4204
4518
|
],
|
|
4205
4519
|
configure: async (device, coordinatorEndpoint) => {
|
|
4206
|
-
await device
|
|
4520
|
+
await device
|
|
4521
|
+
.getEndpoint(1)
|
|
4522
|
+
.write("manuSpecificLumi", { mode: 1 }, { manufacturerCode: manufacturerCode, disableResponse: true });
|
|
4207
4523
|
},
|
|
4208
|
-
extend: [lumiZigbeeOTA(), lumiPreventReset()],
|
|
4524
|
+
extend: [lumi.modernExtend.addManuSpecificLumiCluster(), lumiZigbeeOTA(), lumiPreventReset()],
|
|
4209
4525
|
},
|
|
4210
4526
|
{
|
|
4211
4527
|
zigbeeModel: ["lumi.switch.acn031"],
|
|
@@ -4259,9 +4575,11 @@ exports.definitions = [
|
|
|
4259
4575
|
e.flip_indicator_light(),
|
|
4260
4576
|
],
|
|
4261
4577
|
configure: async (device, coordinatorEndpoint) => {
|
|
4262
|
-
await device
|
|
4578
|
+
await device
|
|
4579
|
+
.getEndpoint(1)
|
|
4580
|
+
.write("manuSpecificLumi", { mode: 1 }, { manufacturerCode: manufacturerCode, disableResponse: true });
|
|
4263
4581
|
},
|
|
4264
|
-
extend: [lumiZigbeeOTA(), lumiPreventReset()],
|
|
4582
|
+
extend: [lumi.modernExtend.addManuSpecificLumiCluster(), lumiZigbeeOTA(), lumiPreventReset()],
|
|
4265
4583
|
},
|
|
4266
4584
|
{
|
|
4267
4585
|
zigbeeModel: ["lumi.plug.aeu001"],
|
|
@@ -4269,6 +4587,7 @@ exports.definitions = [
|
|
|
4269
4587
|
vendor: "Aqara",
|
|
4270
4588
|
description: "Smart wall outlet H2 EU",
|
|
4271
4589
|
extend: [
|
|
4590
|
+
lumi.modernExtend.addManuSpecificLumiCluster(),
|
|
4272
4591
|
lumiZigbeeOTA(),
|
|
4273
4592
|
lumiOnOff({ powerOutageMemory: "enum" }),
|
|
4274
4593
|
lumiPower(),
|
|
@@ -4325,6 +4644,7 @@ exports.definitions = [
|
|
|
4325
4644
|
await endpoint.read("genLevelCtrl", [0x0013], {});
|
|
4326
4645
|
},
|
|
4327
4646
|
extend: [
|
|
4647
|
+
lumi.modernExtend.addManuSpecificLumiCluster(),
|
|
4328
4648
|
m.deviceEndpoints({ endpoints: { white: 1, rgb: 2 } }),
|
|
4329
4649
|
lumiLight({ colorTemp: true, endpointNames: ["white"] }),
|
|
4330
4650
|
lumiLight({
|
|
@@ -4354,6 +4674,7 @@ exports.definitions = [
|
|
|
4354
4674
|
vendor: "Aqara",
|
|
4355
4675
|
description: "Smart rotary knob H1 (with neutral)",
|
|
4356
4676
|
extend: [
|
|
4677
|
+
lumi.modernExtend.addManuSpecificLumiCluster(),
|
|
4357
4678
|
lumiPreventReset(),
|
|
4358
4679
|
m.deviceEndpoints({ endpoints: { left: 1, center: 2, right: 3 } }),
|
|
4359
4680
|
lumiOnOff({ powerOutageMemory: "binary", endpointNames: ["left", "center", "right"] }),
|
|
@@ -4378,6 +4699,7 @@ exports.definitions = [
|
|
|
4378
4699
|
vendor: "Aqara",
|
|
4379
4700
|
description: "Light switch H2 EU (single rocker)",
|
|
4380
4701
|
extend: [
|
|
4702
|
+
lumi.modernExtend.addManuSpecificLumiCluster(),
|
|
4381
4703
|
lumiZigbeeOTA(),
|
|
4382
4704
|
lumiPreventLeave(),
|
|
4383
4705
|
m.deviceEndpoints({ endpoints: { up: 1, down: 4 } }),
|
|
@@ -4427,6 +4749,7 @@ exports.definitions = [
|
|
|
4427
4749
|
await endpoint.read("genLevelCtrl", [0x0013], {});
|
|
4428
4750
|
},
|
|
4429
4751
|
extend: [
|
|
4752
|
+
lumi.modernExtend.addManuSpecificLumiCluster(),
|
|
4430
4753
|
lumiLight({ colorTemp: true, color: true, colorTempRange: [111, 500] }),
|
|
4431
4754
|
lumiPowerOnBehavior({ lookup: { off: 0, on: 1, reverse: 2, restore: 3 } }),
|
|
4432
4755
|
m.identify(),
|
|
@@ -4472,6 +4795,7 @@ exports.definitions = [
|
|
|
4472
4795
|
await endpoint.read("genLevelCtrl", [0x0013], {});
|
|
4473
4796
|
},
|
|
4474
4797
|
extend: [
|
|
4798
|
+
lumi.modernExtend.addManuSpecificLumiCluster(),
|
|
4475
4799
|
lumiLight({ colorTemp: true, colorTempRange: [153, 370] }),
|
|
4476
4800
|
lumiPowerOnBehavior({ lookup: { off: 0, on: 1, reverse: 2, restore: 3 } }),
|
|
4477
4801
|
m.identify(),
|
|
@@ -4492,6 +4816,7 @@ exports.definitions = [
|
|
|
4492
4816
|
vendor: "Aqara",
|
|
4493
4817
|
description: "Light switch H2 EU (double rocker)",
|
|
4494
4818
|
extend: [
|
|
4819
|
+
lumi.modernExtend.addManuSpecificLumiCluster(),
|
|
4495
4820
|
lumiZigbeeOTA(),
|
|
4496
4821
|
lumiPreventLeave(),
|
|
4497
4822
|
m.deviceEndpoints({ endpoints: { left: 1, right: 2, left_down: 4, right_down: 5 } }),
|
|
@@ -4512,6 +4837,36 @@ exports.definitions = [
|
|
|
4512
4837
|
lumiMultiClick({ description: "Multi-click mode for right down button", endpointName: "right_down" }),
|
|
4513
4838
|
],
|
|
4514
4839
|
},
|
|
4840
|
+
{
|
|
4841
|
+
zigbeeModel: ["lumi.switch.aeu003"],
|
|
4842
|
+
model: "DS-K02D/DS-K02E",
|
|
4843
|
+
vendor: "Aqara",
|
|
4844
|
+
description: "Aqara Shutter Switch H2 EU",
|
|
4845
|
+
meta: {
|
|
4846
|
+
overrideHaDiscoveryPayload: (payload) => {
|
|
4847
|
+
if (payload.position_topic && payload.set_position_topic) {
|
|
4848
|
+
payload.device_class = "shutter";
|
|
4849
|
+
}
|
|
4850
|
+
},
|
|
4851
|
+
},
|
|
4852
|
+
configure: configureAqaraH2EuShutterSwitch,
|
|
4853
|
+
extend: [
|
|
4854
|
+
lumi.modernExtend.addManuSpecificLumiCluster(),
|
|
4855
|
+
lumiZigbeeOTA(),
|
|
4856
|
+
m.deviceEndpoints({
|
|
4857
|
+
endpoints: aqaraH2EuShutterSwitchEndpoints,
|
|
4858
|
+
multiEndpointSkip: aqaraH2EuShutterSwitchMultiEndpointSkip,
|
|
4859
|
+
}),
|
|
4860
|
+
m.electricityMeter({ cluster: "metering", power: false, energy: { divisor: 1000 } }),
|
|
4861
|
+
m.windowCovering({ controls: ["lift"], coverInverted: true, configureReporting: true }),
|
|
4862
|
+
lumiAction({
|
|
4863
|
+
actionLookup: aqaraH2EuShutterSwitchActionLookup,
|
|
4864
|
+
endpointNames: aqaraH2EuShutterSwitchEndpointNames,
|
|
4865
|
+
}),
|
|
4866
|
+
lumiMultiClick({ description: "Multi-click mode for top wireless button", endpointName: "top_wireless_button" }),
|
|
4867
|
+
lumiMultiClick({ description: "Multi-click mode for bottom wireless button", endpointName: "bottom_wireless_button" }),
|
|
4868
|
+
],
|
|
4869
|
+
},
|
|
4515
4870
|
{
|
|
4516
4871
|
zigbeeModel: ["lumi.switch.agl011"],
|
|
4517
4872
|
model: "KD-R01D",
|
|
@@ -4519,6 +4874,7 @@ exports.definitions = [
|
|
|
4519
4874
|
description: "Dimmer switch H2 EU",
|
|
4520
4875
|
exposes: [e.device_temperature()],
|
|
4521
4876
|
extend: [
|
|
4877
|
+
lumi.modernExtend.addManuSpecificLumiCluster(),
|
|
4522
4878
|
lumiZigbeeOTA(),
|
|
4523
4879
|
lumiPreventLeave(),
|
|
4524
4880
|
m.bindCluster({ cluster: "genOnOff", clusterType: "input" }),
|
|
@@ -4571,6 +4927,105 @@ exports.definitions = [
|
|
|
4571
4927
|
}),
|
|
4572
4928
|
],
|
|
4573
4929
|
},
|
|
4930
|
+
{
|
|
4931
|
+
zigbeeModel: ["lumi.switch.agl007"],
|
|
4932
|
+
model: "WS-K05E",
|
|
4933
|
+
vendor: "Aqara",
|
|
4934
|
+
description: "Dimmer Switch H2 US",
|
|
4935
|
+
extend: [
|
|
4936
|
+
lumi.modernExtend.addManuSpecificLumiCluster(),
|
|
4937
|
+
lumiLight({
|
|
4938
|
+
effect: false,
|
|
4939
|
+
powerOnBehavior: false,
|
|
4940
|
+
powerOutageCount: true,
|
|
4941
|
+
deviceTemperature: true,
|
|
4942
|
+
configureReporting: true,
|
|
4943
|
+
levelConfig: {
|
|
4944
|
+
features: ["execute_if_off", "on_transition_time", "off_transition_time", "on_level"],
|
|
4945
|
+
},
|
|
4946
|
+
}),
|
|
4947
|
+
m.deviceEndpoints({
|
|
4948
|
+
endpoints: { power: 1, bright: 2, dim: 3, 21: 21, 71: 71, 72: 72 },
|
|
4949
|
+
}),
|
|
4950
|
+
lumiZigbeeOTA(),
|
|
4951
|
+
lumiPreventLeave(),
|
|
4952
|
+
lumiPreventReset(),
|
|
4953
|
+
m.bindCluster({ cluster: "genOnOff", clusterType: "input" }),
|
|
4954
|
+
m.bindCluster({ cluster: "genLevelCtrl", clusterType: "input" }),
|
|
4955
|
+
m.bindCluster({ cluster: "manuSpecificLumi", clusterType: "input" }),
|
|
4956
|
+
lumiPower(),
|
|
4957
|
+
lumiElectricityMeter(),
|
|
4958
|
+
lumiLedIndicator(),
|
|
4959
|
+
lumiFlipIndicatorLight(),
|
|
4960
|
+
lumiSwitchMode(),
|
|
4961
|
+
lumiSetEventMode(),
|
|
4962
|
+
lumiOperationMode({
|
|
4963
|
+
description: "Decoupled mode for the load relay (decoupling power disables bright/dim buttons)",
|
|
4964
|
+
endpointName: "power",
|
|
4965
|
+
}),
|
|
4966
|
+
lumiOperationMode({
|
|
4967
|
+
description: "Decoupled mode for the brightness up button (disabled when power is decoupled)",
|
|
4968
|
+
endpointName: "bright",
|
|
4969
|
+
}),
|
|
4970
|
+
lumiOperationMode({
|
|
4971
|
+
description: "Decoupled mode for the brightness down button (disabled when power is decoupled)",
|
|
4972
|
+
endpointName: "dim",
|
|
4973
|
+
}),
|
|
4974
|
+
lumiPowerOnBehavior(),
|
|
4975
|
+
lumiAction({
|
|
4976
|
+
actionLookup: { hold: 0, single: 1, double: 2, release: 255 },
|
|
4977
|
+
endpointNames: ["power", "bright", "dim"],
|
|
4978
|
+
}),
|
|
4979
|
+
lumiMultiClick({
|
|
4980
|
+
description: "Multi-click mode for power button",
|
|
4981
|
+
endpointName: "power",
|
|
4982
|
+
}),
|
|
4983
|
+
lumiMultiClick({
|
|
4984
|
+
description: "Multi-click mode for brightness up button",
|
|
4985
|
+
endpointName: "bright",
|
|
4986
|
+
}),
|
|
4987
|
+
lumiMultiClick({
|
|
4988
|
+
description: "Multi-click mode for brightness down button",
|
|
4989
|
+
endpointName: "dim",
|
|
4990
|
+
}),
|
|
4991
|
+
m.enumLookup({
|
|
4992
|
+
name: "phase",
|
|
4993
|
+
lookup: { forward: 0, reverse: 1 },
|
|
4994
|
+
cluster: "manuSpecificLumi",
|
|
4995
|
+
attribute: { ID: 0x030a, type: 0x20 },
|
|
4996
|
+
description: "Dimming phase",
|
|
4997
|
+
zigbeeCommandOptions: { manufacturerCode },
|
|
4998
|
+
}),
|
|
4999
|
+
m.numeric({
|
|
5000
|
+
name: "min_brightness",
|
|
5001
|
+
valueMin: 0,
|
|
5002
|
+
valueMax: 99,
|
|
5003
|
+
unit: "%",
|
|
5004
|
+
access: "STATE_SET",
|
|
5005
|
+
cluster: "manuSpecificLumi",
|
|
5006
|
+
attribute: { ID: 0x0515, type: 0x20 },
|
|
5007
|
+
description: "Minimum brightness level",
|
|
5008
|
+
entityCategory: "config",
|
|
5009
|
+
zigbeeCommandOptions: { manufacturerCode },
|
|
5010
|
+
}),
|
|
5011
|
+
m.numeric({
|
|
5012
|
+
name: "max_brightness",
|
|
5013
|
+
valueMin: 1,
|
|
5014
|
+
valueMax: 100,
|
|
5015
|
+
unit: "%",
|
|
5016
|
+
access: "STATE_SET",
|
|
5017
|
+
cluster: "manuSpecificLumi",
|
|
5018
|
+
attribute: { ID: 0x0516, type: 0x20 },
|
|
5019
|
+
description: "Maximum brightness level",
|
|
5020
|
+
entityCategory: "config",
|
|
5021
|
+
zigbeeCommandOptions: { manufacturerCode },
|
|
5022
|
+
}),
|
|
5023
|
+
],
|
|
5024
|
+
meta: {
|
|
5025
|
+
multiEndpoint: true,
|
|
5026
|
+
multiEndpointSkip: ["state", "brightness", "level_config"],
|
|
5027
|
+
},
|
|
5028
|
+
},
|
|
4574
5029
|
{
|
|
4575
5030
|
zigbeeModel: ["lumi.switch.agl006"],
|
|
4576
5031
|
model: "WS-K04E",
|
|
@@ -4578,6 +5033,7 @@ exports.definitions = [
|
|
|
4578
5033
|
description: "Light Switch H2 US (quadruple rocker)",
|
|
4579
5034
|
fromZigbee: [fz.on_off, lumi.fromZigbee.lumi_action_multistate, lumi.fromZigbee.lumi_specific],
|
|
4580
5035
|
extend: [
|
|
5036
|
+
lumi.modernExtend.addManuSpecificLumiCluster(),
|
|
4581
5037
|
lumiZigbeeOTA(),
|
|
4582
5038
|
lumiPreventReset(),
|
|
4583
5039
|
m.deviceEndpoints({ endpoints: { top: 1, center: 2, bottom: 3, wireless: 4 } }),
|
|
@@ -4607,6 +5063,7 @@ exports.definitions = [
|
|
|
4607
5063
|
description: "Light Switch H2 US (double rocker)",
|
|
4608
5064
|
fromZigbee: [fz.on_off, lumi.fromZigbee.lumi_action_multistate, lumi.fromZigbee.lumi_specific],
|
|
4609
5065
|
extend: [
|
|
5066
|
+
lumi.modernExtend.addManuSpecificLumiCluster(),
|
|
4610
5067
|
lumiZigbeeOTA(),
|
|
4611
5068
|
lumiPreventReset(),
|
|
4612
5069
|
m.deviceEndpoints({ endpoints: { top: 1, wireless: 4 } }),
|
|
@@ -4700,6 +5157,7 @@ exports.definitions = [
|
|
|
4700
5157
|
logger_1.logger.info("Aqara W100: configure completed", NS);
|
|
4701
5158
|
},
|
|
4702
5159
|
extend: [
|
|
5160
|
+
lumi.modernExtend.addManuSpecificLumiCluster(),
|
|
4703
5161
|
lumiZigbeeOTA(),
|
|
4704
5162
|
m.temperature(),
|
|
4705
5163
|
m.humidity(),
|
|
@@ -4875,6 +5333,7 @@ exports.definitions = [
|
|
|
4875
5333
|
description: "Light Switch H2 US (2 Buttons, 2 Channels)",
|
|
4876
5334
|
fromZigbee: [fz.on_off, lumi.fromZigbee.lumi_action_multistate, lumi.fromZigbee.lumi_specific],
|
|
4877
5335
|
extend: [
|
|
5336
|
+
lumi.modernExtend.addManuSpecificLumiCluster(),
|
|
4878
5337
|
lumiZigbeeOTA(),
|
|
4879
5338
|
lumiPreventReset(),
|
|
4880
5339
|
m.deviceEndpoints({ endpoints: { up: 1, down: 2 } }),
|
|
@@ -4908,26 +5367,52 @@ exports.definitions = [
|
|
|
4908
5367
|
model: "WT-A03E",
|
|
4909
5368
|
vendor: "Aqara",
|
|
4910
5369
|
description: "Radiator thermostat W600",
|
|
5370
|
+
meta: {
|
|
5371
|
+
overrideHaDiscoveryPayload: (payload) => {
|
|
5372
|
+
if (payload.mode_command_topic?.endsWith("/system_mode")) {
|
|
5373
|
+
payload.mode_state_template =
|
|
5374
|
+
"{% if value_json is defined and value_json.system_mode is defined and value_json.system_mode in ['off', 'heat', 'auto'] %}" +
|
|
5375
|
+
"{{ value_json.system_mode }}" +
|
|
5376
|
+
"{% else %}off{% endif %}";
|
|
5377
|
+
payload.preset_mode_value_template =
|
|
5378
|
+
"{% if value_json is defined and value_json.preset is defined and value_json.preset in ['home', 'away', 'sleep', 'vacation', 'wind_down'] %}" +
|
|
5379
|
+
"{{ value_json.preset }}" +
|
|
5380
|
+
"{% else %}none{% endif %}";
|
|
5381
|
+
payload.temperature_state_template =
|
|
5382
|
+
"{% if value_json is defined and value_json.occupied_heating_setpoint is defined and value_json.occupied_heating_setpoint is not none %}" +
|
|
5383
|
+
"{{ value_json.occupied_heating_setpoint }}" +
|
|
5384
|
+
"{% else %}None{% endif %}";
|
|
5385
|
+
payload.current_temperature_template =
|
|
5386
|
+
"{% if value_json is defined and value_json.local_temperature is defined and value_json.local_temperature is not none %}" +
|
|
5387
|
+
"{{ value_json.local_temperature }}" +
|
|
5388
|
+
"{% else %}None{% endif %}";
|
|
5389
|
+
}
|
|
5390
|
+
if (typeof payload.value_template === "string" && payload.value_template.includes("value_json.override_active")) {
|
|
5391
|
+
payload.icon = "mdi:cursor-pointer";
|
|
5392
|
+
}
|
|
5393
|
+
if (typeof payload.value_template === "string" && payload.value_template.includes("value_json.schedule_upload_status")) {
|
|
5394
|
+
payload.icon = "mdi:upload-multiple";
|
|
5395
|
+
}
|
|
5396
|
+
if (typeof payload.value_template === "string" && payload.value_template.includes("value_json.calibrated")) {
|
|
5397
|
+
payload.icon = "mdi:tune";
|
|
5398
|
+
}
|
|
5399
|
+
},
|
|
5400
|
+
},
|
|
4911
5401
|
extend: [
|
|
4912
|
-
|
|
4913
|
-
|
|
4914
|
-
|
|
4915
|
-
|
|
4916
|
-
|
|
4917
|
-
temperatureSetpointHold: true,
|
|
4918
|
-
temperatureSetpointHoldDuration: true,
|
|
4919
|
-
setpointsLimit: {
|
|
4920
|
-
maxHeatSetpointLimit: { min: 5, max: 30, step: 0.5 },
|
|
4921
|
-
minHeatSetpointLimit: { min: 5, max: 30, step: 0.5 },
|
|
4922
|
-
},
|
|
4923
|
-
}),
|
|
5402
|
+
lumi.modernExtend.addManuSpecificLumiCluster(),
|
|
5403
|
+
m.customTimeResponse("2000_LOCAL"),
|
|
5404
|
+
w600Heartbeat(),
|
|
5405
|
+
w600Thermostat(),
|
|
5406
|
+
w600ExternalTempSensor(),
|
|
4924
5407
|
m.enumLookup({
|
|
4925
5408
|
name: "calibrate",
|
|
4926
5409
|
lookup: { start: 1 },
|
|
4927
5410
|
cluster: "manuSpecificLumi",
|
|
4928
5411
|
attribute: { ID: 0x0270, type: zigbee_herdsman_1.Zcl.DataType.UINT8 },
|
|
4929
|
-
description: "
|
|
4930
|
-
access: "
|
|
5412
|
+
description: "Start valve calibration",
|
|
5413
|
+
access: "SET",
|
|
5414
|
+
label: "Calibrate",
|
|
5415
|
+
entityCategory: "config",
|
|
4931
5416
|
zigbeeCommandOptions: { manufacturerCode },
|
|
4932
5417
|
}),
|
|
4933
5418
|
m.enumLookup({
|
|
@@ -4935,28 +5420,21 @@ exports.definitions = [
|
|
|
4935
5420
|
lookup: { not_ready: 0, ready: 1, error: 2, in_progress: 3 },
|
|
4936
5421
|
cluster: "manuSpecificLumi",
|
|
4937
5422
|
attribute: { ID: 0x027b, type: zigbee_herdsman_1.Zcl.DataType.UINT8 },
|
|
4938
|
-
description: "
|
|
5423
|
+
description: "Valve calibration state",
|
|
4939
5424
|
access: "STATE_GET",
|
|
5425
|
+
label: "Calibration status",
|
|
4940
5426
|
zigbeeCommandOptions: { manufacturerCode },
|
|
4941
5427
|
}),
|
|
4942
5428
|
m.binary({
|
|
4943
|
-
name: "
|
|
4944
|
-
valueOn: ["ON", 1],
|
|
4945
|
-
valueOff: ["OFF", 0],
|
|
4946
|
-
cluster: "manuSpecificLumi",
|
|
4947
|
-
attribute: { ID: 0x0271, type: 0x20 },
|
|
4948
|
-
description: "Enabling termostat",
|
|
4949
|
-
access: "ALL",
|
|
4950
|
-
zigbeeCommandOptions: { manufacturerCode },
|
|
4951
|
-
}),
|
|
4952
|
-
m.binary({
|
|
4953
|
-
name: "valve_detection",
|
|
5429
|
+
name: "temperature_control_abnormal_notification",
|
|
4954
5430
|
valueOn: ["ON", 1],
|
|
4955
5431
|
valueOff: ["OFF", 0],
|
|
4956
5432
|
cluster: "manuSpecificLumi",
|
|
4957
5433
|
attribute: { ID: 0x0274, type: 0x20 },
|
|
4958
|
-
description: "
|
|
5434
|
+
description: "Enable or disable reporting of abnormal temperature control status. When enabled, the valve alarm is set to true if an abnormality is detected",
|
|
4959
5435
|
access: "ALL",
|
|
5436
|
+
label: "Temperature control abnormal notification",
|
|
5437
|
+
entityCategory: "config",
|
|
4960
5438
|
zigbeeCommandOptions: { manufacturerCode },
|
|
4961
5439
|
}),
|
|
4962
5440
|
m.binary({
|
|
@@ -4965,28 +5443,23 @@ exports.definitions = [
|
|
|
4965
5443
|
valueOff: ["OFF", 0],
|
|
4966
5444
|
cluster: "manuSpecificLumi",
|
|
4967
5445
|
attribute: { ID: 0x0330, type: 0x20 },
|
|
4968
|
-
description: "
|
|
4969
|
-
access: "ALL",
|
|
4970
|
-
zigbeeCommandOptions: { manufacturerCode },
|
|
4971
|
-
}),
|
|
4972
|
-
m.binary({
|
|
4973
|
-
name: "helper",
|
|
4974
|
-
valueOn: ["ON", 1],
|
|
4975
|
-
valueOff: ["OFF", 0],
|
|
4976
|
-
cluster: "manuSpecificLumi",
|
|
4977
|
-
attribute: { ID: 0x027d, type: 0x20 },
|
|
4978
|
-
description: "Schedule helper",
|
|
5446
|
+
description: "Flip the display orientation",
|
|
4979
5447
|
access: "ALL",
|
|
5448
|
+
label: "Display flip",
|
|
5449
|
+
entityCategory: "config",
|
|
4980
5450
|
zigbeeCommandOptions: { manufacturerCode },
|
|
4981
5451
|
}),
|
|
5452
|
+
w600Schedule(),
|
|
4982
5453
|
m.binary({
|
|
4983
5454
|
name: "window_detection",
|
|
4984
5455
|
valueOn: ["ON", 1],
|
|
4985
5456
|
valueOff: ["OFF", 0],
|
|
4986
5457
|
cluster: "manuSpecificLumi",
|
|
4987
5458
|
attribute: { ID: 0x0273, type: 0x20 },
|
|
4988
|
-
description: "
|
|
5459
|
+
description: "Enable or disable open window detection. When enabled, the window_open is set to true if an open window is detected",
|
|
4989
5460
|
access: "ALL",
|
|
5461
|
+
label: "Open window detection",
|
|
5462
|
+
entityCategory: "config",
|
|
4990
5463
|
zigbeeCommandOptions: { manufacturerCode },
|
|
4991
5464
|
}),
|
|
4992
5465
|
m.binary({
|
|
@@ -4995,35 +5468,28 @@ exports.definitions = [
|
|
|
4995
5468
|
valueOff: ["UNLOCK", 0],
|
|
4996
5469
|
cluster: "manuSpecificLumi",
|
|
4997
5470
|
attribute: { ID: 0x0277, type: 0x20 },
|
|
4998
|
-
description: "
|
|
5471
|
+
description: "Lock or unlock the physical controls on the device",
|
|
4999
5472
|
access: "ALL",
|
|
5473
|
+
label: "Child lock",
|
|
5474
|
+
entityCategory: "config",
|
|
5000
5475
|
zigbeeCommandOptions: { manufacturerCode },
|
|
5001
5476
|
}),
|
|
5002
5477
|
m.numeric({
|
|
5003
|
-
name: "
|
|
5004
|
-
valueMin:
|
|
5005
|
-
valueMax:
|
|
5478
|
+
name: "anti_freeze_temperature",
|
|
5479
|
+
valueMin: 5,
|
|
5480
|
+
valueMax: 15,
|
|
5006
5481
|
valueStep: 0.5,
|
|
5007
5482
|
scale: 100,
|
|
5008
5483
|
unit: "°C",
|
|
5009
5484
|
cluster: "manuSpecificLumi",
|
|
5010
5485
|
attribute: { ID: 0x0279, type: zigbee_herdsman_1.Zcl.DataType.UINT32 },
|
|
5011
|
-
description: "
|
|
5012
|
-
|
|
5013
|
-
}),
|
|
5014
|
-
m.numeric({
|
|
5015
|
-
name: "position",
|
|
5016
|
-
valueMin: 0,
|
|
5017
|
-
valueMax: 100,
|
|
5018
|
-
scale: 1,
|
|
5019
|
-
precision: 2,
|
|
5020
|
-
unit: "%",
|
|
5021
|
-
access: "STATE_GET",
|
|
5022
|
-
cluster: "manuSpecificLumi",
|
|
5023
|
-
attribute: { ID: 0x0360, type: zigbee_herdsman_1.Zcl.DataType.SINGLE_PREC },
|
|
5024
|
-
description: "Position of the valve, 100% is fully open",
|
|
5486
|
+
description: "Minimum temperature limit for frost protection. Turns the thermostat on regardless of setpoint if the temperature drops below this.",
|
|
5487
|
+
entityCategory: "config",
|
|
5025
5488
|
zigbeeCommandOptions: { manufacturerCode },
|
|
5026
5489
|
}),
|
|
5490
|
+
w600PresetTemperatureTable(),
|
|
5491
|
+
w600WeeklySchedule(),
|
|
5492
|
+
w600ValvePosition(),
|
|
5027
5493
|
m.identify(),
|
|
5028
5494
|
lumiZigbeeOTA(),
|
|
5029
5495
|
],
|
|
@@ -5034,6 +5500,7 @@ exports.definitions = [
|
|
|
5034
5500
|
vendor: "Aqara",
|
|
5035
5501
|
description: "Floor heating thermostat W500",
|
|
5036
5502
|
extend: [
|
|
5503
|
+
lumi.modernExtend.addManuSpecificLumiCluster(),
|
|
5037
5504
|
m.electricityMeter({ current: false, voltage: false, power: { divisor: 1 }, energy: { divisor: 1000 } }),
|
|
5038
5505
|
m.thermostat({
|
|
5039
5506
|
setpoints: { values: { occupiedHeatingSetpoint: { min: 5, max: 40, step: 0.5 } }, configure: { skip: true } },
|
|
@@ -5140,11 +5607,12 @@ exports.definitions = [
|
|
|
5140
5607
|
await endpoint.read("manuSpecificLumi", [0x019a], { manufacturerCode: manufacturerCode }); // Read detection range
|
|
5141
5608
|
},
|
|
5142
5609
|
extend: [
|
|
5610
|
+
lumi.modernExtend.addManuSpecificLumiCluster(),
|
|
5143
5611
|
lumi.lumiModernExtend.lumiPreventLeave(),
|
|
5144
5612
|
lumi.lumiModernExtend.lumiBattery({
|
|
5145
5613
|
voltageToPercentage: { min: 2850, max: 3000 },
|
|
5146
5614
|
voltageAttribute: 0x0017, // Attribute: 23
|
|
5147
|
-
//
|
|
5615
|
+
//percentageAttribute: 0x0018 // Attribute: 24 // TODO: Should confirm to be sure
|
|
5148
5616
|
}),
|
|
5149
5617
|
lumi.lumiModernExtend.fp1ePresence(),
|
|
5150
5618
|
lumi.lumiModernExtend.fp300PIRDetection(),
|
|
@@ -5258,7 +5726,7 @@ exports.definitions = [
|
|
|
5258
5726
|
m.numeric({
|
|
5259
5727
|
name: "humidity_reporting_threshold",
|
|
5260
5728
|
valueMin: 2, // Min: 2%
|
|
5261
|
-
valueMax:
|
|
5729
|
+
valueMax: 15, // Max: 15%
|
|
5262
5730
|
valueStep: 0.5, // Step: 0,5%
|
|
5263
5731
|
scale: 100,
|
|
5264
5732
|
unit: "%",
|
|
@@ -5341,5 +5809,259 @@ exports.definitions = [
|
|
|
5341
5809
|
lumi.lumiModernExtend.lumiZigbeeOTA(),
|
|
5342
5810
|
],
|
|
5343
5811
|
},
|
|
5812
|
+
{
|
|
5813
|
+
zigbeeModel: ["aqara.toilet.acn002", "lumi.sen_gas.hrcn01"], // The reason for adding lumi.sen_gas.hrcn01 is that the model number reported by a toilet is exactly this
|
|
5814
|
+
model: "ACN002",
|
|
5815
|
+
vendor: "Aqara",
|
|
5816
|
+
description: "Smart Toilet T1",
|
|
5817
|
+
fromZigbee: [lumi.fromZigbee.lumi_toilet],
|
|
5818
|
+
toZigbee: [lumi.toZigbee.lumi_toilet],
|
|
5819
|
+
exposes: [
|
|
5820
|
+
e.binary("lid_switch", ea.STATE_SET, "OPEN", "CLOSE").withDescription("Lid status"),
|
|
5821
|
+
e.binary("seat_switch", ea.STATE_SET, "OPEN", "CLOSE").withDescription("Seat status"),
|
|
5822
|
+
e.binary("night_light", ea.STATE_SET, "ON", "OFF").withDescription("Night light"),
|
|
5823
|
+
e
|
|
5824
|
+
.enum("seat_temp", ea.STATE_SET, ["Off", "Temp_31C", "Temp_33C", "Temp_35C", "Temp_37C", "Temp_39C"])
|
|
5825
|
+
.withDescription("Seat heating temperature"),
|
|
5826
|
+
e
|
|
5827
|
+
.enum("cleaning_mode", ea.STATE_SET, ["Stop", "Rear", "Rear_Moving", "Female", "Female_Moving", "Child"])
|
|
5828
|
+
.withDescription("Cleaning mode"),
|
|
5829
|
+
e
|
|
5830
|
+
.enum("water_temp", ea.STATE_SET, ["Off", "Temp_31C", "Temp_33C", "Temp_35C", "Temp_37C", "Temp_39C"])
|
|
5831
|
+
.withDescription("Cleaning water temperature"),
|
|
5832
|
+
e
|
|
5833
|
+
.enum("water_pressure", ea.STATE_SET, ["Weak", "Slightly_Weak", "Middle", "Slightly_Strong", "Strong"])
|
|
5834
|
+
.withDescription("Water pressure"),
|
|
5835
|
+
e
|
|
5836
|
+
.enum("nozzle_position", ea.STATE_SET, ["Back", "Slightly_Back", "Middle", "Slightly_Front", "Front"])
|
|
5837
|
+
.withDescription("Nozzle position"),
|
|
5838
|
+
e
|
|
5839
|
+
.enum("dryer_temp", ea.STATE_SET, ["Off", "Normal", "Low", "Mid_Low", "Middle", "Mid_High", "High"])
|
|
5840
|
+
.withDescription("Dryer wind temperature"),
|
|
5841
|
+
e.enum("nozzle_clean", ea.STATE_SET, ["Off", "Auto", "Manual"]).withDescription("Nozzle self-cleaning"),
|
|
5842
|
+
e.binary("occupancy_status", ea.STATE, true, false).withDescription("Occupancy status"),
|
|
5843
|
+
e.enum("stop_button", ea.SET, ["STOP"]).withDescription("Stop operation"),
|
|
5844
|
+
e.enum("flush_big", ea.SET, ["FLUSH"]).withDescription("Full flush"),
|
|
5845
|
+
e.enum("flush_small", ea.SET, ["FLUSH"]).withDescription("Small flush"),
|
|
5846
|
+
e.enum("foam_shield", ea.SET, ["RELEASE"]).withDescription("Release splash-proof foam"),
|
|
5847
|
+
e.binary("pre_mist_switch", ea.STATE_SET, "ON", "OFF").withDescription("Pre-mist when sitting").withCategory("config"),
|
|
5848
|
+
e.binary("auto_foam_on_sit", ea.STATE_SET, "ON", "OFF").withDescription("Automatic foam when sitting").withCategory("config"),
|
|
5849
|
+
e.binary("auto_foam_on_leave", ea.STATE_SET, "ON", "OFF").withDescription("Automatic foam when leaving").withCategory("config"),
|
|
5850
|
+
e.binary("child_seat_mode", ea.STATE_SET, "ON", "OFF").withDescription("Child seat mode").withCategory("config"),
|
|
5851
|
+
e.binary("foot_sensor_switch", ea.STATE_SET, "ON", "OFF").withDescription("Foot sensor").withCategory("config"),
|
|
5852
|
+
e.binary("auto_flush_after_leave", ea.STATE_SET, "ON", "OFF").withDescription("Auto flush after leaving").withCategory("config"),
|
|
5853
|
+
e.binary("beeper_switch", ea.STATE_SET, "ON", "OFF").withDescription("Beeper sound").withCategory("config"),
|
|
5854
|
+
],
|
|
5855
|
+
extend: [lumi.modernExtend.addManuSpecificLumiCluster(), lumiZigbeeOTA(), m.forcePowerSource({ powerSource: "Mains (single phase)" })],
|
|
5856
|
+
configure: async (device, coordinatorEndpoint) => {
|
|
5857
|
+
const endpoint = device.getEndpoint(1);
|
|
5858
|
+
await endpoint.read("manuSpecificLumi", [0xfff1], { manufacturerCode: manufacturerCode });
|
|
5859
|
+
},
|
|
5860
|
+
},
|
|
5861
|
+
{
|
|
5862
|
+
zigbeeModel: ["lumi.sensor_occupy.acn1"],
|
|
5863
|
+
model: "FP310",
|
|
5864
|
+
vendor: "Aqara",
|
|
5865
|
+
description: "Presence sensor FP310",
|
|
5866
|
+
fromZigbee: [lumi.fromZigbee.lumi_specific],
|
|
5867
|
+
configure: async (device, coordinatorEndpoint) => {
|
|
5868
|
+
const endpoint = device.getEndpoint(1);
|
|
5869
|
+
await endpoint.read("manuSpecificLumi", [0x00ee], { manufacturerCode: manufacturerCode }); // Read OTA data; makes the device expose more attributes related to OTA
|
|
5870
|
+
await endpoint.read("manuSpecificLumi", [0x010c], { manufacturerCode: manufacturerCode }); // Read motion sensitivity
|
|
5871
|
+
await endpoint.read("manuSpecificLumi", [0x0142], { manufacturerCode: manufacturerCode }); // Read current presence
|
|
5872
|
+
await endpoint.read("manuSpecificLumi", [0x0197], { manufacturerCode: manufacturerCode }); // Read current absence delay timer value
|
|
5873
|
+
await endpoint.read("manuSpecificLumi", [0x019a], { manufacturerCode: manufacturerCode }); // Read detection range
|
|
5874
|
+
},
|
|
5875
|
+
extend: [
|
|
5876
|
+
lumi.modernExtend.addManuSpecificLumiCluster(),
|
|
5877
|
+
lumi.lumiModernExtend.lumiPreventLeave(),
|
|
5878
|
+
lumi.lumiModernExtend.lumiBattery({
|
|
5879
|
+
voltageToPercentage: { min: 2850, max: 3000 },
|
|
5880
|
+
voltageAttribute: 0x0017, // Attribute: 23
|
|
5881
|
+
//percentageAttribute: 0x0018 // Attribute: 24 // TODO: Should confirm to be sure
|
|
5882
|
+
}),
|
|
5883
|
+
lumi.lumiModernExtend.fp1ePresence(),
|
|
5884
|
+
m.illuminance(),
|
|
5885
|
+
m.humidity(),
|
|
5886
|
+
m.temperature(),
|
|
5887
|
+
m.enumLookup({
|
|
5888
|
+
name: "presence_sensitivity",
|
|
5889
|
+
lookup: { low: 1, medium: 2, high: 3 },
|
|
5890
|
+
cluster: "manuSpecificLumi",
|
|
5891
|
+
attribute: { ID: 0x010c, type: zigbee_herdsman_1.Zcl.DataType.UINT8 },
|
|
5892
|
+
description: "Presence Detection Sensitivity",
|
|
5893
|
+
zigbeeCommandOptions: { manufacturerCode },
|
|
5894
|
+
}),
|
|
5895
|
+
m.numeric({
|
|
5896
|
+
name: "absence_delay_timer",
|
|
5897
|
+
valueMin: 10,
|
|
5898
|
+
valueMax: 300,
|
|
5899
|
+
valueStep: 5,
|
|
5900
|
+
scale: 1,
|
|
5901
|
+
unit: "sec",
|
|
5902
|
+
cluster: "manuSpecificLumi",
|
|
5903
|
+
attribute: { ID: 0x0197, type: zigbee_herdsman_1.Zcl.DataType.UINT32 }, // Attribute: 407
|
|
5904
|
+
description: "Value for delay before the device reports absence when no presence is detected",
|
|
5905
|
+
zigbeeCommandOptions: { manufacturerCode },
|
|
5906
|
+
}),
|
|
5907
|
+
lumi.lumiModernExtend.fp1eSpatialLearning(),
|
|
5908
|
+
lumi.lumiModernExtend.fp1eRestartDevice(),
|
|
5909
|
+
// AI
|
|
5910
|
+
lumi.lumiModernExtend.fp1eAIInterference(),
|
|
5911
|
+
lumi.lumiModernExtend.fp1eAdaptiveSensitivity(),
|
|
5912
|
+
// Sampling parameters
|
|
5913
|
+
m.enumLookup({
|
|
5914
|
+
name: "temp_and_humidity_sampling",
|
|
5915
|
+
lookup: { off: 0, low: 1, medium: 2, high: 3, custom: 4 },
|
|
5916
|
+
cluster: "manuSpecificLumi",
|
|
5917
|
+
attribute: { ID: 0x0170, type: zigbee_herdsman_1.Zcl.DataType.UINT8 }, // Attribute: 368
|
|
5918
|
+
description: "Sampling time frequency, increasing affects battery life. Setting to custom allows specifying period, interval & threshold.",
|
|
5919
|
+
zigbeeCommandOptions: { manufacturerCode },
|
|
5920
|
+
}),
|
|
5921
|
+
m.numeric({
|
|
5922
|
+
name: "temp_and_humidity_sampling_period",
|
|
5923
|
+
valueMin: 0.5, // Min: 500ms
|
|
5924
|
+
valueMax: 3600, // Max: 1h = 3600s
|
|
5925
|
+
valueStep: 0.5, // Step: 500ms
|
|
5926
|
+
scale: 1000,
|
|
5927
|
+
unit: "sec",
|
|
5928
|
+
cluster: "manuSpecificLumi",
|
|
5929
|
+
attribute: { ID: 0x0162, type: zigbee_herdsman_1.Zcl.DataType.UINT32 }, // Attribute: 354
|
|
5930
|
+
description: "How often temp & humidity readings are taken on the device when in custom mode.",
|
|
5931
|
+
zigbeeCommandOptions: { manufacturerCode },
|
|
5932
|
+
}),
|
|
5933
|
+
// Temperature
|
|
5934
|
+
m.numeric({
|
|
5935
|
+
name: "temp_reporting_interval",
|
|
5936
|
+
valueMin: 600, // Min: 10min = 600s
|
|
5937
|
+
valueMax: 3600, // Max: 1h = 3600s
|
|
5938
|
+
valueStep: 600, // Step: 10min = 600s
|
|
5939
|
+
scale: 1000,
|
|
5940
|
+
unit: "sec",
|
|
5941
|
+
cluster: "manuSpecificLumi",
|
|
5942
|
+
attribute: { ID: 0x0163, type: zigbee_herdsman_1.Zcl.DataType.UINT32 }, // Attribute: 355
|
|
5943
|
+
description: "Custom time interval for temperature data reporting.",
|
|
5944
|
+
zigbeeCommandOptions: { manufacturerCode },
|
|
5945
|
+
}),
|
|
5946
|
+
m.numeric({
|
|
5947
|
+
name: "temp_reporting_threshold",
|
|
5948
|
+
valueMin: 0.2, // Min: 0,2 C
|
|
5949
|
+
valueMax: 3, // Max: 3,0 C
|
|
5950
|
+
valueStep: 0.1, // Step: 0,1 C
|
|
5951
|
+
scale: 100,
|
|
5952
|
+
unit: "°C",
|
|
5953
|
+
cluster: "manuSpecificLumi",
|
|
5954
|
+
attribute: { ID: 0x0164, type: zigbee_herdsman_1.Zcl.DataType.UINT16 }, // Attribute: 356
|
|
5955
|
+
description: "Reporting will trigger as temperature change reaches this value when in custom mode.",
|
|
5956
|
+
zigbeeCommandOptions: { manufacturerCode },
|
|
5957
|
+
}),
|
|
5958
|
+
m.enumLookup({
|
|
5959
|
+
name: "temp_reporting_mode",
|
|
5960
|
+
lookup: { threshold: 1, "reporting interval": 2, "threshold and interval": 3 },
|
|
5961
|
+
cluster: "manuSpecificLumi",
|
|
5962
|
+
attribute: { ID: 0x0165, type: zigbee_herdsman_1.Zcl.DataType.UINT8 }, // Attribute: 357
|
|
5963
|
+
description: "Temperature reporting type when in custom mode.",
|
|
5964
|
+
zigbeeCommandOptions: { manufacturerCode },
|
|
5965
|
+
}),
|
|
5966
|
+
// Humidity
|
|
5967
|
+
m.numeric({
|
|
5968
|
+
name: "humidity_reporting_interval",
|
|
5969
|
+
valueMin: 600, // Min: 10min = 600s
|
|
5970
|
+
valueMax: 3600, // Max: 1h = 3600s
|
|
5971
|
+
valueStep: 600, // Step: 10min = 600s
|
|
5972
|
+
scale: 1000,
|
|
5973
|
+
unit: "sec",
|
|
5974
|
+
cluster: "manuSpecificLumi",
|
|
5975
|
+
attribute: { ID: 0x016a, type: zigbee_herdsman_1.Zcl.DataType.UINT32 }, // Attribute: 362
|
|
5976
|
+
description: "Custom time interval for humidity data reporting.",
|
|
5977
|
+
zigbeeCommandOptions: { manufacturerCode },
|
|
5978
|
+
}),
|
|
5979
|
+
m.numeric({
|
|
5980
|
+
name: "humidity_reporting_threshold",
|
|
5981
|
+
valueMin: 2, // Min: 2%
|
|
5982
|
+
valueMax: 15, // Max: 15%
|
|
5983
|
+
valueStep: 0.5, // Step: 0,5%
|
|
5984
|
+
scale: 100,
|
|
5985
|
+
unit: "%",
|
|
5986
|
+
cluster: "manuSpecificLumi",
|
|
5987
|
+
attribute: { ID: 0x016b, type: zigbee_herdsman_1.Zcl.DataType.UINT16 }, // Attribute: 363
|
|
5988
|
+
description: "Reporting will trigger as humidity change reaches this value when in custom mode.",
|
|
5989
|
+
zigbeeCommandOptions: { manufacturerCode },
|
|
5990
|
+
}),
|
|
5991
|
+
m.enumLookup({
|
|
5992
|
+
name: "humidity_report_mode",
|
|
5993
|
+
lookup: { threshold: 1, "reporting interval": 2, "threshold and interval": 3 },
|
|
5994
|
+
cluster: "manuSpecificLumi",
|
|
5995
|
+
attribute: { ID: 0x016c, type: zigbee_herdsman_1.Zcl.DataType.UINT8 }, // Attribute: 364
|
|
5996
|
+
description: "Humidity reporting type when in custom mode.",
|
|
5997
|
+
zigbeeCommandOptions: { manufacturerCode },
|
|
5998
|
+
}),
|
|
5999
|
+
// Illuminance
|
|
6000
|
+
m.enumLookup({
|
|
6001
|
+
name: "light_sampling",
|
|
6002
|
+
lookup: { off: 0, low: 1, medium: 2, high: 3, custom: 4 },
|
|
6003
|
+
cluster: "manuSpecificLumi",
|
|
6004
|
+
attribute: { ID: 0x0192, type: zigbee_herdsman_1.Zcl.DataType.UINT8 }, // Attribute: 402
|
|
6005
|
+
description: "Sampling time frequency, increasing affects battery life. Setting to custom allows specifying period, interval & threshold.",
|
|
6006
|
+
zigbeeCommandOptions: { manufacturerCode },
|
|
6007
|
+
}),
|
|
6008
|
+
m.numeric({
|
|
6009
|
+
name: "light_sampling_period",
|
|
6010
|
+
valueMin: 0.5, // Min: 500ms
|
|
6011
|
+
valueMax: 3600, // Max: 1h = 3600s
|
|
6012
|
+
valueStep: 0.5, // Step: 500ms
|
|
6013
|
+
scale: 1000,
|
|
6014
|
+
unit: "sec",
|
|
6015
|
+
cluster: "manuSpecificLumi",
|
|
6016
|
+
attribute: { ID: 0x0193, type: zigbee_herdsman_1.Zcl.DataType.UINT32 }, // Attribute: 403
|
|
6017
|
+
description: "How often illumination readings are taken on the device when in custom mode.",
|
|
6018
|
+
zigbeeCommandOptions: { manufacturerCode },
|
|
6019
|
+
}),
|
|
6020
|
+
m.numeric({
|
|
6021
|
+
name: "light_reporting_interval",
|
|
6022
|
+
valueMin: 20, // Min: 20s
|
|
6023
|
+
valueMax: 3600, // Max: 1h = 3600s
|
|
6024
|
+
valueStep: 20, // Step: 20s
|
|
6025
|
+
scale: 1000,
|
|
6026
|
+
unit: "sec",
|
|
6027
|
+
cluster: "manuSpecificLumi",
|
|
6028
|
+
attribute: { ID: 0x0194, type: zigbee_herdsman_1.Zcl.DataType.UINT32 }, // attribute 404
|
|
6029
|
+
description: "Custom interval for illumination data reporting.",
|
|
6030
|
+
zigbeeCommandOptions: { manufacturerCode },
|
|
6031
|
+
}),
|
|
6032
|
+
m.numeric({
|
|
6033
|
+
name: "light_reporting_threshold",
|
|
6034
|
+
valueMin: 3, // Min: 3%
|
|
6035
|
+
valueMax: 20, /// Max: 20%
|
|
6036
|
+
valueStep: 0.5, // Step: 0,5%
|
|
6037
|
+
scale: 100,
|
|
6038
|
+
unit: "%",
|
|
6039
|
+
cluster: "manuSpecificLumi",
|
|
6040
|
+
attribute: { ID: 0x0195, type: zigbee_herdsman_1.Zcl.DataType.UINT16 }, // Attribute: 405
|
|
6041
|
+
description: "Reporting will trigger as illumination percentage change reaches this value when in custom mode.",
|
|
6042
|
+
zigbeeCommandOptions: { manufacturerCode },
|
|
6043
|
+
}),
|
|
6044
|
+
m.enumLookup({
|
|
6045
|
+
name: "light_report_mode",
|
|
6046
|
+
lookup: { threshold: 1, "reporting interval": 2, "threshold and interval": 3 },
|
|
6047
|
+
cluster: "manuSpecificLumi",
|
|
6048
|
+
attribute: { ID: 0x0196, type: zigbee_herdsman_1.Zcl.DataType.UINT8 }, // Attribute: 406
|
|
6049
|
+
description: "illumination reporting type when in custom mode.",
|
|
6050
|
+
zigbeeCommandOptions: { manufacturerCode },
|
|
6051
|
+
}),
|
|
6052
|
+
// Read current target distance
|
|
6053
|
+
lumi.lumiModernExtend.fp300TrackDistance(),
|
|
6054
|
+
lumi.lumiModernExtend.fp1eTargetDistance(), // Same attribute. Need to send 0x0198 to start tracking
|
|
6055
|
+
// Set detection range
|
|
6056
|
+
fp310DetectionRange(),
|
|
6057
|
+
// LED Indicator
|
|
6058
|
+
lumi.lumiModernExtend.lumiLedDisabledNight(),
|
|
6059
|
+
lumi.lumiModernExtend.lumiLedDisabledNightTime(),
|
|
6060
|
+
m.identify(),
|
|
6061
|
+
// OTA
|
|
6062
|
+
m.quirkCheckinInterval("1_HOUR"),
|
|
6063
|
+
lumi.lumiModernExtend.lumiZigbeeOTA(),
|
|
6064
|
+
],
|
|
6065
|
+
},
|
|
5344
6066
|
];
|
|
5345
6067
|
//# sourceMappingURL=lumi.js.map
|