/** {@inheritDoc} */
  @Override
  public List<SerialMessage> executeRefresh(ZWaveThingChannel channel, ZWaveNode node) {
    ZWaveMeterCommandClass commandClass =
        (ZWaveMeterCommandClass)
            node.resolveCommandClass(ZWaveCommandClass.CommandClass.METER, channel.getEndpoint());
    if (commandClass == null) {
      return null;
    }

    logger.debug(
        "NODE {}: Generating poll message for {}, endpoint {}",
        node.getNodeId(),
        commandClass.getCommandClass().getLabel(),
        channel.getEndpoint());
    SerialMessage serialMessage;

    // Don't refresh channels that are the reset button
    if ("true".equalsIgnoreCase(channel.getArguments().get("reset"))) {
      return null;
    }

    String meterScale = channel.getArguments().get("type");
    logger.debug(
        "NODE {}: Generating poll message for {}, endpoint {}",
        node.getNodeId(),
        commandClass.getCommandClass().getLabel(),
        channel.getEndpoint());

    if (meterScale != null) {
      serialMessage =
          node.encapsulate(
              commandClass.getMessage(MeterScale.getMeterScale(meterScale)),
              commandClass,
              channel.getEndpoint());
    } else {
      serialMessage =
          node.encapsulate(commandClass.getValueMessage(), commandClass, channel.getEndpoint());
    }

    List<SerialMessage> response = new ArrayList<SerialMessage>(1);
    response.add(serialMessage);
    return response;
  }
  /** {@inheritDoc} */
  @Override
  public SerialMessage executeRefresh(
      ZWaveNode node,
      ZWaveMeterCommandClass commandClass,
      int endpointId,
      Map<String, String> arguments) {
    String meterScale = arguments.get("meter_scale");

    logger.debug(
        "NODE {}: Generating poll message for {}, endpoint {}",
        node.getNodeId(),
        commandClass.getCommandClass().getLabel(),
        endpointId);

    if (meterScale != null) {
      return node.encapsulate(
          commandClass.getMessage(MeterScale.getMeterScale(meterScale)), commandClass, endpointId);
    } else {
      return node.encapsulate(commandClass.getValueMessage(), commandClass, endpointId);
    }
  }