@caitken-com/node-red-contrib-daikin-api
Version:
Daikin Control API
284 lines (231 loc) • 4.98 kB
JavaScript
/**
* @description Models a user's configuration
* @package DaikinApiNode
* @author Christopher Aitken 2022
* @version 1.0
*/
class DaikinDaikinUserConfig
{
auto_id = null;
dehumidifier_id = null;
fan_id = null;
heat_id = null;
cool_id = null;
dry_id = null;
/**
* @description Constructor
* @constructor
* @param {Object} data JSON object containing the user config
* @memberof DaikinUserConfig
* @returns {void}
*/
constructor(data)
{
if (typeof data !== 'object') data = {};
this.setAutoId(('auto_id' in data) ? data.auto_id : null);
this.setDehumidifierId(('dehumidifier_id' in data) ? data.dehumidifier_id : null);
this.setDryId(('dry_id' in data) ? data.dry_id : null);
this.setFanId(('fan_id' in data) ? data.fan_id : null);
this.setCoolId(('cool_id' in data) ? data.cool_id : null);
this.setHeatId(('heat_id' in data) ? data.heat_id : null);
}
getAutoId()
{
return this.auto_id;
}
/**
* @description Returns the id of the dehumidifier mode
* @memberof DaikinUserConfig
* @returns {number}
*/
getDehumidifierId()
{
return parseInt(this.dehumidifier_id);
}
/**
* @description Returns the id of the fan mode
* @memberof DaikinUserConfig
* @returns {number}
*/
getFanId()
{
return parseInt(this.fan_id);
}
/**
* @description Returns the id of the heat mode
* @memberof DaikinUserConfig
* @returns {number}
*/
getHeatId()
{
return parseInt(this.heat_id);
}
/**
* @description Returns the id of the cool mode
* @memberof DaikinUserConfig
* @returns {number}
*/
getCoolId()
{
return parseInt(this.cool_id);
}
/**
* @description Returns the id of the dry mode
* @memberof DaikinUserConfig
* @returns {number}
*/
getDryId()
{
return parseInt(this.dry_id);
}
/**
* @description Sets the id of the auto mode
* @param {string} id
* @memberof DaikinUserConfig
* @returns {void}
*/
setAutoId(id)
{
this.auto_id = parseInt(id);
}
/**
* @description Sets the id of the dehumidifier mode
* @param {number} id
* @memberof DaikinUserConfig
* @returns {void}
*/
setDehumidifierId(id)
{
this.dehumidifier_id = parseInt(id);
}
/**
* @description Sets the id of the fan mode
* @param {number} id
* @memberof DaikinUserConfig
* @returns {void}
*/
setFanId(id)
{
this.fan_id = parseInt(id);
}
/**
* @description Sets the id of the heat mode
* @param {number} id
* @memberof DaikinUserConfig
* @returns {void}
*/
setHeatId(id)
{
this.heat_id = parseInt(id);
}
/**
* @description Sets the id of the cool mode
* @param {number} id
* @memberof DaikinUserConfig
* @returns {void}
*/
setCoolId(id)
{
this.cool_id = parseInt(id);
}
/**
* @description Sets the id of the dry mode
* @param {number} id
* @memberof DaikinUserConfig
* @returns {void}
*/
setDryId(id)
{
this.dry_id = parseInt(id);
}
/**
* @description Sets user mode
* @memberof DaikinUserConfig
* @param {string} mode Auto|Cool|Heat|Dehumidify|Dry|Fan
* @returns {number}
*/
setMode(mode)
{
mode = DaikinDaikinUserConfig.toTitleCase(mode);
switch (mode)
{
case 'Auto':
return this.getAutoId();
case 'Dehumidifier':
return this.getDehumidifierId();
case 'Fan':
return this.getFanId();
case 'Heat':
return this.getHeatId();
case 'Cool':
return this.getCoolId();
case 'Dry':
return this.getDryId();
default:
return null;
}
}
/**
* @description Returns user mode
* @memberof DaikinUserConfig
* @param {number} mode_id
* @returns {string} Auto|Cool|Heat|Dehumidify|Dry|Fan|Unknown
*/
getMode(mode_id)
{
switch (mode_id)
{
case this.getAutoId():
return 'Auto';
case this.getDehumidifierId():
return 'Dehumidifier';
case this.getFanId():
return 'Fan';
case this.getHeatId():
return 'Heat'
case this.getCoolId():
return 'Cool';
case this.getDryId():
return 'Dry';
default:
return 'Unknown';
}
}
/**
* @description Returns the user config as a JSON object
* @memberof DaikinUserConfig
* @returns {JSON}
*/
toJSON()
{
return {
auto_id: this.auto_id,
dehumidifier_id: this.dehumidifier_id,
fan_id: this.fan_id,
heat_id: this.heat_id,
cool_id: this.cool_id,
dry_id: this.dry_id,
};
}
/**
* @description Returns a new DaikinDaikinUserConfig instance from a JSON object
* @memberof DaikinUserConfig
* @static
* @param {Object} options JSON object containing the user config
* @returns {DaikinUserConfig} Returns a new DaikinDaikinUserConfig instance
*/
static fromJSON(json)
{
return new DaikinDaikinUserConfig(json);
}
/**
* Convert given string into Title Case
* @param {String} str
* @returns {String}
*/
static toTitleCase(str)
{
return str.replace( /\w\S*/g, (txt) => txt.charAt(0).toUpperCase() + txt.substring(1).toLowerCase());
};
}
module.exports = DaikinDaikinUserConfig;