def parse(self, data):
        """Parse a 9 bytes packet in the Temperature format and return a
        dictionary containing the data extracted. An example of a return value
        would be:

        .. code-block:: python

            {
                'id': "0x2EB2",
                'packet_length': 8,
                'packet_type': 80,
                'packet_type_name': 'Temperature sensors',
                'sequence_number': 0,
                'packet_subtype': 1,
                'packet_subtype_name': "THR128/138, THC138",
                'temperature': 21.3,
                '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)

        id_ = self.dump_hex(data[4:6])
        # channel = data[5] TBC

        temperature = ((data[6] & 0x7f) * 256 + data[7]) / 10
        signbit = data[6] & 0x80
        if signbit != 0:
            temperature = -temperature

        sensor_specific = {
            'id': id_,
            # 'channel': channel, TBC
            'temperature': temperature
        }

        results = self.parse_header_part(data)
        results.update(RfxPacketUtils.parse_signal_and_battery(data[8]))
        results.update(sensor_specific)

        return results