Govee DreamView T1 (H6199) Ble client
This is a simple python client to control the Govee DreamView T1 (H6199) via BLE.
Limitations
The client was tested on a device with 1.10.04 / 3.02.01 FW/HW versions.
Getting current mode would not return currently set color of a static mode and wouldn't distinguish specific music modes and their parameters. The former is caused by device responding with all zeroes, and the latter can be fixed in the future.
There is no support for setting colors for specific segments, nor controling the brightness for individual segments.
Usage
The client uses bleak library and relies on it's BleakClient instance.
Client supports the following actions (from govee_h6199_ble.commands package):
- Get state
- power
- fw version
- hw version
- mac address
- brightness
- current mode
- Turn on/off
- Set brightness
- Set Static color mode
- Set Music color mode
- Energic mode
- Rythm mode
- Spectrum mode
- Rolling mode
- Set Video color mode
- Movie mode
- Game mode
More information can be found by inspecting the govee_h6199_ble.commands package.
Example
import asyncio
from bleak import BleakClient, BleakScanner
from govee_h6199_ble import (
GetFirmwareVersion,
GetHardwareVersion,
GetPowerState,
PowerOff,
PowerOn,
connected,
)
async def main():
# scan and find first usable device
devices = await BleakScanner.discover()
named_devices = ((device, device.name) for device in devices if device.name)
h6199_devices = (
device for device, name in named_devices if name.startswith("Govee_H6199")
)
if first_device := next(h6199_devices, None):
# connect
async with BleakClient(first_device) as client:
async with connected(client) as device:
power = await device.send_command(GetPowerState())
if power:
print("power on")
# get firmware version and turn device off
fw_version, hw_version, _ = await device.send_commands(
[GetFirmwareVersion(), GetHardwareVersion(), PowerOff()]
)
print(fw_version, hw_version)
else:
# turn on
await device.send_command(PowerOn())
if __name__ == "__main__":
asyncio.run(main())
Exchanging raw frames
You can also exchange raw frames with the device using:
async def exchange_frame(
self,
frame: bytes,
timeouts: CommandTimeouts,
) -> bytes:...
and inspect responses manually.
Be aware, if the command is not implemented on the device this call command will raise
asyncio.TimeoutError, since response will not be received.
Timeouts
By default, the client uses the following timeouts:
- command send timeout: None
- response receive timeout: 5 seconds
You can customize these timeouts by passing a CommandTimeouts instance to the send_command(s) calls.
Credits
Govee for the device and the app.
https://github.com/Obi2000/Govee-H6199-Reverse-Engineering for the details of the protocol.
Contributing
Both bug reports and pull requests are appreciated.
Release files for govee-h6199-ble 1.0.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| govee_h6199_ble-1.0.0.tar.gz | 7.0 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| govee_h6199_ble-1.0.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 16.9 kB
Release files / govee_h6199_ble-1.0.0.tar.gz
| Download URL | govee_h6199_ble-1.0.0.tar.gz |
|---|---|
| Size | 7.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
62b41bd6445ba256f284190fd38a9ce8890d2f6aeac95137c4da7523f8f86178
|
|
BLAKE2b-256 checksum How to use checksums |
6a549f0de7cfc3bf083305bcb24f909966264799b7244b1dd0e4c4bcb49fadbc
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
poetry/2.3.1 CPython/3.13.2 Darwin/24.6.0
|
Release files / govee_h6199_ble-1.0.0-py3-none-any.whl
| Download URL | govee_h6199_ble-1.0.0-py3-none-any.whl |
|---|---|
| Size | 9.9 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
952b91b3171219fa7aabd3a21642dd1f1b016a055457fd5caa9e3dd333ceff7a
|
|
BLAKE2b-256 checksum How to use checksums |
500875630c2c9e1a7a81f0654468c6de5809d7c3f6e255553555a89ab33add00
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
poetry/2.3.1 CPython/3.13.2 Darwin/24.6.0
|