def parse(self, data):
self.validate_packet(data)<EOL>TOTAL_DIVISOR = <NUM_LIT><EOL>id_ = self.dump_hex(data[<NUM_LIT:4>:<NUM_LIT:6>])<EOL>count = data[<NUM_LIT:6>]<EOL>instant = data[<NUM_LIT:7>:<NUM_LIT:11>]<EOL>total = data[<NUM_LIT:11>:<NUM_LIT:16>]<EOL>current_watts = self._bytes_to_uint_32(instant)<EOL>total_watts = self._bytes_to_uint_48(total) / TOTAL_DIVISOR<EOL>sensor_specific = {<EOL>'<STR_LIT:count>': count,<EOL>'<STR_LIT>': current_watts,<EOL>'<STR_LIT:id>': id_,<EOL>'<STR_LIT>': total_watts<EOL>}<EOL>results = self.parse_header_part(data)<EOL>results.update(RfxPacketUtils.parse_signal_and_battery(data[<NUM_LIT>]))<EOL>results.update(sensor_specific)<EOL>return results<EOL>
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