mirror of
https://github.com/skydiver/ewelink-api.git
synced 2025-12-25 06:49:16 +01:00
* 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
53 lines
1.2 KiB
JavaScript
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;
|