UNPKG

daikin-controller

Version:

Control Daikin Air Conditioner devices using nodejs

242 lines (241 loc) 14.7 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.ControlInfo = void 0; const DaikinDataParser_1 = require("../DaikinDataParser"); const DaikinACTypes_1 = require("../DaikinACTypes"); const AlternativeHumidityTarget = { AUTO: 'AUTO', }; const AlternativeTemperatureTargets = { M: 'M', }; class ControlInfo { static parseResponse(dict, cb) { const result = new ControlInfo(); result.power = DaikinDataParser_1.DaikinDataParser.resolveBool(dict, 'pow', DaikinACTypes_1.Power); result.mode = DaikinDataParser_1.DaikinDataParser.resolveInteger(dict, 'mode', DaikinACTypes_1.Mode); result.targetTemperature = DaikinDataParser_1.DaikinDataParser.resolveFloat(dict, 'stemp', AlternativeTemperatureTargets); result.targetHumidity = DaikinDataParser_1.DaikinDataParser.resolveFloat(dict, 'shum', AlternativeHumidityTarget); result.fanRate = DaikinDataParser_1.DaikinDataParser.resolveInteger(dict, 'f_rate', DaikinACTypes_1.FanRate); result.fanDirection = DaikinDataParser_1.DaikinDataParser.resolveInteger(dict, 'f_dir', DaikinACTypes_1.FanDirection); result.specialMode = DaikinDataParser_1.DaikinDataParser.resolveString(dict, 'adv', DaikinACTypes_1.SpecialModeResponse); result.targetTemperatureMode1 = DaikinDataParser_1.DaikinDataParser.resolveFloat(dict, 'dt1', AlternativeTemperatureTargets); result.targetTemperatureMode2 = DaikinDataParser_1.DaikinDataParser.resolveFloat(dict, 'dt2', AlternativeTemperatureTargets); result.targetTemperatureMode3 = DaikinDataParser_1.DaikinDataParser.resolveFloat(dict, 'dt3', AlternativeTemperatureTargets); result.targetTemperatureMode4 = DaikinDataParser_1.DaikinDataParser.resolveFloat(dict, 'dt4', AlternativeTemperatureTargets); result.targetTemperatureMode5 = DaikinDataParser_1.DaikinDataParser.resolveFloat(dict, 'dt5', AlternativeTemperatureTargets); result.targetTemperatureMode7 = DaikinDataParser_1.DaikinDataParser.resolveFloat(dict, 'dt7', AlternativeTemperatureTargets); result.targetHumidityMode1 = DaikinDataParser_1.DaikinDataParser.resolveFloat(dict, 'dh1', AlternativeHumidityTarget); result.targetHumidityMode2 = DaikinDataParser_1.DaikinDataParser.resolveFloat(dict, 'dh2', AlternativeHumidityTarget); result.targetHumidityMode3 = DaikinDataParser_1.DaikinDataParser.resolveFloat(dict, 'dh3', AlternativeHumidityTarget); result.targetHumidityMode4 = DaikinDataParser_1.DaikinDataParser.resolveFloat(dict, 'dh4', AlternativeHumidityTarget); result.targetHumidityMode5 = DaikinDataParser_1.DaikinDataParser.resolveFloat(dict, 'dh5', AlternativeHumidityTarget); result.targetHumidityMode7 = DaikinDataParser_1.DaikinDataParser.resolveFloat(dict, 'dh7', AlternativeHumidityTarget); result.targetHumidityModeH = DaikinDataParser_1.DaikinDataParser.resolveFloat(dict, 'dhh', AlternativeHumidityTarget); result.fanRateMode1 = DaikinDataParser_1.DaikinDataParser.resolveInteger(dict, 'dfr1', DaikinACTypes_1.FanRate); result.fanRateMode2 = DaikinDataParser_1.DaikinDataParser.resolveInteger(dict, 'dfr2', DaikinACTypes_1.FanRate); result.fanRateMode3 = DaikinDataParser_1.DaikinDataParser.resolveInteger(dict, 'dfr3', DaikinACTypes_1.FanRate); result.fanRateMode4 = DaikinDataParser_1.DaikinDataParser.resolveInteger(dict, 'dfr4', DaikinACTypes_1.FanRate); result.fanRateMode5 = DaikinDataParser_1.DaikinDataParser.resolveInteger(dict, 'dfr5', DaikinACTypes_1.FanRate); result.fanRateMode6 = DaikinDataParser_1.DaikinDataParser.resolveInteger(dict, 'dfr6', DaikinACTypes_1.FanRate); result.fanRateMode7 = DaikinDataParser_1.DaikinDataParser.resolveInteger(dict, 'dfr7', DaikinACTypes_1.FanRate); result.fanRateModeH = DaikinDataParser_1.DaikinDataParser.resolveInteger(dict, 'dfrh', DaikinACTypes_1.FanRate); result.fanDirectionMode1 = DaikinDataParser_1.DaikinDataParser.resolveInteger(dict, 'dfd1', DaikinACTypes_1.FanDirection); result.fanDirectionMode2 = DaikinDataParser_1.DaikinDataParser.resolveInteger(dict, 'dfd2', DaikinACTypes_1.FanDirection); result.fanDirectionMode3 = DaikinDataParser_1.DaikinDataParser.resolveInteger(dict, 'dfd3', DaikinACTypes_1.FanDirection); result.fanDirectionMode4 = DaikinDataParser_1.DaikinDataParser.resolveInteger(dict, 'dfd4', DaikinACTypes_1.FanDirection); result.fanDirectionMode5 = DaikinDataParser_1.DaikinDataParser.resolveInteger(dict, 'dfd5', DaikinACTypes_1.FanDirection); result.fanDirectionMode6 = DaikinDataParser_1.DaikinDataParser.resolveInteger(dict, 'dfd6', DaikinACTypes_1.FanDirection); result.fanDirectionMode7 = DaikinDataParser_1.DaikinDataParser.resolveInteger(dict, 'dfd7', DaikinACTypes_1.FanDirection); result.fanDirectionModeH = DaikinDataParser_1.DaikinDataParser.resolveInteger(dict, 'dfdh', DaikinACTypes_1.FanDirection); result.modeB = DaikinDataParser_1.DaikinDataParser.resolveInteger(dict, 'b_mode', DaikinACTypes_1.Mode); result.targetTemperatureB = DaikinDataParser_1.DaikinDataParser.resolveFloat(dict, 'b_stemp', AlternativeTemperatureTargets); result.targetHumidityB = DaikinDataParser_1.DaikinDataParser.resolveFloat(dict, 'b_shum', AlternativeHumidityTarget); result.fanRateB = DaikinDataParser_1.DaikinDataParser.resolveInteger(dict, 'b_f_rate', DaikinACTypes_1.FanRate); result.fanDirectionB = DaikinDataParser_1.DaikinDataParser.resolveInteger(dict, 'b_f_dir', DaikinACTypes_1.FanDirection); result.error = DaikinDataParser_1.DaikinDataParser.resolveInteger(dict, 'alert'); cb(null, 'OK', result); } overwrite(obj) { if (obj.power !== undefined) this.power = obj.power; if (obj.mode !== undefined) this.mode = obj.mode; if (obj.targetTemperature !== undefined) this.targetTemperature = obj.targetTemperature; if (obj.targetHumidity !== undefined) this.targetHumidity = obj.targetHumidity; if (obj.fanRate !== undefined) this.fanRate = obj.fanRate; if (obj.fanDirection !== undefined) this.fanDirection = obj.fanDirection; if (obj.specialMode !== undefined) this.specialMode = obj.specialMode; if (obj.targetTemperatureMode1 !== undefined) this.targetTemperatureMode1 = obj.targetTemperatureMode1; if (obj.targetTemperatureMode2 !== undefined) this.targetTemperatureMode2 = obj.targetTemperatureMode2; if (obj.targetTemperatureMode3 !== undefined) this.targetTemperatureMode3 = obj.targetTemperatureMode3; if (obj.targetTemperatureMode4 !== undefined) this.targetTemperatureMode4 = obj.targetTemperatureMode4; if (obj.targetTemperatureMode5 !== undefined) this.targetTemperatureMode5 = obj.targetTemperatureMode5; if (obj.targetTemperatureMode7 !== undefined) this.targetTemperatureMode7 = obj.targetTemperatureMode7; if (obj.targetHumidityMode1 !== undefined) this.targetHumidityMode1 = obj.targetHumidityMode1; if (obj.targetHumidityMode2 !== undefined) this.targetHumidityMode2 = obj.targetHumidityMode2; if (obj.targetHumidityMode3 !== undefined) this.targetHumidityMode3 = obj.targetHumidityMode3; if (obj.targetHumidityMode4 !== undefined) this.targetHumidityMode4 = obj.targetHumidityMode4; if (obj.targetHumidityMode5 !== undefined) this.targetHumidityMode5 = obj.targetHumidityMode5; if (obj.targetHumidityMode7 !== undefined) this.targetHumidityMode7 = obj.targetHumidityMode7; if (obj.targetHumidityModeH !== undefined) this.targetHumidityModeH = obj.targetHumidityModeH; if (obj.fanRateMode1 !== undefined) this.fanRateMode1 = obj.fanRateMode1; if (obj.fanRateMode2 !== undefined) this.fanRateMode2 = obj.fanRateMode2; if (obj.fanRateMode3 !== undefined) this.fanRateMode3 = obj.fanRateMode3; if (obj.fanRateMode4 !== undefined) this.fanRateMode4 = obj.fanRateMode4; if (obj.fanRateMode5 !== undefined) this.fanRateMode5 = obj.fanRateMode5; if (obj.fanRateMode6 !== undefined) this.fanRateMode6 = obj.fanRateMode6; if (obj.fanRateMode7 !== undefined) this.fanRateMode7 = obj.fanRateMode7; if (obj.fanRateModeH !== undefined) this.fanRateModeH = obj.fanRateModeH; if (obj.fanDirectionMode1 !== undefined) this.fanDirectionMode1 = obj.fanDirectionMode1; if (obj.fanDirectionMode2 !== undefined) this.fanDirectionMode2 = obj.fanDirectionMode2; if (obj.fanDirectionMode3 !== undefined) this.fanDirectionMode3 = obj.fanDirectionMode3; if (obj.fanDirectionMode4 !== undefined) this.fanDirectionMode4 = obj.fanDirectionMode4; if (obj.fanDirectionMode5 !== undefined) this.fanDirectionMode5 = obj.fanDirectionMode5; if (obj.fanDirectionMode6 !== undefined) this.fanDirectionMode6 = obj.fanDirectionMode6; if (obj.fanDirectionMode7 !== undefined) this.fanDirectionMode7 = obj.fanDirectionMode7; if (obj.fanDirectionModeH !== undefined) this.fanDirectionModeH = obj.fanDirectionModeH; if (obj.modeB !== undefined) this.modeB = obj.modeB; if (obj.targetTemperatureB !== undefined) this.targetTemperatureB = obj.targetTemperatureB; if (obj.targetHumidityB !== undefined) this.targetHumidityB = obj.targetHumidityB; if (obj.fanRateB !== undefined) this.fanRateB = obj.fanRateB; if (obj.fanDirectionB !== undefined) this.fanDirectionB = obj.fanDirectionB; if (obj.error !== undefined) this.error = obj.error; } getRequestDict() { const dict = {}; if (this.power === undefined) throw new Error('Required Field power do not exists'); if (this.mode === undefined) throw new Error('Required Field mode do not exists'); if (this.targetTemperature === undefined) throw new Error('Required Field targetTemperature do not exists'); if (this.targetHumidity === undefined) throw new Error('Required Field targetHumidity do not exists'); dict['pow'] = this.power ? 1 : 0; dict['mode'] = this.mode; dict['stemp'] = typeof this.targetTemperature === 'number' ? (Math.round(this.targetTemperature * 2) / 2).toFixed(1) : this.targetTemperature; dict['shum'] = this.targetHumidity; if (this.fanRate !== undefined) dict['f_rate'] = this.fanRate; if (this.fanDirection !== undefined) dict['f_dir'] = this.fanDirection; if (this.specialMode !== undefined) dict['adv'] = this.specialMode; if (this.targetTemperatureMode1 !== undefined) dict['dt1'] = this.targetTemperatureMode1; if (this.targetTemperatureMode2 !== undefined) dict['dt2'] = this.targetTemperatureMode2; if (this.targetTemperatureMode3 !== undefined) dict['dt3'] = this.targetTemperatureMode3; if (this.targetTemperatureMode4 !== undefined) dict['dt4'] = this.targetTemperatureMode4; if (this.targetTemperatureMode5 !== undefined) dict['dt5'] = this.targetTemperatureMode5; if (this.targetTemperatureMode7 !== undefined) dict['dt7'] = this.targetTemperatureMode7; if (this.targetHumidityMode1 !== undefined) dict['dh1'] = this.targetHumidityMode1; if (this.targetHumidityMode2 !== undefined) dict['dh2'] = this.targetHumidityMode2; if (this.targetHumidityMode3 !== undefined) dict['dh3'] = this.targetHumidityMode3; if (this.targetHumidityMode4 !== undefined) dict['dh4'] = this.targetHumidityMode4; if (this.targetHumidityMode5 !== undefined) dict['dh5'] = this.targetHumidityMode5; if (this.targetHumidityMode7 !== undefined) dict['dh7'] = this.targetHumidityMode7; if (this.targetHumidityModeH !== undefined) dict['dhh'] = this.targetHumidityModeH; if (this.fanRateMode1 !== undefined) dict['dfr1'] = this.fanRateMode1; if (this.fanRateMode2 !== undefined) dict['dfr2'] = this.fanRateMode2; if (this.fanRateMode3 !== undefined) dict['dfr3'] = this.fanRateMode3; if (this.fanRateMode4 !== undefined) dict['dfr4'] = this.fanRateMode4; if (this.fanRateMode5 !== undefined) dict['dfr5'] = this.fanRateMode5; if (this.fanRateMode6 !== undefined) dict['dfr6'] = this.fanRateMode6; if (this.fanRateMode7 !== undefined) dict['dfr7'] = this.fanRateMode7; if (this.fanRateModeH !== undefined) dict['dfrh'] = this.fanRateModeH; if (this.fanDirectionMode1 !== undefined) dict['dfd1'] = this.fanDirectionMode1; if (this.fanDirectionMode2 !== undefined) dict['dfd2'] = this.fanDirectionMode2; if (this.fanDirectionMode3 !== undefined) dict['dfd3'] = this.fanDirectionMode3; if (this.fanDirectionMode4 !== undefined) dict['dfd4'] = this.fanDirectionMode4; if (this.fanDirectionMode5 !== undefined) dict['dfd5'] = this.fanDirectionMode5; if (this.fanDirectionMode6 !== undefined) dict['dfd6'] = this.fanDirectionMode6; if (this.fanDirectionMode7 !== undefined) dict['dfd7'] = this.fanDirectionMode7; if (this.fanDirectionModeH !== undefined) dict['dfdh'] = this.fanDirectionModeH; if (this.modeB !== undefined) dict['b_mode'] = this.modeB; if (this.targetTemperatureB !== undefined) dict['b_stemp'] = this.targetTemperatureB; if (this.targetHumidityB !== undefined) dict['b_shum'] = this.targetHumidityB; if (this.fanRateB !== undefined) dict['b_f_rate'] = this.fanRateB; if (this.fanDirectionB !== undefined) dict['b_f_dir'] = this.fanDirectionB; if (this.error !== undefined) dict['alert'] = this.error; return dict; } } exports.ControlInfo = ControlInfo;