I’ve just released a Home Assistant integration for Duravit SensoWash smart toilets. If you’ve got one of these collecting dust because the app is rubbish, now you can control it properly.
Connects over Bluetooth LE and exposes the full feature set as HA entities:
Buttons — rear wash, lady wash, flush, eco flush, dryer, lid open/close, nozzle cleaning, descaling, drain tank, factory reset
Selects — water flow/temperature/position, seat heating, dryer settings, water hardness, night light (off/on/auto), proximity sensitivity, deodorization delay
Switches — auto flush, pre-flush, deodorization, UVC light, mute, auto seat
Sensors — seat temperature, error status, descaling status and time remaining
Occupancy sensor — know when the toilet is in use (serial-protocol models)
Scheduling services — program seat heating schedules and UVC disinfection times from automations
You don’t need your HA server to be near the toilet — it works with ESPHome Bluetooth proxies. A cheap ESP32 board next to the bathroom is all you need.
Supported models
Model
Protocol
SensoWash Classic, U, Starck F Pro, i Pro
GATT
SensoWash Starck F Plus/Lite, i Plus/Lite
Serial (requires one-time pairing)
DuraSystem
GATT
Older models (advertised as DURAVIT_BT) use a proprietary Bluetooth serial protocol. The integration handles pairing automatically — when prompted, press the Bluetooth button on the toilet and it pairs itself.
Installation
Add https://github.com/beezly/ha-sensowash as a custom HACS repository
Install and restart HA
HA will auto-discover your toilet if it’s in BLE range (or proxy range)
Happy to answer questions. Would love to hear if anyone gets it working on models I haven’t tested — I only have a Starck F Lite to hand.
I also own a device like that and wrote a module for my old automation system.
Unfortunately, I haven’t been able to do it yet because I lack the necessary background knowledge about Home Assistant programming (and I’ve also been short on time). So thank you so much in advance for your integration.
I installed it right away, and so far it’s working great. Now I can finally turn off the seat heaters again when we’re away
Love this! I have been looking to control my Sensowash for some time and suddenly i found this. For instance on the remote i believe someone in the family unintentionally sometimes press the heating of the seat to off → horror when you realize that you are sitting down on a cold seat
I also have the odour fan that i want to control a bit different.
Same goes for the ambient lighting.
Few automations later and my life is now perfect
Setup: HA on Synology NAS (no native BT) + ESP32 Bluetooth proxy via ESPHome.
Three DuraSystem devices are discovered correctly, but all fail with: Bluetooth GATT Error handle=48 error=15 description=Insufficient encryption
After reading the protocol docs, I understand the GATT connection flow requires a createBond() step before MTU negotiation. I believe ESPHome BT proxies cannot handle BLE bonding/pairing at the host level — they only relay basic BLE data.
Is there any workaround for HA instances without native Bluetooth? Could the bonding step be handled differently?
Note: Starck F Plus (Serial protocol) works perfectly via the same proxy.
What exactly do you mean by that? Do you think the toilet’s functionality will be affected or could actually be damaged? I’m still using the integration, but I’m currently experiencing a hardware defect because the shower function isn’t working anymore. I think it’s more of a coincidence, but your statement scared me