UNPKG

lavva.exalushome.extalife

Version:

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

99 lines 5.59 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 { DataFrame, Method, Status } from "lavva.exalushome/build/js/DataFrame"; import { DependencyContainer } from "lavva.exalushome/build/js/DependencyContainer"; import { ResponseResult } from "lavva.exalushome/build/js/Services/FieldChangeResult"; import { GetParamsErrorCode } from "../../../../../ExtaLife"; import { GetChannelParamsRequest } from "../../../Common/DataRequest"; import { MultisensorChannelOffsetParams, Rcm21Channels } from "../../Rcm21ConfigParams"; import { Rcm21ConfigService } from "../../Rcm21ConfigService"; import { Rcm21VersionedService as PreviousVersionedService } from "../^1.5.0.30/Rcm21VersionedService"; export class Rcm21VersionedService extends PreviousVersionedService { GetChannelOffsetAsync(device, channel) { return __awaiter(this, void 0, void 0, function* () { var _a; if (channel != Rcm21Channels.TemperatureChannel) return new ResponseResult(GetParamsErrorCode.InvalidChannelNumber, `Failed to retrieve parameters - function not available on selected channel`); const result = yield ((_a = this._connection) === null || _a === void 0 ? void 0 : _a.SendAndWaitForResponseAsync(new GetChannelOffsetParams(device.Guid, channel.valueOf()), 35000, false)); if (result === null || result === undefined) return new ResponseResult(GetParamsErrorCode.UnknownError, `Failed to retrieve parameters - unknow error.`); switch (result.Status) { case Status.OK: if (result.Data != null) { result.Data.Offset = result.Data.Offset / 10; return result.Data; } break; case Status.ResourceIsNotAvailable: return new ResponseResult(GetParamsErrorCode.ResourceIsNotAvailable, `Failed to retrieve parameters - cannot communicate with the device.`); } return new ResponseResult(GetParamsErrorCode.OtherError, `Failed to retrieve parameters, response error: ${result.Status} data: ${result.Data}`); }); } /** * Function to set offset of reported values ex. sensor reads temperature 22.4 - if we set offset to +2 we recive state with value = 24.4 * If option is not available on given channel function returns Status.WrongData * @param device * @param channel * Option available on channels: * - TemperatureChannel * * @param offset * @returns */ SetChannelOffsetAsync(device, channel, offset) { return __awaiter(this, void 0, void 0, function* () { var _a, _b, _c, _d; try { switch (channel) { case Rcm21Channels.TemperatureChannel: if (offset < -5 || offset > 5 || !(offset * Math.pow(10, 1) % 1 == 0)) return Status.WrongData; break; default: return Status.WrongData; } const params = new MultisensorChannelOffsetParams(); params.DeviceGuid = device.Guid; params.Channel = channel; params.Offset = offset * 10; const result = yield ((_a = this._connection) === null || _a === void 0 ? void 0 : _a.SendAndWaitForResponseAsync(new SetChannelOffsetParams(params), 35000, false)); if (result == null || result.Status == null) { (_b = DependencyContainer.Log) === null || _b === void 0 ? void 0 : _b.Error(Rcm21ConfigService.ServiceName, `Failed to change device parameters - unknow error.`); return Status.FatalError; } if (result.Status !== Status.OK) (_c = DependencyContainer.Log) === null || _c === void 0 ? void 0 : _c.Error(Rcm21ConfigService.ServiceName, `Failed to change device parameters, response status: ${result.Status}`); return result.Status; } catch (error) { (_d = DependencyContainer.Log) === null || _d === void 0 ? void 0 : _d.Error(Rcm21ConfigService.ServiceName, `Cannot change device parameters. ${error}`); return Status.FatalError; } }); } } class GetChannelOffsetParams extends DataFrame { constructor(guid, channel) { super(); this.Resource = "/extalife/device/parameters/multisensor/channeloffset"; this.Method = Method.Get; this.Data = new GetChannelParamsRequest(guid, channel); } } class SetChannelOffsetParams extends DataFrame { constructor(data) { super(); this.Resource = "/extalife/device/parameters/multisensor/channeloffset"; this.Method = Method.Put; this.Data = data; } } //# sourceMappingURL=Rcm21VersionedService.js.map