Local Home Assistant integration for Kohler DTV+ shower systems.
This project talks directly to the Kohler controller over your local network and exposes shower controls, outlet controls, diagnostics, and maintenance actions inside Home Assistant.
- Supported hardware: Kohler DTV+
- Transport: local polling over HTTP
- Home Assistant setup: config flow
- HACS compatible: yes
This is an independent community project. It is not affiliated with or supported by Kohler or the Home Assistant project.
- Primary shower control exposed through Home Assistant
- Per-outlet valve entities with friendly names and mapped icons
- Dynamic polling for faster updates while the shower is running
- Active user preset selection
- Light control for installed shower lights
- Steam control when a steam module is installed
- Maintenance buttons for time sync, massage toggle, update checks, and fault resets
- Translated valve settings surfaced as entity attributes
- Diagnostic entities for firmware, connection state, and calibration codes
- Downloadable Home Assistant diagnostics that include controller and Konnect error logs
Depending on installed hardware and configuration, the integration can create:
climateandwater_heatershower control entitiesvalveentities for each mapped shower outletlightentities for installed light modulesswitchentities for steamselectentities for active user presetsbuttonentities for maintenance actionssensorandbinary_sensorentities for diagnostics and device state
- Open HACS.
- Add this repository as a custom repository.
- Choose the
Integrationcategory. - Install
Kohler. - Restart Home Assistant.
- Copy
custom_components/kohlerinto your Home Assistantcustom_componentsdirectory. - Restart Home Assistant.
- In Home Assistant, go to
Settings > Devices & services. - Click
Add Integration. - Search for
Kohler. - Enter the IP address or hostname of your Kohler DTV+ controller.
- Accept the liability terms to finish setup.
The integration exposes the shower as both a climate entity and a water_heater entity for broader dashboard and voice-assistant compatibility.
Each installed outlet is exposed as a Home Assistant valve entity. The integration uses the Kohler outlet mapping information to assign friendlier names and icons when possible, for example:
Shower Head 1Shower Head 2Hand ShowerBody Sprayer
Valve and outlet numbers are still available as attributes for automations and debugging.
The integration surfaces translated valve settings and diagnostics such as:
- Default temperature
- Max temperature
- Cold water timeout
- Auto purge duration
- Max run time
- Connection diagnostics for interfaces, controller, valves, and optional modules
- Six-port calibration codes
- Firmware versions
Home Assistant diagnostics downloads also include:
- Current values payload
- Current system info payload
- Outlet mapping state
- Controller error log
- Konnect error log
This integration can control live water hardware. Before enabling it:
- Make sure you understand which outlets and valves are connected.
- Be careful with automations, voice assistants, and remote access.
- Test changes while you are present.
- Treat this integration as capable of turning on water.
This integration can read device state and send live commands to plumbing hardware, including commands that may start water flow. By installing, configuring, or using this project, you accept responsibility for the risks involved.
The software is provided as-is, without warranty of any kind. The maintainers and contributors are not liable for injury, water damage, property damage, equipment damage, data loss, downtime, or any other loss that may result from using this integration.
By accepting the liability terms during setup, you acknowledge that:
- you understand this integration can control real water hardware
- you are responsible for testing and operating it safely
- you accept the risk of damage or injury that may result from its use
- you will not hold the maintainers or contributors liable for resulting harm or loss
Create a virtual environment and install the test dependencies:
uv venv
source .venv/bin/activate
uv pip install -r requirements.test.txtRun the local checks:
ruff check custom_components tests
ruff format --check custom_components tests
pytest- Confirm the controller is reachable from the Home Assistant host.
- Verify the Kohler web interface responds at the configured IP address.
- Use the integration diagnostics download in Home Assistant for a support bundle.
- Check the exported controller and Konnect error logs when diagnosing device-side faults.
Issues and pull requests are welcome.
If you are adding support for more Kohler hardware, improving diagnostics, or tightening entity behavior, please include:
- a short summary of the hardware or behavior being added
- local test results
- any screenshots or Home Assistant entity examples that help explain the change