Files
ewelink-api/classes/PowerUsage/DeviceRaw.js
Martin M bff733adc5 Release v1.6.1 (#16)
* refactor temperature/humidity methods

* updating temperature/humidity tests

* version bump

* updated jest config

* fix: when logged user is not device owner, can’t change power state

* fix: when logged user is not device owner, can’t get power usage

* reverted extra code changes

* updated tests
2019-09-29 11:13:43 -03:00

54 lines
1.2 KiB
JavaScript

const WebSocket = require('../WebSocket');
const payloads = require('../../lib/payloads');
const { _get } = require('../../lib/helpers');
class DeviceRaw extends WebSocket {
/**
* Get specific device power usage (raw data)
*
* @param apiUrl
* @param at
* @param apiKey
* @param deviceId
*
* @returns {Promise<{error: string}|{data: {hundredDaysKwhData: *}, status: string}>}
*/
static async get({ apiUrl, at, apiKey, deviceId }) {
const payloadLogin = payloads.wssLoginPayload({ at, apiKey });
const payloadUpdate = payloads.wssUpdatePayload({
apiKey,
deviceId,
params: { hundredDaysKwh: 'get' },
});
const response = await this.WebSocketRequest(apiUrl, [
payloadLogin,
payloadUpdate,
]);
const error = _get(response[1], 'error', false);
if (error === 403) {
return { error, msg: response[1].reason };
}
const hundredDaysKwhData = _get(
response[1],
'config.hundredDaysKwhData',
false
);
if (!hundredDaysKwhData) {
return { error: 'No power usage data found.' };
}
return {
status: 'ok',
data: { hundredDaysKwhData },
};
}
}
module.exports = DeviceRaw;