lavva.exalushome.portos
Version:
Library implementing communication and abstraction layers for Portos 433MHz API in ExalusHome system
94 lines • 5.68 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 { ManuallyPairedDevicesService } from 'lavva.exalushome/build/js/Services/Devices/ManuallyPairedDevicesService';
import { ManuallyPairedDeviceService } from './Devices/DevicePairing/ManuallyPairedDeviceService';
import { Portos433ConfigService } from './Devices/DeviceServices/Portos433Mhz/Portos433ConfigService';
import { UpdatesProvider } from 'lavva.exalushome/build/js/Services/Updates/UpdatesProvider';
import { PortosDevicesUpdatesProvider } from './Devices/Updates/PortosDevicesUpdatesProvider';
import { PortosRadioUpdatesProvider } from './Controller/Updates/PortosRadioUpdatesProvider';
export class PortosService {
constructor() {
this._services = {
Portos433ConfigService: new Portos433ConfigService()
};
this._servicesToDeviceMap = new Map([
["080844eb-3ec1-4611-a327-757a634bd866", [this._services.Portos433ConfigService]],
["179b750c-5c73-4a6c-865c-5cf85a27200b", [this._services.Portos433ConfigService]],
]);
}
GetServiceName() {
return PortosService.ServiceName;
}
static Init() {
DependencyContainer.Instance.RegisterService(new PortosService());
Api.Get(LoggerService.ServiceName).Debug(PortosService.ServiceName, "Initialized PortosService");
PortosService.RegisterManuallyPairedDeviceServiceAsync();
PortosService.RegisterUpdateProviderAsync();
}
static RegisterManuallyPairedDeviceServiceAsync() {
return __awaiter(this, void 0, void 0, function* () {
const extensionInfo = (yield Api.Get(ControllerExtensionsService.ServiceName).GetExtensionsInfoAsync(PortosService.PortosExtensionGuid)).first();
if (extensionInfo != null) {
Api.Get(LoggerService.ServiceName).Debug(PortosService.ServiceName, "Registering Portos manually paired device service.");
Api.Get(ManuallyPairedDevicesService.ServiceName).RegisterManuallyPairedDevicesProtocol(new ManuallyPairedDeviceService(extensionInfo));
}
else {
Api.Get(LoggerService.ServiceName).Warning(PortosService.ServiceName, "Portos manually paired device service not registered - controller does not support Portos extension.");
}
});
}
static RegisterUpdateProviderAsync() {
return __awaiter(this, void 0, void 0, function* () {
const updateProvider = yield Api.Get(UpdatesProvider.ServiceName);
const extensionInfo = (yield Api.Get(ControllerExtensionsService.ServiceName).GetExtensionsInfoAsync(PortosService.PortosExtensionGuid)).first();
const runtimeInfo = yield updateProvider.GetSoftwareRuntimeInfoAsync();
if (extensionInfo != null) {
Api.Get(LoggerService.ServiceName).Debug(PortosService.ServiceName, "Registering Portos update providers.");
updateProvider === null || updateProvider === void 0 ? void 0 : updateProvider.RegisterUpdatesProvider(new PortosDevicesUpdatesProvider(extensionInfo, runtimeInfo));
updateProvider === null || updateProvider === void 0 ? void 0 : updateProvider.RegisterUpdatesProvider(new PortosRadioUpdatesProvider(extensionInfo, runtimeInfo));
}
else {
Api.Get(LoggerService.ServiceName).Warning(PortosService.ServiceName, "Portos device update provider not registered - controller does not support Portos extension.");
}
});
}
GetDeviceServiceByServiceType(classType) {
switch (classType) {
case "Portos433ConfigService":
return this._services.Portos433ConfigService;
default:
return null;
}
}
GetDeviceService(device, classType) {
let services = this.GetAllDeviceServices(device);
return services !== null ? services.firstOrDefault(service => service.GetServiceName() === classType) : null;
}
GetAllDeviceServices(device) {
if (device.ModelGuid !== null) {
const services = this._servicesToDeviceMap.get(device.ModelGuid);
return services !== undefined ? services : [];
}
else
return [];
}
IsDeviceServiceSupported(device, classType) {
return this.GetDeviceService(device, classType) !== null ? true : false;
}
}
PortosService.ServiceName = "PortosService";
PortosService.PortosExtensionGuid = "ca9c9dee-8bf6-4688-a04f-1ce35693405f";
PortosService.PortosProtocolGuid = "cd25bdff-628c-4dbc-a16a-648c96a819d4";
PortosService.PortosRadioModuleDeviceGuid = "b015ecf2-14c9-4b35-81f1-d008f3a75442";
//# sourceMappingURL=Portos.js.map