Rheem Hotwater heater, econet?

Hi. I keep getting this error:

Invalid operation mode mapping. Electric-Only doesn’t map. Please report this.

12:07 PM components/water_heater/econet.py (ERROR) - message first occured at 9:35 AM and shows up 302 times

Invalid operation mode mapping. Heat Pump Only doesn’t map. Please report this.

12:07 PM components/water_heater/econet.py (ERROR) - message first occured at 9:35 AM and shows up 302 times

I am happy to help any way I can.

Just noticed someone else reported this on github. https://github.com/home-assistant/home-assistant/issues/19226 I commented there asking for some more information.

I know what the problem is, but not sure how to fix it since their API isn’t documented.

Anyone else receiving errors such as this? I started receiving this a few weeks back and it requires a restart in order for me to clear it.

2019-03-20 19:06:54 ERROR (MainThread) [homeassistant.helpers.entity] Update for water_heater.heat_pump_water_heater_gen_4 fails Traceback (most recent call last):
File “/usr/local/lib/python3.7/site-packages/homeassistant/helpers/entity.py”, line 221, in async_update_ha_state await self.async_device_update()
File “/usr/local/lib/python3.7/site-packages/homeassistant/helpers/entity.py”, line 349, in async_device_update await self.hass.async_add_executor_job(self.update)
File “/usr/local/lib/python3.7/concurrent/futures/thread.py”, line 57, in run result = self.fn(*self.args, **self.kwargs) File “/usr/local/lib/python3.7/site-packages/homeassistant/components/water_heater/econet.py”, line 202, in update self.water_heater.update_state() File “/usr/local/lib/python3.7/site-packages/pyeconet/equipment/water_heater.py”, line 112, in update_state vacations = self.api_interface.get_vacations()
File “/usr/local/lib/python3.7/site-packages/pyeconet/api.py”, line 123, in get_vacations return arequest.json() File “/usr/local/lib/python3.7/site-packages/requests/models.py”, line 897, in json return complexjson.loads(self.text, **kwargs)
File “/usr/local/lib/python3.7/site-packages/simplejson/init.py”, line 518, in loads return _default_decoder.decode(s) File “/usr/local/lib/python3.7/site-packages/simplejson/decoder.py”, line 370, in decode obj, end = self.raw_decode(s)
File “/usr/local/lib/python3.7/site-packages/simplejson/decoder.py”, line 400, in raw_decode return self.scan_once(s, idx=_w(s, idx).end()) simplejson.errors.JSONDecodeError: Expecting value: line 1 column 1 (char 0) 2019-03-20 19:08:01 WARNING (MainThread) [homeassistant.helpers.entity] Update of water_heater.heat_pump_water_heater_gen_4 is taking over 10 seconds 2019-03-20 19:30:23 WARNING (MainThread) [homeassistant.helpers.entity] Update of water_heater.heat_pump_water_heater_gen_4 is taking over 10 seconds 2019-03-20 20:00:52 WARNING (MainThread) [homeassistant.helpers.entity] Update of water_heater.heat_pump_water_heater_gen_4 is taking over 10 seconds 2019-03-20 20:31:22 WARNING (MainThread) [homeassistant.helpers.entity] Update of water_heater.heat_pump_water_heater_gen_4 is taking over 10 seconds 2019-03-20 22:00:10 WARNING (MainThread) [homeassistant.helpers.entity] Update of water_heater.heat_pump_water_heater_gen_4 is taking over 10 seconds 2019-03-20 23:01:44 WARNING (MainThread) [homeassistant.helpers.entity] Update of water_heater.heat_pump_water_heater_gen_4 is taking over 10 seconds

Can you try this fix https://drive.google.com/file/d/10DXpUNsvg4u_H2szsZk0oZ77Q-U2d05x/view?usp=sharing

unzip this in your ha config directory (unless you already have a custom components directory) and restart.

When I tried copying the custom_components directory into the same folder as my configuration.yaml. I received the following errors.

2019-03-24 20:29:48 WARNING (MainThread) [homeassistant.loader] You are using a custom component for water_heater which has not been tested by Home Assistant. This component might cause stability problems, be sure to disable it if you do experience issues with Home Assistant. 2019-03-24 20:29:53 WARNING (MainThread) [homeassistant.loader] You are using a custom component for water_heater.econet which has not been tested by Home Assistant. This component might cause stability problems, be sure to disable it if you do experience issues with Home Assistant. 2019-03-24 20:29:53 WARNING (MainThread) [homeassistant.loader] Integrations need to be in their own folder. Change water_heater/econet.py to econet/water_heater.py. This will stop working soon. 2019-03-24 20:29:56 WARNING (MainThread) [homeassistant.loader] Integrations need to be in their own folder. Change water_heater/econet.py to econet/water_heater.py. This will stop working soon. 2019-03-24 20:30:02 WARNING (MainThread) [homeassistant.components.upnp] Wanted UPnP/IGD device with UDN “uuid:f1af61a0-664c-42cc-ac96-00ed4b7ed8dc” not found, aborting 2019-03-24 20:30:44 ERROR (SyncWorker_1) [pyeconet.api] Authentication request failed, please check credintials. 500 2019-03-24 20:30:47 ERROR (SyncWorker_1) [pyeconet.api] Token expired. 2019-03-24 20:30:47 ERROR (MainThread) [custom_components.water_heater] Error while setting up platform econet Traceback (most recent call last): File “/usr/local/lib/python3.7/site-packages/homeassistant/helpers/entity_platform.py”, line 128, in _async_setup_platform SLOW_SETUP_MAX_WAIT, loop=hass.loop) File “/usr/local/lib/python3.7/asyncio/tasks.py”, line 416, in wait_for return fut.result() File “/usr/local/lib/python3.7/concurrent/futures/thread.py”, line 57, in run result = self.fn(*self.args, **self.kwargs) File “/config/custom_components/water_heater/econet.py”, line 75, in setup_platform water_heaters = econet.get_water_heaters() File “/usr/local/lib/python3.7/site-packages/pyeconet/api.py”, line 190, in get_water_heaters for location in self.locations: TypeError: ‘bool’ object is not iterable

I ended up copying the water_heater folder in and I don’t receive the same errors, but I don’t know it’s actually loaded, or if it’s just using the build-in econet module?

Thanks for the assistant!

Okay the first time it was running the correct code that I sent, it just has an issue. I will try to take a look when I get home today. For some reason the vacation call is failing for you and I am not returning the correct value which is why are are seeing the crash. I’ll send you a new file to test out.

Okay, great! Thanks for the update. I had a feeling that was the case after thinking about it for a bit. My python skills aren’t cut out for trying to begin to trace the issue. Thanks again!

Okay I made some updates. Put the custom components folder back and edit the econet.py file inside and update the library version on line ~16 from 0.1.0b2to 0.1.0b3 and give that a shot.

Great! That seems to be working a lot better. The only Warnings I receive are the ones below:

2019-03-25 18:21:17 WARNING (MainThread) [homeassistant.loader] You are using a custom component for water_heater which has not been tested by Home Assistant. This component might cause stability problems, be sure to disable it if you do experience issues with Home Assistant. 

2019-03-25 18:21:24 WARNING (MainThread) [homeassistant.loader] You are using a custom component for water_heater.econet which has not been tested by Home Assistant. This component might cause stability problems, be sure to disable it if you do experience issues with Home Assistant. 

2019-03-25 18:21:24 WARNING (MainThread) [homeassistant.loader] Integrations need to be in their own folder. Change water_heater/econet.py to econet/water_heater.py. This will stop working soon. 

2019-03-25 18:21:24 WARNING (MainThread) [homeassistant.loader] Integrations need to be in their own folder. Change water_heater/econet.py to econet/water_heater.py. This will stop working soon. 

2019-03-25 18:21:29 WARNING (MainThread) [homeassistant.components.upnp] Wanted UPnP/IGD device with UDN "uuid:f1af61a0-664c-42cc-ac96-00ed4b7ed8dc" not found, aborting 

2019-03-25 18:22:19 WARNING (MainThread) [homeassistant.loader] Integrations need to be in their own folder. Change water_heater/econet.py to econet/water_heater.py. This will stop working soon.

I’ll keep an eye on how it functions and report back after a few days to let you know if the initial error returns. THANK YOU! I have several automations that this was a part of and I was afraid that I would have to figure out an alternative to get this working again!

No problem. Yeah just let me know how it runs after a few days and I will get a pull request opened to get the library updated in HA officially.

Looks like it ran into another snag with the code. See the log below:

2019-03-25 19:03:02 WARNING (MainThread) [homeassistant.helpers.entity] Update of water_heater.heat_pump_water_heater_gen_4 is taking over 10 seconds 

2019-03-25 19:03:14 ERROR (MainThread) [homeassistant.helpers.entity] pdate for water_heater.heat_pump_water_heater_gen_4 fails 

Traceback (most recent call last): 

File "/config/deps/lib/python3.7/site-packages/pyeconet/api.py", line 88, in get_usage return arequest.json() 

File "/usr/local/lib/python3.7/site-packages/requests/models.py", line 897, in json return complexjson.loads(self.text, **kwargs) 

File "/usr/local/lib/python3.7/site-packages/simplejson/__init__.py", line 518, in loads return _default_decoder.decode(s) 

File "/usr/local/lib/python3.7/site-packages/simplejson/decoder.py", line 370, in decode obj, end = self.raw_decode(s) 

File "/usr/local/lib/python3.7/site-packages/simplejson/decoder.py", line 400, in raw_decode return self.scan_once(s, idx=_w(s, idx).end()) simplejson.errors.JSONDecodeError: Expecting value: line 1 column 1 (char 0) During handling of the above exception, another exception occurred: Traceback (most recent call last): 

File "/usr/local/lib/python3.7/site-packages/homeassistant/helpers/entity.py", line 221, in async_update_ha_state await self.async_device_update() 

File "/usr/local/lib/python3.7/site-packages/homeassistant/helpers/entity.py", line 349, in async_device_update await self.hass.async_add_executor_job(self.update) File "/usr/local/lib/python3.7/concurrent/futures/thread.py", line 57, in run result = self.fn(*self.args, **self.kwargs) File "/config/custom_components/water_heater/econet.py", line 210, in update self.water_heater.update_state() File "/config/deps/lib/python3.7/site-packages/pyeconet/equipment/water_heater.py", line 117, in update_state usage = self.api_interface.get_usage(self.id) File "/config/deps/lib/python3.7/site-packages/pyeconet/api.py", line 91, in get_usage _LOGGER.debug(str(response)) NameError: name 'response' is not defined 2019-03-25 19:03:53 ERROR (SyncWorker_10) [pyeconet.api] Failed to decode response 2019-03-25 19:03:53 ERROR (MainThread) [homeassistant.helpers.entity] Update for water_heater.heat_pump_water_heater_gen_4 fails Traceback (most recent call last): File "/config/deps/lib/python3.7/site-packages/pyeconet/api.py", line 106, in get_device return arequest.json() File "/usr/local/lib/python3.7/site-packages/requests/models.py", line 897, in json return complexjson.loads(self.text, **kwargs) File "/usr/local/lib/python3.7/site-packages/simplejson/__init__.py", line 518, in loads return _default_decoder.decode(s) File "/usr/local/lib/python3.7/site-packages/simplejson/decoder.py", line 370, in decode obj, end = self.raw_decode(s) File "/usr/local/lib/python3.7/site-packages/simplejson/decoder.py", line 400, in raw_decode return self.scan_once(s, idx=_w(s, idx).end()) simplejson.errors.JSONDecodeError: Expecting value: line 1 column 1 (char 0) During handling of the above exception, another exception occurred: Traceback (most recent call last): File "/usr/local/lib/python3.7/site-packages/homeassistant/helpers/entity.py", line 221, in async_update_ha_state await self.async_device_update() File "/usr/local/lib/python3.7/site-packages/homeassistant/helpers/entity.py", line 349, in async_device_update await self.hass.async_add_executor_job(self.update) File "/usr/local/lib/python3.7/concurrent/futures/thread.py", line 57, in run result = self.fn(*self.args, **self.kwargs) File "/config/custom_components/water_heater/econet.py", line 210, in update self.water_heater.update_state() File "/config/deps/lib/python3.7/site-packages/pyeconet/equipment/water_heater.py", line 112, in update_state device_state = self.api_interface.get_device(self.id) File "/config/deps/lib/python3.7/site-packages/pyeconet/api.py", line 109, in get_device _LOGGER.debug(str(response)) NameError: name 'response' is not defined

Looks like the API didn’t respond like it should have. Probably a fluke. I will push a new version for you to test and handle this sort of thing more gracefully.

EDIT: Done. Update your version to 0.1.0b4

Okay, loaded 0.1.0b4 and will report back!

Looks like we’re still getting some errors. Prior to a few weeks ago I was getting the update is taking longer than 10 second error, but it would always clear itself and it wouldn’t require a reset for the entity to reset where I could once again change the modes. Unsure if that helps at all, or not.

Also, as some additional background, I’m running 0.88.2 in a docker container. Would that have any effect?

2019-03-27 08:15:12 WARNING (MainThread) [homeassistant.helpers.entity] Update of water_heater.heat_pump_water_heater_gen_4 is taking over 10 seconds
2019-03-27 08:30:27 WARNING (MainThread) [homeassistant.helpers.entity] Update of water_heater.heat_pump_water_heater_gen_4 is taking over 10 seconds
2019-03-27 08:45:42 WARNING (MainThread) [homeassistant.helpers.entity] Update of water_heater.heat_pump_water_heater_gen_4 is taking over 10 seconds
2019-03-27 09:31:23 WARNING (MainThread) [homeassistant.helpers.entity] Update of water_heater.heat_pump_water_heater_gen_4 is taking over 10 seconds
2019-03-27 09:46:37 WARNING (MainThread) [homeassistant.helpers.entity] Update of water_heater.heat_pump_water_heater_gen_4 is taking over 10 seconds
2019-03-27 10:01:44 ERROR (SyncWorker_7) [pyeconet.api] Failed to decode response
2019-03-27 10:01:45 ERROR (SyncWorker_7) [pyeconet.api] Failed to decode response
2019-03-27 10:27:11 ERROR (MainThread) [homeassistant.helpers.entity] Update for water_heater.heat_pump_water_heater_gen_4 fails
Traceback (most recent call last):
  File "/usr/local/lib/python3.7/site-packages/urllib3/connection.py", line 159, in _new_conn
    (self._dns_host, self.port), self.timeout, **extra_kw)
  File "/usr/local/lib/python3.7/site-packages/urllib3/util/connection.py", line 57, in create_connection
    for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM):
  File "/usr/local/lib/python3.7/socket.py", line 748, in getaddrinfo
    for res in _socket.getaddrinfo(host, port, family, type, proto, flags):
socket.gaierror: [Errno -3] Try again

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/local/lib/python3.7/site-packages/urllib3/connectionpool.py", line 600, in urlopen
    chunked=chunked)
  File "/usr/local/lib/python3.7/site-packages/urllib3/connectionpool.py", line 343, in _make_request
    self._validate_conn(conn)
  File "/usr/local/lib/python3.7/site-packages/urllib3/connectionpool.py", line 839, in _validate_conn
    conn.connect()
  File "/usr/local/lib/python3.7/site-packages/urllib3/connection.py", line 301, in connect
    conn = self._new_conn()
  File "/usr/local/lib/python3.7/site-packages/urllib3/connection.py", line 168, in _new_conn
    self, "Failed to establish a new connection: %s" % e)
urllib3.exceptions.NewConnectionError: <urllib3.connection.VerifiedHTTPSConnection object at 0x6f0e2f10>: Failed to establish a new connection: [Errno -3] Try again

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/local/lib/python3.7/site-packages/requests/adapters.py", line 449, in send
    timeout=timeout
  File "/usr/local/lib/python3.7/site-packages/urllib3/connectionpool.py", line 638, in urlopen
    _stacktrace=sys.exc_info()[2])
  File "/usr/local/lib/python3.7/site-packages/urllib3/util/retry.py", line 398, in increment
    raise MaxRetryError(_pool, url, error or ResponseError(cause))
urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='econet-api.rheemcert.com', port=443): Max retries exceeded with url: /equipment/None (Caused by NewConnectionError('<urllib3.connection.VerifiedHTTPSConnection object at 0x6f0e2f10>: Failed to establish a new connection: [Errno -3] Try again'))

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/local/lib/python3.7/site-packages/homeassistant/helpers/entity.py", line 221, in async_update_ha_state
    await self.async_device_update()
  File "/usr/local/lib/python3.7/site-packages/homeassistant/helpers/entity.py", line 349, in async_device_update
    await self.hass.async_add_executor_job(self.update)
  File "/usr/local/lib/python3.7/concurrent/futures/thread.py", line 57, in run
    result = self.fn(*self.args, **self.kwargs)
  File "/config/custom_components/water_heater/econet.py", line 210, in update
    self.water_heater.update_state()
  File "/config/deps/lib/python3.7/site-packages/pyeconet/equipment/water_heater.py", line 112, in update_state
    device_state = self.api_interface.get_device(self.id)
  File "/config/deps/lib/python3.7/site-packages/pyeconet/api.py", line 100, in get_device
    arequest = requests.get(url, headers=HEADERS)
  File "/usr/local/lib/python3.7/site-packages/requests/api.py", line 75, in get
    return request('get', url, params=params, **kwargs)
  File "/usr/local/lib/python3.7/site-packages/requests/api.py", line 60, in request
    return session.request(method=method, url=url, **kwargs)
  File "/usr/local/lib/python3.7/site-packages/requests/sessions.py", line 533, in request
    resp = self.send(prep, **send_kwargs)
  File "/usr/local/lib/python3.7/site-packages/requests/sessions.py", line 646, in send
    r = adapter.send(request, **kwargs)
  File "/usr/local/lib/python3.7/site-packages/requests/adapters.py", line 516, in send
    raise ConnectionError(e, request=request)
requests.exceptions.ConnectionError: HTTPSConnectionPool(host='econet-api.rheemcert.com', port=443): Max retries exceeded with url: /equipment/None (Caused by NewConnectionError('<urllib3.connection.VerifiedHTTPSConnection object at 0x6f0e2f10>: Failed to establish a new connection: [Errno -3] Try again'))
2019-03-27 12:30:14 WARNING (MainThread) [homeassistant.helpers.entity] Update of water_heater.heat_pump_water_heater_gen_4 is taking over 10 seconds
2019-03-27 12:30:56 ERROR (MainThread) [homeassistant.helpers.entity] Update for water_heater.heat_pump_water_heater_gen_4 fails
Traceback (most recent call last):
  File "/usr/local/lib/python3.7/site-packages/homeassistant/helpers/entity.py", line 221, in async_update_ha_state
    await self.async_device_update()
  File "/usr/local/lib/python3.7/site-packages/homeassistant/helpers/entity.py", line 349, in async_device_update
    await self.hass.async_add_executor_job(self.update)
  File "/usr/local/lib/python3.7/concurrent/futures/thread.py", line 57, in run
    result = self.fn(*self.args, **self.kwargs)
  File "/config/custom_components/water_heater/econet.py", line 210, in update
    self.water_heater.update_state()
  File "/config/deps/lib/python3.7/site-packages/pyeconet/equipment/water_heater.py", line 127, in update_state
    for equipment in vacation.get("participatingEquipment"):
AttributeError: 'str' object has no attribute 'get'
2019-03-27 12:36:13 ERROR (SyncWorker_8) [pyeconet.api] Failed to decode response
2019-03-27 12:36:16 ERROR (SyncWorker_8) [pyeconet.api] Failed to decode response
2019-03-27 12:41:25 WARNING (MainThread) [homeassistant.helpers.entity] Update of water_heater.heat_pump_water_heater_gen_4 is taking over 10 seconds
2019-03-27 12:46:20 ERROR (SyncWorker_11) [pyeconet.api] Failed to decode response
2019-03-27 12:46:21 ERROR (SyncWorker_11) [pyeconet.api] Failed to decode response
2019-03-27 16:30:06 WARNING (MainThread) [homeassistant.helpers.entity] Update of water_heater.heat_pump_water_heater_gen_4 is taking over 10 seconds
2019-03-27 16:45:21 WARNING (MainThread) [homeassistant.helpers.entity] Update of water_heater.heat_pump_water_heater_gen_4 is taking over 10 seconds
2019-03-27 17:00:36 WARNING (MainThread) [homeassistant.helpers.entity] Update of water_heater.heat_pump_water_heater_gen_4 is taking over 10 seconds
2019-03-27 17:15:51 WARNING (MainThread) [homeassistant.helpers.entity] Update of water_heater.heat_pump_water_heater_gen_4 is taking over 10 seconds
2019-03-27 18:01:33 WARNING (MainThread) [homeassistant.helpers.entity] Update of water_heater.heat_pump_water_heater_gen_4 is taking over 10 seconds
2019-03-27 18:16:39 ERROR (SyncWorker_13) [pyeconet.api] Failed to decode response
2019-03-27 18:32:02 WARNING (MainThread) [homeassistant.helpers.entity] Update of water_heater.heat_pump_water_heater_gen_4 is taking over 10 seconds

So I am not 100% but it looks like the update failed and for some reason it overwrote the ID of the device that we have stored. So then the next time it tried to update it sent None as the ID which won’t work so it eventually timed out. I uploaded 0b5 so you can upgrade to that. I set the ID once at startup and don’t change it. Can you also enabled debug logging for pyeconet.api

Copied the latest file in and revised it to 0b5. I’ll see how that works.

Just to confirm, the date on the econet.py file that I’m downloading shows it was lost modified on the 24th… am I grabbing the correct file from the link that was initially provided?

Also, any instructions on how to add debug logging for pyeconet.api. I haven’t had to do that yet.

Also, just tried running the latest and received this at start up.

2019-03-28 20:13:05 WARNING (MainThread) [homeassistant.loader] You are using a custom component for water_heater which has not been tested by Home Assistant. This component might cause stability problems, be sure to disable it if you do experience issues with Home Assistant.
2019-03-28 20:13:09 WARNING (MainThread) [homeassistant.loader] You are using a custom component for water_heater.econet which has not been tested by Home Assistant. This component might cause stability problems, be sure to disable it if you do experience issues with Home Assistant.
2019-03-28 20:13:09 WARNING (MainThread) [homeassistant.loader] Integrations need to be in their own folder. Change water_heater/econet.py to econet/water_heater.py. This will stop working soon.
2019-03-28 20:13:13 WARNING (MainThread) [homeassistant.loader] Integrations need to be in their own folder. Change water_heater/econet.py to econet/water_heater.py. This will stop working soon.
2019-03-28 20:13:19 WARNING (MainThread) [homeassistant.components.upnp] Wanted UPnP/IGD device with UDN "uuid:f1af61a0-664c-42cc-ac96-00ed4b7ed8dc" not found, aborting
2019-03-28 20:14:05 ERROR (MainThread) [custom_components.water_heater] Error while setting up platform econet
Traceback (most recent call last):
  File "/usr/local/lib/python3.7/site-packages/homeassistant/helpers/entity_platform.py", line 128, in _async_setup_platform
    SLOW_SETUP_MAX_WAIT, loop=hass.loop)
  File "/usr/local/lib/python3.7/asyncio/tasks.py", line 416, in wait_for
    return fut.result()
  File "/usr/local/lib/python3.7/concurrent/futures/thread.py", line 57, in run
    result = self.fn(*self.args, **self.kwargs)
  File "/config/custom_components/water_heater/econet.py", line 75, in setup_platform
    water_heaters = econet.get_water_heaters()
  File "/config/deps/lib/python3.7/site-packages/pyeconet/api.py", line 232, in get_water_heaters
    self.api_interface))
  File "/config/deps/lib/python3.7/site-packages/pyeconet/equipment/water_heater.py", line 29, in __init__
    self.id = json_state.get('id')
NameError: name 'json_state' is not defined

None of the changes I have had to make so far are in the actual Home Assistant code they are in the library HA is using so as long as you are updating the library version, the version of the econet file shouldn’t really matter.

As for the error above that was my fault, sorry, typo. I have uploaded 0b6 for you to test.

To enabled debug logging add the following to your HA config. Make sure you don’t already have a logger section.

logger:
 default: info
 logs:
   pyeconet.api: debug

I’ve been having issues with my econet water heater as well, and would be willing to help test if you would like. Where are these files uploaded?

There is a google drive link above. Download that and extract it in your config directory. There is an econet.py file in there with a pyeconet version listed in it. Update that version to the latest one ending in 0b6 and run it.