@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,8 +1,78 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
1
|
+
import { NativeIntegrationOwner } from '../../core/classes.nativeintegrationowner.js';
|
|
2
|
+
import { PanasonicVieraClient } from './panasonic_viera.classes.client.js';
|
|
3
|
+
import { createPanasonicVieraDiscoveryDescriptor } from './panasonic_viera.discovery.js';
|
|
4
|
+
import { normalizePanasonicVieraConfig, panasonicVieraRecord } from './panasonic_viera.validation.js';
|
|
5
|
+
export class PanasonicVieraConfigFlow {
|
|
6
|
+
scope;
|
|
7
|
+
clients = new Set();
|
|
8
|
+
submitting = false;
|
|
9
|
+
constructor(optionsArg = {}, scopeArg) {
|
|
10
|
+
this.scope = scopeArg ?? new NativeIntegrationOwner('panasonic_viera', optionsArg).createFlowScope();
|
|
11
|
+
}
|
|
12
|
+
start(candidateArg, contextArg) {
|
|
13
|
+
return this.scope.run(contextArg, undefined, async (lease) => {
|
|
14
|
+
const match = await createPanasonicVieraDiscoveryDescriptor().getValidators()[0].validate(candidateArg, {});
|
|
15
|
+
lease.assertOpen();
|
|
16
|
+
if (!match.matched || !match.candidate)
|
|
17
|
+
return { kind: 'error', error: match.reason };
|
|
18
|
+
const host = match.candidate.host;
|
|
19
|
+
const context = lease.context;
|
|
20
|
+
return {
|
|
21
|
+
kind: 'form', title: 'Connect selected plaintext Panasonic NRC',
|
|
22
|
+
description: 'Select the exact description URL, UPnP UDN and model for the host-selected home. Only advertised keys are supported; encrypted/PIN TVs are refused.',
|
|
23
|
+
fields: [
|
|
24
|
+
{ name: 'descriptionUrl', label: 'Selected HTTP UPnP description URL', type: 'text', required: true },
|
|
25
|
+
{ name: 'expectedUdn', label: 'Selected UPnP UUID', type: 'text', required: true },
|
|
26
|
+
{ name: 'expectedModelName', label: 'Selected exact model name', type: 'text', required: true },
|
|
27
|
+
{ name: 'allowUnencryptedLan', label: 'Acknowledge unauthenticated plaintext LAN', type: 'boolean', required: true },
|
|
28
|
+
{ name: 'name', label: 'Name', type: 'text' },
|
|
29
|
+
],
|
|
30
|
+
submit: (valuesArg) => this.submit(host, valuesArg, context),
|
|
31
|
+
};
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
destroy() { return this.scope.close(); }
|
|
35
|
+
retryCleanup() { return this.scope.retryCleanup(); }
|
|
36
|
+
async submit(hostArg, valuesArg, contextArg) {
|
|
37
|
+
// Fence stale form closures even when another submission is in flight.
|
|
38
|
+
this.scope.admit(contextArg);
|
|
39
|
+
if (this.submitting)
|
|
40
|
+
throw new Error('Panasonic Viera config-flow admission is already in progress.');
|
|
41
|
+
this.submitting = true;
|
|
42
|
+
try {
|
|
43
|
+
const values = panasonicVieraRecord(valuesArg, ['homeId', 'descriptionUrl', 'expectedUdn', 'expectedModelName', 'allowUnencryptedLan', 'name', 'timeoutMs', 'maxResponseBytes']);
|
|
44
|
+
if (values.homeId !== undefined && values.homeId !== contextArg.homeId)
|
|
45
|
+
throw new Error('Panasonic Viera form home does not match the selected host home.');
|
|
46
|
+
const config = normalizePanasonicVieraConfig({ ...values, host: hostArg, homeId: contextArg.homeId });
|
|
47
|
+
return await this.scope.run(contextArg, config.homeId, async (lease) => {
|
|
48
|
+
const client = new PanasonicVieraClient(config, { ...lease.context, abortSignal: lease.signal });
|
|
49
|
+
this.clients.add(client);
|
|
50
|
+
let attemptedCleanup = false;
|
|
51
|
+
lease.own(async () => {
|
|
52
|
+
if (attemptedCleanup)
|
|
53
|
+
await client.retryCleanup();
|
|
54
|
+
else {
|
|
55
|
+
attemptedCleanup = true;
|
|
56
|
+
await client.destroy();
|
|
57
|
+
}
|
|
58
|
+
this.clients.delete(client);
|
|
59
|
+
});
|
|
60
|
+
await client.start(lease.signal);
|
|
61
|
+
lease.assertOpen();
|
|
62
|
+
if (client.isClosed)
|
|
63
|
+
throw new Error('Panasonic Viera config-flow admission was cancelled.');
|
|
64
|
+
return { kind: 'done', title: 'Selected Panasonic NRC admitted', config };
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
catch (errorArg) {
|
|
68
|
+
// Cleanup rejection retains its original evidence and lease; admission errors are form results.
|
|
69
|
+
if (errorArg instanceof AggregateError)
|
|
70
|
+
throw errorArg;
|
|
71
|
+
return { kind: 'error', error: errorArg instanceof Error ? errorArg.message : 'Panasonic Viera admission failed.' };
|
|
72
|
+
}
|
|
73
|
+
finally {
|
|
74
|
+
this.submitting = false;
|
|
75
|
+
}
|
|
6
76
|
}
|
|
7
77
|
}
|
|
8
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
78
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFuYXNvbmljX3ZpZXJhLmNsYXNzZXMuY29uZmlnZmxvdy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3RzL2ludGVncmF0aW9ucy9wYW5hc29uaWNfdmllcmEvcGFuYXNvbmljX3ZpZXJhLmNsYXNzZXMuY29uZmlnZmxvdy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsc0JBQXNCLEVBQW9FLE1BQU0sOENBQThDLENBQUM7QUFHeEosT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDM0UsT0FBTyxFQUFFLHVDQUF1QyxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFFekYsT0FBTyxFQUFFLDZCQUE2QixFQUFFLG9CQUFvQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFFdEcsTUFBTSxPQUFPLHdCQUF3QjtJQUNsQixLQUFLLENBQXlCO0lBQzlCLE9BQU8sR0FBRyxJQUFJLEdBQUcsRUFBd0IsQ0FBQztJQUNuRCxVQUFVLEdBQUcsS0FBSyxDQUFDO0lBRTNCLFlBQW1CLFVBQVUsR0FBbUMsRUFBRSxFQUFFLFFBQWlDO1FBQ25HLElBQUksQ0FBQyxLQUFLLEdBQUcsUUFBUSxJQUFJLElBQUksc0JBQXNCLENBQUMsaUJBQWlCLEVBQUUsVUFBVSxDQUFDLENBQUMsZUFBZSxFQUFFLENBQUM7SUFDdkcsQ0FBQztJQUVNLEtBQUssQ0FBQyxZQUFpQyxFQUFFLFVBQThCO1FBQzVFLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsVUFBVSxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEVBQUU7WUFDM0QsTUFBTSxLQUFLLEdBQUcsTUFBTSx1Q0FBdUMsRUFBRSxDQUFDLGFBQWEsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxZQUFZLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDNUcsS0FBSyxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ25CLElBQUks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
|
|
@@ -1,12 +1,34 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { BaseIntegration } from '../../core/classes.baseintegration.js';
|
|
2
|
+
import { type INativeIntegrationOwnerOptions } from '../../core/classes.nativeintegrationowner.js';
|
|
3
|
+
import type { IIntegrationRuntime, IIntegrationSetupContext } from '../../core/types.js';
|
|
2
4
|
import { PanasonicVieraConfigFlow } from './panasonic_viera.classes.configflow.js';
|
|
3
5
|
import type { IPanasonicVieraConfig } from './panasonic_viera.types.js';
|
|
4
|
-
export declare class PanasonicVieraIntegration extends
|
|
6
|
+
export declare class PanasonicVieraIntegration extends BaseIntegration<IPanasonicVieraConfig> {
|
|
5
7
|
readonly domain = "panasonic_viera";
|
|
6
|
-
readonly
|
|
8
|
+
readonly displayName = "Panasonic Viera";
|
|
9
|
+
readonly status = "control-runtime";
|
|
10
|
+
readonly discoveryDescriptor: import("../../index.js").DiscoveryDescriptor;
|
|
7
11
|
readonly configFlow: PanasonicVieraConfigFlow;
|
|
8
|
-
|
|
12
|
+
readonly metadata: {
|
|
13
|
+
source: string;
|
|
14
|
+
upstreamPath: string;
|
|
15
|
+
upstreamDomain: string;
|
|
16
|
+
integrationType: string;
|
|
17
|
+
iotClass: string;
|
|
18
|
+
configFlow: boolean;
|
|
19
|
+
documentation: string;
|
|
20
|
+
runtime: {
|
|
21
|
+
type: string;
|
|
22
|
+
controls: string;
|
|
23
|
+
explicitUnsupported: string[];
|
|
24
|
+
};
|
|
25
|
+
};
|
|
26
|
+
private readonly owner;
|
|
27
|
+
private readonly clients;
|
|
28
|
+
constructor(optionsArg?: INativeIntegrationOwnerOptions);
|
|
9
29
|
setup(configArg: IPanasonicVieraConfig, contextArg: IIntegrationSetupContext): Promise<IIntegrationRuntime>;
|
|
30
|
+
destroy(): Promise<void>;
|
|
31
|
+
retryCleanup(): Promise<void>;
|
|
10
32
|
}
|
|
11
33
|
export declare class HomeAssistantPanasonicVieraIntegration extends PanasonicVieraIntegration {
|
|
12
34
|
}
|
|
@@ -1,20 +1,153 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { BaseIntegration } from '../../core/classes.baseintegration.js';
|
|
2
|
+
import { NativeIntegrationOwner } from '../../core/classes.nativeintegrationowner.js';
|
|
2
3
|
import { PanasonicVieraClient } from './panasonic_viera.classes.client.js';
|
|
3
4
|
import { PanasonicVieraConfigFlow } from './panasonic_viera.classes.configflow.js';
|
|
4
5
|
import { createPanasonicVieraDiscoveryDescriptor } from './panasonic_viera.discovery.js';
|
|
6
|
+
import { PanasonicVieraMapper } from './panasonic_viera.mapper.js';
|
|
5
7
|
import { panasonicVieraDomain, panasonicVieraProfile } from './panasonic_viera.types.js';
|
|
6
|
-
|
|
8
|
+
import { drainPanasonicVieraCleanup, normalizePanasonicVieraConfig, panasonicVieraRecord } from './panasonic_viera.validation.js';
|
|
9
|
+
export class PanasonicVieraIntegration extends BaseIntegration {
|
|
7
10
|
domain = panasonicVieraDomain;
|
|
11
|
+
displayName = 'Panasonic Viera';
|
|
12
|
+
status = 'control-runtime';
|
|
8
13
|
discoveryDescriptor = createPanasonicVieraDiscoveryDescriptor();
|
|
9
|
-
configFlow
|
|
10
|
-
|
|
11
|
-
|
|
14
|
+
configFlow;
|
|
15
|
+
metadata = panasonicVieraProfile.metadata;
|
|
16
|
+
owner;
|
|
17
|
+
// Failed cleanup stays in this map and on the shared owner's bounded lease.
|
|
18
|
+
clients = new Map();
|
|
19
|
+
constructor(optionsArg = {}) {
|
|
20
|
+
super();
|
|
21
|
+
this.owner = new NativeIntegrationOwner(this.domain, optionsArg);
|
|
22
|
+
this.configFlow = new PanasonicVieraConfigFlow({}, this.owner.createFlowScope());
|
|
12
23
|
}
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
return
|
|
24
|
+
setup(configArg, contextArg) {
|
|
25
|
+
const config = normalizePanasonicVieraConfig(configArg);
|
|
26
|
+
return this.owner.runSetup(contextArg, config.homeId, async (lease) => {
|
|
27
|
+
const client = new PanasonicVieraClient(config, { ...lease.context, abortSignal: lease.signal });
|
|
28
|
+
this.clients.set(client, undefined);
|
|
29
|
+
let attemptedCleanup = false;
|
|
30
|
+
lease.own(async () => {
|
|
31
|
+
const runtime = this.clients.get(client);
|
|
32
|
+
if (attemptedCleanup)
|
|
33
|
+
await (runtime ? runtime.retryCleanupOwned() : client.retryCleanup());
|
|
34
|
+
else {
|
|
35
|
+
attemptedCleanup = true;
|
|
36
|
+
await (runtime ? runtime.closeOwned() : client.destroy());
|
|
37
|
+
}
|
|
38
|
+
this.clients.delete(client);
|
|
39
|
+
});
|
|
40
|
+
const snapshot = await client.start(lease.signal);
|
|
41
|
+
lease.assertOpen();
|
|
42
|
+
if (client.isClosed)
|
|
43
|
+
throw new Error('Panasonic Viera setup was cancelled.');
|
|
44
|
+
const runtime = new PanasonicVieraRuntime(client, snapshot, lease);
|
|
45
|
+
this.clients.set(client, runtime);
|
|
46
|
+
lease.promoteToRuntime();
|
|
47
|
+
return runtime;
|
|
48
|
+
});
|
|
16
49
|
}
|
|
50
|
+
destroy() { return this.owner.close(); }
|
|
51
|
+
retryCleanup() { return this.owner.retryCleanup(); }
|
|
17
52
|
}
|
|
18
53
|
export class HomeAssistantPanasonicVieraIntegration extends PanasonicVieraIntegration {
|
|
19
54
|
}
|
|
20
|
-
|
|
55
|
+
class PanasonicVieraRuntime {
|
|
56
|
+
client;
|
|
57
|
+
admittedSnapshot;
|
|
58
|
+
lease;
|
|
59
|
+
domain = panasonicVieraDomain;
|
|
60
|
+
deviceId;
|
|
61
|
+
operations = new Set();
|
|
62
|
+
closePromise;
|
|
63
|
+
constructor(client, admittedSnapshot, lease) {
|
|
64
|
+
this.client = client;
|
|
65
|
+
this.admittedSnapshot = admittedSnapshot;
|
|
66
|
+
this.lease = lease;
|
|
67
|
+
this.deviceId = PanasonicVieraMapper.deviceId(admittedSnapshot);
|
|
68
|
+
}
|
|
69
|
+
isHealthy() { return this.client.isHealthy; }
|
|
70
|
+
devices(abortSignalArg) {
|
|
71
|
+
return this.track(async () => PanasonicVieraMapper.toDevices(await this.client.getSnapshot(abortSignalArg)));
|
|
72
|
+
}
|
|
73
|
+
entities() {
|
|
74
|
+
return this.track(async () => PanasonicVieraMapper.toEntities(await this.client.getSnapshot()));
|
|
75
|
+
}
|
|
76
|
+
callService(requestArg) {
|
|
77
|
+
return this.track(() => this.performService(requestArg));
|
|
78
|
+
}
|
|
79
|
+
async performService(requestArg) {
|
|
80
|
+
const request = panasonicVieraRecord(requestArg, ['domain', 'service', 'target', 'data']);
|
|
81
|
+
if (request.domain !== this.domain && request.domain !== 'button' || request.service !== 'press') {
|
|
82
|
+
throw new TypeError('Panasonic Viera supports exact-target button.press only.');
|
|
83
|
+
}
|
|
84
|
+
const target = panasonicVieraRecord(request.target, ['deviceId', 'entityId']);
|
|
85
|
+
if (target.deviceId !== undefined && target.deviceId !== this.deviceId || target.deviceId === undefined && target.entityId === undefined) {
|
|
86
|
+
throw new TypeError('Panasonic Viera requires an exact connected target.');
|
|
87
|
+
}
|
|
88
|
+
const data = request.data === undefined ? {} : panasonicVieraRecord(request.data, ['key']);
|
|
89
|
+
const snapshot = await this.client.getSnapshot();
|
|
90
|
+
let key;
|
|
91
|
+
if (target.entityId !== undefined) {
|
|
92
|
+
const entityKey = snapshot.profile.keys.find((keyArg) => PanasonicVieraMapper.keyEntityId(snapshot, keyArg) === target.entityId);
|
|
93
|
+
if (!entityKey || data.key !== undefined && data.key !== entityKey)
|
|
94
|
+
throw new TypeError('Panasonic Viera button target and key must agree.');
|
|
95
|
+
key = entityKey;
|
|
96
|
+
}
|
|
97
|
+
else
|
|
98
|
+
key = this.admittedKey(snapshot, data.key);
|
|
99
|
+
return { success: true, data: await this.client.sendKey(key) };
|
|
100
|
+
}
|
|
101
|
+
writeFeature(requestArg, abortSignalArg) {
|
|
102
|
+
return this.track(() => this.performWrite(requestArg, abortSignalArg));
|
|
103
|
+
}
|
|
104
|
+
async performWrite(requestArg, abortSignalArg) {
|
|
105
|
+
const request = panasonicVieraRecord(requestArg, ['device', 'feature', 'value']);
|
|
106
|
+
const device = panasonicVieraRecord(request.device, ['id', 'integrationDomain', 'name', 'room', 'protocol', 'manufacturer', 'model', 'online', 'features', 'state', 'metadata']);
|
|
107
|
+
if (device.id !== this.deviceId || device.integrationDomain !== this.domain)
|
|
108
|
+
throw new TypeError('Panasonic Viera feature target belongs to another connection.');
|
|
109
|
+
if (device.metadata !== undefined && panasonicVieraRecord(device.metadata).homeId !== this.admittedSnapshot.homeId) {
|
|
110
|
+
throw new TypeError('Panasonic Viera feature target belongs to another home.');
|
|
111
|
+
}
|
|
112
|
+
const feature = panasonicVieraRecord(request.feature, ['id', 'capability', 'name', 'readable', 'writable', 'unit']);
|
|
113
|
+
if (feature.id !== 'remote_key' || feature.capability !== 'media' || feature.readable !== false || feature.writable !== true || feature.unit !== undefined) {
|
|
114
|
+
throw new TypeError('Panasonic Viera writes require the connected write-only remote_key feature.');
|
|
115
|
+
}
|
|
116
|
+
const snapshot = await this.client.getSnapshot(abortSignalArg);
|
|
117
|
+
return { success: true, data: await this.client.sendKey(this.admittedKey(snapshot, request.value), abortSignalArg) };
|
|
118
|
+
}
|
|
119
|
+
destroy() { return this.lease.close(); }
|
|
120
|
+
/** The lease owns this logical drain, including work beyond an individual protocol call. */
|
|
121
|
+
closeOwned() {
|
|
122
|
+
if (!this.closePromise) {
|
|
123
|
+
const operations = [...this.operations];
|
|
124
|
+
this.closePromise = Promise.resolve().then(() => drainPanasonicVieraCleanup([this.client.destroy()], operations, 'Panasonic Viera runtime cleanup failed.'));
|
|
125
|
+
}
|
|
126
|
+
return this.closePromise;
|
|
127
|
+
}
|
|
128
|
+
retryCleanupOwned() {
|
|
129
|
+
return drainPanasonicVieraCleanup([this.client.retryCleanup()], [...this.operations], 'Panasonic Viera runtime explicit cleanup retry failed.');
|
|
130
|
+
}
|
|
131
|
+
track(executeArg) {
|
|
132
|
+
try {
|
|
133
|
+
this.lease.assertOpen();
|
|
134
|
+
}
|
|
135
|
+
catch (errorArg) {
|
|
136
|
+
return Promise.reject(errorArg);
|
|
137
|
+
}
|
|
138
|
+
if (this.closePromise || this.client.isClosed)
|
|
139
|
+
return Promise.reject(new Error('Panasonic Viera runtime is closed.'));
|
|
140
|
+
if (this.operations.size !== 0)
|
|
141
|
+
return Promise.reject(new Error('Panasonic Viera runtime has an active operation.'));
|
|
142
|
+
const operation = Promise.resolve().then(executeArg).finally(() => this.operations.delete(operation));
|
|
143
|
+
this.operations.add(operation);
|
|
144
|
+
return operation;
|
|
145
|
+
}
|
|
146
|
+
admittedKey(snapshotArg, valueArg) {
|
|
147
|
+
const key = snapshotArg.profile.keys.find((keyArg) => keyArg === valueArg);
|
|
148
|
+
if (!key)
|
|
149
|
+
throw new TypeError('Panasonic Viera key was not admitted for this connection.');
|
|
150
|
+
return key;
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFuYXNvbmljX3ZpZXJhLmNsYXNzZXMuaW50ZWdyYXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi90cy9pbnRlZ3JhdGlvbnMvcGFuYXNvbmljX3ZpZXJhL3BhbmFzb25pY192aWVyYS5jbGFzc2VzLmludGVncmF0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUN4RSxPQUFPLEVBQUUsc0JBQXNCLEVBQStELE1BQU0sOENBQThDLENBQUM7QUFFbkosT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDM0UsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFDbkYsT0FBTyxFQUFFLHVDQUF1QyxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDekYsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFFbkUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLHFCQUFxQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDekYsT0FBTyxFQUFFLDBCQUEwQixFQUFFLDZCQUE2QixFQUFFLG9CQUFvQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFFbEksTUFBTSxPQUFPLHlCQUEwQixTQUFRLGVBQXNDO0lBQ25FLE1BQU0sR0FBRyxvQkFBb0IsQ0FBQztJQUM5QixXQUFXLEdBQUcsaUJBQWlCLENBQUM7SUFDaEMsTUFBTSxHQUFHLGlCQUFpQixDQUFDO0lBQzNCLG1CQUFtQixHQUFHLHVDQUF1QyxFQUFFLENBQUM7SUFDaEUsVUFBVSxDQUEyQjtJQUNyQyxRQUFRLEdBQUcscUJBQXFCLENBQUMsUUFBUSxDQUFDO0lBQ3pDLEtBQUssQ0FBeUI7SUFDL0MsNEVBQTRFO0lBQzNELE9BQU8sR0FBRyxJQUFJLEdBQUcsRUFBMkQsQ0FBQztJQUU5RixZQUFtQixVQUFVLEdBQW1DLEVBQUU7UUFDaEUsS0FB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
|
|
@@ -1 +1,2 @@
|
|
|
1
|
-
|
|
1
|
+
import { DiscoveryDescriptor } from '../../core/classes.discoverydescriptor.js';
|
|
2
|
+
export declare function createPanasonicVieraDiscoveryDescriptor(): DiscoveryDescriptor;
|
|
@@ -1,4 +1,31 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
|
|
1
|
+
import { DiscoveryDescriptor } from '../../core/classes.discoverydescriptor.js';
|
|
2
|
+
import { panasonicVieraRecord } from './panasonic_viera.validation.js';
|
|
3
|
+
class PanasonicVieraManualMatcher {
|
|
4
|
+
id = 'panasonic_viera-manual-match';
|
|
5
|
+
source = 'manual';
|
|
6
|
+
async matches(inputArg) {
|
|
7
|
+
try {
|
|
8
|
+
const input = panasonicVieraRecord(inputArg);
|
|
9
|
+
if (input.integrationDomain !== 'panasonic_viera' || typeof input.host !== 'string' || !input.host) {
|
|
10
|
+
return { matched: false, confidence: 'low', reason: 'Select an explicit Panasonic Viera manual endpoint.' };
|
|
11
|
+
}
|
|
12
|
+
const candidate = { source: 'manual', integrationDomain: 'panasonic_viera', host: input.host,
|
|
13
|
+
metadata: input.metadata === undefined ? undefined : panasonicVieraRecord(input.metadata) };
|
|
14
|
+
return { matched: true, confidence: 'low', reason: 'Manual endpoint hint only; setup must verify the selected description and current NRC service.', candidate };
|
|
15
|
+
}
|
|
16
|
+
catch {
|
|
17
|
+
return { matched: false, confidence: 'low', reason: 'Invalid Panasonic Viera manual hint.' };
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
class PanasonicVieraCandidateValidator {
|
|
22
|
+
id = 'panasonic_viera-candidate-validator';
|
|
23
|
+
async validate(candidateArg) {
|
|
24
|
+
return new PanasonicVieraManualMatcher().matches(candidateArg);
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
export function createPanasonicVieraDiscoveryDescriptor() {
|
|
28
|
+
return new DiscoveryDescriptor({ integrationDomain: 'panasonic_viera', displayName: 'Panasonic Viera' })
|
|
29
|
+
.addMatcher(new PanasonicVieraManualMatcher()).addValidator(new PanasonicVieraCandidateValidator());
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFuYXNvbmljX3ZpZXJhLmRpc2NvdmVyeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3RzL2ludGVncmF0aW9ucy9wYW5hc29uaWNfdmllcmEvcGFuYXNvbmljX3ZpZXJhLmRpc2NvdmVyeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUVoRixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUV2RSxNQUFNLDJCQUEyQjtJQUNmLEVBQUUsR0FBRyw4QkFBOEIsQ0FBQztJQUNwQyxNQUFNLEdBQUcsUUFBUSxDQUFDO0lBQzNCLEtBQUssQ0FBQyxPQUFPLENBQUMsUUFBaUI7UUFDcEMsSUFBSSxDQUFDO1lBQ0gsTUFBTSxLQUFLLEdBQUcsb0JBQW9CLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDN0MsSUFBSSxLQUFLLENBQUMsaUJBQWlCLEtBQUssaUJBQWlCLElBQUksT0FBTyxLQUFLLENBQUMsSUFBSSxLQUFLLFFBQVEsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQztnQkFDbkcsT0FBTyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUscURBQXFELEVBQUUsQ0FBQztZQUM5RyxDQUFDO1lBQ0QsTUFBTSxTQUFTLEdBQXdCLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxpQkFBaUIsRUFBRSxpQkFBaUIsRUFBRSxJQUFJLEVBQUUsS0FBSyxDQUFDLElBQUk7Z0JBQy9HLFFBQVEsRUFBRSxLQUFLLENBQUMsUUFBUSxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxvQkFBb0IsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztZQUM5RixPQUFPLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxnR0FBZ0csRUFBRSxTQUFTLEVBQUUsQ0FBQztRQUNuSyxDQUFDO1FBQUMsTUFBTSxDQUFDO1lBQ1AsT0FBTyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsc0NBQXNDLEVBQUUsQ0FBQztRQUMvRixDQUFDO0lBQ0gsQ0FBQztDQUNGO0FBRUQsTUFBTSxnQ0FBZ0M7SUFDcEIsRUFBRSxHQUFHLHFDQUFxQyxDQUFDO0lBQ3BELEtBQUssQ0FBQyxRQUFRLENBQUMsWUFBaUM7UUFDckQsT0FBTyxJQUFJLDJCQUEyQixFQUFFLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQ2pFLENBQUM7Q0FDRjtBQUVELE1BQU0sVUFBVSx1Q0FBdUM7SUFDckQsT0FBTyxJQUFJLG1CQUFtQixDQUFDLEVBQUUsaUJBQWlCLEVBQUUsaUJBQWlCLEVBQUUsV0FBVyxFQUFFLGlCQUFpQixFQUFFLENBQUM7U0FDckcsVUFBVSxDQUFDLElBQUksMkJBQTJCLEVBQUUsQ0FBQyxDQUFDLFlBQVksQ0FBQyxJQUFJLGdDQUFnQyxFQUFFLENBQUMsQ0FBQztBQUN4RyxDQUFDIn0=
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import type * as
|
|
2
|
-
import {
|
|
3
|
-
import type {
|
|
1
|
+
import type * as plugins from '../../plugins.js';
|
|
2
|
+
import type { IIntegrationEntity, ISimpleLocalSnapshot } from '../../core/index.js';
|
|
3
|
+
import type { IPanasonicVieraOfflineConfig, IPanasonicVieraSnapshot, TPanasonicVieraKey, TPanasonicVieraRawData } from './panasonic_viera.types.js';
|
|
4
4
|
export declare class PanasonicVieraMapper {
|
|
5
|
-
static
|
|
6
|
-
static
|
|
7
|
-
static toDevices(snapshotArg:
|
|
8
|
-
static toEntities(snapshotArg:
|
|
9
|
-
|
|
10
|
-
static
|
|
5
|
+
static deviceId(snapshotArg: Pick<IPanasonicVieraSnapshot, 'homeId' | 'profile'>): string;
|
|
6
|
+
static keyEntityId(snapshotArg: Pick<IPanasonicVieraSnapshot, 'homeId' | 'profile'>, keyArg: TPanasonicVieraKey): string;
|
|
7
|
+
static toDevices(snapshotArg: IPanasonicVieraSnapshot): plugins.shxInterfaces.data.IDeviceDefinition[];
|
|
8
|
+
static toEntities(snapshotArg: IPanasonicVieraSnapshot): IIntegrationEntity<null>[];
|
|
9
|
+
/** Pure conversion of supplied data; unavailable and read-only regardless of the input's claims. */
|
|
10
|
+
static toSnapshotFromRaw(configArg: IPanasonicVieraOfflineConfig, rawDataArg: TPanasonicVieraRawData): ISimpleLocalSnapshot;
|
|
11
11
|
}
|
|
@@ -1,157 +1,39 @@
|
|
|
1
|
-
import { SimpleLocalMapper } from '../../core/
|
|
2
|
-
import {
|
|
1
|
+
import { SimpleLocalMapper } from '../../core/classes.simplelocalintegration.js';
|
|
2
|
+
import { panasonicVieraDomain } from './panasonic_viera.types.js';
|
|
3
3
|
export class PanasonicVieraMapper {
|
|
4
|
-
static
|
|
5
|
-
return
|
|
4
|
+
static deviceId(snapshotArg) {
|
|
5
|
+
return `panasonic_viera:${encodeURIComponent(snapshotArg.homeId)}:${encodeURIComponent(snapshotArg.profile.identity.udn)}`;
|
|
6
6
|
}
|
|
7
|
-
static
|
|
8
|
-
return this.
|
|
7
|
+
static keyEntityId(snapshotArg, keyArg) {
|
|
8
|
+
return `${this.deviceId(snapshotArg)}:key:${keyArg}`;
|
|
9
9
|
}
|
|
10
10
|
static toDevices(snapshotArg) {
|
|
11
|
-
|
|
11
|
+
const identity = snapshotArg.profile.identity;
|
|
12
|
+
return [{
|
|
13
|
+
id: this.deviceId(snapshotArg), integrationDomain: panasonicVieraDomain,
|
|
14
|
+
name: snapshotArg.name, manufacturer: identity.manufacturer, model: identity.modelName,
|
|
15
|
+
protocol: 'http', online: true,
|
|
16
|
+
features: [{ id: 'remote_key', capability: 'media', name: 'Remote key', readable: false, writable: snapshotArg.profile.keys.length > 0 }],
|
|
17
|
+
state: [],
|
|
18
|
+
metadata: { homeId: snapshotArg.homeId, udn: identity.udn, family: snapshotArg.profile.family,
|
|
19
|
+
advertisedKeys: [...snapshotArg.profile.keys], observedAt: identity.observedAt,
|
|
20
|
+
lanAuthenticated: false, confirmation: 'soap-response' },
|
|
21
|
+
}];
|
|
12
22
|
}
|
|
13
23
|
static toEntities(snapshotArg) {
|
|
14
|
-
return
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
const
|
|
26
|
-
|
|
27
|
-
return parsedRawData;
|
|
28
|
-
}
|
|
29
|
-
const host = configArg.host || hostFromUrl(configArg.url);
|
|
30
|
-
const port = configArg.port || (host ? panasonicVieraDefaultPort : undefined);
|
|
31
|
-
const name = configArg.name || stringValue(deviceInfo?.friendlyName) || stringValue(deviceInfo?.FriendlyName) || panasonicVieraDefaultName;
|
|
32
|
-
const manufacturer = stringValue(deviceInfo?.manufacturer) || stringValue(deviceInfo?.Manufacturer) || 'Panasonic';
|
|
33
|
-
const model = stringValue(deviceInfo?.modelNumber) || stringValue(deviceInfo?.modelName) || stringValue(deviceInfo?.ModelNumber) || 'Panasonic Viera';
|
|
34
|
-
const udn = stringValue(deviceInfo?.UDN) || stringValue(deviceInfo?.udn);
|
|
35
|
-
const volume = numberValue(rawObject.volume);
|
|
36
|
-
const muted = booleanValue(rawObject.muted);
|
|
37
|
-
const entities = [
|
|
38
|
-
{
|
|
39
|
-
id: 'media_player',
|
|
40
|
-
name,
|
|
41
|
-
platform: 'media_player',
|
|
42
|
-
state: rawObject.state || 'on',
|
|
43
|
-
writable: true,
|
|
44
|
-
attributes: cleanAttributes({
|
|
45
|
-
volumeLevel: volume === undefined ? undefined : volume / 100,
|
|
46
|
-
volumePercent: volume,
|
|
47
|
-
muted,
|
|
48
|
-
tvType: rawObject.tvType,
|
|
49
|
-
}),
|
|
50
|
-
},
|
|
51
|
-
{
|
|
52
|
-
id: 'remote',
|
|
53
|
-
name: `${name} Remote`,
|
|
54
|
-
platform: 'button',
|
|
55
|
-
state: false,
|
|
56
|
-
writable: true,
|
|
57
|
-
attributes: { action: 'press' },
|
|
58
|
-
},
|
|
59
|
-
];
|
|
60
|
-
if (volume !== undefined) {
|
|
61
|
-
entities.push({
|
|
62
|
-
id: 'volume',
|
|
63
|
-
name: 'Volume',
|
|
64
|
-
platform: 'sensor',
|
|
65
|
-
state: volume,
|
|
66
|
-
unit: '%',
|
|
67
|
-
deviceClass: 'volume',
|
|
68
|
-
attributes: { source: 'RenderingControl.GetVolume' },
|
|
69
|
-
});
|
|
70
|
-
}
|
|
71
|
-
if (muted !== undefined) {
|
|
72
|
-
entities.push({
|
|
73
|
-
id: 'muted',
|
|
74
|
-
name: 'Muted',
|
|
75
|
-
platform: 'binary_sensor',
|
|
76
|
-
state: muted,
|
|
77
|
-
attributes: { source: 'RenderingControl.GetMute' },
|
|
78
|
-
});
|
|
79
|
-
}
|
|
80
|
-
return {
|
|
81
|
-
device: {
|
|
82
|
-
id: configArg.uniqueId || configArg.deviceId || udn || (host ? `${host}:${port || panasonicVieraDefaultPort}` : undefined) || panasonicVieraDefaultName,
|
|
83
|
-
name,
|
|
84
|
-
manufacturer,
|
|
85
|
-
model,
|
|
86
|
-
serialNumber: udn,
|
|
87
|
-
host,
|
|
88
|
-
port,
|
|
89
|
-
protocol: 'http',
|
|
90
|
-
attributes: cleanAttributes({ udn, rawDeviceInfo: deviceInfo }),
|
|
91
|
-
},
|
|
92
|
-
entities,
|
|
93
|
-
online: true,
|
|
94
|
-
updatedAt: stringValue(rawObject.fetchedAt) || new Date().toISOString(),
|
|
95
|
-
source: 'http',
|
|
96
|
-
rawData: parsedRawData,
|
|
97
|
-
};
|
|
24
|
+
return snapshotArg.profile.keys.map((keyArg) => ({
|
|
25
|
+
id: this.keyEntityId(snapshotArg, keyArg), uniqueId: this.keyEntityId(snapshotArg, keyArg),
|
|
26
|
+
deviceId: this.deviceId(snapshotArg), integrationDomain: panasonicVieraDomain, platform: 'button',
|
|
27
|
+
name: `${snapshotArg.name} ${keyArg}`, state: null, available: true,
|
|
28
|
+
attributes: { key: keyArg, confirmation: 'soap-response', observedAt: snapshotArg.profile.identity.observedAt },
|
|
29
|
+
}));
|
|
30
|
+
}
|
|
31
|
+
/** Pure conversion of supplied data; unavailable and read-only regardless of the input's claims. */
|
|
32
|
+
static toSnapshotFromRaw(configArg, rawDataArg) {
|
|
33
|
+
const profile = { domain: panasonicVieraDomain, displayName: 'Panasonic Viera offline data', status: 'read-only-runtime',
|
|
34
|
+
platforms: ['sensor'], manufacturer: 'Panasonic', defaultName: 'Panasonic Viera offline data', metadata: {} };
|
|
35
|
+
const snapshot = SimpleLocalMapper.toSnapshot({ profile, config: configArg, rawData: rawDataArg, source: 'manual', online: false });
|
|
36
|
+
return { ...snapshot, online: false, source: 'manual', entities: snapshot.entities.map((entityArg) => ({ ...entityArg, available: false, writable: false })) };
|
|
98
37
|
}
|
|
99
38
|
}
|
|
100
|
-
|
|
101
|
-
if (typeof valueArg !== 'string') {
|
|
102
|
-
return valueArg;
|
|
103
|
-
}
|
|
104
|
-
try {
|
|
105
|
-
return JSON.parse(valueArg);
|
|
106
|
-
}
|
|
107
|
-
catch {
|
|
108
|
-
return valueArg;
|
|
109
|
-
}
|
|
110
|
-
};
|
|
111
|
-
const objectValue = (valueArg) => {
|
|
112
|
-
return valueArg && typeof valueArg === 'object' && !Array.isArray(valueArg) ? valueArg : undefined;
|
|
113
|
-
};
|
|
114
|
-
const stringValue = (valueArg) => {
|
|
115
|
-
return typeof valueArg === 'string' && valueArg.trim() ? valueArg.trim() : undefined;
|
|
116
|
-
};
|
|
117
|
-
const numberValue = (valueArg) => {
|
|
118
|
-
if (typeof valueArg === 'number' && Number.isFinite(valueArg)) {
|
|
119
|
-
return valueArg;
|
|
120
|
-
}
|
|
121
|
-
if (typeof valueArg === 'string' && valueArg.trim() && Number.isFinite(Number(valueArg))) {
|
|
122
|
-
return Number(valueArg);
|
|
123
|
-
}
|
|
124
|
-
return undefined;
|
|
125
|
-
};
|
|
126
|
-
const booleanValue = (valueArg) => {
|
|
127
|
-
if (typeof valueArg === 'boolean') {
|
|
128
|
-
return valueArg;
|
|
129
|
-
}
|
|
130
|
-
if (typeof valueArg === 'number') {
|
|
131
|
-
return valueArg !== 0;
|
|
132
|
-
}
|
|
133
|
-
if (typeof valueArg === 'string') {
|
|
134
|
-
if (valueArg === '1' || valueArg.toLowerCase() === 'true') {
|
|
135
|
-
return true;
|
|
136
|
-
}
|
|
137
|
-
if (valueArg === '0' || valueArg.toLowerCase() === 'false') {
|
|
138
|
-
return false;
|
|
139
|
-
}
|
|
140
|
-
}
|
|
141
|
-
return undefined;
|
|
142
|
-
};
|
|
143
|
-
const cleanAttributes = (attributesArg) => {
|
|
144
|
-
return Object.fromEntries(Object.entries(attributesArg).filter(([, valueArg]) => valueArg !== undefined && valueArg !== null && valueArg !== ''));
|
|
145
|
-
};
|
|
146
|
-
const hostFromUrl = (urlArg) => {
|
|
147
|
-
if (!urlArg) {
|
|
148
|
-
return undefined;
|
|
149
|
-
}
|
|
150
|
-
try {
|
|
151
|
-
return new URL(urlArg.includes('://') ? urlArg : `http://${urlArg}`).hostname;
|
|
152
|
-
}
|
|
153
|
-
catch {
|
|
154
|
-
return undefined;
|
|
155
|
-
}
|
|
156
|
-
};
|
|
157
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFuYXNvbmljX3ZpZXJhLm1hcHBlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3RzL2ludGVncmF0aW9ucy9wYW5hc29uaWNfdmllcmEvcGFuYXNvbmljX3ZpZXJhLm1hcHBlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsaUJBQWlCLEVBQW1KLE1BQU0scUJBQXFCLENBQUM7QUFFek0sT0FBTyxFQUFFLHlCQUF5QixFQUFFLHlCQUF5QixFQUFFLHFCQUFxQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFFekgsTUFBTSxPQUFPLG9CQUFvQjtJQUN4QixNQUFNLENBQUMsVUFBVSxDQUFDLFVBQStFO1FBQ3RHLE9BQU8saUJBQWlCLENBQUMsVUFBVSxDQUFDLEVBQUUsR0FBRyxVQUFVLEVBQUUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE9BQU8sRUFBRSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsVUFBVSxDQUFDLE9BQU8sRUFBRSxVQUFVLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ2hLLENBQUM7SUFFTSxNQUFNLENBQUMsaUJBQWlCLENBQUMsU0FBZ0MsRUFBRSxVQUF3RDtRQUN4SCxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQztJQUNyRyxDQUFDO0lBRU0sTUFBTSxDQUFDLFNBQVMsQ0FBQyxXQUFpQztRQUN2RCxPQUFPLGlCQUFpQixDQUFDLFNBQVMsQ0FBQyxxQkFBcUIsRUFBRSxXQUFXLENBQUMsQ0FBQztJQUN6RSxDQUFDO0lBRU0sTUFBTSxDQUFDLFVBQVUsQ0FBQyxXQUFpQztRQUN4RCxPQUFPLGlCQUFpQixDQUFDLFVBQVUsQ0FBQyxxQkFBcUIsRUFBRSxXQUFXLENBQUMsQ0FBQztJQUMxRSxDQUFDO0lBRU0s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
|
|
39
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFuYXNvbmljX3ZpZXJhLm1hcHBlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3RzL2ludGVncmF0aW9ucy9wYW5hc29uaWNfdmllcmEvcGFuYXNvbmljX3ZpZXJhLm1hcHBlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQztBQUdqRixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUVsRSxNQUFNLE9BQU8sb0JBQW9CO0lBQ3hCLE1BQU0sQ0FBQyxRQUFRLENBQUMsV0FBZ0U7UUFDckYsT0FBTyxtQkFBbUIsa0JBQWtCLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxJQUFJLGtCQUFrQixDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7SUFDN0gsQ0FBQztJQUVNLE1BQU0sQ0FBQyxXQUFXLENBQUMsV0FBZ0UsRUFBRSxNQUEwQjtRQUNwSCxPQUFPLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsUUFBUSxNQUFNLEVBQUUsQ0FBQztJQUN2RCxDQUFDO0lBRU0sTUFBTSxDQUFDLFNBQVMsQ0FBQyxXQUFvQztRQUMxRCxNQUFNLFFBQVEsR0FBRyxXQUFXLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQztRQUM5QyxPQUFPLENBQUM7Z0JBQ04sRUFBRSxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLEVBQUUsaUJBQWlCLEVBQUUsb0JBQW9CO2dCQUN2RSxJQUFJLEVBQUUsV0FBVyxDQUFDLElBQUksRUFBRSxZQUFZLEVBQUUsUUFBUSxDQUFDLFlBQVksRUFBRSxLQUFLLEVBQUUsUUFBUSxDQUFDLFNBQVM7Z0JBQ3RGLFFBQVEsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLElBQUk7Z0JBQzlCLFFBQVEsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLFlB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
|