UNPKG

lavva.exalushome.extalife

Version:

Library implementing communication and abstraction layers for ExtaLife API in ExalusHome system

393 lines 17.6 kB
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; import { Api } from 'lavva.exalushome'; import { DependencyContainer } from 'lavva.exalushome/build/js/DependencyContainer'; import { LoggerService } from 'lavva.exalushome/build/js/Services/Logging/LoggerService'; import { ControllerExtensionsService } from 'lavva.exalushome/build/js/Services/Controller/ControllerExtensionsService'; import { UpdatesProvider } from 'lavva.exalushome/build/js/Services/Updates/UpdatesProvider'; import { ExtaLifeDevicesUpdatesProvider } from './Devices/Updates/ExtaLifeDevicesUpdatesProvider'; import { ExtaLifeControllerRadioUpdatesProvider } from './Controller/Updates/ExtaLifeControllerRadioUpdatesProvider'; /** * @type Class */ export class ExtaLifeService { constructor() { this._services = new Map(); this._servicesToDeviceMap = new Map([ //RCK-21 contractron sensor ["becbb229-1637-4b0f-a9f0-d43fa38ef76b", [ "Rck21ConfigService", "FirmwareService", "DiagnosticService" ] ], //RCZ-21 flood sensor ["98d309e4-0986-4dd8-bcb6-fa31541c82be", [ "Rcz21ConfigService", "FirmwareService", "DiagnosticService" ] ], //RCM-21 multisensor ["d7f88fcb-19f7-469b-b489-a239762023e5", [ "Rcm21ConfigService", "FirmwareService", "DiagnosticService" ] ], //ZF-Bidi - facade blind controller ["42015ac8-4a84-47b2-855d-795ee8edc06f", [ "ZfBidiConfigService", "RemotesService", "FirmwareService", "DiagnosticService" ] ], //RCR-21 czujnik ruchu ["4688be64-c07c-4508-8e7a-b49bc4bbc78e", [ "Rcr21ConfigService", "FirmwareService", "DiagnosticService" ] ], //SSR-01 blind controller ["84c1bb42-1a27-46bb-ae1e-14a790e96a53", [ "SsrConfigService", "RemotesService", "FirmwareService", "DiagnosticService" ] ], //SSR-02 blind controller ["e7e6b193-0144-4550-93f0-9050bbbaf91d", [ "SsrConfigService", "RemotesService", "FirmwareService", "DiagnosticService" ] ], //SRP-22 blind controller ["d57de594-768b-4745-97bd-56b70b8be253", [ "Srp22ConfigService", "RemotesService", "FirmwareService", "DiagnosticService" ] ], //SRP-30 blind controller ["d1b4cfc7-e92c-47d1-9c7c-9c9dd3351832", [ "Srp30ConfigService", "RemotesService", "FirmwareService", "DiagnosticService" ] ], //WSZF_BIDI wind sensor for facade blind ["f48eab61-047a-4241-a1e6-aee89062cd69", [ "WszfBidiConfigService", "FirmwareService", "DiagnosticService" ] ], //RDP-21 dimmer ["db54c107-b406-4c99-8cfa-0455c9089d44", [ "Rdp21ConfigService", "RemotesService", "FirmwareService", "DiagnosticService" ] ], //ROP-21 switch ["e3fbfa59-2e57-465d-a46c-44b5ce30e475", [ "RopConfigService", "RemotesService", "FirmwareService", "DiagnosticService" ] ], //ROP-22 switch ["2520103f-5622-4015-be85-e6dea8640829", [ "RopConfigService", "RemotesService", "FirmwareService", "DiagnosticService" ] ], //ROP-27 switch ["d4638681-2fac-4f3c-a520-281573e431fa", [ "RopConfigService", "RemotesService", "FirmwareService", "DiagnosticService" ] ], //ROM-22 switch ["1f599666-be23-49c1-b42d-17a8db54e11a", [ "RomConfigService", "RemotesService", "FirmwareService", "DiagnosticService" ] ], //ROM-24 switch ["554f0414-df02-4525-94e9-47f36015c5d6", [ "RomConfigService", "RemotesService", "FirmwareService", "DiagnosticService" ] ], //ROG-21 power plug ["f4cc5043-2198-47df-9361-4cd130ed0323", [ "Rog21ConfigService", "RemotesService", "FirmwareService", "DiagnosticService" ] ], //ROB-21 gate controller ["7b794533-a040-4637-90d2-17b410a16efa", [ "Rob21ConfigService", "RemotesService", "FirmwareService", "DiagnosticService" ] ], //SBR-bidi gate controller ["824560d9-f83c-4ff6-99b7-0187bfda5d4e", [ "SbrConfigService", "RemotesService", "FirmwareService", "DiagnosticService" ] ], //SLR-22 RGB LED controller ["13538389-988f-4327-93d3-518e757c8cc9", [ "Slr22ConfigService", "FirmwareService", "DiagnosticService" ] ], //SLR-21 LED controller ["813d930e-4220-4a5f-b348-b0f731a07e5f", [ "Slr21ConfigService", "RemotesService", "FirmwareService", "DiagnosticService" ] ], //SLN-22 RGB LED controller ["88708796-2bda-4716-8cb5-57df74e40476", [ "Sln22ConfigService", "FirmwareService", "DiagnosticService" ] ], //SLN-21 LED controller ["5c039414-e5b2-428a-bfcf-874f68f0063f", [ "Sln21ConfigService", "RemotesService", "FirmwareService", "DiagnosticService" ] ], //REP-21 retransmitter ["952ddc14-76c4-4f47-b0bc-5d106c1f9b02", [ "DiagnosticService" ] ] ]); } static Init() { DependencyContainer.Instance.RegisterService(new ExtaLifeService()); Api.Get(LoggerService.ServiceName).Debug("Initialized ExtaLifeService"); ExtaLifeService.RegisterUpdateProvidersAsync(); } GetServiceName() { return ExtaLifeService.ServiceName; } GetDeviceServiceByServiceTypeAsync(classType) { return __awaiter(this, void 0, void 0, function* () { return this.getServiceAsync(classType); }); } GetDeviceServiceAsync(device, classType) { return __awaiter(this, void 0, void 0, function* () { let services = yield this.GetAllDeviceServicesAsync(device); return services !== null ? services.firstOrDefault(service => service.GetServiceName() === classType) : null; }); } GetAllDeviceServicesAsync(device) { return __awaiter(this, void 0, void 0, function* () { if (device.ModelGuid !== null) { const servicesNames = this._servicesToDeviceMap.get(device.ModelGuid); if (servicesNames == null) return []; const result = []; for (const serviceName of servicesNames) { const srv = yield this.getServiceAsync(serviceName); if (srv != null) { result.push(srv); } } return result; } else return []; }); } IsDeviceServiceSupportedAsync(device, classType) { return __awaiter(this, void 0, void 0, function* () { return (yield this.GetDeviceServiceAsync(device, classType)) !== null ? true : false; }); } static RegisterUpdateProvidersAsync() { return __awaiter(this, void 0, void 0, function* () { const updateProvider = yield Api.Get(UpdatesProvider.ServiceName); const extensionInfo = (yield Api.Get(ControllerExtensionsService.ServiceName).GetExtensionsInfoAsync(ExtaLifeService.ExtaLifeExtensionGuid)).first(); const runtimeInfo = yield updateProvider.GetSoftwareRuntimeInfoAsync(); if (extensionInfo != null) { Api.Get(LoggerService.ServiceName).Debug(ExtaLifeService.ServiceName, "Registering ExtaLife update providers."); updateProvider === null || updateProvider === void 0 ? void 0 : updateProvider.RegisterUpdatesProvider(new ExtaLifeDevicesUpdatesProvider(extensionInfo, runtimeInfo)); updateProvider === null || updateProvider === void 0 ? void 0 : updateProvider.RegisterUpdatesProvider(new ExtaLifeControllerRadioUpdatesProvider(extensionInfo, runtimeInfo)); } else { Api.Get(LoggerService.ServiceName).Warning(ExtaLifeService.ServiceName, "ExtaLife update provider not registered - controller does not support ExtaLife extension."); } }); } getServiceAsync(serviceName) { return __awaiter(this, void 0, void 0, function* () { const srv = this._services.get(serviceName); if (srv != null) { return srv; } else { let srv; switch (serviceName) { case "Rck21ConfigService": srv = new (yield import('./Devices/DeviceServices/ReedSwitch/Rck21ConfigService')).Rck21ConfigService(); break; case "Rcz21ConfigService": srv = new (yield import('./Devices/DeviceServices/FloodSensor/Rcz21ConfigService')).Rcz21ConfigService(); break; case "Rcm21ConfigService": srv = new (yield import('./Devices/DeviceServices/MultiSensor/Rcm21ConfigService')).Rcm21ConfigService(); break; case "Rcr21ConfigService": srv = new (yield import('./Devices/DeviceServices/MovementSensor/Rcr21ConfigService')).Rcr21ConfigService(); break; case "ZfBidiConfigService": srv = new (yield import('./Devices/DeviceServices/FacadeBlindService/ZfBidiConfigService')).ZfBidiConfigService(); break; case "SsrConfigService": srv = new (yield import('./Devices/DeviceServices/SsrConfigService/SsrConfigService')).SsrConfigService(); break; case "Srp22ConfigService": srv = new (yield import('./Devices/DeviceServices/SrpConfigService/Srp22ConfigService')).Srp22ConfigService(); break; case "Srp30ConfigService": srv = new (yield import('./Devices/DeviceServices/SrpConfigService/Srp30ConfigService')).Srp30ConfigService(); break; case "WszfBidiConfigService": srv = new (yield import('./Devices/DeviceServices/WindSensor/WszfBidiConfigService')).WszfBidiConfigService(); break; case "RopConfigService": srv = new (yield import('./Devices/DeviceServices/RopSwitches/RopConfigService')).RopConfigService(); break; case "RomConfigService": srv = new (yield import('./Devices/DeviceServices/RomSwitches/RomConfigService')).RomConfigService(); break; case "Rdp21ConfigService": srv = new (yield import('./Devices/DeviceServices/Dimmer/Rdp21ConfigService')).Rdp21ConfigService(); break; case "Rog21ConfigService": srv = new (yield import('./Devices/DeviceServices/PowerPlugSwitch/Rog21ConfigService')).Rog21ConfigService(); break; case "Rob21ConfigService": srv = new (yield import('./Devices/DeviceServices/GateControler/Rob21ConfigService')).Rob21ConfigService(); break; case "Slr22ConfigService": srv = new (yield import('./Devices/DeviceServices/LedController/Slr22ConfigService')).Slr22ConfigService(); break; case "Slr21ConfigService": srv = new (yield import('./Devices/DeviceServices/LedController/Slr21ConfigService')).Slr21ConfigService(); break; case "Sln21ConfigService": srv = new (yield import('./Devices/DeviceServices/LedController/Sln21ConfigService')).Sln21ConfigService(); break; case "Sln22ConfigService": srv = new (yield import('./Devices/DeviceServices/LedController/Sln22ConfigService')).Sln22ConfigService(); break; case "SbrConfigService": srv = new (yield import('./Devices/DeviceServices/GateControler/SbrConfigService')).SbrConfigService(); break; case "FirmwareService": srv = new (yield import('./Devices/DeviceServices/FirmwareService/FirmwareService')).FirmwareService(); break; case "DiagnosticService": srv = new (yield import('./Devices/DeviceServices/DiagnosticService/DiagnosticService')).DiagnosticService(); break; case "RemotesService": srv = new (yield import('./Devices/DeviceServices/RemoteService/RemotesService')).RemotesService(); break; default: Api.Get(LoggerService.ServiceName).Error(ExtaLifeService.ServiceName, `Cannot load service, unsupported service name: ${serviceName}`); return null; } if (srv == null) { Api.Get(LoggerService.ServiceName).Error(ExtaLifeService.ServiceName, `Cannot load service, not found implementation, service name: ${serviceName}`); return null; } this._services.set(serviceName, srv); return srv; } }); } } ExtaLifeService.ServiceName = "ExtaLifeService"; ExtaLifeService.ExtaLifeExtensionGuid = "4fd5c965-3f4f-4970-a381-23bf23490627"; ExtaLifeService.ExtaLifeProtocolGuid = "1fca7e8a-a2dc-4883-bd94-4e9b2012f685"; ExtaLifeService.ExtaLifeRadioModuleDeviceGuid = "a931c79a-63d7-4342-8777-0cc0c57334e2"; export var GetParamsErrorCode; (function (GetParamsErrorCode) { GetParamsErrorCode["Success"] = "Success"; GetParamsErrorCode["ResourceIsNotAvailable"] = "ResourceIsNotAvailable"; GetParamsErrorCode["UnknownError"] = "UnknownError"; GetParamsErrorCode["OtherError"] = "OtherError"; GetParamsErrorCode["InvalidChannelNumber"] = "InvalidChannelNumber"; GetParamsErrorCode["DeviceNotResponding"] = "DeviceNotResponding"; GetParamsErrorCode["NoData"] = "NoData"; })(GetParamsErrorCode || (GetParamsErrorCode = {})); //# sourceMappingURL=ExtaLife.js.map