@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/easyiot.js
CHANGED
|
@@ -37,14 +37,331 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
37
37
|
};
|
|
38
38
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
39
|
exports.definitions = void 0;
|
|
40
|
+
const zigbee_herdsman_1 = require("@willieee802/zigbee-herdsman");
|
|
40
41
|
const iconv_lite_1 = __importDefault(require("iconv-lite"));
|
|
41
42
|
const exposes = __importStar(require("../lib/exposes"));
|
|
42
43
|
const logger_1 = require("../lib/logger");
|
|
43
44
|
const m = __importStar(require("../lib/modernExtend"));
|
|
44
45
|
const reporting = __importStar(require("../lib/reporting"));
|
|
46
|
+
const sonoff_1 = require("../lib/sonoff");
|
|
47
|
+
const utils_1 = require("../lib/utils");
|
|
45
48
|
const NS = "zhc:easyiot";
|
|
46
49
|
const ea = exposes.access;
|
|
47
50
|
const e = exposes.presets;
|
|
51
|
+
// protocol utilities for ZB-IR01
|
|
52
|
+
const protocolUtils = {
|
|
53
|
+
/**
|
|
54
|
+
* XOR checksum algorithm - based on ZB-IR01 protocol 1.2.3
|
|
55
|
+
* Perform XOR operation on all bytes
|
|
56
|
+
*/
|
|
57
|
+
calculateXor: (data) => {
|
|
58
|
+
let xorResult = 0;
|
|
59
|
+
for (const byte of data) {
|
|
60
|
+
xorResult ^= byte;
|
|
61
|
+
}
|
|
62
|
+
return xorResult;
|
|
63
|
+
},
|
|
64
|
+
/**
|
|
65
|
+
* Convert string to hex byte array
|
|
66
|
+
* Example: "gree_1" -> [0x67, 0x72, 0x65, 0x65, 0x5f, 0x31]
|
|
67
|
+
*/
|
|
68
|
+
buildCommand: (commandByte, byte2, byte3, byte4) => {
|
|
69
|
+
const data = [commandByte, byte2, byte3, byte4, 0x00];
|
|
70
|
+
const xor = protocolUtils.calculateXor(data);
|
|
71
|
+
return Buffer.from([...data, xor]);
|
|
72
|
+
},
|
|
73
|
+
/**
|
|
74
|
+
* kfid is derived from brand and model offset. The offset is 1-based index within the brand's model range.
|
|
75
|
+
* Example: brand = "gree", model = "gree_1", offset = 1 -> kfid = 1
|
|
76
|
+
*/
|
|
77
|
+
acBrandModels: {
|
|
78
|
+
gree: { name: "gree", name1: "5qC85Yqb", range: [0, 19] },
|
|
79
|
+
haier: { name: "haier", name1: "5rW35bCU", range: [20, 39] },
|
|
80
|
+
midea: { name: "midea", name1: "576O55qE", range: [40, 59] },
|
|
81
|
+
changhong: { name: "changhong", name1: "6ZW/6Jm5", range: [60, 79] },
|
|
82
|
+
chigo: { name: "chigo", name1: "5b+X6auY", range: [80, 99] },
|
|
83
|
+
aux: { name: "aux", name1: "5aWl5YWL5pav", range: [100, 119] },
|
|
84
|
+
tcl: { name: "tcl", name1: "VENM", range: [120, 139] },
|
|
85
|
+
hisense: { name: "hisense", name1: "5rW35L+h", range: [140, 159] },
|
|
86
|
+
kelon: { name: "kelon", name1: "56eR6b6Z", range: [160, 179] },
|
|
87
|
+
xiaomi: { name: "xiaomi", name1: "5bCP57Gz", range: [180, 189] },
|
|
88
|
+
hitachi: { name: "hitachi", name1: "5pel56uL", range: [190, 209] },
|
|
89
|
+
natpanasonic: { name: "natpanasonic", name1: "5p2+5LiL", range: [210, 235] },
|
|
90
|
+
toshiba: { name: "toshiba", name1: "5Lic6Iqd", range: [236, 245] },
|
|
91
|
+
galanz: { name: "galanz", name1: "5qC85YWw5LuV", range: [246, 259] },
|
|
92
|
+
mitsubishiheavy: { name: "mitsubishiheavy", name1: "5LiJ6I+x6YeN5bel", range: [260, 279] },
|
|
93
|
+
mitsubishielectric: { name: "mitsubishielectric", name1: "5LiJ6I+x55S15py6", range: [280, 299] },
|
|
94
|
+
samsung: { name: "samsung", name1: "5LiJ5pif", range: [300, 319] },
|
|
95
|
+
lg: { name: "lg", name1: "TEc=", range: [320, 329] },
|
|
96
|
+
whirlpool: { name: "whirlpool", name1: "5oOg6ICM5rWm", range: [330, 339] },
|
|
97
|
+
electrolux: { name: "electrolux", name1: "5LyK6I6x5YWL5pav", range: [340, 349] },
|
|
98
|
+
konka: { name: "konka", name1: "5bq35L2z", range: [350, 359] },
|
|
99
|
+
daikin: { name: "daikin", name1: "5aSn6YeR", range: [360, 389] },
|
|
100
|
+
sharp: { name: "sharp", name1: "5aSP5pmu", range: [390, 409] },
|
|
101
|
+
trane: { name: "trane", name1: "54m554G1", range: [410, 419] },
|
|
102
|
+
skyworth: { name: "skyworth", name1: "5Yib57u0", range: [420, 429] },
|
|
103
|
+
york: { name: "york", name1: "57qm5YWL", range: [430, 443] },
|
|
104
|
+
fujitsu: { name: "fujitsu", name1: "5a+M5aOr6YCa", range: [444, 459] },
|
|
105
|
+
shinco: { name: "shinco", name1: "5paw56eR", range: [460, 469] },
|
|
106
|
+
yangzi: { name: "yangzi", name1: "5oms5a2Q", range: [470, 479] },
|
|
107
|
+
mbo: { name: "mbo", name1: "576O5Y2a", range: [480, 489] },
|
|
108
|
+
mcquay: { name: "mcquay", name1: "6bqm5YWL57u05bCU", range: [490, 499] },
|
|
109
|
+
frestech: { name: "frestech", name1: "5paw6aOe", range: [500, 506] },
|
|
110
|
+
xiaoya: { name: "xiaoya", name1: "5bCP6bit", range: [507, 509] },
|
|
111
|
+
tica: { name: "tica", name1: "VElDQQ==", range: [510, 515] },
|
|
112
|
+
sast: { name: "sast", name1: "5YWI56eR", range: [516, 519] },
|
|
113
|
+
littleswan: { name: "littleswan", name1: "5bCP5aSp6bmF", range: [520, 529] },
|
|
114
|
+
sanyo: { name: "sanyo", name1: "5LiJ5rSL", range: [530, 559] },
|
|
115
|
+
royalsta: { name: "royalsta", name1: "6I2j5LqL6L6+", range: [560, 565] },
|
|
116
|
+
rca: { name: "rca", name1: "UkNB", range: [566, 569] },
|
|
117
|
+
lejn: { name: "lejn", name1: "5LmQ5Lqs", range: [570, 573] },
|
|
118
|
+
rowa: { name: "rowa", name1: "5LmQ5Y2O", range: [574, 589] },
|
|
119
|
+
casarte: { name: "casarte", name1: "5Y2h6JCo5bid", range: [590, 595] },
|
|
120
|
+
carrier: { name: "carrier", name1: "5byA5Yip", range: [596, 619] },
|
|
121
|
+
giwee: { name: "giwee", name1: "56ev5b6u", range: [620, 622] },
|
|
122
|
+
jensany: { name: "jensany", name1: "6YeR5LiJ5rSL", range: [623, 629] },
|
|
123
|
+
hualing: { name: "hualing", name1: "5Y2O5YeM", range: [630, 639] },
|
|
124
|
+
gome: { name: "gome", name1: "5Zu9576O", range: [640, 644] },
|
|
125
|
+
gelin: { name: "gelin", name1: "5q2M5p6X", range: [645, 655] },
|
|
126
|
+
chunlan: { name: "chunlan", name1: "5pil5YWw", range: [656, 666] },
|
|
127
|
+
aoli: { name: "aoli", name1: "5aWl5Yqb", range: [667, 669] },
|
|
128
|
+
aucma: { name: "aucma", name1: "5r6z5p+v546b", range: [670, 675] },
|
|
129
|
+
shuanglu: { name: "shuanglu", name1: "5Y+M6bm/", range: [676, 679] },
|
|
130
|
+
jiwu: { name: "jiwu", name1: "6IuP5a6B5p6B54mp", range: [680, 683] },
|
|
131
|
+
leader: { name: "leader", name1: "57uf5biF", range: [684, 688] },
|
|
132
|
+
tomsen: { name: "tomsen", name1: "5rGk5aeG5qOu", range: [689, 693] },
|
|
133
|
+
hyundai: { name: "hyundai", name1: "546w5Luj", range: [694, 699] },
|
|
134
|
+
panda: { name: "panda", name1: "54aK54yr", range: [700, 704] },
|
|
135
|
+
xyingyan: { name: "xyingyan", name1: "5paw6L+O54eV", range: [705, 709] },
|
|
136
|
+
shenhua: { name: "shenhua", name1: "55Sz6Iqx", range: [710, 712] },
|
|
137
|
+
pascmio: { name: "pascmio", name1: "5Lit5p2+", range: [713, 714] },
|
|
138
|
+
yuetu: { name: "yuetu", name1: "5pyI5YWU", range: [715, 719] },
|
|
139
|
+
fzm: { name: "fzm", name1: "5pa557Gz", range: [720, 721] },
|
|
140
|
+
xft: { name: "xft", name1: "6Zuq6I+y54m5", range: [722, 723] },
|
|
141
|
+
boyin: { name: "boyin", name1: "5rOi6Z+z", range: [724, 725] },
|
|
142
|
+
huabao: { name: "huabao", name1: "5Y2O5a6d", range: [726, 729] },
|
|
143
|
+
daewoo: { name: "daewoo", name1: "5aSn5a6H", range: [730, 735] },
|
|
144
|
+
conrowa: { name: "conrowa", name1: "6auY6Lev5Y2O", range: [736, 739] },
|
|
145
|
+
guqiao: { name: "guqiao", name1: "5Y+k5qGl", range: [740, 745] },
|
|
146
|
+
huake: { name: "huake", name1: "5Y2O56eR", range: [746, 749] },
|
|
147
|
+
huamei: { name: "huamei", name1: "5Y2O576O", range: [750, 754] },
|
|
148
|
+
jinsong: { name: "jinsong", name1: "6YeR5p2+", range: [755, 759] },
|
|
149
|
+
risuo: { name: "risuo", name1: "5pel57Si", range: [760, 764] },
|
|
150
|
+
shenbao: { name: "shenbao", name1: "57uF5a6d", range: [765, 769] },
|
|
151
|
+
wanbao: { name: "wanbao", name1: "5LiH5a6d", range: [770, 774] },
|
|
152
|
+
neitian: { name: "neitian", name1: "5YaF55Sw", range: [775, 779] },
|
|
153
|
+
electra: { name: "electra", name1: "5YeJ5a6H", range: [780, 784] },
|
|
154
|
+
bluestar: { name: "bluestar", name1: "Qmx1ZVN0YXI=", range: [785, 789] },
|
|
155
|
+
voltas: { name: "voltas", name1: "Vm9sdGFz", range: [790, 794] },
|
|
156
|
+
akira: { name: "akira", name1: "54ix5a625LmQ", range: [795, 799] },
|
|
157
|
+
panlisen: { name: "panlisen", name1: "UGFubGlzZW4=", range: [800, 801] },
|
|
158
|
+
rasonic: { name: "rasonic", name1: "5LmQ5L+h", range: [802, 809] },
|
|
159
|
+
palcsicons: { name: "palcsicons", name1: "6LWi5p2+", range: [810, 811] },
|
|
160
|
+
itan: { name: "itan", name1: "55uI55Sw", range: [812, 814] },
|
|
161
|
+
whircipol: { name: "whircipol", name1: "V2hpcmNpUG9s", range: [815, 819] },
|
|
162
|
+
changgu: { name: "changgu", name1: "6ZW/6LC3", range: [820, 824] },
|
|
163
|
+
funiki: { name: "funiki", name1: "RnVuaWtp", range: [825, 829] },
|
|
164
|
+
yiruite: { name: "yiruite", name1: "5Lq/55Ge54m5", range: [830, 834] },
|
|
165
|
+
sanzuan: { name: "sanzuan", name1: "5LiJ6ZK7", range: [835, 839] },
|
|
166
|
+
deroxi: { name: "deroxi", name1: "5b635r6z6KW/", range: [840, 844] },
|
|
167
|
+
fedders: { name: "fedders", name1: "6aOe6L6+5LuV", range: [845, 849] },
|
|
168
|
+
paonoca: { name: "paonoca", name1: "6Z+p5Lqa", range: [850, 854] },
|
|
169
|
+
wuq: { name: "wuq", name1: "5LqU5by6", range: [855, 859] },
|
|
170
|
+
sinro: { name: "sinro", name1: "5paw6I+x", range: [860, 864] },
|
|
171
|
+
insignia: { name: "insignia", name1: "5b2x6ZuF", range: [865, 869] },
|
|
172
|
+
elco: { name: "elco", name1: "5a6c56eR", range: [870, 874] },
|
|
173
|
+
vicoo: { name: "vicoo", name1: "VklDT08=", range: [875, 879] },
|
|
174
|
+
gmcc: { name: "gmcc", name1: "R01DQw==", range: [880, 884] },
|
|
175
|
+
xinshiji: { name: "xinshiji", name1: "5paw5LiW57qq", range: [885, 889] },
|
|
176
|
+
bendao: { name: "bendao", name1: "5pys5bKb", range: [890, 894] },
|
|
177
|
+
sumsaxng: { name: "sumsaxng", name1: "5Lic5pa55LiJ5pif", range: [895, 899] },
|
|
178
|
+
jinxing: { name: "jinxing", name1: "6YeR5YW0", range: [900, 904] },
|
|
179
|
+
mitsein: { name: "mitsein", name1: "5byl54m55pav", range: [905, 909] },
|
|
180
|
+
ek: { name: "ek", name1: "RUs=", range: [910, 914] },
|
|
181
|
+
kingair: { name: "kingair", name1: "5Zu956Wl", range: [915, 919] },
|
|
182
|
+
aqua: { name: "aqua", name1: "QVFVQQ==", range: [920, 924] },
|
|
183
|
+
unionaire: { name: "unionaire", name1: "VW5pb24gYWlyZQ==", range: [925, 929] },
|
|
184
|
+
korechi: { name: "korechi", name1: "6Z+p55S1", range: [930, 939] },
|
|
185
|
+
inventor: { name: "inventor", name1: "SW52ZW50b3I=", range: [940, 944] },
|
|
186
|
+
xingfeidq: { name: "xingfeidq", name1: "WElOR0ZFSURR", range: [945, 949] },
|
|
187
|
+
xffh: { name: "xffh", name1: "5paw6aOe6aOe6bi/", range: [950, 954] },
|
|
188
|
+
dizhi: { name: "dizhi", name1: "5bid5pm6", range: [955, 959] },
|
|
189
|
+
winia: { name: "winia", name1: "V0lOSUE=", range: [960, 964] },
|
|
190
|
+
pascmio1: { name: "pascmio1", name1: "5p2+55S1", range: [965, 969] },
|
|
191
|
+
chuangye: { name: "chuangye", name1: "5Yib6YeO", range: [970, 974] },
|
|
192
|
+
shacopu: { name: "shacopu", name1: "5aSP56eR5pmu", range: [975, 979] },
|
|
193
|
+
panwosoci: { name: "panwosoci", name1: "5q2j5p2+5bed", range: [980, 984] },
|
|
194
|
+
shineleaf: { name: "shineleaf", name1: "5aSP56uL", range: [985, 989] },
|
|
195
|
+
panatomic: { name: "panatomic", name1: "UGFuYXRvbWlj", range: [990, 994] },
|
|
196
|
+
paonoca1: { name: "paonoca1", name1: "UGFvbm9jYQ==", range: [995, 999] },
|
|
197
|
+
geling: { name: "geling", name1: "5q2M6I+x", range: [1000, 1004] },
|
|
198
|
+
sharbo: { name: "sharbo", name1: "5aSP5a6d", range: [1005, 1009] },
|
|
199
|
+
hangtiandianqi: { name: "hangtiandianqi", name1: "6Iiq5aSp55S15Zmo", range: [1010, 1014] },
|
|
200
|
+
dongbao: { name: "dongbao", name1: "5Lic5a6d", range: [1015, 1019] },
|
|
201
|
+
toyo: { name: "toyo", name1: "5Lic5rSL", range: [1020, 1024] },
|
|
202
|
+
shangling: { name: "shangling", name1: "5LiK6I+x", range: [1025, 1029] },
|
|
203
|
+
teco: { name: "teco", name1: "VEVDTw==", range: [1030, 1034] },
|
|
204
|
+
airwell: { name: "airwell", name1: "5qyn5aiB5bCU", range: [1035, 1039] },
|
|
205
|
+
combine: { name: "combine", name1: "5bq35ouc5oGp", range: [1040, 1042] },
|
|
206
|
+
feige: { name: "feige", name1: "6aOe5q2M", range: [1043, 1045] },
|
|
207
|
+
partsoinc: { name: "partsoinc", name1: "UGFydHNvaW5j", range: [1046, 1049] },
|
|
208
|
+
nikai: { name: "nikai", name1: "TmlLYWk=", range: [1050, 1052] },
|
|
209
|
+
mitsubishiheavy_haier: { name: "mitsubishiheavy_haier", name1: "5LiJ6I+x6YeN5bel5rW35bCU", range: [1053, 1055] },
|
|
210
|
+
voton: { name: "voton", name1: "5rKD6aG/", range: [1056, 1059] },
|
|
211
|
+
tadiran: { name: "tadiran", name1: "5aGU6L+q5YWw", range: [1060, 1061] },
|
|
212
|
+
lexin: { name: "lexin", name1: "5LmQ5paw", range: [1062, 1063] },
|
|
213
|
+
nuolin: { name: "nuolin", name1: "6K+65p6X", range: [1064, 1066] },
|
|
214
|
+
xiamenyilin: { name: "xiamenyilin", name1: "5Y6m6Zeo5Lq/5p6X", range: [1067, 1069] },
|
|
215
|
+
horshron: { name: "horshron", name1: "6Jm55aOw", range: [1070, 1071] },
|
|
216
|
+
levante: { name: "levante", name1: "TEVWQU5URQ==", range: [1072, 1073] },
|
|
217
|
+
guanyuan: { name: "guanyuan", name1: "5Yag6L+c", range: [1074, 1075] },
|
|
218
|
+
lilytech: { name: "lilytech", name1: "55m+5ZCI", range: [1076, 1078] },
|
|
219
|
+
sunny: { name: "sunny", name1: "6Ziz5YWJ", range: [1079, 1080] },
|
|
220
|
+
viomi: { name: "viomi", name1: "5LqR57Gz", range: [1081, 1082] },
|
|
221
|
+
soyea: { name: "soyea", name1: "57Si5LyK", range: [1082, 1085] },
|
|
222
|
+
serene: { name: "serene", name1: "6KW/5Ya3", range: [1086, 1088] },
|
|
223
|
+
cheblo: { name: "cheblo", name1: "5qix6Iqx55S15Zmo", range: [1089, 1094] },
|
|
224
|
+
smartmi: { name: "smartmi", name1: "5pm657Gz", range: [1095, 1099] },
|
|
225
|
+
bosch: { name: "bosch", name1: "5Y2a5LiW", range: [1100, 1104] },
|
|
226
|
+
partmusic: { name: "partmusic", name1: "5pel5p2+", range: [1105, 1109] },
|
|
227
|
+
funiki1: { name: "funiki1", name1: "RlVOSUtJ", range: [1110, 1114] },
|
|
228
|
+
hilaire: { name: "hilaire", name1: "6Zuq6I6x5bCU", range: [1115, 1116] },
|
|
229
|
+
hkc: { name: "hkc", name1: "5oOg56eR", range: [1117, 1119] },
|
|
230
|
+
bluestar1: { name: "bluestar1", name1: "Qmx1ZSBTdGFy", range: [1120, 1125] },
|
|
231
|
+
teco1: { name: "teco1", name1: "5Lic5YWD", range: [1126, 1128] },
|
|
232
|
+
paohanic: { name: "paohanic", name1: "5p2+5bed", range: [1129, 1131] },
|
|
233
|
+
nintaus: { name: "nintaus", name1: "6YeR5q2j", range: [1132, 1136] },
|
|
234
|
+
olimpiasplendid: { name: "olimpiasplendid", name1: "5qyn6I+x5a6d", range: [1137, 1139] },
|
|
235
|
+
philips: { name: "philips", name1: "6aOe5Yip5rWm", range: [1140, 1145] },
|
|
236
|
+
fortress: { name: "fortress", name1: "5Liw5rO9", range: [1146, 1147] },
|
|
237
|
+
meilihongzuan: { name: "meilihongzuan", name1: "TUVJTElIT05HWlVBTg==", range: [1148, 1149] },
|
|
238
|
+
tica1: { name: "tica1", name1: "5aSp5Yqg", range: [1150, 1154] },
|
|
239
|
+
junda: { name: "junda", name1: "6aqP5a6J6L6+", range: [1155, 1159] },
|
|
240
|
+
electra1: { name: "electra1", name1: "5Lul6I6x54m5", range: [1160, 1162] },
|
|
241
|
+
mingyi: { name: "mingyi", name1: "5ZCN5Lq/", range: [1163, 1165] },
|
|
242
|
+
ifb: { name: "ifb", name1: "SUZC", range: [1166, 1167] },
|
|
243
|
+
kingsfin: { name: "kingsfin", name1: "S2luZ3NmaW4=", range: [1168, 1169] },
|
|
244
|
+
onida: { name: "onida", name1: "T25pZGE=", range: [1170, 1172] },
|
|
245
|
+
suittc: { name: "suittc", name1: "6ZGr5rqQ", range: [1173, 1175] },
|
|
246
|
+
colmo: { name: "colmo", name1: "Q09MTU8=", range: [1176, 1177] },
|
|
247
|
+
duozuanhua: { name: "duozuanhua", name1: "5aSa6ZK76Iqx", range: [1178, 1179] },
|
|
248
|
+
huikang: { name: "huikang", name1: "5oOg5bq3", range: [1180, 1181] },
|
|
249
|
+
gibson: { name: "gibson", name1: "5ZCJ5pmu55Sf", range: [1182, 1189] },
|
|
250
|
+
first: { name: "first", name1: "RklSU1Q=", range: [1190, 1191] },
|
|
251
|
+
jhs: { name: "jhs", name1: "6YeR6bi/55ub", range: [1192, 1193] },
|
|
252
|
+
meiling: { name: "meiling", name1: "576O6I+x", range: [1194, 1197] },
|
|
253
|
+
maxe: { name: "maxe", name1: "5LiH5aOr55uK", range: [1198, 1201] },
|
|
254
|
+
skg: { name: "skg", name1: "U0tH", range: [1202, 1203] },
|
|
255
|
+
acl: { name: "acl", name1: "5Zac5LqL5p2l", range: [1204, 1205] },
|
|
256
|
+
tongyi: { name: "tongyi", name1: "5ZCM55uK", range: [1206, 1207] },
|
|
257
|
+
tianyuan: { name: "tianyuan", name1: "5aSp5YWD", range: [1208, 1209] },
|
|
258
|
+
tianhui: { name: "tianhui", name1: "5aSp5rGH6ZuG5oiQ", range: [1210, 1211] },
|
|
259
|
+
tianjin: { name: "tianjin", name1: "5aSp5rSl", range: [1212, 1213] },
|
|
260
|
+
tair: { name: "tair", name1: "VGFpcg==", range: [1214, 1215] },
|
|
261
|
+
macro: { name: "macro", name1: "5LiH5a625LmQ", range: [1216, 1219] },
|
|
262
|
+
xinle: { name: "xinle", name1: "5paw5LmQ", range: [1220, 1223] },
|
|
263
|
+
xinhuabao: { name: "xinhuabao", name1: "5paw5Y2O5a6d", range: [1224, 1225] },
|
|
264
|
+
xiongdi: { name: "xiongdi", name1: "5YWE5byf", range: [1226, 1227] },
|
|
265
|
+
benwin: { name: "benwin", name1: "5a6+57u0", range: [1228, 1229] },
|
|
266
|
+
sanshui: { name: "sanshui", name1: "5bGx5rC0", range: [1230, 1231] },
|
|
267
|
+
phlgco: { name: "phlgco", name1: "6aOe5q2M5Lit5Zu9", range: [1232, 1233] },
|
|
268
|
+
linkcool: { name: "linkcool", name1: "6bqf6YW3", range: [1234, 1235] },
|
|
269
|
+
nec: { name: "nec", name1: "TkVD", range: [1236, 1238] },
|
|
270
|
+
lanbo: { name: "lanbo", name1: "6JOd5rOi", range: [1239, 1249] },
|
|
271
|
+
changling: { name: "changling", name1: "6ZW/5bKt", range: [1250, 1259] },
|
|
272
|
+
jinli: { name: "jinli", name1: "6YeR56uL", range: [1260, 1261] },
|
|
273
|
+
huifeng: { name: "huifeng", name1: "5rGH5Liw", range: [1262, 1265] },
|
|
274
|
+
huanghe: { name: "huanghe", name1: "6buE5rKz", range: [1266, 1267] },
|
|
275
|
+
hailin: { name: "hailin", name1: "5rW35p6X", range: [1268, 1269] },
|
|
276
|
+
cih: { name: "cih", name1: "Q0lI", range: [1270, 1271] },
|
|
277
|
+
meico: { name: "meico", name1: "576O5q2M", range: [1272, 1273] },
|
|
278
|
+
museen: { name: "museen", name1: "5oWV5qOu", range: [1274, 1275] },
|
|
279
|
+
millink: { name: "millink", name1: "57Gz5p6X5a6i", range: [1276, 1277] },
|
|
280
|
+
mistral: { name: "mistral", name1: "5ZCN5rCP6aOO", range: [1278, 1279] },
|
|
281
|
+
mljd: { name: "mljd", name1: "6bqm5YuS", range: [1280, 1281] },
|
|
282
|
+
bole: { name: "bole", name1: "5rOi5LmQ", range: [1282, 1285] },
|
|
283
|
+
sacon: { name: "sacon", name1: "5biF5bq3", range: [1286, 1290] },
|
|
284
|
+
weili: { name: "weili", name1: "5aiB5Yqb", range: [1291, 1295] },
|
|
285
|
+
sova: { name: "sova", name1: "57Si5Y2O", range: [1296, 1297] },
|
|
286
|
+
zymbo: { name: "zymbo", name1: "5rex5a6d", range: [1298, 1299] },
|
|
287
|
+
weiteli: { name: "weiteli", name1: "5aiB54m55Yip", range: [1300, 1301] },
|
|
288
|
+
kenwood: { name: "kenwood", name1: "5YGl5LyN", range: [1302, 1304] },
|
|
289
|
+
gee: { name: "gee", name1: "5byY56uL", range: [1305, 1306] },
|
|
290
|
+
hneyrea: { name: "hneyrea", name1: "6Jm556uL", range: [1307, 1308] },
|
|
291
|
+
langge: { name: "langge", name1: "5pyX5q2M", range: [1309, 1313] },
|
|
292
|
+
oudian: { name: "oudian", name1: "5qyn5YW4", range: [1314, 1315] },
|
|
293
|
+
pgtess: { name: "pgtess", name1: "5ZOB5qC854m55pav", range: [1316, 1317] },
|
|
294
|
+
panwosoci1: { name: "panwosoci1", name1: "UGFud29zb2Np", range: [1318, 1319] },
|
|
295
|
+
partsonic: { name: "partsonic", name1: "5rex5Zyz5p2+5LiL", range: [1320, 1321] },
|
|
296
|
+
twinswan: { name: "twinswan", name1: "5Y+M5Yek", range: [1322, 1323] },
|
|
297
|
+
shengsong: { name: "shengsong", name1: "5rex5p2+", range: [1324, 1325] },
|
|
298
|
+
pamosautc: { name: "pamosautc", name1: "UGFtb3NhdXRj", range: [1326, 1327] },
|
|
299
|
+
caixing: { name: "caixing", name1: "5b2p5pif", range: [1328, 1329] },
|
|
300
|
+
cmv: { name: "cmv", name1: "Q01W", range: [1330, 1331] },
|
|
301
|
+
dongxia: { name: "dongxia", name1: "5Yas5aSP", range: [1332, 1333] },
|
|
302
|
+
guangda: { name: "guangda", name1: "5YWJ5aSn", range: [1334, 1335] },
|
|
303
|
+
geyang: { name: "geyang", name1: "5qC86Ziz", range: [1336, 1337] },
|
|
304
|
+
gchv: { name: "gchv", name1: "R0NIVg==", range: [1338, 1339] },
|
|
305
|
+
huayi: { name: "huayi", name1: "5Y2O5oSP", range: [1340, 1342] },
|
|
306
|
+
sunburg: { name: "sunburg", name1: "5qOu5a6d", range: [1343, 1344] },
|
|
307
|
+
boerka: { name: "boerka", name1: "5rOi5bCU5Y2h", range: [1345, 1346] },
|
|
308
|
+
aite: { name: "aite", name1: "54ix54m5", range: [1347, 1348] },
|
|
309
|
+
aidelong: { name: "aidelong", name1: "6Im+5b636b6Z", range: [1349, 1350] },
|
|
310
|
+
dajinxing: { name: "dajinxing", name1: "5aSn6YeR5pif", range: [1351, 1352] },
|
|
311
|
+
dometic: { name: "dometic", name1: "5aSa576O6L6+", range: [1353, 1354] },
|
|
312
|
+
museen1: { name: "museen1", name1: "5oWV5qOu", range: [1274, 1275] },
|
|
313
|
+
},
|
|
314
|
+
/**
|
|
315
|
+
* get kfid range for a given brand. Returns [start, end] or null if brand not found.
|
|
316
|
+
*/
|
|
317
|
+
getBrandKfidRange: (brand) => {
|
|
318
|
+
const brandKey = brand.toLowerCase();
|
|
319
|
+
const brandData = protocolUtils.acBrandModels[brandKey];
|
|
320
|
+
return brandData ? brandData.range : null;
|
|
321
|
+
},
|
|
322
|
+
/**
|
|
323
|
+
* get kfid range for a given brand. Returns [start, end] or null if brand not found.
|
|
324
|
+
* Example: brand = "gree" -> returns [0, 19]
|
|
325
|
+
*/
|
|
326
|
+
getKfidFromOffset: (brand, offset) => {
|
|
327
|
+
const range = protocolUtils.getBrandKfidRange(brand);
|
|
328
|
+
if (!range) {
|
|
329
|
+
return null;
|
|
330
|
+
}
|
|
331
|
+
const [start, end] = range;
|
|
332
|
+
const kfid = start + (offset - 1);
|
|
333
|
+
if (kfid < start || kfid > end) {
|
|
334
|
+
return null;
|
|
335
|
+
}
|
|
336
|
+
return kfid;
|
|
337
|
+
},
|
|
338
|
+
/**
|
|
339
|
+
* get brand and offset from kfid. Returns {brand, offset} or null if kfid not in any brand range.
|
|
340
|
+
* Example: kfid = 5 -> returns {brand: "gree", offset: 6}
|
|
341
|
+
*/
|
|
342
|
+
getBrandFormattedEnums: () => {
|
|
343
|
+
const enums = [];
|
|
344
|
+
for (const [brand, data] of Object.entries(protocolUtils.acBrandModels)) {
|
|
345
|
+
const [start, end] = data.range;
|
|
346
|
+
//const offset1Based = (index: number): number => index - 0x0000 + 1;
|
|
347
|
+
//const rangeStr = `${offset1Based(start)}-${offset1Based(end)}`;
|
|
348
|
+
const decoded = Buffer.from(data.name1, "base64").toString("utf-8");
|
|
349
|
+
enums.push(`${data.name}(${decoded})(${start}-${end})`);
|
|
350
|
+
void brand; // to satisfy unused variable linting, as we only need the data.name for the enum display
|
|
351
|
+
}
|
|
352
|
+
return enums;
|
|
353
|
+
},
|
|
354
|
+
/**
|
|
355
|
+
* AC button mapping - based on protocol table 12
|
|
356
|
+
*/
|
|
357
|
+
acButtonMap: {
|
|
358
|
+
power: { buttonId: 0x00, values: { on: 0x00, off: 0x01 } },
|
|
359
|
+
mode: { buttonId: 0x01, values: { auto: 0x00, cooling: 0x01, dehumidification: 0x02, air_supply: 0x03, heating: 0x04 } },
|
|
360
|
+
temperature: { buttonId: 0x02, baseValue: 0x00 }, // 16℃ is 0x00, 17℃ is 0x01,max is 32℃ is 0x10
|
|
361
|
+
wind_speed: { buttonId: 0x04, values: { auto: 0x00, low: 0x01, medium: 0x02, high: 0x03, strong: 0x04 } },
|
|
362
|
+
swing: { buttonId: 0x05, values: { on: 0x00, off: 0x01 } },
|
|
363
|
+
},
|
|
364
|
+
};
|
|
48
365
|
const fzLocal = {
|
|
49
366
|
easyiot_ir_recv_command: {
|
|
50
367
|
cluster: "seTunneling",
|
|
@@ -117,6 +434,140 @@ const tzLocal = {
|
|
|
117
434
|
logger_1.logger.debug("Sending IR command success.", NS);
|
|
118
435
|
},
|
|
119
436
|
},
|
|
437
|
+
/**
|
|
438
|
+
* send AC power command
|
|
439
|
+
* value: "on" or "off"
|
|
440
|
+
*/
|
|
441
|
+
easyiot_ir_ac_power: {
|
|
442
|
+
key: ["ac_power"],
|
|
443
|
+
convertSet: async (entity, key, value, meta) => {
|
|
444
|
+
if (!["on", "off"].includes(value)) {
|
|
445
|
+
throw new Error("ac_power must be 'on' or 'off'");
|
|
446
|
+
}
|
|
447
|
+
// deviceType 0x01 = AC
|
|
448
|
+
const deviceType = 0x01;
|
|
449
|
+
const buttonId = protocolUtils.acButtonMap.power.buttonId;
|
|
450
|
+
const powerValue = value === "on" ? 0x00 : 0x01;
|
|
451
|
+
const command = protocolUtils.buildCommand(0x86, deviceType, buttonId, powerValue);
|
|
452
|
+
logger_1.logger.debug(`Sending AC power command: ${value}`, NS);
|
|
453
|
+
await entity.command("seTunneling", "transferData", {
|
|
454
|
+
tunnelId: 0x0000,
|
|
455
|
+
data: command,
|
|
456
|
+
}, { disableDefaultResponse: true });
|
|
457
|
+
return { state: { ac_power: value } };
|
|
458
|
+
},
|
|
459
|
+
},
|
|
460
|
+
/**
|
|
461
|
+
* set AC temperature
|
|
462
|
+
* temperature range: 16℃ (0x00) - 32℃ (0x10)
|
|
463
|
+
*/
|
|
464
|
+
easyiot_ir_ac_temperature: {
|
|
465
|
+
key: ["ac_temperature"],
|
|
466
|
+
convertSet: async (entity, key, value, meta) => {
|
|
467
|
+
const temp = value;
|
|
468
|
+
if (!Number.isInteger(temp) || temp < 16 || temp > 32) {
|
|
469
|
+
throw new Error("ac_temperature must be 16-32");
|
|
470
|
+
}
|
|
471
|
+
const deviceType = 0x01;
|
|
472
|
+
const buttonId = 0x02;
|
|
473
|
+
const tempValue = temp - 16; // 16℃ is 0x00, 17℃ is 0x01
|
|
474
|
+
const command = protocolUtils.buildCommand(0x86, deviceType, buttonId, tempValue);
|
|
475
|
+
logger_1.logger.debug(`Sending AC temperature command: ${temp}℃`, NS);
|
|
476
|
+
await entity.command("seTunneling", "transferData", {
|
|
477
|
+
tunnelId: 0x0000,
|
|
478
|
+
data: command,
|
|
479
|
+
}, { disableDefaultResponse: true });
|
|
480
|
+
return { state: { ac_temperature: temp } };
|
|
481
|
+
},
|
|
482
|
+
},
|
|
483
|
+
/**
|
|
484
|
+
* set AC mode
|
|
485
|
+
* mode range: auto(0x00), cooling(0x01), dehumidification(0x02), air_supply(0x03), heating(0x04)
|
|
486
|
+
*/
|
|
487
|
+
easyiot_ir_ac_mode: {
|
|
488
|
+
key: ["ac_mode"],
|
|
489
|
+
convertSet: async (entity, key, value, meta) => {
|
|
490
|
+
const modeMap = {
|
|
491
|
+
auto: 0x00,
|
|
492
|
+
cooling: 0x01,
|
|
493
|
+
dehumidification: 0x02,
|
|
494
|
+
air_supply: 0x03,
|
|
495
|
+
heating: 0x04,
|
|
496
|
+
};
|
|
497
|
+
if (!(value in modeMap)) {
|
|
498
|
+
throw new Error(`ac_mode must be one of: ${Object.keys(modeMap).join(", ")}`);
|
|
499
|
+
}
|
|
500
|
+
const deviceType = 0x01;
|
|
501
|
+
const buttonId = protocolUtils.acButtonMap.mode.buttonId;
|
|
502
|
+
const modeValue = modeMap[value];
|
|
503
|
+
const command = protocolUtils.buildCommand(0x86, deviceType, buttonId, modeValue);
|
|
504
|
+
logger_1.logger.debug(`Sending AC mode command: ${value}`, NS);
|
|
505
|
+
await entity.command("seTunneling", "transferData", {
|
|
506
|
+
tunnelId: 0x0000,
|
|
507
|
+
data: command,
|
|
508
|
+
}, { disableDefaultResponse: true });
|
|
509
|
+
return { state: { ac_mode: value } };
|
|
510
|
+
},
|
|
511
|
+
},
|
|
512
|
+
easyiot_ir_ac_wind_speed: {
|
|
513
|
+
key: ["ac_wind_speed"],
|
|
514
|
+
convertSet: async (entity, key, value, meta) => {
|
|
515
|
+
const windMap = {
|
|
516
|
+
auto: 0x00,
|
|
517
|
+
low: 0x01,
|
|
518
|
+
medium: 0x02,
|
|
519
|
+
high: 0x03,
|
|
520
|
+
strong: 0x04,
|
|
521
|
+
};
|
|
522
|
+
if (!(value in windMap)) {
|
|
523
|
+
throw new Error(`ac_wind_speed must be one of: ${Object.keys(windMap).join(", ")}`);
|
|
524
|
+
}
|
|
525
|
+
const deviceType = 0x01;
|
|
526
|
+
const buttonId = protocolUtils.acButtonMap.wind_speed.buttonId;
|
|
527
|
+
const windValue = windMap[value];
|
|
528
|
+
const command = protocolUtils.buildCommand(0x86, deviceType, buttonId, windValue);
|
|
529
|
+
logger_1.logger.debug(`Sending AC wind speed command: ${value}`, NS);
|
|
530
|
+
await entity.command("seTunneling", "transferData", {
|
|
531
|
+
tunnelId: 0x0000,
|
|
532
|
+
data: command,
|
|
533
|
+
}, { disableDefaultResponse: true });
|
|
534
|
+
return { state: { ac_wind_speed: value } };
|
|
535
|
+
},
|
|
536
|
+
},
|
|
537
|
+
easyiot_ir_ac_kfid_offset: {
|
|
538
|
+
key: ["ac_kfid_offset_model"],
|
|
539
|
+
convertSet: async (entity, key, value, meta) => {
|
|
540
|
+
const payload = value;
|
|
541
|
+
const kfid = payload.ac_kfid_offset;
|
|
542
|
+
const brandStr = payload.ac_brand;
|
|
543
|
+
const brandMatch = brandStr.match(/^[a-zA-Z]+/);
|
|
544
|
+
const brand = brandMatch[0] ? brandMatch[0].toLowerCase() : undefined;
|
|
545
|
+
logger_1.logger.debug(`AC brand set to ${brand} brandMatch: ${brandMatch}, kfid: ${kfid}`, NS);
|
|
546
|
+
if (!Object.keys(protocolUtils.acBrandModels).includes(brand)) {
|
|
547
|
+
throw new Error(`ac_brand must be one of: ${Object.keys(protocolUtils.acBrandModels).join(", ")}`);
|
|
548
|
+
}
|
|
549
|
+
//get the kfid range for the current brand
|
|
550
|
+
const range = protocolUtils.getBrandKfidRange(brand);
|
|
551
|
+
if (!range) {
|
|
552
|
+
return null;
|
|
553
|
+
}
|
|
554
|
+
const [start, end] = range;
|
|
555
|
+
logger_1.logger.debug(`AC brand set to ${brand}, kfid: ${kfid}`, NS);
|
|
556
|
+
if (kfid < start || kfid > end) {
|
|
557
|
+
throw new Error(`ac_kfid_offset ${kfid} is out of range for brand ${brand} (valid range: ${start}-${end})`);
|
|
558
|
+
}
|
|
559
|
+
const deviceType = 0x01;
|
|
560
|
+
const kfid_l = kfid & 0xff;
|
|
561
|
+
const kfid_h = (kfid >> 8) & 0xff;
|
|
562
|
+
const command = protocolUtils.buildCommand(0x80, deviceType, kfid_h, kfid_l);
|
|
563
|
+
logger_1.logger.debug(`Sending AC kfid offset command: ${kfid}`, NS);
|
|
564
|
+
await entity.command("seTunneling", "transferData", {
|
|
565
|
+
tunnelId: 0x0000,
|
|
566
|
+
data: command,
|
|
567
|
+
}, { disableDefaultResponse: true });
|
|
568
|
+
return { state: { kfid_offset: value } };
|
|
569
|
+
},
|
|
570
|
+
},
|
|
120
571
|
easyiot_tts_send_command: {
|
|
121
572
|
key: ["send_tts"],
|
|
122
573
|
convertSet: async (entity, key, value, meta) => {
|
|
@@ -176,6 +627,169 @@ const tzLocal = {
|
|
|
176
627
|
logger_1.logger.debug("Sending IR command success.", NS);
|
|
177
628
|
},
|
|
178
629
|
},
|
|
630
|
+
easyiot_zl01_open_door: {
|
|
631
|
+
key: ["unlock_door"],
|
|
632
|
+
convertSet: async (entity, key, value, meta) => {
|
|
633
|
+
(0, utils_1.assertString)(value, "PIN code must be a string");
|
|
634
|
+
const length = Buffer.from([value.toString().length]);
|
|
635
|
+
const pincode = Buffer.from(value.toString(), "utf-8");
|
|
636
|
+
const data = Buffer.concat([length, pincode]);
|
|
637
|
+
await entity.command("closuresDoorLock", "unlockDoor", { pincodevalue: data }, { disableDefaultResponse: true });
|
|
638
|
+
},
|
|
639
|
+
},
|
|
640
|
+
easyiot_zl01_open_door_with_timeout: {
|
|
641
|
+
key: ["unlock_door_with_timeout"],
|
|
642
|
+
convertSet: async (entity, key, value, meta) => {
|
|
643
|
+
(0, utils_1.assertObject)(value, "PIN code must be an object");
|
|
644
|
+
const payload = value;
|
|
645
|
+
logger_1.logger.debug(`Sending pin code: ${payload.pin_code} with timeout: ${payload.timeout} seconds`, NS);
|
|
646
|
+
const length = Buffer.from([payload.pin_code.length]);
|
|
647
|
+
const pincodeBuffer = Buffer.from(payload.pin_code, "utf-8");
|
|
648
|
+
const data = Buffer.concat([length, pincodeBuffer]);
|
|
649
|
+
await entity.command("closuresDoorLock", "unlockDoorWithTimeout", {
|
|
650
|
+
timeout: payload.timeout,
|
|
651
|
+
pincodevalue: data,
|
|
652
|
+
}, { disableDefaultResponse: true });
|
|
653
|
+
},
|
|
654
|
+
},
|
|
655
|
+
easyiot_zl01_add_ephemeral_pin: {
|
|
656
|
+
key: ["ephemeral_pin_code"],
|
|
657
|
+
convertSet: async (entity, key, value, meta) => {
|
|
658
|
+
(0, utils_1.assertObject)(value, "ephemeral_pin_code requires an object with start_time, end_time, userid, valid_times, and pincode");
|
|
659
|
+
const payload = value;
|
|
660
|
+
// Validate required parameters
|
|
661
|
+
if (typeof payload.start_time !== "number") {
|
|
662
|
+
throw new Error("start_time must be a number (UNIX timestamp in seconds)");
|
|
663
|
+
}
|
|
664
|
+
if (typeof payload.end_time !== "number") {
|
|
665
|
+
throw new Error("end_time must be a number (UNIX timestamp in seconds)");
|
|
666
|
+
}
|
|
667
|
+
if (typeof payload.userid !== "number") {
|
|
668
|
+
throw new Error("userid must be a number (0-65535)");
|
|
669
|
+
}
|
|
670
|
+
if (typeof payload.valid_times !== "number") {
|
|
671
|
+
throw new Error("valid_times must be a number (0-255)");
|
|
672
|
+
}
|
|
673
|
+
if (typeof payload.pincode !== "string") {
|
|
674
|
+
throw new Error("pincode must be a string");
|
|
675
|
+
}
|
|
676
|
+
logger_1.logger.debug(`Adding ephemeral pin - startTime: ${payload.start_time}, endTime: ${payload.end_time}, userid: ${payload.userid}, validTimes: ${payload.valid_times}, pincode: ${payload.pincode}`, NS);
|
|
677
|
+
// Convert UNIX timestamps to Zigbee 2000-based local time seconds
|
|
678
|
+
// Use UTC (offset 0) as default timezone for temporary passwords
|
|
679
|
+
const startTimeZigbee = (0, sonoff_1.utcToDeviceLocal2000Seconds)(payload.start_time, 0);
|
|
680
|
+
const endTimeZigbee = (0, sonoff_1.utcToDeviceLocal2000Seconds)(payload.end_time, 0);
|
|
681
|
+
// Convert pincode string to buffer
|
|
682
|
+
const pincodeBuffer = Buffer.from(payload.pincode, "utf-8");
|
|
683
|
+
const commandPayload = {
|
|
684
|
+
startTime: startTimeZigbee,
|
|
685
|
+
endTime: endTimeZigbee,
|
|
686
|
+
userid: payload.userid,
|
|
687
|
+
validTimes: payload.valid_times,
|
|
688
|
+
pincodevalue: pincodeBuffer,
|
|
689
|
+
};
|
|
690
|
+
await entity.command("closuresDoorLock", "setEphemeralPin", commandPayload, {
|
|
691
|
+
disableDefaultResponse: true,
|
|
692
|
+
});
|
|
693
|
+
},
|
|
694
|
+
},
|
|
695
|
+
easyiot_zl01_clear_ephemeral_pin: {
|
|
696
|
+
key: ["ephemeral_clear_pin_code"],
|
|
697
|
+
convertSet: async (entity, key, value, meta) => {
|
|
698
|
+
(0, utils_1.assertObject)(value, "ephemeral_clear_pin_code requires an object with userid");
|
|
699
|
+
const payload = value;
|
|
700
|
+
// Validate required parameter
|
|
701
|
+
if (typeof payload.userid !== "number") {
|
|
702
|
+
throw new Error("userid must be a number (0-65535)");
|
|
703
|
+
}
|
|
704
|
+
await entity.command("closuresDoorLock", "clearEphemeralPin", {
|
|
705
|
+
userid: payload.userid,
|
|
706
|
+
}, {
|
|
707
|
+
disableDefaultResponse: true,
|
|
708
|
+
});
|
|
709
|
+
},
|
|
710
|
+
},
|
|
711
|
+
easyiot_zl01_clear_all_ephemeral_pin: {
|
|
712
|
+
key: ["ephemeral_clear_all_pin_code"],
|
|
713
|
+
convertSet: async (entity, key, value, meta) => {
|
|
714
|
+
await entity.command("closuresDoorLock", "clearAllEphemeralPins", {}, { disableDefaultResponse: true });
|
|
715
|
+
},
|
|
716
|
+
},
|
|
717
|
+
/**
|
|
718
|
+
* Configure RS485 serial port parameters using the data point protocol.
|
|
719
|
+
* Each setting is an independent data point command, concatenated and sent in one tunneling transfer.
|
|
720
|
+
*
|
|
721
|
+
* Baud rate (0x0201): [01 02 04 23 <uint32-LE>]
|
|
722
|
+
* Parity (0x0205): [05 02 01 30 <0=NONE|1=EVEN|2=ODD>]
|
|
723
|
+
* Stop bits (0x0209): [09 02 01 30 <0=1bit|1=1.5bits|2=2bits>]
|
|
724
|
+
*
|
|
725
|
+
* TunnelID must be 0x0001 per the data-point tunneling protocol.
|
|
726
|
+
*/
|
|
727
|
+
easyiot_rs485_set_config: {
|
|
728
|
+
key: ["rs485_config"],
|
|
729
|
+
convertSet: async (entity, key, value, meta) => {
|
|
730
|
+
(0, utils_1.assertObject)(value, "rs485_config must be an object");
|
|
731
|
+
const payload = value;
|
|
732
|
+
const commands = [];
|
|
733
|
+
// --- Baud rate: 0x0201, data type uint32 (0x23), little-endian ---
|
|
734
|
+
if (payload.baud_rate !== undefined) {
|
|
735
|
+
const baudRateMap = {
|
|
736
|
+
"1200": 1200,
|
|
737
|
+
"2400": 2400,
|
|
738
|
+
"4800": 4800,
|
|
739
|
+
"9600": 9600,
|
|
740
|
+
"19200": 19200,
|
|
741
|
+
"38400": 38400,
|
|
742
|
+
"57600": 57600,
|
|
743
|
+
"115200": 115200,
|
|
744
|
+
"230400": 230400,
|
|
745
|
+
"460800": 460800,
|
|
746
|
+
"921600": 921600,
|
|
747
|
+
};
|
|
748
|
+
const baudRate = String(payload.baud_rate);
|
|
749
|
+
if (!(baudRate in baudRateMap)) {
|
|
750
|
+
throw new Error(`baud_rate must be one of: ${Object.keys(baudRateMap).join(", ")}`);
|
|
751
|
+
}
|
|
752
|
+
const buf = Buffer.alloc(8);
|
|
753
|
+
buf[0] = 0x01; // command low byte (0x0201)
|
|
754
|
+
buf[1] = 0x02; // command high byte
|
|
755
|
+
buf[2] = 0x04; // data length
|
|
756
|
+
buf[3] = 0x23; // data type: uint32
|
|
757
|
+
buf.writeUInt32LE(baudRateMap[baudRate], 4);
|
|
758
|
+
commands.push(buf);
|
|
759
|
+
}
|
|
760
|
+
// --- Parity: 0x0205, data type enum8 (0x30) ---
|
|
761
|
+
// 0 = NONE, 1 = EVEN, 2 = ODD
|
|
762
|
+
if (payload.parity !== undefined) {
|
|
763
|
+
const parityMap = { none: 0x00, even: 0x01, odd: 0x02 };
|
|
764
|
+
const parity = String(payload.parity);
|
|
765
|
+
if (!(parity in parityMap)) {
|
|
766
|
+
throw new Error(`parity must be one of: ${Object.keys(parityMap).join(", ")}`);
|
|
767
|
+
}
|
|
768
|
+
commands.push(Buffer.from([0x05, 0x02, 0x01, 0x30, parityMap[parity]]));
|
|
769
|
+
}
|
|
770
|
+
// --- Stop bits: 0x0209, data type enum8 (0x30) ---
|
|
771
|
+
// 0 = 1 stop bit, 1 = 1.5 stop bits, 2 = 2 stop bits
|
|
772
|
+
if (payload.stop_bits !== undefined) {
|
|
773
|
+
const stopBitsMap = { "1": 0x00, "1.5": 0x01, "2": 0x02 };
|
|
774
|
+
const stopBits = String(payload.stop_bits);
|
|
775
|
+
if (!(stopBits in stopBitsMap)) {
|
|
776
|
+
throw new Error(`stop_bits must be one of: ${Object.keys(stopBitsMap).join(", ")}`);
|
|
777
|
+
}
|
|
778
|
+
commands.push(Buffer.from([0x09, 0x02, 0x01, 0x30, stopBitsMap[stopBits]]));
|
|
779
|
+
}
|
|
780
|
+
if (commands.length === 0) {
|
|
781
|
+
throw new Error("At least one of baud_rate, parity, or stop_bits must be specified");
|
|
782
|
+
}
|
|
783
|
+
const data = Buffer.concat(commands);
|
|
784
|
+
logger_1.logger.debug(`Sending RS485 config (hex): ${data.toString("hex")}`, NS);
|
|
785
|
+
await entity.command("seTunneling", "transferData", {
|
|
786
|
+
tunnelId: 0x0001,
|
|
787
|
+
data,
|
|
788
|
+
}, { disableDefaultResponse: true });
|
|
789
|
+
logger_1.logger.debug("Sending RS485 config success.", NS);
|
|
790
|
+
return { state: { rs485_config: payload } };
|
|
791
|
+
},
|
|
792
|
+
},
|
|
179
793
|
};
|
|
180
794
|
exports.definitions = [
|
|
181
795
|
{
|
|
@@ -184,11 +798,47 @@ exports.definitions = [
|
|
|
184
798
|
vendor: "easyiot",
|
|
185
799
|
description: "Infrared remote control equipped with local code library,",
|
|
186
800
|
fromZigbee: [fzLocal.easyiot_ir_recv_command],
|
|
187
|
-
toZigbee: [
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
801
|
+
toZigbee: [
|
|
802
|
+
tzLocal.easyiot_ir_send_command,
|
|
803
|
+
tzLocal.easyiot_ir_ac_power,
|
|
804
|
+
tzLocal.easyiot_ir_ac_temperature,
|
|
805
|
+
tzLocal.easyiot_ir_ac_mode,
|
|
806
|
+
tzLocal.easyiot_ir_ac_wind_speed,
|
|
807
|
+
tzLocal.easyiot_ir_ac_kfid_offset,
|
|
191
808
|
],
|
|
809
|
+
exposes: (device, options) => {
|
|
810
|
+
return [
|
|
811
|
+
// recved IR command code
|
|
812
|
+
e.text("last_received_command", ea.STATE).withDescription("Last received IR command code"),
|
|
813
|
+
e
|
|
814
|
+
.text("send_command", ea.SET)
|
|
815
|
+
.withDescription("Send infrared control command, This is a low-level interface. You can refer to the protocol documentation to implement more features."),
|
|
816
|
+
// KFID offset for AC models that require it. The offset is based on the brand's KFID rang
|
|
817
|
+
e
|
|
818
|
+
.composite("ac_kfid_offset_model", "ac_kfid_offset_model", ea.SET)
|
|
819
|
+
.withDescription("Here you can create a new air conditioner remote control. First, select the brand of your air conditioner, then enter the remote control number within the indicated range in Ac kfid offset and click Apply. Finally, try turning on the air conditioner. If it fails, try the next number until it works.")
|
|
820
|
+
.withFeature(e.enum("ac_brand", ea.SET, protocolUtils.getBrandFormattedEnums()).withDescription("AC brand - choose a brand first"))
|
|
821
|
+
.withFeature(e
|
|
822
|
+
.numeric("ac_kfid_offset", ea.SET)
|
|
823
|
+
.withDescription("For example, if you select the first option, Gree, you can enter any number between 0 and 19, and then click Apply.")),
|
|
824
|
+
// (Power on/off)
|
|
825
|
+
e.binary("ac_power", ea.ALL, "on", "off").withDescription("AC power "),
|
|
826
|
+
// (Operation mode)
|
|
827
|
+
e
|
|
828
|
+
.enum("ac_mode", ea.SET, ["auto", "cooling", "dehumidification", "air_supply", "heating"])
|
|
829
|
+
.withDescription("AC mode: auto/cooling/dehumidification/air_supply/heating"),
|
|
830
|
+
// (Temperature setting: 16-32°C)
|
|
831
|
+
e
|
|
832
|
+
.numeric("ac_temperature", ea.SET)
|
|
833
|
+
.withValueMin(16)
|
|
834
|
+
.withValueMax(32)
|
|
835
|
+
.withValueStep(1)
|
|
836
|
+
.withUnit("°C")
|
|
837
|
+
.withDescription("AC temperature setting: 16-32°C"),
|
|
838
|
+
// (Fan speed)
|
|
839
|
+
e.enum("ac_wind_speed", ea.SET, ["auto", "low", "medium", "high", "strong"]).withDescription("AC fan speed"),
|
|
840
|
+
];
|
|
841
|
+
},
|
|
192
842
|
},
|
|
193
843
|
{
|
|
194
844
|
fingerprint: [{ modelID: "ZB-TTS01", manufacturerName: "easyiot" }],
|
|
@@ -221,10 +871,31 @@ exports.definitions = [
|
|
|
221
871
|
vendor: "easyiot",
|
|
222
872
|
description: "Zigbee to RS485 controller",
|
|
223
873
|
fromZigbee: [fzLocal.easyiot_ir_recv_command],
|
|
224
|
-
toZigbee: [tzLocal.easyiot_ir_send_command],
|
|
874
|
+
toZigbee: [tzLocal.easyiot_ir_send_command, tzLocal.easyiot_rs485_set_config],
|
|
875
|
+
ota: true,
|
|
225
876
|
exposes: [
|
|
226
877
|
e.text("last_received_command", ea.STATE).withDescription("Received data"),
|
|
227
878
|
e.text("send_command", ea.SET).withDescription("Send data"),
|
|
879
|
+
e
|
|
880
|
+
.composite("rs485_config", "rs485_config", ea.SET)
|
|
881
|
+
.withDescription("RS485 serial port configuration")
|
|
882
|
+
.withFeature(e
|
|
883
|
+
.enum("baud_rate", ea.SET, [
|
|
884
|
+
"1200",
|
|
885
|
+
"2400",
|
|
886
|
+
"4800",
|
|
887
|
+
"9600",
|
|
888
|
+
"19200",
|
|
889
|
+
"38400",
|
|
890
|
+
"57600",
|
|
891
|
+
"115200",
|
|
892
|
+
"230400",
|
|
893
|
+
"460800",
|
|
894
|
+
"921600",
|
|
895
|
+
])
|
|
896
|
+
.withDescription("Baud rate (bps)"))
|
|
897
|
+
.withFeature(e.enum("parity", ea.SET, ["none", "even", "odd"]).withDescription("Parity (none / even / odd)"))
|
|
898
|
+
.withFeature(e.enum("stop_bits", ea.SET, ["1", "1.5", "2"]).withDescription("Stop bits (1 / 1.5 / 2)")),
|
|
228
899
|
],
|
|
229
900
|
},
|
|
230
901
|
{
|
|
@@ -355,5 +1026,96 @@ exports.definitions = [
|
|
|
355
1026
|
m.onOff({ endpointNames: ["l1", "l2", "l3", "l4", "l5", "l6", "l7", "l8"], configureReporting: false, powerOnBehavior: false }),
|
|
356
1027
|
],
|
|
357
1028
|
},
|
|
1029
|
+
{
|
|
1030
|
+
fingerprint: [{ modelID: "ZB-ZL01", manufacturerName: "easyiot" }],
|
|
1031
|
+
model: "ZB-ZL01",
|
|
1032
|
+
vendor: "easyiot",
|
|
1033
|
+
description: "Smart door lock",
|
|
1034
|
+
fromZigbee: [],
|
|
1035
|
+
toZigbee: [
|
|
1036
|
+
tzLocal.easyiot_zl01_open_door,
|
|
1037
|
+
tzLocal.easyiot_zl01_open_door_with_timeout,
|
|
1038
|
+
tzLocal.easyiot_zl01_add_ephemeral_pin,
|
|
1039
|
+
tzLocal.easyiot_zl01_clear_ephemeral_pin,
|
|
1040
|
+
tzLocal.easyiot_zl01_clear_all_ephemeral_pin,
|
|
1041
|
+
],
|
|
1042
|
+
extend: [
|
|
1043
|
+
m.deviceAddCustomCluster("closuresDoorLock", {
|
|
1044
|
+
name: "customClusterDoorLock",
|
|
1045
|
+
ID: 0x0101,
|
|
1046
|
+
attributes: {},
|
|
1047
|
+
commands: {
|
|
1048
|
+
unlockDoorWithTimeout: {
|
|
1049
|
+
ID: 0x03,
|
|
1050
|
+
name: "unlockDoorWithTimeout",
|
|
1051
|
+
response: 3,
|
|
1052
|
+
parameters: [
|
|
1053
|
+
{ name: "timeout", type: zigbee_herdsman_1.Zcl.DataType.UINT32 },
|
|
1054
|
+
{ name: "pincodevalue", type: zigbee_herdsman_1.Zcl.DataType.OCTET_STR },
|
|
1055
|
+
],
|
|
1056
|
+
},
|
|
1057
|
+
setEphemeralPin: {
|
|
1058
|
+
ID: 0xb6,
|
|
1059
|
+
name: "setEphemeralPin",
|
|
1060
|
+
response: 182,
|
|
1061
|
+
parameters: [
|
|
1062
|
+
{ name: "startTime", type: zigbee_herdsman_1.Zcl.DataType.UINT32 },
|
|
1063
|
+
{ name: "endTime", type: zigbee_herdsman_1.Zcl.DataType.UINT32 },
|
|
1064
|
+
{ name: "userid", type: zigbee_herdsman_1.Zcl.DataType.UINT16 },
|
|
1065
|
+
{ name: "validTimes", type: zigbee_herdsman_1.Zcl.DataType.UINT8 },
|
|
1066
|
+
{ name: "pincodevalue", type: zigbee_herdsman_1.Zcl.DataType.OCTET_STR },
|
|
1067
|
+
],
|
|
1068
|
+
},
|
|
1069
|
+
clearEphemeralPin: {
|
|
1070
|
+
ID: 0xb8,
|
|
1071
|
+
name: "clearEphemeralPin",
|
|
1072
|
+
response: 184,
|
|
1073
|
+
parameters: [{ name: "userid", type: zigbee_herdsman_1.Zcl.DataType.UINT16 }],
|
|
1074
|
+
},
|
|
1075
|
+
clearAllEphemeralPins: {
|
|
1076
|
+
ID: 0xb9,
|
|
1077
|
+
name: "clearAllEphemeralPins",
|
|
1078
|
+
response: 185,
|
|
1079
|
+
parameters: [],
|
|
1080
|
+
},
|
|
1081
|
+
},
|
|
1082
|
+
commandsResponse: {
|
|
1083
|
+
unlockDoorRsp: { ID: 0x01, name: "unlockDoorRsp", parameters: [{ name: "status", type: zigbee_herdsman_1.Zcl.DataType.ENUM8 }], required: true },
|
|
1084
|
+
unlockWithTimeoutRsp: { ID: 0x03, name: "unlockWithTimeoutRsp", parameters: [{ name: "status", type: zigbee_herdsman_1.Zcl.DataType.ENUM8 }] },
|
|
1085
|
+
setEphemeralPinRsp: { ID: 182, name: "setEphemeralPinRsp", parameters: [{ name: "status", type: zigbee_herdsman_1.Zcl.DataType.UINT8 }] },
|
|
1086
|
+
clearEphemeralPinRsp: { ID: 184, name: "clearEphemeralPinRsp", parameters: [{ name: "status", type: zigbee_herdsman_1.Zcl.DataType.UINT8 }] },
|
|
1087
|
+
clearAllEphemeralPinsRsp: { ID: 185, name: "clearAllEphemeralPinsRsp", parameters: [{ name: "status", type: zigbee_herdsman_1.Zcl.DataType.UINT8 }] },
|
|
1088
|
+
},
|
|
1089
|
+
}),
|
|
1090
|
+
m.battery({ percentageReportingConfig: { min: 30, max: 1800, change: 1 } }),
|
|
1091
|
+
],
|
|
1092
|
+
exposes: [
|
|
1093
|
+
e.numeric("lock_status", ea.STATE | ea.GET).withDescription("Lock status reported by the lock, 0 means locked, 1 means unlocked"),
|
|
1094
|
+
e.text("unlock_door", ea.SET).withDescription("Enter password to unlock door"),
|
|
1095
|
+
e
|
|
1096
|
+
.composite("unlock_door_with_timeout", "unlock_door_with_timeout", ea.ALL)
|
|
1097
|
+
.withFeature(e.numeric("timeout", ea.SET).withDescription("Number of seconds the PIN code is valid, 0 means lock will be re-locked"))
|
|
1098
|
+
.withFeature(e.text("pin_code", ea.SET).withLabel("PIN code").withDescription("Pincode to set, set pincode to null to clear")),
|
|
1099
|
+
e
|
|
1100
|
+
.composite("ephemeral_pin_code", "ephemeral_pin_code", ea.SET)
|
|
1101
|
+
.withFeature(e.numeric("start_time", ea.SET).withDescription("Temporary PIN start time (UNIX timestamp in seconds)"))
|
|
1102
|
+
.withFeature(e.numeric("end_time", ea.SET).withDescription("Temporary PIN end time (UNIX timestamp in seconds)"))
|
|
1103
|
+
.withFeature(e.numeric("userid", ea.SET).withDescription("User ID for the temporary PIN (1-20)").withValueMin(1).withValueMax(20))
|
|
1104
|
+
.withFeature(e
|
|
1105
|
+
.numeric("valid_times", ea.SET)
|
|
1106
|
+
.withDescription("Number of times the temporary PIN can be used (0-255, 0 means unlimited)")
|
|
1107
|
+
.withValueMin(0)
|
|
1108
|
+
.withValueMax(255))
|
|
1109
|
+
.withFeature(e.text("pincode", ea.SET).withDescription("The temporary PIN code (numeric string)")),
|
|
1110
|
+
e
|
|
1111
|
+
.composite("ephemeral_clear_pin_code", "ephemeral_clear_pin_code", ea.SET)
|
|
1112
|
+
.withFeature(e.numeric("userid", ea.SET).withDescription("User ID for the temporary PIN (1-20)").withValueMin(1).withValueMax(20)),
|
|
1113
|
+
e.composite("ephemeral_clear_all_pin_code", "ephemeral_clear_all_pin_code", ea.SET),
|
|
1114
|
+
],
|
|
1115
|
+
configure: async (device, coordinatorEndpoint) => {
|
|
1116
|
+
const endpoint = device.getEndpoint(1);
|
|
1117
|
+
await reporting.bind(endpoint, coordinatorEndpoint, ["genPowerCfg"]);
|
|
1118
|
+
},
|
|
1119
|
+
},
|
|
358
1120
|
];
|
|
359
1121
|
//# sourceMappingURL=easyiot.js.map
|