lavva.exalushome.extalife
Version:
Library implementing communication and abstraction layers for ExtaLife API in ExalusHome system
393 lines • 17.6 kB
JavaScript
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