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.
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
}
};
}
About the TBHH100 uplink
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) / 10volts), 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
More device decoders
Building your own LoRaWAN network? Get Yubox Gateway OS free, or learn hands-on in the LoRaWAN Master Training.