lavva.exalushome.portos
Version:
Library implementing communication and abstraction layers for Portos 433MHz API in ExalusHome system
135 lines • 5.39 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 { IconType } from "lavva.exalushome/build/js/Services/Devices/IDevice";
import { DeviceTaskExecutionResult } from "lavva.exalushome/build/js/Services/Devices/TaskExecutionResult";
import { DataFrame, Method, Status } from "lavva.exalushome/build/js/DataFrame";
import { Api } from "lavva.exalushome";
import { ExalusConnectionService } from "lavva.exalushome/build/js/Services/ExalusConnectionService";
import { ControllerConfigurationService } from 'lavva.exalushome/build/js/Services/Controller/ControllerConfigurationService';
import { LoggerService } from "lavva.exalushome/build/js/Services/Logging/LoggerService";
export class ManuallyPairedDeviceService {
constructor(extInfo) {
this._protocolGuid = extInfo.ExtensionGuid;
this._protocolExtGuid = extInfo.ExtensionGuid;
this._connection = Api.Get(ExalusConnectionService.ServiceName);
}
get ProtocolExtensionGuid() {
return this._protocolExtGuid;
}
get ProtocolGuid() {
return this._protocolGuid;
}
GetServiceName() {
return ManuallyPairedDeviceService.ServiceName;
}
GetDevicesForManualPairingAsync() {
return __awaiter(this, void 0, void 0, function* () {
var _a;
const result = yield ((_a = this._connection) === null || _a === void 0 ? void 0 : _a.SendAndWaitForResponseAsync(new GetManualPairDevicesRequest(), 8000, false));
if (result == null || result.Data == null || result.Status != Status.OK)
return [];
return result.Data.map(rawDev => {
const device = new ManualDevice();
device.Channels = rawDev.Channels;
device.Description = rawDev.Description;
device.Model = rawDev.Model;
device.ModelGuid = rawDev.ModelGuid;
device.ProtocolExtensionGuid = this._protocolExtGuid;
device.IconType = rawDev.IconType;
return device;
});
});
}
AddManuallyPairedDeviceAsync(device) {
return __awaiter(this, void 0, void 0, function* () {
var _a;
const result = yield ((_a = this._connection) === null || _a === void 0 ? void 0 : _a.SendAndWaitForResponseAsync(new PairManualDeviceRequest(device.ModelGuid), 8000, false));
Api.Get(LoggerService.ServiceName).Error(ManuallyPairedDeviceService.ServiceName, `EXIT CONFIGURATION MODE WILL BE FIRED! AddManuallyPairedDeviceAsync()`);
yield Api.Get(ControllerConfigurationService.ServiceName).ExitConfigurationModeAsync();
if (result == null || result.Status == null || result.Status != Status.OK)
return DeviceTaskExecutionResult.Failed;
if (result.Data == null)
return DeviceTaskExecutionResult.Unknown;
return DeviceTaskExecutionResult.Executed;
});
}
}
ManuallyPairedDeviceService.ServiceName = "PortosManualDevicePairingService";
class ManualDeviceResult {
constructor() {
this.ModelGuid = "";
this.Model = "";
this.Description = "";
this.Channels = 0;
this.IconType = IconType.Unknown;
}
}
class ManualDevice {
constructor() {
this._modelGuid = "";
this._model = "";
this._description = "";
this._channels = 0;
this._protocolExtGuid = "";
this._iconType = IconType.Unknown;
}
get IconType() {
return this._iconType;
}
set IconType(value) {
this._iconType = value;
}
get ModelGuid() {
return this._modelGuid;
}
set ModelGuid(value) {
this._modelGuid = value;
}
get Model() {
return this._model;
}
set Model(value) {
this._model = value;
}
get Description() {
return this._description;
}
set Description(value) {
this._description = value;
}
get Channels() {
return this._channels;
}
set Channels(value) {
this._channels = value;
}
set ProtocolExtensionGuid(value) {
this._protocolExtGuid = value;
}
get ProtocolExtensionGuid() {
return this._protocolExtGuid;
}
}
class GetManualPairDevicesRequest extends DataFrame {
constructor() {
super();
this.Resource = "/portos/devices/manual/pair/available";
this.Method = Method.Get;
}
}
class PairManualDeviceRequest extends DataFrame {
constructor(modelGuid) {
super();
this.Resource = "/portos/devices/device/create";
this.Method = Method.Put;
this.Data = { DeviceModelGuid: modelGuid };
}
}
//# sourceMappingURL=ManuallyPairedDeviceService.js.map