@pmouli/isy-matter-server
Version:
Service to expose an ISY device as a Matter Border router
308 lines • 13.9 kB
JavaScript
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