Drayton Wiser Home Assistant Integration

Glad you got it sorted . Its learninf journey for all of us

Having issues since the v3 upgrade. Iā€™m calling Home Assistant via AppDaemon and receiving the following error almost every time. Iā€™ve tried increasing the poll duration from 30 to 60 or 120 seconds but no difference.

Any help greatly appreciated ā€¦ looks like timeout but canā€™t see any reason why and itā€™s only started since the upgrade.

2022-01-19 15:58:29 ERROR (MainThread) [homeassistant.core] Error executing service: <ServiceCall climate.set_temperature (c:013f52227db48d41374f1065042ad297): entity_id=['climate.wiser_second_bedroom'], temperature=15.0>
Traceback (most recent call last):
  File "/usr/local/lib/python3.9/site-packages/urllib3/connectionpool.py", line 449, in _make_request
    six.raise_from(e, None)
  File "<string>", line 3, in raise_from
  File "/usr/local/lib/python3.9/site-packages/urllib3/connectionpool.py", line 444, in _make_request
    httplib_response = conn.getresponse()
  File "/usr/local/lib/python3.9/http/client.py", line 1371, in getresponse
    response.begin()
  File "/usr/local/lib/python3.9/http/client.py", line 319, in begin
    version, status, reason = self._read_status()
  File "/usr/local/lib/python3.9/http/client.py", line 280, in _read_status
    line = str(self.fp.readline(_MAXLINE + 1), "iso-8859-1")
  File "/usr/local/lib/python3.9/socket.py", line 704, in readinto
    return self._sock.recv_into(b)
socket.timeout: timed out

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/local/lib/python3.9/site-packages/requests/adapters.py", line 439, in send
    resp = conn.urlopen(
  File "/usr/local/lib/python3.9/site-packages/urllib3/connectionpool.py", line 785, in urlopen
    retries = retries.increment(
  File "/usr/local/lib/python3.9/site-packages/urllib3/util/retry.py", line 550, in increment
    raise six.reraise(type(error), error, _stacktrace)
  File "/usr/local/lib/python3.9/site-packages/urllib3/packages/six.py", line 770, in reraise
    raise value
  File "/usr/local/lib/python3.9/site-packages/urllib3/connectionpool.py", line 703, in urlopen
    httplib_response = self._make_request(
  File "/usr/local/lib/python3.9/site-packages/urllib3/connectionpool.py", line 451, in _make_request
    self._raise_timeout(err=e, url=url, timeout_value=read_timeout)
  File "/usr/local/lib/python3.9/site-packages/urllib3/connectionpool.py", line 340, in _raise_timeout
    raise ReadTimeoutError(
urllib3.exceptions.ReadTimeoutError: HTTPConnectionPool(host='10.0.7.40', port=80): Read timed out. (read timeout=15)

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/src/homeassistant/homeassistant/core.py", line 1511, in catch_exceptions
    await coro_or_task
  File "/usr/src/homeassistant/homeassistant/core.py", line 1530, in _execute_service
    await handler.job.target(service_call)
  File "/usr/src/homeassistant/homeassistant/helpers/entity_component.py", line 209, in handle_service
    await self.hass.helpers.service.entity_service_call(
  File "/usr/src/homeassistant/homeassistant/helpers/service.py", line 663, in entity_service_call
    future.result()  # pop exception if have
  File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 896, in async_request_call
    await coro
  File "/usr/src/homeassistant/homeassistant/helpers/service.py", line 700, in _handle_entity_call
    await result
  File "/usr/src/homeassistant/homeassistant/components/climate/__init__.py", line 586, in async_service_temperature_set
    await entity.async_set_temperature(**kwargs)
  File "/config/custom_components/wiser/climate.py", line 344, in async_set_temperature
    await self.hass.async_add_executor_job(
  File "/usr/local/lib/python3.9/concurrent/futures/thread.py", line 52, in run
    result = self.fn(*self.args, **self.kwargs)
  File "/usr/local/lib/python3.9/site-packages/wiserHeatAPIv2/room.py", line 304, in set_target_temperature
    return self._send_command(
  File "/usr/local/lib/python3.9/site-packages/wiserHeatAPIv2/room.py", line 59, in _send_command
    result = self._wiser_rest_controller._send_command(WISERROOM.format(self.id), cmd)
  File "/usr/local/lib/python3.9/site-packages/wiserHeatAPIv2/rest_controller.py", line 154, in _send_command
    if self._patch_hub_data(url, command_data):
  File "/usr/local/lib/python3.9/site-packages/wiserHeatAPIv2/rest_controller.py", line 102, in _patch_hub_data
    response = requests.patch(
  File "/usr/local/lib/python3.9/site-packages/requests/api.py", line 147, in patch
    return request('patch', url, data=data, **kwargs)
  File "/usr/local/lib/python3.9/site-packages/requests/api.py", line 61, in request
    return session.request(method=method, url=url, **kwargs)
  File "/usr/local/lib/python3.9/site-packages/requests/sessions.py", line 542, in request
    resp = self.send(prep, **send_kwargs)
  File "/usr/local/lib/python3.9/site-packages/requests/sessions.py", line 655, in send
    r = adapter.send(request, **kwargs)
  File "/usr/local/lib/python3.9/site-packages/requests/adapters.py", line 529, in send
    raise ReadTimeout(e, request=request)
requests.exceptions.ReadTimeout: HTTPConnectionPool(host='10.0.7.40', port=80): Read timed out. (read timeout=15)

Andy, Iā€™ve not seen this but i do know that one of the major changes in V3 was we moved to using AutoDiscovery (mDNS). It doesnā€™t work reliably for me so I opt to use the IP Address instead.

A) Check you have a static IP set for the wiser hub
B) Edit the WIser hostname in .storage/ and change it to the IP Address (not 100% sure the filename as Im not on my home network at the moment, but go digging)

Hey all,
I need to get some new TRVs and maybe one or two roomstats, anyone seen any good deals?

Thanks for the quick reply Angelo. I already use static IP for the Wiser Hub and itā€™s configured in Home Assistant to use the static IP (10.0.7.40) so Iā€™m following your advice already :frowning:

Not since I bought mine a few years ago. It was sold as an exhibition model (probably second hand Amazon warehouse deal or something similar). Each TRV cost me about 10-12 EUR. :rofl: It was a bargain.

Otherwise Amazon UK has it with 11% discount at 39.89 GBP.

1 Like

WOOW that was a bargainā€¦ no worries, Iā€™ll keep an eye, its not urgent TBH

Dratā€¦ I donā€™t think this is the integration but more likely a networking host issueā€¦

Do you run HA within a container? dodgy network cable/wifi?

Whatabout setting up ping checking? See How To Monitor Servers in Home Assistant - Smart Home Pursuits

If this also fails then its a networking non integration issueā€¦ and we can then help trace it from there

Whatā€™s wierd here is that you are getting ReadTimeout and not a connection timeout. I think this means that it is connecting to the hub but then gets no response returned.

Other major thing difference with v3 is the new api which uses v2 of the hub rest api whereas previously we used v1. Im wondering what version of firmware your hub is on and when does it work versus not? Is it connected to the internet?

Also whether you can run the wiser cli from a command line if that connects.

Command is (you need to be on v3.0.19 of the integration):

wiser output [host] [key] all

Obviously inside your AppDaemon environment. Might also be worth trying outside it tomsee if any different.

This will anonomise your data output so can be posted into a github issue if this does in fact return so that we can analyse it to see if something is odd.

Thanks for your help guys.

Angelo, Iā€™ve set up ping sensors and no connectivity issues I can see. I have HassOS running on Proxmox.

Mark, Hub firmware states verison 3.8.8. Note the issue happens when controlling through Home Assistant also, it isnā€™t just through Appdaemon (althought thatā€™s my main usage).

Sorry if Iā€™m being daft but where am I running wiser output command from? Iā€™ve installed wiser api from this comment during my search but not having any joy

Andy,

You need to use the new v2 api that is included now with the integration. You can either do from a terminal with HA or install separately and try.

pip install wiserHeatAPIv2

i honestly dont knowā€¦ it smells like a networking issue and not an integration oneā€¦

@msp1974 any ideas?

Definitely see if you can use the api outside HA to see if it works. This will be a big clue to where the issue may be.

I have been looking at what might be different in how we use requests between the old api and the new v2 and cannot really see anything.

The only other thought i have is a memory issue. Reading various on the interwebs, this is a possible reason for a ReadTimeout issue. I also expect that the v2 api does use more memory than the v1. Are you skinny on memory in this VM? Are you able to increase it?

It doesnā€™t seem network related or you would get a connection timeout, but could be if you have any sort of firewall/IPS/IDS software in the chain. I am not familiar with ProxMox so donā€™t know if this has security features like that.

Did you say that it does work intermittently but has many fails? Do you have any other logging output available, in particular for failed hub update requests as opposed to sending a command to the hub.

Iā€™m thinking network too. Iā€™ll do some digging and see what I can find. Thanks for your help Mark and Angelo youā€™re brilliant

Hi guys, lovely integration that Iā€™ve been having a lot of fun with. I have a few questions that I hope someone may be able to assist me with:

  • In the integration configuration, I have set the boost temperature to 1C and the duration to 30mins. If the heating is boosted via a TRV, it still does it for the Wiser default 2C and 60mins. Is this setting supposed to control this, or only when boosted via HA?

  • I noticed the addition of new entities for window open detection. Is it possible to have these trigger the detection of an open window rather than just controlling the switch to turn the feature on/off? This way we could use an external sensor, as Iā€™ve not had much luck with a TRV detecting open windows.

  • I have created two button on my Lovelace heating dashboard for the Boost All and Cancel All Boost services, but for some reason I get an error when it calls the service (service not found). It only works if I set the button up so that when I press it, it shows ā€˜more infoā€™ then I press the ā€˜pressā€™ link. If the button is set to toggle, I get the error. Am I doing something wrong?

  • Lastly - perhaps not related to the integration - anyone that has TRVs, do you notice that it can occasionally keep making small adjustments to the valve position, like every 30 seconds, as though it is stuck in a loop? Eventually they stop, but I would have though the firmware on these valves would minimise the number of times they are actually moving, thus to maximise battery life.

By the way, here is my setup:

Thanks

Chris,

Iā€™ll answer your questions 1 at a time if thats ok.

  1. i think the boost by trv is a fixed setting. There seems to be nowhere to change this.

  2. You cant trigger detection of an open window on the hub. Only the trv can sense this, which i have had a number of people say is very poor. What some have done is use an external window sensor and either turned the trv off or set temp to 5C when it detects. Then you can put back to auto/cancel any override when detected closed again.

  3. Can you raise an issue in the git repo with a copy of the log output when you get this error and weā€™ll help you get it sorted. Also useful to see your button config to see if something is wrong there.

  4. i do have 1 problematic trv that didnā€™t seem to be closing properly. I very recently changed the actual valve and recalibrated the iTRV and it now seems to be doing exactly that and the battery has suddenly drained. I would say it didnā€™t start doing it right away. Wil be recalibrating again and see what happens. I suspect it maybe to do with the iTRV detecting the heat is rising in the room but it thinks (and possibly is) fully closed and it just keeps trying to close it more.

As you can see - it is killing my battery over the last couple of days. Changed the radiator valve on the 16th and these are Duracell batteries!

Hope this helps.
Mark

Chris,

Actually I have just tested adding this to a button and yes it does error with turn_off service not found. I think this a bit of a bug with HA. The button entity that this uses is brand new in v2021.12 and maybe its not been quite thought through if you do add to a button. However, I have a way of doing this for you by creating a button to call the button.press service on the entity as below:

type: button
entity: button.wiser_boost_all_heating
tap_action:
  action: call-service
  service: button.press
  service_data: {}
  target:
    entity_id: button.wiser_boost_all_heating

And obviously the same principle for the cancel button.

I have raised an issue on the HA UI github repo for this as the button card basically does not support the new stateless button component. Issue #11104

#Update
This issue has already been identified and looks like will be fixed in an upcoming HA release. For now, the workaround above should help you

Thanks to the recent addition of the temperature measured by iTRVs to this integration (or me learning where to find them (hint - it is the temperature attribute in the iTRV signal entity), I have been able to learn a bit about how the Wiser system calculates the room temperature with different combinations of devices.

First the simplest. If a room has one iTRV it appears the room temperature is simply what is measured by the iTRV - in the following graph only the iTRV line is visible, as the temperature for the room is exactly the same:

If a Wiser Thermostat is in the room, the temperature of the thermostat is used instead. In my case, the iTRV is measuring a temperature a couple of degrees higher.

In a room with multiple radiators, each with an iTRV, the room temperature appears to be calculated as an average of both, or something roughly similar:

Wiser have said that they use an algorithm to calculate the room temperature more accurately when using only an iTRV. This does not appear to be the case according to my tracking of temperatures.

If anyone has a separate thermometer in HA they can use to compare against their Wiser measured temperatures, it would be interesting to see the difference - it might help to figure out whether an extra couple of degrees should be added as the target temperature for rooms that only have an iTRV.

I also intend to move the room stat into the room that has two iTRVs to see what happens in that circumstance.

1 Like

Hey guys,

New to this forum after deciding to put all my money into Wiser instead of Plejd for the new house weā€™re building. Weā€™ll have outlets, dimming and some sensor guards through Wiser, and then some other systems like Unifi, Ajax, Siemens, Nibe and so on.

My goal is to be able to keep everything locally, and HAOS seems like the perfect choice. Looked at Homey, but that product seems outdated.

So, my question is, how well integrated (and easy) is Wiser in HAOS? Would it be possible to integrate Wiser without the use for their Gateway? I recently bought a Sonoff USB stick for Zigbee, and my main goal is to run all Zigbee through that. Or would a better idea be to run their Gateway and then integrate the Gateway into HAOS?

Thank you in advance

Thank you for your reply, very helpful. Iā€™ve now got the button working as expected :slight_smile:

Regarding the problem iTRV, Iā€™m going to try recalibrating it and see whether that makes a difference.