UNPKG

klf-200-api

Version:

This module provides a wrapper to the socket API of a Velux KLF-200 interface. You will need at least firmware 0.2.0.0.71 on your KLF interface for this library to work.

226 lines 12.6 kB
import { ActuatorType } from "./GW_SYSTEMTABLE_DATA.js"; ("use strict"); export var CommandOriginator; (function (CommandOriginator) { CommandOriginator[CommandOriginator["User"] = 1] = "User"; CommandOriginator[CommandOriginator["Rain"] = 2] = "Rain"; CommandOriginator[CommandOriginator["Timer"] = 3] = "Timer"; CommandOriginator[CommandOriginator["UPS"] = 5] = "UPS"; CommandOriginator[CommandOriginator["SAAC"] = 8] = "SAAC"; CommandOriginator[CommandOriginator["Wind"] = 9] = "Wind"; CommandOriginator[CommandOriginator["LoadShedding"] = 11] = "LoadShedding"; CommandOriginator[CommandOriginator["LocalLight"] = 12] = "LocalLight"; CommandOriginator[CommandOriginator["UnspecificEnvironmentSensor"] = 13] = "UnspecificEnvironmentSensor"; CommandOriginator[CommandOriginator["Emergency"] = 255] = "Emergency"; })(CommandOriginator || (CommandOriginator = {})); export var PriorityLevel; (function (PriorityLevel) { PriorityLevel[PriorityLevel["HumanProtection"] = 0] = "HumanProtection"; PriorityLevel[PriorityLevel["EnvironmentProtection"] = 1] = "EnvironmentProtection"; PriorityLevel[PriorityLevel["UserLevel1"] = 2] = "UserLevel1"; PriorityLevel[PriorityLevel["UserLevel2"] = 3] = "UserLevel2"; PriorityLevel[PriorityLevel["ComfortLevel1"] = 4] = "ComfortLevel1"; PriorityLevel[PriorityLevel["ComfortLevel2"] = 5] = "ComfortLevel2"; PriorityLevel[PriorityLevel["ComfortLevel3"] = 6] = "ComfortLevel3"; PriorityLevel[PriorityLevel["ComfortLevel4"] = 7] = "ComfortLevel4"; })(PriorityLevel || (PriorityLevel = {})); export var ParameterActive; (function (ParameterActive) { ParameterActive[ParameterActive["MP"] = 0] = "MP"; ParameterActive[ParameterActive["FP1"] = 1] = "FP1"; ParameterActive[ParameterActive["FP2"] = 2] = "FP2"; ParameterActive[ParameterActive["FP3"] = 3] = "FP3"; ParameterActive[ParameterActive["FP4"] = 4] = "FP4"; ParameterActive[ParameterActive["FP5"] = 5] = "FP5"; ParameterActive[ParameterActive["FP6"] = 6] = "FP6"; ParameterActive[ParameterActive["FP7"] = 7] = "FP7"; ParameterActive[ParameterActive["FP8"] = 8] = "FP8"; ParameterActive[ParameterActive["FP9"] = 9] = "FP9"; ParameterActive[ParameterActive["FP10"] = 10] = "FP10"; ParameterActive[ParameterActive["FP11"] = 11] = "FP11"; ParameterActive[ParameterActive["FP12"] = 12] = "FP12"; ParameterActive[ParameterActive["FP13"] = 13] = "FP13"; ParameterActive[ParameterActive["FP14"] = 14] = "FP14"; ParameterActive[ParameterActive["FP15"] = 15] = "FP15"; ParameterActive[ParameterActive["FP16"] = 16] = "FP16"; })(ParameterActive || (ParameterActive = {})); export var PriorityLevelLock; (function (PriorityLevelLock) { PriorityLevelLock[PriorityLevelLock["DoNotUsePriorityLevelLock"] = 0] = "DoNotUsePriorityLevelLock"; PriorityLevelLock[PriorityLevelLock["UsePriorityLevelLock"] = 1] = "UsePriorityLevelLock"; })(PriorityLevelLock || (PriorityLevelLock = {})); export var PriorityLevelInformation; (function (PriorityLevelInformation) { PriorityLevelInformation[PriorityLevelInformation["Disable"] = 0] = "Disable"; PriorityLevelInformation[PriorityLevelInformation["Enable"] = 1] = "Enable"; PriorityLevelInformation[PriorityLevelInformation["EnableAll"] = 2] = "EnableAll"; PriorityLevelInformation[PriorityLevelInformation["KeepCurrent"] = 3] = "KeepCurrent"; })(PriorityLevelInformation || (PriorityLevelInformation = {})); export class LockTime { static lockTimeValueToLockTime(lockTimeValue) { // Check parameter range if (lockTimeValue < 0 || lockTimeValue > 255) throw new Error("Lock time value out of range."); return lockTimeValue === 255 ? Infinity : lockTimeValue * 30 + 30; } static lockTimeTolockTimeValue(lockTime) { if (lockTime === Infinity) return 255; if (lockTime % 30 !== 0) throw new Error("Lock time must be a multiple of 30."); if (lockTime < 0 || lockTime > 7650) throw new Error("Lock time out of range."); return lockTime / 30 - 1; } static lockTimeValueToLockTimeForLimitation(lockTimeValue) { // Check parameter range if (lockTimeValue < 0 || lockTimeValue > 253) throw new Error("Lock time value out of range."); return lockTimeValue === 253 ? Infinity : lockTimeValue * 30 + 30; } static lockTimeTolockTimeValueForLimitation(lockTime) { if (lockTime === Infinity) return 253; if (lockTime % 30 !== 0) throw new Error("Lock time must be a multiple of 30."); if (lockTime < 0 || lockTime > 7590) throw new Error("Lock time out of range."); return lockTime / 30 - 1; } } export var CommandStatus; (function (CommandStatus) { CommandStatus[CommandStatus["CommandRejected"] = 0] = "CommandRejected"; CommandStatus[CommandStatus["CommandAccepted"] = 1] = "CommandAccepted"; })(CommandStatus || (CommandStatus = {})); export var StatusOwner; (function (StatusOwner) { StatusOwner[StatusOwner["LocalUser"] = 0] = "LocalUser"; StatusOwner[StatusOwner["User"] = 1] = "User"; StatusOwner[StatusOwner["Rain"] = 2] = "Rain"; StatusOwner[StatusOwner["Timer"] = 3] = "Timer"; StatusOwner[StatusOwner["UPS"] = 5] = "UPS"; StatusOwner[StatusOwner["Program"] = 8] = "Program"; StatusOwner[StatusOwner["Wind"] = 9] = "Wind"; StatusOwner[StatusOwner["Myself"] = 10] = "Myself"; StatusOwner[StatusOwner["AutomaticCycle"] = 11] = "AutomaticCycle"; StatusOwner[StatusOwner["Emergency"] = 12] = "Emergency"; StatusOwner[StatusOwner["Unknown"] = 255] = "Unknown"; })(StatusOwner || (StatusOwner = {})); export var RunStatus; (function (RunStatus) { RunStatus[RunStatus["ExecutionCompleted"] = 0] = "ExecutionCompleted"; RunStatus[RunStatus["ExecutionFailed"] = 1] = "ExecutionFailed"; RunStatus[RunStatus["ExecutionActive"] = 2] = "ExecutionActive"; })(RunStatus || (RunStatus = {})); export var StatusReply; (function (StatusReply) { StatusReply[StatusReply["Unknown"] = 0] = "Unknown"; StatusReply[StatusReply["Ok"] = 1] = "Ok"; StatusReply[StatusReply["NoContact"] = 2] = "NoContact"; StatusReply[StatusReply["ManuallyOperated"] = 3] = "ManuallyOperated"; StatusReply[StatusReply["Blocked"] = 4] = "Blocked"; StatusReply[StatusReply["WrongSystemKey"] = 5] = "WrongSystemKey"; StatusReply[StatusReply["PriorityLevelLocked"] = 6] = "PriorityLevelLocked"; StatusReply[StatusReply["ReachedWrongPosition"] = 7] = "ReachedWrongPosition"; StatusReply[StatusReply["ErrorDuringExecution"] = 8] = "ErrorDuringExecution"; StatusReply[StatusReply["NoExecution"] = 9] = "NoExecution"; StatusReply[StatusReply["Calibrating"] = 10] = "Calibrating"; StatusReply[StatusReply["PowerConsumptionTooHigh"] = 11] = "PowerConsumptionTooHigh"; StatusReply[StatusReply["PowerConsumptionTooLow"] = 12] = "PowerConsumptionTooLow"; StatusReply[StatusReply["LockPositionOpen"] = 13] = "LockPositionOpen"; StatusReply[StatusReply["MotionTimeTooLongCommunicationEnded"] = 14] = "MotionTimeTooLongCommunicationEnded"; StatusReply[StatusReply["ThermalProtection"] = 15] = "ThermalProtection"; StatusReply[StatusReply["ProductNotOperational"] = 16] = "ProductNotOperational"; StatusReply[StatusReply["FilterMaintenanceNeeded"] = 17] = "FilterMaintenanceNeeded"; StatusReply[StatusReply["BatteryLevel"] = 18] = "BatteryLevel"; StatusReply[StatusReply["TargetModified"] = 19] = "TargetModified"; StatusReply[StatusReply["ModeNotImplemented"] = 20] = "ModeNotImplemented"; StatusReply[StatusReply["CommandIncompatibleToMovement"] = 21] = "CommandIncompatibleToMovement"; StatusReply[StatusReply["UserAction"] = 22] = "UserAction"; StatusReply[StatusReply["DeadBoltError"] = 23] = "DeadBoltError"; StatusReply[StatusReply["AutomaticCycleEngaged"] = 24] = "AutomaticCycleEngaged"; StatusReply[StatusReply["WrongLoadConnected"] = 25] = "WrongLoadConnected"; StatusReply[StatusReply["ColourNotReachable"] = 26] = "ColourNotReachable"; StatusReply[StatusReply["TargetNotReachable"] = 27] = "TargetNotReachable"; StatusReply[StatusReply["BadIndexReceived"] = 28] = "BadIndexReceived"; StatusReply[StatusReply["CommandOverruled"] = 29] = "CommandOverruled"; StatusReply[StatusReply["NodeWaitingForPower"] = 30] = "NodeWaitingForPower"; StatusReply[StatusReply["InformationCode"] = 223] = "InformationCode"; StatusReply[StatusReply["ParameterLimited"] = 224] = "ParameterLimited"; StatusReply[StatusReply["LimitationByLocalUser"] = 225] = "LimitationByLocalUser"; StatusReply[StatusReply["LimitationByUser"] = 226] = "LimitationByUser"; StatusReply[StatusReply["LimitationByRain"] = 227] = "LimitationByRain"; StatusReply[StatusReply["LimitationByTimer"] = 228] = "LimitationByTimer"; StatusReply[StatusReply["LimitationByUps"] = 230] = "LimitationByUps"; StatusReply[StatusReply["LimitationByUnknownDevice"] = 231] = "LimitationByUnknownDevice"; StatusReply[StatusReply["LimitationBySAAC"] = 234] = "LimitationBySAAC"; StatusReply[StatusReply["LimitationByWind"] = 235] = "LimitationByWind"; StatusReply[StatusReply["LimitationByMyself"] = 236] = "LimitationByMyself"; StatusReply[StatusReply["LimitationByAutomaticCycle"] = 237] = "LimitationByAutomaticCycle"; StatusReply[StatusReply["LimitationByEmergency"] = 238] = "LimitationByEmergency"; })(StatusReply || (StatusReply = {})); export var StatusType; (function (StatusType) { StatusType[StatusType["RequestTargetPosition"] = 0] = "RequestTargetPosition"; StatusType[StatusType["RequestCurrentPosition"] = 1] = "RequestCurrentPosition"; StatusType[StatusType["RequestRemainingTime"] = 2] = "RequestRemainingTime"; StatusType[StatusType["RequestMainInfo"] = 3] = "RequestMainInfo"; })(StatusType || (StatusType = {})); let sessionID = 0; export function getNextSessionID() { return sessionID++ & 0xffff; } export var LimitationType; (function (LimitationType) { LimitationType[LimitationType["MinimumLimitation"] = 0] = "MinimumLimitation"; LimitationType[LimitationType["MaximumLimitation"] = 1] = "MaximumLimitation"; })(LimitationType || (LimitationType = {})); export var ModeStatus; (function (ModeStatus) { ModeStatus[ModeStatus["OK"] = 0] = "OK"; ModeStatus[ModeStatus["CommandRejected"] = 1] = "CommandRejected"; ModeStatus[ModeStatus["UnknownClientID"] = 2] = "UnknownClientID"; ModeStatus[ModeStatus["SessionIDInUse"] = 3] = "SessionIDInUse"; ModeStatus[ModeStatus["Busy"] = 4] = "Busy"; ModeStatus[ModeStatus["IllegalParameterValue"] = 5] = "IllegalParameterValue"; ModeStatus[ModeStatus["Failed"] = 255] = "Failed"; })(ModeStatus || (ModeStatus = {})); export var ActivateProductGroupStatus; (function (ActivateProductGroupStatus) { ActivateProductGroupStatus[ActivateProductGroupStatus["OK"] = 0] = "OK"; ActivateProductGroupStatus[ActivateProductGroupStatus["UnknownProductGroup"] = 1] = "UnknownProductGroup"; ActivateProductGroupStatus[ActivateProductGroupStatus["SessionIDInUse"] = 2] = "SessionIDInUse"; ActivateProductGroupStatus[ActivateProductGroupStatus["Busy"] = 3] = "Busy"; ActivateProductGroupStatus[ActivateProductGroupStatus["WrongGroupType"] = 4] = "WrongGroupType"; ActivateProductGroupStatus[ActivateProductGroupStatus["Failed"] = 5] = "Failed"; ActivateProductGroupStatus[ActivateProductGroupStatus["InvalidParameterUsed"] = 6] = "InvalidParameterUsed"; })(ActivateProductGroupStatus || (ActivateProductGroupStatus = {})); const InverseProductTypes = [ ActuatorType.WindowOpener, ActuatorType.Light, ActuatorType.OnOffSwitch, ActuatorType.VentilationPoint, ActuatorType.ExteriorHeating, ]; export function convertPositionRaw(positionRaw, typeID) { if (positionRaw > 0xc800) { return NaN; // Can't calculate the current position } let result = positionRaw / 0xc800; if (InverseProductTypes.indexOf(typeID) !== -1) { // Percentage has to be calculated reverse result = 1 - result; } return result; } export function convertPosition(position, typeID) { if (position < 0 || position > 1) throw new Error("Position value out of range."); if (InverseProductTypes.indexOf(typeID) !== -1) { // Percentage has to be calculated reverse position = 1 - position; } return Math.round(0xc800 * position); } //# sourceMappingURL=GW_COMMAND.js.map