Files
ewelink-api/classes/PowerUsage/DeviceRaw.js
Martin M 171faa617b Release v1.4.0 (#11)
* refactor websocket / power usage

* cooldown between api requests during testing

* refactor power state methods

* remove unused code

* cooldown between api requests during testing

* version bump
2019-08-19 23:05:52 -03:00

53 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, 'error', false);
if (error) {
return response;
}
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;