UNPKG

homebridge-rinnai-touch-platform

Version:

Homebridge Plugin to control heating/cooling via a Rinnai Touch WiFi Module

255 lines 9.73 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.Status = exports.States = void 0; var States; (function (States) { States[States["HasMultiSetPoint"] = 0] = "HasMultiSetPoint"; States[States["TemperatureUnits"] = 1] = "TemperatureUnits"; States[States["ZoneName"] = 2] = "ZoneName"; States[States["HasHeater"] = 3] = "HasHeater"; States[States["HasCooler"] = 4] = "HasCooler"; States[States["HasEvaporative"] = 5] = "HasEvaporative"; States[States["Day"] = 6] = "Day"; States[States["Time"] = 7] = "Time"; States[States["OperatingMode"] = 8] = "OperatingMode"; States[States["OperatingState"] = 9] = "OperatingState"; States[States["FaultDetected"] = 10] = "FaultDetected"; States[States["FaultApplianceType"] = 11] = "FaultApplianceType"; States[States["FaultUnit"] = 12] = "FaultUnit"; States[States["FaultSeverity"] = 13] = "FaultSeverity"; States[States["FaultCode"] = 14] = "FaultCode"; States[States["SetDay"] = 15] = "SetDay"; States[States["SetTime"] = 16] = "SetTime"; States[States["SaveDayAndTime"] = 17] = "SaveDayAndTime"; States[States["ZoneInstalled"] = 18] = "ZoneInstalled"; States[States["PowerState"] = 19] = "PowerState"; States[States["FanState"] = 20] = "FanState"; States[States["FanSpeed"] = 21] = "FanSpeed"; States[States["PumpState"] = 22] = "PumpState"; States[States["UserEnabled"] = 23] = "UserEnabled"; States[States["ControlMode"] = 24] = "ControlMode"; States[States["SetPointTemperature"] = 25] = "SetPointTemperature"; States[States["ScheduleOverride"] = 26] = "ScheduleOverride"; States[States["CallingForHeat"] = 27] = "CallingForHeat"; States[States["CallingForCool"] = 28] = "CallingForCool"; States[States["CoolerIsBusy"] = 29] = "CoolerIsBusy"; States[States["AutoEnabled"] = 30] = "AutoEnabled"; States[States["MeasuredTemperature"] = 31] = "MeasuredTemperature"; States[States["SchedulePeriod"] = 32] = "SchedulePeriod"; })(States || (exports.States = States = {})); class Status { constructor() { this.modeMap = { H: 'HGOM', C: 'CGOM', E: 'ECOM', R: undefined, N: undefined, }; this._status = {}; } update(status) { var _a; const json = JSON.parse(status); for (let i = 0; i < json.length; i++) { const key = Object.keys(json[i])[0]; this._status[key] = json[i][key]; } // Update mode const mode = this.getState(States.OperatingMode); if (mode !== undefined && mode !== ((_a = this.mode) === null || _a === void 0 ? void 0 : _a.substring(0, 1))) { this._mode = this.modeMap[mode]; } } get mode() { return this._mode; } get modeEvap() { return this.mode === this.modeMap['E']; } get hasMultiSetPoint() { if (this._hasMultiSetPoint === undefined) { this._hasMultiSetPoint = this.getState(States.HasMultiSetPoint) === 'Y'; } return this._hasMultiSetPoint; } hasStates(states) { for (const group1 in states) { for (const group2 in states[group1]) { for (const command in states[group1][group2]) { if (this.getStateByPath({ group1: group1, group2: group2, command: command }) !== states[group1][group2][command]) { return false; } } } } return true; } toString() { return JSON.stringify(this._status); } getStateByPath(path) { var _a, _b; return (_b = (_a = this._status[path.group1]) === null || _a === void 0 ? void 0 : _a[path.group2]) === null || _b === void 0 ? void 0 : _b[path.command]; } getState(state, zone) { const group1 = this.getStateGroup1(state); const group2 = this.getStateGroup2(state, zone); const command = this.getStateCommand(state, zone); if (group1 !== undefined && group2 !== undefined && command !== undefined) { return this.getStateByPath({ group1: group1, group2: group2, command: command }); } } getStateGroup1(state) { switch (state) { case States.HasMultiSetPoint: case States.TemperatureUnits: case States.ZoneName: case States.HasHeater: case States.HasCooler: case States.HasEvaporative: case States.Day: case States.Time: case States.OperatingState: case States.OperatingMode: case States.FaultDetected: case States.FaultApplianceType: case States.FaultUnit: case States.FaultSeverity: case States.FaultCode: case States.SetDay: case States.SetTime: case States.SaveDayAndTime: return 'SYST'; default: return this.mode; } } getStateGroup2(state, zone) { switch (state) { case States.HasMultiSetPoint: case States.TemperatureUnits: case States.ZoneName: return 'CFG'; case States.HasHeater: case States.HasCooler: case States.HasEvaporative: return 'AVM'; case States.Day: case States.Time: case States.OperatingState: case States.OperatingMode: return 'OSS'; case States.FaultDetected: case States.FaultApplianceType: case States.FaultUnit: case States.FaultSeverity: case States.FaultCode: return 'FLT'; case States.SetDay: case States.SetTime: case States.SaveDayAndTime: return 'STM'; case States.ZoneInstalled: return 'CFG'; case States.PowerState: case States.FanState: case States.FanSpeed: return this.modeEvap ? 'GSO' : 'OOP'; case States.PumpState: return this.modeEvap ? 'GSO' : undefined; case States.UserEnabled: return this.modeEvap ? 'GSO' : `Z${zone}O`; case States.ControlMode: case States.SetPointTemperature: return this.modeEvap ? 'GSO' : this.hasMultiSetPoint ? `Z${zone}O` : 'GSO'; case States.ScheduleOverride: return this.modeEvap ? undefined : this.hasMultiSetPoint ? `Z${zone}O` : 'GSO'; case States.CallingForHeat: case States.CallingForCool: case States.CoolerIsBusy: return 'GSS'; case States.AutoEnabled: case States.MeasuredTemperature: return this.modeEvap ? 'GSS' : `Z${zone}S`; case States.SchedulePeriod: return this.modeEvap ? undefined : this.hasMultiSetPoint ? `Z${zone}S` : 'GSS'; } } getStateCommand(state, zone) { switch (state) { case States.HasMultiSetPoint: return 'MTSP'; case States.TemperatureUnits: return 'TU'; case States.ZoneName: return `Z${zone}`; case States.HasHeater: return 'HG'; case States.HasCooler: return 'CG'; case States.HasEvaporative: return 'EC'; case States.OperatingState: return 'ST'; case States.OperatingMode: return 'MD'; case States.FaultDetected: return 'AV'; case States.FaultApplianceType: return 'GP'; case States.FaultUnit: return 'UT'; case States.FaultSeverity: return 'TP'; case States.FaultCode: return 'CD'; case States.Day: case States.SetDay: return 'DY'; case States.Time: case States.SetTime: return 'TM'; case States.SaveDayAndTime: return 'SV'; case States.ZoneInstalled: return `Z${zone}IS`; case States.PowerState: return this.modeEvap ? 'SW' : 'ST'; case States.FanState: return this.modeEvap ? 'FS' : 'ST'; case States.FanSpeed: return 'FL'; case States.PumpState: return this.modeEvap ? 'PS' : undefined; case States.UserEnabled: return this.modeEvap ? `Z${zone}UE` : 'UE'; case States.ControlMode: return 'OP'; case States.SetPointTemperature: return 'SP'; case States.ScheduleOverride: return this.modeEvap ? undefined : 'AO'; case States.CallingForHeat: return 'HC'; case States.CallingForCool: return 'CC'; case States.CoolerIsBusy: return 'BY'; case States.AutoEnabled: return this.modeEvap ? `Z${zone}AE` : 'AE'; case States.MeasuredTemperature: return 'MT'; case States.SchedulePeriod: return this.modeEvap ? undefined : 'AT'; } } } exports.Status = Status; //# sourceMappingURL=Status.js.map