@fastybird/smart-panel-backend 1.1.0-alpha.64 → 1.1.0-alpha.66
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.d.ts +3 -1
- package/dist/app.module.js +5 -1
- package/dist/app.module.js.map +1 -1
- package/dist/cli.js +1 -0
- package/dist/cli.js.map +1 -1
- package/dist/common/database/sqlite-data-source.d.ts +37 -0
- package/dist/common/database/sqlite-data-source.js +2131 -0
- package/dist/common/database/sqlite-data-source.js.map +1 -0
- package/dist/dataSource.d.ts +3 -1
- package/dist/dataSource.js +3 -3
- package/dist/dataSource.js.map +1 -1
- package/dist/main.js +1 -0
- package/dist/main.js.map +1 -1
- package/dist/migrations/1000000000002-AddTokenLastUsedAt.js +1 -0
- package/dist/migrations/1000000000002-AddTokenLastUsedAt.js.map +1 -1
- package/dist/migrations/1000000000027-AddVirtualProducerBindings.d.ts +7 -0
- package/dist/migrations/1000000000027-AddVirtualProducerBindings.js +87 -0
- package/dist/migrations/1000000000027-AddVirtualProducerBindings.js.map +1 -0
- package/dist/migrations/1000000000028-AddShellySampleSources.d.ts +6 -0
- package/dist/migrations/1000000000028-AddShellySampleSources.js +29 -0
- package/dist/migrations/1000000000028-AddShellySampleSources.js.map +1 -0
- package/dist/migrations/1000000000029-AddVirtualNumericTransforms.d.ts +6 -0
- package/dist/migrations/1000000000029-AddVirtualNumericTransforms.js +31 -0
- package/dist/migrations/1000000000029-AddVirtualNumericTransforms.js.map +1 -0
- package/dist/migrations/1000000000030-AddZigbeeSampleSources.d.ts +6 -0
- package/dist/migrations/1000000000030-AddZigbeeSampleSources.js +33 -0
- package/dist/migrations/1000000000030-AddZigbeeSampleSources.js.map +1 -0
- package/dist/migrations/1000000000031-AddVirtualThermostatClaims.d.ts +6 -0
- package/dist/migrations/1000000000031-AddVirtualThermostatClaims.js +62 -0
- package/dist/migrations/1000000000031-AddVirtualThermostatClaims.js.map +1 -0
- package/dist/migrations/1000000000032-AddVirtualThermostatRuntime.d.ts +6 -0
- package/dist/migrations/1000000000032-AddVirtualThermostatRuntime.js +39 -0
- package/dist/migrations/1000000000032-AddVirtualThermostatRuntime.js.map +1 -0
- package/dist/migrations/1000000000033-AddThermostatInstallationProfiles.d.ts +6 -0
- package/dist/migrations/1000000000033-AddThermostatInstallationProfiles.js +28 -0
- package/dist/migrations/1000000000033-AddThermostatInstallationProfiles.js.map +1 -0
- package/dist/migrations/1000000000034-AddVirtualThermostatRecoveries.d.ts +6 -0
- package/dist/migrations/1000000000034-AddVirtualThermostatRecoveries.js +26 -0
- package/dist/migrations/1000000000034-AddVirtualThermostatRecoveries.js.map +1 -0
- package/dist/migrations/1000000000035-IndexVirtualThermostatCommands.d.ts +6 -0
- package/dist/migrations/1000000000035-IndexVirtualThermostatCommands.js +35 -0
- package/dist/migrations/1000000000035-IndexVirtualThermostatCommands.js.map +1 -0
- package/dist/migrations/1000000000036-AddVirtualAggregatePolicies.d.ts +6 -0
- package/dist/migrations/1000000000036-AddVirtualAggregatePolicies.js +18 -0
- package/dist/migrations/1000000000036-AddVirtualAggregatePolicies.js.map +1 -0
- package/dist/migrations/1000000000037-AddVirtualAggregateProfiles.d.ts +6 -0
- package/dist/migrations/1000000000037-AddVirtualAggregateProfiles.js +16 -0
- package/dist/migrations/1000000000037-AddVirtualAggregateProfiles.js.map +1 -0
- package/dist/migrations/1000000000038-AddShellyCoverOrdering.d.ts +6 -0
- package/dist/migrations/1000000000038-AddShellyCoverOrdering.js +19 -0
- package/dist/migrations/1000000000038-AddShellyCoverOrdering.js.map +1 -0
- package/dist/migrations/1000000000039-AddVirtualThermostatComfort.d.ts +6 -0
- package/dist/migrations/1000000000039-AddVirtualThermostatComfort.js +16 -0
- package/dist/migrations/1000000000039-AddVirtualThermostatComfort.js.map +1 -0
- package/dist/migrations/1000000000040-AddThermostatBranchGroups.d.ts +6 -0
- package/dist/migrations/1000000000040-AddThermostatBranchGroups.js +32 -0
- package/dist/migrations/1000000000040-AddThermostatBranchGroups.js.map +1 -0
- package/dist/migrations/1000000000041-AddThermostatMemberProtection.d.ts +6 -0
- package/dist/migrations/1000000000041-AddThermostatMemberProtection.js +39 -0
- package/dist/migrations/1000000000041-AddThermostatMemberProtection.js.map +1 -0
- package/dist/migrations/1000000000042-AddShellyCoverRecoveries.d.ts +6 -0
- package/dist/migrations/1000000000042-AddShellyCoverRecoveries.js +19 -0
- package/dist/migrations/1000000000042-AddShellyCoverRecoveries.js.map +1 -0
- package/dist/migrations/1000000000044-AddVirtualDewPoint.d.ts +6 -0
- package/dist/migrations/1000000000044-AddVirtualDewPoint.js +36 -0
- package/dist/migrations/1000000000044-AddVirtualDewPoint.js.map +1 -0
- package/dist/migrations/1000000000045-AddThermostatCoolingDependencies.d.ts +6 -0
- package/dist/migrations/1000000000045-AddThermostatCoolingDependencies.js +32 -0
- package/dist/migrations/1000000000045-AddThermostatCoolingDependencies.js.map +1 -0
- package/dist/migrations/1000000000046-AddSpaceActivityModes.d.ts +7 -0
- package/dist/migrations/1000000000046-AddSpaceActivityModes.js +54 -0
- package/dist/migrations/1000000000046-AddSpaceActivityModes.js.map +1 -0
- package/dist/migrations/1000000000047-AddClimateAutomationOwnership.d.ts +6 -0
- package/dist/migrations/1000000000047-AddClimateAutomationOwnership.js +60 -0
- package/dist/migrations/1000000000047-AddClimateAutomationOwnership.js.map +1 -0
- package/dist/migrations/1000000000048-AddThermostatCreationCatalogBirths.d.ts +6 -0
- package/dist/migrations/1000000000048-AddThermostatCreationCatalogBirths.js +208 -0
- package/dist/migrations/1000000000048-AddThermostatCreationCatalogBirths.js.map +1 -0
- package/dist/migrations/1000000000049-FenceClimateAutomationLifecycle.d.ts +6 -0
- package/dist/migrations/1000000000049-FenceClimateAutomationLifecycle.js +40 -0
- package/dist/migrations/1000000000049-FenceClimateAutomationLifecycle.js.map +1 -0
- package/dist/migrations/1000000000050-AddSpaceModeSchedules.d.ts +6 -0
- package/dist/migrations/1000000000050-AddSpaceModeSchedules.js +36 -0
- package/dist/migrations/1000000000050-AddSpaceModeSchedules.js.map +1 -0
- package/dist/migrations/1000000000051-AddSpaceOccupancy.d.ts +6 -0
- package/dist/migrations/1000000000051-AddSpaceOccupancy.js +34 -0
- package/dist/migrations/1000000000051-AddSpaceOccupancy.js.map +1 -0
- package/dist/migrations/1000000000052-AddNativeThermostats.d.ts +6 -0
- package/dist/migrations/1000000000052-AddNativeThermostats.js +39 -0
- package/dist/migrations/1000000000052-AddNativeThermostats.js.map +1 -0
- package/dist/migrations/1000000000053-AddThermostatOverrideClocks.d.ts +6 -0
- package/dist/migrations/1000000000053-AddThermostatOverrideClocks.js +35 -0
- package/dist/migrations/1000000000053-AddThermostatOverrideClocks.js.map +1 -0
- package/dist/modules/buddy/buddy.utils.d.ts +1 -1
- package/dist/modules/buddy/buddy.utils.js +10 -11
- package/dist/modules/buddy/buddy.utils.js.map +1 -1
- package/dist/modules/buddy/services/buddy-context.service.js +2 -1
- package/dist/modules/buddy/services/buddy-context.service.js.map +1 -1
- package/dist/modules/buddy/services/home-context-tool-provider.service.d.ts +1 -1
- package/dist/modules/devices/contracts/climate-automation.contract.d.ts +111 -0
- package/dist/modules/devices/contracts/climate-automation.contract.js +3 -0
- package/dist/modules/devices/contracts/climate-automation.contract.js.map +1 -0
- package/dist/modules/devices/controllers/channels.properties.controller.d.ts +1 -1
- package/dist/modules/devices/controllers/channels.properties.controller.js +11 -4
- package/dist/modules/devices/controllers/channels.properties.controller.js.map +1 -1
- package/dist/modules/devices/controllers/devices.channels.properties.controller.d.ts +1 -1
- package/dist/modules/devices/controllers/devices.channels.properties.controller.js +11 -4
- package/dist/modules/devices/controllers/devices.channels.properties.controller.js.map +1 -1
- package/dist/modules/devices/controllers/property-command.controller.d.ts +9 -0
- package/dist/modules/devices/controllers/property-command.controller.js +88 -0
- package/dist/modules/devices/controllers/property-command.controller.js.map +1 -0
- package/dist/modules/devices/devices.constants.d.ts +4 -0
- package/dist/modules/devices/devices.constants.js +4 -0
- package/dist/modules/devices/devices.constants.js.map +1 -1
- package/dist/modules/devices/devices.module.js +22 -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 +39 -0
- package/dist/modules/devices/devices.openapi.js.map +1 -1
- package/dist/modules/devices/dto/property-command.dto.js +20 -6
- package/dist/modules/devices/dto/property-command.dto.js.map +1 -1
- package/dist/modules/devices/dto/update-device.dto.d.ts +1 -1
- package/dist/modules/devices/dto/update-device.dto.js +4 -3
- package/dist/modules/devices/dto/update-device.dto.js.map +1 -1
- package/dist/modules/devices/entities/climate-automation.entity.d.ts +56 -0
- package/dist/modules/devices/entities/climate-automation.entity.js +231 -0
- package/dist/modules/devices/entities/climate-automation.entity.js.map +1 -0
- package/dist/modules/devices/entities/devices.entity.d.ts +4 -0
- package/dist/modules/devices/entities/devices.entity.js +27 -3
- package/dist/modules/devices/entities/devices.entity.js.map +1 -1
- package/dist/modules/devices/interceptors/property-command-entry.interceptor.d.ts +10 -0
- package/dist/modules/devices/interceptors/property-command-entry.interceptor.js +50 -0
- package/dist/modules/devices/interceptors/property-command-entry.interceptor.js.map +1 -0
- package/dist/modules/devices/models/composite-command.model.d.ts +16 -0
- package/dist/modules/devices/models/composite-command.model.js +99 -0
- package/dist/modules/devices/models/composite-command.model.js.map +1 -0
- package/dist/modules/devices/models/property-command-response.model.d.ts +18 -0
- package/dist/modules/devices/models/property-command-response.model.js +90 -0
- package/dist/modules/devices/models/property-command-response.model.js.map +1 -0
- package/dist/modules/devices/models/property-read-policy.model.d.ts +4 -0
- package/dist/modules/devices/models/property-read-policy.model.js +57 -0
- package/dist/modules/devices/models/property-read-policy.model.js.map +1 -0
- package/dist/modules/devices/models/property-sample.model.d.ts +50 -0
- package/dist/modules/devices/models/property-sample.model.js +3 -0
- package/dist/modules/devices/models/property-sample.model.js.map +1 -0
- package/dist/modules/devices/models/property-value-state.model.d.ts +11 -0
- package/dist/modules/devices/models/property-value-state.model.js +55 -1
- package/dist/modules/devices/models/property-value-state.model.js.map +1 -1
- package/dist/modules/devices/platforms/device.platform.d.ts +43 -0
- package/dist/modules/devices/platforms/native-climate.contract.d.ts +50 -0
- package/dist/modules/devices/platforms/native-climate.contract.js +3 -0
- package/dist/modules/devices/platforms/native-climate.contract.js.map +1 -0
- package/dist/modules/devices/services/channels-type-mapper.service.d.ts +3 -0
- package/dist/modules/devices/services/channels-type-mapper.service.js +21 -1
- package/dist/modules/devices/services/channels-type-mapper.service.js.map +1 -1
- package/dist/modules/devices/services/channels.properties-type-mapper.service.d.ts +7 -2
- package/dist/modules/devices/services/channels.properties-type-mapper.service.js +21 -1
- package/dist/modules/devices/services/channels.properties-type-mapper.service.js.map +1 -1
- package/dist/modules/devices/services/channels.properties.service.d.ts +11 -2
- package/dist/modules/devices/services/channels.properties.service.js +219 -64
- package/dist/modules/devices/services/channels.properties.service.js.map +1 -1
- package/dist/modules/devices/services/channels.service.d.ts +12 -5
- package/dist/modules/devices/services/channels.service.js +148 -55
- package/dist/modules/devices/services/channels.service.js.map +1 -1
- package/dist/modules/devices/services/climate-automation-ledger-lifecycle.d.ts +47 -0
- package/dist/modules/devices/services/climate-automation-ledger-lifecycle.js +242 -0
- package/dist/modules/devices/services/climate-automation-ledger-lifecycle.js.map +1 -0
- package/dist/modules/devices/services/climate-automation-ledger.service.d.ts +68 -0
- package/dist/modules/devices/services/climate-automation-ledger.service.js +1061 -0
- package/dist/modules/devices/services/climate-automation-ledger.service.js.map +1 -0
- package/dist/modules/devices/services/climate-automation-ledger.utils.d.ts +8 -0
- package/dist/modules/devices/services/climate-automation-ledger.utils.js +54 -0
- package/dist/modules/devices/services/climate-automation-ledger.utils.js.map +1 -0
- package/dist/modules/devices/services/climate-automation.registry.service.d.ts +15 -0
- package/dist/modules/devices/services/climate-automation.registry.service.js +71 -0
- package/dist/modules/devices/services/climate-automation.registry.service.js.map +1 -0
- package/dist/modules/devices/services/composite-property-command.registry.service.d.ts +48 -0
- package/dist/modules/devices/services/composite-property-command.registry.service.js +65 -0
- package/dist/modules/devices/services/composite-property-command.registry.service.js.map +1 -0
- package/dist/modules/devices/services/controller-publication-context.d.ts +27 -0
- package/dist/modules/devices/services/controller-publication-context.js +148 -0
- package/dist/modules/devices/services/controller-publication-context.js.map +1 -0
- package/dist/modules/devices/services/cover-action-proof.d.ts +7 -0
- package/dist/modules/devices/services/cover-action-proof.js +142 -0
- package/dist/modules/devices/services/cover-action-proof.js.map +1 -0
- package/dist/modules/devices/services/creation-capture.d.ts +19 -0
- package/dist/modules/devices/services/creation-capture.js +85 -0
- package/dist/modules/devices/services/creation-capture.js.map +1 -0
- package/dist/modules/devices/services/device-command-graph.service.js +1 -1
- package/dist/modules/devices/services/device-command-graph.service.js.map +1 -1
- package/dist/modules/devices/services/device-connection-state.service.d.ts +1 -0
- package/dist/modules/devices/services/device-connection-state.service.js +64 -18
- package/dist/modules/devices/services/device-connection-state.service.js.map +1 -1
- package/dist/modules/devices/services/device-connectivity.service.js +96 -51
- package/dist/modules/devices/services/device-connectivity.service.js.map +1 -1
- package/dist/modules/devices/services/device-contribution.registry.service.d.ts +50 -0
- package/dist/modules/devices/services/device-contribution.registry.service.js +45 -0
- package/dist/modules/devices/services/device-contribution.registry.service.js.map +1 -0
- package/dist/modules/devices/services/device-creation-context.d.ts +57 -0
- package/dist/modules/devices/services/device-creation-context.js +315 -0
- package/dist/modules/devices/services/device-creation-context.js.map +1 -0
- package/dist/modules/devices/services/device-structure-lock.service.d.ts +5 -0
- package/dist/modules/devices/services/device-structure-lock.service.js +64 -12
- package/dist/modules/devices/services/device-structure-lock.service.js.map +1 -1
- package/dist/modules/devices/services/device-validation.service.d.ts +0 -1
- package/dist/modules/devices/services/device-validation.service.js +3 -14
- package/dist/modules/devices/services/device-validation.service.js.map +1 -1
- package/dist/modules/devices/services/device-zones.service.d.ts +3 -1
- package/dist/modules/devices/services/device-zones.service.js +30 -6
- package/dist/modules/devices/services/device-zones.service.js.map +1 -1
- package/dist/modules/devices/services/devices-type-mapper.service.d.ts +3 -0
- package/dist/modules/devices/services/devices-type-mapper.service.js +21 -1
- package/dist/modules/devices/services/devices-type-mapper.service.js.map +1 -1
- package/dist/modules/devices/services/devices.service.d.ts +8 -2
- package/dist/modules/devices/services/devices.service.js +194 -49
- package/dist/modules/devices/services/devices.service.js.map +1 -1
- package/dist/modules/devices/services/platform.registry.service.d.ts +11 -1
- package/dist/modules/devices/services/platform.registry.service.js +42 -5
- package/dist/modules/devices/services/platform.registry.service.js.map +1 -1
- package/dist/modules/devices/services/property-command-admission.registry.service.d.ts +28 -0
- package/dist/modules/devices/services/property-command-admission.registry.service.js +70 -0
- package/dist/modules/devices/services/property-command-admission.registry.service.js.map +1 -0
- package/dist/modules/devices/services/property-command-dispatch.service.d.ts +28 -2
- package/dist/modules/devices/services/property-command-dispatch.service.js +704 -10
- package/dist/modules/devices/services/property-command-dispatch.service.js.map +1 -1
- package/dist/modules/devices/services/property-command-entry-snapshot.d.ts +25 -0
- package/dist/modules/devices/services/property-command-entry-snapshot.js +87 -0
- package/dist/modules/devices/services/property-command-entry-snapshot.js.map +1 -0
- package/dist/modules/devices/services/property-command-window.service.d.ts +22 -0
- package/dist/modules/devices/services/property-command-window.service.js +81 -0
- package/dist/modules/devices/services/property-command-window.service.js.map +1 -1
- package/dist/modules/devices/services/property-command.service.d.ts +24 -3
- package/dist/modules/devices/services/property-command.service.js +180 -18
- package/dist/modules/devices/services/property-command.service.js.map +1 -1
- package/dist/modules/devices/services/property-metadata.service.js +1 -1
- package/dist/modules/devices/services/property-metadata.service.js.map +1 -1
- package/dist/modules/devices/services/property-producer.registry.service.d.ts +98 -0
- package/dist/modules/devices/services/property-producer.registry.service.js +636 -0
- package/dist/modules/devices/services/property-producer.registry.service.js.map +1 -0
- package/dist/modules/devices/services/property-value-source.registry.service.d.ts +18 -0
- package/dist/modules/devices/services/property-value-source.registry.service.js +291 -2
- package/dist/modules/devices/services/property-value-source.registry.service.js.map +1 -1
- package/dist/modules/devices/services/property-value.service.d.ts +40 -3
- package/dist/modules/devices/services/property-value.service.js +744 -193
- package/dist/modules/devices/services/property-value.service.js.map +1 -1
- package/dist/modules/devices/subscribers/channel-property-entity.subscriber.d.ts +5 -0
- package/dist/modules/devices/subscribers/channel-property-entity.subscriber.js +25 -0
- package/dist/modules/devices/subscribers/channel-property-entity.subscriber.js.map +1 -1
- package/dist/modules/devices/utils/property-metadata.utils.d.ts +1 -0
- package/dist/modules/devices/utils/property-metadata.utils.js +10 -0
- package/dist/modules/devices/utils/property-metadata.utils.js.map +1 -1
- package/dist/modules/devices/utils/property-permissions.utils.d.ts +2 -0
- package/dist/modules/devices/utils/property-permissions.utils.js +10 -0
- package/dist/modules/devices/utils/property-permissions.utils.js.map +1 -0
- package/dist/modules/extensions/services/discovered-backend.module.d.ts +6 -0
- package/dist/modules/extensions/services/discovered-backend.module.js +32 -0
- package/dist/modules/extensions/services/discovered-backend.module.js.map +1 -0
- package/dist/modules/extensions/services/extensions-discovery.js +15 -0
- package/dist/modules/extensions/services/extensions-discovery.js.map +1 -1
- package/dist/modules/extensions/services/extensions.service.d.ts +4 -0
- package/dist/modules/extensions/services/extensions.service.js +13 -0
- package/dist/modules/extensions/services/extensions.service.js.map +1 -1
- package/dist/modules/extensions/services/managed-extension-service.interface.d.ts +1 -0
- package/dist/modules/extensions/services/managed-service-manager.service.d.ts +15 -0
- package/dist/modules/extensions/services/managed-service-manager.service.js +242 -72
- package/dist/modules/extensions/services/managed-service-manager.service.js.map +1 -1
- package/dist/modules/home-context/schemas/home-search-input.schemas.d.ts +1 -1
- package/dist/modules/intents/models/intent.model.d.ts +2 -0
- package/dist/modules/intents/models/intent.model.js +14 -0
- package/dist/modules/intents/models/intent.model.js.map +1 -1
- package/dist/modules/intents/services/intents.service.d.ts +2 -1
- package/dist/modules/intents/services/intents.service.js +18 -2
- package/dist/modules/intents/services/intents.service.js.map +1 -1
- package/dist/modules/scenes/listeners/websocket-exchange.listener.js +4 -0
- package/dist/modules/scenes/listeners/websocket-exchange.listener.js.map +1 -1
- package/dist/modules/scenes/models/scenes.model.d.ts +2 -0
- package/dist/modules/scenes/models/scenes.model.js +10 -0
- package/dist/modules/scenes/models/scenes.model.js.map +1 -1
- package/dist/modules/scenes/services/scene-executor.service.d.ts +6 -1
- package/dist/modules/scenes/services/scene-executor.service.js +33 -22
- package/dist/modules/scenes/services/scene-executor.service.js.map +1 -1
- package/dist/modules/security/providers/alarm-security.provider.d.ts +3 -1
- package/dist/modules/security/providers/alarm-security.provider.js +83 -8
- package/dist/modules/security/providers/alarm-security.provider.js.map +1 -1
- package/dist/modules/spaces/services/space-lifecycle-registry.service.d.ts +19 -0
- package/dist/modules/spaces/services/space-lifecycle-registry.service.js +121 -0
- package/dist/modules/spaces/services/space-lifecycle-registry.service.js.map +1 -0
- package/dist/modules/spaces/services/spaces.service.d.ts +5 -1
- package/dist/modules/spaces/services/spaces.service.js +34 -6
- package/dist/modules/spaces/services/spaces.service.js.map +1 -1
- package/dist/modules/spaces/spaces.constants.d.ts +3 -1
- package/dist/modules/spaces/spaces.constants.js +2 -0
- package/dist/modules/spaces/spaces.constants.js.map +1 -1
- package/dist/modules/spaces/spaces.module.js +13 -1
- package/dist/modules/spaces/spaces.module.js.map +1 -1
- package/dist/modules/storage/services/storage.service.d.ts +8 -0
- package/dist/modules/storage/services/storage.service.js +225 -0
- package/dist/modules/storage/services/storage.service.js.map +1 -1
- package/dist/modules/swagger/decorators/api-documentation.decorator.d.ts +1 -0
- package/dist/modules/swagger/decorators/api-documentation.decorator.js +9 -1
- package/dist/modules/swagger/decorators/api-documentation.decorator.js.map +1 -1
- package/dist/modules/swagger/services/swagger-document.service.d.ts +1 -0
- package/dist/modules/swagger/services/swagger-document.service.js +71 -1
- package/dist/modules/swagger/services/swagger-document.service.js.map +1 -1
- package/dist/modules/system/services/backup.service.js +3 -5
- package/dist/modules/system/services/backup.service.js.map +1 -1
- package/dist/modules/system/utils/timezone.utils.d.ts +2 -0
- package/dist/modules/system/utils/timezone.utils.js +9 -0
- package/dist/modules/system/utils/timezone.utils.js.map +1 -0
- package/dist/modules/websocket/gateway/websocket.gateway.js +1 -0
- package/dist/modules/websocket/gateway/websocket.gateway.js.map +1 -1
- package/dist/plugins/devices-home-assistant/devices-home-assistant.plugin.js +2 -0
- package/dist/plugins/devices-home-assistant/devices-home-assistant.plugin.js.map +1 -1
- package/dist/plugins/devices-home-assistant/dto/update-channel-property.dto.d.ts +3 -3
- package/dist/plugins/devices-home-assistant/dto/update-channel-property.dto.js +3 -3
- package/dist/plugins/devices-home-assistant/dto/update-channel-property.dto.js.map +1 -1
- package/dist/plugins/devices-home-assistant/platforms/home-assistant.device.platform.d.ts +11 -1
- package/dist/plugins/devices-home-assistant/platforms/home-assistant.device.platform.js +82 -2
- package/dist/plugins/devices-home-assistant/platforms/home-assistant.device.platform.js.map +1 -1
- package/dist/plugins/devices-home-assistant/services/home-assistant-native-climate.service.d.ts +22 -0
- package/dist/plugins/devices-home-assistant/services/home-assistant-native-climate.service.js +409 -0
- package/dist/plugins/devices-home-assistant/services/home-assistant-native-climate.service.js.map +1 -0
- package/dist/plugins/devices-home-assistant/services/home-assistant.ws.service.d.ts +14 -0
- package/dist/plugins/devices-home-assistant/services/home-assistant.ws.service.js +93 -3
- package/dist/plugins/devices-home-assistant/services/home-assistant.ws.service.js.map +1 -1
- package/dist/plugins/devices-homekit/devices-homekit.plugin.js +28 -2
- package/dist/plugins/devices-homekit/devices-homekit.plugin.js.map +1 -1
- package/dist/plugins/devices-homekit/listeners/homekit-event.listener.d.ts +26 -3
- package/dist/plugins/devices-homekit/listeners/homekit-event.listener.js +183 -5
- package/dist/plugins/devices-homekit/listeners/homekit-event.listener.js.map +1 -1
- package/dist/plugins/devices-homekit/mappers/base.mapper.d.ts +2 -1
- package/dist/plugins/devices-homekit/mappers/base.mapper.js +38 -10
- package/dist/plugins/devices-homekit/mappers/base.mapper.js.map +1 -1
- package/dist/plugins/devices-homekit/mappers/battery.mapper.js +4 -3
- package/dist/plugins/devices-homekit/mappers/battery.mapper.js.map +1 -1
- package/dist/plugins/devices-homekit/mappers/button.mapper.js +21 -2
- package/dist/plugins/devices-homekit/mappers/button.mapper.js.map +1 -1
- package/dist/plugins/devices-homekit/mappers/characteristic-get.d.ts +3 -0
- package/dist/plugins/devices-homekit/mappers/characteristic-get.js +10 -0
- package/dist/plugins/devices-homekit/mappers/characteristic-get.js.map +1 -0
- package/dist/plugins/devices-homekit/mappers/characteristic-write.d.ts +1 -1
- package/dist/plugins/devices-homekit/mappers/characteristic-write.js +2 -1
- package/dist/plugins/devices-homekit/mappers/characteristic-write.js.map +1 -1
- package/dist/plugins/devices-homekit/mappers/fan.mapper.d.ts +12 -0
- package/dist/plugins/devices-homekit/mappers/fan.mapper.js +126 -0
- package/dist/plugins/devices-homekit/mappers/fan.mapper.js.map +1 -0
- package/dist/plugins/devices-homekit/mappers/homekit-mapper.interface.d.ts +8 -0
- package/dist/plugins/devices-homekit/mappers/outlet.mapper.js +4 -0
- package/dist/plugins/devices-homekit/mappers/outlet.mapper.js.map +1 -1
- package/dist/plugins/devices-homekit/mappers/property-read.d.ts +7 -0
- package/dist/plugins/devices-homekit/mappers/property-read.js +64 -0
- package/dist/plugins/devices-homekit/mappers/property-read.js.map +1 -0
- package/dist/plugins/devices-homekit/mappers/semantic-conversion.d.ts +2 -0
- package/dist/plugins/devices-homekit/mappers/semantic-conversion.js +15 -0
- package/dist/plugins/devices-homekit/mappers/semantic-conversion.js.map +1 -0
- package/dist/plugins/devices-homekit/mappers/sensor.mapper.d.ts +3 -0
- package/dist/plugins/devices-homekit/mappers/sensor.mapper.js +63 -11
- package/dist/plugins/devices-homekit/mappers/sensor.mapper.js.map +1 -1
- package/dist/plugins/devices-homekit/mappers/service-fault.d.ts +4 -0
- package/dist/plugins/devices-homekit/mappers/service-fault.js +33 -0
- package/dist/plugins/devices-homekit/mappers/service-fault.js.map +1 -0
- package/dist/plugins/devices-homekit/mappers/thermostat-coordinator.d.ts +4 -0
- package/dist/plugins/devices-homekit/mappers/thermostat-coordinator.js +128 -19
- package/dist/plugins/devices-homekit/mappers/thermostat-coordinator.js.map +1 -1
- package/dist/plugins/devices-homekit/mappers/thermostat.mapper.js +5 -3
- package/dist/plugins/devices-homekit/mappers/thermostat.mapper.js.map +1 -1
- package/dist/plugins/devices-homekit/mappers/unavailable-characteristic.d.ts +3 -0
- package/dist/plugins/devices-homekit/mappers/unavailable-characteristic.js +18 -0
- package/dist/plugins/devices-homekit/mappers/unavailable-characteristic.js.map +1 -0
- package/dist/plugins/devices-homekit/mappers/window-covering.mapper.js +19 -3
- package/dist/plugins/devices-homekit/mappers/window-covering.mapper.js.map +1 -1
- package/dist/plugins/devices-homekit/services/homekit-bridge.service.d.ts +4 -0
- package/dist/plugins/devices-homekit/services/homekit-bridge.service.js +58 -29
- package/dist/plugins/devices-homekit/services/homekit-bridge.service.js.map +1 -1
- package/dist/plugins/devices-homekit/services/homekit-command.dispatcher.d.ts +2 -0
- package/dist/plugins/devices-homekit/services/homekit-command.dispatcher.js +3 -0
- package/dist/plugins/devices-homekit/services/homekit-command.dispatcher.js.map +1 -1
- package/dist/plugins/devices-homekit/services/homekit-mapper-registry.service.d.ts +30 -2
- package/dist/plugins/devices-homekit/services/homekit-mapper-registry.service.js +126 -2
- package/dist/plugins/devices-homekit/services/homekit-mapper-registry.service.js.map +1 -1
- package/dist/plugins/devices-homekit/services/homekit-mapping-maintenance.d.ts +8 -0
- package/dist/plugins/devices-homekit/services/homekit-mapping-maintenance.js +17 -0
- package/dist/plugins/devices-homekit/services/homekit-mapping-maintenance.js.map +1 -0
- package/dist/plugins/devices-homekit/services/homekit-property-state.service.d.ts +19 -0
- package/dist/plugins/devices-homekit/services/homekit-property-state.service.js +69 -0
- package/dist/plugins/devices-homekit/services/homekit-property-state.service.js.map +1 -0
- package/dist/plugins/devices-shelly-ng/contracts/cover-action.contract.d.ts +13 -0
- package/dist/plugins/devices-shelly-ng/contracts/cover-action.contract.js +60 -0
- package/dist/plugins/devices-shelly-ng/contracts/cover-action.contract.js.map +1 -0
- package/dist/plugins/devices-shelly-ng/contracts/cover-recovery.contract.d.ts +13 -0
- package/dist/plugins/devices-shelly-ng/contracts/cover-recovery.contract.js +3 -0
- package/dist/plugins/devices-shelly-ng/contracts/cover-recovery.contract.js.map +1 -0
- package/dist/plugins/devices-shelly-ng/contracts/guard-script-source.d.ts +1 -0
- package/dist/plugins/devices-shelly-ng/contracts/guard-script-source.js +5 -0
- package/dist/plugins/devices-shelly-ng/contracts/guard-script-source.js.map +1 -0
- package/dist/plugins/devices-shelly-ng/contracts/guard-script.contract.d.ts +21 -0
- package/dist/plugins/devices-shelly-ng/contracts/guard-script.contract.js +47 -0
- package/dist/plugins/devices-shelly-ng/contracts/guard-script.contract.js.map +1 -0
- package/dist/plugins/devices-shelly-ng/contracts/member-guard-script-source.d.ts +2 -0
- package/dist/plugins/devices-shelly-ng/contracts/member-guard-script-source.js +27 -0
- package/dist/plugins/devices-shelly-ng/contracts/member-guard-script-source.js.map +1 -0
- package/dist/plugins/devices-shelly-ng/contracts/native-temperature.contract.d.ts +36 -0
- package/dist/plugins/devices-shelly-ng/contracts/native-temperature.contract.js +200 -0
- package/dist/plugins/devices-shelly-ng/contracts/native-temperature.contract.js.map +1 -0
- package/dist/plugins/devices-shelly-ng/contracts/protective-switch.contract.d.ts +44 -0
- package/dist/plugins/devices-shelly-ng/contracts/protective-switch.contract.js +29 -0
- package/dist/plugins/devices-shelly-ng/contracts/protective-switch.contract.js.map +1 -0
- package/dist/plugins/devices-shelly-ng/controllers/shelly-cover-recovery.controller.d.ts +11 -0
- package/dist/plugins/devices-shelly-ng/controllers/shelly-cover-recovery.controller.js +98 -0
- package/dist/plugins/devices-shelly-ng/controllers/shelly-cover-recovery.controller.js.map +1 -0
- package/dist/plugins/devices-shelly-ng/delegates/delegates-manager.service.d.ts +51 -1
- package/dist/plugins/devices-shelly-ng/delegates/delegates-manager.service.js +688 -2
- 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 +46 -1
- package/dist/plugins/devices-shelly-ng/delegates/shelly-device.delegate.js +315 -4
- package/dist/plugins/devices-shelly-ng/delegates/shelly-device.delegate.js.map +1 -1
- package/dist/plugins/devices-shelly-ng/devices-shelly-ng.openapi.d.ts +3 -1
- package/dist/plugins/devices-shelly-ng/devices-shelly-ng.openapi.js +8 -0
- package/dist/plugins/devices-shelly-ng/devices-shelly-ng.openapi.js.map +1 -1
- package/dist/plugins/devices-shelly-ng/devices-shelly-ng.plugin.js +16 -1
- package/dist/plugins/devices-shelly-ng/devices-shelly-ng.plugin.js.map +1 -1
- package/dist/plugins/devices-shelly-ng/dto/cover-recovery.dto.d.ts +11 -0
- package/dist/plugins/devices-shelly-ng/dto/cover-recovery.dto.js +77 -0
- package/dist/plugins/devices-shelly-ng/dto/cover-recovery.dto.js.map +1 -0
- package/dist/plugins/devices-shelly-ng/entities/shelly-cover-ordering.entity.d.ts +5 -0
- package/dist/plugins/devices-shelly-ng/entities/shelly-cover-ordering.entity.js +32 -0
- package/dist/plugins/devices-shelly-ng/entities/shelly-cover-ordering.entity.js.map +1 -0
- package/dist/plugins/devices-shelly-ng/entities/shelly-cover-recovery.entity.d.ts +17 -0
- package/dist/plugins/devices-shelly-ng/entities/shelly-cover-recovery.entity.js +80 -0
- package/dist/plugins/devices-shelly-ng/entities/shelly-cover-recovery.entity.js.map +1 -0
- package/dist/plugins/devices-shelly-ng/entities/shelly-sample-source.entity.d.ts +16 -0
- package/dist/plugins/devices-shelly-ng/entities/shelly-sample-source.entity.js +70 -0
- package/dist/plugins/devices-shelly-ng/entities/shelly-sample-source.entity.js.map +1 -0
- package/dist/plugins/devices-shelly-ng/mappings/definitions/covers.yaml +30 -24
- package/dist/plugins/devices-shelly-ng/models/cover-recovery.model.d.ts +21 -0
- package/dist/plugins/devices-shelly-ng/models/cover-recovery.model.js +114 -0
- package/dist/plugins/devices-shelly-ng/models/cover-recovery.model.js.map +1 -0
- package/dist/plugins/devices-shelly-ng/platforms/shelly-ng.device.platform.d.ts +27 -1
- package/dist/plugins/devices-shelly-ng/platforms/shelly-ng.device.platform.js +146 -0
- package/dist/plugins/devices-shelly-ng/platforms/shelly-ng.device.platform.js.map +1 -1
- package/dist/plugins/devices-shelly-ng/services/authenticated-shelly-script-http.d.ts +16 -0
- package/dist/plugins/devices-shelly-ng/services/authenticated-shelly-script-http.js +154 -0
- package/dist/plugins/devices-shelly-ng/services/authenticated-shelly-script-http.js.map +1 -0
- package/dist/plugins/devices-shelly-ng/services/device-manager.service.d.ts +4 -1
- package/dist/plugins/devices-shelly-ng/services/device-manager.service.js +113 -4
- package/dist/plugins/devices-shelly-ng/services/device-manager.service.js.map +1 -1
- package/dist/plugins/devices-shelly-ng/services/guarded-shelly-http.d.ts +2 -0
- package/dist/plugins/devices-shelly-ng/services/guarded-shelly-http.js +78 -0
- package/dist/plugins/devices-shelly-ng/services/guarded-shelly-http.js.map +1 -0
- package/dist/plugins/devices-shelly-ng/services/guarded-shelly-rpc.d.ts +9 -0
- package/dist/plugins/devices-shelly-ng/services/guarded-shelly-rpc.js +56 -0
- package/dist/plugins/devices-shelly-ng/services/guarded-shelly-rpc.js.map +1 -0
- package/dist/plugins/devices-shelly-ng/services/remote-dew-point-artifact.d.ts +45 -0
- package/dist/plugins/devices-shelly-ng/services/remote-dew-point-artifact.js +278 -0
- package/dist/plugins/devices-shelly-ng/services/remote-dew-point-artifact.js.map +1 -0
- package/dist/plugins/devices-shelly-ng/services/remote-dew-point-lease.contract.d.ts +49 -0
- package/dist/plugins/devices-shelly-ng/services/remote-dew-point-lease.contract.js +32 -0
- package/dist/plugins/devices-shelly-ng/services/remote-dew-point-lease.contract.js.map +1 -0
- package/dist/plugins/devices-shelly-ng/services/remote-dew-point-qualification.d.ts +53 -0
- package/dist/plugins/devices-shelly-ng/services/remote-dew-point-qualification.js +91 -0
- package/dist/plugins/devices-shelly-ng/services/remote-dew-point-qualification.js.map +1 -0
- package/dist/plugins/devices-shelly-ng/services/remote-dew-point-session.d.ts +35 -0
- package/dist/plugins/devices-shelly-ng/services/remote-dew-point-session.js +244 -0
- package/dist/plugins/devices-shelly-ng/services/remote-dew-point-session.js.map +1 -0
- package/dist/plugins/devices-shelly-ng/services/shelly-cover-ordering.service.d.ts +9 -0
- package/dist/plugins/devices-shelly-ng/services/shelly-cover-ordering.service.js +50 -0
- package/dist/plugins/devices-shelly-ng/services/shelly-cover-ordering.service.js.map +1 -0
- package/dist/plugins/devices-shelly-ng/services/shelly-cover-recovery-lane.service.d.ts +29 -0
- package/dist/plugins/devices-shelly-ng/services/shelly-cover-recovery-lane.service.js +166 -0
- package/dist/plugins/devices-shelly-ng/services/shelly-cover-recovery-lane.service.js.map +1 -0
- package/dist/plugins/devices-shelly-ng/services/shelly-cover-recovery.service.d.ts +21 -0
- package/dist/plugins/devices-shelly-ng/services/shelly-cover-recovery.service.js +207 -0
- package/dist/plugins/devices-shelly-ng/services/shelly-cover-recovery.service.js.map +1 -0
- package/dist/plugins/devices-shelly-ng/services/shelly-cover-session.d.ts +25 -0
- package/dist/plugins/devices-shelly-ng/services/shelly-cover-session.js +132 -0
- package/dist/plugins/devices-shelly-ng/services/shelly-cover-session.js.map +1 -0
- package/dist/plugins/devices-shelly-ng/services/shelly-cover-telemetry.d.ts +9 -0
- package/dist/plugins/devices-shelly-ng/services/shelly-cover-telemetry.js +63 -0
- package/dist/plugins/devices-shelly-ng/services/shelly-cover-telemetry.js.map +1 -0
- package/dist/plugins/devices-shelly-ng/services/shelly-guard-rpc-session.d.ts +33 -0
- package/dist/plugins/devices-shelly-ng/services/shelly-guard-rpc-session.js +191 -0
- package/dist/plugins/devices-shelly-ng/services/shelly-guard-rpc-session.js.map +1 -0
- package/dist/plugins/devices-shelly-ng/services/shelly-ng.service.d.ts +3 -0
- package/dist/plugins/devices-shelly-ng/services/shelly-ng.service.js +32 -4
- package/dist/plugins/devices-shelly-ng/services/shelly-ng.service.js.map +1 -1
- package/dist/plugins/devices-shelly-ng/services/shelly-sample-sources.service.d.ts +34 -0
- package/dist/plugins/devices-shelly-ng/services/shelly-sample-sources.service.js +194 -0
- package/dist/plugins/devices-shelly-ng/services/shelly-sample-sources.service.js.map +1 -0
- package/dist/plugins/devices-shelly-ng/services/shelly-ws-server.service.js +5 -2
- package/dist/plugins/devices-shelly-ng/services/shelly-ws-server.service.js.map +1 -1
- package/dist/plugins/devices-shelly-v1/platforms/shelly-v1.device.platform.d.ts +4 -0
- package/dist/plugins/devices-shelly-v1/platforms/shelly-v1.device.platform.js +3 -0
- package/dist/plugins/devices-shelly-v1/platforms/shelly-v1.device.platform.js.map +1 -1
- package/dist/plugins/devices-virtual/contracts/thermostat-actuation.contract.d.ts +114 -0
- package/dist/plugins/devices-virtual/contracts/thermostat-actuation.contract.js +12 -0
- package/dist/plugins/devices-virtual/contracts/thermostat-actuation.contract.js.map +1 -0
- package/dist/plugins/devices-virtual/contracts/thermostat-command.contract.d.ts +4 -0
- package/dist/plugins/devices-virtual/contracts/thermostat-command.contract.js +3 -0
- package/dist/plugins/devices-virtual/contracts/thermostat-command.contract.js.map +1 -0
- package/dist/plugins/devices-virtual/controllers/native-thermostat.controller.d.ts +15 -0
- package/dist/plugins/devices-virtual/controllers/native-thermostat.controller.js +178 -0
- package/dist/plugins/devices-virtual/controllers/native-thermostat.controller.js.map +1 -0
- package/dist/plugins/devices-virtual/controllers/thermostat-authoring-context.controller.d.ts +11 -0
- package/dist/plugins/devices-virtual/controllers/thermostat-authoring-context.controller.js +92 -0
- package/dist/plugins/devices-virtual/controllers/thermostat-authoring-context.controller.js.map +1 -0
- package/dist/plugins/devices-virtual/controllers/thermostat-installation.controller.d.ts +16 -0
- package/dist/plugins/devices-virtual/controllers/thermostat-installation.controller.js +179 -0
- package/dist/plugins/devices-virtual/controllers/thermostat-installation.controller.js.map +1 -0
- package/dist/plugins/devices-virtual/controllers/virtual-dew-point-config.controller.d.ts +11 -0
- package/dist/plugins/devices-virtual/controllers/virtual-dew-point-config.controller.js +100 -0
- package/dist/plugins/devices-virtual/controllers/virtual-dew-point-config.controller.js.map +1 -0
- package/dist/plugins/devices-virtual/controllers/virtual-measurement-authoring.controller.d.ts +19 -0
- package/dist/plugins/devices-virtual/controllers/virtual-measurement-authoring.controller.js +168 -0
- package/dist/plugins/devices-virtual/controllers/virtual-measurement-authoring.controller.js.map +1 -0
- package/dist/plugins/devices-virtual/controllers/virtual-producer-config.controller.d.ts +28 -0
- package/dist/plugins/devices-virtual/controllers/virtual-producer-config.controller.js +278 -0
- package/dist/plugins/devices-virtual/controllers/virtual-producer-config.controller.js.map +1 -0
- package/dist/plugins/devices-virtual/controllers/virtual-thermostat-authoring.controller.d.ts +12 -0
- package/dist/plugins/devices-virtual/controllers/virtual-thermostat-authoring.controller.js +111 -0
- package/dist/plugins/devices-virtual/controllers/virtual-thermostat-authoring.controller.js.map +1 -0
- package/dist/plugins/devices-virtual/controllers/virtual-thermostat-comfort.controller.d.ts +14 -0
- package/dist/plugins/devices-virtual/controllers/virtual-thermostat-comfort.controller.js +160 -0
- package/dist/plugins/devices-virtual/controllers/virtual-thermostat-comfort.controller.js.map +1 -0
- package/dist/plugins/devices-virtual/controllers/virtual-thermostat-config.controller.d.ts +18 -0
- package/dist/plugins/devices-virtual/controllers/virtual-thermostat-config.controller.js +196 -0
- package/dist/plugins/devices-virtual/controllers/virtual-thermostat-config.controller.js.map +1 -0
- package/dist/plugins/devices-virtual/controllers/virtual-transform-config.controller.d.ts +14 -0
- package/dist/plugins/devices-virtual/controllers/virtual-transform-config.controller.js +128 -0
- package/dist/plugins/devices-virtual/controllers/virtual-transform-config.controller.js.map +1 -0
- package/dist/plugins/devices-virtual/devices-virtual.constants.d.ts +1 -0
- package/dist/plugins/devices-virtual/devices-virtual.constants.js +2 -1
- package/dist/plugins/devices-virtual/devices-virtual.constants.js.map +1 -1
- package/dist/plugins/devices-virtual/devices-virtual.openapi.d.ts +24 -2
- package/dist/plugins/devices-virtual/devices-virtual.openapi.js +95 -0
- package/dist/plugins/devices-virtual/devices-virtual.openapi.js.map +1 -1
- package/dist/plugins/devices-virtual/devices-virtual.plugin.d.ts +7 -1
- package/dist/plugins/devices-virtual/devices-virtual.plugin.js +167 -10
- package/dist/plugins/devices-virtual/devices-virtual.plugin.js.map +1 -1
- package/dist/plugins/devices-virtual/dto/create-device.dto.d.ts +2 -0
- package/dist/plugins/devices-virtual/dto/create-device.dto.js +20 -0
- package/dist/plugins/devices-virtual/dto/create-device.dto.js.map +1 -1
- package/dist/plugins/devices-virtual/dto/dew-point-config.dto.d.ts +14 -0
- package/dist/plugins/devices-virtual/dto/dew-point-config.dto.js +119 -0
- package/dist/plugins/devices-virtual/dto/dew-point-config.dto.js.map +1 -0
- package/dist/plugins/devices-virtual/dto/group-catalog.dto.d.ts +8 -0
- package/dist/plugins/devices-virtual/dto/group-catalog.dto.js +62 -0
- package/dist/plugins/devices-virtual/dto/group-catalog.dto.js.map +1 -0
- package/dist/plugins/devices-virtual/dto/light-group-draft.dto.d.ts +19 -0
- package/dist/plugins/devices-virtual/dto/light-group-draft.dto.js +108 -0
- package/dist/plugins/devices-virtual/dto/light-group-draft.dto.js.map +1 -0
- package/dist/plugins/devices-virtual/dto/measurement-authoring.dto.d.ts +25 -0
- package/dist/plugins/devices-virtual/dto/measurement-authoring.dto.js +157 -0
- package/dist/plugins/devices-virtual/dto/measurement-authoring.dto.js.map +1 -0
- package/dist/plugins/devices-virtual/dto/native-thermostat.dto.d.ts +21 -0
- package/dist/plugins/devices-virtual/dto/native-thermostat.dto.js +122 -0
- package/dist/plugins/devices-virtual/dto/native-thermostat.dto.js.map +1 -0
- package/dist/plugins/devices-virtual/dto/producer-config.dto.d.ts +35 -0
- package/dist/plugins/devices-virtual/dto/producer-config.dto.js +290 -0
- package/dist/plugins/devices-virtual/dto/producer-config.dto.js.map +1 -0
- package/dist/plugins/devices-virtual/dto/thermostat-authoring.dto.d.ts +6 -0
- package/dist/plugins/devices-virtual/dto/thermostat-authoring.dto.js +46 -0
- package/dist/plugins/devices-virtual/dto/thermostat-authoring.dto.js.map +1 -0
- package/dist/plugins/devices-virtual/dto/thermostat-comfort.dto.d.ts +39 -0
- package/dist/plugins/devices-virtual/dto/thermostat-comfort.dto.js +244 -0
- package/dist/plugins/devices-virtual/dto/thermostat-comfort.dto.js.map +1 -0
- package/dist/plugins/devices-virtual/dto/thermostat-config.dto.d.ts +94 -0
- package/dist/plugins/devices-virtual/dto/thermostat-config.dto.js +718 -0
- package/dist/plugins/devices-virtual/dto/thermostat-config.dto.js.map +1 -0
- package/dist/plugins/devices-virtual/dto/thermostat-installation.dto.d.ts +71 -0
- package/dist/plugins/devices-virtual/dto/thermostat-installation.dto.js +410 -0
- package/dist/plugins/devices-virtual/dto/thermostat-installation.dto.js.map +1 -0
- package/dist/plugins/devices-virtual/dto/transform-config.dto.d.ts +71 -0
- package/dist/plugins/devices-virtual/dto/transform-config.dto.js +430 -0
- package/dist/plugins/devices-virtual/dto/transform-config.dto.js.map +1 -0
- package/dist/plugins/devices-virtual/dto/update-device.dto.d.ts +2 -0
- package/dist/plugins/devices-virtual/dto/update-device.dto.js +20 -0
- package/dist/plugins/devices-virtual/dto/update-device.dto.js.map +1 -1
- package/dist/plugins/devices-virtual/entities/devices-virtual.entity.d.ts +13 -1
- package/dist/plugins/devices-virtual/entities/devices-virtual.entity.js +56 -6
- package/dist/plugins/devices-virtual/entities/devices-virtual.entity.js.map +1 -1
- package/dist/plugins/devices-virtual/entities/native-thermostat.entity.d.ts +23 -0
- package/dist/plugins/devices-virtual/entities/native-thermostat.entity.js +103 -0
- package/dist/plugins/devices-virtual/entities/native-thermostat.entity.js.map +1 -0
- package/dist/plugins/devices-virtual/entities/thermostat-cooling-dependency.entity.d.ts +19 -0
- package/dist/plugins/devices-virtual/entities/thermostat-cooling-dependency.entity.js +87 -0
- package/dist/plugins/devices-virtual/entities/thermostat-cooling-dependency.entity.js.map +1 -0
- package/dist/plugins/devices-virtual/entities/thermostat-installation.entity.d.ts +36 -0
- package/dist/plugins/devices-virtual/entities/thermostat-installation.entity.js +125 -0
- package/dist/plugins/devices-virtual/entities/thermostat-installation.entity.js.map +1 -0
- package/dist/plugins/devices-virtual/entities/thermostat-member-protection.entity.d.ts +15 -0
- package/dist/plugins/devices-virtual/entities/thermostat-member-protection.entity.js +70 -0
- package/dist/plugins/devices-virtual/entities/thermostat-member-protection.entity.js.map +1 -0
- package/dist/plugins/devices-virtual/entities/thermostat-override-clock.entity.d.ts +7 -0
- package/dist/plugins/devices-virtual/entities/thermostat-override-clock.entity.js +39 -0
- package/dist/plugins/devices-virtual/entities/thermostat-override-clock.entity.js.map +1 -0
- package/dist/plugins/devices-virtual/entities/virtual-dew-point.entity.d.ts +28 -0
- package/dist/plugins/devices-virtual/entities/virtual-dew-point.entity.js +104 -0
- package/dist/plugins/devices-virtual/entities/virtual-dew-point.entity.js.map +1 -0
- package/dist/plugins/devices-virtual/entities/virtual-producer.entity.d.ts +89 -0
- package/dist/plugins/devices-virtual/entities/virtual-producer.entity.js +281 -0
- package/dist/plugins/devices-virtual/entities/virtual-producer.entity.js.map +1 -0
- package/dist/plugins/devices-virtual/entities/virtual-thermostat-runtime.entity.d.ts +45 -0
- package/dist/plugins/devices-virtual/entities/virtual-thermostat-runtime.entity.js +184 -0
- package/dist/plugins/devices-virtual/entities/virtual-thermostat-runtime.entity.js.map +1 -0
- package/dist/plugins/devices-virtual/entities/virtual-thermostat.entity.d.ts +86 -0
- package/dist/plugins/devices-virtual/entities/virtual-thermostat.entity.js +337 -0
- package/dist/plugins/devices-virtual/entities/virtual-thermostat.entity.js.map +1 -0
- package/dist/plugins/devices-virtual/entities/virtual-transform.entity.d.ts +23 -0
- package/dist/plugins/devices-virtual/entities/virtual-transform.entity.js +101 -0
- package/dist/plugins/devices-virtual/entities/virtual-transform.entity.js.map +1 -0
- package/dist/plugins/devices-virtual/listeners/virtual-device-information.listener.d.ts +5 -0
- package/dist/plugins/devices-virtual/listeners/virtual-device-information.listener.js +65 -22
- package/dist/plugins/devices-virtual/listeners/virtual-device-information.listener.js.map +1 -1
- package/dist/plugins/devices-virtual/listeners/virtual-index-maintenance.listener.d.ts +8 -1
- package/dist/plugins/devices-virtual/listeners/virtual-index-maintenance.listener.js +123 -32
- package/dist/plugins/devices-virtual/listeners/virtual-index-maintenance.listener.js.map +1 -1
- package/dist/plugins/devices-virtual/listeners/virtual-projection.listener.d.ts +3 -0
- package/dist/plugins/devices-virtual/listeners/virtual-projection.listener.js +41 -3
- package/dist/plugins/devices-virtual/listeners/virtual-projection.listener.js.map +1 -1
- package/dist/plugins/devices-virtual/listeners/virtual-status.listener.js +28 -15
- package/dist/plugins/devices-virtual/listeners/virtual-status.listener.js.map +1 -1
- package/dist/plugins/devices-virtual/models/dew-point-response.model.d.ts +38 -0
- package/dist/plugins/devices-virtual/models/dew-point-response.model.js +193 -0
- package/dist/plugins/devices-virtual/models/dew-point-response.model.js.map +1 -0
- package/dist/plugins/devices-virtual/models/group-catalog.model.d.ts +26 -0
- package/dist/plugins/devices-virtual/models/group-catalog.model.js +117 -0
- package/dist/plugins/devices-virtual/models/group-catalog.model.js.map +1 -0
- package/dist/plugins/devices-virtual/models/light-group-draft.model.d.ts +28 -0
- package/dist/plugins/devices-virtual/models/light-group-draft.model.js +122 -0
- package/dist/plugins/devices-virtual/models/light-group-draft.model.js.map +1 -0
- package/dist/plugins/devices-virtual/models/measurement-authoring-response.model.d.ts +26 -0
- package/dist/plugins/devices-virtual/models/measurement-authoring-response.model.js +125 -0
- package/dist/plugins/devices-virtual/models/measurement-authoring-response.model.js.map +1 -0
- package/dist/plugins/devices-virtual/models/native-thermostat-response.model.d.ts +84 -0
- package/dist/plugins/devices-virtual/models/native-thermostat-response.model.js +406 -0
- package/dist/plugins/devices-virtual/models/native-thermostat-response.model.js.map +1 -0
- package/dist/plugins/devices-virtual/models/numeric-operator.model.d.ts +23 -0
- package/dist/plugins/devices-virtual/models/numeric-operator.model.js +120 -0
- package/dist/plugins/devices-virtual/models/numeric-operator.model.js.map +1 -0
- package/dist/plugins/devices-virtual/models/producer-response.model.d.ts +138 -0
- package/dist/plugins/devices-virtual/models/producer-response.model.js +764 -0
- package/dist/plugins/devices-virtual/models/producer-response.model.js.map +1 -0
- package/dist/plugins/devices-virtual/models/thermostat-authoring-context.model.d.ts +22 -0
- package/dist/plugins/devices-virtual/models/thermostat-authoring-context.model.js +134 -0
- package/dist/plugins/devices-virtual/models/thermostat-authoring-context.model.js.map +1 -0
- package/dist/plugins/devices-virtual/models/thermostat-authoring-response.model.d.ts +18 -0
- package/dist/plugins/devices-virtual/models/thermostat-authoring-response.model.js +87 -0
- package/dist/plugins/devices-virtual/models/thermostat-authoring-response.model.js.map +1 -0
- package/dist/plugins/devices-virtual/models/thermostat-comfort-response.model.d.ts +60 -0
- package/dist/plugins/devices-virtual/models/thermostat-comfort-response.model.js +341 -0
- package/dist/plugins/devices-virtual/models/thermostat-comfort-response.model.js.map +1 -0
- package/dist/plugins/devices-virtual/models/thermostat-installation-response.model.d.ts +84 -0
- package/dist/plugins/devices-virtual/models/thermostat-installation-response.model.js +440 -0
- package/dist/plugins/devices-virtual/models/thermostat-installation-response.model.js.map +1 -0
- package/dist/plugins/devices-virtual/models/thermostat-response.model.d.ts +218 -0
- package/dist/plugins/devices-virtual/models/thermostat-response.model.js +1157 -0
- package/dist/plugins/devices-virtual/models/thermostat-response.model.js.map +1 -0
- package/dist/plugins/devices-virtual/models/transform-response.model.d.ts +73 -0
- package/dist/plugins/devices-virtual/models/transform-response.model.js +386 -0
- package/dist/plugins/devices-virtual/models/transform-response.model.js.map +1 -0
- package/dist/plugins/devices-virtual/platforms/virtual-device.platform.d.ts +5 -1
- package/dist/plugins/devices-virtual/platforms/virtual-device.platform.js +22 -3
- package/dist/plugins/devices-virtual/platforms/virtual-device.platform.js.map +1 -1
- package/dist/plugins/devices-virtual/services/native-thermostat.service.d.ts +72 -0
- package/dist/plugins/devices-virtual/services/native-thermostat.service.js +932 -0
- package/dist/plugins/devices-virtual/services/native-thermostat.service.js.map +1 -0
- package/dist/plugins/devices-virtual/services/thermostat-authoring-context.service.d.ts +14 -0
- package/dist/plugins/devices-virtual/services/thermostat-authoring-context.service.js +147 -0
- package/dist/plugins/devices-virtual/services/thermostat-authoring-context.service.js.map +1 -0
- package/dist/plugins/devices-virtual/services/thermostat-comfort-selection.d.ts +199 -0
- package/dist/plugins/devices-virtual/services/thermostat-comfort-selection.js +1064 -0
- package/dist/plugins/devices-virtual/services/thermostat-comfort-selection.js.map +1 -0
- package/dist/plugins/devices-virtual/services/thermostat-controller-mutation.d.ts +75 -0
- package/dist/plugins/devices-virtual/services/thermostat-controller-mutation.js +445 -0
- package/dist/plugins/devices-virtual/services/thermostat-controller-mutation.js.map +1 -0
- package/dist/plugins/devices-virtual/services/thermostat-cooling-dependency.service.d.ts +53 -0
- package/dist/plugins/devices-virtual/services/thermostat-cooling-dependency.service.js +267 -0
- package/dist/plugins/devices-virtual/services/thermostat-cooling-dependency.service.js.map +1 -0
- package/dist/plugins/devices-virtual/services/thermostat-creation-catalog.d.ts +56 -0
- package/dist/plugins/devices-virtual/services/thermostat-creation-catalog.js +438 -0
- package/dist/plugins/devices-virtual/services/thermostat-creation-catalog.js.map +1 -0
- package/dist/plugins/devices-virtual/services/thermostat-creation-response.d.ts +37 -0
- package/dist/plugins/devices-virtual/services/thermostat-creation-response.js +430 -0
- package/dist/plugins/devices-virtual/services/thermostat-creation-response.js.map +1 -0
- package/dist/plugins/devices-virtual/services/thermostat-installation-artifact.d.ts +13 -0
- package/dist/plugins/devices-virtual/services/thermostat-installation-artifact.js +263 -0
- package/dist/plugins/devices-virtual/services/thermostat-installation-artifact.js.map +1 -0
- package/dist/plugins/devices-virtual/services/thermostat-installation-bindings.service.d.ts +10 -0
- package/dist/plugins/devices-virtual/services/thermostat-installation-bindings.service.js +238 -0
- package/dist/plugins/devices-virtual/services/thermostat-installation-bindings.service.js.map +1 -0
- package/dist/plugins/devices-virtual/services/thermostat-installation-loader.service.d.ts +41 -0
- package/dist/plugins/devices-virtual/services/thermostat-installation-loader.service.js +350 -0
- package/dist/plugins/devices-virtual/services/thermostat-installation-loader.service.js.map +1 -0
- package/dist/plugins/devices-virtual/services/thermostat-installation.service.d.ts +40 -0
- package/dist/plugins/devices-virtual/services/thermostat-installation.service.js +263 -0
- package/dist/plugins/devices-virtual/services/thermostat-installation.service.js.map +1 -0
- package/dist/plugins/devices-virtual/services/thermostat-installation.types.d.ts +72 -0
- package/dist/plugins/devices-virtual/services/thermostat-installation.types.js +13 -0
- package/dist/plugins/devices-virtual/services/thermostat-installation.types.js.map +1 -0
- package/dist/plugins/devices-virtual/services/thermostat-member-protection.service.d.ts +45 -0
- package/dist/plugins/devices-virtual/services/thermostat-member-protection.service.js +235 -0
- package/dist/plugins/devices-virtual/services/thermostat-member-protection.service.js.map +1 -0
- package/dist/plugins/devices-virtual/services/thermostat-override-clock.sql.d.ts +1 -0
- package/dist/plugins/devices-virtual/services/thermostat-override-clock.sql.js +16 -0
- package/dist/plugins/devices-virtual/services/thermostat-override-clock.sql.js.map +1 -0
- package/dist/plugins/devices-virtual/services/thermostat-protection-source.utils.d.ts +27 -0
- package/dist/plugins/devices-virtual/services/thermostat-protection-source.utils.js +132 -0
- package/dist/plugins/devices-virtual/services/thermostat-protection-source.utils.js.map +1 -0
- package/dist/plugins/devices-virtual/services/thermostat-remote-cooling-adapter.d.ts +88 -0
- package/dist/plugins/devices-virtual/services/thermostat-remote-cooling-adapter.js +200 -0
- package/dist/plugins/devices-virtual/services/thermostat-remote-cooling-adapter.js.map +1 -0
- package/dist/plugins/devices-virtual/services/virtual-aggregate-evaluator.d.ts +35 -0
- package/dist/plugins/devices-virtual/services/virtual-aggregate-evaluator.js +200 -0
- package/dist/plugins/devices-virtual/services/virtual-aggregate-evaluator.js.map +1 -0
- package/dist/plugins/devices-virtual/services/virtual-aggregate-policy.utils.d.ts +5 -0
- package/dist/plugins/devices-virtual/services/virtual-aggregate-policy.utils.js +18 -0
- package/dist/plugins/devices-virtual/services/virtual-aggregate-policy.utils.js.map +1 -0
- package/dist/plugins/devices-virtual/services/virtual-aggregate-runtime.service.d.ts +48 -0
- package/dist/plugins/devices-virtual/services/virtual-aggregate-runtime.service.js +425 -0
- package/dist/plugins/devices-virtual/services/virtual-aggregate-runtime.service.js.map +1 -0
- package/dist/plugins/devices-virtual/services/virtual-cooling-policy.utils.d.ts +13 -0
- package/dist/plugins/devices-virtual/services/virtual-cooling-policy.utils.js +38 -0
- package/dist/plugins/devices-virtual/services/virtual-cooling-policy.utils.js.map +1 -0
- package/dist/plugins/devices-virtual/services/virtual-cover-contract.utils.d.ts +7 -0
- package/dist/plugins/devices-virtual/services/virtual-cover-contract.utils.js +41 -0
- package/dist/plugins/devices-virtual/services/virtual-cover-contract.utils.js.map +1 -0
- package/dist/plugins/devices-virtual/services/virtual-cover-readiness.utils.d.ts +16 -0
- package/dist/plugins/devices-virtual/services/virtual-cover-readiness.utils.js +42 -0
- package/dist/plugins/devices-virtual/services/virtual-cover-readiness.utils.js.map +1 -0
- package/dist/plugins/devices-virtual/services/virtual-dependency-graph.service.d.ts +118 -0
- package/dist/plugins/devices-virtual/services/virtual-dependency-graph.service.js +667 -0
- package/dist/plugins/devices-virtual/services/virtual-dependency-graph.service.js.map +1 -0
- package/dist/plugins/devices-virtual/services/virtual-devices.service.d.ts +8 -4
- package/dist/plugins/devices-virtual/services/virtual-devices.service.js +105 -22
- package/dist/plugins/devices-virtual/services/virtual-devices.service.js.map +1 -1
- package/dist/plugins/devices-virtual/services/virtual-dew-point-config.service.d.ts +28 -0
- package/dist/plugins/devices-virtual/services/virtual-dew-point-config.service.js +193 -0
- package/dist/plugins/devices-virtual/services/virtual-dew-point-config.service.js.map +1 -0
- package/dist/plugins/devices-virtual/services/virtual-dew-point-contract.utils.d.ts +5 -0
- package/dist/plugins/devices-virtual/services/virtual-dew-point-contract.utils.js +69 -0
- package/dist/plugins/devices-virtual/services/virtual-dew-point-contract.utils.js.map +1 -0
- package/dist/plugins/devices-virtual/services/virtual-dew-point-runtime.service.d.ts +65 -0
- package/dist/plugins/devices-virtual/services/virtual-dew-point-runtime.service.js +524 -0
- package/dist/plugins/devices-virtual/services/virtual-dew-point-runtime.service.js.map +1 -0
- package/dist/plugins/devices-virtual/services/virtual-dew-point.utils.d.ts +9 -0
- package/dist/plugins/devices-virtual/services/virtual-dew-point.utils.js +25 -0
- package/dist/plugins/devices-virtual/services/virtual-dew-point.utils.js.map +1 -0
- package/dist/plugins/devices-virtual/services/virtual-group-catalog.service.d.ts +10 -0
- package/dist/plugins/devices-virtual/services/virtual-group-catalog.service.js +117 -0
- package/dist/plugins/devices-virtual/services/virtual-group-catalog.service.js.map +1 -0
- package/dist/plugins/devices-virtual/services/virtual-group-contract.utils.d.ts +4 -0
- package/dist/plugins/devices-virtual/services/virtual-group-contract.utils.js +35 -0
- package/dist/plugins/devices-virtual/services/virtual-group-contract.utils.js.map +1 -0
- package/dist/plugins/devices-virtual/services/virtual-group-field.utils.d.ts +10 -0
- package/dist/plugins/devices-virtual/services/virtual-group-field.utils.js +35 -0
- package/dist/plugins/devices-virtual/services/virtual-group-field.utils.js.map +1 -0
- package/dist/plugins/devices-virtual/services/virtual-group-profile.d.ts +19 -0
- package/dist/plugins/devices-virtual/services/virtual-group-profile.js +137 -0
- package/dist/plugins/devices-virtual/services/virtual-group-profile.js.map +1 -0
- package/dist/plugins/devices-virtual/services/virtual-light-group-authoring.service.d.ts +43 -0
- package/dist/plugins/devices-virtual/services/virtual-light-group-authoring.service.js +217 -0
- package/dist/plugins/devices-virtual/services/virtual-light-group-authoring.service.js.map +1 -0
- package/dist/plugins/devices-virtual/services/virtual-light-group-command.service.d.ts +28 -0
- package/dist/plugins/devices-virtual/services/virtual-light-group-command.service.js +262 -0
- package/dist/plugins/devices-virtual/services/virtual-light-group-command.service.js.map +1 -0
- package/dist/plugins/devices-virtual/services/virtual-light-group-contribution.service.d.ts +19 -0
- package/dist/plugins/devices-virtual/services/virtual-light-group-contribution.service.js +91 -0
- package/dist/plugins/devices-virtual/services/virtual-light-group-contribution.service.js.map +1 -0
- package/dist/plugins/devices-virtual/services/virtual-light-group-state.service.d.ts +37 -0
- package/dist/plugins/devices-virtual/services/virtual-light-group-state.service.js +346 -0
- package/dist/plugins/devices-virtual/services/virtual-light-group-state.service.js.map +1 -0
- package/dist/plugins/devices-virtual/services/virtual-light-group.utils.d.ts +46 -0
- package/dist/plugins/devices-virtual/services/virtual-light-group.utils.js +204 -0
- package/dist/plugins/devices-virtual/services/virtual-light-group.utils.js.map +1 -0
- package/dist/plugins/devices-virtual/services/virtual-measurement-authoring.service.d.ts +37 -0
- package/dist/plugins/devices-virtual/services/virtual-measurement-authoring.service.js +270 -0
- package/dist/plugins/devices-virtual/services/virtual-measurement-authoring.service.js.map +1 -0
- package/dist/plugins/devices-virtual/services/virtual-measurement-contribution.service.d.ts +21 -0
- package/dist/plugins/devices-virtual/services/virtual-measurement-contribution.service.js +166 -0
- package/dist/plugins/devices-virtual/services/virtual-measurement-contribution.service.js.map +1 -0
- package/dist/plugins/devices-virtual/services/virtual-measurement-metadata.utils.d.ts +3 -0
- package/dist/plugins/devices-virtual/services/virtual-measurement-metadata.utils.js +25 -0
- package/dist/plugins/devices-virtual/services/virtual-measurement-metadata.utils.js.map +1 -0
- package/dist/plugins/devices-virtual/services/virtual-numeric-operator-host.service.d.ts +24 -0
- package/dist/plugins/devices-virtual/services/virtual-numeric-operator-host.service.js +145 -0
- package/dist/plugins/devices-virtual/services/virtual-numeric-operator-host.service.js.map +1 -0
- package/dist/plugins/devices-virtual/services/virtual-numeric-operator.registry.d.ts +18 -0
- package/dist/plugins/devices-virtual/services/virtual-numeric-operator.registry.js +86 -0
- package/dist/plugins/devices-virtual/services/virtual-numeric-operator.registry.js.map +1 -0
- package/dist/plugins/devices-virtual/services/virtual-numeric-profile.utils.d.ts +29 -0
- package/dist/plugins/devices-virtual/services/virtual-numeric-profile.utils.js +136 -0
- package/dist/plugins/devices-virtual/services/virtual-numeric-profile.utils.js.map +1 -0
- package/dist/plugins/devices-virtual/services/virtual-numeric-transform.utils.d.ts +59 -0
- package/dist/plugins/devices-virtual/services/virtual-numeric-transform.utils.js +165 -0
- package/dist/plugins/devices-virtual/services/virtual-numeric-transform.utils.js.map +1 -0
- package/dist/plugins/devices-virtual/services/virtual-producer-config.service.d.ts +64 -0
- package/dist/plugins/devices-virtual/services/virtual-producer-config.service.js +694 -0
- package/dist/plugins/devices-virtual/services/virtual-producer-config.service.js.map +1 -0
- package/dist/plugins/devices-virtual/services/virtual-producer-state.service.d.ts +60 -0
- package/dist/plugins/devices-virtual/services/virtual-producer-state.service.js +484 -0
- package/dist/plugins/devices-virtual/services/virtual-producer-state.service.js.map +1 -0
- package/dist/plugins/devices-virtual/services/virtual-property-index.service.d.ts +11 -2
- package/dist/plugins/devices-virtual/services/virtual-property-index.service.js +166 -13
- package/dist/plugins/devices-virtual/services/virtual-property-index.service.js.map +1 -1
- package/dist/plugins/devices-virtual/services/virtual-source-eligibility.utils.d.ts +3 -0
- package/dist/plugins/devices-virtual/services/virtual-source-eligibility.utils.js +10 -0
- package/dist/plugins/devices-virtual/services/virtual-source-eligibility.utils.js.map +1 -0
- package/dist/plugins/devices-virtual/services/virtual-thermostat-authoring.service.d.ts +27 -0
- package/dist/plugins/devices-virtual/services/virtual-thermostat-authoring.service.js +385 -0
- package/dist/plugins/devices-virtual/services/virtual-thermostat-authoring.service.js.map +1 -0
- package/dist/plugins/devices-virtual/services/virtual-thermostat-automation.service.d.ts +90 -0
- package/dist/plugins/devices-virtual/services/virtual-thermostat-automation.service.js +1189 -0
- package/dist/plugins/devices-virtual/services/virtual-thermostat-automation.service.js.map +1 -0
- package/dist/plugins/devices-virtual/services/virtual-thermostat-branch.utils.d.ts +5 -0
- package/dist/plugins/devices-virtual/services/virtual-thermostat-branch.utils.js +29 -0
- package/dist/plugins/devices-virtual/services/virtual-thermostat-branch.utils.js.map +1 -0
- package/dist/plugins/devices-virtual/services/virtual-thermostat-claims.service.d.ts +80 -0
- package/dist/plugins/devices-virtual/services/virtual-thermostat-claims.service.js +489 -0
- package/dist/plugins/devices-virtual/services/virtual-thermostat-claims.service.js.map +1 -0
- package/dist/plugins/devices-virtual/services/virtual-thermostat-comfort.service.d.ts +80 -0
- package/dist/plugins/devices-virtual/services/virtual-thermostat-comfort.service.js +580 -0
- package/dist/plugins/devices-virtual/services/virtual-thermostat-comfort.service.js.map +1 -0
- package/dist/plugins/devices-virtual/services/virtual-thermostat-comfort.utils.d.ts +58 -0
- package/dist/plugins/devices-virtual/services/virtual-thermostat-comfort.utils.js +106 -0
- package/dist/plugins/devices-virtual/services/virtual-thermostat-comfort.utils.js.map +1 -0
- package/dist/plugins/devices-virtual/services/virtual-thermostat-config.service.d.ts +909 -0
- package/dist/plugins/devices-virtual/services/virtual-thermostat-config.service.js +1171 -0
- package/dist/plugins/devices-virtual/services/virtual-thermostat-config.service.js.map +1 -0
- package/dist/plugins/devices-virtual/services/virtual-thermostat-contract.utils.d.ts +5 -0
- package/dist/plugins/devices-virtual/services/virtual-thermostat-contract.utils.js +51 -0
- package/dist/plugins/devices-virtual/services/virtual-thermostat-contract.utils.js.map +1 -0
- package/dist/plugins/devices-virtual/services/virtual-thermostat-inputs.service.d.ts +46 -0
- package/dist/plugins/devices-virtual/services/virtual-thermostat-inputs.service.js +166 -0
- package/dist/plugins/devices-virtual/services/virtual-thermostat-inputs.service.js.map +1 -0
- package/dist/plugins/devices-virtual/services/virtual-thermostat-ownership.sql.d.ts +4 -0
- package/dist/plugins/devices-virtual/services/virtual-thermostat-ownership.sql.js +59 -0
- package/dist/plugins/devices-virtual/services/virtual-thermostat-ownership.sql.js.map +1 -0
- package/dist/plugins/devices-virtual/services/virtual-thermostat-policy.utils.d.ts +45 -0
- package/dist/plugins/devices-virtual/services/virtual-thermostat-policy.utils.js +149 -0
- package/dist/plugins/devices-virtual/services/virtual-thermostat-policy.utils.js.map +1 -0
- package/dist/plugins/devices-virtual/services/virtual-thermostat-runtime-ownership.d.ts +56 -0
- package/dist/plugins/devices-virtual/services/virtual-thermostat-runtime-ownership.js +680 -0
- package/dist/plugins/devices-virtual/services/virtual-thermostat-runtime-ownership.js.map +1 -0
- package/dist/plugins/devices-virtual/services/virtual-thermostat-runtime.service.d.ts +133 -0
- package/dist/plugins/devices-virtual/services/virtual-thermostat-runtime.service.js +1617 -0
- package/dist/plugins/devices-virtual/services/virtual-thermostat-runtime.service.js.map +1 -0
- package/dist/plugins/devices-virtual/services/virtual-thermostat-transport.service.d.ts +39 -0
- package/dist/plugins/devices-virtual/services/virtual-thermostat-transport.service.js +561 -0
- package/dist/plugins/devices-virtual/services/virtual-thermostat-transport.service.js.map +1 -0
- package/dist/plugins/devices-virtual/services/virtual-transform-config.service.d.ts +41 -0
- package/dist/plugins/devices-virtual/services/virtual-transform-config.service.js +209 -0
- package/dist/plugins/devices-virtual/services/virtual-transform-config.service.js.map +1 -0
- package/dist/plugins/devices-virtual/services/virtual-transform-contract.utils.d.ts +8 -0
- package/dist/plugins/devices-virtual/services/virtual-transform-contract.utils.js +103 -0
- package/dist/plugins/devices-virtual/services/virtual-transform-contract.utils.js.map +1 -0
- package/dist/plugins/devices-virtual/services/virtual-transform-preview.utils.d.ts +3 -0
- package/dist/plugins/devices-virtual/services/virtual-transform-preview.utils.js +18 -0
- package/dist/plugins/devices-virtual/services/virtual-transform-preview.utils.js.map +1 -0
- package/dist/plugins/devices-virtual/services/virtual-transform-resolver.d.ts +15 -0
- package/dist/plugins/devices-virtual/services/virtual-transform-resolver.js +102 -0
- package/dist/plugins/devices-virtual/services/virtual-transform-resolver.js.map +1 -0
- package/dist/plugins/devices-virtual/services/virtual-transform-runtime.service.d.ts +54 -0
- package/dist/plugins/devices-virtual/services/virtual-transform-runtime.service.js +470 -0
- package/dist/plugins/devices-virtual/services/virtual-transform-runtime.service.js.map +1 -0
- package/dist/plugins/devices-virtual/services/virtual-typed-group.utils.d.ts +6 -0
- package/dist/plugins/devices-virtual/services/virtual-typed-group.utils.js +100 -0
- package/dist/plugins/devices-virtual/services/virtual-typed-group.utils.js.map +1 -0
- package/dist/plugins/devices-virtual/services/virtual-value-source.service.d.ts +7 -0
- package/dist/plugins/devices-virtual/services/virtual-value-source.service.js +36 -2
- package/dist/plugins/devices-virtual/services/virtual-value-source.service.js.map +1 -1
- package/dist/plugins/devices-virtual/services/virtual-window-contact.utils.d.ts +17 -0
- package/dist/plugins/devices-virtual/services/virtual-window-contact.utils.js +52 -0
- package/dist/plugins/devices-virtual/services/virtual-window-contact.utils.js.map +1 -0
- package/dist/plugins/devices-virtual/services/virtual-window-trend.utils.d.ts +44 -0
- package/dist/plugins/devices-virtual/services/virtual-window-trend.utils.js +171 -0
- package/dist/plugins/devices-virtual/services/virtual-window-trend.utils.js.map +1 -0
- package/dist/plugins/devices-virtual/subscribers/virtual-thermostat-ownership.subscriber.d.ts +30 -0
- package/dist/plugins/devices-virtual/subscribers/virtual-thermostat-ownership.subscriber.js +195 -0
- package/dist/plugins/devices-virtual/subscribers/virtual-thermostat-ownership.subscriber.js.map +1 -0
- package/dist/plugins/devices-virtual/subscribers/virtual-transform-metadata.subscriber.d.ts +9 -0
- package/dist/plugins/devices-virtual/subscribers/virtual-transform-metadata.subscriber.js +58 -0
- package/dist/plugins/devices-virtual/subscribers/virtual-transform-metadata.subscriber.js.map +1 -0
- package/dist/plugins/devices-virtual/validators/category-allowed-constraint.validator.d.ts +1 -1
- package/dist/plugins/devices-virtual/validators/category-allowed-constraint.validator.js +6 -1
- package/dist/plugins/devices-virtual/validators/category-allowed-constraint.validator.js.map +1 -1
- package/dist/plugins/devices-wled/interfaces/wled.interface.d.ts +7 -0
- package/dist/plugins/devices-wled/interfaces/wled.interface.js.map +1 -1
- package/dist/plugins/devices-wled/platforms/wled.device.platform.d.ts +4 -2
- package/dist/plugins/devices-wled/platforms/wled.device.platform.js +56 -9
- package/dist/plugins/devices-wled/platforms/wled.device.platform.js.map +1 -1
- package/dist/plugins/devices-wled/services/device-mapper.service.d.ts +3 -2
- package/dist/plugins/devices-wled/services/device-mapper.service.js +48 -1
- package/dist/plugins/devices-wled/services/device-mapper.service.js.map +1 -1
- package/dist/plugins/devices-wled/services/wled-client-adapter.service.d.ts +6 -1
- package/dist/plugins/devices-wled/services/wled-client-adapter.service.js +101 -13
- package/dist/plugins/devices-wled/services/wled-client-adapter.service.js.map +1 -1
- package/dist/plugins/devices-wled/services/wled.service.js +5 -2
- package/dist/plugins/devices-wled/services/wled.service.js.map +1 -1
- package/dist/plugins/devices-zigbee2mqtt/contracts/sample-source.contract.d.ts +38 -0
- package/dist/plugins/devices-zigbee2mqtt/contracts/sample-source.contract.js +95 -0
- package/dist/plugins/devices-zigbee2mqtt/contracts/sample-source.contract.js.map +1 -0
- package/dist/plugins/devices-zigbee2mqtt/devices-zigbee2mqtt.plugin.js +11 -1
- package/dist/plugins/devices-zigbee2mqtt/devices-zigbee2mqtt.plugin.js.map +1 -1
- package/dist/plugins/devices-zigbee2mqtt/entities/zigbee-sample-source.entity.d.ts +18 -0
- package/dist/plugins/devices-zigbee2mqtt/entities/zigbee-sample-source.entity.js +79 -0
- package/dist/plugins/devices-zigbee2mqtt/entities/zigbee-sample-source.entity.js.map +1 -0
- package/dist/plugins/devices-zigbee2mqtt/interfaces/zigbee2mqtt.interface.d.ts +11 -0
- package/dist/plugins/devices-zigbee2mqtt/platforms/zigbee2mqtt.device.platform.d.ts +11 -2
- package/dist/plugins/devices-zigbee2mqtt/platforms/zigbee2mqtt.device.platform.js +100 -11
- package/dist/plugins/devices-zigbee2mqtt/platforms/zigbee2mqtt.device.platform.js.map +1 -1
- package/dist/plugins/devices-zigbee2mqtt/services/base-client-adapter.d.ts +31 -13
- package/dist/plugins/devices-zigbee2mqtt/services/base-client-adapter.js +166 -5
- package/dist/plugins/devices-zigbee2mqtt/services/base-client-adapter.js.map +1 -1
- package/dist/plugins/devices-zigbee2mqtt/services/device-adoption.service.d.ts +1 -0
- package/dist/plugins/devices-zigbee2mqtt/services/device-adoption.service.js +44 -3
- package/dist/plugins/devices-zigbee2mqtt/services/device-adoption.service.js.map +1 -1
- package/dist/plugins/devices-zigbee2mqtt/services/device-mapper.service.d.ts +20 -3
- package/dist/plugins/devices-zigbee2mqtt/services/device-mapper.service.js +156 -34
- package/dist/plugins/devices-zigbee2mqtt/services/device-mapper.service.js.map +1 -1
- package/dist/plugins/devices-zigbee2mqtt/services/mqtt-client-adapter.service.d.ts +1 -1
- package/dist/plugins/devices-zigbee2mqtt/services/mqtt-client-adapter.service.js +14 -1
- package/dist/plugins/devices-zigbee2mqtt/services/mqtt-client-adapter.service.js.map +1 -1
- package/dist/plugins/devices-zigbee2mqtt/services/native-climate-adapter.service.d.ts +15 -0
- package/dist/plugins/devices-zigbee2mqtt/services/native-climate-adapter.service.js +249 -0
- package/dist/plugins/devices-zigbee2mqtt/services/native-climate-adapter.service.js.map +1 -0
- package/dist/plugins/devices-zigbee2mqtt/services/websocket-sample-evidence.d.ts +2 -0
- package/dist/plugins/devices-zigbee2mqtt/services/websocket-sample-evidence.js +15 -0
- package/dist/plugins/devices-zigbee2mqtt/services/websocket-sample-evidence.js.map +1 -0
- package/dist/plugins/devices-zigbee2mqtt/services/ws-client-adapter.service.d.ts +7 -1
- package/dist/plugins/devices-zigbee2mqtt/services/ws-client-adapter.service.js +45 -2
- package/dist/plugins/devices-zigbee2mqtt/services/ws-client-adapter.service.js.map +1 -1
- package/dist/plugins/devices-zigbee2mqtt/services/zigbee-sample-sources.service.d.ts +49 -0
- package/dist/plugins/devices-zigbee2mqtt/services/zigbee-sample-sources.service.js +264 -0
- package/dist/plugins/devices-zigbee2mqtt/services/zigbee-sample-sources.service.js.map +1 -0
- package/dist/plugins/devices-zigbee2mqtt/services/zigbee2mqtt.service.js +2 -0
- package/dist/plugins/devices-zigbee2mqtt/services/zigbee2mqtt.service.js.map +1 -1
- package/dist/plugins/scenes-local/platforms/local-scene.platform.d.ts +6 -3
- package/dist/plugins/scenes-local/platforms/local-scene.platform.js +101 -15
- package/dist/plugins/scenes-local/platforms/local-scene.platform.js.map +1 -1
- package/dist/plugins/spaces-home-control/activity/activity-actor.d.ts +2 -0
- package/dist/plugins/spaces-home-control/activity/activity-actor.js +14 -0
- package/dist/plugins/spaces-home-control/activity/activity-actor.js.map +1 -0
- package/dist/plugins/spaces-home-control/activity/activity-result.utils.d.ts +6 -0
- package/dist/plugins/spaces-home-control/activity/activity-result.utils.js +26 -0
- package/dist/plugins/spaces-home-control/activity/activity-result.utils.js.map +1 -0
- package/dist/plugins/spaces-home-control/activity/space-activity.constants.d.ts +32 -0
- package/dist/plugins/spaces-home-control/activity/space-activity.constants.js +40 -0
- package/dist/plugins/spaces-home-control/activity/space-activity.constants.js.map +1 -0
- package/dist/plugins/spaces-home-control/activity/space-activity.defaults.d.ts +3 -0
- package/dist/plugins/spaces-home-control/activity/space-activity.defaults.js +25 -0
- package/dist/plugins/spaces-home-control/activity/space-activity.defaults.js.map +1 -0
- package/dist/plugins/spaces-home-control/activity/validate-activity-configuration.d.ts +2 -0
- package/dist/plugins/spaces-home-control/activity/validate-activity-configuration.js +37 -0
- package/dist/plugins/spaces-home-control/activity/validate-activity-configuration.js.map +1 -0
- package/dist/plugins/spaces-home-control/controllers/space-mode-schedules.controller.d.ts +12 -0
- package/dist/plugins/spaces-home-control/controllers/space-mode-schedules.controller.js +97 -0
- package/dist/plugins/spaces-home-control/controllers/space-mode-schedules.controller.js.map +1 -0
- package/dist/plugins/spaces-home-control/controllers/space-modes.controller.d.ts +19 -0
- package/dist/plugins/spaces-home-control/controllers/space-modes.controller.js +220 -0
- package/dist/plugins/spaces-home-control/controllers/space-modes.controller.js.map +1 -0
- package/dist/plugins/spaces-home-control/controllers/space-occupancy.controller.d.ts +18 -0
- package/dist/plugins/spaces-home-control/controllers/space-occupancy.controller.js +147 -0
- package/dist/plugins/spaces-home-control/controllers/space-occupancy.controller.js.map +1 -0
- package/dist/plugins/spaces-home-control/controllers/spaces-domain.controller.js +4 -0
- package/dist/plugins/spaces-home-control/controllers/spaces-domain.controller.js.map +1 -1
- package/dist/plugins/spaces-home-control/dto/activity-mode.dto.d.ts +22 -0
- package/dist/plugins/spaces-home-control/dto/activity-mode.dto.js +119 -0
- package/dist/plugins/spaces-home-control/dto/activity-mode.dto.js.map +1 -0
- package/dist/plugins/spaces-home-control/dto/space-mode-schedule.dto.d.ts +18 -0
- package/dist/plugins/spaces-home-control/dto/space-mode-schedule.dto.js +127 -0
- package/dist/plugins/spaces-home-control/dto/space-mode-schedule.dto.js.map +1 -0
- package/dist/plugins/spaces-home-control/dto/space-occupancy.dto.d.ts +13 -0
- package/dist/plugins/spaces-home-control/dto/space-occupancy.dto.js +99 -0
- package/dist/plugins/spaces-home-control/dto/space-occupancy.dto.js.map +1 -0
- package/dist/plugins/spaces-home-control/entities/space-activity-config.entity.d.ts +12 -0
- package/dist/plugins/spaces-home-control/entities/space-activity-config.entity.js +72 -0
- package/dist/plugins/spaces-home-control/entities/space-activity-config.entity.js.map +1 -0
- package/dist/plugins/spaces-home-control/entities/space-activity-state.entity.d.ts +14 -0
- package/dist/plugins/spaces-home-control/entities/space-activity-state.entity.js +105 -0
- package/dist/plugins/spaces-home-control/entities/space-activity-state.entity.js.map +1 -0
- package/dist/plugins/spaces-home-control/entities/space-mode-schedule.entity.d.ts +19 -0
- package/dist/plugins/spaces-home-control/entities/space-mode-schedule.entity.js +110 -0
- package/dist/plugins/spaces-home-control/entities/space-mode-schedule.entity.js.map +1 -0
- package/dist/plugins/spaces-home-control/entities/space-occupancy.entity.d.ts +23 -0
- package/dist/plugins/spaces-home-control/entities/space-occupancy.entity.js +135 -0
- package/dist/plugins/spaces-home-control/entities/space-occupancy.entity.js.map +1 -0
- package/dist/plugins/spaces-home-control/listeners/space-climate-state.listener.d.ts +2 -0
- package/dist/plugins/spaces-home-control/listeners/space-climate-state.listener.js +23 -0
- package/dist/plugins/spaces-home-control/listeners/space-climate-state.listener.js.map +1 -1
- package/dist/plugins/spaces-home-control/listeners/websocket-exchange.listener.js +3 -0
- package/dist/plugins/spaces-home-control/listeners/websocket-exchange.listener.js.map +1 -1
- package/dist/plugins/spaces-home-control/models/activity-configuration.model.d.ts +27 -0
- package/dist/plugins/spaces-home-control/models/activity-configuration.model.js +182 -0
- package/dist/plugins/spaces-home-control/models/activity-configuration.model.js.map +1 -0
- package/dist/plugins/spaces-home-control/models/activity-response.model.d.ts +16 -0
- package/dist/plugins/spaces-home-control/models/activity-response.model.js +79 -0
- package/dist/plugins/spaces-home-control/models/activity-response.model.js.map +1 -0
- package/dist/plugins/spaces-home-control/models/activity-result.model.d.ts +6 -0
- package/dist/plugins/spaces-home-control/models/activity-result.model.js +37 -0
- package/dist/plugins/spaces-home-control/models/activity-result.model.js.map +1 -0
- package/dist/plugins/spaces-home-control/models/climate-contribution.model.d.ts +11 -0
- package/dist/plugins/spaces-home-control/models/climate-contribution.model.js +66 -0
- package/dist/plugins/spaces-home-control/models/climate-contribution.model.js.map +1 -0
- package/dist/plugins/spaces-home-control/models/space-mode-schedule-response.model.d.ts +9 -0
- package/dist/plugins/spaces-home-control/models/space-mode-schedule-response.model.js +45 -0
- package/dist/plugins/spaces-home-control/models/space-mode-schedule-response.model.js.map +1 -0
- package/dist/plugins/spaces-home-control/models/space-mode-schedule.model.d.ts +34 -0
- package/dist/plugins/spaces-home-control/models/space-mode-schedule.model.js +170 -0
- package/dist/plugins/spaces-home-control/models/space-mode-schedule.model.js.map +1 -0
- package/dist/plugins/spaces-home-control/models/space-occupancy.model.d.ts +26 -0
- package/dist/plugins/spaces-home-control/models/space-occupancy.model.js +121 -0
- package/dist/plugins/spaces-home-control/models/space-occupancy.model.js.map +1 -0
- package/dist/plugins/spaces-home-control/models/spaces-response.model.d.ts +13 -0
- package/dist/plugins/spaces-home-control/models/spaces-response.model.js +81 -2
- package/dist/plugins/spaces-home-control/models/spaces-response.model.js.map +1 -1
- package/dist/plugins/spaces-home-control/occupancy/occupancy-admission.d.ts +7 -0
- package/dist/plugins/spaces-home-control/occupancy/occupancy-admission.js +57 -0
- package/dist/plugins/spaces-home-control/occupancy/occupancy-admission.js.map +1 -0
- package/dist/plugins/spaces-home-control/occupancy/space-occupancy.types.d.ts +31 -0
- package/dist/plugins/spaces-home-control/occupancy/space-occupancy.types.js +30 -0
- package/dist/plugins/spaces-home-control/occupancy/space-occupancy.types.js.map +1 -0
- package/dist/plugins/spaces-home-control/schedule/schedule-time.d.ts +9 -0
- package/dist/plugins/spaces-home-control/schedule/schedule-time.js +79 -0
- package/dist/plugins/spaces-home-control/schedule/schedule-time.js.map +1 -0
- package/dist/plugins/spaces-home-control/schedule/space-mode-schedule.types.d.ts +28 -0
- package/dist/plugins/spaces-home-control/schedule/space-mode-schedule.types.js +7 -0
- package/dist/plugins/spaces-home-control/schedule/space-mode-schedule.types.js.map +1 -0
- package/dist/plugins/spaces-home-control/services/activity-test-support.d.ts +16 -0
- package/dist/plugins/spaces-home-control/services/activity-test-support.js +34 -0
- package/dist/plugins/spaces-home-control/services/activity-test-support.js.map +1 -0
- package/dist/plugins/spaces-home-control/services/climate-contribution-planner.service.d.ts +15 -0
- package/dist/plugins/spaces-home-control/services/climate-contribution-planner.service.js +97 -0
- package/dist/plugins/spaces-home-control/services/climate-contribution-planner.service.js.map +1 -0
- package/dist/plugins/spaces-home-control/services/climate-intent.service.d.ts +15 -2
- package/dist/plugins/spaces-home-control/services/climate-intent.service.js +155 -15
- package/dist/plugins/spaces-home-control/services/climate-intent.service.js.map +1 -1
- package/dist/plugins/spaces-home-control/services/cover-group-intent.port.d.ts +31 -0
- package/dist/plugins/spaces-home-control/services/cover-group-intent.port.js +189 -0
- package/dist/plugins/spaces-home-control/services/cover-group-intent.port.js.map +1 -0
- package/dist/plugins/spaces-home-control/services/covers-intent.service.d.ts +8 -3
- package/dist/plugins/spaces-home-control/services/covers-intent.service.js +139 -65
- package/dist/plugins/spaces-home-control/services/covers-intent.service.js.map +1 -1
- package/dist/plugins/spaces-home-control/services/lighting-contribution-planner.service.d.ts +16 -0
- package/dist/plugins/spaces-home-control/services/lighting-contribution-planner.service.js +66 -0
- package/dist/plugins/spaces-home-control/services/lighting-contribution-planner.service.js.map +1 -0
- package/dist/plugins/spaces-home-control/services/lighting-intent.service.d.ts +13 -3
- package/dist/plugins/spaces-home-control/services/lighting-intent.service.js +93 -13
- package/dist/plugins/spaces-home-control/services/lighting-intent.service.js.map +1 -1
- package/dist/plugins/spaces-home-control/services/space-activity-config.service.d.ts +25 -0
- package/dist/plugins/spaces-home-control/services/space-activity-config.service.js +144 -0
- package/dist/plugins/spaces-home-control/services/space-activity-config.service.js.map +1 -0
- package/dist/plugins/spaces-home-control/services/space-activity-domains.service.d.ts +21 -0
- package/dist/plugins/spaces-home-control/services/space-activity-domains.service.js +139 -0
- package/dist/plugins/spaces-home-control/services/space-activity-domains.service.js.map +1 -0
- package/dist/plugins/spaces-home-control/services/space-climate-automation.port.d.ts +17 -0
- package/dist/plugins/spaces-home-control/services/space-climate-automation.port.js +5 -0
- package/dist/plugins/spaces-home-control/services/space-climate-automation.port.js.map +1 -0
- package/dist/plugins/spaces-home-control/services/space-climate-automation.service.d.ts +63 -0
- package/dist/plugins/spaces-home-control/services/space-climate-automation.service.js +722 -0
- package/dist/plugins/spaces-home-control/services/space-climate-automation.service.js.map +1 -0
- package/dist/plugins/spaces-home-control/services/space-climate-state.service.d.ts +8 -3
- package/dist/plugins/spaces-home-control/services/space-climate-state.service.js +25 -19
- package/dist/plugins/spaces-home-control/services/space-climate-state.service.js.map +1 -1
- package/dist/plugins/spaces-home-control/services/space-covers-state.service.d.ts +16 -2
- package/dist/plugins/spaces-home-control/services/space-covers-state.service.js +102 -18
- package/dist/plugins/spaces-home-control/services/space-covers-state.service.js.map +1 -1
- package/dist/plugins/spaces-home-control/services/space-intent-base.service.d.ts +2 -0
- package/dist/plugins/spaces-home-control/services/space-intent-base.service.js.map +1 -1
- package/dist/plugins/spaces-home-control/services/space-lighting-state.service.d.ts +4 -1
- package/dist/plugins/spaces-home-control/services/space-lighting-state.service.js +94 -24
- package/dist/plugins/spaces-home-control/services/space-lighting-state.service.js.map +1 -1
- package/dist/plugins/spaces-home-control/services/space-media-activity.service.d.ts +8 -2
- package/dist/plugins/spaces-home-control/services/space-media-activity.service.js +79 -13
- package/dist/plugins/spaces-home-control/services/space-media-activity.service.js.map +1 -1
- package/dist/plugins/spaces-home-control/services/space-mode-schedule-config.service.d.ts +24 -0
- package/dist/plugins/spaces-home-control/services/space-mode-schedule-config.service.js +132 -0
- package/dist/plugins/spaces-home-control/services/space-mode-schedule-config.service.js.map +1 -0
- package/dist/plugins/spaces-home-control/services/space-mode-scheduler.service.d.ts +39 -0
- package/dist/plugins/spaces-home-control/services/space-mode-scheduler.service.js +289 -0
- package/dist/plugins/spaces-home-control/services/space-mode-scheduler.service.js.map +1 -0
- package/dist/plugins/spaces-home-control/services/space-mode.service.d.ts +34 -0
- package/dist/plugins/spaces-home-control/services/space-mode.service.js +296 -0
- package/dist/plugins/spaces-home-control/services/space-mode.service.js.map +1 -0
- package/dist/plugins/spaces-home-control/services/space-occupancy-config.service.d.ts +26 -0
- package/dist/plugins/spaces-home-control/services/space-occupancy-config.service.js +134 -0
- package/dist/plugins/spaces-home-control/services/space-occupancy-config.service.js.map +1 -0
- package/dist/plugins/spaces-home-control/services/space-occupancy-inputs.service.d.ts +21 -0
- package/dist/plugins/spaces-home-control/services/space-occupancy-inputs.service.js +84 -0
- package/dist/plugins/spaces-home-control/services/space-occupancy-inputs.service.js.map +1 -0
- package/dist/plugins/spaces-home-control/services/space-occupancy.service.d.ts +48 -0
- package/dist/plugins/spaces-home-control/services/space-occupancy.service.js +285 -0
- package/dist/plugins/spaces-home-control/services/space-occupancy.service.js.map +1 -0
- package/dist/plugins/spaces-home-control/services/space-state-read.service.d.ts +5 -1
- package/dist/plugins/spaces-home-control/services/space-state-read.service.js +33 -7
- package/dist/plugins/spaces-home-control/services/space-state-read.service.js.map +1 -1
- package/dist/plugins/spaces-home-control/spaces-home-control.openapi.js +52 -0
- package/dist/plugins/spaces-home-control/spaces-home-control.openapi.js.map +1 -1
- package/dist/plugins/spaces-home-control/spaces-home-control.plugin.d.ts +5 -1
- package/dist/plugins/spaces-home-control/spaces-home-control.plugin.js +57 -2
- package/dist/plugins/spaces-home-control/spaces-home-control.plugin.js.map +1 -1
- package/dist/spec/channels.d.ts +27 -4
- package/dist/spec/channels.js +37 -6
- package/dist/spec/channels.js.map +1 -1
- package/dist/spec/devices.d.ts +20 -0
- package/dist/spec/devices.js +20 -0
- package/dist/spec/devices.js.map +1 -1
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/package.json +4 -3
|
@@ -0,0 +1,1064 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.thermostatComfortSelection = exports.ThermostatSelectionSettlement = void 0;
|
|
7
|
+
const node_crypto_1 = __importDefault(require("node:crypto"));
|
|
8
|
+
const node_perf_hooks_1 = require("node:perf_hooks");
|
|
9
|
+
const typeorm_1 = require("typeorm");
|
|
10
|
+
const common_1 = require("@nestjs/common");
|
|
11
|
+
const sqlite_data_source_1 = require("../../../common/database/sqlite-data-source");
|
|
12
|
+
const devices_exceptions_1 = require("../../../modules/devices/devices.exceptions");
|
|
13
|
+
const devices_entity_1 = require("../../../modules/devices/entities/devices.entity");
|
|
14
|
+
const climate_automation_ledger_utils_1 = require("../../../modules/devices/services/climate-automation-ledger.utils");
|
|
15
|
+
const creation_capture_1 = require("../../../modules/devices/services/creation-capture");
|
|
16
|
+
const devices_virtual_entity_1 = require("../entities/devices-virtual.entity");
|
|
17
|
+
const virtual_producer_entity_1 = require("../entities/virtual-producer.entity");
|
|
18
|
+
const virtual_thermostat_entity_1 = require("../entities/virtual-thermostat.entity");
|
|
19
|
+
const virtual_thermostat_comfort_utils_1 = require("./virtual-thermostat-comfort.utils");
|
|
20
|
+
const virtual_thermostat_contract_utils_1 = require("./virtual-thermostat-contract.utils");
|
|
21
|
+
const virtual_thermostat_policy_utils_1 = require("./virtual-thermostat-policy.utils");
|
|
22
|
+
function claimImage(row, milliseconds) {
|
|
23
|
+
return {
|
|
24
|
+
id: row.id,
|
|
25
|
+
controllerId: row.controllerId,
|
|
26
|
+
role: row.role,
|
|
27
|
+
physicalIdentity: row.physicalIdentity,
|
|
28
|
+
providerProfile: row.providerProfile,
|
|
29
|
+
providerProfileVersion: row.providerProfileVersion,
|
|
30
|
+
sourcePropertyId: row.sourcePropertyId,
|
|
31
|
+
sourcePropertyIdentity: row.sourcePropertyIdentity,
|
|
32
|
+
sourceDeviceId: row.sourceDeviceId,
|
|
33
|
+
sourceDeviceIdentity: row.sourceDeviceIdentity,
|
|
34
|
+
contractFingerprint: row.contractFingerprint,
|
|
35
|
+
revision: row.revision,
|
|
36
|
+
qualificationGeneration: row.qualificationGeneration,
|
|
37
|
+
state: row.state,
|
|
38
|
+
leaseSeconds: row.leaseSeconds,
|
|
39
|
+
reason: row.reason,
|
|
40
|
+
releaseRequestedAt: milliseconds(row.releaseRequestedAt),
|
|
41
|
+
releasedAt: milliseconds(row.releasedAt),
|
|
42
|
+
releaseEvidence: row.releaseEvidence,
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
function configImage(row, milliseconds = (date) => (date === null ? null : date.getTime())) {
|
|
46
|
+
return {
|
|
47
|
+
controllerId: row.controllerId,
|
|
48
|
+
displayFloorClaimId: row.displayFloorClaimId,
|
|
49
|
+
ownerDeviceId: row.ownerDeviceId,
|
|
50
|
+
schemaVersion: row.schemaVersion,
|
|
51
|
+
revision: row.revision,
|
|
52
|
+
requestedMode: row.requestedMode,
|
|
53
|
+
controlStrategy: row.controlStrategy,
|
|
54
|
+
locked: row.locked,
|
|
55
|
+
comfort: row.comfort,
|
|
56
|
+
policy: row.policy,
|
|
57
|
+
heuristic: row.heuristic,
|
|
58
|
+
contactOpeningMs: row.contactOpeningMs,
|
|
59
|
+
contactClosingMs: row.contactClosingMs,
|
|
60
|
+
configuredAt: milliseconds(row.configuredAt),
|
|
61
|
+
releaseRequestedAt: milliseconds(row.releaseRequestedAt),
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
function refuse(message = 'Original thermostat selection admission expired') {
|
|
65
|
+
throw new devices_exceptions_1.DevicesValidationException(message);
|
|
66
|
+
}
|
|
67
|
+
function revision(value, minimum, capacity = false) {
|
|
68
|
+
return Number.isSafeInteger(value) && value >= minimum && (!capacity || value < Number.MAX_SAFE_INTEGER);
|
|
69
|
+
}
|
|
70
|
+
class ThermostatSelectionSettlement {
|
|
71
|
+
get outcome() {
|
|
72
|
+
return this.receipt?.outcome ?? 'not_started';
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
exports.ThermostatSelectionSettlement = ThermostatSelectionSettlement;
|
|
76
|
+
function pin(database, kind = 'selection', leases) {
|
|
77
|
+
const serialize = climate_automation_ledger_utils_1.canonical;
|
|
78
|
+
const detach = climate_automation_ledger_utils_1.ownedJson;
|
|
79
|
+
const validate = virtual_thermostat_comfort_utils_1.validateThermostatComfort;
|
|
80
|
+
const validateSetpoints = virtual_thermostat_comfort_utils_1.validateThermostatSetpoints;
|
|
81
|
+
const effective = virtual_thermostat_comfort_utils_1.effectiveThermostatComfort;
|
|
82
|
+
const contract = virtual_thermostat_contract_utils_1.thermostatPropertyContract;
|
|
83
|
+
const validatePolicy = virtual_thermostat_policy_utils_1.validateVirtualThermostatPolicy;
|
|
84
|
+
const observe = sqlite_data_source_1.observeSqliteOuterOutcome;
|
|
85
|
+
const guard = sqlite_data_source_1.registerSqliteCommitGuard;
|
|
86
|
+
const manual = kind === 'registered-settings';
|
|
87
|
+
if (!manual && (!(database instanceof sqlite_data_source_1.SqliteDataSource) || !database.isInitialized))
|
|
88
|
+
refuse();
|
|
89
|
+
const source = (0, creation_capture_1.captureCreation)(database, ['manager', 'driver', 'transaction', 'isInitialized', 'createQueryRunner']);
|
|
90
|
+
const root = (0, creation_capture_1.captureCreation)(source.values.manager, ['connection', 'queryRunner', 'query', 'createQueryBuilder']);
|
|
91
|
+
const driver = (0, creation_capture_1.captureCreation)(source.values.driver, [
|
|
92
|
+
'connection',
|
|
93
|
+
'databaseConnection',
|
|
94
|
+
'createQueryRunner',
|
|
95
|
+
]);
|
|
96
|
+
const physical = driver.values.databaseConnection;
|
|
97
|
+
if (!manual &&
|
|
98
|
+
(!physical ||
|
|
99
|
+
typeof physical !== 'object' ||
|
|
100
|
+
root.values.connection !== database ||
|
|
101
|
+
root.values.queryRunner !== undefined ||
|
|
102
|
+
driver.values.connection !== database))
|
|
103
|
+
refuse();
|
|
104
|
+
const native = physical ? (0, creation_capture_1.captureCreation)(physical, ['all']) : undefined;
|
|
105
|
+
const releaseDateGlobal = kind === 'release-request' ? (0, creation_capture_1.captureCreation)(globalThis, ['Date']) : undefined;
|
|
106
|
+
const releaseDate = releaseDateGlobal
|
|
107
|
+
? (0, creation_capture_1.captureCreation)(releaseDateGlobal.values.Date, ['prototype'])
|
|
108
|
+
: undefined;
|
|
109
|
+
const releaseScalar = releaseDate ? (0, creation_capture_1.captureCreation)(releaseDate.values.prototype, ['getTime']) : undefined;
|
|
110
|
+
if (releaseDateGlobal &&
|
|
111
|
+
(typeof releaseDateGlobal.values.Date !== 'function' || typeof releaseScalar.values.getTime !== 'function'))
|
|
112
|
+
refuse();
|
|
113
|
+
const dated = kind === 'override' || kind === 'cancel';
|
|
114
|
+
const dateGlobal = dated ? (0, creation_capture_1.captureCreation)(globalThis, ['Date']) : undefined;
|
|
115
|
+
const date = dated
|
|
116
|
+
? (0, creation_capture_1.captureCreation)(dateGlobal.values.Date, kind === 'override' ? ['now', 'parse', 'prototype'] : ['prototype'])
|
|
117
|
+
: undefined;
|
|
118
|
+
const iso = dated ? (0, creation_capture_1.captureCreation)(date.values.prototype, ['toISOString']) : undefined;
|
|
119
|
+
const monotonic = kind === 'override' ? (0, creation_capture_1.captureCreation)(node_perf_hooks_1.performance, ['now']) : undefined;
|
|
120
|
+
const uuid = kind === 'override' ? (0, creation_capture_1.captureCreation)(node_crypto_1.default, ['randomUUID']) : undefined;
|
|
121
|
+
const local = dated && leases instanceof Map
|
|
122
|
+
? (0, creation_capture_1.captureCreation)(leases, kind === 'override' ? ['get', 'set'] : ['get', 'delete'])
|
|
123
|
+
: undefined;
|
|
124
|
+
if (dated &&
|
|
125
|
+
(!local ||
|
|
126
|
+
typeof local.values.get !== 'function' ||
|
|
127
|
+
(kind === 'override' ? typeof local.values.set !== 'function' : typeof local.values.delete !== 'function') ||
|
|
128
|
+
typeof dateGlobal.values.Date !== 'function' ||
|
|
129
|
+
typeof iso.values.toISOString !== 'function' ||
|
|
130
|
+
(kind === 'override' &&
|
|
131
|
+
(typeof date.values.now !== 'function' ||
|
|
132
|
+
typeof date.values.parse !== 'function' ||
|
|
133
|
+
typeof monotonic.values.now !== 'function' ||
|
|
134
|
+
typeof uuid.values.randomUUID !== 'function'))))
|
|
135
|
+
refuse();
|
|
136
|
+
const lifetimePins = [
|
|
137
|
+
dateGlobal,
|
|
138
|
+
date,
|
|
139
|
+
iso,
|
|
140
|
+
monotonic,
|
|
141
|
+
uuid,
|
|
142
|
+
local,
|
|
143
|
+
releaseDateGlobal,
|
|
144
|
+
releaseDate,
|
|
145
|
+
releaseScalar,
|
|
146
|
+
].filter((pin) => pin !== undefined);
|
|
147
|
+
const current = () => source.current() &&
|
|
148
|
+
root.current() &&
|
|
149
|
+
driver.current() &&
|
|
150
|
+
native?.current() === true &&
|
|
151
|
+
database instanceof sqlite_data_source_1.SqliteDataSource &&
|
|
152
|
+
root.values.connection === database &&
|
|
153
|
+
root.values.queryRunner === undefined &&
|
|
154
|
+
driver.values.connection === database &&
|
|
155
|
+
database.isInitialized &&
|
|
156
|
+
lifetimePins.every((pin) => pin.current());
|
|
157
|
+
const check = () => {
|
|
158
|
+
if (!current())
|
|
159
|
+
refuse();
|
|
160
|
+
};
|
|
161
|
+
const reader = () => {
|
|
162
|
+
const cache = new Map();
|
|
163
|
+
return (object, field) => {
|
|
164
|
+
if (!object || typeof object !== 'object')
|
|
165
|
+
refuse('Invalid thermostat definition structure.');
|
|
166
|
+
let fields = cache.get(object);
|
|
167
|
+
if (!fields)
|
|
168
|
+
cache.set(object, (fields = new Map()));
|
|
169
|
+
if (!fields.has(field))
|
|
170
|
+
fields.set(field, Reflect.get(object, field));
|
|
171
|
+
return fields.get(field);
|
|
172
|
+
};
|
|
173
|
+
};
|
|
174
|
+
const record = (value) => {
|
|
175
|
+
if (!value || typeof value !== 'object' || Array.isArray(value))
|
|
176
|
+
refuse('Invalid thermostat definition structure.');
|
|
177
|
+
return value;
|
|
178
|
+
};
|
|
179
|
+
const fences = (id, fence, read) => {
|
|
180
|
+
record(fence);
|
|
181
|
+
const expected_revision = read(fence, 'expected_revision');
|
|
182
|
+
const expected_graph_revision = read(fence, 'expected_graph_revision');
|
|
183
|
+
if (typeof id !== 'string' ||
|
|
184
|
+
!id ||
|
|
185
|
+
typeof expected_revision !== 'number' ||
|
|
186
|
+
!revision(expected_revision, 1) ||
|
|
187
|
+
typeof expected_graph_revision !== 'number' ||
|
|
188
|
+
!revision(expected_graph_revision, 0))
|
|
189
|
+
refuse('Invalid thermostat selection or revision fences.');
|
|
190
|
+
return { expected_revision, expected_graph_revision };
|
|
191
|
+
};
|
|
192
|
+
return Object.freeze({
|
|
193
|
+
current,
|
|
194
|
+
releaseInput(id, expectedRevision) {
|
|
195
|
+
if (kind !== 'release-request' || typeof id !== 'string' || !id || !revision(expectedRevision, 1))
|
|
196
|
+
refuse('Invalid thermostat release or revision fence.');
|
|
197
|
+
check();
|
|
198
|
+
return Object.freeze({ kind: 'release-request', id, expectedRevision });
|
|
199
|
+
},
|
|
200
|
+
registeredInput(updates) {
|
|
201
|
+
if (!manual)
|
|
202
|
+
refuse('Invalid thermostat settings intent kind.');
|
|
203
|
+
const read = reader();
|
|
204
|
+
const array = (value) => {
|
|
205
|
+
if (!Array.isArray(value))
|
|
206
|
+
refuse('Invalid thermostat settings array.');
|
|
207
|
+
return value;
|
|
208
|
+
};
|
|
209
|
+
const length = (value) => {
|
|
210
|
+
const size = read(value, 'length');
|
|
211
|
+
if (typeof size !== 'number' || !Number.isSafeInteger(size) || size < 0)
|
|
212
|
+
refuse('Invalid thermostat settings array.');
|
|
213
|
+
return size;
|
|
214
|
+
};
|
|
215
|
+
const scalar = (value) => {
|
|
216
|
+
if (value === null ||
|
|
217
|
+
value === undefined ||
|
|
218
|
+
typeof value === 'string' ||
|
|
219
|
+
typeof value === 'boolean' ||
|
|
220
|
+
(typeof value === 'number' && Number.isFinite(value)))
|
|
221
|
+
return value;
|
|
222
|
+
refuse('Invalid thermostat settings metadata.');
|
|
223
|
+
};
|
|
224
|
+
const primitives = (value) => {
|
|
225
|
+
const input = array(value), size = length(input), output = [];
|
|
226
|
+
for (let index = 0; index < size; index++) {
|
|
227
|
+
if (!Object.hasOwn(input, index))
|
|
228
|
+
refuse('Invalid thermostat settings metadata entry.');
|
|
229
|
+
output.push(scalar(read(input, String(index))));
|
|
230
|
+
}
|
|
231
|
+
return output;
|
|
232
|
+
};
|
|
233
|
+
const id = (value) => {
|
|
234
|
+
if (typeof value !== 'string' || !value)
|
|
235
|
+
refuse('Invalid thermostat setting identity.');
|
|
236
|
+
return value;
|
|
237
|
+
};
|
|
238
|
+
const entries = array(updates), size = length(entries);
|
|
239
|
+
if (size === 0)
|
|
240
|
+
return { input: null, destinations: [] };
|
|
241
|
+
check();
|
|
242
|
+
const commands = [];
|
|
243
|
+
const destinations = [];
|
|
244
|
+
for (let index = 0; index < size; index++) {
|
|
245
|
+
if (!Object.hasOwn(entries, index))
|
|
246
|
+
refuse('Invalid thermostat settings entry.');
|
|
247
|
+
const entry = record(read(entries, String(index)));
|
|
248
|
+
const property = record(read(entry, 'property'));
|
|
249
|
+
const channel = record(read(entry, 'channel')), device = record(read(entry, 'device'));
|
|
250
|
+
const propertyChannel = read(property, 'channel');
|
|
251
|
+
const unitChannel = propertyChannel === null || propertyChannel === undefined || typeof propertyChannel === 'string'
|
|
252
|
+
? propertyChannel
|
|
253
|
+
: {
|
|
254
|
+
category: scalar(read(record(propertyChannel), 'category')),
|
|
255
|
+
identifier: scalar(read(propertyChannel, 'identifier')),
|
|
256
|
+
};
|
|
257
|
+
const permissions = read(property, 'permissions'), format = read(property, 'format');
|
|
258
|
+
const ownedProperty = {
|
|
259
|
+
id: id(read(property, 'id')),
|
|
260
|
+
identifier: scalar(read(property, 'identifier')),
|
|
261
|
+
category: scalar(read(property, 'category')),
|
|
262
|
+
dataType: scalar(read(property, 'dataType')),
|
|
263
|
+
permissions: permissions == null ? [] : primitives(permissions),
|
|
264
|
+
format: format == null ? null : Array.isArray(format) ? primitives(format) : scalar(format),
|
|
265
|
+
channel: unitChannel,
|
|
266
|
+
};
|
|
267
|
+
const ownedChannel = {
|
|
268
|
+
id: id(read(channel, 'id')),
|
|
269
|
+
identifier: scalar(read(channel, 'identifier')),
|
|
270
|
+
category: scalar(read(channel, 'category')),
|
|
271
|
+
};
|
|
272
|
+
const ownedDevice = { id: id(read(device, 'id')), type: scalar(read(device, 'type')) };
|
|
273
|
+
const value = read(entry, 'value');
|
|
274
|
+
if (typeof value !== 'string' && typeof value !== 'number' && typeof value !== 'boolean')
|
|
275
|
+
refuse('Invalid thermostat setting scalar.');
|
|
276
|
+
commands.push(Object.freeze({
|
|
277
|
+
propertyId: ownedProperty.id,
|
|
278
|
+
channelId: ownedChannel.id,
|
|
279
|
+
deviceId: ownedDevice.id,
|
|
280
|
+
contract: contract(ownedProperty, ownedChannel, ownedDevice),
|
|
281
|
+
value,
|
|
282
|
+
}));
|
|
283
|
+
destinations.push(property);
|
|
284
|
+
}
|
|
285
|
+
check();
|
|
286
|
+
const input = Object.freeze({
|
|
287
|
+
kind: 'registered-settings',
|
|
288
|
+
id: commands[0].deviceId,
|
|
289
|
+
commands: Object.freeze(commands),
|
|
290
|
+
});
|
|
291
|
+
return { input, destinations };
|
|
292
|
+
},
|
|
293
|
+
input(id, fence, preset, clearUserOff) {
|
|
294
|
+
const input = Object.freeze({
|
|
295
|
+
kind: 'selection',
|
|
296
|
+
id,
|
|
297
|
+
...fences(id, fence, reader()),
|
|
298
|
+
preset,
|
|
299
|
+
clearUserOff,
|
|
300
|
+
});
|
|
301
|
+
check();
|
|
302
|
+
if ((preset !== null && !['comfort', 'eco', 'away'].includes(preset)) || typeof clearUserOff !== 'boolean')
|
|
303
|
+
refuse('Invalid thermostat selection or revision fences.');
|
|
304
|
+
return input;
|
|
305
|
+
},
|
|
306
|
+
definitionInput(id, fence, definition) {
|
|
307
|
+
record(definition);
|
|
308
|
+
const read = reader();
|
|
309
|
+
const capturedFence = fences(id, fence, read);
|
|
310
|
+
const number = (value) => {
|
|
311
|
+
if (typeof value !== 'number' || !Number.isFinite(value))
|
|
312
|
+
refuse('Invalid thermostat definition number.');
|
|
313
|
+
return value;
|
|
314
|
+
};
|
|
315
|
+
const range = (value) => value === null
|
|
316
|
+
? null
|
|
317
|
+
: {
|
|
318
|
+
minimum: number(read(record(value), 'minimum')),
|
|
319
|
+
maximum: number(read(value, 'maximum')),
|
|
320
|
+
};
|
|
321
|
+
const heating_range = range(read(definition, 'heating_range'));
|
|
322
|
+
const cooling_range = range(read(definition, 'cooling_range'));
|
|
323
|
+
const entries = read(definition, 'presets');
|
|
324
|
+
if (!Array.isArray(entries))
|
|
325
|
+
refuse('Invalid thermostat definition presets.');
|
|
326
|
+
const length = read(entries, 'length');
|
|
327
|
+
if (typeof length !== 'number' || !Number.isInteger(length) || length < 0 || length > 3)
|
|
328
|
+
refuse('Invalid thermostat definition presets.');
|
|
329
|
+
const presets = [];
|
|
330
|
+
for (let index = 0; index < length; index++) {
|
|
331
|
+
if (!Object.hasOwn(entries, index))
|
|
332
|
+
refuse('Invalid thermostat definition preset entry.');
|
|
333
|
+
const entry = record(read(entries, String(index)));
|
|
334
|
+
const preset = read(entry, 'preset');
|
|
335
|
+
if (preset !== 'comfort' && preset !== 'eco' && preset !== 'away')
|
|
336
|
+
refuse('Invalid thermostat definition preset.');
|
|
337
|
+
const setpoints = record(read(entry, 'setpoints'));
|
|
338
|
+
const heating = read(setpoints, 'heating_setpoint');
|
|
339
|
+
const cooling = read(setpoints, 'cooling_setpoint');
|
|
340
|
+
presets.push({
|
|
341
|
+
preset,
|
|
342
|
+
setpoints: {
|
|
343
|
+
heating_setpoint: heating === null ? null : number(heating),
|
|
344
|
+
cooling_setpoint: cooling === null ? null : number(cooling),
|
|
345
|
+
},
|
|
346
|
+
});
|
|
347
|
+
}
|
|
348
|
+
const enabled = read(definition, 'automation_enabled');
|
|
349
|
+
if (enabled !== undefined && enabled !== null && typeof enabled !== 'boolean')
|
|
350
|
+
refuse('Invalid thermostat automation flag.');
|
|
351
|
+
const automation = enabled === true ? 'enable' : enabled === false ? 'disable' : 'preserve';
|
|
352
|
+
const payload = detach({
|
|
353
|
+
heating_range,
|
|
354
|
+
cooling_range,
|
|
355
|
+
presets,
|
|
356
|
+
automation,
|
|
357
|
+
});
|
|
358
|
+
check();
|
|
359
|
+
return Object.freeze({ kind: 'definition', id, ...capturedFence, definition: payload });
|
|
360
|
+
},
|
|
361
|
+
overrideInput(id, fence, input, actorId, source) {
|
|
362
|
+
const read = reader();
|
|
363
|
+
const capturedFence = fences(id, fence, read);
|
|
364
|
+
record(input);
|
|
365
|
+
const preset = read(input, 'preset');
|
|
366
|
+
const supplied = read(input, 'setpoints');
|
|
367
|
+
const expires_at = read(input, 'expires_at');
|
|
368
|
+
if ((preset !== null && preset !== 'comfort' && preset !== 'eco' && preset !== 'away') ||
|
|
369
|
+
typeof expires_at !== 'string' ||
|
|
370
|
+
typeof actorId !== 'string' ||
|
|
371
|
+
!actorId ||
|
|
372
|
+
(source !== 'user' && source !== 'panel'))
|
|
373
|
+
refuse('Override needs an identified actor and a future expiry within seven days.');
|
|
374
|
+
let setpoints = null;
|
|
375
|
+
if (supplied !== null) {
|
|
376
|
+
record(supplied);
|
|
377
|
+
const heating = read(supplied, 'heating_setpoint'), cooling = read(supplied, 'cooling_setpoint');
|
|
378
|
+
if ((heating !== null && (typeof heating !== 'number' || !Number.isFinite(heating))) ||
|
|
379
|
+
(cooling !== null && (typeof cooling !== 'number' || !Number.isFinite(cooling))))
|
|
380
|
+
refuse('unsupported_branch_or_setpoint_range');
|
|
381
|
+
setpoints = { heating_setpoint: heating, cooling_setpoint: cooling };
|
|
382
|
+
}
|
|
383
|
+
const payload = detach({ preset, setpoints, expires_at });
|
|
384
|
+
check();
|
|
385
|
+
return Object.freeze({ kind: 'override', id, ...capturedFence, override: payload, actorId, source });
|
|
386
|
+
},
|
|
387
|
+
cancelInput(id, fence, overrideId) {
|
|
388
|
+
const capturedFence = fences(id, fence, reader());
|
|
389
|
+
if (typeof overrideId !== 'string' || !overrideId)
|
|
390
|
+
refuse('Override identity/state changed; reload before cancelling.');
|
|
391
|
+
check();
|
|
392
|
+
return Object.freeze({ kind: 'cancel', id, ...capturedFence, overrideId });
|
|
393
|
+
},
|
|
394
|
+
operation(input, ownerCurrent, dispatchCurrent, deferReady = false) {
|
|
395
|
+
if (!['selection', 'definition', 'override', 'cancel', 'registered-settings', 'release-request'].includes(input.kind) ||
|
|
396
|
+
(input.kind === 'registered-settings' && !manual) ||
|
|
397
|
+
(input.kind === 'release-request' && kind !== 'release-request') ||
|
|
398
|
+
((input.kind === 'override' || input.kind === 'cancel') && (input.kind !== kind || !local)))
|
|
399
|
+
refuse('Invalid thermostat comfort intent kind.');
|
|
400
|
+
const settlement = new ThermostatSelectionSettlement();
|
|
401
|
+
let ready = false;
|
|
402
|
+
let imageComplete = false;
|
|
403
|
+
let manualTakeover;
|
|
404
|
+
let changed = true;
|
|
405
|
+
let resultPolicy;
|
|
406
|
+
const completeImage = () => {
|
|
407
|
+
imageComplete = true;
|
|
408
|
+
if (!deferReady)
|
|
409
|
+
ready = true;
|
|
410
|
+
};
|
|
411
|
+
let slot;
|
|
412
|
+
let plan;
|
|
413
|
+
let original;
|
|
414
|
+
let scopedCurrent;
|
|
415
|
+
const valid = () => current() && dispatchCurrent() && scopedCurrent?.() === true && ownerCurrent();
|
|
416
|
+
const assert = () => {
|
|
417
|
+
if (!valid())
|
|
418
|
+
refuse();
|
|
419
|
+
};
|
|
420
|
+
const validateOwned = (row, id, owned, graphDelta = 1) => {
|
|
421
|
+
if (!owned)
|
|
422
|
+
return;
|
|
423
|
+
const slot = owned.facts;
|
|
424
|
+
const controller = owned.controller;
|
|
425
|
+
if (!slot ||
|
|
426
|
+
!controller ||
|
|
427
|
+
slot.state !== 'LIVE' ||
|
|
428
|
+
slot.manualHold ||
|
|
429
|
+
slot.controllerId !== id ||
|
|
430
|
+
!slot.installEvidence)
|
|
431
|
+
refuse('Missing original installed thermostat selection.');
|
|
432
|
+
const installed = JSON.parse(slot.installEvidence);
|
|
433
|
+
if (controller.controllerRevision !== row.revision ||
|
|
434
|
+
controller.graphRevision !== installed.graphRevision + graphDelta ||
|
|
435
|
+
serialize({ ...controller, graphRevision: installed.graphRevision }) !== slot.installEvidence ||
|
|
436
|
+
serialize(controller.legacyBaseline) !== serialize(row.comfort?.automation_baseline ?? null))
|
|
437
|
+
refuse('Installed thermostat mirror no longer matches its native controller.');
|
|
438
|
+
};
|
|
439
|
+
const writeRelease = async (manager, input, owned) => {
|
|
440
|
+
const readConfig = () => manager
|
|
441
|
+
.createQueryBuilder(virtual_thermostat_entity_1.VirtualThermostatConfigEntity, 'config')
|
|
442
|
+
.where('config.controllerId = :id', { id: input.id })
|
|
443
|
+
.callListeners(false)
|
|
444
|
+
.getOneOrFail();
|
|
445
|
+
const readClaims = () => manager
|
|
446
|
+
.createQueryBuilder(virtual_thermostat_entity_1.VirtualThermostatActuatorClaimEntity, 'claim')
|
|
447
|
+
.where('claim.controllerId = :id AND claim.state != :released', { id: input.id, released: 'released' })
|
|
448
|
+
.orderBy('claim.id', 'ASC')
|
|
449
|
+
.callListeners(false)
|
|
450
|
+
.getMany();
|
|
451
|
+
const readGraph = () => manager
|
|
452
|
+
.createQueryBuilder(virtual_producer_entity_1.VirtualGraphRevisionEntity, 'graph')
|
|
453
|
+
.where('graph.id = 1')
|
|
454
|
+
.callListeners(false)
|
|
455
|
+
.getOneOrFail();
|
|
456
|
+
const milliseconds = (date) => date === null ? null : releaseScalar.values.getTime.call(date);
|
|
457
|
+
const configuration = (row) => Object.freeze({
|
|
458
|
+
...configImage(row, milliseconds),
|
|
459
|
+
comfort: detach(row.comfort),
|
|
460
|
+
policy: detach(row.policy),
|
|
461
|
+
heuristic: detach(row.heuristic),
|
|
462
|
+
});
|
|
463
|
+
const image = (row) => Object.freeze({
|
|
464
|
+
...claimImage(row, milliseconds),
|
|
465
|
+
releaseEvidence: detach(row.releaseEvidence),
|
|
466
|
+
});
|
|
467
|
+
const sameConfig = (actual, intended) => Object.keys(intended).every((key) => key === 'comfort' || key === 'policy' || key === 'heuristic'
|
|
468
|
+
? serialize(actual[key]) === serialize(intended[key])
|
|
469
|
+
: Object.is(actual[key], intended[key]));
|
|
470
|
+
const sameClaim = (actual, intended) => Object.keys(intended).every((key) => key === 'releaseEvidence'
|
|
471
|
+
? serialize(actual[key]) === serialize(intended[key])
|
|
472
|
+
: Object.is(actual[key], intended[key]));
|
|
473
|
+
const row = await readConfig();
|
|
474
|
+
assert();
|
|
475
|
+
if (row.revision !== input.expectedRevision || !revision(row.revision, 1, true))
|
|
476
|
+
refuse('Thermostat revision changed or overflowed.');
|
|
477
|
+
validateOwned(row, input.id, owned);
|
|
478
|
+
const DateConstructor = releaseDateGlobal.values.Date;
|
|
479
|
+
const instant = new DateConstructor();
|
|
480
|
+
const timestamp = releaseScalar.values.getTime.call(instant);
|
|
481
|
+
const intended = Object.freeze({
|
|
482
|
+
...configuration(row),
|
|
483
|
+
...(owned && row.comfort ? { comfort: { ...configuration(row).comfort, automation_baseline: null } } : {}),
|
|
484
|
+
requestedMode: 'off',
|
|
485
|
+
revision: row.revision + 1,
|
|
486
|
+
releaseRequestedAt: timestamp,
|
|
487
|
+
});
|
|
488
|
+
const graph = await readGraph(), selected = await readClaims();
|
|
489
|
+
assert();
|
|
490
|
+
if (!revision(graph.revision, 1))
|
|
491
|
+
refuse('Invalid virtual dependency graph revision.');
|
|
492
|
+
const graphRevision = graph.revision;
|
|
493
|
+
const starting = selected.map(image);
|
|
494
|
+
const claims = Object.freeze(starting.map((claim) => {
|
|
495
|
+
if (!revision(claim.revision, 1, true))
|
|
496
|
+
refuse('Thermostat claim revision overflow.');
|
|
497
|
+
return Object.freeze({
|
|
498
|
+
...claim,
|
|
499
|
+
state: claim.sourcePropertyId ? 'releasing' : 'missing',
|
|
500
|
+
revision: claim.revision + 1,
|
|
501
|
+
releaseRequestedAt: timestamp,
|
|
502
|
+
reason: 'explicit_release_requested',
|
|
503
|
+
});
|
|
504
|
+
}));
|
|
505
|
+
const updated = await manager
|
|
506
|
+
.createQueryBuilder()
|
|
507
|
+
.update(virtual_thermostat_entity_1.VirtualThermostatConfigEntity)
|
|
508
|
+
.set({
|
|
509
|
+
requestedMode: 'off',
|
|
510
|
+
releaseRequestedAt: instant,
|
|
511
|
+
revision: intended.revision,
|
|
512
|
+
...(owned ? { comfort: intended.comfort } : {}),
|
|
513
|
+
})
|
|
514
|
+
.where({
|
|
515
|
+
controllerId: input.id,
|
|
516
|
+
revision: row.revision,
|
|
517
|
+
ownerDeviceId: row.ownerDeviceId === null ? (0, typeorm_1.IsNull)() : row.ownerDeviceId,
|
|
518
|
+
})
|
|
519
|
+
.execute();
|
|
520
|
+
assert();
|
|
521
|
+
if (updated.affected !== 1)
|
|
522
|
+
refuse('Thermostat release lost its conditional configuration update.');
|
|
523
|
+
for (const [index, claim] of starting.entries()) {
|
|
524
|
+
const changed = await manager
|
|
525
|
+
.createQueryBuilder()
|
|
526
|
+
.update(virtual_thermostat_entity_1.VirtualThermostatActuatorClaimEntity)
|
|
527
|
+
.set({
|
|
528
|
+
state: claims[index].state,
|
|
529
|
+
revision: claims[index].revision,
|
|
530
|
+
releaseRequestedAt: instant,
|
|
531
|
+
reason: 'explicit_release_requested',
|
|
532
|
+
})
|
|
533
|
+
.where({
|
|
534
|
+
id: claim.id,
|
|
535
|
+
controllerId: input.id,
|
|
536
|
+
revision: claim.revision,
|
|
537
|
+
state: claim.state,
|
|
538
|
+
role: claim.role,
|
|
539
|
+
physicalIdentity: claim.physicalIdentity,
|
|
540
|
+
providerProfile: claim.providerProfile,
|
|
541
|
+
providerProfileVersion: claim.providerProfileVersion,
|
|
542
|
+
sourcePropertyId: claim.sourcePropertyId === null ? (0, typeorm_1.IsNull)() : claim.sourcePropertyId,
|
|
543
|
+
sourcePropertyIdentity: claim.sourcePropertyIdentity,
|
|
544
|
+
sourceDeviceId: claim.sourceDeviceId === null ? (0, typeorm_1.IsNull)() : claim.sourceDeviceId,
|
|
545
|
+
sourceDeviceIdentity: claim.sourceDeviceIdentity,
|
|
546
|
+
contractFingerprint: claim.contractFingerprint,
|
|
547
|
+
qualificationGeneration: claim.qualificationGeneration === null ? (0, typeorm_1.IsNull)() : claim.qualificationGeneration,
|
|
548
|
+
})
|
|
549
|
+
.execute();
|
|
550
|
+
assert();
|
|
551
|
+
if (changed.affected !== 1)
|
|
552
|
+
refuse('Thermostat release lost a conditional claim update.');
|
|
553
|
+
}
|
|
554
|
+
const postimage = await readConfig(), members = await readClaims(), postGraph = await readGraph();
|
|
555
|
+
assert();
|
|
556
|
+
if (!sameConfig(configuration(postimage), intended) ||
|
|
557
|
+
members.length !== claims.length ||
|
|
558
|
+
members.some((member, index) => !sameClaim(image(member), claims[index])) ||
|
|
559
|
+
postGraph.revision !== graphRevision)
|
|
560
|
+
refuse('Thermostat release persisted an unexpected complete postimage.');
|
|
561
|
+
const value = Object.freeze({
|
|
562
|
+
input,
|
|
563
|
+
configuration: intended,
|
|
564
|
+
claims,
|
|
565
|
+
claimIds: Object.freeze(claims.map((claim) => claim.id)),
|
|
566
|
+
graph_revision: graphRevision,
|
|
567
|
+
timestamp,
|
|
568
|
+
});
|
|
569
|
+
settlement.releaseResult = Object.freeze({ value });
|
|
570
|
+
completeImage();
|
|
571
|
+
return value;
|
|
572
|
+
};
|
|
573
|
+
const writeRegistered = async (manager, input, owned, semantic) => {
|
|
574
|
+
const readGraph = () => manager
|
|
575
|
+
.createQueryBuilder(virtual_producer_entity_1.VirtualGraphRevisionEntity, 'graph')
|
|
576
|
+
.where('graph.id = 1')
|
|
577
|
+
.callListeners(false)
|
|
578
|
+
.getOneOrFail();
|
|
579
|
+
const readConfig = () => manager
|
|
580
|
+
.createQueryBuilder(virtual_thermostat_entity_1.VirtualThermostatConfigEntity, 'config')
|
|
581
|
+
.where('config.controllerId = :id', { id: input.id })
|
|
582
|
+
.callListeners(false)
|
|
583
|
+
.getOneOrFail();
|
|
584
|
+
const readOwner = () => manager
|
|
585
|
+
.createQueryBuilder(devices_virtual_entity_1.VirtualDeviceEntity, 'owner')
|
|
586
|
+
.select(['owner.id', 'owner.enabled', 'owner.type'])
|
|
587
|
+
.where('owner.id = :id', { id: input.id })
|
|
588
|
+
.callListeners(false)
|
|
589
|
+
.getOne();
|
|
590
|
+
const graph = await readGraph();
|
|
591
|
+
assert();
|
|
592
|
+
if (!revision(graph.revision, semantic ? 0 : 1))
|
|
593
|
+
refuse('Invalid virtual dependency graph revision.');
|
|
594
|
+
let graphRevision = graph.revision;
|
|
595
|
+
const rows = [];
|
|
596
|
+
for (const command of input.commands) {
|
|
597
|
+
const setting = await manager
|
|
598
|
+
.createQueryBuilder(virtual_thermostat_entity_1.VirtualThermostatSettingEntity, 'setting')
|
|
599
|
+
.where('setting.propertyId = :id', { id: command.propertyId })
|
|
600
|
+
.callListeners(false)
|
|
601
|
+
.getOne();
|
|
602
|
+
const property = await manager
|
|
603
|
+
.createQueryBuilder(devices_entity_1.ChannelPropertyEntity, 'property')
|
|
604
|
+
.leftJoinAndSelect('property.channel', 'channel')
|
|
605
|
+
.leftJoinAndSelect('channel.device', 'device')
|
|
606
|
+
.where('property.id = :id', { id: command.propertyId })
|
|
607
|
+
.callListeners(false)
|
|
608
|
+
.getOne();
|
|
609
|
+
assert();
|
|
610
|
+
const channel = property?.channel;
|
|
611
|
+
const device = channel?.device;
|
|
612
|
+
if (!setting ||
|
|
613
|
+
!property ||
|
|
614
|
+
!channel ||
|
|
615
|
+
!device ||
|
|
616
|
+
setting.controllerId !== input.id ||
|
|
617
|
+
!['heating_setpoint', 'cooling_setpoint', 'heating_enabled', 'cooling_enabled', 'locked'].includes(setting.setting) ||
|
|
618
|
+
!(property instanceof devices_virtual_entity_1.VirtualChannelPropertyEntity) ||
|
|
619
|
+
property.valueOrigin !== devices_virtual_entity_1.VirtualValueOrigin.LOCAL ||
|
|
620
|
+
property.sourcePropertyId ||
|
|
621
|
+
property.id !== command.propertyId ||
|
|
622
|
+
channel.id !== command.channelId ||
|
|
623
|
+
device.id !== command.deviceId ||
|
|
624
|
+
device.id !== input.id ||
|
|
625
|
+
setting.contractFingerprint !== command.contract ||
|
|
626
|
+
setting.contractFingerprint !== contract(property, channel, device))
|
|
627
|
+
refuse('Only registered unchanged local thermostat settings accept commands.');
|
|
628
|
+
rows.push(setting.setting);
|
|
629
|
+
}
|
|
630
|
+
const row = await readConfig(), owner = await readOwner();
|
|
631
|
+
assert();
|
|
632
|
+
if (!owner?.enabled ||
|
|
633
|
+
owner.id !== input.id ||
|
|
634
|
+
row.ownerDeviceId !== owner.id ||
|
|
635
|
+
(row.locked && rows.some((role) => role !== 'locked')))
|
|
636
|
+
refuse('Thermostat is disabled or locked.');
|
|
637
|
+
if (!revision(row.revision, 1))
|
|
638
|
+
refuse('Invalid thermostat revision.');
|
|
639
|
+
validateOwned(row, input.id, owned, semantic ? 0 : 1);
|
|
640
|
+
const starting = detach(configImage(row));
|
|
641
|
+
const intended = JSON.parse(serialize(starting));
|
|
642
|
+
let heat = ['heat', 'auto'].includes(starting.requestedMode), cool = ['cool', 'auto'].includes(starting.requestedMode);
|
|
643
|
+
for (const [index, role] of rows.entries()) {
|
|
644
|
+
const value = input.commands[index].value;
|
|
645
|
+
if (role === 'heating_setpoint' || role === 'cooling_setpoint') {
|
|
646
|
+
if (typeof value !== 'number' || !Number.isFinite(value))
|
|
647
|
+
refuse('Setpoint must be finite.');
|
|
648
|
+
if (role === 'heating_setpoint')
|
|
649
|
+
intended.policy.heatingSetpoint = value;
|
|
650
|
+
else
|
|
651
|
+
intended.policy.coolingSetpoint = value;
|
|
652
|
+
}
|
|
653
|
+
else {
|
|
654
|
+
if (typeof value !== 'boolean')
|
|
655
|
+
refuse('Thermostat enable and lock settings must be boolean.');
|
|
656
|
+
if (role === 'heating_enabled')
|
|
657
|
+
heat = value;
|
|
658
|
+
else if (role === 'cooling_enabled')
|
|
659
|
+
cool = value;
|
|
660
|
+
else
|
|
661
|
+
intended.locked = value;
|
|
662
|
+
}
|
|
663
|
+
}
|
|
664
|
+
if (intended.comfort) {
|
|
665
|
+
if (owned)
|
|
666
|
+
intended.comfort.automation_baseline = null;
|
|
667
|
+
if (rows.some((role) => role.endsWith('setpoint')))
|
|
668
|
+
intended.comfort.selected_preset = null;
|
|
669
|
+
if (rows.some((role) => role.endsWith('enabled')))
|
|
670
|
+
intended.comfort.user_off = !heat && !cool;
|
|
671
|
+
const errors = validate(intended.comfort, intended.policy);
|
|
672
|
+
if (errors.length)
|
|
673
|
+
refuse(errors.join(', '));
|
|
674
|
+
}
|
|
675
|
+
intended.requestedMode = heat ? (cool ? 'auto' : 'heat') : cool ? 'cool' : 'off';
|
|
676
|
+
const errors = validatePolicy(intended.policy), mode = intended.requestedMode;
|
|
677
|
+
if (errors.length ||
|
|
678
|
+
!['off', 'heat', 'cool', 'auto'].includes(mode) ||
|
|
679
|
+
((mode === 'heat' || mode === 'auto') && intended.policy.heatingSetpoint === null) ||
|
|
680
|
+
((mode === 'cool' || mode === 'auto') && intended.policy.coolingSetpoint === null))
|
|
681
|
+
refuse(`Invalid thermostat mode/policy: ${errors.join(', ')}.`);
|
|
682
|
+
manualTakeover = rows.some((role) => role !== 'locked');
|
|
683
|
+
changed = !(semantic &&
|
|
684
|
+
serialize(intended) === serialize(starting) &&
|
|
685
|
+
semantic.canRemainUnchanged(manualTakeover));
|
|
686
|
+
if (changed) {
|
|
687
|
+
if (!revision(row.revision, 1, true))
|
|
688
|
+
refuse('Thermostat is missing, detached, locked or its revision changed/overflowed.');
|
|
689
|
+
if (semantic)
|
|
690
|
+
graphRevision = await semantic.advanceGraph();
|
|
691
|
+
intended.revision = starting.revision + 1;
|
|
692
|
+
}
|
|
693
|
+
const intendedJson = serialize(intended);
|
|
694
|
+
if (changed) {
|
|
695
|
+
const updated = await manager
|
|
696
|
+
.createQueryBuilder()
|
|
697
|
+
.update(virtual_thermostat_entity_1.VirtualThermostatConfigEntity)
|
|
698
|
+
.set({
|
|
699
|
+
policy: intended.policy,
|
|
700
|
+
comfort: intended.comfort,
|
|
701
|
+
requestedMode: intended.requestedMode,
|
|
702
|
+
locked: intended.locked,
|
|
703
|
+
revision: intended.revision,
|
|
704
|
+
})
|
|
705
|
+
.where({
|
|
706
|
+
controllerId: input.id,
|
|
707
|
+
ownerDeviceId: owner.id,
|
|
708
|
+
revision: starting.revision,
|
|
709
|
+
locked: starting.locked,
|
|
710
|
+
})
|
|
711
|
+
.execute();
|
|
712
|
+
assert();
|
|
713
|
+
if (updated.affected !== 1)
|
|
714
|
+
refuse('Thermostat settings lost their conditional update.');
|
|
715
|
+
}
|
|
716
|
+
else
|
|
717
|
+
await semantic.verifyUnchanged();
|
|
718
|
+
const postimage = await readConfig(), postOwner = await readOwner(), postGraph = await readGraph();
|
|
719
|
+
assert();
|
|
720
|
+
if (serialize(configImage(postimage)) !== intendedJson ||
|
|
721
|
+
!postOwner?.enabled ||
|
|
722
|
+
postOwner.id !== owner.id ||
|
|
723
|
+
postOwner.type !== owner.type ||
|
|
724
|
+
postimage.ownerDeviceId !== postOwner.id ||
|
|
725
|
+
postGraph.revision !== graphRevision)
|
|
726
|
+
refuse('Thermostat settings persisted an unexpected postimage.');
|
|
727
|
+
manualTakeover = rows.some((role) => role !== 'locked');
|
|
728
|
+
const value = detach({
|
|
729
|
+
configuration: intended,
|
|
730
|
+
owner: { id: owner.id, enabled: owner.enabled, type: owner.type },
|
|
731
|
+
graph_revision: graphRevision,
|
|
732
|
+
commands: input.commands,
|
|
733
|
+
});
|
|
734
|
+
settlement.manualResult = Object.freeze({ value });
|
|
735
|
+
completeImage();
|
|
736
|
+
return value;
|
|
737
|
+
};
|
|
738
|
+
return Object.freeze({
|
|
739
|
+
settlement,
|
|
740
|
+
changed() {
|
|
741
|
+
if (!imageComplete)
|
|
742
|
+
refuse();
|
|
743
|
+
return changed;
|
|
744
|
+
},
|
|
745
|
+
takesManualHold() {
|
|
746
|
+
assert();
|
|
747
|
+
if (input.kind !== 'registered-settings' || !imageComplete || manualTakeover === undefined)
|
|
748
|
+
refuse();
|
|
749
|
+
return manualTakeover;
|
|
750
|
+
},
|
|
751
|
+
qualifyAutomation(intent) {
|
|
752
|
+
assert();
|
|
753
|
+
if (!deferReady ||
|
|
754
|
+
ready ||
|
|
755
|
+
!imageComplete ||
|
|
756
|
+
!resultPolicy ||
|
|
757
|
+
!settlement.result ||
|
|
758
|
+
settlement.receipt?.outcome !== 'pending' ||
|
|
759
|
+
!intent?.isCurrent())
|
|
760
|
+
refuse();
|
|
761
|
+
const value = settlement.result.value;
|
|
762
|
+
settlement.result = Object.freeze({
|
|
763
|
+
value: detach({
|
|
764
|
+
...value,
|
|
765
|
+
effective: effective(resultPolicy, value.configuration, intent),
|
|
766
|
+
}),
|
|
767
|
+
});
|
|
768
|
+
},
|
|
769
|
+
markReady() {
|
|
770
|
+
assert();
|
|
771
|
+
if (!deferReady || !imageComplete || settlement.receipt?.outcome !== 'pending')
|
|
772
|
+
refuse();
|
|
773
|
+
ready = true;
|
|
774
|
+
},
|
|
775
|
+
captureSlot() {
|
|
776
|
+
if (input.kind !== 'override' && input.kind !== 'cancel')
|
|
777
|
+
return;
|
|
778
|
+
const reference = local.values.get.call(local.receiver, input.id);
|
|
779
|
+
slot = Object.freeze({ reference, id: reference?.id, revision: reference?.revision });
|
|
780
|
+
},
|
|
781
|
+
localAction() {
|
|
782
|
+
if (input.kind !== 'override' && input.kind !== 'cancel')
|
|
783
|
+
return;
|
|
784
|
+
try {
|
|
785
|
+
settlement.localAction = Object.freeze({ stage: 'checking' });
|
|
786
|
+
if (!slot || settlement.outcome !== 'committed' || !settlement.result)
|
|
787
|
+
refuse();
|
|
788
|
+
const current = local.values.get.call(local.receiver, input.id);
|
|
789
|
+
if (current !== slot.reference || current?.id !== slot.id || current?.revision !== slot.revision) {
|
|
790
|
+
settlement.localAction = Object.freeze({ stage: 'superseded' });
|
|
791
|
+
}
|
|
792
|
+
else if (input.kind === 'override') {
|
|
793
|
+
if (!plan)
|
|
794
|
+
refuse();
|
|
795
|
+
settlement.localAction = Object.freeze({ stage: 'installing' });
|
|
796
|
+
local.values.set.call(local.receiver, plan.controller, {
|
|
797
|
+
id: plan.id,
|
|
798
|
+
revision: plan.revision,
|
|
799
|
+
deadline: plan.deadline,
|
|
800
|
+
watermark: plan.watermark,
|
|
801
|
+
status: null,
|
|
802
|
+
});
|
|
803
|
+
settlement.localAction = Object.freeze({ stage: 'installed' });
|
|
804
|
+
}
|
|
805
|
+
else if (current && slot.id === input.overrideId) {
|
|
806
|
+
settlement.localAction = Object.freeze({ stage: 'deleting' });
|
|
807
|
+
local.values.delete.call(local.receiver, input.id);
|
|
808
|
+
settlement.localAction = Object.freeze({ stage: 'deleted' });
|
|
809
|
+
}
|
|
810
|
+
else
|
|
811
|
+
settlement.localAction = Object.freeze({ stage: 'no-target' });
|
|
812
|
+
}
|
|
813
|
+
catch (cause) {
|
|
814
|
+
settlement.localFailure = Object.freeze({ cause });
|
|
815
|
+
throw cause;
|
|
816
|
+
}
|
|
817
|
+
},
|
|
818
|
+
admit(manager) {
|
|
819
|
+
const receipt = observe(manager);
|
|
820
|
+
if (original)
|
|
821
|
+
refuse();
|
|
822
|
+
settlement.receipt = receipt;
|
|
823
|
+
original = manager;
|
|
824
|
+
const selected = (0, creation_capture_1.captureCreation)(manager, ['connection', 'queryRunner', 'createQueryBuilder', 'query']);
|
|
825
|
+
const runner = manager.queryRunner;
|
|
826
|
+
if (!runner)
|
|
827
|
+
refuse();
|
|
828
|
+
const runnerPin = (0, creation_capture_1.captureCreation)(runner, [
|
|
829
|
+
'manager',
|
|
830
|
+
'connection',
|
|
831
|
+
'driver',
|
|
832
|
+
'query',
|
|
833
|
+
'connect',
|
|
834
|
+
'commitTransaction',
|
|
835
|
+
'release',
|
|
836
|
+
]);
|
|
837
|
+
scopedCurrent = () => selected.current() &&
|
|
838
|
+
runnerPin.current() &&
|
|
839
|
+
selected.values.connection === database &&
|
|
840
|
+
selected.values.queryRunner === runner &&
|
|
841
|
+
runnerPin.values.driver === driver.receiver &&
|
|
842
|
+
runner.manager === manager &&
|
|
843
|
+
runner.connection === database &&
|
|
844
|
+
runner.isTransactionActive &&
|
|
845
|
+
Reflect.get(runner, 'transactionDepth') === 1 &&
|
|
846
|
+
driver.receiver.databaseConnection === physical;
|
|
847
|
+
guard(manager, () => ready &&
|
|
848
|
+
(input.kind === 'registered-settings'
|
|
849
|
+
? !!settlement.manualResult
|
|
850
|
+
: input.kind === 'release-request'
|
|
851
|
+
? !!settlement.releaseResult
|
|
852
|
+
: !!settlement.result && (input.kind !== 'override' || !!plan)) &&
|
|
853
|
+
valid());
|
|
854
|
+
assert();
|
|
855
|
+
},
|
|
856
|
+
async write(manager, owned, semantic) {
|
|
857
|
+
assert();
|
|
858
|
+
if (manager !== original)
|
|
859
|
+
refuse();
|
|
860
|
+
if (input.kind === 'registered-settings')
|
|
861
|
+
return writeRegistered(manager, input, owned, semantic);
|
|
862
|
+
if (input.kind === 'release-request')
|
|
863
|
+
return writeRelease(manager, input, owned);
|
|
864
|
+
const row = await manager
|
|
865
|
+
.createQueryBuilder(virtual_thermostat_entity_1.VirtualThermostatConfigEntity, 'config')
|
|
866
|
+
.where('config.controllerId = :id', { id: input.id })
|
|
867
|
+
.callListeners(false)
|
|
868
|
+
.getOne();
|
|
869
|
+
assert();
|
|
870
|
+
if (!row)
|
|
871
|
+
throw new common_1.NotFoundException('Thermostat configuration does not exist.');
|
|
872
|
+
const owner = await manager
|
|
873
|
+
.createQueryBuilder(devices_virtual_entity_1.VirtualDeviceEntity, 'owner')
|
|
874
|
+
.select(['owner.id'])
|
|
875
|
+
.where('owner.id = :id', { id: input.id })
|
|
876
|
+
.callListeners(false)
|
|
877
|
+
.getOne();
|
|
878
|
+
assert();
|
|
879
|
+
if (!owner ||
|
|
880
|
+
owner.id !== input.id ||
|
|
881
|
+
row.ownerDeviceId !== owner.id ||
|
|
882
|
+
row.locked ||
|
|
883
|
+
row.revision !== input.expected_revision ||
|
|
884
|
+
!revision(row.revision, 1, !semantic))
|
|
885
|
+
refuse('Thermostat is missing, detached, locked or its revision changed/overflowed.');
|
|
886
|
+
validateOwned(row, input.id, owned, semantic ? 0 : 1);
|
|
887
|
+
let intended;
|
|
888
|
+
let birth;
|
|
889
|
+
if (input.kind === 'selection') {
|
|
890
|
+
if (!row.comfort)
|
|
891
|
+
refuse('Configure explicit comfort ranges and presets first.');
|
|
892
|
+
intended = JSON.parse(serialize(row.comfort));
|
|
893
|
+
intended.selected_preset = input.preset;
|
|
894
|
+
if (owned)
|
|
895
|
+
intended.automation_baseline = null;
|
|
896
|
+
if (input.clearUserOff)
|
|
897
|
+
intended.user_off = false;
|
|
898
|
+
}
|
|
899
|
+
else if (input.kind === 'definition') {
|
|
900
|
+
const definition = input.definition;
|
|
901
|
+
const old = row.comfort;
|
|
902
|
+
intended = {
|
|
903
|
+
heating_range: definition.heating_range,
|
|
904
|
+
cooling_range: definition.cooling_range,
|
|
905
|
+
presets: definition.presets,
|
|
906
|
+
selected_preset: old?.selected_preset ?? null,
|
|
907
|
+
user_off: old?.user_off ?? row.requestedMode === 'off',
|
|
908
|
+
automation_enabled: definition.automation === 'preserve'
|
|
909
|
+
? (old?.automation_enabled ?? false)
|
|
910
|
+
: definition.automation === 'enable',
|
|
911
|
+
automation_baseline: definition.automation === 'disable' ? null : (old?.automation_baseline ?? null),
|
|
912
|
+
temporary_override: old?.temporary_override ?? null,
|
|
913
|
+
};
|
|
914
|
+
if (owned && intended.automation_baseline) {
|
|
915
|
+
const baseline = intended.automation_baseline;
|
|
916
|
+
const target = baseline.preset
|
|
917
|
+
? intended.presets.find((entry) => entry.preset === baseline.preset)?.setpoints
|
|
918
|
+
: baseline.setpoints;
|
|
919
|
+
if (!target || validateSetpoints(target, intended, row.policy).length)
|
|
920
|
+
intended.automation_baseline = null;
|
|
921
|
+
}
|
|
922
|
+
}
|
|
923
|
+
else {
|
|
924
|
+
if (!row.comfort)
|
|
925
|
+
refuse(input.kind === 'override'
|
|
926
|
+
? 'Configure explicit comfort ranges and presets first.'
|
|
927
|
+
: 'Override identity/state changed; reload before cancelling.');
|
|
928
|
+
intended = JSON.parse(serialize(row.comfort));
|
|
929
|
+
const DateConstructor = dateGlobal.values.Date;
|
|
930
|
+
const utc = (value) => iso.values.toISOString.call(value);
|
|
931
|
+
if (input.kind === 'override') {
|
|
932
|
+
const now = date.values.now.call(date.receiver);
|
|
933
|
+
const duration = date.values.parse.call(date.receiver, input.override.expires_at) - now;
|
|
934
|
+
if (!/T.*(?:Z|[+-]\d{2}:\d{2})$/i.test(input.override.expires_at) ||
|
|
935
|
+
!Number.isFinite(duration) ||
|
|
936
|
+
duration <= 0 ||
|
|
937
|
+
duration > 7 * 86400000)
|
|
938
|
+
refuse('Override needs an identified actor and a future expiry within seven days.');
|
|
939
|
+
const resolved = input.override.preset
|
|
940
|
+
? intended.presets.find((entry) => entry.preset === input.override.preset)?.setpoints
|
|
941
|
+
: input.override.setpoints;
|
|
942
|
+
if (!resolved)
|
|
943
|
+
refuse('Override preset or setpoints are missing.');
|
|
944
|
+
const identity = uuid.values.randomUUID.call(uuid.receiver);
|
|
945
|
+
const initial = monotonic.values.now.call(monotonic.receiver);
|
|
946
|
+
const deadline = initial + duration;
|
|
947
|
+
if (!Number.isFinite(initial) || !Number.isFinite(deadline))
|
|
948
|
+
refuse('Override initial clock is not finite.');
|
|
949
|
+
birth = Object.freeze({
|
|
950
|
+
controller: input.id,
|
|
951
|
+
id: identity,
|
|
952
|
+
revision: row.revision + 1,
|
|
953
|
+
deadline,
|
|
954
|
+
watermark: now,
|
|
955
|
+
});
|
|
956
|
+
intended.temporary_override = {
|
|
957
|
+
preset: input.override.preset,
|
|
958
|
+
setpoints: input.override.setpoints,
|
|
959
|
+
id: identity,
|
|
960
|
+
source: input.source,
|
|
961
|
+
actor_id: input.actorId,
|
|
962
|
+
revision: row.revision + 1,
|
|
963
|
+
original_duration_ms: duration,
|
|
964
|
+
wall_watermark_ms: now,
|
|
965
|
+
created_at: utc(new DateConstructor(now)),
|
|
966
|
+
expires_at: utc(new DateConstructor(now + duration)),
|
|
967
|
+
resolved_setpoints: { ...resolved },
|
|
968
|
+
status: 'active',
|
|
969
|
+
terminated_at: null,
|
|
970
|
+
};
|
|
971
|
+
}
|
|
972
|
+
else {
|
|
973
|
+
const override = intended.temporary_override;
|
|
974
|
+
if (override?.id !== input.overrideId || !['active', 'clock_uncertain'].includes(override.status))
|
|
975
|
+
refuse('Override identity/state changed; reload before cancelling.');
|
|
976
|
+
override.status = 'cancelled';
|
|
977
|
+
override.terminated_at = utc(new DateConstructor());
|
|
978
|
+
}
|
|
979
|
+
}
|
|
980
|
+
const errors = validate(intended, row.policy);
|
|
981
|
+
if (errors.length)
|
|
982
|
+
refuse(errors.join(', '));
|
|
983
|
+
const intendedJson = serialize(intended);
|
|
984
|
+
changed = !(semantic &&
|
|
985
|
+
(input.kind === 'selection' || input.kind === 'definition') &&
|
|
986
|
+
serialize(row.comfort) === intendedJson &&
|
|
987
|
+
semantic.canRemainUnchanged(true));
|
|
988
|
+
if (changed) {
|
|
989
|
+
if (!revision(row.revision, 1, true))
|
|
990
|
+
refuse('Thermostat is missing, detached, locked or its revision changed/overflowed.');
|
|
991
|
+
if (semantic)
|
|
992
|
+
await semantic.advanceGraph();
|
|
993
|
+
if (semantic) {
|
|
994
|
+
if (!semantic.writeAppliedConfiguration)
|
|
995
|
+
refuse('Original complete comfort image writer required.');
|
|
996
|
+
await semantic.writeAppliedConfiguration(row, intended);
|
|
997
|
+
assert();
|
|
998
|
+
}
|
|
999
|
+
else {
|
|
1000
|
+
const updated = await manager
|
|
1001
|
+
.createQueryBuilder()
|
|
1002
|
+
.update(virtual_thermostat_entity_1.VirtualThermostatConfigEntity)
|
|
1003
|
+
.set({ comfort: intended, revision: row.revision + 1 })
|
|
1004
|
+
.where({ controllerId: input.id, ownerDeviceId: owner.id, revision: row.revision, locked: false })
|
|
1005
|
+
.execute();
|
|
1006
|
+
assert();
|
|
1007
|
+
if (updated.affected !== 1)
|
|
1008
|
+
refuse('Thermostat selection lost its conditional update.');
|
|
1009
|
+
}
|
|
1010
|
+
}
|
|
1011
|
+
else
|
|
1012
|
+
await semantic.verifyUnchanged();
|
|
1013
|
+
const postimage = await manager
|
|
1014
|
+
.createQueryBuilder(virtual_thermostat_entity_1.VirtualThermostatConfigEntity, 'config')
|
|
1015
|
+
.where('config.controllerId = :id', { id: input.id })
|
|
1016
|
+
.callListeners(false)
|
|
1017
|
+
.getOneOrFail();
|
|
1018
|
+
const graph = await manager
|
|
1019
|
+
.createQueryBuilder(virtual_producer_entity_1.VirtualGraphRevisionEntity, 'graph')
|
|
1020
|
+
.where('graph.id = 1')
|
|
1021
|
+
.callListeners(false)
|
|
1022
|
+
.getOneOrFail();
|
|
1023
|
+
assert();
|
|
1024
|
+
if (postimage.controllerId !== input.id ||
|
|
1025
|
+
postimage.ownerDeviceId !== owner.id ||
|
|
1026
|
+
postimage.revision !== row.revision + (changed ? 1 : 0) ||
|
|
1027
|
+
serialize(postimage.comfort) !== intendedJson ||
|
|
1028
|
+
!revision(graph.revision, changed ? 1 : 0) ||
|
|
1029
|
+
graph.revision !== input.expected_graph_revision + (changed ? 1 : 0))
|
|
1030
|
+
refuse('Thermostat selection persisted an unexpected postimage.');
|
|
1031
|
+
resultPolicy = detach(postimage.policy);
|
|
1032
|
+
const value = detach({
|
|
1033
|
+
controller: postimage.controllerId,
|
|
1034
|
+
revision: postimage.revision,
|
|
1035
|
+
graph_revision: graph.revision,
|
|
1036
|
+
configuration: postimage.comfort,
|
|
1037
|
+
effective: effective(postimage.policy, postimage.comfort),
|
|
1038
|
+
clock_policy: 'bounded_absolute_recovery_with_uncertainty_inhibit',
|
|
1039
|
+
});
|
|
1040
|
+
plan = birth;
|
|
1041
|
+
settlement.result = Object.freeze({ value });
|
|
1042
|
+
completeImage();
|
|
1043
|
+
return value;
|
|
1044
|
+
},
|
|
1045
|
+
accepted() {
|
|
1046
|
+
if (settlement.outcome !== 'committed' ||
|
|
1047
|
+
(input.kind === 'registered-settings'
|
|
1048
|
+
? !settlement.manualResult
|
|
1049
|
+
: input.kind === 'release-request'
|
|
1050
|
+
? !settlement.releaseResult
|
|
1051
|
+
: !settlement.result))
|
|
1052
|
+
throw new Error('Missing original native thermostat selection ACK/result');
|
|
1053
|
+
},
|
|
1054
|
+
copy() {
|
|
1055
|
+
if (settlement.outcome !== 'committed' || !settlement.result)
|
|
1056
|
+
refuse();
|
|
1057
|
+
return JSON.parse(serialize(settlement.result.value));
|
|
1058
|
+
},
|
|
1059
|
+
});
|
|
1060
|
+
},
|
|
1061
|
+
});
|
|
1062
|
+
}
|
|
1063
|
+
exports.thermostatComfortSelection = Object.freeze({ pin });
|
|
1064
|
+
//# sourceMappingURL=thermostat-comfort-selection.js.map
|