UNPKG

daikin-controller

Version:

Control Daikin Air Conditioner devices using nodejs

60 lines (59 loc) 2.88 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.DemandControl = void 0; const DaikinDataParser_1 = require("../DaikinDataParser"); class DemandControl { // ret=OK,type=1,en_demand=1,mode=0,max_pow=55,scdl_per_day=4,moc=0,tuc=0,wec=0,thc=0,frc=0,sac=0,suc=0 static parseResponse(dict, cb) { const result = new DemandControl(); result.type = DaikinDataParser_1.DaikinDataParser.resolveInteger(dict, 'type'); result.enabled = DaikinDataParser_1.DaikinDataParser.resolveBool(dict, 'en_demand'); result.mode = DaikinDataParser_1.DaikinDataParser.resolveInteger(dict, 'mode'); result.maxPower = DaikinDataParser_1.DaikinDataParser.resolveInteger(dict, 'max_pow'); cb(null, 'OK', result); } overwrite(obj) { if (obj.type !== undefined) this.type = obj.type; if (obj.enabled !== undefined) this.enabled = obj.enabled; if (obj.mode !== undefined) this.mode = obj.mode; if (obj.maxPower !== undefined) this.maxPower = obj.maxPower; } // According to https://www.akkudoktor.net/forum/postid/190147/ getRequestDict() { if (this.enabled == undefined) throw new Error('Required Field enabled does not exist'); const dict = {}; dict['lpw'] = ''; // Appeared in all examples but doesn't seem to be necessary dict['en_demand'] = this.enabled ? 1 : 0; if (!this.enabled) { // Switch off demand control // http://<DAIKIN-IP>/aircon/set_demand_control?lpw=&en_demand=0 return dict; } // Enable and set demand control // http://<DAIKIN-IP>/aircon/set_demand_control?lpw=&en_demand=1&mode=0&type=1&max_pow=[40-100] // For automatic or manual demand control we need type==1, mode and maxPower if (this.type !== 1) throw new Error('Required Field type != 1. Assume no support for demand control'); if (this.mode === undefined) throw new Error('Required Field mode do not exists'); if (this.maxPower === undefined) throw new Error('Required Field maxPower do not exists'); // For now we do support automatic or manual mode only if (this.mode !== 0 && this.mode !== 2) throw new Error('Currently only automatic(2) or manual mode(0) is supported'); // maxPower must be between 40 and 100 if (this.maxPower < 40 || this.maxPower > 100) throw new Error('maxPower must be between 40 and 100'); dict['type'] = 1; // must be set to 1 dict['mode'] = this.mode; // maxPower must be a multiple of 5; round to the nearest valid value dict['max_pow'] = Math.round(this.maxPower / 5) * 5; return dict; } } exports.DemandControl = DemandControl;