tadasdanielius / daikin_altherma

Daikin Altherma custom component for home assistant
MIT License
76 stars 6 forks source link

Incompatible with current firmware #77

Closed MarkoBolt closed 1 year ago

MarkoBolt commented 1 year ago

Seems like that the most recent firmware of the Daikin controller version: 436CC160000 is not compatible.

Model nr: BRP069A62

tadasdanielius commented 1 year ago

Thanks for bringing this up. Is there any errors or anything that might help us to make compatible with new version?

MarkoBolt commented 1 year ago

How can I assist with debugging?

Firmware: 436CC160000 Model: BRP069A62

I can see the following in Homeassistant:

Screenshot 2023-08-31 at 19 52 14
jaakla commented 1 year ago

Update: "Remove and add again" fixed it for me.

I have same error with following log. I checked the IP address and daikin own app gives different one (192.168.1.178) which may be (also) the issue, but could not figure how I could fix the IP address really. Adding new integration with the new IP does not work also.

This error originated from a custom integration.

Logger: homeassistant.config_entries
Source: custom_components/daikin_altherma/__init__.py:33 
Integration: Daikin Altherma HVAC (documentation, issues) 
First occurred: September 1, 2023 at 8:51:14 PM (3 occurrences) 
Last logged: 9:21:24 AM

Error setting up entry Daikin HVAC controller (173400236) for daikin_altherma
Traceback (most recent call last):
  File "/usr/local/lib/python3.11/site-packages/aiohttp/connector.py", line 980, in _wrap_create_connection
    return await self._loop.create_connection(*args, **kwargs)  # type: ignore[return-value]  # noqa
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/asyncio/base_events.py", line 1085, in create_connection
    raise exceptions[0]
  File "/usr/local/lib/python3.11/asyncio/base_events.py", line 1069, in create_connection
    sock = await self._connect_sock(
           ^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/asyncio/base_events.py", line 973, in _connect_sock
    await self.sock_connect(sock, address)
  File "/usr/local/lib/python3.11/asyncio/selector_events.py", line 628, in sock_connect
    return await fut
           ^^^^^^^^^
  File "/usr/local/lib/python3.11/asyncio/selector_events.py", line 668, in _sock_connect_cb
    raise OSError(err, f'Connect call failed {address}')
OSError: [Errno 113] Connect call failed ('192.168.1.182', 80)

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/usr/src/homeassistant/homeassistant/config_entries.py", line 388, in async_setup
    result = await component.async_setup_entry(hass, self)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/config/custom_components/daikin_altherma/__init__.py", line 68, in async_setup_entry
    hass.data[DOMAIN][entry.entry_id] = api = await setup_api_instance(
                                              ^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/config/custom_components/daikin_altherma/__init__.py", line 33, in setup_api_instance
    await device.discover_units()
  File "/usr/local/lib/python3.11/site-packages/pyaltherma/controllers.py", line 458, in discover_units
    resp_obj = await self._connection.request(dest)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/pyaltherma/comm.py", line 39, in request
    result = await self._request(dest, payload, wait_for_response, assert_response_fn)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/pyaltherma/comm.py", line 45, in _request
    await self.connect()
  File "/usr/local/lib/python3.11/site-packages/pyaltherma/comm.py", line 30, in connect
    self._client = await self._session.ws_connect(self.ws_address)
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/aiohttp/client.py", line 779, in _ws_connect
    resp = await self.request(
           ^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/aiohttp/client.py", line 536, in _request
    conn = await self._connector.connect(
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/aiohttp/connector.py", line 540, in connect
    proto = await self._create_connection(req, traces, timeout)
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/aiohttp/connector.py", line 901, in _create_connection
    _, proto = await self._create_direct_connection(req, traces, timeout)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/aiohttp/connector.py", line 1209, in _create_direct_connection
    raise last_exc
  File "/usr/local/lib/python3.11/site-packages/aiohttp/connector.py", line 1178, in _create_direct_connection
    transp, proto = await self._wrap_create_connection(
                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/aiohttp/connector.py", line 988, in _wrap_create_connection
    raise client_error(req.connection_key, exc) from exc
aiohttp.client_exceptions.ClientConnectorError: Cannot connect to host 192.168.1.182:80 ssl:default [Connect call failed ('192.168.1.182', 80)]
jaakla commented 1 year ago

by "adding new does not work" I mean that after giving IP next screen is and it does not add anything:

Screenshot 2023-09-06 at 09 27 08
tadasdanielius commented 1 year ago

It might be useful to remove the old "integration" and try adding it again. Here are a few things to try:

  1. Open your browser and go to http://your_daikin_ip/. This should result in an HTTP 500 error, but that's actually a good sign. image

  2. Try going to http://your_daikin_ip/mca. If you see something like this, image then it's probably a good sign.

  3. Restart the Daikin gateway, and immediately after it loads, try repeating the first step. The reason for this step is that a freshly booted device normally does not throw an HTTP 500 error but allows you to see some information and upload firmware. After some time, it starts to throw the 500 error.

I would recommend trying both the new and old addresses. Additionally, it would be helpful if you could log into your router and check the assigned address.

MarkoBolt commented 1 year ago

I have the same IP address and can find the unit after rebooting and see the following:

LAN adapter firmware: 1700390A
Smart grid: disabled
IP address: 192.168.15.XXX
MAC address:
Serial number:
User interface SW: v01.06.00
User interface EEPROM: --
Hydro SW: --
Hydro EEPROM: --

I did do some logging and got the following:

2023-09-07 12:41:08.306 ERROR (MainThread) [homeassistant.config_entries] Error setting up entry Daikin HVAC controller (172300139) for daikin_altherma Traceback (most recent call last): File "/usr/local/lib/python3.11/site-packages/aiohttp/connector.py", line 980, in _wrap_create_connection return await self._loop.create_connection(*args, **kwargs) # type: ignore[return-value] # noqa ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.11/asyncio/base_events.py", line 1085, in create_connection raise exceptions[0] File "/usr/local/lib/python3.11/asyncio/base_events.py", line 1069, in create_connection sock = await self._connect_sock( ^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.11/asyncio/base_events.py", line 973, in _connect_sock await self.sock_connect(sock, address) File "/usr/local/lib/python3.11/asyncio/selector_events.py", line 628, in sock_connect return await fut ^^^^^^^^^ File "/usr/local/lib/python3.11/asyncio/selector_events.py", line 668, in _sock_connect_cb raise OSError(err, f'Connect call failed {address}') OSError: [Errno 113] Connect call failed ('192.168.15.138', 80)

The above exception was the direct cause of the following exception:

Traceback (most recent call last): File "/usr/src/homeassistant/homeassistant/config_entries.py", line 387, in async_setup result = await component.async_setup_entry(hass, self) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/config/custom_components/daikin_altherma/init.py", line 68, in async_setup_entry hass.data[DOMAIN][entry.entry_id] = api = await setup_api_instance( ^^^^^^^^^^^^^^^^^^^^^^^^^ File "/config/custom_components/daikin_altherma/init.py", line 33, in setup_api_instance await device.discover_units() File "/usr/local/lib/python3.11/site-packages/pyaltherma/controllers.py", line 458, in discover_units resp_obj = await self._connection.request(dest) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.11/site-packages/pyaltherma/comm.py", line 39, in request result = await self._request(dest, payload, wait_for_response, assert_response_fn) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.11/site-packages/pyaltherma/comm.py", line 45, in _request await self.connect() File "/usr/local/lib/python3.11/site-packages/pyaltherma/comm.py", line 30, in connect self._client = await self._session.ws_connect(self.ws_address) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.11/site-packages/aiohttp/client.py", line 779, in _ws_connect resp = await self.request( ^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.11/site-packages/aiohttp/client.py", line 536, in _request conn = await self._connector.connect( ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.11/site-packages/aiohttp/connector.py", line 540, in connect proto = await self._create_connection(req, traces, timeout) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.11/site-packages/aiohttp/connector.py", line 901, in _createconnection , proto = await self._create_direct_connection(req, traces, timeout) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.11/site-packages/aiohttp/connector.py", line 1209, in _create_direct_connection raise last_exc File "/usr/local/lib/python3.11/site-packages/aiohttp/connector.py", line 1178, in _create_direct_connection transp, proto = await self._wrap_create_connection( ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.11/site-packages/aiohttp/connector.py", line 988, in _wrap_create_connection raise client_error(req.connection_key, exc) from exc aiohttp.client_exceptions.ClientConnectorError: Cannot connect to host 192.168.15.138:80 ssl:default [Connect call failed ('192.168.15.138', 80)] 2023-09-07 12:41:08.331 WARNING (MainThread) [homeassistant.bootstrap] Waiting on integrations to complete setup: daikin_altherma, co2signal, dsmr, otbr, matter, sensor.dsmr 2023-09-07 12:41:11.526 ERROR (MainThread) [homeassistant.components.sensor] Error adding entities for domain sensor with platform speedtestdotnet Traceback (most recent call last): File "/usr/src/homeassistant/homeassistant/components/sensor/init.py", line 591, in state numerical_value = float(value) # type:ignore[arg-type] ^^^^^^^^^^^^ ValueError: could not convert string to float: 'unavailable'

tadasdanielius commented 1 year ago

It seems like that daikin has closed local access to the gateway. Try to open in browser http://192.168.15.XXX/ and https://192.168.15.XXX/ Maybe they just changed the port or switched to SSL

MarkoBolt commented 1 year ago

http://192.168.15.XXX seems to connect to a white page in the browser.

tadasdanielius commented 1 year ago

Based from what you see is a good sign. There must be something with the configuration. I have 1700390A version as well. Seems to be working just fine. Have you tried to remove integration and add again? Any potential connection complexities between HA and Daikin gateway?

MarkoBolt commented 1 year ago

That worked for me. Remove and add again. So simple but weird that it is necessary.

MarkoBolt commented 1 year ago

That worked for me. Remove and add again. So simple but weird that it is necessary.