@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,148 +1,63 @@
|
|
|
1
|
+
import type * as plugins from '../../plugins.js';
|
|
2
|
+
import type { INativeConfigFlowContext, INativeIntegrationSetupContext } from '../../core/types.js';
|
|
3
|
+
import type { INativeIntegrationOwnerOptions } from '../../core/classes.nativeintegrationowner.js';
|
|
4
|
+
export declare const soundtouchDomain = "soundtouch";
|
|
1
5
|
export declare const soundtouchDefaultPort = 8090;
|
|
2
|
-
export declare const
|
|
3
|
-
export
|
|
4
|
-
export type TSoundtouchPlayStatus = 'PLAY_STATE' | 'BUFFERING_STATE' | 'PAUSE_STATE' | 'STOP_STATE' | string;
|
|
5
|
-
export type TSoundtouchSource = 'SLAVE_SOURCE' | 'INTERNET_RADIO' | 'PANDORA' | 'AIRPLAY' | 'STORED_MUSIC' | 'AUX' | 'OFF_SOURCE' | 'CURRATED_RADIO' | 'STANDBY' | 'UPDATE' | 'DEEZER' | 'SPOTIFY' | 'IHEART' | 'LOCAL_MUSIC' | 'BLUETOOTH' | 'INVALID_SOURCE' | string;
|
|
6
|
-
export type TSoundtouchContentType = 'uri' | 'track' | 'album' | 'playlist' | string;
|
|
7
|
-
export type TSoundtouchCommand = 'turn_on' | 'turn_off' | 'play' | 'pause' | 'play_pause' | 'previous_track' | 'next_track' | 'volume_up' | 'volume_down' | 'set_volume' | 'mute' | 'select_source' | 'play_media' | 'play_preset';
|
|
8
|
-
export interface ISoundtouchConfig {
|
|
9
|
-
host?: string;
|
|
10
|
-
port?: number;
|
|
11
|
-
dlnaPort?: number;
|
|
12
|
-
name?: string;
|
|
13
|
-
deviceId?: string;
|
|
14
|
-
model?: string;
|
|
15
|
-
macAddress?: string;
|
|
16
|
-
sourceList?: string[];
|
|
17
|
-
timeoutMs?: number;
|
|
18
|
-
snapshot?: ISoundtouchSnapshot;
|
|
19
|
-
commandExecutor?: ISoundtouchCommandExecutor;
|
|
20
|
-
}
|
|
21
|
-
export interface IHomeAssistantSoundtouchConfig extends ISoundtouchConfig {
|
|
22
|
-
}
|
|
23
|
-
export interface ISoundtouchCommandExecutor {
|
|
24
|
-
execute(requestArg: ISoundtouchRawCommandRequest): Promise<unknown>;
|
|
25
|
-
}
|
|
26
|
-
export interface ISoundtouchRawCommandRequest {
|
|
27
|
-
command: TSoundtouchCommand | 'refresh';
|
|
28
|
-
method: 'GET' | 'POST';
|
|
29
|
-
path: string;
|
|
30
|
-
url: string;
|
|
31
|
-
host?: string;
|
|
32
|
-
port: number;
|
|
33
|
-
body?: string;
|
|
34
|
-
headers?: Record<string, string>;
|
|
35
|
-
}
|
|
36
|
-
export interface ISoundtouchCommandRequest {
|
|
37
|
-
command: TSoundtouchCommand;
|
|
38
|
-
source?: string;
|
|
39
|
-
presetId?: string;
|
|
40
|
-
presetName?: string;
|
|
41
|
-
mediaId?: string;
|
|
42
|
-
mediaType?: string;
|
|
43
|
-
url?: string;
|
|
44
|
-
volumeLevel?: number;
|
|
45
|
-
volume?: number;
|
|
46
|
-
muted?: boolean;
|
|
47
|
-
contentItem?: ISoundtouchContentItem;
|
|
48
|
-
}
|
|
49
|
-
export interface ISoundtouchSnapshot {
|
|
50
|
-
config: ISoundtouchDeviceInfo;
|
|
51
|
-
status?: ISoundtouchStatus;
|
|
52
|
-
volume?: ISoundtouchVolume;
|
|
53
|
-
presets?: ISoundtouchPreset[];
|
|
54
|
-
zone?: ISoundtouchZoneStatus;
|
|
55
|
-
sourceList?: string[];
|
|
56
|
-
available?: boolean;
|
|
57
|
-
lastUpdated?: string;
|
|
58
|
-
error?: string;
|
|
59
|
-
}
|
|
60
|
-
export interface ISoundtouchDeviceInfo {
|
|
61
|
-
deviceId?: string;
|
|
62
|
-
name?: string;
|
|
63
|
-
type?: string;
|
|
64
|
-
accountUuid?: string;
|
|
65
|
-
moduleType?: string;
|
|
66
|
-
variant?: string;
|
|
67
|
-
variantMode?: string;
|
|
68
|
-
countryCode?: string;
|
|
69
|
-
regionCode?: string;
|
|
70
|
-
host?: string;
|
|
71
|
-
port?: number;
|
|
72
|
-
networks?: ISoundtouchNetworkInfo[];
|
|
73
|
-
components?: ISoundtouchComponentInfo[];
|
|
6
|
+
export declare const soundtouchDefaultTimeoutMs = 5000;
|
|
7
|
+
export interface ISoundtouchHomeOptions extends INativeIntegrationOwnerOptions {
|
|
74
8
|
}
|
|
75
|
-
export interface
|
|
76
|
-
type?: string;
|
|
77
|
-
macAddress?: string;
|
|
78
|
-
ipAddress?: string;
|
|
9
|
+
export interface ISoundtouchSetupContext extends INativeIntegrationSetupContext {
|
|
79
10
|
}
|
|
80
|
-
export interface
|
|
81
|
-
category?: string;
|
|
82
|
-
softwareVersion?: string;
|
|
83
|
-
serialNumber?: string;
|
|
11
|
+
export interface ISoundtouchConfigFlowContext extends INativeConfigFlowContext {
|
|
84
12
|
}
|
|
85
|
-
export interface
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
position?: number;
|
|
102
|
-
playStatus?: TSoundtouchPlayStatus;
|
|
103
|
-
shuffleSetting?: string;
|
|
104
|
-
repeatSetting?: string;
|
|
105
|
-
streamType?: string;
|
|
106
|
-
trackId?: string;
|
|
107
|
-
stationName?: string;
|
|
108
|
-
description?: string;
|
|
109
|
-
stationLocation?: string;
|
|
110
|
-
}
|
|
111
|
-
export interface ISoundtouchVolume {
|
|
112
|
-
actual?: number;
|
|
113
|
-
target?: number;
|
|
114
|
-
muted?: boolean;
|
|
115
|
-
}
|
|
116
|
-
export interface ISoundtouchPreset extends ISoundtouchContentItem {
|
|
117
|
-
presetId: string;
|
|
118
|
-
sourceXml?: string;
|
|
119
|
-
}
|
|
120
|
-
export interface ISoundtouchZoneStatus {
|
|
121
|
-
masterId?: string;
|
|
122
|
-
masterIp?: string;
|
|
123
|
-
isMaster?: boolean;
|
|
124
|
-
slaves: ISoundtouchZoneMember[];
|
|
125
|
-
}
|
|
126
|
-
export interface ISoundtouchZoneMember {
|
|
127
|
-
deviceId?: string;
|
|
128
|
-
ipAddress?: string;
|
|
129
|
-
role?: string;
|
|
130
|
-
}
|
|
131
|
-
export interface ISoundtouchMdnsRecord {
|
|
132
|
-
name?: string;
|
|
133
|
-
type?: string;
|
|
134
|
-
host?: string;
|
|
135
|
-
port?: number;
|
|
136
|
-
txt?: Record<string, string | undefined>;
|
|
13
|
+
export interface ISoundtouchConfig {
|
|
14
|
+
readonly homeId: string;
|
|
15
|
+
readonly host: string;
|
|
16
|
+
/** Exact uppercase unicast deviceID previously observed on the selected device. */
|
|
17
|
+
readonly deviceId: string;
|
|
18
|
+
/** Documented /info type; the protocol supplies no model field. */
|
|
19
|
+
readonly type: string;
|
|
20
|
+
readonly allowUnencryptedLan: true;
|
|
21
|
+
/** Owner's absolute integer volume ceiling, 0–100. */
|
|
22
|
+
readonly volumeLimit: number;
|
|
23
|
+
readonly port?: number;
|
|
24
|
+
/** Optional local display label; observed /info name remains in the snapshot. */
|
|
25
|
+
readonly name?: string;
|
|
26
|
+
readonly requestTimeoutMs?: number;
|
|
27
|
+
readonly maxPendingOperations?: number;
|
|
28
|
+
readonly maxResponseBytes?: number;
|
|
137
29
|
}
|
|
138
|
-
export interface
|
|
139
|
-
host?: string;
|
|
140
|
-
port?: number;
|
|
141
|
-
id?: string;
|
|
142
|
-
name?: string;
|
|
143
|
-
manufacturer?: string;
|
|
144
|
-
model?: string;
|
|
145
|
-
deviceId?: string;
|
|
146
|
-
macAddress?: string;
|
|
147
|
-
metadata?: Record<string, unknown>;
|
|
30
|
+
export interface IHomeAssistantSoundtouchConfig extends ISoundtouchConfig {
|
|
148
31
|
}
|
|
32
|
+
export interface ISoundtouchSnapshot extends plugins.ecobridgeDeviceManager.IBoseSoundTouchState {
|
|
33
|
+
readonly homeId: string;
|
|
34
|
+
readonly displayName?: string;
|
|
35
|
+
readonly volumeLimit: number;
|
|
36
|
+
readonly online: true;
|
|
37
|
+
}
|
|
38
|
+
export type TSoundtouchRawData = ISoundtouchSnapshot;
|
|
39
|
+
export type TSoundtouchClientEvent = {
|
|
40
|
+
readonly type: 'snapshot';
|
|
41
|
+
readonly snapshot: ISoundtouchSnapshot;
|
|
42
|
+
} | {
|
|
43
|
+
readonly type: 'control';
|
|
44
|
+
readonly observation: plugins.ecobridgeDeviceManager.IBoseSoundTouchControlResult;
|
|
45
|
+
} | {
|
|
46
|
+
readonly type: 'error';
|
|
47
|
+
readonly error: Error;
|
|
48
|
+
};
|
|
49
|
+
export declare const soundtouchProfile: {
|
|
50
|
+
readonly domain: "soundtouch";
|
|
51
|
+
readonly displayName: 'Bose SoundTouch';
|
|
52
|
+
readonly status: 'control-runtime';
|
|
53
|
+
readonly metadata: {
|
|
54
|
+
readonly source: 'home-assistant/core';
|
|
55
|
+
readonly upstreamDomain: "soundtouch";
|
|
56
|
+
readonly configFlow: true;
|
|
57
|
+
readonly localApi: {
|
|
58
|
+
readonly status: 'Selected native SoundTouch HTTP/XML through devicemanager.';
|
|
59
|
+
readonly implemented: readonly ['exact selected home/private IPv4/deviceID/type binding', 'live sanitized identity, optional capability declarations and actual volume/mute', 'fresh settled-volume admission and owner-bounded absolute volume/mute', 'status acknowledgment and independent state observation without causal claims', 'caller-owned optional home/domain config store', 'explicit observation events and joined terminal cleanup'];
|
|
60
|
+
readonly explicitUnsupported: readonly ['automatic discovery', 'cloud access or fallback', 'injected clients, snapshots and executors', 'power, standby, key/toggle/increment, source, preset, media and zone controls', 'defined command-success vocabulary', 'automatic retry, replay, reconnect or push subscription', 'cryptographic LAN peer authentication'];
|
|
61
|
+
};
|
|
62
|
+
};
|
|
63
|
+
};
|
|
@@ -1,4 +1,19 @@
|
|
|
1
|
+
export const soundtouchDomain = 'soundtouch';
|
|
1
2
|
export const soundtouchDefaultPort = 8090;
|
|
2
|
-
export const
|
|
3
|
-
export const
|
|
4
|
-
|
|
3
|
+
export const soundtouchDefaultTimeoutMs = 5000;
|
|
4
|
+
export const soundtouchProfile = {
|
|
5
|
+
domain: soundtouchDomain, displayName: 'Bose SoundTouch', status: 'control-runtime',
|
|
6
|
+
metadata: {
|
|
7
|
+
source: 'home-assistant/core', upstreamDomain: soundtouchDomain, configFlow: true,
|
|
8
|
+
localApi: {
|
|
9
|
+
status: 'Selected native SoundTouch HTTP/XML through devicemanager.',
|
|
10
|
+
implemented: ['exact selected home/private IPv4/deviceID/type binding', 'live sanitized identity, optional capability declarations and actual volume/mute',
|
|
11
|
+
'fresh settled-volume admission and owner-bounded absolute volume/mute', 'status acknowledgment and independent state observation without causal claims',
|
|
12
|
+
'caller-owned optional home/domain config store', 'explicit observation events and joined terminal cleanup'],
|
|
13
|
+
explicitUnsupported: ['automatic discovery', 'cloud access or fallback', 'injected clients, snapshots and executors',
|
|
14
|
+
'power, standby, key/toggle/increment, source, preset, media and zone controls', 'defined command-success vocabulary',
|
|
15
|
+
'automatic retry, replay, reconnect or push subscription', 'cryptographic LAN peer authentication'],
|
|
16
|
+
},
|
|
17
|
+
},
|
|
18
|
+
};
|
|
19
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic291bmR0b3VjaC50eXBlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3RzL2ludGVncmF0aW9ucy9zb3VuZHRvdWNoL3NvdW5kdG91Y2gudHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBSUEsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQUcsWUFBWSxDQUFDO0FBQzdDLE1BQU0sQ0FBQyxNQUFNLHFCQUFxQixHQUFHLElBQUksQ0FBQztBQUMxQyxNQUFNLENBQUMsTUFBTSwwQkFBMEIsR0FBRyxJQUFJLENBQUM7QUFpQy9DLE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFHO0lBQy9CLE1BQU0sRUFBRSxnQkFBZ0IsRUFBRSxXQUFXLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxFQUFFLGlCQUFpQjtJQUNuRixRQUFRLEVBQUU7UUFDUixNQUFNLEVBQUUscUJBQXFCLEVBQUUsY0FBYyxFQUFFLGdCQUFnQixFQUFFLFVBQVUsRUFBRSxJQUFJO1FBQ2pGLFFBQVEsRUFBRTtZQUNSLE1BQU0sRUFBRSw0REFBNEQ7WUFDcEUsV0FBVyxFQUFFLENBQUMsd0RBQXdELEVBQUUsa0ZBQWtGO2dCQUN4Six1RUFBdUUsRUFBRSwrRUFBK0U7Z0JBQ3hKLGdEQUFnRCxFQUFFLHlEQUF5RCxDQUFDO1lBQzlHLG1CQUFtQixFQUFFLENBQUMscUJBQXFCLEVBQUUsMEJBQTBCLEVBQUUsMkNBQTJDO2dCQUNsSCwrRUFBK0UsRUFBRSxvQ0FBb0M7Z0JBQ3JILHlEQUF5RCxFQUFFLHVDQUF1QyxDQUFDO1NBQ3RHO0tBQ0Y7Q0FDTyxDQUFDIn0=
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { ISoundtouchConfig } from './soundtouch.types.js';
|
|
2
|
+
export declare function soundtouchRecord(valueArg: unknown, nameArg: string): Record<string, unknown>;
|
|
3
|
+
export declare function soundtouchKeys(valueArg: Record<string, unknown>, keysArg: readonly string[]): void;
|
|
4
|
+
export declare function soundtouchText(valueArg: unknown, nameArg: string, maximumArg?: number): string;
|
|
5
|
+
export declare function soundtouchInteger(valueArg: unknown, minimumArg: number, maximumArg: number, nameArg: string): number;
|
|
6
|
+
export declare function soundtouchBoolean(valueArg: unknown): boolean;
|
|
7
|
+
export declare function readSoundtouchEndpoint(hostArg: unknown, idArg: unknown, typeArg: unknown, portArg?: unknown): Pick<ISoundtouchConfig, 'host' | 'deviceId' | 'type'> & {
|
|
8
|
+
port: number;
|
|
9
|
+
};
|
|
10
|
+
export declare function normalizeSoundtouchConfig(valueArg: unknown): Readonly<{
|
|
11
|
+
host: string;
|
|
12
|
+
deviceId: string;
|
|
13
|
+
type: string;
|
|
14
|
+
port: number;
|
|
15
|
+
homeId: string;
|
|
16
|
+
allowUnencryptedLan: true;
|
|
17
|
+
volumeLimit: number;
|
|
18
|
+
name?: string | undefined;
|
|
19
|
+
requestTimeoutMs: number;
|
|
20
|
+
maxPendingOperations: number;
|
|
21
|
+
maxResponseBytes: number;
|
|
22
|
+
}>;
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import * as plugins from '../../plugins.js';
|
|
2
|
+
import { soundtouchDefaultPort, soundtouchDefaultTimeoutMs } from './soundtouch.types.js';
|
|
3
|
+
export function soundtouchRecord(valueArg, nameArg) {
|
|
4
|
+
if (!valueArg || typeof valueArg !== 'object' || Array.isArray(valueArg)
|
|
5
|
+
|| ![Object.prototype, null].includes(Object.getPrototypeOf(valueArg)))
|
|
6
|
+
throw new TypeError(`SoundTouch ${nameArg} must be a plain data object.`);
|
|
7
|
+
const result = {};
|
|
8
|
+
for (const key of Reflect.ownKeys(valueArg)) {
|
|
9
|
+
const descriptor = Object.getOwnPropertyDescriptor(valueArg, key);
|
|
10
|
+
if (typeof key !== 'string' || !descriptor || !('value' in descriptor) || !descriptor.enumerable) {
|
|
11
|
+
throw new TypeError(`SoundTouch ${nameArg} may not contain symbols, accessors or hidden fields.`);
|
|
12
|
+
}
|
|
13
|
+
Object.defineProperty(result, key, { value: descriptor.value, enumerable: true });
|
|
14
|
+
}
|
|
15
|
+
return result;
|
|
16
|
+
}
|
|
17
|
+
export function soundtouchKeys(valueArg, keysArg) {
|
|
18
|
+
if (Object.keys(valueArg).some((key) => !keysArg.includes(key)))
|
|
19
|
+
throw new TypeError('SoundTouch data contains unsupported fields.');
|
|
20
|
+
}
|
|
21
|
+
export function soundtouchText(valueArg, nameArg, maximumArg = 128) {
|
|
22
|
+
if (typeof valueArg !== 'string' || !valueArg.trim() || valueArg.length > maximumArg || /[\p{Cc}\p{Cs}]/u.test(valueArg)) {
|
|
23
|
+
throw new TypeError(`SoundTouch ${nameArg} must be a non-empty string without control characters, at most ${maximumArg} characters.`);
|
|
24
|
+
}
|
|
25
|
+
return valueArg;
|
|
26
|
+
}
|
|
27
|
+
export function soundtouchInteger(valueArg, minimumArg, maximumArg, nameArg) {
|
|
28
|
+
if (typeof valueArg !== 'number' || !Number.isSafeInteger(valueArg) || valueArg < minimumArg || valueArg > maximumArg) {
|
|
29
|
+
throw new RangeError(`SoundTouch ${nameArg} must be an integer from ${minimumArg} through ${maximumArg}.`);
|
|
30
|
+
}
|
|
31
|
+
return valueArg;
|
|
32
|
+
}
|
|
33
|
+
export function soundtouchBoolean(valueArg) {
|
|
34
|
+
if (typeof valueArg !== 'boolean')
|
|
35
|
+
throw new TypeError('SoundTouch mute requires an explicit boolean.');
|
|
36
|
+
return valueArg;
|
|
37
|
+
}
|
|
38
|
+
export function readSoundtouchEndpoint(hostArg, idArg, typeArg, portArg) {
|
|
39
|
+
if (typeof hostArg !== 'string' || plugins.net.isIP(hostArg) !== 4)
|
|
40
|
+
throw new TypeError('SoundTouch host must be a selected private IPv4 address.');
|
|
41
|
+
const [first, second, , last] = hostArg.split('.').map(Number);
|
|
42
|
+
if (!(first === 10 || first === 127 || first === 192 && second === 168 || first === 172 && second >= 16 && second <= 31)
|
|
43
|
+
|| last === 0 || last === 255)
|
|
44
|
+
throw new TypeError('SoundTouch host must be a selected private or loopback unicast IPv4 address.');
|
|
45
|
+
if (typeof idArg !== 'string' || !/^[0-9A-F]{12}$/.test(idArg) || /^(0{12}|F{12})$/.test(idArg)
|
|
46
|
+
|| (Number.parseInt(idArg.slice(0, 2), 16) & 1) !== 0)
|
|
47
|
+
throw new TypeError('SoundTouch deviceId must be the exact uppercase unicast twelve-digit deviceID.');
|
|
48
|
+
return { host: hostArg, deviceId: idArg, type: soundtouchText(typeArg, 'selected type'),
|
|
49
|
+
port: soundtouchInteger(portArg === undefined ? soundtouchDefaultPort : portArg, 1, 65535, 'port') };
|
|
50
|
+
}
|
|
51
|
+
export function normalizeSoundtouchConfig(valueArg) {
|
|
52
|
+
const values = soundtouchRecord(valueArg, 'configuration');
|
|
53
|
+
soundtouchKeys(values, ['homeId', 'host', 'deviceId', 'type', 'allowUnencryptedLan', 'volumeLimit', 'port', 'name',
|
|
54
|
+
'requestTimeoutMs', 'maxPendingOperations', 'maxResponseBytes']);
|
|
55
|
+
if (values.allowUnencryptedLan !== true)
|
|
56
|
+
throw new TypeError('SoundTouch requires explicit allowUnencryptedLan: true admission.');
|
|
57
|
+
return Object.freeze({ homeId: soundtouchText(values.homeId, 'homeId', 256),
|
|
58
|
+
...readSoundtouchEndpoint(values.host, values.deviceId, values.type, values.port), allowUnencryptedLan: true,
|
|
59
|
+
volumeLimit: soundtouchInteger(values.volumeLimit, 0, 100, 'volumeLimit'),
|
|
60
|
+
...(values.name === undefined ? {} : { name: soundtouchText(values.name, 'name') }),
|
|
61
|
+
requestTimeoutMs: soundtouchInteger(values.requestTimeoutMs === undefined ? soundtouchDefaultTimeoutMs : values.requestTimeoutMs, 1, 30000, 'requestTimeoutMs'),
|
|
62
|
+
maxPendingOperations: soundtouchInteger(values.maxPendingOperations === undefined ? 16 : values.maxPendingOperations, 1, 128, 'maxPendingOperations'),
|
|
63
|
+
maxResponseBytes: soundtouchInteger(values.maxResponseBytes === undefined ? 16384 : values.maxResponseBytes, 256, 65536, 'maxResponseBytes'), });
|
|
64
|
+
}
|
|
65
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic291bmR0b3VjaC52YWxpZGF0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vdHMvaW50ZWdyYXRpb25zL3NvdW5kdG91Y2gvc291bmR0b3VjaC52YWxpZGF0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxPQUFPLE1BQU0sa0JBQWtCLENBQUM7QUFFNUMsT0FBTyxFQUFFLHFCQUFxQixFQUFFLDBCQUEwQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFMUYsTUFBTSxVQUFVLGdCQUFnQixDQUFDLFFBQWlCLEVBQUUsT0FBZTtJQUNqRSxJQUFJLENBQUMsUUFBUSxJQUFJLE9BQU8sUUFBUSxLQUFLLFFBQVEsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQztXQUNuRSxDQUFDLENBQUMsTUFBTSxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUFFLE1BQU0sSUFBSSxTQUFTLENBQUMsY0FBYyxPQUFPLCtCQUErQixDQUFDLENBQUM7SUFDcEosTUFBTSxNQUFNLEdBQTRCLEVBQUUsQ0FBQztJQUMzQyxLQUFLLE1BQU0sR0FBRyxJQUFJLE9BQU8sQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztRQUM1QyxNQUFNLFVBQVUsR0FBRyxNQUFNLENBQUMsd0JBQXdCLENBQUMsUUFBUSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQ2xFLElBQUksT0FBTyxHQUFHLEtBQUssUUFBUSxJQUFJLENBQUMsVUFBVSxJQUFJLENBQUMsQ0FBQyxPQUFPLElBQUksVUFBVSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDakcsTUFBTSxJQUFJLFNBQVMsQ0FBQyxjQUFjLE9BQU8sdURBQXVELENBQUMsQ0FBQztRQUNwRyxDQUFDO1FBQ0QsTUFBTSxDQUFDLGNBQWMsQ0FBQyxN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
|
|
@@ -3,12 +3,15 @@ import type { IIntegrationSetupContext } from '../../core/types.js';
|
|
|
3
3
|
import { TasmotaConfigFlow } from './tasmota.discovery.js';
|
|
4
4
|
import { TasmotaRuntime } from './tasmota.classes.runtime.js';
|
|
5
5
|
import type { IHomeAssistantTasmotaConfig } from './tasmota.types.js';
|
|
6
|
+
import type { ITasmotaIntegrationOptions } from './tasmota.types.js';
|
|
6
7
|
export declare class HomeAssistantTasmotaIntegration extends BaseIntegration<IHomeAssistantTasmotaConfig> {
|
|
7
8
|
readonly domain = "tasmota";
|
|
8
9
|
readonly displayName = "Tasmota";
|
|
9
10
|
readonly status: 'control-runtime';
|
|
10
11
|
readonly discoveryDescriptor: import("../../index.js").DiscoveryDescriptor;
|
|
11
12
|
readonly configFlow: TasmotaConfigFlow;
|
|
13
|
+
private readonly owner;
|
|
14
|
+
private readonly options;
|
|
12
15
|
readonly metadata: {
|
|
13
16
|
source: string;
|
|
14
17
|
upstreamPath: string;
|
|
@@ -17,6 +20,8 @@ export declare class HomeAssistantTasmotaIntegration extends BaseIntegration<IHo
|
|
|
17
20
|
transport: string;
|
|
18
21
|
scope: string;
|
|
19
22
|
};
|
|
23
|
+
constructor(optionsArg?: ITasmotaIntegrationOptions);
|
|
20
24
|
setup(configArg: IHomeAssistantTasmotaConfig, contextArg: IIntegrationSetupContext): Promise<TasmotaRuntime>;
|
|
21
25
|
destroy(): Promise<void>;
|
|
26
|
+
retryCleanup(): Promise<void>;
|
|
22
27
|
}
|
|
@@ -1,12 +1,17 @@
|
|
|
1
1
|
import { BaseIntegration } from '../../core/classes.baseintegration.js';
|
|
2
|
+
import { NativeIntegrationOwner } from '../../core/classes.nativeintegrationowner.js';
|
|
2
3
|
import { createTasmotaDiscoveryDescriptor, TasmotaConfigFlow } from './tasmota.discovery.js';
|
|
3
4
|
import { TasmotaRuntime } from './tasmota.classes.runtime.js';
|
|
5
|
+
import { normalizeTasmotaConfig } from './tasmota.config.js';
|
|
6
|
+
import { tasmotaOptions } from './tasmota.credentials.js';
|
|
4
7
|
export class HomeAssistantTasmotaIntegration extends BaseIntegration {
|
|
5
8
|
domain = 'tasmota';
|
|
6
9
|
displayName = 'Tasmota';
|
|
7
10
|
status = 'control-runtime';
|
|
8
11
|
discoveryDescriptor = createTasmotaDiscoveryDescriptor();
|
|
9
|
-
configFlow
|
|
12
|
+
configFlow;
|
|
13
|
+
owner;
|
|
14
|
+
options;
|
|
10
15
|
metadata = {
|
|
11
16
|
source: 'home-assistant/core',
|
|
12
17
|
upstreamPath: 'homeassistant/components/tasmota',
|
|
@@ -15,12 +20,23 @@ export class HomeAssistantTasmotaIntegration extends BaseIntegration {
|
|
|
15
20
|
transport: 'mqtt',
|
|
16
21
|
scope: 'selected-device-relays-brightness-sensors',
|
|
17
22
|
};
|
|
23
|
+
constructor(optionsArg = {}) {
|
|
24
|
+
super();
|
|
25
|
+
this.options = tasmotaOptions(optionsArg);
|
|
26
|
+
this.owner = new NativeIntegrationOwner(this.domain, { homeId: this.options.homeId, capacity: this.options.capacity });
|
|
27
|
+
this.configFlow = new TasmotaConfigFlow(this.options, this.owner);
|
|
28
|
+
}
|
|
18
29
|
async setup(configArg, contextArg) {
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
30
|
+
const config = normalizeTasmotaConfig(configArg);
|
|
31
|
+
return this.owner.runSetup(contextArg, config.homeId, async (leaseArg) => {
|
|
32
|
+
const runtime = new TasmotaRuntime(config, leaseArg, this.options, this.owner);
|
|
33
|
+
leaseArg.own(() => runtime.dispose());
|
|
34
|
+
await runtime.start(leaseArg.signal);
|
|
35
|
+
leaseArg.promoteToRuntime();
|
|
36
|
+
return runtime;
|
|
37
|
+
});
|
|
23
38
|
}
|
|
24
|
-
|
|
39
|
+
destroy() { return this.owner.close(); }
|
|
40
|
+
retryCleanup() { return this.owner.retryCleanup(); }
|
|
25
41
|
}
|
|
26
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
42
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFzbW90YS5jbGFzc2VzLmludGVncmF0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vdHMvaW50ZWdyYXRpb25zL3Rhc21vdGEvdGFzbW90YS5jbGFzc2VzLmludGVncmF0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUN4RSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQztBQUV0RixPQUFPLEVBQUUsZ0NBQWdDLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUM3RixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFHOUQsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDN0QsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRTFELE1BQU0sT0FBTywrQkFBZ0MsU0FBUSxlQUE0QztJQUMvRSxNQUFNLEdBQUcsU0FBUyxDQUFDO0lBQ25CLFdBQVcsR0FBRyxTQUFTLENBQUM7SUFDeEIsTUFBTSxHQUFHLGlCQUEwQixDQUFDO0lBQ3BDLG1CQUFtQixHQUFHLGdDQUFnQyxFQUFFLENBQUM7SUFDekQsVUFBVSxDQUFvQjtJQUM3QixLQUFLLENBQXlCO0lBQzlCLE9BQU8sQ0FBNkI7SUFDckMsUUFBUSxHQUFHO1FBQ3pCLE1BQU0sRUFBRSxxQkFBcUI7UUFDN0IsWUFBWSxFQUFFLGtDQUFrQztRQUNoRCxjQUFjLEVBQUUsU0FBUztRQUN6QixRQUFRLEVBQUUsWUFBWTtRQUN0QixTQUFTLEVBQUUsTUFBTTtRQUNqQixLQUFLLEVBQUUsMkNBQTJDO0tBQ25ELENBQUM7SUFFRixZQUFZLFVBQVUsR0FBK0IsRUFBRTtRQUNyRCxLQUFLLEVBQUUsQ0FBQztRQUNSLElBQUksQ0FBQyxPQUFPLEdBQUcsY0FBYyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQzFDLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLFFBQVEsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7UUFDdkgsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLGlCQUFpQixDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3BFLENBQUM7SUFFTSxLQUFLLENBQUMsS0FBSyxDQUFDLFNBQXNDLEVBQUUsVUFBb0M7UUFDN0YsTUFBTSxNQUFNLEdBQUcsc0JBQXNCLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDakQsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxVQUFVLEVBQUUsTUFBTSxDQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLEVBQUU7WUFDdkUsTUFBTSxPQUFPLEdBQUcsSUFBSSxjQUFjLENBQUMsTUFBTSxFQUFFLFFBQVEsRUFBRSxJQUFJLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUMvRSxRQUFRLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO1lBQ3RDLE1BQU0sT0FBTyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDckMsUUFBUSxDQUFDLGdCQUFnQixFQUFFLENBQUM7WUFDNUIsT0FBTyxPQUFPLENBQUM7UUFDakIsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU0sT0FBTyxLQUFvQixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3ZELFlBQVksS0FBb0IsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksRUFBRSxDQUFDLENBQUMsQ0FBQztDQUMzRSJ9
|
|
@@ -1,21 +1,31 @@
|
|
|
1
1
|
import * as plugins from '../../plugins.js';
|
|
2
|
+
import type { INativeSetupLease, NativeIntegrationOwner } from '../../core/classes.nativeintegrationowner.js';
|
|
2
3
|
import type { IDeviceFeatureWriteRequest, IIntegrationEntity, IIntegrationEvent, IIntegrationRuntime, IServiceCallResult } from '../../core/types.js';
|
|
3
|
-
import type {
|
|
4
|
+
import type { ITasmotaConfig, ITasmotaIntegrationOptions } from './tasmota.types.js';
|
|
4
5
|
export declare class TasmotaRuntime implements IIntegrationRuntime {
|
|
5
|
-
readonly domain = "tasmota";
|
|
6
6
|
private readonly config;
|
|
7
|
-
private readonly
|
|
7
|
+
private readonly lease;
|
|
8
|
+
private readonly options;
|
|
9
|
+
private readonly owner;
|
|
10
|
+
readonly domain = "tasmota";
|
|
11
|
+
readonly homeId: string;
|
|
12
|
+
private session?;
|
|
13
|
+
private client?;
|
|
8
14
|
private readonly lifetime;
|
|
9
15
|
private readonly states;
|
|
10
16
|
private readonly listeners;
|
|
11
17
|
private readonly changed;
|
|
12
18
|
private readonly subscriptionCleanups;
|
|
13
|
-
private
|
|
19
|
+
private stopConnectionListener?;
|
|
20
|
+
private readonly operations;
|
|
14
21
|
private initializing;
|
|
15
22
|
private started;
|
|
16
23
|
private destroyed;
|
|
17
24
|
private destroyPromise?;
|
|
18
|
-
|
|
25
|
+
private disposePromise?;
|
|
26
|
+
private cleanupFailed;
|
|
27
|
+
constructor(config: ITasmotaConfig, lease: INativeSetupLease, options: ITasmotaIntegrationOptions, owner: NativeIntegrationOwner);
|
|
28
|
+
private observeConnection;
|
|
19
29
|
start(abortSignalArg?: AbortSignal): Promise<void>;
|
|
20
30
|
isHealthy(): boolean;
|
|
21
31
|
devices(abortSignalArg?: AbortSignal): Promise<plugins.shxInterfaces.data.IDeviceDefinition[]>;
|
|
@@ -23,6 +33,10 @@ export declare class TasmotaRuntime implements IIntegrationRuntime {
|
|
|
23
33
|
subscribe(handlerArg: (eventArg: IIntegrationEvent) => void, abortSignalArg?: AbortSignal): Promise<() => Promise<void>>;
|
|
24
34
|
writeFeature(requestArg: IDeviceFeatureWriteRequest, abortSignalArg?: AbortSignal): Promise<IServiceCallResult>;
|
|
25
35
|
destroy(): Promise<void>;
|
|
36
|
+
/** Resource drain registered on the native lease, separate from its public closure. */
|
|
37
|
+
dispose(): Promise<void>;
|
|
38
|
+
private track;
|
|
39
|
+
private retain;
|
|
26
40
|
private state;
|
|
27
41
|
private ready;
|
|
28
42
|
private checkActive;
|