@smarthome.exchange/integrations 1.0.0 → 3.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/changelog.md +84 -0
- package/dist_ts/00_commitinfo_data.js +1 -1
- package/dist_ts/core/classes.configstore.d.ts +2 -0
- package/dist_ts/core/classes.configstore.js +84 -27
- package/dist_ts/core/classes.nativehomeadmission.d.ts +19 -0
- package/dist_ts/core/classes.nativehomeadmission.js +84 -0
- package/dist_ts/core/classes.nativeintegrationowner.d.ts +81 -0
- package/dist_ts/core/classes.nativeintegrationowner.js +273 -0
- package/dist_ts/core/classes.runtimemanager.d.ts +2 -0
- package/dist_ts/core/classes.runtimemanager.js +11 -3
- package/dist_ts/core/index.d.ts +2 -0
- package/dist_ts/core/index.js +3 -1
- package/dist_ts/core/types.d.ts +16 -0
- package/dist_ts/integrations/braviatv/braviatv.classes.client.d.ts +23 -72
- package/dist_ts/integrations/braviatv/braviatv.classes.client.js +265 -625
- package/dist_ts/integrations/braviatv/braviatv.classes.configflow.d.ts +7 -7
- package/dist_ts/integrations/braviatv/braviatv.classes.configflow.js +51 -68
- package/dist_ts/integrations/braviatv/braviatv.classes.integration.d.ts +8 -11
- package/dist_ts/integrations/braviatv/braviatv.classes.integration.js +186 -135
- package/dist_ts/integrations/braviatv/braviatv.discovery.js +12 -11
- package/dist_ts/integrations/braviatv/braviatv.mapper.d.ts +6 -14
- package/dist_ts/integrations/braviatv/braviatv.mapper.js +37 -131
- package/dist_ts/integrations/braviatv/braviatv.types.d.ts +55 -133
- package/dist_ts/integrations/braviatv/braviatv.validation.d.ts +7 -0
- package/dist_ts/integrations/braviatv/braviatv.validation.js +72 -0
- package/dist_ts/integrations/broadlink/broadlink.actions.d.ts +2 -0
- package/dist_ts/integrations/broadlink/broadlink.actions.js +36 -0
- package/dist_ts/integrations/broadlink/broadlink.classes.client.d.ts +21 -19
- package/dist_ts/integrations/broadlink/broadlink.classes.client.js +185 -124
- package/dist_ts/integrations/broadlink/broadlink.classes.configflow.d.ts +5 -4
- package/dist_ts/integrations/broadlink/broadlink.classes.configflow.js +64 -83
- package/dist_ts/integrations/broadlink/broadlink.classes.integration.d.ts +16 -19
- package/dist_ts/integrations/broadlink/broadlink.classes.integration.js +114 -59
- package/dist_ts/integrations/broadlink/broadlink.mapper.d.ts +3 -2
- package/dist_ts/integrations/broadlink/broadlink.mapper.js +2 -1
- package/dist_ts/integrations/broadlink/broadlink.selected.mapper.d.ts +10 -0
- package/dist_ts/integrations/broadlink/broadlink.selected.mapper.js +41 -0
- package/dist_ts/integrations/broadlink/broadlink.types.d.ts +43 -7
- package/dist_ts/integrations/broadlink/broadlink.validation.d.ts +7 -0
- package/dist_ts/integrations/broadlink/broadlink.validation.js +63 -0
- package/dist_ts/integrations/daikin/daikin.classes.client.d.ts +10 -52
- package/dist_ts/integrations/daikin/daikin.classes.client.js +55 -614
- package/dist_ts/integrations/daikin/daikin.classes.configflow.d.ts +8 -12
- package/dist_ts/integrations/daikin/daikin.classes.configflow.js +77 -138
- package/dist_ts/integrations/daikin/daikin.classes.integration.d.ts +7 -24
- package/dist_ts/integrations/daikin/daikin.classes.integration.js +175 -67
- package/dist_ts/integrations/daikin/daikin.discovery.d.ts +11 -24
- package/dist_ts/integrations/daikin/daikin.discovery.js +98 -305
- package/dist_ts/integrations/daikin/daikin.mapper.d.ts +6 -7
- package/dist_ts/integrations/daikin/daikin.mapper.js +95 -155
- package/dist_ts/integrations/daikin/daikin.types.d.ts +24 -44
- package/dist_ts/integrations/daikin/daikin.types.js +1 -1
- package/dist_ts/integrations/daikin/daikin.validation.d.ts +5 -0
- package/dist_ts/integrations/daikin/daikin.validation.js +53 -0
- package/dist_ts/integrations/deconz/deconz.classes.client.d.ts +37 -29
- package/dist_ts/integrations/deconz/deconz.classes.client.js +521 -294
- package/dist_ts/integrations/deconz/deconz.classes.configflow.d.ts +6 -1
- package/dist_ts/integrations/deconz/deconz.classes.configflow.js +63 -33
- package/dist_ts/integrations/deconz/deconz.classes.integration.d.ts +4 -3
- package/dist_ts/integrations/deconz/deconz.classes.integration.js +85 -40
- package/dist_ts/integrations/deconz/deconz.mapper.d.ts +1 -0
- package/dist_ts/integrations/deconz/deconz.mapper.js +24 -6
- package/dist_ts/integrations/deconz/deconz.types.d.ts +43 -6
- package/dist_ts/integrations/deconz/deconz.validation.d.ts +7 -1
- package/dist_ts/integrations/deconz/deconz.validation.js +215 -4
- package/dist_ts/integrations/denonavr/denonavr.classes.client.d.ts +31 -40
- package/dist_ts/integrations/denonavr/denonavr.classes.client.js +149 -404
- package/dist_ts/integrations/denonavr/denonavr.classes.configflow.d.ts +7 -2
- package/dist_ts/integrations/denonavr/denonavr.classes.configflow.js +44 -36
- package/dist_ts/integrations/denonavr/denonavr.classes.integration.d.ts +6 -11
- package/dist_ts/integrations/denonavr/denonavr.classes.integration.js +192 -113
- package/dist_ts/integrations/denonavr/denonavr.discovery.d.ts +10 -18
- package/dist_ts/integrations/denonavr/denonavr.discovery.js +71 -193
- package/dist_ts/integrations/denonavr/denonavr.mapper.d.ts +5 -13
- package/dist_ts/integrations/denonavr/denonavr.mapper.js +35 -159
- package/dist_ts/integrations/denonavr/denonavr.types.d.ts +55 -90
- package/dist_ts/integrations/denonavr/denonavr.validation.d.ts +10 -0
- package/dist_ts/integrations/denonavr/denonavr.validation.js +86 -0
- package/dist_ts/integrations/esphome/esphome.classes.client.d.ts +19 -7
- package/dist_ts/integrations/esphome/esphome.classes.client.js +183 -89
- package/dist_ts/integrations/esphome/esphome.classes.configflow.d.ts +5 -2
- package/dist_ts/integrations/esphome/esphome.classes.configflow.js +43 -33
- package/dist_ts/integrations/esphome/esphome.classes.integration.d.ts +8 -6
- package/dist_ts/integrations/esphome/esphome.classes.integration.js +71 -43
- package/dist_ts/integrations/esphome/esphome.discovery.js +4 -12
- package/dist_ts/integrations/esphome/esphome.mapper.d.ts +2 -2
- package/dist_ts/integrations/esphome/esphome.mapper.js +6 -4
- package/dist_ts/integrations/esphome/esphome.types.d.ts +31 -6
- package/dist_ts/integrations/esphome/esphome.types.js +1 -1
- package/dist_ts/integrations/esphome/esphome.validation.d.ts +7 -0
- package/dist_ts/integrations/esphome/esphome.validation.js +66 -0
- package/dist_ts/integrations/homeassistant/homeassistant.classes.client.d.ts +32 -4
- package/dist_ts/integrations/homeassistant/homeassistant.classes.client.js +345 -116
- package/dist_ts/integrations/homeassistant/homeassistant.classes.integration.d.ts +8 -5
- package/dist_ts/integrations/homeassistant/homeassistant.classes.integration.js +34 -8
- package/dist_ts/integrations/homeassistant/homeassistant.classes.runtime.d.ts +7 -4
- package/dist_ts/integrations/homeassistant/homeassistant.classes.runtime.js +44 -56
- package/dist_ts/integrations/homeassistant/homeassistant.types.d.ts +12 -1
- package/dist_ts/integrations/hue/hue.classes.client.d.ts +6 -1
- package/dist_ts/integrations/hue/hue.classes.client.js +120 -45
- package/dist_ts/integrations/hue/hue.classes.configflow.js +16 -7
- package/dist_ts/integrations/hue/hue.classes.integration.d.ts +2 -0
- package/dist_ts/integrations/hue/hue.classes.integration.js +103 -30
- package/dist_ts/integrations/hue/hue.validation.d.ts +1 -0
- package/dist_ts/integrations/hue/hue.validation.js +14 -4
- package/dist_ts/integrations/kodi/kodi.classes.client.d.ts +11 -45
- package/dist_ts/integrations/kodi/kodi.classes.client.js +84 -310
- package/dist_ts/integrations/kodi/kodi.classes.configflow.d.ts +9 -8
- package/dist_ts/integrations/kodi/kodi.classes.configflow.js +53 -48
- package/dist_ts/integrations/kodi/kodi.classes.integration.d.ts +11 -11
- package/dist_ts/integrations/kodi/kodi.classes.integration.js +114 -171
- package/dist_ts/integrations/kodi/kodi.discovery.js +53 -29
- package/dist_ts/integrations/kodi/kodi.mapper.d.ts +7 -2
- package/dist_ts/integrations/kodi/kodi.mapper.js +48 -10
- package/dist_ts/integrations/kodi/kodi.types.d.ts +32 -28
- package/dist_ts/integrations/kodi/kodi.validation.d.ts +9 -0
- package/dist_ts/integrations/kodi/kodi.validation.js +62 -0
- package/dist_ts/integrations/modbus/modbus.classes.client.d.ts +15 -61
- package/dist_ts/integrations/modbus/modbus.classes.client.js +117 -776
- package/dist_ts/integrations/modbus/modbus.classes.configflow.d.ts +9 -5
- package/dist_ts/integrations/modbus/modbus.classes.configflow.js +70 -38
- package/dist_ts/integrations/modbus/modbus.classes.integration.d.ts +6 -17
- package/dist_ts/integrations/modbus/modbus.classes.integration.js +133 -57
- package/dist_ts/integrations/modbus/modbus.discovery.d.ts +5 -8
- package/dist_ts/integrations/modbus/modbus.discovery.js +38 -93
- package/dist_ts/integrations/modbus/modbus.mapper.d.ts +8 -32
- package/dist_ts/integrations/modbus/modbus.mapper.js +71 -431
- package/dist_ts/integrations/modbus/modbus.types.d.ts +82 -332
- package/dist_ts/integrations/modbus/modbus.validation.d.ts +10 -0
- package/dist_ts/integrations/modbus/modbus.validation.js +128 -0
- package/dist_ts/integrations/mqtt/mqtt.classes.client.d.ts +15 -2
- package/dist_ts/integrations/mqtt/mqtt.classes.client.js +173 -23
- package/dist_ts/integrations/mqtt/mqtt.classes.configflow.d.ts +5 -1
- package/dist_ts/integrations/mqtt/mqtt.classes.configflow.js +53 -33
- package/dist_ts/integrations/mqtt/mqtt.classes.integration.d.ts +4 -1
- package/dist_ts/integrations/mqtt/mqtt.classes.integration.js +127 -56
- package/dist_ts/integrations/mqtt/mqtt.classes.session.d.ts +13 -0
- package/dist_ts/integrations/mqtt/mqtt.classes.session.js +130 -0
- package/dist_ts/integrations/mqtt/mqtt.mapper.d.ts +3 -0
- package/dist_ts/integrations/mqtt/mqtt.mapper.js +44 -1
- package/dist_ts/integrations/mqtt/mqtt.types.d.ts +46 -0
- package/dist_ts/integrations/mqtt/mqtt.validation.d.ts +7 -0
- package/dist_ts/integrations/mqtt/mqtt.validation.js +180 -0
- package/dist_ts/integrations/nanoleaf/nanoleaf.classes.client.d.ts +12 -34
- package/dist_ts/integrations/nanoleaf/nanoleaf.classes.client.js +143 -231
- package/dist_ts/integrations/nanoleaf/nanoleaf.classes.configflow.d.ts +6 -1
- package/dist_ts/integrations/nanoleaf/nanoleaf.classes.configflow.js +105 -18
- package/dist_ts/integrations/nanoleaf/nanoleaf.classes.integration.d.ts +8 -8
- package/dist_ts/integrations/nanoleaf/nanoleaf.classes.integration.js +141 -155
- package/dist_ts/integrations/nanoleaf/nanoleaf.credentials.d.ts +9 -0
- package/dist_ts/integrations/nanoleaf/nanoleaf.credentials.js +35 -0
- package/dist_ts/integrations/nanoleaf/nanoleaf.mapper.d.ts +6 -18
- package/dist_ts/integrations/nanoleaf/nanoleaf.mapper.js +45 -220
- package/dist_ts/integrations/nanoleaf/nanoleaf.types.d.ts +33 -147
- package/dist_ts/integrations/nanoleaf/nanoleaf.validation.d.ts +6 -0
- package/dist_ts/integrations/nanoleaf/nanoleaf.validation.js +82 -0
- package/dist_ts/integrations/onkyo/onkyo.classes.client.d.ts +15 -20
- package/dist_ts/integrations/onkyo/onkyo.classes.client.js +161 -404
- package/dist_ts/integrations/onkyo/onkyo.classes.configflow.d.ts +9 -4
- package/dist_ts/integrations/onkyo/onkyo.classes.configflow.js +51 -6
- package/dist_ts/integrations/onkyo/onkyo.classes.integration.d.ts +22 -6
- package/dist_ts/integrations/onkyo/onkyo.classes.integration.js +144 -11
- package/dist_ts/integrations/onkyo/onkyo.discovery.d.ts +6 -1
- package/dist_ts/integrations/onkyo/onkyo.discovery.js +40 -4
- package/dist_ts/integrations/onkyo/onkyo.mapper.d.ts +7 -8
- package/dist_ts/integrations/onkyo/onkyo.mapper.js +45 -12
- package/dist_ts/integrations/onkyo/onkyo.types.d.ts +58 -8
- package/dist_ts/integrations/onkyo/onkyo.types.js +13 -102
- package/dist_ts/integrations/onkyo/onkyo.validation.d.ts +16 -0
- package/dist_ts/integrations/onkyo/onkyo.validation.js +77 -0
- package/dist_ts/integrations/panasonic_viera/panasonic_viera.classes.client.d.ts +25 -25
- package/dist_ts/integrations/panasonic_viera/panasonic_viera.classes.client.js +116 -360
- package/dist_ts/integrations/panasonic_viera/panasonic_viera.classes.configflow.d.ts +11 -3
- package/dist_ts/integrations/panasonic_viera/panasonic_viera.classes.configflow.js +76 -6
- package/dist_ts/integrations/panasonic_viera/panasonic_viera.classes.integration.d.ts +26 -4
- package/dist_ts/integrations/panasonic_viera/panasonic_viera.classes.integration.js +142 -9
- package/dist_ts/integrations/panasonic_viera/panasonic_viera.discovery.d.ts +2 -1
- package/dist_ts/integrations/panasonic_viera/panasonic_viera.discovery.js +31 -4
- package/dist_ts/integrations/panasonic_viera/panasonic_viera.mapper.d.ts +9 -9
- package/dist_ts/integrations/panasonic_viera/panasonic_viera.mapper.js +31 -149
- package/dist_ts/integrations/panasonic_viera/panasonic_viera.types.d.ts +51 -11
- package/dist_ts/integrations/panasonic_viera/panasonic_viera.types.js +22 -87
- package/dist_ts/integrations/panasonic_viera/panasonic_viera.validation.d.ts +6 -0
- package/dist_ts/integrations/panasonic_viera/panasonic_viera.validation.js +56 -0
- package/dist_ts/integrations/pioneer/pioneer.classes.client.d.ts +31 -16
- package/dist_ts/integrations/pioneer/pioneer.classes.client.js +167 -409
- package/dist_ts/integrations/pioneer/pioneer.classes.configflow.d.ts +10 -3
- package/dist_ts/integrations/pioneer/pioneer.classes.configflow.js +66 -6
- package/dist_ts/integrations/pioneer/pioneer.classes.integration.d.ts +13 -5
- package/dist_ts/integrations/pioneer/pioneer.classes.integration.js +239 -11
- package/dist_ts/integrations/pioneer/pioneer.discovery.d.ts +14 -1
- package/dist_ts/integrations/pioneer/pioneer.discovery.js +51 -4
- package/dist_ts/integrations/pioneer/pioneer.mapper.d.ts +14 -8
- package/dist_ts/integrations/pioneer/pioneer.mapper.js +54 -12
- package/dist_ts/integrations/pioneer/pioneer.types.d.ts +79 -12
- package/dist_ts/integrations/pioneer/pioneer.types.js +12 -76
- package/dist_ts/integrations/pioneer/pioneer.validation.d.ts +10 -0
- package/dist_ts/integrations/pioneer/pioneer.validation.js +85 -0
- package/dist_ts/integrations/samsungtv/samsungtv.classes.client.d.ts +4 -2
- package/dist_ts/integrations/samsungtv/samsungtv.classes.client.js +41 -16
- package/dist_ts/integrations/samsungtv/samsungtv.classes.configflow.d.ts +5 -0
- package/dist_ts/integrations/samsungtv/samsungtv.classes.configflow.js +20 -7
- package/dist_ts/integrations/samsungtv/samsungtv.classes.integration.d.ts +1 -0
- package/dist_ts/integrations/samsungtv/samsungtv.classes.integration.js +53 -50
- package/dist_ts/integrations/samsungtv/samsungtv.types.d.ts +4 -1
- package/dist_ts/integrations/shelly/shelly.classes.client.d.ts +26 -30
- package/dist_ts/integrations/shelly/shelly.classes.client.js +504 -276
- package/dist_ts/integrations/shelly/shelly.classes.configflow.d.ts +8 -3
- package/dist_ts/integrations/shelly/shelly.classes.configflow.js +43 -38
- package/dist_ts/integrations/shelly/shelly.classes.integration.d.ts +6 -6
- package/dist_ts/integrations/shelly/shelly.classes.integration.js +103 -101
- package/dist_ts/integrations/shelly/shelly.classes.subscription.d.ts +4 -0
- package/dist_ts/integrations/shelly/shelly.classes.subscription.js +24 -2
- package/dist_ts/integrations/shelly/shelly.mapper.d.ts +1 -2
- package/dist_ts/integrations/shelly/shelly.mapper.js +21 -20
- package/dist_ts/integrations/shelly/shelly.rpc.js +4 -1
- package/dist_ts/integrations/shelly/shelly.types.d.ts +42 -2
- package/dist_ts/integrations/shelly/shelly.types.js +11 -2
- package/dist_ts/integrations/shelly/shelly.validation.d.ts +7 -0
- package/dist_ts/integrations/shelly/shelly.validation.js +79 -0
- package/dist_ts/integrations/sonos/sonos.classes.client.d.ts +79 -22
- package/dist_ts/integrations/sonos/sonos.classes.client.js +427 -139
- package/dist_ts/integrations/sonos/sonos.classes.configflow.d.ts +9 -2
- package/dist_ts/integrations/sonos/sonos.classes.configflow.js +26 -28
- package/dist_ts/integrations/sonos/sonos.classes.integration.d.ts +7 -6
- package/dist_ts/integrations/sonos/sonos.classes.integration.js +289 -224
- package/dist_ts/integrations/sonos/sonos.config.d.ts +6 -1
- package/dist_ts/integrations/sonos/sonos.config.js +23 -2
- package/dist_ts/integrations/sonos/sonos.mapper.d.ts +1 -1
- package/dist_ts/integrations/sonos/sonos.mapper.js +14 -9
- package/dist_ts/integrations/sonos/sonos.matchers.js +3 -3
- package/dist_ts/integrations/sonos/sonos.types.d.ts +26 -1
- package/dist_ts/integrations/soundtouch/soundtouch.classes.client.d.ts +13 -36
- package/dist_ts/integrations/soundtouch/soundtouch.classes.client.js +179 -502
- package/dist_ts/integrations/soundtouch/soundtouch.classes.configflow.d.ts +6 -1
- package/dist_ts/integrations/soundtouch/soundtouch.classes.configflow.js +50 -40
- package/dist_ts/integrations/soundtouch/soundtouch.classes.integration.d.ts +14 -15
- package/dist_ts/integrations/soundtouch/soundtouch.classes.integration.js +108 -128
- package/dist_ts/integrations/soundtouch/soundtouch.discovery.d.ts +2 -20
- package/dist_ts/integrations/soundtouch/soundtouch.discovery.js +23 -113
- package/dist_ts/integrations/soundtouch/soundtouch.mapper.d.ts +3 -12
- package/dist_ts/integrations/soundtouch/soundtouch.mapper.js +35 -189
- package/dist_ts/integrations/soundtouch/soundtouch.types.d.ts +57 -142
- package/dist_ts/integrations/soundtouch/soundtouch.types.js +18 -3
- package/dist_ts/integrations/soundtouch/soundtouch.validation.d.ts +22 -0
- package/dist_ts/integrations/soundtouch/soundtouch.validation.js +65 -0
- package/dist_ts/integrations/tasmota/tasmota.classes.integration.d.ts +5 -0
- package/dist_ts/integrations/tasmota/tasmota.classes.integration.js +23 -7
- package/dist_ts/integrations/tasmota/tasmota.classes.runtime.d.ts +19 -5
- package/dist_ts/integrations/tasmota/tasmota.classes.runtime.js +115 -41
- package/dist_ts/integrations/tasmota/tasmota.config.js +23 -1
- package/dist_ts/integrations/tasmota/tasmota.credentials.d.ts +11 -0
- package/dist_ts/integrations/tasmota/tasmota.credentials.js +97 -0
- package/dist_ts/integrations/tasmota/tasmota.discovery.d.ts +7 -1
- package/dist_ts/integrations/tasmota/tasmota.discovery.js +108 -30
- package/dist_ts/integrations/tasmota/tasmota.mapper.d.ts +2 -2
- package/dist_ts/integrations/tasmota/tasmota.mapper.js +7 -7
- package/dist_ts/integrations/tasmota/tasmota.types.d.ts +41 -2
- package/dist_ts/integrations/tuya/tuya.classes.integration.d.ts +4 -1
- package/dist_ts/integrations/tuya/tuya.classes.integration.js +79 -110
- package/dist_ts/integrations/tuya/tuya.classes.runtime.d.ts +5 -2
- package/dist_ts/integrations/tuya/tuya.classes.runtime.js +73 -26
- package/dist_ts/integrations/tuya/tuya.mapper.js +2 -2
- package/dist_ts/integrations/tuya/tuya.types.d.ts +3 -0
- package/dist_ts/integrations/tuya/tuya.validation.d.ts +2 -2
- package/dist_ts/integrations/tuya/tuya.validation.js +6 -11
- package/dist_ts/integrations/webostv/webostv.classes.client.d.ts +6 -5
- package/dist_ts/integrations/webostv/webostv.classes.client.js +147 -76
- package/dist_ts/integrations/webostv/webostv.classes.configflow.d.ts +7 -2
- package/dist_ts/integrations/webostv/webostv.classes.configflow.js +36 -20
- package/dist_ts/integrations/webostv/webostv.classes.integration.d.ts +4 -4
- package/dist_ts/integrations/webostv/webostv.classes.integration.js +46 -54
- package/dist_ts/integrations/webostv/webostv.mapper.js +5 -5
- package/dist_ts/integrations/webostv/webostv.types.d.ts +16 -3
- package/dist_ts/integrations/webostv/webostv.types.js +1 -1
- package/dist_ts/integrations/webostv/webostv.validation.d.ts +3 -1
- package/dist_ts/integrations/webostv/webostv.validation.js +23 -1
- package/dist_ts/integrations/wiz/index.d.ts +1 -0
- package/dist_ts/integrations/wiz/index.js +2 -1
- package/dist_ts/integrations/wiz/wiz.classes.client.d.ts +14 -28
- package/dist_ts/integrations/wiz/wiz.classes.client.js +93 -229
- package/dist_ts/integrations/wiz/wiz.classes.configflow.d.ts +6 -4
- package/dist_ts/integrations/wiz/wiz.classes.configflow.js +38 -67
- package/dist_ts/integrations/wiz/wiz.classes.integration.d.ts +10 -21
- package/dist_ts/integrations/wiz/wiz.classes.integration.js +204 -44
- package/dist_ts/integrations/wiz/wiz.discovery.d.ts +10 -31
- package/dist_ts/integrations/wiz/wiz.discovery.js +48 -249
- package/dist_ts/integrations/wiz/wiz.mapper.d.ts +7 -51
- package/dist_ts/integrations/wiz/wiz.mapper.js +82 -668
- package/dist_ts/integrations/wiz/wiz.types.d.ts +34 -208
- package/dist_ts/integrations/wiz/wiz.validation.d.ts +8 -0
- package/dist_ts/integrations/wiz/wiz.validation.js +72 -0
- package/dist_ts/integrations/yamaha/index.d.ts +1 -0
- package/dist_ts/integrations/yamaha/index.js +2 -1
- package/dist_ts/integrations/yamaha/yamaha.classes.client.d.ts +30 -4
- package/dist_ts/integrations/yamaha/yamaha.classes.client.js +162 -6
- package/dist_ts/integrations/yamaha/yamaha.classes.configflow.d.ts +10 -3
- package/dist_ts/integrations/yamaha/yamaha.classes.configflow.js +106 -6
- package/dist_ts/integrations/yamaha/yamaha.classes.integration.d.ts +22 -4
- package/dist_ts/integrations/yamaha/yamaha.classes.integration.js +243 -8
- package/dist_ts/integrations/yamaha/yamaha.discovery.d.ts +13 -1
- package/dist_ts/integrations/yamaha/yamaha.discovery.js +57 -4
- package/dist_ts/integrations/yamaha/yamaha.mapper.d.ts +16 -8
- package/dist_ts/integrations/yamaha/yamaha.mapper.js +58 -12
- package/dist_ts/integrations/yamaha/yamaha.types.d.ts +73 -6
- package/dist_ts/integrations/yamaha/yamaha.types.js +8 -94
- package/dist_ts/integrations/yamaha/yamaha.validation.d.ts +12 -0
- package/dist_ts/integrations/yamaha/yamaha.validation.js +89 -0
- package/dist_ts/integrations/zigbee2mqtt/zigbee2mqtt.classes.configflow.d.ts +6 -1
- package/dist_ts/integrations/zigbee2mqtt/zigbee2mqtt.classes.configflow.js +18 -8
- package/dist_ts/integrations/zigbee2mqtt/zigbee2mqtt.classes.integration.d.ts +4 -1
- package/dist_ts/integrations/zigbee2mqtt/zigbee2mqtt.classes.integration.js +54 -6
- package/dist_ts/integrations/zigbee2mqtt/zigbee2mqtt.classes.runtime.d.ts +12 -6
- package/dist_ts/integrations/zigbee2mqtt/zigbee2mqtt.classes.runtime.js +73 -59
- package/dist_ts/integrations/zigbee2mqtt/zigbee2mqtt.mapper.d.ts +3 -2
- package/dist_ts/integrations/zigbee2mqtt/zigbee2mqtt.mapper.js +17 -12
- package/dist_ts/integrations/zigbee2mqtt/zigbee2mqtt.types.d.ts +31 -2
- package/dist_ts/integrations/zigbee2mqtt/zigbee2mqtt.validation.d.ts +9 -1
- package/dist_ts/integrations/zigbee2mqtt/zigbee2mqtt.validation.js +57 -7
- package/dist_ts/integrations/zwave_js/zwave_js.classes.client.d.ts +10 -4
- package/dist_ts/integrations/zwave_js/zwave_js.classes.client.js +167 -31
- package/dist_ts/integrations/zwave_js/zwave_js.classes.configflow.d.ts +6 -1
- package/dist_ts/integrations/zwave_js/zwave_js.classes.configflow.js +57 -35
- package/dist_ts/integrations/zwave_js/zwave_js.classes.integration.d.ts +3 -1
- package/dist_ts/integrations/zwave_js/zwave_js.classes.integration.js +59 -37
- package/dist_ts/integrations/zwave_js/zwave_js.discovery.js +3 -3
- package/dist_ts/integrations/zwave_js/zwave_js.mapper.js +41 -24
- package/dist_ts/integrations/zwave_js/zwave_js.types.d.ts +25 -3
- package/dist_ts/integrations/zwave_js/zwave_js.validation.d.ts +6 -2
- package/dist_ts/integrations/zwave_js/zwave_js.validation.js +52 -17
- package/dist_ts/plugins.d.ts +2 -1
- package/dist_ts/plugins.js +3 -2
- package/package.json +9 -9
- package/readme.md +539 -8
- package/ts/00_commitinfo_data.ts +1 -1
- package/ts/core/classes.configstore.ts +84 -27
- package/ts/core/classes.nativehomeadmission.ts +96 -0
- package/ts/core/classes.nativeintegrationowner.ts +302 -0
- package/ts/core/classes.runtimemanager.ts +11 -2
- package/ts/core/index.ts +2 -0
- package/ts/core/types.ts +18 -0
- package/ts/integrations/braviatv/braviatv.classes.client.ts +245 -709
- package/ts/integrations/braviatv/braviatv.classes.configflow.ts +47 -76
- package/ts/integrations/braviatv/braviatv.classes.integration.ts +167 -147
- package/ts/integrations/braviatv/braviatv.discovery.ts +11 -10
- package/ts/integrations/braviatv/braviatv.mapper.ts +39 -142
- package/ts/integrations/braviatv/braviatv.types.ts +53 -173
- package/ts/integrations/braviatv/braviatv.validation.ts +68 -0
- package/ts/integrations/broadlink/broadlink.actions.ts +31 -0
- package/ts/integrations/broadlink/broadlink.classes.client.ts +170 -144
- package/ts/integrations/broadlink/broadlink.classes.configflow.ts +59 -89
- package/ts/integrations/broadlink/broadlink.classes.integration.ts +110 -64
- package/ts/integrations/broadlink/broadlink.mapper.ts +5 -4
- package/ts/integrations/broadlink/broadlink.selected.mapper.ts +46 -0
- package/ts/integrations/broadlink/broadlink.types.ts +48 -8
- package/ts/integrations/broadlink/broadlink.validation.ts +66 -0
- package/ts/integrations/daikin/daikin.classes.client.ts +52 -661
- package/ts/integrations/daikin/daikin.classes.configflow.ts +72 -152
- package/ts/integrations/daikin/daikin.classes.integration.ts +166 -71
- package/ts/integrations/daikin/daikin.discovery.ts +94 -346
- package/ts/integrations/daikin/daikin.mapper.ts +83 -166
- package/ts/integrations/daikin/daikin.types.ts +27 -48
- package/ts/integrations/daikin/daikin.validation.ts +51 -0
- package/ts/integrations/daikin/readme.md +83 -0
- package/ts/integrations/deconz/deconz.classes.client.ts +348 -252
- package/ts/integrations/deconz/deconz.classes.configflow.ts +57 -29
- package/ts/integrations/deconz/deconz.classes.integration.ts +69 -37
- package/ts/integrations/deconz/deconz.mapper.ts +22 -5
- package/ts/integrations/deconz/deconz.types.ts +49 -6
- package/ts/integrations/deconz/deconz.validation.ts +177 -4
- package/ts/integrations/deconz/readme.md +15 -1
- package/ts/integrations/denonavr/denonavr.classes.client.ts +132 -421
- package/ts/integrations/denonavr/denonavr.classes.configflow.ts +44 -37
- package/ts/integrations/denonavr/denonavr.classes.integration.ts +171 -117
- package/ts/integrations/denonavr/denonavr.discovery.ts +67 -220
- package/ts/integrations/denonavr/denonavr.mapper.ts +36 -182
- package/ts/integrations/denonavr/denonavr.types.ts +48 -111
- package/ts/integrations/denonavr/denonavr.validation.ts +87 -0
- package/ts/integrations/esphome/esphome.classes.client.ts +179 -94
- package/ts/integrations/esphome/esphome.classes.configflow.ts +40 -33
- package/ts/integrations/esphome/esphome.classes.integration.ts +63 -36
- package/ts/integrations/esphome/esphome.discovery.ts +3 -12
- package/ts/integrations/esphome/esphome.mapper.ts +9 -7
- package/ts/integrations/esphome/esphome.types.ts +35 -6
- package/ts/integrations/esphome/esphome.validation.ts +66 -0
- package/ts/integrations/esphome/readme.md +20 -6
- package/ts/integrations/homeassistant/homeassistant.classes.client.ts +353 -125
- package/ts/integrations/homeassistant/homeassistant.classes.integration.ts +35 -18
- package/ts/integrations/homeassistant/homeassistant.classes.runtime.ts +50 -63
- package/ts/integrations/homeassistant/homeassistant.types.ts +17 -1
- package/ts/integrations/homeassistant/readme.md +22 -6
- package/ts/integrations/hue/hue.classes.client.ts +110 -41
- package/ts/integrations/hue/hue.classes.configflow.ts +12 -6
- package/ts/integrations/hue/hue.classes.integration.ts +92 -26
- package/ts/integrations/hue/hue.validation.ts +13 -3
- package/ts/integrations/hue/readme.md +3 -3
- package/ts/integrations/kodi/kodi.classes.client.ts +72 -352
- package/ts/integrations/kodi/kodi.classes.configflow.ts +52 -55
- package/ts/integrations/kodi/kodi.classes.integration.ts +97 -178
- package/ts/integrations/kodi/kodi.discovery.ts +49 -28
- package/ts/integrations/kodi/kodi.mapper.ts +52 -10
- package/ts/integrations/kodi/kodi.types.ts +33 -58
- package/ts/integrations/kodi/kodi.validation.ts +60 -0
- package/ts/integrations/modbus/modbus.classes.client.ts +100 -842
- package/ts/integrations/modbus/modbus.classes.configflow.ts +70 -41
- package/ts/integrations/modbus/modbus.classes.integration.ts +115 -60
- package/ts/integrations/modbus/modbus.discovery.ts +38 -106
- package/ts/integrations/modbus/modbus.mapper.ts +64 -467
- package/ts/integrations/modbus/modbus.types.ts +64 -381
- package/ts/integrations/modbus/modbus.validation.ts +119 -0
- package/ts/integrations/mqtt/mqtt.classes.client.ts +136 -19
- package/ts/integrations/mqtt/mqtt.classes.configflow.ts +45 -32
- package/ts/integrations/mqtt/mqtt.classes.integration.ts +99 -38
- package/ts/integrations/mqtt/mqtt.classes.session.ts +118 -0
- package/ts/integrations/mqtt/mqtt.mapper.ts +43 -1
- package/ts/integrations/mqtt/mqtt.types.ts +52 -0
- package/ts/integrations/mqtt/mqtt.validation.ts +157 -0
- package/ts/integrations/mqtt/readme.md +12 -3
- package/ts/integrations/nanoleaf/nanoleaf.classes.client.ts +115 -249
- package/ts/integrations/nanoleaf/nanoleaf.classes.configflow.ts +90 -19
- package/ts/integrations/nanoleaf/nanoleaf.classes.integration.ts +130 -181
- package/ts/integrations/nanoleaf/nanoleaf.credentials.ts +39 -0
- package/ts/integrations/nanoleaf/nanoleaf.mapper.ts +47 -260
- package/ts/integrations/nanoleaf/nanoleaf.types.ts +29 -147
- package/ts/integrations/nanoleaf/nanoleaf.validation.ts +77 -0
- package/ts/integrations/onkyo/onkyo.classes.client.ts +148 -457
- package/ts/integrations/onkyo/onkyo.classes.configflow.ts +52 -6
- package/ts/integrations/onkyo/onkyo.classes.integration.ts +121 -12
- package/ts/integrations/onkyo/onkyo.discovery.ts +41 -3
- package/ts/integrations/onkyo/onkyo.mapper.ts +46 -19
- package/ts/integrations/onkyo/onkyo.types.ts +55 -110
- package/ts/integrations/onkyo/onkyo.validation.ts +85 -0
- package/ts/integrations/onkyo/readme.md +126 -0
- package/ts/integrations/panasonic_viera/panasonic_viera.classes.client.ts +101 -398
- package/ts/integrations/panasonic_viera/panasonic_viera.classes.configflow.ts +69 -5
- package/ts/integrations/panasonic_viera/panasonic_viera.classes.integration.ts +141 -9
- package/ts/integrations/panasonic_viera/panasonic_viera.discovery.ts +32 -3
- package/ts/integrations/panasonic_viera/panasonic_viera.mapper.ts +34 -161
- package/ts/integrations/panasonic_viera/panasonic_viera.types.ts +52 -96
- package/ts/integrations/panasonic_viera/panasonic_viera.validation.ts +56 -0
- package/ts/integrations/pioneer/pioneer.classes.client.ts +132 -428
- package/ts/integrations/pioneer/pioneer.classes.configflow.ts +67 -5
- package/ts/integrations/pioneer/pioneer.classes.integration.ts +225 -11
- package/ts/integrations/pioneer/pioneer.discovery.ts +45 -3
- package/ts/integrations/pioneer/pioneer.mapper.ts +57 -13
- package/ts/integrations/pioneer/pioneer.types.ts +87 -85
- package/ts/integrations/pioneer/pioneer.validation.ts +84 -0
- package/ts/integrations/samsungtv/readme.md +11 -5
- package/ts/integrations/samsungtv/samsungtv.classes.client.ts +40 -15
- package/ts/integrations/samsungtv/samsungtv.classes.configflow.ts +21 -6
- package/ts/integrations/samsungtv/samsungtv.classes.integration.ts +53 -38
- package/ts/integrations/samsungtv/samsungtv.types.ts +4 -1
- package/ts/integrations/shelly/readme.md +22 -7
- package/ts/integrations/shelly/shelly.classes.client.ts +386 -269
- package/ts/integrations/shelly/shelly.classes.configflow.ts +43 -38
- package/ts/integrations/shelly/shelly.classes.integration.ts +92 -111
- package/ts/integrations/shelly/shelly.classes.subscription.ts +24 -1
- package/ts/integrations/shelly/shelly.mapper.ts +19 -20
- package/ts/integrations/shelly/shelly.rpc.ts +2 -0
- package/ts/integrations/shelly/shelly.types.ts +50 -2
- package/ts/integrations/shelly/shelly.validation.ts +76 -0
- package/ts/integrations/sonos/readme.md +117 -38
- package/ts/integrations/sonos/sonos.classes.client.ts +392 -123
- package/ts/integrations/sonos/sonos.classes.configflow.ts +25 -28
- package/ts/integrations/sonos/sonos.classes.integration.ts +211 -186
- package/ts/integrations/sonos/sonos.config.ts +24 -2
- package/ts/integrations/sonos/sonos.mapper.ts +13 -8
- package/ts/integrations/sonos/sonos.matchers.ts +2 -2
- package/ts/integrations/sonos/sonos.types.ts +30 -1
- package/ts/integrations/soundtouch/soundtouch.classes.client.ts +152 -571
- package/ts/integrations/soundtouch/soundtouch.classes.configflow.ts +47 -42
- package/ts/integrations/soundtouch/soundtouch.classes.integration.ts +95 -150
- package/ts/integrations/soundtouch/soundtouch.discovery.ts +21 -133
- package/ts/integrations/soundtouch/soundtouch.mapper.ts +36 -207
- package/ts/integrations/soundtouch/soundtouch.types.ts +50 -195
- package/ts/integrations/soundtouch/soundtouch.validation.ts +60 -0
- package/ts/integrations/tasmota/readme.md +16 -5
- package/ts/integrations/tasmota/tasmota.classes.integration.ts +24 -6
- package/ts/integrations/tasmota/tasmota.classes.runtime.ts +112 -43
- package/ts/integrations/tasmota/tasmota.config.ts +17 -0
- package/ts/integrations/tasmota/tasmota.credentials.ts +92 -0
- package/ts/integrations/tasmota/tasmota.discovery.ts +87 -24
- package/ts/integrations/tasmota/tasmota.mapper.ts +6 -6
- package/ts/integrations/tasmota/tasmota.types.ts +43 -2
- package/ts/integrations/tuya/readme.md +52 -10
- package/ts/integrations/tuya/tuya.classes.integration.ts +69 -98
- package/ts/integrations/tuya/tuya.classes.runtime.ts +70 -24
- package/ts/integrations/tuya/tuya.mapper.ts +1 -1
- package/ts/integrations/tuya/tuya.types.ts +4 -0
- package/ts/integrations/tuya/tuya.validation.ts +5 -8
- package/ts/integrations/webostv/readme.md +115 -22
- package/ts/integrations/webostv/webostv.classes.client.ts +123 -50
- package/ts/integrations/webostv/webostv.classes.configflow.ts +35 -15
- package/ts/integrations/webostv/webostv.classes.integration.ts +44 -37
- package/ts/integrations/webostv/webostv.mapper.ts +4 -4
- package/ts/integrations/webostv/webostv.types.ts +18 -3
- package/ts/integrations/webostv/webostv.validation.ts +22 -1
- package/ts/integrations/wiz/index.ts +1 -0
- package/ts/integrations/wiz/wiz.classes.client.ts +84 -254
- package/ts/integrations/wiz/wiz.classes.configflow.ts +39 -70
- package/ts/integrations/wiz/wiz.classes.integration.ts +189 -45
- package/ts/integrations/wiz/wiz.discovery.ts +48 -291
- package/ts/integrations/wiz/wiz.mapper.ts +81 -754
- package/ts/integrations/wiz/wiz.types.ts +24 -224
- package/ts/integrations/wiz/wiz.validation.ts +73 -0
- package/ts/integrations/yamaha/index.ts +1 -0
- package/ts/integrations/yamaha/yamaha.classes.client.ts +150 -6
- package/ts/integrations/yamaha/yamaha.classes.configflow.ts +100 -5
- package/ts/integrations/yamaha/yamaha.classes.integration.ts +236 -8
- package/ts/integrations/yamaha/yamaha.discovery.ts +52 -3
- package/ts/integrations/yamaha/yamaha.mapper.ts +65 -13
- package/ts/integrations/yamaha/yamaha.types.ts +77 -97
- package/ts/integrations/yamaha/yamaha.validation.ts +86 -0
- package/ts/integrations/zigbee2mqtt/readme.md +22 -27
- package/ts/integrations/zigbee2mqtt/zigbee2mqtt.classes.configflow.ts +16 -7
- package/ts/integrations/zigbee2mqtt/zigbee2mqtt.classes.integration.ts +53 -6
- package/ts/integrations/zigbee2mqtt/zigbee2mqtt.classes.runtime.ts +62 -49
- package/ts/integrations/zigbee2mqtt/zigbee2mqtt.mapper.ts +17 -11
- package/ts/integrations/zigbee2mqtt/zigbee2mqtt.types.ts +35 -2
- package/ts/integrations/zigbee2mqtt/zigbee2mqtt.validation.ts +53 -7
- package/ts/integrations/zwave_js/readme.md +42 -9
- package/ts/integrations/zwave_js/zwave_js.classes.client.ts +155 -31
- package/ts/integrations/zwave_js/zwave_js.classes.configflow.ts +55 -31
- package/ts/integrations/zwave_js/zwave_js.classes.integration.ts +57 -35
- package/ts/integrations/zwave_js/zwave_js.discovery.ts +2 -2
- package/ts/integrations/zwave_js/zwave_js.mapper.ts +37 -23
- package/ts/integrations/zwave_js/zwave_js.types.ts +26 -3
- package/ts/integrations/zwave_js/zwave_js.validation.ts +52 -18
- package/ts/plugins.ts +2 -1
|
@@ -1,341 +1,91 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
export
|
|
4
|
-
|
|
5
|
-
export
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
}
|
|
17
|
-
export interface
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
delay?: number;
|
|
28
|
-
messageWaitMilliseconds?: number;
|
|
29
|
-
message_wait_milliseconds?: number;
|
|
30
|
-
slave?: number;
|
|
31
|
-
unit?: number;
|
|
32
|
-
unitId?: number;
|
|
33
|
-
deviceAddress?: number;
|
|
34
|
-
device_address?: number;
|
|
35
|
-
connected?: boolean;
|
|
36
|
-
manufacturer?: string;
|
|
37
|
-
model?: string;
|
|
38
|
-
serialNumber?: string;
|
|
39
|
-
serial_number?: string;
|
|
40
|
-
metadata?: Record<string, unknown>;
|
|
41
|
-
slaves?: IModbusSlaveConfig[];
|
|
42
|
-
registers?: IModbusRegisterConfig[];
|
|
43
|
-
coils?: IModbusCoilConfig[];
|
|
44
|
-
sensors?: IModbusRegisterConfig[];
|
|
45
|
-
binarySensors?: IModbusCoilConfig[];
|
|
46
|
-
binary_sensors?: IModbusCoilConfig[];
|
|
47
|
-
switches?: IModbusSwitchConfig[];
|
|
48
|
-
numbers?: IModbusNumberConfig[];
|
|
49
|
-
}
|
|
50
|
-
export interface IModbusSlaveConfig {
|
|
51
|
-
id?: string;
|
|
52
|
-
unitId?: number;
|
|
53
|
-
unit?: number;
|
|
54
|
-
slave?: number;
|
|
55
|
-
deviceAddress?: number;
|
|
56
|
-
device_address?: number;
|
|
57
|
-
name?: string;
|
|
58
|
-
connected?: boolean;
|
|
59
|
-
manufacturer?: string;
|
|
60
|
-
model?: string;
|
|
61
|
-
serialNumber?: string;
|
|
62
|
-
serial_number?: string;
|
|
63
|
-
metadata?: Record<string, unknown>;
|
|
64
|
-
}
|
|
65
|
-
export interface IModbusEntityConfigBase {
|
|
66
|
-
id?: string;
|
|
67
|
-
name: string;
|
|
68
|
-
uniqueId?: string;
|
|
69
|
-
unique_id?: string;
|
|
70
|
-
platform?: TModbusEntityPlatform;
|
|
71
|
-
address: number;
|
|
72
|
-
slave?: number;
|
|
73
|
-
unit?: number;
|
|
74
|
-
unitId?: number;
|
|
75
|
-
deviceAddress?: number;
|
|
76
|
-
device_address?: number;
|
|
77
|
-
scanInterval?: number;
|
|
78
|
-
scan_interval?: number;
|
|
79
|
-
deviceClass?: string;
|
|
80
|
-
device_class?: string;
|
|
81
|
-
available?: boolean;
|
|
82
|
-
metadata?: Record<string, unknown>;
|
|
83
|
-
}
|
|
84
|
-
export interface IModbusRegisterConfig extends IModbusEntityConfigBase {
|
|
85
|
-
platform?: 'sensor' | 'number';
|
|
86
|
-
inputType?: TModbusRegisterType;
|
|
87
|
-
input_type?: TModbusRegisterType;
|
|
88
|
-
registerType?: TModbusRegisterType;
|
|
89
|
-
register_type?: TModbusRegisterType;
|
|
90
|
-
count?: number;
|
|
91
|
-
dataType?: TModbusDataType;
|
|
92
|
-
data_type?: TModbusDataType;
|
|
93
|
-
structure?: string;
|
|
94
|
-
scale?: number;
|
|
95
|
-
offset?: number;
|
|
96
|
-
precision?: number;
|
|
97
|
-
swap?: TModbusSwap;
|
|
98
|
-
unitOfMeasurement?: string;
|
|
99
|
-
unit_of_measurement?: string;
|
|
100
|
-
stateClass?: string;
|
|
101
|
-
state_class?: string;
|
|
102
|
-
minValue?: number;
|
|
103
|
-
min_value?: number;
|
|
104
|
-
maxValue?: number;
|
|
105
|
-
max_value?: number;
|
|
106
|
-
nanValue?: number;
|
|
107
|
-
nan_value?: number;
|
|
108
|
-
zeroSuppress?: number;
|
|
109
|
-
zero_suppress?: number;
|
|
110
|
-
min?: number;
|
|
111
|
-
max?: number;
|
|
112
|
-
step?: number;
|
|
113
|
-
writable?: boolean;
|
|
114
|
-
value?: number | string | null;
|
|
115
|
-
registers?: number[];
|
|
116
|
-
}
|
|
117
|
-
export interface IModbusNumberConfig extends IModbusRegisterConfig {
|
|
118
|
-
platform?: 'number';
|
|
119
|
-
writable?: true;
|
|
120
|
-
}
|
|
121
|
-
export interface IModbusCoilConfig extends IModbusEntityConfigBase {
|
|
122
|
-
platform?: 'binary_sensor' | 'switch';
|
|
123
|
-
inputType?: TModbusCoilType | TModbusRegisterType;
|
|
124
|
-
input_type?: TModbusCoilType | TModbusRegisterType;
|
|
125
|
-
coilType?: TModbusCoilType;
|
|
126
|
-
coil_type?: TModbusCoilType;
|
|
127
|
-
count?: number;
|
|
128
|
-
slaveCount?: number;
|
|
129
|
-
slave_count?: number;
|
|
130
|
-
virtualCount?: number;
|
|
131
|
-
virtual_count?: number;
|
|
132
|
-
writable?: boolean;
|
|
133
|
-
value?: boolean | number | null;
|
|
134
|
-
bits?: boolean[];
|
|
135
|
-
}
|
|
136
|
-
export interface IModbusSwitchConfig extends IModbusCoilConfig {
|
|
137
|
-
platform?: 'switch';
|
|
138
|
-
writeType?: TModbusWriteType;
|
|
139
|
-
write_type?: TModbusWriteType;
|
|
140
|
-
commandOn?: number;
|
|
141
|
-
command_on?: number;
|
|
142
|
-
commandOff?: number;
|
|
143
|
-
command_off?: number;
|
|
144
|
-
stateOn?: number[];
|
|
145
|
-
state_on?: number[];
|
|
146
|
-
stateOff?: number[];
|
|
147
|
-
state_off?: number[];
|
|
148
|
-
verify?: IModbusSwitchVerifyConfig | null;
|
|
149
|
-
}
|
|
150
|
-
export interface IModbusSwitchVerifyConfig {
|
|
151
|
-
address?: number;
|
|
152
|
-
inputType?: TModbusCoilType | TModbusRegisterType;
|
|
153
|
-
input_type?: TModbusCoilType | TModbusRegisterType;
|
|
154
|
-
delay?: number;
|
|
155
|
-
stateOn?: number[];
|
|
156
|
-
state_on?: number[];
|
|
157
|
-
stateOff?: number[];
|
|
158
|
-
state_off?: number[];
|
|
1
|
+
import type * as plugins from '../../plugins.js';
|
|
2
|
+
import type { INativeIntegrationOwnerOptions } from '../../core/classes.nativeintegrationowner.js';
|
|
3
|
+
export interface IModbusIntegrationOptions extends INativeIntegrationOwnerOptions {
|
|
4
|
+
}
|
|
5
|
+
export interface IModbusMappingBase {
|
|
6
|
+
readonly id: string;
|
|
7
|
+
readonly name: string;
|
|
8
|
+
/** Zero-based wire address; no 40001 notation or vendor interpretation. */
|
|
9
|
+
readonly address: number;
|
|
10
|
+
readonly quantity?: number;
|
|
11
|
+
}
|
|
12
|
+
export interface IModbusCoilMapping extends IModbusMappingBase {
|
|
13
|
+
readonly kind: 'coil';
|
|
14
|
+
/** Owner permission for one absolute FC5 write. Requires quantity one. */
|
|
15
|
+
readonly write?: true;
|
|
16
|
+
}
|
|
17
|
+
export interface IModbusDiscreteInputMapping extends IModbusMappingBase {
|
|
18
|
+
readonly kind: 'discrete_input';
|
|
19
|
+
}
|
|
20
|
+
export interface IModbusHoldingRegisterMapping extends IModbusMappingBase {
|
|
21
|
+
readonly kind: 'holding';
|
|
22
|
+
/** Inclusive unsigned raw bounds for one FC6 write. Requires quantity one. */
|
|
23
|
+
readonly write?: {
|
|
24
|
+
readonly minimum: number;
|
|
25
|
+
readonly maximum: number;
|
|
26
|
+
};
|
|
159
27
|
}
|
|
160
|
-
export
|
|
161
|
-
|
|
162
|
-
hubId?: string;
|
|
163
|
-
unitId: number;
|
|
164
|
-
address: number;
|
|
165
|
-
count: number;
|
|
166
|
-
inputType: TModbusRegisterType;
|
|
167
|
-
dataType: TModbusDataType;
|
|
168
|
-
registers?: number[];
|
|
169
|
-
value?: number | string | number[] | null;
|
|
170
|
-
updatedAt?: string;
|
|
171
|
-
metadata?: Record<string, unknown>;
|
|
28
|
+
export interface IModbusInputRegisterMapping extends IModbusMappingBase {
|
|
29
|
+
readonly kind: 'input';
|
|
172
30
|
}
|
|
173
|
-
export
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
31
|
+
export type TModbusMapping = IModbusCoilMapping | IModbusDiscreteInputMapping | IModbusHoldingRegisterMapping | IModbusInputRegisterMapping;
|
|
32
|
+
export type TModbusNormalizedMapping = TModbusMapping & {
|
|
33
|
+
readonly quantity: number;
|
|
34
|
+
};
|
|
35
|
+
export interface IModbusConfig {
|
|
36
|
+
readonly homeId: string;
|
|
37
|
+
readonly address: string;
|
|
38
|
+
readonly unitId: number;
|
|
39
|
+
readonly expectedVendorName: string;
|
|
40
|
+
readonly expectedProductCode: string;
|
|
41
|
+
readonly expectedRevision?: string;
|
|
42
|
+
readonly allowUnencryptedLan: true;
|
|
43
|
+
readonly mappings: readonly TModbusMapping[];
|
|
44
|
+
readonly port?: number;
|
|
45
|
+
readonly localAddress?: string;
|
|
46
|
+
readonly name?: string;
|
|
47
|
+
readonly timeoutMs?: number;
|
|
48
|
+
readonly maxQueuedOperations?: number;
|
|
183
49
|
}
|
|
184
|
-
export interface
|
|
185
|
-
id: string;
|
|
186
|
-
name: string;
|
|
187
|
-
uniqueId: string;
|
|
188
|
-
platform: TModbusEntityPlatform;
|
|
189
|
-
hubId: string;
|
|
190
|
-
hubName: string;
|
|
191
|
-
unitId: number;
|
|
192
|
-
address: number;
|
|
193
|
-
available: boolean;
|
|
194
|
-
writable: boolean;
|
|
195
|
-
register?: IModbusRegisterState;
|
|
196
|
-
coil?: IModbusCoilState;
|
|
197
|
-
state?: unknown;
|
|
198
|
-
attributes?: Record<string, unknown>;
|
|
50
|
+
export interface IHomeAssistantModbusConfig extends IModbusConfig {
|
|
199
51
|
}
|
|
200
|
-
export interface
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
online: boolean;
|
|
206
|
-
manufacturer?: string;
|
|
207
|
-
model?: string;
|
|
208
|
-
serialNumber?: string;
|
|
209
|
-
registers: IModbusRegisterState[];
|
|
210
|
-
coils: IModbusCoilState[];
|
|
211
|
-
metadata?: Record<string, unknown>;
|
|
52
|
+
export interface IModbusNormalizedConfig extends Omit<IModbusConfig, 'mappings' | 'port' | 'timeoutMs' | 'maxQueuedOperations'> {
|
|
53
|
+
readonly mappings: readonly TModbusNormalizedMapping[];
|
|
54
|
+
readonly port: number;
|
|
55
|
+
readonly timeoutMs: number;
|
|
56
|
+
readonly maxQueuedOperations: number;
|
|
212
57
|
}
|
|
213
|
-
export interface
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
port?: number | string;
|
|
219
|
-
online: boolean;
|
|
220
|
-
manufacturer?: string;
|
|
221
|
-
model?: string;
|
|
222
|
-
serialNumber?: string;
|
|
223
|
-
unsupportedReason?: string;
|
|
224
|
-
slaves: IModbusSlaveSnapshot[];
|
|
225
|
-
registers: IModbusRegisterState[];
|
|
226
|
-
coils: IModbusCoilState[];
|
|
227
|
-
entities: IModbusEntitySnapshot[];
|
|
228
|
-
metadata?: Record<string, unknown>;
|
|
58
|
+
export interface IModbusObservation {
|
|
59
|
+
readonly mapping: TModbusNormalizedMapping;
|
|
60
|
+
readonly identity: plugins.ecobridgeDeviceManager.IModbusIdentity;
|
|
61
|
+
readonly values: readonly boolean[] | readonly number[];
|
|
62
|
+
readonly observedAt: string;
|
|
229
63
|
}
|
|
230
64
|
export interface IModbusSnapshot {
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
}
|
|
249
|
-
export type IModbusCommand = IModbusRefreshCommand | IModbusReadRegisterCommand | IModbusWriteRegisterCommand | IModbusReadCoilCommand | IModbusWriteCoilCommand | IModbusStopCommand | IModbusRestartCommand;
|
|
250
|
-
export interface IModbusCommandBase {
|
|
251
|
-
hub?: string;
|
|
252
|
-
hubId?: string;
|
|
253
|
-
unitId?: number;
|
|
254
|
-
slave?: number;
|
|
255
|
-
entityId?: string;
|
|
256
|
-
deviceId?: string;
|
|
257
|
-
uniqueId?: string;
|
|
258
|
-
}
|
|
259
|
-
export interface IModbusRefreshCommand extends IModbusCommandBase {
|
|
260
|
-
type: 'refresh';
|
|
261
|
-
}
|
|
262
|
-
export interface IModbusStopCommand extends IModbusCommandBase {
|
|
263
|
-
type: 'stop';
|
|
264
|
-
}
|
|
265
|
-
export interface IModbusRestartCommand extends IModbusCommandBase {
|
|
266
|
-
type: 'restart';
|
|
267
|
-
}
|
|
268
|
-
export interface IModbusReadRegisterCommand extends IModbusCommandBase {
|
|
269
|
-
type: 'read_register';
|
|
270
|
-
address: number;
|
|
271
|
-
count?: number;
|
|
272
|
-
inputType?: TModbusRegisterType;
|
|
273
|
-
dataType?: TModbusDataType;
|
|
274
|
-
}
|
|
275
|
-
export interface IModbusWriteRegisterCommand extends IModbusCommandBase {
|
|
276
|
-
type: 'write_register';
|
|
277
|
-
address: number;
|
|
278
|
-
value: number | number[];
|
|
279
|
-
}
|
|
280
|
-
export interface IModbusReadCoilCommand extends IModbusCommandBase {
|
|
281
|
-
type: 'read_coil';
|
|
282
|
-
address: number;
|
|
283
|
-
count?: number;
|
|
284
|
-
inputType?: TModbusCoilType;
|
|
285
|
-
}
|
|
286
|
-
export interface IModbusWriteCoilCommand extends IModbusCommandBase {
|
|
287
|
-
type: 'write_coil';
|
|
288
|
-
address: number;
|
|
289
|
-
value: boolean | boolean[] | number | number[];
|
|
290
|
-
}
|
|
291
|
-
export interface IModbusCommandResult {
|
|
292
|
-
success: boolean;
|
|
293
|
-
error?: string;
|
|
294
|
-
data?: unknown;
|
|
295
|
-
}
|
|
296
|
-
export interface IModbusTcpCommandShape {
|
|
297
|
-
transport: 'tcp';
|
|
298
|
-
host?: string;
|
|
299
|
-
port?: number;
|
|
300
|
-
unitId: number;
|
|
301
|
-
transactionId: number;
|
|
302
|
-
functionCode: number;
|
|
303
|
-
functionName: string;
|
|
304
|
-
address?: number;
|
|
305
|
-
quantity?: number;
|
|
306
|
-
values?: number[] | boolean[];
|
|
307
|
-
mbap: {
|
|
308
|
-
transactionId: number;
|
|
309
|
-
protocolId: 0;
|
|
310
|
-
length: number;
|
|
311
|
-
unitId: number;
|
|
312
|
-
};
|
|
313
|
-
pduHex: string;
|
|
314
|
-
requestHex: string;
|
|
315
|
-
}
|
|
316
|
-
export interface IModbusTcpResponse {
|
|
317
|
-
transactionId: number;
|
|
318
|
-
unitId: number;
|
|
319
|
-
functionCode: number;
|
|
320
|
-
registers?: number[];
|
|
321
|
-
bits?: boolean[];
|
|
322
|
-
address?: number;
|
|
323
|
-
quantity?: number;
|
|
324
|
-
rawHex: string;
|
|
325
|
-
}
|
|
65
|
+
readonly config: IModbusNormalizedConfig;
|
|
66
|
+
readonly identity: plugins.ecobridgeDeviceManager.IModbusIdentity;
|
|
67
|
+
readonly observations: readonly IModbusObservation[];
|
|
68
|
+
readonly observedAt: string;
|
|
69
|
+
}
|
|
70
|
+
export type TModbusCommand = {
|
|
71
|
+
readonly type: 'read';
|
|
72
|
+
readonly mappingId: string;
|
|
73
|
+
} | {
|
|
74
|
+
readonly type: 'write_coil';
|
|
75
|
+
readonly mappingId: string;
|
|
76
|
+
readonly value: boolean;
|
|
77
|
+
} | {
|
|
78
|
+
readonly type: 'write_register';
|
|
79
|
+
readonly mappingId: string;
|
|
80
|
+
readonly value: number;
|
|
81
|
+
};
|
|
326
82
|
export interface IModbusManualTcpEntry {
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
manufacturer?: string;
|
|
336
|
-
model?: string;
|
|
337
|
-
serialNumber?: string;
|
|
338
|
-
metadata?: Record<string, unknown>;
|
|
339
|
-
}
|
|
340
|
-
export interface IModbusDiscoveryEntry extends IModbusManualTcpEntry {
|
|
83
|
+
readonly integrationDomain: 'modbus';
|
|
84
|
+
readonly address: string;
|
|
85
|
+
readonly unitId: number;
|
|
86
|
+
readonly expectedVendorName: string;
|
|
87
|
+
readonly expectedProductCode: string;
|
|
88
|
+
readonly expectedRevision?: string;
|
|
89
|
+
readonly port?: number;
|
|
90
|
+
readonly name?: string;
|
|
341
91
|
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { IModbusNormalizedConfig, TModbusCommand, TModbusNormalizedMapping } from './modbus.types.js';
|
|
2
|
+
export declare function modbusRecord(valueArg: unknown, allowedArg?: readonly string[]): Record<string, unknown>;
|
|
3
|
+
export declare function modbusText(valueArg: unknown, nameArg: string, maximumArg?: number): string;
|
|
4
|
+
export declare function modbusIdentityText(valueArg: unknown): string;
|
|
5
|
+
export declare function modbusAddress(valueArg: unknown): string;
|
|
6
|
+
export declare function modbusInteger(valueArg: unknown, minimumArg: number, maximumArg: number): number;
|
|
7
|
+
export declare function modbusUnit(valueArg: unknown): number;
|
|
8
|
+
export declare function normalizeModbusConfig(valueArg: unknown): IModbusNormalizedConfig;
|
|
9
|
+
export declare function modbusMappings(valueArg: unknown): readonly TModbusNormalizedMapping[];
|
|
10
|
+
export declare function modbusCommand(valueArg: unknown, configArg: IModbusNormalizedConfig): TModbusCommand;
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
import * as plugins from '../../plugins.js';
|
|
2
|
+
export function modbusRecord(valueArg, allowedArg) {
|
|
3
|
+
if (!valueArg || typeof valueArg !== 'object' || Array.isArray(valueArg) || ![Object.prototype, null].includes(Object.getPrototypeOf(valueArg))) {
|
|
4
|
+
throw new TypeError('Modbus inputs must be plain data objects.');
|
|
5
|
+
}
|
|
6
|
+
const result = {};
|
|
7
|
+
for (const key of Reflect.ownKeys(valueArg)) {
|
|
8
|
+
const descriptor = Object.getOwnPropertyDescriptor(valueArg, key);
|
|
9
|
+
if (typeof key !== 'string' || allowedArg && !allowedArg.includes(key) || !descriptor || !('value' in descriptor) || !descriptor.enumerable) {
|
|
10
|
+
throw new TypeError('Modbus inputs may not contain accessors, symbols, hidden or unsupported fields.');
|
|
11
|
+
}
|
|
12
|
+
Object.defineProperty(result, key, { value: descriptor.value, enumerable: true });
|
|
13
|
+
}
|
|
14
|
+
return result;
|
|
15
|
+
}
|
|
16
|
+
export function modbusText(valueArg, nameArg, maximumArg = 256) {
|
|
17
|
+
if (typeof valueArg !== 'string' || !valueArg.length || valueArg.length > maximumArg || valueArg !== valueArg.trim() || /[\p{Cc}\p{Cs}]/u.test(valueArg)) {
|
|
18
|
+
throw new TypeError(`Modbus ${nameArg} requires bounded nonempty text without control characters.`);
|
|
19
|
+
}
|
|
20
|
+
return valueArg;
|
|
21
|
+
}
|
|
22
|
+
export function modbusIdentityText(valueArg) {
|
|
23
|
+
if (typeof valueArg !== 'string' || !/^[\x20-\x7e]{1,244}$/.test(valueArg))
|
|
24
|
+
throw new TypeError('Modbus identity requires exact bounded printable ASCII text.');
|
|
25
|
+
return valueArg;
|
|
26
|
+
}
|
|
27
|
+
export function modbusAddress(valueArg) {
|
|
28
|
+
if (typeof valueArg !== 'string' || plugins.net.isIP(valueArg) !== 4)
|
|
29
|
+
throw new TypeError('Modbus requires an explicitly selected local IPv4 address.');
|
|
30
|
+
const parts = valueArg.split('.').map(Number);
|
|
31
|
+
const local = parts[0] === 10 || parts[0] === 127 || parts[0] === 172 && parts[1] >= 16 && parts[1] <= 31 ||
|
|
32
|
+
parts[0] === 192 && parts[1] === 168 || parts[0] === 169 && parts[1] === 254;
|
|
33
|
+
if (!local || parts[3] === 255)
|
|
34
|
+
throw new TypeError('Modbus requires a private, link-local or loopback unicast IPv4 address.');
|
|
35
|
+
return valueArg;
|
|
36
|
+
}
|
|
37
|
+
export function modbusInteger(valueArg, minimumArg, maximumArg) {
|
|
38
|
+
if (typeof valueArg !== 'number' || !Number.isSafeInteger(valueArg) || valueArg < minimumArg || valueArg > maximumArg) {
|
|
39
|
+
throw new TypeError(`Modbus value must be an integer from ${minimumArg} through ${maximumArg}.`);
|
|
40
|
+
}
|
|
41
|
+
return valueArg;
|
|
42
|
+
}
|
|
43
|
+
export function modbusUnit(valueArg) {
|
|
44
|
+
const unit = modbusInteger(valueArg, 1, 255);
|
|
45
|
+
if (unit > 247 && unit !== 255)
|
|
46
|
+
throw new TypeError('Modbus requires an explicit unit 1–247 or direct TCP unit 255.');
|
|
47
|
+
return unit;
|
|
48
|
+
}
|
|
49
|
+
export function normalizeModbusConfig(valueArg) {
|
|
50
|
+
const value = modbusRecord(valueArg, ['homeId', 'address', 'unitId', 'expectedVendorName', 'expectedProductCode', 'expectedRevision',
|
|
51
|
+
'allowUnencryptedLan', 'mappings', 'port', 'localAddress', 'name', 'timeoutMs', 'maxQueuedOperations']);
|
|
52
|
+
if (value.allowUnencryptedLan !== true)
|
|
53
|
+
throw new TypeError('Modbus requires explicit acceptance of unencrypted LAN transport.');
|
|
54
|
+
const mappings = modbusMappings(value.mappings);
|
|
55
|
+
return Object.freeze({
|
|
56
|
+
homeId: modbusText(value.homeId, 'homeId'), address: modbusAddress(value.address), unitId: modbusUnit(value.unitId),
|
|
57
|
+
expectedVendorName: modbusIdentityText(value.expectedVendorName), expectedProductCode: modbusIdentityText(value.expectedProductCode),
|
|
58
|
+
...(value.expectedRevision === undefined ? {} : { expectedRevision: modbusIdentityText(value.expectedRevision) }),
|
|
59
|
+
...(value.localAddress === undefined ? {} : { localAddress: modbusAddress(value.localAddress) }),
|
|
60
|
+
...(value.name === undefined ? {} : { name: modbusText(value.name, 'name', 128) }), allowUnencryptedLan: true,
|
|
61
|
+
port: modbusInteger(value.port === undefined ? 502 : value.port, 1, 65535),
|
|
62
|
+
timeoutMs: modbusInteger(value.timeoutMs === undefined ? 5000 : value.timeoutMs, 1, 60000),
|
|
63
|
+
maxQueuedOperations: modbusInteger(value.maxQueuedOperations === undefined ? 16 : value.maxQueuedOperations, 1, 128), mappings,
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
export function modbusMappings(valueArg) {
|
|
67
|
+
if (!Array.isArray(valueArg) || valueArg.length < 1 || valueArg.length > 64)
|
|
68
|
+
throw new TypeError('Modbus requires one through 64 explicit owner read mappings.');
|
|
69
|
+
if (Reflect.ownKeys(valueArg).some((key) => key !== 'length' && (typeof key !== 'string' || !/^(0|[1-9]\d*)$/.test(key))))
|
|
70
|
+
throw new TypeError('Modbus mapping lists contain only indexed data entries.');
|
|
71
|
+
const mappings = [];
|
|
72
|
+
for (let index = 0; index < valueArg.length; index++) {
|
|
73
|
+
const descriptor = Object.getOwnPropertyDescriptor(valueArg, String(index));
|
|
74
|
+
if (!descriptor || !('value' in descriptor) || !descriptor.enumerable)
|
|
75
|
+
throw new TypeError('Modbus mappings must be dense enumerable data entries.');
|
|
76
|
+
const value = modbusRecord(descriptor.value, ['id', 'name', 'address', 'quantity', 'kind', 'write']);
|
|
77
|
+
const id = modbusText(value.id, 'mapping id', 64);
|
|
78
|
+
if (!/^[a-z0-9][a-z0-9_-]*$/.test(id))
|
|
79
|
+
throw new TypeError('Modbus mapping IDs require lowercase letters, digits, underscore or hyphen.');
|
|
80
|
+
const name = modbusText(value.name, 'mapping name', 128);
|
|
81
|
+
const address = modbusInteger(value.address, 0, 65535);
|
|
82
|
+
const kind = value.kind;
|
|
83
|
+
if (kind !== 'coil' && kind !== 'discrete_input' && kind !== 'holding' && kind !== 'input')
|
|
84
|
+
throw new TypeError('Modbus mapping kind is unsupported.');
|
|
85
|
+
const quantity = modbusInteger(value.quantity === undefined ? 1 : value.quantity, 1, kind === 'coil' || kind === 'discrete_input' ? 2000 : 125);
|
|
86
|
+
if (address + quantity > 65536)
|
|
87
|
+
throw new TypeError('Modbus mapping exceeds the zero-based address space.');
|
|
88
|
+
if (mappings.some((mapping) => mapping.id === id || mapping.kind === kind && address < mapping.address + mapping.quantity && mapping.address < address + quantity)) {
|
|
89
|
+
throw new TypeError('Modbus mappings require unique IDs and nonoverlapping ranges per read kind.');
|
|
90
|
+
}
|
|
91
|
+
let mapping;
|
|
92
|
+
if (value.write === undefined)
|
|
93
|
+
mapping = { id, name, address, quantity, kind };
|
|
94
|
+
else {
|
|
95
|
+
if (quantity !== 1)
|
|
96
|
+
throw new TypeError('Modbus write permission requires one absolute mapped address.');
|
|
97
|
+
if (kind === 'coil' && value.write === true)
|
|
98
|
+
mapping = { id, name, address, quantity, kind, write: true };
|
|
99
|
+
else if (kind === 'holding') {
|
|
100
|
+
const write = modbusRecord(value.write, ['minimum', 'maximum']);
|
|
101
|
+
const minimum = modbusInteger(write.minimum, 0, 65535);
|
|
102
|
+
const maximum = modbusInteger(write.maximum, minimum, 65535);
|
|
103
|
+
mapping = { id, name, address, quantity, kind, write: Object.freeze({ minimum, maximum }) };
|
|
104
|
+
}
|
|
105
|
+
else
|
|
106
|
+
throw new TypeError('Modbus permits explicit single-coil or bounded single-holding-register writes only.');
|
|
107
|
+
}
|
|
108
|
+
mappings.push(Object.freeze(mapping));
|
|
109
|
+
}
|
|
110
|
+
return Object.freeze(mappings);
|
|
111
|
+
}
|
|
112
|
+
export function modbusCommand(valueArg, configArg) {
|
|
113
|
+
const value = modbusRecord(valueArg, ['type', 'mappingId', 'value']);
|
|
114
|
+
const mappingId = modbusText(value.mappingId, 'mapping id', 64);
|
|
115
|
+
const mapping = configArg.mappings.find((entry) => entry.id === mappingId);
|
|
116
|
+
if (!mapping)
|
|
117
|
+
throw new TypeError('Modbus command must target one explicitly owned read mapping.');
|
|
118
|
+
if (value.type === 'read' && !Object.hasOwn(value, 'value'))
|
|
119
|
+
return Object.freeze({ type: 'read', mappingId });
|
|
120
|
+
if (value.type === 'write_coil' && mapping.kind === 'coil' && mapping.write === true && typeof value.value === 'boolean') {
|
|
121
|
+
return Object.freeze({ type: 'write_coil', mappingId, value: value.value });
|
|
122
|
+
}
|
|
123
|
+
if (value.type === 'write_register' && mapping.kind === 'holding' && mapping.write !== undefined) {
|
|
124
|
+
return Object.freeze({ type: 'write_register', mappingId, value: modbusInteger(value.value, mapping.write.minimum, mapping.write.maximum) });
|
|
125
|
+
}
|
|
126
|
+
throw new TypeError('Modbus command is outside the explicit mapping write permission or absolute raw value contract.');
|
|
127
|
+
}
|
|
128
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kYnVzLnZhbGlkYXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi90cy9pbnRlZ3JhdGlvbnMvbW9kYnVzL21vZGJ1cy52YWxpZGF0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxPQUFPLE1BQU0sa0JBQWtCLENBQUM7QUFHNUMsTUFBTSxVQUFVLFlBQVksQ0FBQyxRQUFpQixFQUFFLFVBQThCO0lBQzVFLElBQUksQ0FBQyxRQUFRLElBQUksT0FBTyxRQUFRLEtBQUssUUFBUSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQ2hKLE1BQU0sSUFBSSxTQUFTLENBQUMsMkNBQTJDLENBQUMsQ0FBQztJQUNuRSxDQUFDO0lBQ0QsTUFBTSxNQUFNLEdBQTRCLEVBQUUsQ0FBQztJQUMzQyxLQUFLLE1BQU0sR0FBRyxJQUFJLE9BQU8sQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztRQUM1QyxNQUFNLFVBQVUsR0FBRyxNQUFNLENBQUMsd0JBQXdCLENBQUMsUUFBUSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQ2xFLElBQUksT0FBTyxHQUFHLEtBQUssUUFBUSxJQUFJLFVBQVUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxVQUFVLElBQUksQ0FBQyxDQUFDLE9BQU8sSUFBSSxVQUFVLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUM1SSxNQUFNLElBQUksU0FBUyxDQUFDLGlGQUFpRixDQUFDLENBQUM7UUFDekcsQ0FBQztRQUNELE1BQU0sQ0FBQyxjQUFjLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxF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
|
|
@@ -1,25 +1,32 @@
|
|
|
1
|
-
import type { IMqttConfig, IMqttConnectionState, IMqttMessage, IMqttPublishOptions, IMqttSnapshot } from './mqtt.types.js';
|
|
1
|
+
import type { IMqttConfig, IMqttConnectionState, IMqttMessage, IMqttPublishOptions, IMqttSnapshot, IMqttTransportCredentials } from './mqtt.types.js';
|
|
2
2
|
type TMqttMessageHandler = (messageArg: IMqttMessage) => void;
|
|
3
3
|
type TMqttStateHandler = (stateArg: IMqttConnectionState) => void;
|
|
4
4
|
export declare const mqttTopicMatches: (filterArg: string, topicArg: string) => boolean;
|
|
5
5
|
export declare const validateMqttTopic: (topicArg: string, filterArg?: boolean) => void;
|
|
6
6
|
export declare class MqttClient {
|
|
7
7
|
private readonly config;
|
|
8
|
+
private readonly credentials;
|
|
8
9
|
private client?;
|
|
9
10
|
private startPromise?;
|
|
10
11
|
private destroyPromise?;
|
|
11
12
|
private cleanupPromise;
|
|
13
|
+
private retryPromise?;
|
|
14
|
+
private readonly transportCleanups;
|
|
12
15
|
private destroyed;
|
|
13
16
|
private ready;
|
|
14
17
|
private hasStarted;
|
|
15
18
|
private generation;
|
|
19
|
+
private currentGeneration?;
|
|
20
|
+
private currentStream?;
|
|
16
21
|
private readonly subscriptions;
|
|
17
22
|
private readonly messageHandlers;
|
|
18
23
|
private readonly stateHandlers;
|
|
19
24
|
private readonly messages;
|
|
25
|
+
private readonly currentMessageTopics;
|
|
20
26
|
private readonly persistentTopics;
|
|
21
27
|
private readonly brokerTopics;
|
|
22
28
|
private readonly pendingOperations;
|
|
29
|
+
private readonly publications;
|
|
23
30
|
private topicSync?;
|
|
24
31
|
private topicSyncRequested;
|
|
25
32
|
private bufferedBytes;
|
|
@@ -28,16 +35,20 @@ export declare class MqttClient {
|
|
|
28
35
|
private readonly maxMessageTopics;
|
|
29
36
|
private readonly maxPayloadBytes;
|
|
30
37
|
private readonly maxBufferedBytes;
|
|
31
|
-
constructor(config: IMqttConfig);
|
|
38
|
+
constructor(config: IMqttConfig, credentials?: IMqttTransportCredentials);
|
|
32
39
|
get connected(): boolean;
|
|
33
40
|
isHealthy(): boolean;
|
|
34
41
|
onConnectionState(handlerArg: TMqttStateHandler): () => void;
|
|
35
42
|
onMessage(handlerArg: TMqttMessageHandler): () => void;
|
|
36
43
|
getSnapshot(abortSignalArg?: AbortSignal): Promise<IMqttSnapshot>;
|
|
44
|
+
/** Live broker observations only, including arrivals before readiness; never starts a transport. */
|
|
45
|
+
getCurrentSnapshot(): IMqttMessage[];
|
|
37
46
|
start(abortSignalArg?: AbortSignal): Promise<void>;
|
|
38
47
|
publish(optionsArg: IMqttPublishOptions, abortSignalArg?: AbortSignal): Promise<void>;
|
|
39
48
|
subscribe(topicArg: string, handlerArg?: TMqttMessageHandler, abortSignalArg?: AbortSignal): Promise<() => Promise<void>>;
|
|
40
49
|
destroy(): Promise<void>;
|
|
50
|
+
/** Retry retained close handles only; this never admits a connection or replays application effects. */
|
|
51
|
+
retryCleanup(): Promise<void>;
|
|
41
52
|
private startConnection;
|
|
42
53
|
private initializeConnection;
|
|
43
54
|
private synchronizeTopics;
|
|
@@ -45,9 +56,11 @@ export declare class MqttClient {
|
|
|
45
56
|
private handleMessage;
|
|
46
57
|
private storeMessage;
|
|
47
58
|
private removeMessage;
|
|
59
|
+
private clearCurrentGeneration;
|
|
48
60
|
private destroyConnection;
|
|
49
61
|
private failConnection;
|
|
50
62
|
private closeClient;
|
|
63
|
+
private performClientClose;
|
|
51
64
|
private bounded;
|
|
52
65
|
private rejectOperations;
|
|
53
66
|
private emitState;
|