This is deprecated.
The work done here was continued as a Home Assistant Component and ble_monitor
- Python debugger - Display values from GoveeAdvertisement parser found in Home Assistant Component, works with multiple Govee devices.
Orinignal proof of concept Bluetooth broadcast decoder from Govee H5075 Thermometer Hygrometer Versions:
The Govee H5075 Thermometer Hygrometer broadcasts the current temperature and humidity through Bluetooth low energy (BLE) advertisement data.
From the socket data provided by python-bleason debug logging and advlib's decoding information
| Octets | Value if static | Description |
|---|---|---|
| 1-3 | Header? | |
| 4 - 9 | ZZ YY XX 38 c1 a4 |
MAC Address in reverse order. Example a4:c1:38:XX:YY:ZZ |
| 10 | 1f |
? |
| 11 | 0d |
Length of local name |
| 12 | 09 |
Complete Local Name |
| 13 - 20 | 47 56 48 35 30 37 35 5f |
First part of device name "GVH5075_" |
| 21 - 24 | Last four hex values (last two octets) of the MAC address spell out in ASCII. |
| Octets | Value if static | Description |
|---|---|---|
| 25 | 03 |
Length of payload |
| 26 | 03 |
flag for "Complete List of 16-bit UUIDs" |
| 27 -28 | 88 ec |
Manufacturer Key |
| 29 -31 | 02 01 05 |
GAP list of 32-bit UUIDs but it is empty(?) |
| 32 | Length of payload. For this instance it is 09 |
|
| 33 | ff |
Manufacture data flag |
| 34 -35 | 88 ec |
Manufacturer Key |
| 36 | 00 |
padding? |
| 37 - 39 | Encoded temperature and humidity | |
| 40 | Battery remaining percentage | |
| 41 | 00 |
padding ? |
The three octets are concatenated together and parsed into an integer
Example:
03 21 5d -> 03215d --parse integer--> 205149
Once we have this integer, for the temperature in Celsius, divide by 10000
205149 / 10000 = 20.5149°C
Humidity is modulus 1000 divided by 10
205149 % 1000 = 149
149 / 10 = 14.9% humidity
See issue #2
There is a second advertisement signal contains the ManufacturerData Key 0x004c and payload data INTELLI_ROCKS, (Govee is the brand name, the manufacture is "Shenzhen Intellirocks Tech. Co., Ltd."). Based on the finding in neilsheps/GoveeTemperatureAndHumidity, this relevant to the Apple iOS application. This however provides the RSSI for the device.
This is only a proof of concept for decoding BLE advertisements and do not plan on continuing on to load historical data. Thes are done through commands sent to GATT services.
- [Datasheet for Telink BLE SoC TLSR8253F512](DS_TLSR8253-E_Datasheet for Telink BLE SoC TLSR8253.pdf)
- FCC.io public device data