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;