UNPKG

@pmouli/isy-matter-server

Version:

Service to expose an ISY device as a Matter Border router

308 lines 13.9 kB
import { Converter } from '../../Converters.js'; export var StandardDrivers; (function (StandardDrivers) { StandardDrivers["AccelerationXAxis"] = "ACCX"; StandardDrivers["AccelerationYAxis"] = "ACCY"; StandardDrivers["AccelerationZAxis"] = "ACCZ"; StandardDrivers["AirFlow"] = "AIRFLOW"; StandardDrivers["AirQualityIndex"] = "AQI"; StandardDrivers["Alarm"] = "ALARM"; StandardDrivers["AnglePosition"] = "ANGLPOS"; StandardDrivers["AtmosphericPressure"] = "ATMPRES"; StandardDrivers["AutoDRProcessingState"] = "ADRPST"; StandardDrivers["Awake"] = "AWAKE"; StandardDrivers["BarometricPressure"] = "BARPRES"; StandardDrivers["BatteryLevel"] = "BATLVL"; StandardDrivers["Beep"] = "BEEP"; StandardDrivers["BloodPressureDiastolic"] = "BPDIA"; StandardDrivers["BloodPressureSystolic"] = "BPSYS"; StandardDrivers["BodyMassIndex"] = "BMI"; StandardDrivers["BoneMass"] = "BONEM"; StandardDrivers["Brighten"] = "BRT"; StandardDrivers["CarbonMonoxideLevel"] = "CO"; StandardDrivers["CO2Level"] = "CO2LVL"; StandardDrivers["ControllerAction"] = "CTL"; StandardDrivers["CoolSetpoint"] = "CLISPC"; StandardDrivers["CurrentCurrent"] = "CC"; StandardDrivers["CurrentPowerUsed"] = "CPW"; StandardDrivers["CurrentTemperature"] = "CLITEMP"; StandardDrivers["CurrentVoltage"] = "CV"; StandardDrivers["CustomControl0"] = "GV0"; StandardDrivers["CustomControl1"] = "GV1"; StandardDrivers["CustomControl2"] = "GV2"; StandardDrivers["CustomControl3"] = "GV3"; StandardDrivers["CustomControl4"] = "GV4"; StandardDrivers["CustomControl5"] = "GV5"; StandardDrivers["CustomControl6"] = "GV6"; StandardDrivers["CustomControl7"] = "GV7"; StandardDrivers["CustomControl8"] = "GV8"; StandardDrivers["CustomControl9"] = "GV9"; StandardDrivers["CustomControl10"] = "GV10"; StandardDrivers["CustomControl11"] = "GV11"; StandardDrivers["CustomControl12"] = "GV12"; StandardDrivers["CustomControl13"] = "GV13"; StandardDrivers["CustomControl14"] = "GV14"; StandardDrivers["CustomControl15"] = "GV15"; StandardDrivers["CustomControl16"] = "GV16"; StandardDrivers["CustomControl17"] = "GV17"; StandardDrivers["CustomControl18"] = "GV18"; StandardDrivers["CustomControl19"] = "GV19"; StandardDrivers["CustomControl20"] = "GV20"; StandardDrivers["CustomControl21"] = "GV21"; StandardDrivers["CustomControl22"] = "GV22"; StandardDrivers["CustomControl23"] = "GV23"; StandardDrivers["CustomControl24"] = "GV24"; StandardDrivers["CustomControl25"] = "GV25"; StandardDrivers["CustomControl26"] = "GV26"; StandardDrivers["CustomControl27"] = "GV27"; StandardDrivers["CustomControl28"] = "GV28"; StandardDrivers["CustomControl29"] = "GV29"; StandardDrivers["CustomControl30"] = "GV30"; StandardDrivers["Delay"] = "DELAY"; StandardDrivers["DewPoint"] = "DEWPT"; StandardDrivers["DeviceIsBusy"] = "BUSY"; StandardDrivers["DeviceSecureMode"] = "SECMD"; StandardDrivers["Dim"] = "DIM"; StandardDrivers["Distance"] = "DISTANC"; StandardDrivers["DomesticHotWaterTemperature"] = "WATERTD"; StandardDrivers["Duration"] = "DUR"; StandardDrivers["ElectricalConductivity"] = "ELECCON"; StandardDrivers["ElectricalResistivity"] = "ELECRES"; StandardDrivers["EnergyMode"] = "CLIEMD"; StandardDrivers["Error"] = "ERR"; StandardDrivers["Evapotranspiration"] = "ETO"; StandardDrivers["ExhaustTemperature"] = "TEMPEXH"; StandardDrivers["FadeDown"] = "FDDOWN"; StandardDrivers["FadeStop"] = "FDSTOP"; StandardDrivers["FadeUp"] = "FDUP"; StandardDrivers["FanRunningState"] = "CLIFRS"; StandardDrivers["FanSetting"] = "CLIFS"; StandardDrivers["FanSettingOverride"] = "CLIFSO"; StandardDrivers["FastOff"] = "DFOF"; StandardDrivers["FastOn"] = "DFON"; StandardDrivers["FormaldehydeCH2OLevel"] = "CH20"; StandardDrivers["Frequency"] = "FREQ"; StandardDrivers["GeneralPurposeValue"] = "GPV"; StandardDrivers["GenericVolume"] = "GVOL"; StandardDrivers["Gust"] = "GUST"; StandardDrivers["HeatCoolState"] = "CLIHCS"; StandardDrivers["HeatIndex"] = "HEATIX"; StandardDrivers["HeatSetpoint"] = "CLISPH"; StandardDrivers["Hail"] = "HAIL"; StandardDrivers["HeartRate"] = "HR"; StandardDrivers["Humidity"] = "CLIHUM"; StandardDrivers["Luminance"] = "LUMIN"; StandardDrivers["MethaneDensity"] = "METHANE"; StandardDrivers["Mode"] = "MODE"; StandardDrivers["Moisture"] = "MOIST"; StandardDrivers["MoonPhase"] = "MOON"; StandardDrivers["MuscleMass"] = "MUSCLEM"; StandardDrivers["Off"] = "DOF"; StandardDrivers["Off3KeyPresses"] = "DOF3"; StandardDrivers["Off4KeyPresses"] = "DOF4"; StandardDrivers["Off5KeyPresses"] = "DOF5"; StandardDrivers["On"] = "DON"; StandardDrivers["On3KeyPresses"] = "DON3"; StandardDrivers["On4KeyPresses"] = "DON4"; StandardDrivers["On5KeyPresses"] = "DON5"; StandardDrivers["OnLevel"] = "OL"; StandardDrivers["Ozone"] = "OZONE"; StandardDrivers["ParticulateMatter10"] = "PM10"; StandardDrivers["ParticulateMatter25"] = "PM25"; StandardDrivers["PercentChanceOfPrecipitation"] = "POP"; StandardDrivers["PolarizedPowerUsed"] = "PPW"; StandardDrivers["PowerFactor"] = "PF"; StandardDrivers["Precipitation"] = "PRECIP"; StandardDrivers["PulseCount"] = "PULSCNT"; StandardDrivers["QueryDevice"] = "QUERY"; StandardDrivers["RadonConcentration"] = "RADON"; StandardDrivers["RainRate"] = "RAINRT"; StandardDrivers["RampRate"] = "RR"; StandardDrivers["RelativeModulationLevel"] = "RELMOD"; StandardDrivers["ResetValues"] = "RESET"; StandardDrivers["RespiratoryRate"] = "RESPR"; StandardDrivers["RFSignalStrength"] = "RFSS"; StandardDrivers["Rotation"] = "ROTATE"; StandardDrivers["ScheduleMode"] = "CLISMD"; StandardDrivers["SeismicIntensity"] = "SEISINT"; StandardDrivers["SeismicMagnitude"] = "SEISMAG"; StandardDrivers["SmokeDensity"] = "SMOKED"; StandardDrivers["SoilHumidity"] = "SOILH"; StandardDrivers["SoilReactivity"] = "SOILR"; StandardDrivers["SoilSalinity"] = "SOILS"; StandardDrivers["SoilTemperature"] = "SOILT"; StandardDrivers["SolarRadiation"] = "SOLRAD"; StandardDrivers["SoundVolume"] = "SVOL"; StandardDrivers["Speed"] = "SPEED"; StandardDrivers["Status"] = "ST"; StandardDrivers["TankCapacity"] = "TANKCAP"; StandardDrivers["TheUserAccessCodeThatAssociatedWithTheMostRecentAlarm"] = "USRNUM"; StandardDrivers["ThermostatMode"] = "CLIMD"; StandardDrivers["TideLevel"] = "TIDELVL"; StandardDrivers["Time"] = "TIME"; StandardDrivers["TimeRemaining"] = "TIMEREM"; StandardDrivers["TotalBodyWater"] = "TBW"; StandardDrivers["TotalPowerUsed"] = "TPW"; StandardDrivers["Ultraviolet"] = "UV"; StandardDrivers["ValidUserAccessCodeEntered"] = "UAC"; StandardDrivers["Velocity"] = "SPEED"; StandardDrivers["VOCLevel"] = "VOCLVL"; StandardDrivers["WaterFlow"] = "WATERF"; StandardDrivers["WaterPressure"] = "WATERP"; StandardDrivers["WaterTemperature"] = "WATERT"; StandardDrivers["WaterVolume"] = "WVOL"; StandardDrivers["Weight"] = "WEIGHT"; StandardDrivers["WindChill"] = "WINDCH"; StandardDrivers["WindDirection"] = "WINDDIR"; StandardDrivers["BoilerWaterTemperature"] = "WATERTB"; StandardDrivers["OutsideTemperature"] = "TEMPOUT"; })(StandardDrivers || (StandardDrivers = {})); export function isStateless(x) { return x.stateless; } export function isTrue(x) { return x; } export var Driver; (function (Driver) { Driver.Standard = StandardDrivers; function create(driver, node, initState, driverSignature, stateless, converter) { const query = async () => { return await node.readProperty(driver); }; if (isTrue(stateless)) { return { id: driver, stateless: true, uom: driverSignature.uom, serverUom: initState?.uom != driverSignature.uom ? initState?.uom : undefined, state: { initial: true, value: initState?.value, //TODO include converter formattedValue: initState?.formatted, pendingValue: null }, query, get value() { return query().then((p) => p.value); }, name: initState?.name ?? driverSignature.name ?? driverSignature.label ?? driver, label: driverSignature.label ?? driver }; } var c = { id: driver, initialized: initState && initState?.uom != 0 && initState?.uom != null ? true : false, uom: driverSignature?.uom, serverUom: initState?.uom != driverSignature?.uom ? initState?.uom : undefined, state: { initial: true, value: initState ? converter ? converter.from(initState.value) : driverSignature?.uom && initState?.uom != driverSignature?.uom ? Converter.convert(initState.uom, driverSignature.uom, initState.value) : initState.value : null, rawValue: initState ? initState.value : null, formattedValue: initState ? initState.formatted : null, pendingValue: null }, async query() { let s = await query(); this.state.value = converter ? converter.from(s.value) : this.uom !== s.uom ? Converter.convert(s.value, s.uom, this.uom) : s.value; this.state.formattedValue = s.formatted; this.state.rawValue = s.value; return s; }, apply(state, notify = true) { if (state == null || state.uom == null || state.uom == 0) { return false; } if (state.id == this.id) { let previousRawValue = this.state.rawValue; let previousValue = this.state.value; this.state.rawValue = state.value; this.state.formattedValue = state.formatted; if (previousRawValue == this.state.rawValue) { return false; } if (state.uom != this.uom) { this.serverUom = state.uom; this.state.value = converter ? converter.from(this.state.rawValue) : Converter.convert(state.uom, this.uom, this.state.rawValue); } else if (converter) { this.state.value = converter.from(state.value); } else { this.state.value = state.value; } if (notify) node.events.emit(`${this.name}Changed`, driver, this.state.value, previousValue, this.state.formattedValue); if (!this.initialized) { this.initialized = true; } else { this.state.initial = false; } return true; } }, patch(value, formattedValue, uom, prec, notify = true) { if (uom == 0 || uom == null) { return false; } let previousRawValue = this.state.rawValue; let previousValue = this.state.value; this.state.rawValue = value; this.state.formattedValue = formattedValue; if (uom != this.uom) { this.serverUom == uom; this.state.value = converter ? converter.from(this.state.rawValue) : Converter.convert(uom, this.uom, this.state.rawValue); } else if (converter) { this.state.value = converter.from(value); } else { this.state.value = value; } if (previousRawValue == this.state.rawValue) { return false; } if (notify) node.events.emit(`${this.name}Changed`, driver, this.state.value, previousValue, formattedValue); if (!this.initialized) { this.initialized = true; } else { this.state.initial = false; } return true; }, get value() { return c.state.value; }, name: initState?.name ?? driverSignature?.name ?? driver, label: driverSignature?.label ?? driver }; // node.on('PropertyChanged', (propertyName, newValue, oldValue, formattedValue) => { // if (propertyName === driver) { // c.state.initial = false; // c.state.value = node.convertFrom(newValue,c.uom,driver as D); // c.state.formattedValue = formattedValue; // } //}); return c; } Driver.create = create; })(Driver || (Driver = {})); // type EnumValues2<T extends string> = T extends { [Type in keyof T]: string } ? T extenDrivers[0] | : never; // type EnumValues<T> = T extends { [x in keyof T]: string } // ? T extends string | infer K extends string // ? [keyof T][0] | EnumValues<K> // : never // : T; // type Driver = EnumValues2<Drivers> // let x : Driver = "ACvCX" //# sourceMappingURL=Drivers.js.map