text: const WebSocket = require('./WebSocket');
  const wssLoginPayload = require('../payloads/wssLoginPayload');
  const wssUpdatePayload = require('../payloads/wssUpdatePayload');
  const { _get } = require('../helpers/utilities');
  const errors = require('../data/errors');
  
  class DevicePowerUsageRaw 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}|{msg: any, error: *}|{msg: string, error: number}>}
     */
    static async get({ apiUrl, at, apiKey, deviceId }) {
      const payloadLogin = wssLoginPayload({ at, apiKey, appid: this.APP_ID });
  
      const payloadUpdate = wssUpdatePayload({
        apiKey,
        deviceId,
        params: { hundredDaysKwh: 'get' },
      });
  
      const response = await this.WebSocketRequest(apiUrl, [
        payloadLogin,
        payloadUpdate,
      ]);
  
      if (response.length === 1) {
        return { error: errors.noPower };
      }
  
      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: errors.noPower };
      }
  
      return {
        status: 'ok',
        data: { hundredDaysKwhData },
      };
    }
  }
  
  module.exports = DevicePowerUsageRaw;
  