ewelink-api
Version:
eWeLink API for Node.js
48 lines (38 loc) • 1.21 kB
JavaScript
const { _get } = require('../helpers/utilities');
const errors = require('../data/errors');
const deviceStatusPayload = require('../payloads/deviceStatus');
module.exports = {
/**
* Get current power state for a specific device
*
* @param deviceId
* @param channel
*
* @returns {Promise<{state: *, status: string}|{msg: string, error: *}>}
*/
async getDevicePowerState(deviceId, channel = 1) {
const status = await this.makeRequest({
uri: '/user/device/status',
qs: deviceStatusPayload({
appid: this.APP_ID,
deviceId,
params: 'switch|switches',
}),
});
const error = _get(status, 'error', false);
if (error) {
const err = error === 400 ? 404 : error;
return { error: err, msg: errors[err] };
}
let state = _get(status, 'params.switch', false);
const switches = _get(status, 'params.switches', false);
const switchesAmount = switches ? switches.length : 1;
if (switchesAmount > 0 && switchesAmount < channel) {
return { error: 404, msg: errors.ch404 };
}
if (switches) {
state = switches[channel - 1].switch;
}
return { status: 'ok', state, channel };
},
};