I recently installed a Rheem Preferred water softener, which is wi-fi enabled, and is accessible via this iQua app. This model does not appear to integrate with Home Assistant. What’s the best starting point to creating an integration?
Thanks!
I have this same question! It has some really good data that would be excellent in Home Assistant. Wondering if they have an api?
I installed a Rheem water softener yesterday and I’m exploring this. I’ve reached out to the developers of iQua… I don’t have high hopes but it’s worth a shot.
Blah -
Hi,
We’ve been asked about API a couple of times. It is not currently set up for that. Appreciate your feedback.
Thank you
Thanks for checking! Who did you contact? If more of us nag them, maybe they’ll listen.
This is one of the few smart water softeners on the market. We paid a little extra for the remote shutoff and it was a godsend — I got an alert while on vacation about high water usage, and remotely shut it off. My basement could have been flooded otherwise.
If Rheem doesn’t add an API, and if I find the time for it, I thought about adding my own homegrown solution. The unit has what I think is a hall effect sensor (from what I remember, which was checked a while ago) to monitor the usage of water. I wonder if adding a pi/arduino with a similar sensor in the same area could be calibrated to report the water usage.
I’ve got to say, I haven’t been too impressed with the data on the iQua app. You really can’t get much of a detailed view of usage at all.
For me the iQua app is broken, it doesn’t work for me anymore. The unit will not get past the C-2 part. The C-1 part is the bluetooth setup, and then the C-2 part is where it connects to your house Wifi, and then negotiates with AWS IOT Cloud. It uses TLS certificates during this communication part where its suppose to register itself but fails. I’ve done numerous packet captures and opened up a ticket with Rheems and they said they’re working on it but its been broken for a couple weeks now. I’m thinking a possible class action lawsuit is in order because this capability is what I was looking for especially springing for the auto-water shut-off.
I’m having the same problem. It won’t connect anymore.
Have you found a work around?
Any success with HASS integration?
@markmghali @alexbeatle
I’ve finished integration for iQua supported water softeners. It fetches data from Ecowater company server.
Thanks for doing this! Does their api allow for turning on and off the valve?
@jmacul2 shut off valve? If the application has this function, 99% API have this function too. But I can’t check because my softener doesn’t have shut off valve.
Thank you!
Is it possible to add a sensor for when cleaning is needed?
Is data available offline (local network)?
Created a card inspired by this…
https://community.home-assistant.io/t/new-integration-grunbeck-softliq/157478/44
type: picture-elements
image: /local/water_soft.jpg
elements:
- type: state-label
entity: sensor.water_softener_water_current_flow
style:
top: 10%
left: 70%
color: white
- type: conditional
conditions:
- entity: sensor.water_softener_state
state: Online
elements:
- type: state-label
entity: sensor.water_softener_state
style:
top: 25%
left: 38%
color: green
font-weight: bold
font-size: 150%
- type: conditional
conditions:
- entity: sensor.water_softener_state
state: Offline
elements:
- type: state-label
entity: sensor.water_softener_state
style:
top: 25%
left: 38%
color: red
font-weight: bold
font-size: 150%
- type: state-label
entity: sensor.water_softener_today_water_usage
style:
top: 28%
left: 77%
text-align: left
color: rgb(0,0,0)
font-size: 100%
font-weight: normal
prefix: 'Used today: '
- type: state-label
entity: sensor.water_softener_water_usage_daily_average
style:
top: 34%
left: 77%
text-align: left
color: rgb(0,0,0)
font-size: 100%
font-weight: normal
prefix: 'Daily average: '
- type: state-label
entity: sensor.water_softener_available_water
style:
top: 48.3%
left: 77%
color: rgb(0,0,0)
font-size: 100%
font-weight: normal
prefix: 'Water level: '
- type: state-label
entity: sensor.water_softener_salt_level
style:
top: 63.5%
left: 77%
color: rgb(0,0,0)
font-size: 100%
font-weight: normal
prefix: 'Salt level: '
- type: state-label
entity: sensor.water_softener_out_of_salt_date
style:
top: 67.5%
left: 77%
color: rgb(0,0,0)
font-size: 100%
font-weight: normal
prefix: 'Empty: '
- type: image
style:
top: 48.4%
left: 50%
width: 19%
aspect_ratio: 50%
entity: sensor.water_softener_water_level_image
state_image:
image_0: /local/circ_blue_0.png
image_25: /local/circ_blue_25.png
image_50: /local/circ_blue_50.png
image_75: /local/circ_blue_75.png
image_100: /local/circ_blue_100.png
- type: image
style:
top: 65.8%
left: 50%
width: 19%
aspect_ratio: 50%
entity: sensor.water_softener_salt_level_image
state_image:
image_0: /local/circ_grey_0.png
image_25: /local/circ_grey_25.png
image_50: /local/circ_grey_50.png
image_75: /local/circ_grey_75.png
image_100: /local/circ_grey_100.png
Nice work. Thank you!
Any chance we have answers for these?
I am really excited about this! Thank you arturzk! I’m having some trouble though, and am hoping someone can help out. I followed the instructions on github — copied just custom_components/iqua_softener folder into the config folder (didn’t touch other files at root like hacs.json). I added the iqua integration, and plugged in my user, pass and serial. But the sensors never seem to get created. Checking the logs, I see this entry below. Any ideas?
Error setting up entry iQua RHW4221-xxxxx-xxxx for sensor
Traceback (most recent call last):
File "/usr/src/homeassistant/homeassistant/config_entries.py", line 313, in async_setup
result = await component.async_setup_entry(hass, self) # type: ignore
File "/usr/src/homeassistant/homeassistant/components/sensor/__init__.py", line 204, in async_setup_entry
return await component.async_setup_entry(entry)
File "/usr/src/homeassistant/homeassistant/helpers/entity_component.py", line 147, in async_setup_entry
platform = await async_prepare_setup_platform(
File "/usr/src/homeassistant/homeassistant/setup.py", line 309, in async_prepare_setup_platform
platform = integration.get_platform(domain)
File "/usr/src/homeassistant/homeassistant/loader.py", line 530, in get_platform
cache[full_name] = self._import_platform(platform_name)
File "/usr/src/homeassistant/homeassistant/loader.py", line 535, in _import_platform
return importlib.import_module(f"{self.pkg_path}.{platform_name}")
File "/usr/local/lib/python3.9/importlib/__init__.py", line 127, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
File "<frozen importlib._bootstrap>", line 1030, in _gcd_import
File "<frozen importlib._bootstrap>", line 1007, in _find_and_load
File "<frozen importlib._bootstrap>", line 986, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 680, in _load_unlocked
File "<frozen importlib._bootstrap_external>", line 850, in exec_module
File "<frozen importlib._bootstrap>", line 228, in _call_with_frames_removed
File "/config/custom_components/iqua_softener/sensor.py", line 208, in <module>
class IquaSoftenerSaltLevelSensor(IquaSoftenerSensor):
File "/config/custom_components/iqua_softener/sensor.py", line 213, in IquaSoftenerSaltLevelSensor
def icon(self) -> str | None:
TypeError: unsupported operand type(s) for |: 'type' and 'NoneType'
Worked without issues for me.
Are you sure the username, password and the serial number are correct (inc. correct case)? I couldn’t recall my iQua login info, so had to change password.
Your error says…
Blockquote
Error setting up entry iQua RHW4221-xxxxx-xxxx for sensor…
Blockquote
Maybe you used System Serial, when need to use DSN#?
Great idea. I had actually been using system serial. But I just tried with DSN#, and it still didn’t work. I doublechecked to make sure I had the user and password right as well. Still getting the same kind of log errors.
Tried…
- remove integration and delete the iqua_softener folder
- restart HASS
- create the iqua_softener folder with all files again
- restart HASS
- config the integration with the user info and the dsn#
- restart HASS
- check the entities…
?
I sometimes find that HASS doesn’t like just be given new login info when everything is already integrated. As if you give the component new info, but it retains the old in the background. So usually the above works.
Also, I’m assuming your HASS is up to date.
Post the new logs after this, please.
@timonium this errors comes from using Python 3.10 syntax on older version, you are probably using Python < 3.10? I made a commit with old syntax. Try pull updated version from git.