@fastybird/smart-panel-backend 1.1.0-alpha.3 → 1.1.0-alpha.30
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/dist/app.module.js +8 -0
- package/dist/app.module.js.map +1 -1
- package/dist/common/filters/conflict-exception.filter.d.ts +6 -0
- package/dist/common/filters/conflict-exception.filter.js +59 -0
- package/dist/common/filters/conflict-exception.filter.js.map +1 -0
- package/dist/common/filters/global-error.filter.js +1 -4
- package/dist/common/filters/global-error.filter.js.map +1 -1
- package/dist/common/filters/global-filters.d.ts +3 -0
- package/dist/common/filters/global-filters.js +22 -0
- package/dist/common/filters/global-filters.js.map +1 -0
- package/dist/common/filters/unprocessable-entity-exception.filter.d.ts +1 -0
- package/dist/common/filters/unprocessable-entity-exception.filter.js +15 -3
- package/dist/common/filters/unprocessable-entity-exception.filter.js.map +1 -1
- package/dist/dataSource.js +1 -0
- package/dist/dataSource.js.map +1 -1
- package/dist/main.js +2 -7
- package/dist/main.js.map +1 -1
- package/dist/migrations/1000000000026-AddHardwareInputCategories.d.ts +7 -0
- package/dist/migrations/1000000000026-AddHardwareInputCategories.js +364 -0
- package/dist/migrations/1000000000026-AddHardwareInputCategories.js.map +1 -0
- package/dist/modules/devices/controllers/channels.controller.d.ts +5 -1
- package/dist/modules/devices/controllers/channels.controller.js +34 -2
- package/dist/modules/devices/controllers/channels.controller.js.map +1 -1
- package/dist/modules/devices/controllers/channels.properties.controller.js +21 -4
- package/dist/modules/devices/controllers/channels.properties.controller.js.map +1 -1
- package/dist/modules/devices/controllers/devices.channels.controller.d.ts +5 -1
- package/dist/modules/devices/controllers/devices.channels.controller.js +38 -2
- package/dist/modules/devices/controllers/devices.channels.controller.js.map +1 -1
- package/dist/modules/devices/controllers/devices.channels.properties.controller.js +21 -4
- package/dist/modules/devices/controllers/devices.channels.properties.controller.js.map +1 -1
- package/dist/modules/devices/devices.constants.d.ts +6 -0
- package/dist/modules/devices/devices.constants.js +6 -0
- package/dist/modules/devices/devices.constants.js.map +1 -1
- package/dist/modules/devices/devices.module.js +20 -0
- package/dist/modules/devices/devices.module.js.map +1 -1
- package/dist/modules/devices/devices.openapi.d.ts +3 -1
- package/dist/modules/devices/devices.openapi.js +7 -0
- package/dist/modules/devices/devices.openapi.js.map +1 -1
- package/dist/modules/devices/dto/channel-input-occurrence.dto.d.ts +10 -0
- package/dist/modules/devices/dto/channel-input-occurrence.dto.js +99 -0
- package/dist/modules/devices/dto/channel-input-occurrence.dto.js.map +1 -0
- package/dist/modules/devices/models/channel-input-capabilities.model.d.ts +20 -0
- package/dist/modules/devices/models/channel-input-capabilities.model.js +111 -0
- package/dist/modules/devices/models/channel-input-capabilities.model.js.map +1 -0
- package/dist/modules/devices/models/channel-input-occurrence.model.d.ts +22 -0
- package/dist/modules/devices/models/channel-input-occurrence.model.js +154 -0
- package/dist/modules/devices/models/channel-input-occurrence.model.js.map +1 -0
- package/dist/modules/devices/services/channel-input-deduplication.service.d.ts +17 -0
- package/dist/modules/devices/services/channel-input-deduplication.service.js +88 -0
- package/dist/modules/devices/services/channel-input-deduplication.service.js.map +1 -0
- package/dist/modules/devices/services/channel-input-occurrences.service.d.ts +21 -0
- package/dist/modules/devices/services/channel-input-occurrences.service.js +163 -0
- package/dist/modules/devices/services/channel-input-occurrences.service.js.map +1 -0
- package/dist/modules/devices/services/channels.properties.service.d.ts +31 -3
- package/dist/modules/devices/services/channels.properties.service.js +346 -51
- package/dist/modules/devices/services/channels.properties.service.js.map +1 -1
- package/dist/modules/devices/services/channels.service.js +42 -38
- package/dist/modules/devices/services/channels.service.js.map +1 -1
- package/dist/modules/devices/services/command-latency-trace-collector.service.d.ts +101 -0
- package/dist/modules/devices/services/command-latency-trace-collector.service.js +451 -0
- package/dist/modules/devices/services/command-latency-trace-collector.service.js.map +1 -0
- package/dist/modules/devices/services/device-structure-lock.service.d.ts +10 -2
- package/dist/modules/devices/services/device-structure-lock.service.js +86 -7
- package/dist/modules/devices/services/device-structure-lock.service.js.map +1 -1
- package/dist/modules/devices/services/devices.service.js +37 -33
- package/dist/modules/devices/services/devices.service.js.map +1 -1
- package/dist/modules/devices/services/module-reset.service.d.ts +3 -1
- package/dist/modules/devices/services/module-reset.service.js +21 -16
- package/dist/modules/devices/services/module-reset.service.js.map +1 -1
- package/dist/modules/devices/services/property-command-dispatch.service.d.ts +45 -0
- package/dist/modules/devices/services/property-command-dispatch.service.js +227 -0
- package/dist/modules/devices/services/property-command-dispatch.service.js.map +1 -0
- package/dist/modules/devices/services/property-command-window.service.d.ts +71 -0
- package/dist/modules/devices/services/property-command-window.service.js +206 -0
- package/dist/modules/devices/services/property-command-window.service.js.map +1 -0
- package/dist/modules/devices/services/property-command.service.d.ts +20 -3
- package/dist/modules/devices/services/property-command.service.js +56 -10
- package/dist/modules/devices/services/property-command.service.js.map +1 -1
- package/dist/modules/devices/services/property-metadata.service.d.ts +31 -0
- package/dist/modules/devices/services/property-metadata.service.js +160 -0
- package/dist/modules/devices/services/property-metadata.service.js.map +1 -0
- package/dist/modules/devices/services/property-state-coordinator.service.d.ts +4 -0
- package/dist/modules/devices/services/property-state-coordinator.service.js +35 -0
- package/dist/modules/devices/services/property-state-coordinator.service.js.map +1 -0
- package/dist/modules/devices/services/property-value-lock.service.d.ts +3 -1
- package/dist/modules/devices/services/property-value-lock.service.js +13 -2
- package/dist/modules/devices/services/property-value-lock.service.js.map +1 -1
- package/dist/modules/devices/services/property-value.service.d.ts +1 -0
- package/dist/modules/devices/services/property-value.service.js +4 -0
- package/dist/modules/devices/services/property-value.service.js.map +1 -1
- package/dist/modules/devices/utils/schema.utils.js +1 -1
- package/dist/modules/devices/utils/schema.utils.js.map +1 -1
- package/dist/modules/platform/platforms/raspberry.platform.js +5 -10
- package/dist/modules/platform/platforms/raspberry.platform.js.map +1 -1
- package/dist/modules/platform/services/platform.service.d.ts +13 -4
- package/dist/modules/platform/services/platform.service.js +57 -35
- package/dist/modules/platform/services/platform.service.js.map +1 -1
- package/dist/modules/remote-access/dto/update-config.dto.js +5 -0
- package/dist/modules/remote-access/dto/update-config.dto.js.map +1 -1
- package/dist/modules/remote-access/validators/is-remote-access-url.validator.js +5 -2
- package/dist/modules/remote-access/validators/is-remote-access-url.validator.js.map +1 -1
- package/dist/modules/system/scripts/update-worker.sh +1168 -61
- package/dist/modules/system/services/privileged-worker.service.d.ts +13 -0
- package/dist/modules/system/services/privileged-worker.service.js +192 -31
- package/dist/modules/system/services/privileged-worker.service.js.map +1 -1
- package/dist/modules/system/services/system.service.d.ts +2 -0
- package/dist/modules/system/services/system.service.js +22 -1
- package/dist/modules/system/services/system.service.js.map +1 -1
- package/dist/modules/system/services/update-executor.service.d.ts +20 -2
- package/dist/modules/system/services/update-executor.service.js +272 -26
- package/dist/modules/system/services/update-executor.service.js.map +1 -1
- package/dist/modules/websocket/gateway/websocket.gateway.d.ts +4 -1
- package/dist/modules/websocket/gateway/websocket.gateway.js +28 -5
- package/dist/modules/websocket/gateway/websocket.gateway.js.map +1 -1
- package/dist/modules/websocket/services/command-acknowledgement-trace.service.d.ts +143 -0
- package/dist/modules/websocket/services/command-acknowledgement-trace.service.js +523 -0
- package/dist/modules/websocket/services/command-acknowledgement-trace.service.js.map +1 -0
- package/dist/modules/websocket/websocket.module.js +9 -1
- package/dist/modules/websocket/websocket.module.js.map +1 -1
- package/dist/plugins/devices-home-assistant/devices-home-assistant.openapi.d.ts +2 -2
- package/dist/plugins/devices-home-assistant/devices-home-assistant.plugin.d.ts +6 -1
- package/dist/plugins/devices-home-assistant/devices-home-assistant.plugin.js +16 -1
- package/dist/plugins/devices-home-assistant/devices-home-assistant.plugin.js.map +1 -1
- package/dist/plugins/devices-home-assistant/dto/mapping-preview.dto.d.ts +1 -0
- package/dist/plugins/devices-home-assistant/dto/mapping-preview.dto.js +11 -0
- package/dist/plugins/devices-home-assistant/dto/mapping-preview.dto.js.map +1 -1
- package/dist/plugins/devices-home-assistant/mappers/button.entity.mapper.service.d.ts +19 -0
- package/dist/plugins/devices-home-assistant/mappers/button.entity.mapper.service.js +51 -0
- package/dist/plugins/devices-home-assistant/mappers/button.entity.mapper.service.js.map +1 -0
- package/dist/plugins/devices-home-assistant/mappings/definitions/entity-mappings.yaml +56 -7
- package/dist/plugins/devices-home-assistant/models/mapping-preview.model.d.ts +1 -0
- package/dist/plugins/devices-home-assistant/models/mapping-preview.model.js +11 -0
- package/dist/plugins/devices-home-assistant/models/mapping-preview.model.js.map +1 -1
- package/dist/plugins/devices-home-assistant/services/device-adoption.service.js +17 -0
- package/dist/plugins/devices-home-assistant/services/device-adoption.service.js.map +1 -1
- package/dist/plugins/devices-home-assistant/services/home-assistant-raw-event.service.d.ts +27 -0
- package/dist/plugins/devices-home-assistant/services/home-assistant-raw-event.service.js +271 -0
- package/dist/plugins/devices-home-assistant/services/home-assistant-raw-event.service.js.map +1 -0
- package/dist/plugins/devices-home-assistant/services/home-assistant.ws.service.d.ts +2 -2
- package/dist/plugins/devices-home-assistant/services/home-assistant.ws.service.js +33 -14
- package/dist/plugins/devices-home-assistant/services/home-assistant.ws.service.js.map +1 -1
- package/dist/plugins/devices-home-assistant/services/mapping-preview.service.js +24 -4
- package/dist/plugins/devices-home-assistant/services/mapping-preview.service.js.map +1 -1
- package/dist/plugins/devices-home-assistant/services/state-changed.event.service.d.ts +4 -1
- package/dist/plugins/devices-home-assistant/services/state-changed.event.service.js +84 -5
- package/dist/plugins/devices-home-assistant/services/state-changed.event.service.js.map +1 -1
- package/dist/plugins/devices-home-assistant/services/wizard.service.js +1 -0
- package/dist/plugins/devices-home-assistant/services/wizard.service.js.map +1 -1
- package/dist/plugins/devices-home-assistant/utils/ha-event.utils.d.ts +2 -0
- package/dist/plugins/devices-home-assistant/utils/ha-event.utils.js +50 -0
- package/dist/plugins/devices-home-assistant/utils/ha-event.utils.js.map +1 -0
- package/dist/plugins/devices-homekit/listeners/homekit-event.listener.d.ts +4 -1
- package/dist/plugins/devices-homekit/listeners/homekit-event.listener.js +39 -4
- package/dist/plugins/devices-homekit/listeners/homekit-event.listener.js.map +1 -1
- package/dist/plugins/devices-homekit/mappers/base.mapper.js +30 -6
- package/dist/plugins/devices-homekit/mappers/base.mapper.js.map +1 -1
- package/dist/plugins/devices-homekit/mappers/button.mapper.d.ts +15 -0
- package/dist/plugins/devices-homekit/mappers/button.mapper.js +143 -0
- package/dist/plugins/devices-homekit/mappers/button.mapper.js.map +1 -0
- package/dist/plugins/devices-homekit/mappers/characteristic-write.d.ts +2 -0
- package/dist/plugins/devices-homekit/mappers/characteristic-write.js +17 -0
- package/dist/plugins/devices-homekit/mappers/characteristic-write.js.map +1 -0
- package/dist/plugins/devices-homekit/mappers/homekit-mapper.interface.d.ts +17 -1
- package/dist/plugins/devices-homekit/mappers/thermostat-coordinator.d.ts +7 -0
- package/dist/plugins/devices-homekit/mappers/thermostat-coordinator.js +96 -84
- package/dist/plugins/devices-homekit/mappers/thermostat-coordinator.js.map +1 -1
- package/dist/plugins/devices-homekit/services/homekit-mapper-registry.service.d.ts +5 -1
- package/dist/plugins/devices-homekit/services/homekit-mapper-registry.service.js +42 -0
- package/dist/plugins/devices-homekit/services/homekit-mapper-registry.service.js.map +1 -1
- package/dist/plugins/devices-homey/mappings/definitions/channels.yaml +50 -0
- package/dist/plugins/devices-homey/mappings/definitions/devices.yaml +18 -0
- package/dist/plugins/devices-homey/mappings/definitions/properties.yaml +55 -0
- package/dist/plugins/devices-homey/mappings/device-support.js +10 -0
- package/dist/plugins/devices-homey/mappings/device-support.js.map +1 -1
- package/dist/plugins/devices-homey/mappings/mapping-loader.service.d.ts +1 -0
- package/dist/plugins/devices-homey/mappings/mapping-loader.service.js +66 -8
- package/dist/plugins/devices-homey/mappings/mapping-loader.service.js.map +1 -1
- package/dist/plugins/devices-homey/models/inventory.model.d.ts +2 -1
- package/dist/plugins/devices-homey/models/inventory.model.js +1 -0
- package/dist/plugins/devices-homey/models/inventory.model.js.map +1 -1
- package/dist/plugins/devices-homey/models/mapping-preview.model.d.ts +1 -0
- package/dist/plugins/devices-homey/models/mapping-preview.model.js +1 -0
- package/dist/plugins/devices-homey/models/mapping-preview.model.js.map +1 -1
- package/dist/plugins/devices-homey/services/homey-mapping-preview.service.js +7 -0
- package/dist/plugins/devices-homey/services/homey-mapping-preview.service.js.map +1 -1
- package/dist/plugins/devices-homey/services/homey-synchronizer.service.d.ts +3 -1
- package/dist/plugins/devices-homey/services/homey-synchronizer.service.js +37 -6
- package/dist/plugins/devices-homey/services/homey-synchronizer.service.js.map +1 -1
- package/dist/plugins/devices-reterminal/services/reterminal-button.service.d.ts +7 -3
- package/dist/plugins/devices-reterminal/services/reterminal-button.service.js +63 -17
- package/dist/plugins/devices-reterminal/services/reterminal-button.service.js.map +1 -1
- package/dist/plugins/devices-shelly-ng/delegates/delegates-manager.service.d.ts +36 -3
- package/dist/plugins/devices-shelly-ng/delegates/delegates-manager.service.js +707 -42
- package/dist/plugins/devices-shelly-ng/delegates/delegates-manager.service.js.map +1 -1
- package/dist/plugins/devices-shelly-ng/delegates/shelly-device.delegate.d.ts +11 -1
- package/dist/plugins/devices-shelly-ng/delegates/shelly-device.delegate.js +100 -10
- package/dist/plugins/devices-shelly-ng/delegates/shelly-device.delegate.js.map +1 -1
- package/dist/plugins/devices-shelly-ng/devices-shelly-ng.constants.js +9 -11
- package/dist/plugins/devices-shelly-ng/devices-shelly-ng.constants.js.map +1 -1
- package/dist/plugins/devices-shelly-ng/devices-shelly-ng.plugin.js +2 -0
- package/dist/plugins/devices-shelly-ng/devices-shelly-ng.plugin.js.map +1 -1
- package/dist/plugins/devices-shelly-ng/mappings/definitions/inputs.yaml +80 -0
- package/dist/plugins/devices-shelly-ng/mappings/mapping-loader.service.js +7 -1
- package/dist/plugins/devices-shelly-ng/mappings/mapping-loader.service.js.map +1 -1
- package/dist/plugins/devices-shelly-ng/mappings/mapping.types.d.ts +6 -3
- package/dist/plugins/devices-shelly-ng/mappings/schema/mapping-schema.json +5 -0
- package/dist/plugins/devices-shelly-ng/services/device-manager.service.js +153 -8
- package/dist/plugins/devices-shelly-ng/services/device-manager.service.js.map +1 -1
- package/dist/plugins/devices-shelly-ng/services/poll-placement-diagnostics.service.d.ts +51 -0
- package/dist/plugins/devices-shelly-ng/services/poll-placement-diagnostics.service.js +549 -0
- package/dist/plugins/devices-shelly-ng/services/poll-placement-diagnostics.service.js.map +1 -0
- package/dist/plugins/devices-shelly-ng/services/shelly-ng.service.d.ts +14 -2
- package/dist/plugins/devices-shelly-ng/services/shelly-ng.service.js +134 -35
- package/dist/plugins/devices-shelly-ng/services/shelly-ng.service.js.map +1 -1
- package/dist/plugins/devices-shelly-ng/services/shelly-rpc-client.service.js +3 -0
- package/dist/plugins/devices-shelly-ng/services/shelly-rpc-client.service.js.map +1 -1
- package/dist/plugins/devices-shelly-ng/services/shelly-ws-server.service.d.ts +1 -0
- package/dist/plugins/devices-shelly-ng/services/shelly-ws-server.service.js +14 -4
- package/dist/plugins/devices-shelly-ng/services/shelly-ws-server.service.js.map +1 -1
- package/dist/plugins/devices-shelly-v1/devices-shelly-v1.constants.d.ts +2 -0
- package/dist/plugins/devices-shelly-v1/devices-shelly-v1.constants.js +66 -4
- package/dist/plugins/devices-shelly-v1/devices-shelly-v1.constants.js.map +1 -1
- package/dist/plugins/devices-shelly-v1/devices-shelly-v1.plugin.js +2 -0
- package/dist/plugins/devices-shelly-v1/devices-shelly-v1.plugin.js.map +1 -1
- package/dist/plugins/devices-shelly-v1/platforms/shelly-v1.device.platform.js +7 -0
- package/dist/plugins/devices-shelly-v1/platforms/shelly-v1.device.platform.js.map +1 -1
- package/dist/plugins/devices-shelly-v1/services/device-mapper.service.d.ts +3 -1
- package/dist/plugins/devices-shelly-v1/services/device-mapper.service.js +20 -2
- package/dist/plugins/devices-shelly-v1/services/device-mapper.service.js.map +1 -1
- package/dist/plugins/devices-shelly-v1/services/shelly-v1-input-tracker.service.d.ts +16 -0
- package/dist/plugins/devices-shelly-v1/services/shelly-v1-input-tracker.service.js +107 -0
- package/dist/plugins/devices-shelly-v1/services/shelly-v1-input-tracker.service.js.map +1 -0
- package/dist/plugins/devices-shelly-v1/services/shelly-v1.service.d.ts +7 -1
- package/dist/plugins/devices-shelly-v1/services/shelly-v1.service.js +98 -3
- package/dist/plugins/devices-shelly-v1/services/shelly-v1.service.js.map +1 -1
- package/dist/plugins/devices-third-party/controllers/third-party-inputs.controller.d.ts +17 -0
- package/dist/plugins/devices-third-party/controllers/third-party-inputs.controller.js +205 -0
- package/dist/plugins/devices-third-party/controllers/third-party-inputs.controller.js.map +1 -0
- package/dist/plugins/devices-third-party/devices-third-party.openapi.d.ts +1 -1
- package/dist/plugins/devices-third-party/devices-third-party.plugin.js +2 -1
- package/dist/plugins/devices-third-party/devices-third-party.plugin.js.map +1 -1
- package/dist/plugins/devices-third-party/dto/report-input-occurrence-response.dto.d.ts +5 -0
- package/dist/plugins/devices-third-party/dto/report-input-occurrence-response.dto.js +50 -0
- package/dist/plugins/devices-third-party/dto/report-input-occurrence-response.dto.js.map +1 -0
- package/dist/plugins/devices-third-party/dto/report-input-occurrence.dto.d.ts +8 -0
- package/dist/plugins/devices-third-party/dto/report-input-occurrence.dto.js +81 -0
- package/dist/plugins/devices-third-party/dto/report-input-occurrence.dto.js.map +1 -0
- package/dist/plugins/devices-third-party/platforms/third-party-device.platform.js +19 -4
- package/dist/plugins/devices-third-party/platforms/third-party-device.platform.js.map +1 -1
- package/dist/plugins/devices-virtual/listeners/virtual-projection.listener.d.ts +2 -0
- package/dist/plugins/devices-virtual/listeners/virtual-projection.listener.js +57 -0
- package/dist/plugins/devices-virtual/listeners/virtual-projection.listener.js.map +1 -1
- package/dist/plugins/devices-zigbee2mqtt/devices-zigbee2mqtt.constants.d.ts +3 -0
- package/dist/plugins/devices-zigbee2mqtt/devices-zigbee2mqtt.constants.js +41 -5
- package/dist/plugins/devices-zigbee2mqtt/devices-zigbee2mqtt.constants.js.map +1 -1
- package/dist/plugins/devices-zigbee2mqtt/interfaces/zigbee2mqtt.interface.d.ts +7 -1
- package/dist/plugins/devices-zigbee2mqtt/mappings/config-driven.converter.js +16 -15
- package/dist/plugins/devices-zigbee2mqtt/mappings/config-driven.converter.js.map +1 -1
- package/dist/plugins/devices-zigbee2mqtt/mappings/definitions/remotes.yaml +505 -74
- package/dist/plugins/devices-zigbee2mqtt/mappings/schema/mapping-schema.json +3 -3
- package/dist/plugins/devices-zigbee2mqtt/mappings/transformers/transformer.types.d.ts +1 -1
- package/dist/plugins/devices-zigbee2mqtt/services/base-client-adapter.d.ts +8 -2
- package/dist/plugins/devices-zigbee2mqtt/services/base-client-adapter.js +6 -5
- package/dist/plugins/devices-zigbee2mqtt/services/base-client-adapter.js.map +1 -1
- package/dist/plugins/devices-zigbee2mqtt/services/device-adoption.service.js +18 -11
- package/dist/plugins/devices-zigbee2mqtt/services/device-adoption.service.js.map +1 -1
- package/dist/plugins/devices-zigbee2mqtt/services/device-mapper.service.d.ts +9 -3
- package/dist/plugins/devices-zigbee2mqtt/services/device-mapper.service.js +166 -3
- package/dist/plugins/devices-zigbee2mqtt/services/device-mapper.service.js.map +1 -1
- package/dist/plugins/devices-zigbee2mqtt/services/mqtt-client-adapter.service.js +5 -2
- package/dist/plugins/devices-zigbee2mqtt/services/mqtt-client-adapter.service.js.map +1 -1
- package/dist/plugins/devices-zigbee2mqtt/services/zigbee2mqtt.service.d.ts +1 -0
- package/dist/plugins/devices-zigbee2mqtt/services/zigbee2mqtt.service.js +44 -4
- package/dist/plugins/devices-zigbee2mqtt/services/zigbee2mqtt.service.js.map +1 -1
- package/dist/plugins/remote-access-cloudflare-tunnel/controllers/setup.controller.d.ts +17 -0
- package/dist/plugins/remote-access-cloudflare-tunnel/controllers/setup.controller.js +147 -0
- package/dist/plugins/remote-access-cloudflare-tunnel/controllers/setup.controller.js.map +1 -0
- package/dist/plugins/remote-access-cloudflare-tunnel/controllers/status.controller.d.ts +15 -0
- package/dist/plugins/remote-access-cloudflare-tunnel/controllers/status.controller.js +98 -0
- package/dist/plugins/remote-access-cloudflare-tunnel/controllers/status.controller.js.map +1 -0
- package/dist/plugins/remote-access-cloudflare-tunnel/dto/update-config.dto.d.ts +9 -0
- package/dist/plugins/remote-access-cloudflare-tunnel/dto/update-config.dto.js +94 -0
- package/dist/plugins/remote-access-cloudflare-tunnel/dto/update-config.dto.js.map +1 -0
- package/dist/plugins/remote-access-cloudflare-tunnel/models/config.model.d.ts +9 -0
- package/dist/plugins/remote-access-cloudflare-tunnel/models/config.model.js +92 -0
- package/dist/plugins/remote-access-cloudflare-tunnel/models/config.model.js.map +1 -0
- package/dist/plugins/remote-access-cloudflare-tunnel/models/install.model.d.ts +7 -0
- package/dist/plugins/remote-access-cloudflare-tunnel/models/install.model.js +48 -0
- package/dist/plugins/remote-access-cloudflare-tunnel/models/install.model.js.map +1 -0
- package/dist/plugins/remote-access-cloudflare-tunnel/models/status.model.d.ts +42 -0
- package/dist/plugins/remote-access-cloudflare-tunnel/models/status.model.js +352 -0
- package/dist/plugins/remote-access-cloudflare-tunnel/models/status.model.js.map +1 -0
- package/dist/plugins/remote-access-cloudflare-tunnel/remote-access-cloudflare-tunnel.constants.d.ts +24 -0
- package/dist/plugins/remote-access-cloudflare-tunnel/remote-access-cloudflare-tunnel.constants.js +27 -0
- package/dist/plugins/remote-access-cloudflare-tunnel/remote-access-cloudflare-tunnel.constants.js.map +1 -0
- package/dist/plugins/remote-access-cloudflare-tunnel/remote-access-cloudflare-tunnel.exceptions.d.ts +8 -0
- package/dist/plugins/remote-access-cloudflare-tunnel/remote-access-cloudflare-tunnel.exceptions.js +19 -0
- package/dist/plugins/remote-access-cloudflare-tunnel/remote-access-cloudflare-tunnel.exceptions.js.map +1 -0
- package/dist/plugins/remote-access-cloudflare-tunnel/remote-access-cloudflare-tunnel.openapi.d.ts +4 -0
- package/dist/plugins/remote-access-cloudflare-tunnel/remote-access-cloudflare-tunnel.openapi.js +20 -0
- package/dist/plugins/remote-access-cloudflare-tunnel/remote-access-cloudflare-tunnel.openapi.js.map +1 -0
- package/dist/plugins/remote-access-cloudflare-tunnel/remote-access-cloudflare-tunnel.plugin.d.ts +21 -0
- package/dist/plugins/remote-access-cloudflare-tunnel/remote-access-cloudflare-tunnel.plugin.js +135 -0
- package/dist/plugins/remote-access-cloudflare-tunnel/remote-access-cloudflare-tunnel.plugin.js.map +1 -0
- package/dist/plugins/remote-access-cloudflare-tunnel/scripts/cloudflared-setup.sh +185 -0
- package/dist/plugins/remote-access-cloudflare-tunnel/services/cloudflare-tunnel-managed.service.d.ts +82 -0
- package/dist/plugins/remote-access-cloudflare-tunnel/services/cloudflare-tunnel-managed.service.js +507 -0
- package/dist/plugins/remote-access-cloudflare-tunnel/services/cloudflare-tunnel-managed.service.js.map +1 -0
- package/dist/plugins/remote-access-cloudflare-tunnel/services/cloudflare-tunnel-provider.service.d.ts +10 -0
- package/dist/plugins/remote-access-cloudflare-tunnel/services/cloudflare-tunnel-provider.service.js +37 -0
- package/dist/plugins/remote-access-cloudflare-tunnel/services/cloudflare-tunnel-provider.service.js.map +1 -0
- package/dist/plugins/remote-access-cloudflare-tunnel/services/cloudflare-tunnel-setup.service.d.ts +38 -0
- package/dist/plugins/remote-access-cloudflare-tunnel/services/cloudflare-tunnel-setup.service.js +147 -0
- package/dist/plugins/remote-access-cloudflare-tunnel/services/cloudflare-tunnel-setup.service.js.map +1 -0
- package/dist/plugins/remote-access-cloudflare-tunnel/services/cloudflared-cli.service.d.ts +15 -0
- package/dist/plugins/remote-access-cloudflare-tunnel/services/cloudflared-cli.service.js +67 -0
- package/dist/plugins/remote-access-cloudflare-tunnel/services/cloudflared-cli.service.js.map +1 -0
- package/dist/plugins/remote-access-cloudflare-tunnel/services/cloudflared-metrics.service.d.ts +8 -0
- package/dist/plugins/remote-access-cloudflare-tunnel/services/cloudflared-metrics.service.js +46 -0
- package/dist/plugins/remote-access-cloudflare-tunnel/services/cloudflared-metrics.service.js.map +1 -0
- package/dist/plugins/remote-access-cloudflare-tunnel/services/cloudflared-process.service.d.ts +27 -0
- package/dist/plugins/remote-access-cloudflare-tunnel/services/cloudflared-process.service.js +139 -0
- package/dist/plugins/remote-access-cloudflare-tunnel/services/cloudflared-process.service.js.map +1 -0
- package/dist/plugins/remote-access-tailscale/controllers/setup.controller.d.ts +1 -0
- package/dist/plugins/remote-access-tailscale/controllers/setup.controller.js +26 -10
- package/dist/plugins/remote-access-tailscale/controllers/setup.controller.js.map +1 -1
- package/dist/plugins/remote-access-tailscale/controllers/status.controller.d.ts +6 -1
- package/dist/plugins/remote-access-tailscale/controllers/status.controller.js +28 -3
- package/dist/plugins/remote-access-tailscale/controllers/status.controller.js.map +1 -1
- package/dist/plugins/remote-access-tailscale/models/status.model.d.ts +19 -0
- package/dist/plugins/remote-access-tailscale/models/status.model.js +158 -1
- package/dist/plugins/remote-access-tailscale/models/status.model.js.map +1 -1
- package/dist/plugins/remote-access-tailscale/remote-access-tailscale.constants.d.ts +3 -0
- package/dist/plugins/remote-access-tailscale/remote-access-tailscale.constants.js +4 -1
- package/dist/plugins/remote-access-tailscale/remote-access-tailscale.constants.js.map +1 -1
- package/dist/plugins/remote-access-tailscale/remote-access-tailscale.exceptions.d.ts +13 -0
- package/dist/plugins/remote-access-tailscale/remote-access-tailscale.exceptions.js +27 -0
- package/dist/plugins/remote-access-tailscale/remote-access-tailscale.exceptions.js.map +1 -0
- package/dist/plugins/remote-access-tailscale/remote-access-tailscale.openapi.d.ts +2 -2
- package/dist/plugins/remote-access-tailscale/remote-access-tailscale.openapi.js +2 -0
- package/dist/plugins/remote-access-tailscale/remote-access-tailscale.openapi.js.map +1 -1
- package/dist/plugins/remote-access-tailscale/remote-access-tailscale.plugin.js +1 -1
- package/dist/plugins/remote-access-tailscale/scripts/tailscale-setup.sh +61 -0
- package/dist/plugins/remote-access-tailscale/services/tailscale-cli.service.d.ts +9 -0
- package/dist/plugins/remote-access-tailscale/services/tailscale-cli.service.js +12 -0
- package/dist/plugins/remote-access-tailscale/services/tailscale-cli.service.js.map +1 -1
- package/dist/plugins/remote-access-tailscale/services/tailscale-login.service.d.ts +1 -0
- package/dist/plugins/remote-access-tailscale/services/tailscale-login.service.js +27 -2
- package/dist/plugins/remote-access-tailscale/services/tailscale-login.service.js.map +1 -1
- package/dist/plugins/remote-access-tailscale/services/tailscale-node-managed.service.d.ts +31 -1
- package/dist/plugins/remote-access-tailscale/services/tailscale-node-managed.service.js +316 -30
- package/dist/plugins/remote-access-tailscale/services/tailscale-node-managed.service.js.map +1 -1
- package/dist/plugins/remote-access-tailscale/services/tailscale-serve.service.d.ts +8 -3
- package/dist/plugins/remote-access-tailscale/services/tailscale-serve.service.js +39 -12
- package/dist/plugins/remote-access-tailscale/services/tailscale-serve.service.js.map +1 -1
- package/dist/plugins/remote-access-tailscale/services/tailscale-setup.service.d.ts +14 -5
- package/dist/plugins/remote-access-tailscale/services/tailscale-setup.service.js +51 -16
- package/dist/plugins/remote-access-tailscale/services/tailscale-setup.service.js.map +1 -1
- package/dist/plugins/scenes-local/platforms/local-scene.platform.d.ts +3 -1
- package/dist/plugins/scenes-local/platforms/local-scene.platform.js +12 -7
- package/dist/plugins/scenes-local/platforms/local-scene.platform.js.map +1 -1
- package/dist/plugins/simulator/controllers/simulator.controller.d.ts +8 -2
- package/dist/plugins/simulator/controllers/simulator.controller.js +102 -2
- package/dist/plugins/simulator/controllers/simulator.controller.js.map +1 -1
- package/dist/plugins/simulator/dto/simulate-occurrence.dto.d.ts +12 -0
- package/dist/plugins/simulator/dto/simulate-occurrence.dto.js +122 -0
- package/dist/plugins/simulator/dto/simulate-occurrence.dto.js.map +1 -0
- package/dist/plugins/simulator/models/simulator-response.model.d.ts +12 -0
- package/dist/plugins/simulator/models/simulator-response.model.js +84 -1
- package/dist/plugins/simulator/models/simulator-response.model.js.map +1 -1
- package/dist/plugins/simulator/scenarios/definitions/small-apartment.yaml +78 -0
- package/dist/plugins/simulator/services/scenario-executor.service.js +3 -1
- package/dist/plugins/simulator/services/scenario-executor.service.js.map +1 -1
- package/dist/plugins/simulator/services/simulation.service.js +10 -1
- package/dist/plugins/simulator/services/simulation.service.js.map +1 -1
- package/dist/plugins/simulator/simulator.openapi.d.ts +3 -2
- package/dist/plugins/simulator/simulator.openapi.js +5 -0
- package/dist/plugins/simulator/simulator.openapi.js.map +1 -1
- package/dist/plugins/simulator/simulators/device-simulator.interface.d.ts +2 -0
- package/dist/plugins/simulator/simulators/device-simulator.interface.js +83 -0
- package/dist/plugins/simulator/simulators/device-simulator.interface.js.map +1 -1
- package/dist/plugins/simulator/simulators/index.d.ts +1 -0
- package/dist/plugins/simulator/simulators/index.js +1 -0
- package/dist/plugins/simulator/simulators/index.js.map +1 -1
- package/dist/plugins/simulator/simulators/input-controller.simulator.d.ts +10 -0
- package/dist/plugins/simulator/simulators/input-controller.simulator.js +57 -0
- package/dist/plugins/simulator/simulators/input-controller.simulator.js.map +1 -0
- package/dist/plugins/simulator/simulators/lighting.simulator.js +1 -0
- package/dist/plugins/simulator/simulators/lighting.simulator.js.map +1 -1
- package/dist/plugins/spaces-home-control/services/climate-intent.service.d.ts +3 -1
- package/dist/plugins/spaces-home-control/services/climate-intent.service.js +6 -3
- package/dist/plugins/spaces-home-control/services/climate-intent.service.js.map +1 -1
- package/dist/plugins/spaces-home-control/services/covers-intent.service.d.ts +3 -1
- package/dist/plugins/spaces-home-control/services/covers-intent.service.js +6 -3
- package/dist/plugins/spaces-home-control/services/covers-intent.service.js.map +1 -1
- package/dist/plugins/spaces-home-control/services/lighting-intent.service.d.ts +3 -1
- package/dist/plugins/spaces-home-control/services/lighting-intent.service.js +7 -4
- package/dist/plugins/spaces-home-control/services/lighting-intent.service.js.map +1 -1
- package/dist/plugins/spaces-home-control/services/space-media-activity.service.d.ts +3 -1
- package/dist/plugins/spaces-home-control/services/space-media-activity.service.js +11 -5
- package/dist/plugins/spaces-home-control/services/space-media-activity.service.js.map +1 -1
- package/dist/plugins/spaces-home-control/services/space-undo-history.service.d.ts +3 -1
- package/dist/plugins/spaces-home-control/services/space-undo-history.service.js +8 -5
- package/dist/plugins/spaces-home-control/services/space-undo-history.service.js.map +1 -1
- package/dist/spec/channels.d.ts +51 -1
- package/dist/spec/channels.js +64 -1
- package/dist/spec/channels.js.map +1 -1
- package/dist/spec/devices.d.ts +155 -2
- package/dist/spec/devices.js +161 -2
- package/dist/spec/devices.js.map +1 -1
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/package.json +3 -3
|
@@ -99,6 +99,7 @@ let DeviceManagerService = class DeviceManagerService {
|
|
|
99
99
|
await this.deviceAddressService.setHasEthernet(device.id, specHasEthernet);
|
|
100
100
|
}
|
|
101
101
|
const channelsIds = [];
|
|
102
|
+
let hasComponentFailures = false;
|
|
102
103
|
const deviceInformation = await this.ensureChannel(device, 'category', devices_constants_1.ChannelCategory.DEVICE_INFORMATION, devices_constants_1.ChannelCategory.DEVICE_INFORMATION, 'Device information');
|
|
103
104
|
channelsIds.push(deviceInformation.id);
|
|
104
105
|
await this.ensureProperty(deviceInformation, devices_constants_1.PropertyCategory.MANUFACTURER, 'category', devices_constants_1.PropertyCategory.MANUFACTURER, 'Shelly');
|
|
@@ -189,6 +190,7 @@ let DeviceManagerService = class DeviceManagerService {
|
|
|
189
190
|
const settled = await Promise.allSettled(tasks);
|
|
190
191
|
const failed = settled.filter((r) => r.status === 'rejected').length;
|
|
191
192
|
if (failed) {
|
|
193
|
+
hasComponentFailures = true;
|
|
192
194
|
this.logger.warn(`${failed}/${ids.length} switch component(s) failed for device=${device.id}`, {
|
|
193
195
|
resource: device.id,
|
|
194
196
|
});
|
|
@@ -276,6 +278,7 @@ let DeviceManagerService = class DeviceManagerService {
|
|
|
276
278
|
const settled = await Promise.allSettled(tasks);
|
|
277
279
|
const failed = settled.filter((r) => r.status === 'rejected').length;
|
|
278
280
|
if (failed) {
|
|
281
|
+
hasComponentFailures = true;
|
|
279
282
|
this.logger.warn(`${failed}/${ids.length} cover component(s) failed for device=${device.id}`, {
|
|
280
283
|
resource: device.id,
|
|
281
284
|
});
|
|
@@ -342,6 +345,7 @@ let DeviceManagerService = class DeviceManagerService {
|
|
|
342
345
|
const settled = await Promise.allSettled(tasks);
|
|
343
346
|
const failed = settled.filter((r) => r.status === 'rejected').length;
|
|
344
347
|
if (failed) {
|
|
348
|
+
hasComponentFailures = true;
|
|
345
349
|
this.logger.warn(`${failed}/${ids.length} light component(s) failed for device=${device.id}`, {
|
|
346
350
|
resource: device.id,
|
|
347
351
|
});
|
|
@@ -426,6 +430,7 @@ let DeviceManagerService = class DeviceManagerService {
|
|
|
426
430
|
const settled = await Promise.allSettled(tasks);
|
|
427
431
|
const failed = settled.filter((r) => r.status === 'rejected').length;
|
|
428
432
|
if (failed) {
|
|
433
|
+
hasComponentFailures = true;
|
|
429
434
|
this.logger.warn(`${failed}/${ids.length} rgb component(s) failed for device=${device.id}`, {
|
|
430
435
|
resource: device.id,
|
|
431
436
|
});
|
|
@@ -520,6 +525,7 @@ let DeviceManagerService = class DeviceManagerService {
|
|
|
520
525
|
const settled = await Promise.allSettled(tasks);
|
|
521
526
|
const failed = settled.filter((r) => r.status === 'rejected').length;
|
|
522
527
|
if (failed) {
|
|
528
|
+
hasComponentFailures = true;
|
|
523
529
|
this.logger.warn(`${failed}/${ids.length} rgbw component(s) failed for device=${device.id}`, {
|
|
524
530
|
resource: device.id,
|
|
525
531
|
});
|
|
@@ -594,6 +600,7 @@ let DeviceManagerService = class DeviceManagerService {
|
|
|
594
600
|
const settled = await Promise.allSettled(tasks);
|
|
595
601
|
const failed = settled.filter((r) => r.status === 'rejected').length;
|
|
596
602
|
if (failed) {
|
|
603
|
+
hasComponentFailures = true;
|
|
597
604
|
this.logger.warn(`${failed}/${ids.length} cct component(s) failed for device=${device.id}`, {
|
|
598
605
|
resource: device.id,
|
|
599
606
|
});
|
|
@@ -601,21 +608,138 @@ let DeviceManagerService = class DeviceManagerService {
|
|
|
601
608
|
}
|
|
602
609
|
else if (type === String(devices_shelly_ng_constants_1.ComponentType.INPUT)) {
|
|
603
610
|
const tasks = ids.map((key) => limit(async () => {
|
|
604
|
-
|
|
605
|
-
|
|
606
|
-
|
|
607
|
-
|
|
611
|
+
let inputConfig;
|
|
612
|
+
let inputStatus;
|
|
613
|
+
try {
|
|
614
|
+
[inputConfig, inputStatus] = await (0, http_utils_1.retry)(() => (0, http_utils_1.withTimeout)(Promise.all([
|
|
615
|
+
this.shellyRpcClientService.getInputConfig(host, key, { password }),
|
|
616
|
+
this.shellyRpcClientService.getInputStatus(host, key, { password }),
|
|
617
|
+
]), this.timeoutSec * 1000, `Input.GetConfig+Input.GetStatus - ${key}`), { retries: 2, baseMs: 300, factor: 2 });
|
|
618
|
+
}
|
|
619
|
+
catch (err) {
|
|
620
|
+
const error = err;
|
|
608
621
|
this.logger.error(`Failed load for input=${key} on device=${device.id}`, {
|
|
609
622
|
resource: device.id,
|
|
610
|
-
message:
|
|
611
|
-
stack:
|
|
623
|
+
message: error.message,
|
|
624
|
+
stack: error.stack,
|
|
612
625
|
});
|
|
626
|
+
const existing = await this.channelsService.findOneBy('identifier', `input:${key}`, device.id, devices_shelly_ng_constants_1.DEVICES_SHELLY_NG_TYPE);
|
|
627
|
+
if (existing) {
|
|
628
|
+
channelsIds.push(existing.id);
|
|
629
|
+
}
|
|
613
630
|
throw err;
|
|
614
|
-
}
|
|
631
|
+
}
|
|
632
|
+
const inputMode = inputConfig?.type ?? 'button';
|
|
633
|
+
const mappingContext = {
|
|
634
|
+
componentType: devices_shelly_ng_constants_1.ComponentType.INPUT,
|
|
635
|
+
componentKey: key,
|
|
636
|
+
deviceCategory: device.category,
|
|
637
|
+
inputMode,
|
|
638
|
+
model: deviceInfo.model,
|
|
639
|
+
profile: deviceInfo.profile ?? undefined,
|
|
640
|
+
};
|
|
641
|
+
const mapping = this.mappingLoaderService.findMatchingMapping(mappingContext);
|
|
642
|
+
let channelCategory = devices_constants_1.ChannelCategory.BUTTON;
|
|
643
|
+
let defaultChannelName = `Button: ${key}`;
|
|
644
|
+
if (mapping && mapping.channels.length > 0) {
|
|
645
|
+
channelCategory = mapping.channels[0].category;
|
|
646
|
+
defaultChannelName = this.mappingLoaderService.interpolateTemplate(mapping.channels[0].name ?? `Input: {key}`, mappingContext);
|
|
647
|
+
}
|
|
648
|
+
else {
|
|
649
|
+
if (inputMode === 'switch') {
|
|
650
|
+
channelCategory = devices_constants_1.ChannelCategory.BINARY_INPUT;
|
|
651
|
+
defaultChannelName = `Switch Input: ${key}`;
|
|
652
|
+
}
|
|
653
|
+
else if (inputMode === 'analog' || inputMode === 'count') {
|
|
654
|
+
channelCategory = devices_constants_1.ChannelCategory.ANALOG_INPUT;
|
|
655
|
+
defaultChannelName = inputMode === 'count' ? `Counter: ${key}` : `Analog Input: ${key}`;
|
|
656
|
+
}
|
|
657
|
+
}
|
|
658
|
+
const channelName = inputConfig.name && inputConfig.name.trim() !== '' ? inputConfig.name : defaultChannelName;
|
|
659
|
+
const channel = await this.ensureChannel(device, 'identifier', `input:${key}`, channelCategory, channelName);
|
|
660
|
+
channelsIds.push(channel.id);
|
|
661
|
+
const existingProps = await this.channelsPropertiesService.findAll(channel.id);
|
|
662
|
+
const validCategories = channelCategory === devices_constants_1.ChannelCategory.BUTTON
|
|
663
|
+
? [devices_constants_1.PropertyCategory.EVENT, devices_constants_1.PropertyCategory.DETECTED, devices_constants_1.PropertyCategory.ACTIVE]
|
|
664
|
+
: channelCategory === devices_constants_1.ChannelCategory.BINARY_INPUT
|
|
665
|
+
? [devices_constants_1.PropertyCategory.STATE, devices_constants_1.PropertyCategory.ACTIVE]
|
|
666
|
+
: [devices_constants_1.PropertyCategory.VALUE, devices_constants_1.PropertyCategory.UNIT, devices_constants_1.PropertyCategory.ACTIVE];
|
|
667
|
+
for (const prop of existingProps) {
|
|
668
|
+
if (!validCategories.includes(prop.category)) {
|
|
669
|
+
try {
|
|
670
|
+
await this.channelsPropertiesService.remove(prop.id);
|
|
671
|
+
}
|
|
672
|
+
catch (error) {
|
|
673
|
+
if (error?.name === 'EntityNotFoundError' ||
|
|
674
|
+
error?.status === 404) {
|
|
675
|
+
}
|
|
676
|
+
else {
|
|
677
|
+
throw error;
|
|
678
|
+
}
|
|
679
|
+
}
|
|
680
|
+
}
|
|
681
|
+
}
|
|
682
|
+
const isActive = inputConfig.enable !== false && (!inputStatus.errors || inputStatus.errors.length === 0);
|
|
683
|
+
if (channelCategory === devices_constants_1.ChannelCategory.BUTTON) {
|
|
684
|
+
await this.ensureProperty(channel, devices_constants_1.PropertyCategory.EVENT, 'category', devices_constants_1.PropertyCategory.EVENT, undefined, {
|
|
685
|
+
data_type: devices_constants_1.DataTypeType.ENUM,
|
|
686
|
+
permissions: [devices_constants_1.PermissionType.EVENT_ONLY],
|
|
687
|
+
format: ['press', 'double_press', 'triple_press', 'long_press', 'down', 'up'],
|
|
688
|
+
});
|
|
689
|
+
await this.ensureProperty(channel, devices_constants_1.PropertyCategory.DETECTED, 'category', devices_constants_1.PropertyCategory.DETECTED, typeof inputStatus.state === 'boolean' ? inputStatus.state : false, {
|
|
690
|
+
data_type: devices_constants_1.DataTypeType.BOOL,
|
|
691
|
+
permissions: [devices_constants_1.PermissionType.READ_ONLY],
|
|
692
|
+
});
|
|
693
|
+
await this.ensureProperty(channel, devices_constants_1.PropertyCategory.ACTIVE, 'category', devices_constants_1.PropertyCategory.ACTIVE, isActive, {
|
|
694
|
+
data_type: devices_constants_1.DataTypeType.BOOL,
|
|
695
|
+
permissions: [devices_constants_1.PermissionType.READ_ONLY],
|
|
696
|
+
});
|
|
697
|
+
}
|
|
698
|
+
else if (channelCategory === devices_constants_1.ChannelCategory.BINARY_INPUT) {
|
|
699
|
+
await this.ensureProperty(channel, devices_constants_1.PropertyCategory.STATE, 'category', devices_constants_1.PropertyCategory.STATE, Boolean(inputStatus.state), {
|
|
700
|
+
data_type: devices_constants_1.DataTypeType.BOOL,
|
|
701
|
+
permissions: [devices_constants_1.PermissionType.READ_ONLY],
|
|
702
|
+
});
|
|
703
|
+
await this.ensureProperty(channel, devices_constants_1.PropertyCategory.ACTIVE, 'category', devices_constants_1.PropertyCategory.ACTIVE, isActive, {
|
|
704
|
+
data_type: devices_constants_1.DataTypeType.BOOL,
|
|
705
|
+
permissions: [devices_constants_1.PermissionType.READ_ONLY],
|
|
706
|
+
});
|
|
707
|
+
}
|
|
708
|
+
else if (channelCategory === devices_constants_1.ChannelCategory.ANALOG_INPUT) {
|
|
709
|
+
const hasExtendedCount = inputMode === 'count' && typeof inputStatus.counts?.xtotal === 'number';
|
|
710
|
+
const hasExtendedPercent = inputMode === 'analog' && typeof inputStatus.xpercent === 'number';
|
|
711
|
+
const analogValue = inputMode === 'count'
|
|
712
|
+
? hasExtendedCount
|
|
713
|
+
? inputStatus.counts.xtotal
|
|
714
|
+
: (inputStatus.counts?.total ?? 0)
|
|
715
|
+
: hasExtendedPercent
|
|
716
|
+
? inputStatus.xpercent
|
|
717
|
+
: (inputStatus.percent ?? 0);
|
|
718
|
+
const unitValue = inputMode === 'count'
|
|
719
|
+
? hasExtendedCount
|
|
720
|
+
? inputConfig.xcounts?.unit || 'counts'
|
|
721
|
+
: 'counts'
|
|
722
|
+
: hasExtendedPercent
|
|
723
|
+
? inputConfig.xpercent?.unit || '%'
|
|
724
|
+
: '%';
|
|
725
|
+
await this.ensureProperty(channel, devices_constants_1.PropertyCategory.VALUE, 'category', devices_constants_1.PropertyCategory.VALUE, analogValue, {
|
|
726
|
+
data_type: devices_constants_1.DataTypeType.FLOAT,
|
|
727
|
+
permissions: [devices_constants_1.PermissionType.READ_ONLY],
|
|
728
|
+
});
|
|
729
|
+
await this.ensureProperty(channel, devices_constants_1.PropertyCategory.UNIT, 'category', devices_constants_1.PropertyCategory.UNIT, unitValue, {
|
|
730
|
+
data_type: devices_constants_1.DataTypeType.STRING,
|
|
731
|
+
permissions: [devices_constants_1.PermissionType.READ_ONLY],
|
|
732
|
+
});
|
|
733
|
+
await this.ensureProperty(channel, devices_constants_1.PropertyCategory.ACTIVE, 'category', devices_constants_1.PropertyCategory.ACTIVE, isActive, {
|
|
734
|
+
data_type: devices_constants_1.DataTypeType.BOOL,
|
|
735
|
+
permissions: [devices_constants_1.PermissionType.READ_ONLY],
|
|
736
|
+
});
|
|
737
|
+
}
|
|
615
738
|
}));
|
|
616
739
|
const settled = await Promise.allSettled(tasks);
|
|
617
740
|
const failed = settled.filter((r) => r.status === 'rejected').length;
|
|
618
741
|
if (failed) {
|
|
742
|
+
hasComponentFailures = true;
|
|
619
743
|
this.logger.warn(`${failed}/${ids.length} input component(s) failed for device=${device.id}`, {
|
|
620
744
|
resource: device.id,
|
|
621
745
|
});
|
|
@@ -631,6 +755,7 @@ let DeviceManagerService = class DeviceManagerService {
|
|
|
631
755
|
}
|
|
632
756
|
catch (error) {
|
|
633
757
|
const err = error;
|
|
758
|
+
hasComponentFailures = true;
|
|
634
759
|
this.logger.error(`Failed to load device power status for device=${device.id} and devicePower=${key}`, {
|
|
635
760
|
resource: device.id,
|
|
636
761
|
message: err.message,
|
|
@@ -730,6 +855,7 @@ let DeviceManagerService = class DeviceManagerService {
|
|
|
730
855
|
const settled = await Promise.allSettled(tasks);
|
|
731
856
|
const failed = settled.filter((r) => r.status === 'rejected').length;
|
|
732
857
|
if (failed) {
|
|
858
|
+
hasComponentFailures = true;
|
|
733
859
|
this.logger.warn(`${failed}/${ids.length} humidity component(s) failed for device=${device.id}`, {
|
|
734
860
|
resource: device.id,
|
|
735
861
|
});
|
|
@@ -780,6 +906,7 @@ let DeviceManagerService = class DeviceManagerService {
|
|
|
780
906
|
const settled = await Promise.allSettled(tasks);
|
|
781
907
|
const failed = settled.filter((r) => r.status === 'rejected').length;
|
|
782
908
|
if (failed) {
|
|
909
|
+
hasComponentFailures = true;
|
|
783
910
|
this.logger.warn(`${failed}/${ids.length} temperature component(s) failed for device=${device.id}`, {
|
|
784
911
|
resource: device.id,
|
|
785
912
|
});
|
|
@@ -810,6 +937,7 @@ let DeviceManagerService = class DeviceManagerService {
|
|
|
810
937
|
const settled = await Promise.allSettled(tasks);
|
|
811
938
|
const failed = settled.filter((r) => r.status === 'rejected').length;
|
|
812
939
|
if (failed) {
|
|
940
|
+
hasComponentFailures = true;
|
|
813
941
|
this.logger.warn(`${failed}/${ids.length} pm1 component(s) failed for device=${device.id}`, {
|
|
814
942
|
resource: device.id,
|
|
815
943
|
});
|
|
@@ -874,6 +1002,7 @@ let DeviceManagerService = class DeviceManagerService {
|
|
|
874
1002
|
const settled = await Promise.allSettled(tasks);
|
|
875
1003
|
const failed = settled.filter((r) => r.status === 'rejected').length;
|
|
876
1004
|
if (failed) {
|
|
1005
|
+
hasComponentFailures = true;
|
|
877
1006
|
this.logger.warn(`${failed}/${ids.length} em component(s) failed for device=${device.id}`, {
|
|
878
1007
|
resource: device.id,
|
|
879
1008
|
});
|
|
@@ -938,6 +1067,7 @@ let DeviceManagerService = class DeviceManagerService {
|
|
|
938
1067
|
const settled = await Promise.allSettled(tasks);
|
|
939
1068
|
const failed = settled.filter((r) => r.status === 'rejected').length;
|
|
940
1069
|
if (failed) {
|
|
1070
|
+
hasComponentFailures = true;
|
|
941
1071
|
this.logger.warn(`${failed}/${ids.length} emdata component(s) failed for device=${device.id}`, {
|
|
942
1072
|
resource: device.id,
|
|
943
1073
|
});
|
|
@@ -969,6 +1099,7 @@ let DeviceManagerService = class DeviceManagerService {
|
|
|
969
1099
|
const settled = await Promise.allSettled(tasks);
|
|
970
1100
|
const failed = settled.filter((r) => r.status === 'rejected').length;
|
|
971
1101
|
if (failed) {
|
|
1102
|
+
hasComponentFailures = true;
|
|
972
1103
|
this.logger.warn(`${failed}/${ids.length} em1 component(s) failed for device=${device.id}`, {
|
|
973
1104
|
resource: device.id,
|
|
974
1105
|
});
|
|
@@ -1003,15 +1134,29 @@ let DeviceManagerService = class DeviceManagerService {
|
|
|
1003
1134
|
const settled = await Promise.allSettled(tasks);
|
|
1004
1135
|
const failed = settled.filter((r) => r.status === 'rejected').length;
|
|
1005
1136
|
if (failed) {
|
|
1137
|
+
hasComponentFailures = true;
|
|
1006
1138
|
this.logger.warn(`${failed}/${ids.length} em1data component(s) failed for device=${device.id}`, {
|
|
1007
1139
|
resource: device.id,
|
|
1008
1140
|
});
|
|
1009
1141
|
}
|
|
1010
1142
|
}
|
|
1011
1143
|
}
|
|
1144
|
+
if (hasComponentFailures) {
|
|
1145
|
+
this.logger.warn(`Skipping stale-channel removal after partial provisioning for device=${device.id}`, {
|
|
1146
|
+
resource: device.id,
|
|
1147
|
+
});
|
|
1148
|
+
return device;
|
|
1149
|
+
}
|
|
1012
1150
|
const allChannels = await this.channelsService.findAll(device.id, devices_shelly_ng_constants_1.DEVICES_SHELLY_NG_TYPE);
|
|
1151
|
+
const descriptorInputKeys = new Set((deviceSpec?.components ?? [])
|
|
1152
|
+
.filter((c) => c.type === devices_shelly_ng_constants_1.ComponentType.INPUT)
|
|
1153
|
+
.flatMap((c) => (c.ids ?? []).map((inputKey) => `input:${inputKey}`)));
|
|
1013
1154
|
for (const channel of allChannels) {
|
|
1014
1155
|
if (!channelsIds.includes(channel.id)) {
|
|
1156
|
+
if (descriptorInputKeys.has(channel.identifier)) {
|
|
1157
|
+
this.logger.debug(`Preserving descriptor-declared input channel=${channel.identifier} for device=${device.id}`);
|
|
1158
|
+
continue;
|
|
1159
|
+
}
|
|
1015
1160
|
try {
|
|
1016
1161
|
if (this.defaultManager) {
|
|
1017
1162
|
await this.channelsService.remove(channel.id, this.defaultManager);
|
|
@@ -1207,7 +1352,7 @@ let DeviceManagerService = class DeviceManagerService {
|
|
|
1207
1352
|
data_type: resolvedDataType,
|
|
1208
1353
|
format: resolvedFormat ?? null,
|
|
1209
1354
|
step: resolvedStep,
|
|
1210
|
-
});
|
|
1355
|
+
}, { skipUnchangedMetadata: true });
|
|
1211
1356
|
}
|
|
1212
1357
|
return prop;
|
|
1213
1358
|
}
|