VelocAI logo Bluetooth Explorer Documentation

Bluetooth GATT Characteristic Reference

Temperature Measurement (0x2A1C)

org.bluetooth.characteristic.temperature_measurement

The flags is the first field sent followed by the Temperature Measurement Value.

Quick Summary

Payload length is profile-defined or variable based on field formats. This page is generated from official GATT XML and presented as implementation-ready guidance.

At a Glance

Key reference details for BLE implementation, interoperability testing, and AI-assisted troubleshooting.

PropertyValue
NameTemperature Measurement
UUID0x2A1C
Typeorg.bluetooth.characteristic.temperature_measurement
XML RootCharacteristic
Source Fileorg.bluetooth.characteristic.temperature_measurement.xml
Field Count5

Field Specification

Parsed field definitions from the source XML value structure.

Field Requirement Format Unit Exponent Notes
FlagsMandatory8bit---
Temperature Measurement Value (Celsius)C1FLOATorg.bluetooth.unit.thermodynamic_temperature.degree_celsius-This field is only included if the flags bit 0 is 0.
Temperature Measurement Value (Fahrenheit)C2FLOATorg.bluetooth.unit.thermodynamic_temperature.degree_fahrenheit-This field is only included if the flags bit 0 is 1.
Time StampC3N/A--If the flags bit 1 is 1 this field is included. If it is 0, this field is not included
Temperature TypeC4N/A--If the flags bit 2 is set to 1 this field is included. If it is 0, this field is not included

Bit Map

Bit-level enumerations extracted from the XML BitField definition.

Field Bit Size Name 0 Means 1 Means
Flags01Temperature Units FlagTemperature Measurement Value in units of CelsiusTemperature Measurement Value in units of Fahrenheit
Flags11Time Stamp FlagTime Stamp field not presentTime Stamp field present
Flags21Temperature Type FlagTemperature Type field not presentTemperature Type field present

Byte Layout and Decode

Payload length is profile-defined or variable based on field formats.

function decodePayload(dataView, offset = 0) {
  // Parse flags (8bit) according to Bluetooth format rules.
  // Parse temperature_measurement_value_celsius (FLOAT) according to Bluetooth format rules.
  // Parse temperature_measurement_value_fahrenheit (FLOAT) according to Bluetooth format rules.
  // Parse time_stamp (N/A) according to Bluetooth format rules.
  // Parse temperature_type (N/A) according to Bluetooth format rules.
  return { flags, temperature_measurement_value_celsius, temperature_measurement_value_fahrenheit, time_stamp, temperature_type };
}

Use Cases and Integration Notes

BLE Telemetry

Map characteristic values into dashboards and alerts for device observability.

Firmware Regression

Compare decoded fields across builds to detect protocol or scaling changes.

App Integration

Build stable parsing paths that convert raw payloads into typed app models.

Implementation Checklist

  • Validate payload length and mandatory fields before decode.
  • Decode with Bluetooth-specified signedness, unit, and exponent handling.
  • Convert units at presentation boundaries to avoid drift in business logic.
  • Persist raw packets and decoded values for reproducible troubleshooting.

FAQ

What is Temperature Measurement in Bluetooth GATT?

Temperature Measurement is defined as a Bluetooth GATT characteristic entry with type org.bluetooth.characteristic.temperature_measurement and UUID 0x2A1C.

What UUID identifies Temperature Measurement?

The UUID for Temperature Measurement is 0x2A1C.

How should I parse Temperature Measurement?

Payload length is profile-defined or variable based on field formats.

Where does this definition come from?

This page is generated from the Bluetooth SIG mirror XML in the oesmith/gatt-xml repository.

How does this page support BLE implementation?

The page combines structured tables, practical Q&A, and JSON-LD metadata to help teams validate integrations and troubleshoot consistently.