Rheem Water Softener

Seems this integration is either dead since 2025.06 update or Rheem fully blocked me now, been several weeks since it’s worked. Guess all good things come to an end.

Just updated to 2025.7.0, yet still works on mine. :crossed_fingers:
I did have to completely remove the integration and reinstall it at some point, circa version 2025.5.0.
Perhaps try that.

I was having the same issue there is a newer repository that works listed in this thread GitHub - briis/homeassistant-iqua-softener: Home assistant integration for iQua app supported water softeners the original repository by arturzx stopped working in 2025.6

I was about to buy a Rheem softener, are you saying the briis repository is still working?

Just updated to the briis repository and yes for the moment i’m working again, guess we’ll see how long.

Does anyone know how to get the working briis repository turned into a searchable integration from within home assistant?

Add it as a custom repository in HACS.

So iQua has finally updated their API and phone app.

The new API seems way more robust and is not being rate-limited.

I went on a weekend programming tear and I believe I am at a point to start alpha/beta testing my fork.

This now should support real-time polling via websockets and provides a water shut off switch for those that have it. I am sure there will be a few bugs, but huzzah! My soft water system is finally working as it should in home assistant. Let me know what issues you find.

If you installed the other forks via hacs, you just should just need to update your hacs url to the one provided on my fork. The goal here is eventually to work with @arturzx to merge all this. The underlying iqua-softener python library has been heavily rewritten as well.

Cheers.

@jmacul2 I am trying the integration but after installation I am getting the below error when trying to add the softener via devices

Config flow could not be loaded: 500 Internal Server Error Server got itself in trouble

Edit: Should have posted the logs from HA

Logger: homeassistant.util.package
Source: util/package.py:159
First occurred: 9:54:18 AM (3 occurrences)
Last logged: 9:54:19 AM

Unable to install package iqua-softener>=2.0.0: × No solution found when resolving dependencies: ╰─▶ Because only iqua-softener<=1.0.2 is available and you require iqua-softener>=2.0.0, we can conclude that your requirements are unsatisfiable.
Logger: aiohttp.server
Source: /usr/local/lib/python3.13/site-packages/aiohttp/web_protocol.py:481
First occurred: 9:54:19 AM (1 occurrence)
Last logged: 9:54:19 AM

Error handling request from 192.168.250.51
Traceback (most recent call last):
  File "/usr/local/lib/python3.13/site-packages/aiohttp/web_protocol.py", line 510, in _handle_request
    resp = await request_handler(request)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.13/site-packages/aiohttp/web_app.py", line 569, in _handle
    return await handler(request)
           ^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.13/site-packages/aiohttp/web_middlewares.py", line 117, in impl
    return await handler(request)
           ^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/components/http/security_filter.py", line 92, in security_filter_middleware
    return await handler(request)
           ^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/components/http/forwarded.py", line 87, in forwarded_middleware
    return await handler(request)
           ^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/components/http/request_context.py", line 26, in request_context_middleware
    return await handler(request)
           ^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/components/http/ban.py", line 86, in ban_middleware
    return await handler(request)
           ^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/components/http/auth.py", line 242, in auth_middleware
    return await handler(request)
           ^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/components/http/headers.py", line 41, in headers_middleware
    response = await handler(request)
               ^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/helpers/http.py", line 73, in handle
    result = await handler(request, **request.match_info)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/components/http/decorators.py", line 83, in with_admin
    return await func(self, request, *args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/components/http/data_validator.py", line 74, in wrapper
    return await method(view, request, data, *args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/components/config/config_entries.py", line 188, in post
    return await self._post_impl(request, data)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/components/config/config_entries.py", line 195, in _post_impl
    return await super()._post_impl(request, data)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/helpers/data_entry_flow.py", line 83, in _post_impl
    result = await self._flow_mgr.async_init(
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    ...<2 lines>...
    )
    ^
  File "/usr/src/homeassistant/homeassistant/config_entries.py", line 1464, in async_init
    flow, result = await self._async_init(flow_id, handler, context, data)
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/config_entries.py", line 1500, in _async_init
    flow = await self.async_create_flow(handler, context=context, data=data)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/config_entries.py", line 1722, in async_create_flow
    handler = await _async_get_flow_handler(
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
        self.hass, handler_key, self._hass_config
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    )
    ^
  File "/usr/src/homeassistant/homeassistant/config_entries.py", line 3988, in _async_get_flow_handler
    await _load_integration(hass, domain, hass_config)
  File "/usr/src/homeassistant/homeassistant/config_entries.py", line 3965, in _load_integration
    await async_process_deps_reqs(hass, hass_config, integration)
  File "/usr/src/homeassistant/homeassistant/setup.py", line 584, in async_process_deps_reqs
    await requirements.async_get_integration_with_requirements(
        hass, integration.domain
    )
  File "/usr/src/homeassistant/homeassistant/requirements.py", line 54, in async_get_integration_with_requirements
    return await manager.async_get_integration_with_requirements(domain)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/requirements.py", line 170, in async_get_integration_with_requirements
    await future
  File "/usr/src/homeassistant/homeassistant/requirements.py", line 159, in async_get_integration_with_requirements
    await self._async_process_integration(integration, done)
  File "/usr/src/homeassistant/homeassistant/requirements.py", line 182, in _async_process_integration
    await self.async_process_requirements(
        integration.domain, integration.requirements
    )
  File "/usr/src/homeassistant/homeassistant/requirements.py", line 269, in async_process_requirements
    await self._async_process_requirements(name, missing)
  File "/usr/src/homeassistant/homeassistant/requirements.py", line 307, in _async_process_requirements
    raise RequirementsNotFound(name, list(failures))
homeassistant.requirements.RequirementsNotFound: Requirements for iqua_softener not found: ['iqua-softener>=2.0.0'].

Yes I should of mentioned, until that library gets merged, we need to install that manually. I should probably just add it on the vendor section so people who don’t know python can get it updated. Give me a few minutes. Ill post when i’ve fixed it.

@jmacul2 I’m running HASSIO on Home Assistant hardware so I think it’s going to be dependant on their libraries

Ok If you try to install it now you should not have that library issue.

@jmacul2 Awesome!! The installation now goes without error, but I am not getting any settings/data besides the valve. For the serial, am I to use the dashes and the proceeding RHW####-#####-####?

The error in the logs is that the serial doesn’t exist

The serial is the not that. Its the same as the old app…and now I am realizing the new app doesn’t list it anywhere. Ugh! I guess we need to use the new one, but until I get that changed, you can find your actual serial number using the web app: iQua<device_id>/status

https://api.myiquaapp.com/v1/devices/<device_id>/detail-or-summary

Login via the web app, and capture the device_id in the url and then open the detail-or-summary api call. It will return json with a section called serial_number. The value in that is your actualy serial number.

The DSN number on that portal is the same RHW####-#####-####

I am an idiot and didn’t realize you were looking for the serialized link of the device.

Error I am getting using that link:

Logger: custom_components.iqua_softener.vendor.iqua_softener.iqua
Source: custom_components/iqua_softener/vendor/iqua_softener/iqua.py:441
integration: iQua Softener (documentation, issues)
First occurred: 11:09:04 AM (4 occurrences)
Last logged: 11:10:34 AM

Failed to get WebSocket URI: Device with serial number ‘########-####-####-####-############’ not found

It should start with SL and its 14 characters no dashes

@jmacul2 Found it, wow nothing like the device serial on the softener itself.

YAY, the integration is now working and showing up.

The only issue I am coming across is that the times don’t match. Any way we can get UTC changed to the local timezone and change the field to data last update or something similar?

ok i made updates. you should be able to enter in the device serial number (old way) or the product serial number (in the new app) for setup.

dates and times should be fixed now.

Thanks for keeping this one alive.
I went ahead and deleted the one I had (briis) and added yours fresh. The Product Serial number wouldn’t work for me (just said it couldn’t connect to the server) but the device one did.