Browan TBHH100 Payload Decoder

Decode Browan TBHH100 (Tabs Healthy Home) LoRaWAN payloads online: status, battery voltage, temperature and humidity with their masks and offsets. Includes payload structure, verified examples and a decodeUplink codec for ChirpStack v4 and The Things Stack.

Type: Indoor temperature & humidity sensor (Tabs family) LoRaWAN class: Class A FPort: 103 Payload: 8 bytes Endianness: Little-endian (CO2/VOC words)

Example payloads

08AB3522FFFFFFFF Status 1 · battery 3.6 V · 21 °C · 34 % (official TTN repository test vector)
08AC4032FFFFFFFF Battery 3.7 V · 32 °C · 50 %
08AB3C7FFFFFFFFF Humidity byte = 127 → invalid reading sentinel

Payload structure

Bytes Field Type / scale Description
0 Status uint8 >> 3 Status code; typically 0x08 → 1.
1 Battery (25 + (b & 0x0F)) ÷ 10 → V Lower nibble only. Example: 0xAB → (25 + 11) / 10 = 3.6 V. Range 2.5–4.0 V.
2 Temperature (b & 0x7F) − 32 → °C Integer resolution with a −32 offset. Example: 0x35 → 53 − 32 = 21 °C. Range −32…95 °C.
3 Humidity b & 0x7F → %RH 127 is a sentinel meaning invalid reading.
4–5 eCO2 uint16 LE → ppm Always 0xFFFF on the TBHH100 (no gas sensor installed — the field is used by the TBHV1x0 variants).
6–7 VOC uint16 LE → ppm Always 0xFFFF on the TBHH100 (no VOC sensor installed).

Ready-to-use codec

ChirpStack v4 and The Things Stack share the same decodeUplink(input) signature: paste this into the device profile codec (ChirpStack) or the payload formatter (TTN).

function decodeUplink(input) {
  var b = input.bytes;
  var humidity = b[3] & 0x7F;
  return {
    data: {
      status: b[0] >> 3,
      battery: (25 + (b[1] & 0x0F)) / 10,
      temperature: (b[2] & 0x7F) - 32,
      humidity: humidity === 127 ? null : humidity
    }
  };
}

The Browan TBHH100 (“Tabs Healthy Home Sensor”) is a compact indoor temperature and humidity sensor. All Browan Tabs devices share a family style: tiny fixed payloads with bit-packed fields, each product on its own FPort — the TBHH100 uses FPort 103.

What makes this payload different from most sensors:

  • Nothing is a plain number. Battery is a nibble plus an offset ((25 + n) / 10 volts), temperature carries a −32 °C offset, and both temperature and humidity mask off their most significant bit.
  • Integer resolution. Temperature comes in whole degrees — if you see decimals in a dashboard they were interpolated downstream, not measured.
  • Humidity 127 = invalid. Check for the sentinel before storing.
  • The 0xFFFFFFFF tail is normal. Bytes 4–7 are the eCO2/VOC fields of the Healthy Home family; the TBHH100 has no gas sensors, so they are always 0xFFFF and should be ignored.

References

  • Official codec: github.com/TheThingsNetwork/lorawan-devices, vendor/browan/tbhh100.js
  • Browan Healthy Home family reference manual — browan.com