@willieee802/zigbee-herdsman-converters 19.44.3 → 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 +3143 -815
- 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/namron.js
CHANGED
|
@@ -56,44 +56,44 @@ const fzLocal = {
|
|
|
56
56
|
const result = {};
|
|
57
57
|
const data = msg.data;
|
|
58
58
|
const isPro = model.model === "4512776/4512777";
|
|
59
|
-
if (data
|
|
59
|
+
if (data.operateDisplayBrightness !== undefined) {
|
|
60
60
|
// OperateDisplayBrightness
|
|
61
61
|
if (isPro) {
|
|
62
|
-
result.display_brightness = data
|
|
62
|
+
result.display_brightness = data.operateDisplayBrightness;
|
|
63
63
|
}
|
|
64
64
|
else {
|
|
65
|
-
result.display_brightnesss = data
|
|
65
|
+
result.display_brightnesss = data.operateDisplayBrightness;
|
|
66
66
|
}
|
|
67
67
|
}
|
|
68
|
-
if (data
|
|
68
|
+
if (data.displayAutoOff !== undefined) {
|
|
69
69
|
// DisplayAutoOffActivation
|
|
70
70
|
if (isPro) {
|
|
71
|
-
result.display_auto_off = data
|
|
71
|
+
result.display_auto_off = data.displayAutoOff === 1;
|
|
72
72
|
}
|
|
73
73
|
else {
|
|
74
74
|
const lookup = { 0: "deactivated", 1: "activated" };
|
|
75
|
-
result.display_auto_off = utils.getFromLookup(data
|
|
75
|
+
result.display_auto_off = utils.getFromLookup(data.displayAutoOff, lookup);
|
|
76
76
|
}
|
|
77
77
|
}
|
|
78
|
-
if (data
|
|
78
|
+
if (data.powerUpStatus !== undefined) {
|
|
79
79
|
// PowerUpStatus (non-PRO only)
|
|
80
80
|
const lookup = { 0: "manual", 1: "last_state" };
|
|
81
|
-
result.power_up_status = utils.getFromLookup(data
|
|
81
|
+
result.power_up_status = utils.getFromLookup(data.powerUpStatus, lookup);
|
|
82
82
|
}
|
|
83
|
-
if (data
|
|
83
|
+
if (data.windowOpenCheck2 !== undefined) {
|
|
84
84
|
// WindowOpenCheck
|
|
85
85
|
if (isPro) {
|
|
86
86
|
// PRO: 0=enable, 1=disable
|
|
87
|
-
result.window_open_detection = data
|
|
87
|
+
result.window_open_detection = data.windowOpenCheck2 === 0;
|
|
88
88
|
}
|
|
89
89
|
else {
|
|
90
90
|
// Non-PRO: According to real life testing 0: disable, 1: enable
|
|
91
|
-
result.window_detection = data
|
|
91
|
+
result.window_detection = data.windowOpenCheck2 === 1;
|
|
92
92
|
}
|
|
93
93
|
}
|
|
94
|
-
if (data
|
|
94
|
+
if (data.hysterersis !== undefined) {
|
|
95
95
|
// Hysteresis
|
|
96
|
-
const value = utils.precisionRound(data
|
|
96
|
+
const value = utils.precisionRound(data.hysterersis, 2) / 10;
|
|
97
97
|
if (isPro) {
|
|
98
98
|
result.hysteresis = value;
|
|
99
99
|
}
|
|
@@ -101,27 +101,27 @@ const fzLocal = {
|
|
|
101
101
|
result.hysterersis = value;
|
|
102
102
|
}
|
|
103
103
|
}
|
|
104
|
-
if (data
|
|
104
|
+
if (data.windowOpen !== undefined) {
|
|
105
105
|
// WindowOpen, 0: Window is not opened, 1: Window is opened
|
|
106
|
-
result.window_open = data
|
|
106
|
+
result.window_open = data.windowOpen === 1;
|
|
107
107
|
}
|
|
108
108
|
// PRO-specific attributes
|
|
109
|
-
if (data
|
|
109
|
+
if (data.controlMethod !== undefined) {
|
|
110
110
|
// System control method: 0=PID, 1=Hysteresis
|
|
111
|
-
result.control_method = data
|
|
111
|
+
result.control_method = data.controlMethod === 0 ? "pid" : "hysteresis";
|
|
112
112
|
}
|
|
113
|
-
if (data
|
|
113
|
+
if (data.adaptiveFunction !== undefined) {
|
|
114
114
|
// Adaptive function AS: 0=Enable, 1=Disable
|
|
115
|
-
result.adaptive_function = data
|
|
115
|
+
result.adaptive_function = data.adaptiveFunction === 0;
|
|
116
116
|
}
|
|
117
|
-
if (data
|
|
118
|
-
result.pid_kp = data
|
|
117
|
+
if (data.pidKp !== undefined) {
|
|
118
|
+
result.pid_kp = data.pidKp / 1000.0;
|
|
119
119
|
}
|
|
120
|
-
if (data
|
|
121
|
-
result.pid_kd = data
|
|
120
|
+
if (data.pidKd !== undefined) {
|
|
121
|
+
result.pid_kd = data.pidKd / 1000.0;
|
|
122
122
|
}
|
|
123
|
-
if (data
|
|
124
|
-
result.pid_ki = data
|
|
123
|
+
if (data.pidKi !== undefined) {
|
|
124
|
+
result.pid_ki = data.pidKi / 1000.0;
|
|
125
125
|
}
|
|
126
126
|
return result;
|
|
127
127
|
},
|
|
@@ -142,6 +142,41 @@ const fzLocal = {
|
|
|
142
142
|
return fz.thermostat.convert(model, msg, publish, options, meta); // as KeyValue;
|
|
143
143
|
},
|
|
144
144
|
},
|
|
145
|
+
namronSimplifyRemote: {
|
|
146
|
+
cluster: "namronPrivateE004",
|
|
147
|
+
type: ["raw"],
|
|
148
|
+
convert(model, msg, publish, _options, meta) {
|
|
149
|
+
const bytes = parseNamronBytes(msg);
|
|
150
|
+
if (bytes.length === 0)
|
|
151
|
+
return;
|
|
152
|
+
const btn = bytes.at(-2);
|
|
153
|
+
const raw = bytes.at(-1);
|
|
154
|
+
if (btn == null || raw == null)
|
|
155
|
+
return;
|
|
156
|
+
const kind = NAMRON_SIMPLIFY_ACTIONS[raw];
|
|
157
|
+
const base = `button_${simplify_col(btn)}_${simplify_sub(btn)}_`;
|
|
158
|
+
// Firmware sometimes sends empty action after hold: synthesize release
|
|
159
|
+
if (!kind) {
|
|
160
|
+
const lastHold = store.getValue(meta.device, HOLD_KEY_SIMPLIFY);
|
|
161
|
+
if (lastHold?.endsWith("_hold")) {
|
|
162
|
+
publish({ action: lastHold.replace("_hold", "_release") });
|
|
163
|
+
store.putValue(meta.device, HOLD_KEY_SIMPLIFY, null);
|
|
164
|
+
}
|
|
165
|
+
return;
|
|
166
|
+
}
|
|
167
|
+
if (kind === "hold") {
|
|
168
|
+
store.putValue(meta.device, HOLD_KEY_SIMPLIFY, `${base}hold`);
|
|
169
|
+
publish({ action: `${base}hold` });
|
|
170
|
+
return;
|
|
171
|
+
}
|
|
172
|
+
if (kind === "release") {
|
|
173
|
+
publish({ action: `${base}press` });
|
|
174
|
+
publish({ action: `${base}release` });
|
|
175
|
+
return;
|
|
176
|
+
}
|
|
177
|
+
publish({ action: `${base}press` });
|
|
178
|
+
},
|
|
179
|
+
},
|
|
145
180
|
};
|
|
146
181
|
// Namron Simplify 3-button remote (4512793 / 4512794)
|
|
147
182
|
// -----------------------------------------------------------
|
|
@@ -154,7 +189,7 @@ const HOLD_KEY_SIMPLIFY = "namron_simplify_lastHold";
|
|
|
154
189
|
const simplify_col = (n) => Math.floor((n - 1) / 2) + 1;
|
|
155
190
|
const simplify_sub = (n) => (n % 2 === 1 ? "up" : "down");
|
|
156
191
|
// Helper to safely parse bytes from msg without any/unknown
|
|
157
|
-
function
|
|
192
|
+
function parseNamronBytes(msg) {
|
|
158
193
|
const m = msg;
|
|
159
194
|
if (m.type === "raw" &&
|
|
160
195
|
m.data &&
|
|
@@ -175,41 +210,6 @@ function parseZosungIRBytes(msg) {
|
|
|
175
210
|
}
|
|
176
211
|
return [];
|
|
177
212
|
}
|
|
178
|
-
const fzNamronSimplifyRemote = {
|
|
179
|
-
cluster: "zosungIRControl",
|
|
180
|
-
type: ["raw"],
|
|
181
|
-
convert(model, msg, publish, _options, meta) {
|
|
182
|
-
const bytes = parseZosungIRBytes(msg);
|
|
183
|
-
if (bytes.length === 0)
|
|
184
|
-
return;
|
|
185
|
-
const btn = bytes.at(-2);
|
|
186
|
-
const raw = bytes.at(-1);
|
|
187
|
-
if (btn == null || raw == null)
|
|
188
|
-
return;
|
|
189
|
-
const kind = NAMRON_SIMPLIFY_ACTIONS[raw];
|
|
190
|
-
const base = `button_${simplify_col(btn)}_${simplify_sub(btn)}_`;
|
|
191
|
-
// Firmware sometimes sends empty action after hold: synthesize release
|
|
192
|
-
if (!kind) {
|
|
193
|
-
const lastHold = store.getValue(meta.device, HOLD_KEY_SIMPLIFY);
|
|
194
|
-
if (lastHold?.endsWith("_hold")) {
|
|
195
|
-
publish({ action: lastHold.replace("_hold", "_release") });
|
|
196
|
-
store.putValue(meta.device, HOLD_KEY_SIMPLIFY, null);
|
|
197
|
-
}
|
|
198
|
-
return;
|
|
199
|
-
}
|
|
200
|
-
if (kind === "hold") {
|
|
201
|
-
store.putValue(meta.device, HOLD_KEY_SIMPLIFY, `${base}hold`);
|
|
202
|
-
publish({ action: `${base}hold` });
|
|
203
|
-
return;
|
|
204
|
-
}
|
|
205
|
-
if (kind === "release") {
|
|
206
|
-
publish({ action: `${base}press` });
|
|
207
|
-
publish({ action: `${base}release` });
|
|
208
|
-
return;
|
|
209
|
-
}
|
|
210
|
-
publish({ action: `${base}press` });
|
|
211
|
-
},
|
|
212
|
-
};
|
|
213
213
|
// END SimplifyBryter
|
|
214
214
|
const tzLocal = {
|
|
215
215
|
namron_panelheater: {
|
|
@@ -241,22 +241,22 @@ const tzLocal = {
|
|
|
241
241
|
convertGet: async (entity, key, meta) => {
|
|
242
242
|
switch (key) {
|
|
243
243
|
case "display_brightnesss":
|
|
244
|
-
await entity.read("hvacThermostat", [
|
|
244
|
+
await entity.read("hvacThermostat", ["operateDisplayBrightness"], sunricherManufacturer);
|
|
245
245
|
break;
|
|
246
246
|
case "display_auto_off":
|
|
247
|
-
await entity.read("hvacThermostat", [
|
|
247
|
+
await entity.read("hvacThermostat", ["displayAutoOff"], sunricherManufacturer);
|
|
248
248
|
break;
|
|
249
249
|
case "power_up_status":
|
|
250
|
-
await entity.read("hvacThermostat", [
|
|
250
|
+
await entity.read("hvacThermostat", ["powerUpStatus"], sunricherManufacturer);
|
|
251
251
|
break;
|
|
252
252
|
case "window_detection":
|
|
253
|
-
await entity.read("hvacThermostat", [
|
|
253
|
+
await entity.read("hvacThermostat", ["windowOpenCheck2"], sunricherManufacturer);
|
|
254
254
|
break;
|
|
255
255
|
case "hysterersis":
|
|
256
|
-
await entity.read("hvacThermostat", [
|
|
256
|
+
await entity.read("hvacThermostat", ["hysterersis"], sunricherManufacturer);
|
|
257
257
|
break;
|
|
258
258
|
case "window_open":
|
|
259
|
-
await entity.read("hvacThermostat", [
|
|
259
|
+
await entity.read("hvacThermostat", ["windowOpen"], sunricherManufacturer);
|
|
260
260
|
break;
|
|
261
261
|
default: // Unknown key
|
|
262
262
|
throw new Error(`Unhandled key toZigbee.namron_panelheater.convertGet ${key}`);
|
|
@@ -276,7 +276,7 @@ const tzLocal = {
|
|
|
276
276
|
return { state: { hysteresis: num } };
|
|
277
277
|
},
|
|
278
278
|
convertGet: async (entity, key, meta) => {
|
|
279
|
-
await entity.read("hvacThermostat", [
|
|
279
|
+
await entity.read("hvacThermostat", ["hysterersis"], sunricherManufacturer);
|
|
280
280
|
},
|
|
281
281
|
},
|
|
282
282
|
namron_panelheater_pro_window_open_detection: {
|
|
@@ -289,7 +289,7 @@ const tzLocal = {
|
|
|
289
289
|
return { state: { window_open_detection: enable } };
|
|
290
290
|
},
|
|
291
291
|
convertGet: async (entity, key, meta) => {
|
|
292
|
-
await entity.read("hvacThermostat", [
|
|
292
|
+
await entity.read("hvacThermostat", ["windowOpenCheck2", "windowOpen"], sunricherManufacturer);
|
|
293
293
|
},
|
|
294
294
|
},
|
|
295
295
|
namron_panelheater_pro_display_auto_off: {
|
|
@@ -301,7 +301,7 @@ const tzLocal = {
|
|
|
301
301
|
return { state: { display_auto_off: enable } };
|
|
302
302
|
},
|
|
303
303
|
convertGet: async (entity, key, meta) => {
|
|
304
|
-
await entity.read("hvacThermostat", [
|
|
304
|
+
await entity.read("hvacThermostat", ["displayAutoOff"], sunricherManufacturer);
|
|
305
305
|
},
|
|
306
306
|
},
|
|
307
307
|
namron_panelheater_pro_control_method: {
|
|
@@ -319,7 +319,7 @@ const tzLocal = {
|
|
|
319
319
|
return { state: { control_method: raw === 0 ? "pid" : "hysteresis" } };
|
|
320
320
|
},
|
|
321
321
|
convertGet: async (entity, key, meta) => {
|
|
322
|
-
await entity.read("hvacThermostat", [
|
|
322
|
+
await entity.read("hvacThermostat", ["controlMethod"], sunricherManufacturer);
|
|
323
323
|
},
|
|
324
324
|
},
|
|
325
325
|
namron_panelheater_pro_adaptive_function: {
|
|
@@ -332,7 +332,7 @@ const tzLocal = {
|
|
|
332
332
|
return { state: { adaptive_function: enable } };
|
|
333
333
|
},
|
|
334
334
|
convertGet: async (entity, key, meta) => {
|
|
335
|
-
await entity.read("hvacThermostat", [
|
|
335
|
+
await entity.read("hvacThermostat", ["adaptiveFunction"], sunricherManufacturer);
|
|
336
336
|
},
|
|
337
337
|
},
|
|
338
338
|
namron_panelheater_pro_pid_kp: {
|
|
@@ -344,7 +344,7 @@ const tzLocal = {
|
|
|
344
344
|
return { state: { pid_kp: num } };
|
|
345
345
|
},
|
|
346
346
|
convertGet: async (entity, key, meta) => {
|
|
347
|
-
await entity.read("hvacThermostat", [
|
|
347
|
+
await entity.read("hvacThermostat", ["pidKp"], sunricherManufacturer);
|
|
348
348
|
},
|
|
349
349
|
},
|
|
350
350
|
namron_panelheater_pro_pid_ki: {
|
|
@@ -356,7 +356,7 @@ const tzLocal = {
|
|
|
356
356
|
return { state: { pid_ki: num } };
|
|
357
357
|
},
|
|
358
358
|
convertGet: async (entity, key, meta) => {
|
|
359
|
-
await entity.read("hvacThermostat", [
|
|
359
|
+
await entity.read("hvacThermostat", ["pidKi"], sunricherManufacturer);
|
|
360
360
|
},
|
|
361
361
|
},
|
|
362
362
|
namron_panelheater_pro_pid_kd: {
|
|
@@ -368,7 +368,7 @@ const tzLocal = {
|
|
|
368
368
|
return { state: { pid_kd: num } };
|
|
369
369
|
},
|
|
370
370
|
convertGet: async (entity, key, meta) => {
|
|
371
|
-
await entity.read("hvacThermostat", [
|
|
371
|
+
await entity.read("hvacThermostat", ["pidKd"], sunricherManufacturer);
|
|
372
372
|
},
|
|
373
373
|
},
|
|
374
374
|
namron_panelheater_pro_state: {
|
|
@@ -877,7 +877,13 @@ exports.definitions = [
|
|
|
877
877
|
model: "4512737/4512738",
|
|
878
878
|
vendor: "Namron",
|
|
879
879
|
description: "Touch thermostat",
|
|
880
|
-
fromZigbee: [
|
|
880
|
+
fromZigbee: [
|
|
881
|
+
fz.thermostat,
|
|
882
|
+
namron.fromZigbee.namron_thermostat,
|
|
883
|
+
fz.metering,
|
|
884
|
+
fz.electrical_measurement,
|
|
885
|
+
namron.fromZigbee.namron_hvac_user_interface,
|
|
886
|
+
],
|
|
881
887
|
toZigbee: [
|
|
882
888
|
tz.thermostat_occupied_heating_setpoint,
|
|
883
889
|
tz.thermostat_unoccupied_heating_setpoint,
|
|
@@ -888,8 +894,8 @@ exports.definitions = [
|
|
|
888
894
|
tz.thermostat_system_mode,
|
|
889
895
|
tz.thermostat_control_sequence_of_operation,
|
|
890
896
|
tz.thermostat_running_state,
|
|
891
|
-
|
|
892
|
-
|
|
897
|
+
namron.toZigbee.namron_thermostat_child_lock,
|
|
898
|
+
namron.toZigbee.namron_thermostat,
|
|
893
899
|
],
|
|
894
900
|
exposes: [
|
|
895
901
|
e.local_temperature(),
|
|
@@ -953,7 +959,7 @@ exports.definitions = [
|
|
|
953
959
|
"0 means this function is disabled, default value is 27."),
|
|
954
960
|
],
|
|
955
961
|
// Device does not asks for the time with binding, therefore we write the time every 24 hours
|
|
956
|
-
extend: [m.writeTimeDaily({ endpointId: 1 })],
|
|
962
|
+
extend: [m.writeTimeDaily({ endpointId: 1 }), namron.namronExtend.addNamronHvacThermostat2Cluster()],
|
|
957
963
|
configure: async (device, coordinatorEndpoint) => {
|
|
958
964
|
const endpoint = device.getEndpoint(1);
|
|
959
965
|
const binds = [
|
|
@@ -984,7 +990,7 @@ exports.definitions = [
|
|
|
984
990
|
// OperateDisplayLcdBrightnesss
|
|
985
991
|
await endpoint.configureReporting("hvacThermostat", [
|
|
986
992
|
{
|
|
987
|
-
attribute:
|
|
993
|
+
attribute: "lcdBrightness",
|
|
988
994
|
minimumReportInterval: 0,
|
|
989
995
|
maximumReportInterval: constants.repInterval.HOUR,
|
|
990
996
|
reportableChange: null,
|
|
@@ -993,7 +999,7 @@ exports.definitions = [
|
|
|
993
999
|
// ButtonVibrationLevel
|
|
994
1000
|
await endpoint.configureReporting("hvacThermostat", [
|
|
995
1001
|
{
|
|
996
|
-
attribute:
|
|
1002
|
+
attribute: "buttonVibrationLevel",
|
|
997
1003
|
minimumReportInterval: 0,
|
|
998
1004
|
maximumReportInterval: constants.repInterval.HOUR,
|
|
999
1005
|
reportableChange: null,
|
|
@@ -1002,7 +1008,7 @@ exports.definitions = [
|
|
|
1002
1008
|
// FloorSensorType
|
|
1003
1009
|
await endpoint.configureReporting("hvacThermostat", [
|
|
1004
1010
|
{
|
|
1005
|
-
attribute:
|
|
1011
|
+
attribute: "floorSensorType",
|
|
1006
1012
|
minimumReportInterval: 0,
|
|
1007
1013
|
maximumReportInterval: constants.repInterval.HOUR,
|
|
1008
1014
|
reportableChange: null,
|
|
@@ -1011,7 +1017,7 @@ exports.definitions = [
|
|
|
1011
1017
|
// ControlType
|
|
1012
1018
|
await endpoint.configureReporting("hvacThermostat", [
|
|
1013
1019
|
{
|
|
1014
|
-
attribute:
|
|
1020
|
+
attribute: "controlType",
|
|
1015
1021
|
minimumReportInterval: 0,
|
|
1016
1022
|
maximumReportInterval: constants.repInterval.HOUR,
|
|
1017
1023
|
reportableChange: null,
|
|
@@ -1020,7 +1026,7 @@ exports.definitions = [
|
|
|
1020
1026
|
// PowerUpStatus
|
|
1021
1027
|
await endpoint.configureReporting("hvacThermostat", [
|
|
1022
1028
|
{
|
|
1023
|
-
attribute:
|
|
1029
|
+
attribute: "powerUpStatus",
|
|
1024
1030
|
minimumReportInterval: 0,
|
|
1025
1031
|
maximumReportInterval: constants.repInterval.HOUR,
|
|
1026
1032
|
reportableChange: null,
|
|
@@ -1029,7 +1035,7 @@ exports.definitions = [
|
|
|
1029
1035
|
// FloorSensorCalibration
|
|
1030
1036
|
await endpoint.configureReporting("hvacThermostat", [
|
|
1031
1037
|
{
|
|
1032
|
-
attribute:
|
|
1038
|
+
attribute: "floorSensorCalibration",
|
|
1033
1039
|
minimumReportInterval: 0,
|
|
1034
1040
|
maximumReportInterval: constants.repInterval.HOUR,
|
|
1035
1041
|
reportableChange: 0,
|
|
@@ -1038,7 +1044,7 @@ exports.definitions = [
|
|
|
1038
1044
|
// DryTime
|
|
1039
1045
|
await endpoint.configureReporting("hvacThermostat", [
|
|
1040
1046
|
{
|
|
1041
|
-
attribute:
|
|
1047
|
+
attribute: "dryTime",
|
|
1042
1048
|
minimumReportInterval: 0,
|
|
1043
1049
|
maximumReportInterval: constants.repInterval.HOUR,
|
|
1044
1050
|
reportableChange: 0,
|
|
@@ -1047,7 +1053,7 @@ exports.definitions = [
|
|
|
1047
1053
|
// ModeAfterDry
|
|
1048
1054
|
await endpoint.configureReporting("hvacThermostat", [
|
|
1049
1055
|
{
|
|
1050
|
-
attribute:
|
|
1056
|
+
attribute: "modeAfterDry",
|
|
1051
1057
|
minimumReportInterval: 0,
|
|
1052
1058
|
maximumReportInterval: constants.repInterval.HOUR,
|
|
1053
1059
|
reportableChange: null,
|
|
@@ -1056,7 +1062,7 @@ exports.definitions = [
|
|
|
1056
1062
|
// TemperatureDisplay
|
|
1057
1063
|
await endpoint.configureReporting("hvacThermostat", [
|
|
1058
1064
|
{
|
|
1059
|
-
attribute:
|
|
1065
|
+
attribute: "temperatureDisplay",
|
|
1060
1066
|
minimumReportInterval: 0,
|
|
1061
1067
|
maximumReportInterval: constants.repInterval.HOUR,
|
|
1062
1068
|
reportableChange: null,
|
|
@@ -1065,7 +1071,7 @@ exports.definitions = [
|
|
|
1065
1071
|
// WindowOpenCheck
|
|
1066
1072
|
await endpoint.configureReporting("hvacThermostat", [
|
|
1067
1073
|
{
|
|
1068
|
-
attribute:
|
|
1074
|
+
attribute: "windowOpenCheck2",
|
|
1069
1075
|
minimumReportInterval: 0,
|
|
1070
1076
|
maximumReportInterval: constants.repInterval.HOUR,
|
|
1071
1077
|
reportableChange: 0,
|
|
@@ -1074,7 +1080,7 @@ exports.definitions = [
|
|
|
1074
1080
|
// Hysterersis
|
|
1075
1081
|
await endpoint.configureReporting("hvacThermostat", [
|
|
1076
1082
|
{
|
|
1077
|
-
attribute:
|
|
1083
|
+
attribute: "hysterersis",
|
|
1078
1084
|
minimumReportInterval: 0,
|
|
1079
1085
|
maximumReportInterval: constants.repInterval.HOUR,
|
|
1080
1086
|
reportableChange: 0,
|
|
@@ -1083,7 +1089,7 @@ exports.definitions = [
|
|
|
1083
1089
|
// DisplayAutoOffEnable
|
|
1084
1090
|
await endpoint.configureReporting("hvacThermostat", [
|
|
1085
1091
|
{
|
|
1086
|
-
attribute:
|
|
1092
|
+
attribute: "displayAutoOffEnable",
|
|
1087
1093
|
minimumReportInterval: 0,
|
|
1088
1094
|
maximumReportInterval: constants.repInterval.HOUR,
|
|
1089
1095
|
reportableChange: null,
|
|
@@ -1092,7 +1098,7 @@ exports.definitions = [
|
|
|
1092
1098
|
// AlarmAirTempOverValue
|
|
1093
1099
|
await endpoint.configureReporting("hvacThermostat", [
|
|
1094
1100
|
{
|
|
1095
|
-
attribute:
|
|
1101
|
+
attribute: "alarmAirTempOverValue",
|
|
1096
1102
|
minimumReportInterval: 0,
|
|
1097
1103
|
maximumReportInterval: constants.repInterval.HOUR,
|
|
1098
1104
|
reportableChange: 0,
|
|
@@ -1101,7 +1107,7 @@ exports.definitions = [
|
|
|
1101
1107
|
// Away Mode Set
|
|
1102
1108
|
await endpoint.configureReporting("hvacThermostat", [
|
|
1103
1109
|
{
|
|
1104
|
-
attribute:
|
|
1110
|
+
attribute: "awayModeSet",
|
|
1105
1111
|
minimumReportInterval: 0,
|
|
1106
1112
|
maximumReportInterval: constants.repInterval.HOUR,
|
|
1107
1113
|
reportableChange: null,
|
|
@@ -1109,10 +1115,10 @@ exports.definitions = [
|
|
|
1109
1115
|
], sunricherManufacturer);
|
|
1110
1116
|
// Trigger initial read
|
|
1111
1117
|
await endpoint.read("hvacThermostat", ["systemMode", "runningState", "occupiedHeatingSetpoint"]);
|
|
1112
|
-
await endpoint.read("hvacThermostat", [
|
|
1113
|
-
await endpoint.read("hvacThermostat", [
|
|
1114
|
-
await endpoint.read("hvacThermostat", [
|
|
1115
|
-
await endpoint.read("hvacThermostat", [
|
|
1118
|
+
await endpoint.read("hvacThermostat", ["lcdBrightness", "buttonVibrationLevel", "floorSensorType", "controlType"], sunricherManufacturer);
|
|
1119
|
+
await endpoint.read("hvacThermostat", ["powerUpStatus", "floorSensorCalibration", "dryTime", "modeAfterDry"], sunricherManufacturer);
|
|
1120
|
+
await endpoint.read("hvacThermostat", ["temperatureDisplay", "windowOpenCheck2", "hysterersis", "displayAutoOffEnable"], sunricherManufacturer);
|
|
1121
|
+
await endpoint.read("hvacThermostat", ["alarmAirTempOverValue", "awayModeSet"], sunricherManufacturer);
|
|
1116
1122
|
},
|
|
1117
1123
|
ota: true,
|
|
1118
1124
|
},
|
|
@@ -1148,8 +1154,9 @@ exports.definitions = [
|
|
|
1148
1154
|
model: "540139X",
|
|
1149
1155
|
vendor: "Namron",
|
|
1150
1156
|
description: "Panel heater 400/600/800/1000 W",
|
|
1157
|
+
extend: [namron.namronExtend.addNamronHvacThermostatCluster()],
|
|
1151
1158
|
ota: true,
|
|
1152
|
-
fromZigbee: [fz.thermostat, fz.metering, fz.electrical_measurement, fzLocal.namron_panelheater,
|
|
1159
|
+
fromZigbee: [fz.thermostat, fz.metering, fz.electrical_measurement, fzLocal.namron_panelheater, namron.fromZigbee.namron_hvac_user_interface],
|
|
1153
1160
|
toZigbee: [
|
|
1154
1161
|
tz.thermostat_occupied_heating_setpoint,
|
|
1155
1162
|
tz.thermostat_local_temperature_calibration,
|
|
@@ -1157,7 +1164,7 @@ exports.definitions = [
|
|
|
1157
1164
|
tz.thermostat_running_state,
|
|
1158
1165
|
tz.thermostat_local_temperature,
|
|
1159
1166
|
tzLocal.namron_panelheater,
|
|
1160
|
-
|
|
1167
|
+
namron.toZigbee.namron_thermostat_child_lock,
|
|
1161
1168
|
],
|
|
1162
1169
|
exposes: [
|
|
1163
1170
|
e.power(),
|
|
@@ -1225,7 +1232,7 @@ exports.definitions = [
|
|
|
1225
1232
|
// display_brightnesss
|
|
1226
1233
|
await endpoint.configureReporting("hvacThermostat", [
|
|
1227
1234
|
{
|
|
1228
|
-
attribute:
|
|
1235
|
+
attribute: "operateDisplayBrightness",
|
|
1229
1236
|
minimumReportInterval: 0,
|
|
1230
1237
|
maximumReportInterval: constants.repInterval.HOUR,
|
|
1231
1238
|
reportableChange: null,
|
|
@@ -1234,7 +1241,7 @@ exports.definitions = [
|
|
|
1234
1241
|
// display_auto_off
|
|
1235
1242
|
await endpoint.configureReporting("hvacThermostat", [
|
|
1236
1243
|
{
|
|
1237
|
-
attribute:
|
|
1244
|
+
attribute: "displayAutoOff",
|
|
1238
1245
|
minimumReportInterval: 0,
|
|
1239
1246
|
maximumReportInterval: constants.repInterval.HOUR,
|
|
1240
1247
|
reportableChange: null,
|
|
@@ -1243,7 +1250,7 @@ exports.definitions = [
|
|
|
1243
1250
|
// power_up_status
|
|
1244
1251
|
await endpoint.configureReporting("hvacThermostat", [
|
|
1245
1252
|
{
|
|
1246
|
-
attribute:
|
|
1253
|
+
attribute: "powerUpStatus",
|
|
1247
1254
|
minimumReportInterval: 0,
|
|
1248
1255
|
maximumReportInterval: constants.repInterval.HOUR,
|
|
1249
1256
|
reportableChange: null,
|
|
@@ -1252,7 +1259,7 @@ exports.definitions = [
|
|
|
1252
1259
|
// window_detection
|
|
1253
1260
|
await endpoint.configureReporting("hvacThermostat", [
|
|
1254
1261
|
{
|
|
1255
|
-
attribute:
|
|
1262
|
+
attribute: "windowOpenCheck2",
|
|
1256
1263
|
minimumReportInterval: 0,
|
|
1257
1264
|
maximumReportInterval: constants.repInterval.HOUR,
|
|
1258
1265
|
reportableChange: null,
|
|
@@ -1261,7 +1268,7 @@ exports.definitions = [
|
|
|
1261
1268
|
// hysterersis
|
|
1262
1269
|
await endpoint.configureReporting("hvacThermostat", [
|
|
1263
1270
|
{
|
|
1264
|
-
attribute:
|
|
1271
|
+
attribute: "hysterersis",
|
|
1265
1272
|
minimumReportInterval: 0,
|
|
1266
1273
|
maximumReportInterval: constants.repInterval.HOUR,
|
|
1267
1274
|
reportableChange: null,
|
|
@@ -1270,7 +1277,7 @@ exports.definitions = [
|
|
|
1270
1277
|
// window_open
|
|
1271
1278
|
await endpoint.configureReporting("hvacThermostat", [
|
|
1272
1279
|
{
|
|
1273
|
-
attribute:
|
|
1280
|
+
attribute: "windowOpen",
|
|
1274
1281
|
minimumReportInterval: 0,
|
|
1275
1282
|
maximumReportInterval: constants.repInterval.HOUR,
|
|
1276
1283
|
reportableChange: null,
|
|
@@ -1278,7 +1285,7 @@ exports.definitions = [
|
|
|
1278
1285
|
], sunricherManufacturer);
|
|
1279
1286
|
await endpoint.read("hvacThermostat", ["systemMode", "runningState", "occupiedHeatingSetpoint"]);
|
|
1280
1287
|
await endpoint.read("hvacUserInterfaceCfg", ["keypadLockout"]);
|
|
1281
|
-
await endpoint.read("hvacThermostat", [
|
|
1288
|
+
await endpoint.read("hvacThermostat", ["operateDisplayBrightness", "displayAutoOff", "powerUpStatus", "windowOpenCheck2", "hysterersis", "windowOpen"], sunricherManufacturer);
|
|
1282
1289
|
await reporting.bind(endpoint, coordinatorEndpoint, binds);
|
|
1283
1290
|
},
|
|
1284
1291
|
},
|
|
@@ -1287,13 +1294,16 @@ exports.definitions = [
|
|
|
1287
1294
|
model: "4512776/4512777",
|
|
1288
1295
|
vendor: "Namron",
|
|
1289
1296
|
description: "Zigbee thermostat for panel heater PRO (white 4512776 / black 4512777)",
|
|
1290
|
-
extend: [
|
|
1291
|
-
|
|
1297
|
+
extend: [
|
|
1298
|
+
namron.namronExtend.addNamronHvacThermostatCluster(),
|
|
1299
|
+
m.electricityMeter({ cluster: "both", energy: { divisor: 10 }, power: false, voltage: false, current: false, configureReporting: false }),
|
|
1300
|
+
],
|
|
1301
|
+
fromZigbee: [fz.thermostat, fzLocal.namron_panelheater, namron.fromZigbee.namron_hvac_user_interface, fz.electrical_measurement],
|
|
1292
1302
|
toZigbee: [
|
|
1293
1303
|
tz.thermostat_occupied_heating_setpoint,
|
|
1294
1304
|
tz.thermostat_local_temperature_calibration,
|
|
1295
1305
|
tz.thermostat_system_mode,
|
|
1296
|
-
|
|
1306
|
+
namron.toZigbee.namron_thermostat_child_lock,
|
|
1297
1307
|
tzLocal.namron_panelheater_pro_state,
|
|
1298
1308
|
tzLocal.namron_panelheater_pro_frost_mode,
|
|
1299
1309
|
tzLocal.namron_panelheater_pro_hysteresis,
|
|
@@ -1339,16 +1349,38 @@ exports.definitions = [
|
|
|
1339
1349
|
.withValueStep(1)
|
|
1340
1350
|
.withDescription("Display brightness (read-only, set on the heater)"),
|
|
1341
1351
|
e.binary("display_auto_off", ea.ALL, true, false).withDescription("Display auto off after 30s without interaction"),
|
|
1352
|
+
e.power(),
|
|
1342
1353
|
],
|
|
1343
1354
|
configure: async (device, coordinatorEndpoint) => {
|
|
1344
1355
|
const endpoint = device.getEndpoint(1);
|
|
1345
|
-
|
|
1356
|
+
// Save energy divisor manually since configureReporting is disabled
|
|
1357
|
+
endpoint.saveClusterAttributeKeyValue("seMetering", { divisor: 10, multiplier: 1 });
|
|
1358
|
+
endpoint.save();
|
|
1359
|
+
await reporting.bind(endpoint, coordinatorEndpoint, [
|
|
1360
|
+
"genBasic",
|
|
1361
|
+
"genIdentify",
|
|
1362
|
+
"hvacThermostat",
|
|
1363
|
+
"hvacUserInterfaceCfg",
|
|
1364
|
+
"seMetering",
|
|
1365
|
+
"haElectricalMeasurement",
|
|
1366
|
+
]);
|
|
1346
1367
|
await reporting.thermostatTemperature(endpoint, { min: 0, change: 50 });
|
|
1347
1368
|
await reporting.thermostatOccupiedHeatingSetpoint(endpoint);
|
|
1348
1369
|
await endpoint.read("hvacThermostat", ["localTemp", "occupiedHeatingSetpoint", "systemMode"]);
|
|
1349
1370
|
// Proprietary attrs including display, window, PID, control_method, adaptive
|
|
1350
1371
|
try {
|
|
1351
|
-
await endpoint.read("hvacThermostat", [
|
|
1372
|
+
await endpoint.read("hvacThermostat", [
|
|
1373
|
+
"operateDisplayBrightness",
|
|
1374
|
+
"displayAutoOff",
|
|
1375
|
+
"windowOpenCheck2",
|
|
1376
|
+
"hysterersis",
|
|
1377
|
+
"windowOpen",
|
|
1378
|
+
"adaptiveFunction",
|
|
1379
|
+
"pidKp",
|
|
1380
|
+
"pidKd",
|
|
1381
|
+
"pidKi",
|
|
1382
|
+
"controlMethod",
|
|
1383
|
+
], sunricherManufacturer);
|
|
1352
1384
|
}
|
|
1353
1385
|
catch {
|
|
1354
1386
|
// Ignore - some attributes may not be supported
|
|
@@ -1359,6 +1391,18 @@ exports.definitions = [
|
|
|
1359
1391
|
catch {
|
|
1360
1392
|
// Ignore
|
|
1361
1393
|
}
|
|
1394
|
+
try {
|
|
1395
|
+
await endpoint.read("haElectricalMeasurement", ["activePower"]);
|
|
1396
|
+
}
|
|
1397
|
+
catch {
|
|
1398
|
+
// Ignore
|
|
1399
|
+
}
|
|
1400
|
+
try {
|
|
1401
|
+
await endpoint.read("seMetering", ["currentSummDelivered"]);
|
|
1402
|
+
}
|
|
1403
|
+
catch {
|
|
1404
|
+
// Ignore
|
|
1405
|
+
}
|
|
1362
1406
|
device.powerSource = "Mains (single phase)";
|
|
1363
1407
|
device.save();
|
|
1364
1408
|
},
|
|
@@ -1432,7 +1476,7 @@ exports.definitions = [
|
|
|
1432
1476
|
vendor: "Namron",
|
|
1433
1477
|
description: "Zigbee thermostat 16A",
|
|
1434
1478
|
whiteLabel: [{ model: "4512759", fingerprint: [{ modelID: "4512759" }] }],
|
|
1435
|
-
fromZigbee: [fzLocal.namron_thermostat2, fz.metering, fz.electrical_measurement,
|
|
1479
|
+
fromZigbee: [fzLocal.namron_thermostat2, fz.metering, fz.electrical_measurement, namron.fromZigbee.namron_hvac_user_interface],
|
|
1436
1480
|
toZigbee: [
|
|
1437
1481
|
{
|
|
1438
1482
|
// map running *mode* to *state*, as that's what used
|
|
@@ -1454,7 +1498,7 @@ exports.definitions = [
|
|
|
1454
1498
|
tz.thermostat_control_sequence_of_operation,
|
|
1455
1499
|
tz.thermostat_system_mode,
|
|
1456
1500
|
tz.thermostat_running_mode,
|
|
1457
|
-
|
|
1501
|
+
namron.toZigbee.namron_thermostat_child_lock,
|
|
1458
1502
|
],
|
|
1459
1503
|
extend: [
|
|
1460
1504
|
m.onOff({ powerOnBehavior: false }),
|
|
@@ -1464,7 +1508,7 @@ exports.definitions = [
|
|
|
1464
1508
|
valueOn: ["ON", 1],
|
|
1465
1509
|
valueOff: ["OFF", 0],
|
|
1466
1510
|
cluster: "hvacThermostat",
|
|
1467
|
-
attribute:
|
|
1511
|
+
attribute: "antiFrost",
|
|
1468
1512
|
description: "Enable or Disable Away/Anti-freeze mode",
|
|
1469
1513
|
}),
|
|
1470
1514
|
m.binary({
|
|
@@ -1472,7 +1516,7 @@ exports.definitions = [
|
|
|
1472
1516
|
valueOn: ["ON", 1],
|
|
1473
1517
|
valueOff: ["OFF", 0],
|
|
1474
1518
|
cluster: "hvacThermostat",
|
|
1475
|
-
attribute:
|
|
1519
|
+
attribute: "windowOpenCheck",
|
|
1476
1520
|
description: "Enable or Disable open window detection",
|
|
1477
1521
|
entityCategory: "config",
|
|
1478
1522
|
}),
|
|
@@ -1481,7 +1525,7 @@ exports.definitions = [
|
|
|
1481
1525
|
valueOn: ["ON", 1],
|
|
1482
1526
|
valueOff: ["OFF", 0],
|
|
1483
1527
|
cluster: "hvacThermostat",
|
|
1484
|
-
attribute:
|
|
1528
|
+
attribute: "windowState",
|
|
1485
1529
|
description: "On if window is currently detected as open",
|
|
1486
1530
|
}),
|
|
1487
1531
|
m.numeric({
|
|
@@ -1491,7 +1535,7 @@ exports.definitions = [
|
|
|
1491
1535
|
valueMax: 100,
|
|
1492
1536
|
valueStep: 10,
|
|
1493
1537
|
cluster: "hvacThermostat",
|
|
1494
|
-
attribute:
|
|
1538
|
+
attribute: "displayActiveBacklight",
|
|
1495
1539
|
description: "Brightness of the display",
|
|
1496
1540
|
entityCategory: "config",
|
|
1497
1541
|
}),
|
|
@@ -1500,7 +1544,7 @@ exports.definitions = [
|
|
|
1500
1544
|
valueOn: ["ON", 1],
|
|
1501
1545
|
valueOff: ["OFF", 0],
|
|
1502
1546
|
cluster: "hvacThermostat",
|
|
1503
|
-
attribute:
|
|
1547
|
+
attribute: "backlightOnoff",
|
|
1504
1548
|
description: "Enable or Disable display light",
|
|
1505
1549
|
entityCategory: "config",
|
|
1506
1550
|
}),
|
|
@@ -1508,7 +1552,7 @@ exports.definitions = [
|
|
|
1508
1552
|
name: "sensor_mode",
|
|
1509
1553
|
lookup: { air: 0, floor: 1, both: 2, percent: 6 },
|
|
1510
1554
|
cluster: "hvacThermostat",
|
|
1511
|
-
attribute:
|
|
1555
|
+
attribute: "sensorMode",
|
|
1512
1556
|
description: "Select which sensor the thermostat uses to control the room",
|
|
1513
1557
|
entityCategory: "config",
|
|
1514
1558
|
}),
|
|
@@ -1539,7 +1583,12 @@ exports.definitions = [
|
|
|
1539
1583
|
await reporting.thermostatKeypadLockMode(endpoint);
|
|
1540
1584
|
// Trigger initial read
|
|
1541
1585
|
await endpoint.read("hvacThermostat", ["systemMode", "runningMode", "occupiedHeatingSetpoint"]);
|
|
1542
|
-
await endpoint.read("hvacThermostat", [
|
|
1586
|
+
await endpoint.read("hvacThermostat", [
|
|
1587
|
+
"windowOpenCheck",
|
|
1588
|
+
"antiFrost",
|
|
1589
|
+
"windowState",
|
|
1590
|
+
"sensorMode",
|
|
1591
|
+
]);
|
|
1543
1592
|
device.powerSource = "Mains (single phase)";
|
|
1544
1593
|
device.save();
|
|
1545
1594
|
},
|
|
@@ -1783,10 +1832,10 @@ exports.definitions = [
|
|
|
1783
1832
|
},
|
|
1784
1833
|
},
|
|
1785
1834
|
{
|
|
1786
|
-
zigbeeModel: ["4512782", "4512781"],
|
|
1787
|
-
model: "4512782",
|
|
1835
|
+
zigbeeModel: ["4512782", "4512781", "4566700", "4566701"],
|
|
1836
|
+
model: "4512782 / 4512781 / 4566700 / 4566701",
|
|
1788
1837
|
vendor: "Namron",
|
|
1789
|
-
description: "
|
|
1838
|
+
description: "Namron Edge Dimmer",
|
|
1790
1839
|
extend: [
|
|
1791
1840
|
m.light({ effect: false, configureReporting: true, powerOnBehavior: false }),
|
|
1792
1841
|
m.electricityMeter({ voltage: false, current: false, configureReporting: true }),
|
|
@@ -1810,7 +1859,7 @@ exports.definitions = [
|
|
|
1810
1859
|
fz.thermostat,
|
|
1811
1860
|
namron.fromZigbee.namron_edge_thermostat_holiday_temp,
|
|
1812
1861
|
namron.fromZigbee.namron_edge_thermostat_vacation_date,
|
|
1813
|
-
|
|
1862
|
+
namron.fromZigbee.namron_hvac_user_interface,
|
|
1814
1863
|
fz.metering,
|
|
1815
1864
|
fz.electrical_measurement,
|
|
1816
1865
|
],
|
|
@@ -1818,7 +1867,7 @@ exports.definitions = [
|
|
|
1818
1867
|
tz.thermostat_local_temperature,
|
|
1819
1868
|
tz.thermostat_occupied_heating_setpoint,
|
|
1820
1869
|
tz.thermostat_unoccupied_heating_setpoint,
|
|
1821
|
-
|
|
1870
|
+
namron.toZigbee.namron_thermostat_child_lock,
|
|
1822
1871
|
tz.thermostat_control_sequence_of_operation,
|
|
1823
1872
|
tz.thermostat_programming_operation_mode,
|
|
1824
1873
|
tz.thermostat_temperature_display_mode,
|
|
@@ -1847,11 +1896,26 @@ exports.definitions = [
|
|
|
1847
1896
|
await reporting.thermostatKeypadLockMode(endpoint);
|
|
1848
1897
|
// Initial read
|
|
1849
1898
|
await endpoint.read("hvacThermostat", ["systemMode", "runningMode", "occupiedHeatingSetpoint"]);
|
|
1850
|
-
await endpoint.read("hvacThermostat", [
|
|
1899
|
+
await endpoint.read("hvacThermostat", [
|
|
1900
|
+
"windowOpenCheck",
|
|
1901
|
+
"antiFrost",
|
|
1902
|
+
"windowState",
|
|
1903
|
+
"workDays",
|
|
1904
|
+
"sensorMode",
|
|
1905
|
+
"summerWinterSwitch",
|
|
1906
|
+
"fault",
|
|
1907
|
+
"displayActiveBacklight",
|
|
1908
|
+
"displayAutoOff2",
|
|
1909
|
+
"autoTime",
|
|
1910
|
+
"boostTimeSet",
|
|
1911
|
+
"boostTimeRemaining",
|
|
1912
|
+
"holidayTempSet",
|
|
1913
|
+
]);
|
|
1851
1914
|
device.powerSource = "Mains (single phase)";
|
|
1852
1915
|
device.save();
|
|
1853
1916
|
},
|
|
1854
1917
|
extend: [
|
|
1918
|
+
namron.namronExtend.addNamronHvacThermostatCluster(),
|
|
1855
1919
|
m.poll({
|
|
1856
1920
|
key: "time",
|
|
1857
1921
|
defaultIntervalSeconds: 60 * 60 * 24,
|
|
@@ -1954,8 +2018,8 @@ exports.definitions = [
|
|
|
1954
2018
|
model: "4512793",
|
|
1955
2019
|
vendor: "Namron",
|
|
1956
2020
|
description: "Simplify 6-button remote with battery",
|
|
1957
|
-
extend: [m.battery()],
|
|
1958
|
-
fromZigbee: [
|
|
2021
|
+
extend: [m.battery(), namron.namronExtend.addCustomClusterNamronPrivateE004()],
|
|
2022
|
+
fromZigbee: [fzLocal.namronSimplifyRemote],
|
|
1959
2023
|
toZigbee: [],
|
|
1960
2024
|
exposes: [
|
|
1961
2025
|
e.action([
|
|
@@ -2000,5 +2064,301 @@ exports.definitions = [
|
|
|
2000
2064
|
exposes.numeric("start_brightness", ea.ALL).withValueMin(1).withValueMax(254).withDescription("Default brightness at power-on/startup"),
|
|
2001
2065
|
],
|
|
2002
2066
|
},
|
|
2067
|
+
{
|
|
2068
|
+
zigbeeModel: ["4512785"],
|
|
2069
|
+
model: "4512785",
|
|
2070
|
+
vendor: "Namron",
|
|
2071
|
+
description: "Zigbee 30A relay with NTC temperature sensors and water leak detection",
|
|
2072
|
+
extend: [
|
|
2073
|
+
m.deviceAddCustomCluster("namronPrivate04E0", {
|
|
2074
|
+
ID: 0x04e0,
|
|
2075
|
+
name: "namronPrivate04E0",
|
|
2076
|
+
attributes: {
|
|
2077
|
+
ntc2Temperature: { ID: 0x0000, name: "ntc2Temperature", type: zigbee_herdsman_1.Zcl.DataType.INT16 },
|
|
2078
|
+
ntcSensorType1: { ID: 0x0001, name: "ntcSensorType1", type: zigbee_herdsman_1.Zcl.DataType.ENUM8, write: true },
|
|
2079
|
+
ntcSensorType2: { ID: 0x0002, name: "ntcSensorType2", type: zigbee_herdsman_1.Zcl.DataType.ENUM8, write: true },
|
|
2080
|
+
waterSensorValue: { ID: 0x0003, name: "waterSensorValue", type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN },
|
|
2081
|
+
ntcCalibration1: { ID: 0x0004, name: "ntcCalibration1", type: zigbee_herdsman_1.Zcl.DataType.INT8, write: true },
|
|
2082
|
+
ntcCalibration2: { ID: 0x0005, name: "ntcCalibration2", type: zigbee_herdsman_1.Zcl.DataType.INT8, write: true },
|
|
2083
|
+
waterAlarmRelayAction: { ID: 0x0006, name: "waterAlarmRelayAction", type: zigbee_herdsman_1.Zcl.DataType.ENUM8, write: true },
|
|
2084
|
+
ntc1OperationSelect: { ID: 0x0007, name: "ntc1OperationSelect", type: zigbee_herdsman_1.Zcl.DataType.ENUM8, write: true },
|
|
2085
|
+
ntc2OperationSelect: { ID: 0x0008, name: "ntc2OperationSelect", type: zigbee_herdsman_1.Zcl.DataType.ENUM8, write: true },
|
|
2086
|
+
ntc1RelayAutoTemp: { ID: 0x0009, name: "ntc1RelayAutoTemp", type: zigbee_herdsman_1.Zcl.DataType.INT16, write: true },
|
|
2087
|
+
ntc2RelayAutoTemp: { ID: 0x000a, name: "ntc2RelayAutoTemp", type: zigbee_herdsman_1.Zcl.DataType.INT16, write: true },
|
|
2088
|
+
overrideOption: { ID: 0x000b, name: "overrideOption", type: zigbee_herdsman_1.Zcl.DataType.ENUM8, write: true },
|
|
2089
|
+
ntc1TempHysteresis: { ID: 0x000c, name: "ntc1TempHysteresis", type: zigbee_herdsman_1.Zcl.DataType.INT8, write: true },
|
|
2090
|
+
ntc2TempHysteresis: { ID: 0x000d, name: "ntc2TempHysteresis", type: zigbee_herdsman_1.Zcl.DataType.INT8, write: true },
|
|
2091
|
+
waterConditionAlarm: { ID: 0x000e, name: "waterConditionAlarm", type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN },
|
|
2092
|
+
ntcConditionAlarm: { ID: 0x000f, name: "ntcConditionAlarm", type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN },
|
|
2093
|
+
isExecuteCondition: { ID: 0x0010, name: "isExecuteCondition", type: zigbee_herdsman_1.Zcl.DataType.BOOLEAN },
|
|
2094
|
+
},
|
|
2095
|
+
commands: {},
|
|
2096
|
+
commandsResponse: {},
|
|
2097
|
+
}),
|
|
2098
|
+
m.onOff({ powerOnBehavior: true }),
|
|
2099
|
+
m.electricityMeter({ voltage: { divisor: 10 }, current: { divisor: 1000 }, power: { divisor: 1 }, energy: { divisor: 100 } }),
|
|
2100
|
+
// Override genDeviceTempCfg to relax currentTemperature max constraint
|
|
2101
|
+
// (device reports in 0.1°C units, e.g. 311 = 31.1°C, exceeding ZCL max of 200)
|
|
2102
|
+
m.deviceAddCustomCluster("genDeviceTempCfg", {
|
|
2103
|
+
ID: 0x0002,
|
|
2104
|
+
name: "genDeviceTempCfg",
|
|
2105
|
+
attributes: {
|
|
2106
|
+
currentTemperature: { ID: 0x0000, name: "currentTemperature", type: zigbee_herdsman_1.Zcl.DataType.INT16, min: -2000, max: 2000 },
|
|
2107
|
+
},
|
|
2108
|
+
commands: {},
|
|
2109
|
+
commandsResponse: {},
|
|
2110
|
+
}),
|
|
2111
|
+
// Device reports currentTemperature in 0.1°C units (non-standard; ZCL spec is °C).
|
|
2112
|
+
// e.g. raw 311 = 31.1°C. change: 10 raw units = 1°C reporting threshold; fzConvert divides by 10.
|
|
2113
|
+
m.numeric({
|
|
2114
|
+
name: "device_temperature",
|
|
2115
|
+
cluster: "genDeviceTempCfg",
|
|
2116
|
+
attribute: "currentTemperature",
|
|
2117
|
+
reporting: { min: 15, max: 600, change: 10 },
|
|
2118
|
+
description: "Internal device temperature",
|
|
2119
|
+
unit: "°C",
|
|
2120
|
+
access: "STATE_GET",
|
|
2121
|
+
entityCategory: "diagnostic",
|
|
2122
|
+
fzConvert: (model, msg) => {
|
|
2123
|
+
if (msg.data.currentTemperature !== undefined) {
|
|
2124
|
+
const raw = msg.data.currentTemperature;
|
|
2125
|
+
if (raw !== -32768 && raw !== 0x8000) {
|
|
2126
|
+
return { device_temperature: utils.precisionRound(raw, 2) / 10 };
|
|
2127
|
+
}
|
|
2128
|
+
}
|
|
2129
|
+
},
|
|
2130
|
+
}),
|
|
2131
|
+
// Device reports measuredValue in 0.01°C units (standard for msTemperatureMeasurement).
|
|
2132
|
+
// e.g. raw 2250 = 22.50°C. change: 10 raw units = 0.1°C reporting threshold; fzConvert divides by 100.
|
|
2133
|
+
m.numeric({
|
|
2134
|
+
name: "ntc1_temperature",
|
|
2135
|
+
cluster: "msTemperatureMeasurement",
|
|
2136
|
+
attribute: "measuredValue",
|
|
2137
|
+
reporting: { min: 15, max: 600, change: 10 },
|
|
2138
|
+
description: "External NTC1 temperature probe",
|
|
2139
|
+
unit: "°C",
|
|
2140
|
+
access: "STATE_GET",
|
|
2141
|
+
fzConvert: (model, msg) => {
|
|
2142
|
+
if (msg.data.measuredValue !== undefined) {
|
|
2143
|
+
const raw = msg.data.measuredValue;
|
|
2144
|
+
if (raw !== -32768 && raw !== 0x8000) {
|
|
2145
|
+
return { ntc1_temperature: utils.precisionRound(raw, 2) / 100 };
|
|
2146
|
+
}
|
|
2147
|
+
}
|
|
2148
|
+
},
|
|
2149
|
+
}),
|
|
2150
|
+
// Device reports ntc2Temperature in 0.01°C units (same as NTC1).
|
|
2151
|
+
// e.g. raw 2350 = 23.50°C. change: 10 raw units = 0.1°C reporting threshold; fzConvert divides by 100.
|
|
2152
|
+
m.numeric({
|
|
2153
|
+
name: "ntc2_temperature",
|
|
2154
|
+
cluster: "namronPrivate04E0",
|
|
2155
|
+
attribute: "ntc2Temperature",
|
|
2156
|
+
reporting: { min: 15, max: 600, change: 10 },
|
|
2157
|
+
description: "External NTC2 temperature probe",
|
|
2158
|
+
unit: "°C",
|
|
2159
|
+
access: "STATE_GET",
|
|
2160
|
+
fzConvert: (model, msg) => {
|
|
2161
|
+
if (msg.data.ntc2Temperature !== undefined) {
|
|
2162
|
+
const raw = msg.data.ntc2Temperature;
|
|
2163
|
+
if (raw !== -32768 && raw !== 0x8000) {
|
|
2164
|
+
return { ntc2_temperature: utils.precisionRound(raw, 2) / 100 };
|
|
2165
|
+
}
|
|
2166
|
+
}
|
|
2167
|
+
},
|
|
2168
|
+
}),
|
|
2169
|
+
// Water sensor (NO contacts: shorted = water detected)
|
|
2170
|
+
m.binary({
|
|
2171
|
+
name: "water_sensor",
|
|
2172
|
+
cluster: "namronPrivate04E0",
|
|
2173
|
+
attribute: "waterSensorValue",
|
|
2174
|
+
description: "External water sensor (true = water detected)",
|
|
2175
|
+
valueOn: [true, 1],
|
|
2176
|
+
valueOff: [false, 0],
|
|
2177
|
+
access: "STATE_GET",
|
|
2178
|
+
reporting: { min: 1, max: 300, change: 1 },
|
|
2179
|
+
}),
|
|
2180
|
+
// NTC sensor type configuration
|
|
2181
|
+
m.enumLookup({
|
|
2182
|
+
name: "ntc1_sensor_type",
|
|
2183
|
+
lookup: { none: 0, "NTC-10K": 1, "NTC-12K": 2, "NTC-15K": 3, "NTC-22K": 4, "NTC-33K": 5, "NTC-47K": 6 },
|
|
2184
|
+
cluster: "namronPrivate04E0",
|
|
2185
|
+
attribute: "ntcSensorType1",
|
|
2186
|
+
description: "NTC probe type for sensor #1 (must be set for temperature reporting)",
|
|
2187
|
+
entityCategory: "config",
|
|
2188
|
+
}),
|
|
2189
|
+
m.enumLookup({
|
|
2190
|
+
name: "ntc2_sensor_type",
|
|
2191
|
+
lookup: { none: 0, "NTC-10K": 1, "NTC-12K": 2, "NTC-15K": 3, "NTC-22K": 4, "NTC-33K": 5, "NTC-47K": 6 },
|
|
2192
|
+
cluster: "namronPrivate04E0",
|
|
2193
|
+
attribute: "ntcSensorType2",
|
|
2194
|
+
description: "NTC probe type for sensor #2 (must be set for temperature reporting)",
|
|
2195
|
+
entityCategory: "config",
|
|
2196
|
+
}),
|
|
2197
|
+
// Water alarm relay action
|
|
2198
|
+
m.enumLookup({
|
|
2199
|
+
name: "water_alarm_relay_action",
|
|
2200
|
+
lookup: {
|
|
2201
|
+
no_action: 0,
|
|
2202
|
+
turn_off_restore: 1,
|
|
2203
|
+
turn_on_restore: 2,
|
|
2204
|
+
turn_off_stay: 3,
|
|
2205
|
+
turn_on_stay: 4,
|
|
2206
|
+
no_water_turn_off: 5,
|
|
2207
|
+
no_water_turn_on: 6,
|
|
2208
|
+
},
|
|
2209
|
+
cluster: "namronPrivate04E0",
|
|
2210
|
+
attribute: "waterAlarmRelayAction",
|
|
2211
|
+
description: "Relay behavior when water sensor detects a leak",
|
|
2212
|
+
entityCategory: "config",
|
|
2213
|
+
}),
|
|
2214
|
+
// NTC operation modes
|
|
2215
|
+
m.enumLookup({
|
|
2216
|
+
name: "ntc1_operation_mode",
|
|
2217
|
+
lookup: { no_action: 0, off_when_hot_on_when_cold: 1, on_when_hot_off_when_cold: 2, off_when_hot_stay: 3, on_when_hot_stay: 4 },
|
|
2218
|
+
cluster: "namronPrivate04E0",
|
|
2219
|
+
attribute: "ntc1OperationSelect",
|
|
2220
|
+
description: "Relay behavior based on NTC1 temperature threshold",
|
|
2221
|
+
entityCategory: "config",
|
|
2222
|
+
}),
|
|
2223
|
+
m.enumLookup({
|
|
2224
|
+
name: "ntc2_operation_mode",
|
|
2225
|
+
lookup: { no_action: 0, off_when_hot_on_when_cold: 1, on_when_hot_off_when_cold: 2, off_when_hot_stay: 3, on_when_hot_stay: 4 },
|
|
2226
|
+
cluster: "namronPrivate04E0",
|
|
2227
|
+
attribute: "ntc2OperationSelect",
|
|
2228
|
+
description: "Relay behavior based on NTC2 temperature threshold",
|
|
2229
|
+
entityCategory: "config",
|
|
2230
|
+
}),
|
|
2231
|
+
// Temperature thresholds for relay auto control
|
|
2232
|
+
m.numeric({
|
|
2233
|
+
name: "ntc1_relay_auto_temp",
|
|
2234
|
+
cluster: "namronPrivate04E0",
|
|
2235
|
+
attribute: "ntc1RelayAutoTemp",
|
|
2236
|
+
description: "Temperature threshold for NTC1 relay control",
|
|
2237
|
+
unit: "°C",
|
|
2238
|
+
valueMin: 0,
|
|
2239
|
+
valueMax: 100,
|
|
2240
|
+
valueStep: 0.1,
|
|
2241
|
+
scale: 10,
|
|
2242
|
+
precision: 1,
|
|
2243
|
+
entityCategory: "config",
|
|
2244
|
+
}),
|
|
2245
|
+
m.numeric({
|
|
2246
|
+
name: "ntc2_relay_auto_temp",
|
|
2247
|
+
cluster: "namronPrivate04E0",
|
|
2248
|
+
attribute: "ntc2RelayAutoTemp",
|
|
2249
|
+
description: "Temperature threshold for NTC2 relay control",
|
|
2250
|
+
unit: "°C",
|
|
2251
|
+
valueMin: 0,
|
|
2252
|
+
valueMax: 100,
|
|
2253
|
+
valueStep: 0.1,
|
|
2254
|
+
scale: 10,
|
|
2255
|
+
precision: 1,
|
|
2256
|
+
entityCategory: "config",
|
|
2257
|
+
}),
|
|
2258
|
+
// Override priority
|
|
2259
|
+
m.enumLookup({
|
|
2260
|
+
name: "override_option",
|
|
2261
|
+
lookup: { no_priority: 0, water_alarm_priority: 1, ntc_priority: 2 },
|
|
2262
|
+
cluster: "namronPrivate04E0",
|
|
2263
|
+
attribute: "overrideOption",
|
|
2264
|
+
description: "Priority when both water alarm and temperature conditions trigger",
|
|
2265
|
+
entityCategory: "config",
|
|
2266
|
+
}),
|
|
2267
|
+
// Calibration offsets
|
|
2268
|
+
m.numeric({
|
|
2269
|
+
name: "ntc1_calibration",
|
|
2270
|
+
cluster: "namronPrivate04E0",
|
|
2271
|
+
attribute: "ntcCalibration1",
|
|
2272
|
+
description: "Temperature calibration offset for NTC1",
|
|
2273
|
+
unit: "°C",
|
|
2274
|
+
valueMin: -10,
|
|
2275
|
+
valueMax: 10,
|
|
2276
|
+
entityCategory: "config",
|
|
2277
|
+
}),
|
|
2278
|
+
m.numeric({
|
|
2279
|
+
name: "ntc2_calibration",
|
|
2280
|
+
cluster: "namronPrivate04E0",
|
|
2281
|
+
attribute: "ntcCalibration2",
|
|
2282
|
+
description: "Temperature calibration offset for NTC2",
|
|
2283
|
+
unit: "°C",
|
|
2284
|
+
valueMin: -10,
|
|
2285
|
+
valueMax: 10,
|
|
2286
|
+
entityCategory: "config",
|
|
2287
|
+
}),
|
|
2288
|
+
// Hysteresis
|
|
2289
|
+
m.numeric({
|
|
2290
|
+
name: "ntc1_temp_hysteresis",
|
|
2291
|
+
cluster: "namronPrivate04E0",
|
|
2292
|
+
attribute: "ntc1TempHysteresis",
|
|
2293
|
+
description: "Temperature hysteresis for NTC1 relay control",
|
|
2294
|
+
unit: "°C",
|
|
2295
|
+
valueMin: -10,
|
|
2296
|
+
valueMax: 10,
|
|
2297
|
+
entityCategory: "config",
|
|
2298
|
+
}),
|
|
2299
|
+
m.numeric({
|
|
2300
|
+
name: "ntc2_temp_hysteresis",
|
|
2301
|
+
cluster: "namronPrivate04E0",
|
|
2302
|
+
attribute: "ntc2TempHysteresis",
|
|
2303
|
+
description: "Temperature hysteresis for NTC2 relay control",
|
|
2304
|
+
unit: "°C",
|
|
2305
|
+
valueMin: -10,
|
|
2306
|
+
valueMax: 10,
|
|
2307
|
+
entityCategory: "config",
|
|
2308
|
+
}),
|
|
2309
|
+
// Condition alarms (read-only status)
|
|
2310
|
+
m.binary({
|
|
2311
|
+
name: "water_condition_alarm",
|
|
2312
|
+
cluster: "namronPrivate04E0",
|
|
2313
|
+
attribute: "waterConditionAlarm",
|
|
2314
|
+
description: "Water leak alarm active",
|
|
2315
|
+
valueOn: [true, 1],
|
|
2316
|
+
valueOff: [false, 0],
|
|
2317
|
+
access: "STATE",
|
|
2318
|
+
}),
|
|
2319
|
+
m.binary({
|
|
2320
|
+
name: "ntc_condition_alarm",
|
|
2321
|
+
cluster: "namronPrivate04E0",
|
|
2322
|
+
attribute: "ntcConditionAlarm",
|
|
2323
|
+
description: "NTC temperature alarm active",
|
|
2324
|
+
valueOn: [true, 1],
|
|
2325
|
+
valueOff: [false, 0],
|
|
2326
|
+
access: "STATE",
|
|
2327
|
+
}),
|
|
2328
|
+
m.binary({
|
|
2329
|
+
name: "is_execute_condition",
|
|
2330
|
+
cluster: "namronPrivate04E0",
|
|
2331
|
+
attribute: "isExecuteCondition",
|
|
2332
|
+
description: "Relay action triggered by conditions",
|
|
2333
|
+
valueOn: [true, 1],
|
|
2334
|
+
valueOff: [false, 0],
|
|
2335
|
+
access: "STATE",
|
|
2336
|
+
}),
|
|
2337
|
+
// Polling (5 min interval)
|
|
2338
|
+
m.poll({
|
|
2339
|
+
key: "namron_4512785_poll",
|
|
2340
|
+
optionKey: "temperature_poll_interval",
|
|
2341
|
+
option: e
|
|
2342
|
+
.numeric("temperature_poll_interval", ea.SET)
|
|
2343
|
+
.withValueMin(-1)
|
|
2344
|
+
.withDescription("Polling interval for NTC temperature sensors (default: 300s, -1 to disable)"),
|
|
2345
|
+
defaultIntervalSeconds: 300,
|
|
2346
|
+
poll: async (device) => {
|
|
2347
|
+
const ep = device.getEndpoint(1);
|
|
2348
|
+
if (!ep)
|
|
2349
|
+
return;
|
|
2350
|
+
await ep.read("genOnOff", ["onOff"]);
|
|
2351
|
+
await ep.read("msTemperatureMeasurement", ["measuredValue"]);
|
|
2352
|
+
await ep.read("namronPrivate04E0", [
|
|
2353
|
+
"ntc2Temperature",
|
|
2354
|
+
"waterSensorValue",
|
|
2355
|
+
"waterConditionAlarm",
|
|
2356
|
+
"ntcConditionAlarm",
|
|
2357
|
+
"isExecuteCondition",
|
|
2358
|
+
]);
|
|
2359
|
+
},
|
|
2360
|
+
}),
|
|
2361
|
+
],
|
|
2362
|
+
},
|
|
2003
2363
|
];
|
|
2004
2364
|
//# sourceMappingURL=namron.js.map
|