docs: def parse(self, data):
          """Parse a 18 bytes packet in the Electricity format and return a
          dictionary containing the data extracted. An example of a return value
          would be:
  
          .. code-block:: python
  
              {
                  'count': 3,
                  'current_watts': 692,
                  'id': "0x2EB2",
                  'packet_length': 17,
                  'packet_type': 90,
                  'packet_type_name': 'Energy usage sensors',
                  'sequence_number': 0,
                  'packet_subtype': 1,
                  'packet_subtype_name': "CM119/160",
                  'total_watts': 920825.1947099693,
                  'signal_level': 9,
                  'battery_level': 6,
              }
  
          :param data: bytearray to be parsed
          :type data: bytearray
  
          :return: Data dictionary containing the parsed values
          :rtype: dict
          """
  
          self.validate_packet(data)
  
          TOTAL_DIVISOR = 223.666
  
          id_ = self.dump_hex(data[4:6])
          count = data[6]
          instant = data[7:11]
          total = data[11:16]
  
          current_watts = self._bytes_to_uint_32(instant)
          total_watts = self._bytes_to_uint_48(total) / TOTAL_DIVISOR
  
          sensor_specific = {
              'count': count,
              'current_watts': current_watts,
              'id': id_,
              'total_watts': total_watts
          }
  
          results = self.parse_header_part(data)
          results.update(RfxPacketUtils.parse_signal_and_battery(data[17]))
          results.update(sensor_specific)
  
          return results