home-assistant / core

:house_with_garden: Open source home automation that puts local control and privacy first.
https://www.home-assistant.io
Apache License 2.0
73.54k stars 30.72k forks source link

0.110.0 Daikin AC integration not sending commands to unit #35898

Closed nickdos closed 4 years ago

nickdos commented 4 years ago

The problem

After upgrading to HA version 0.110.0 my Daikin AC unit no longer responds to commands from the Daikin integration (via Airbase unit).

The Integration correctly reports the "current state" my AC is in (mode, fan speed, set temperature) but when I try to increase/decrease temperature or change modes in HA, the commands never get to the unit and eventually the values revert to the state prior to the change.

If I change temperature on the physical hard-wired AC remote, the new temperature is correctly updated in HA.

My log does not report anything about "daikin" but it is set to default level (warn & error).

Environment

Problem-relevant configuration.yaml

Integration added via UI - no config in yaml.

Traceback/Error logs

Nothing in logs related to daikin

Additional information

Note, my AC is very old and does not support all the Airbase features, such as current_temperature. image

probot-home-assistant[bot] commented 4 years ago

daikin documentation daikin source (message by IssueLinks)

probot-home-assistant[bot] commented 4 years ago

Hey there @fredrike, mind taking a look at this issue as its been labeled with a integration (daikin) you are listed as a codeowner for? Thanks! (message by CodeOwnersMention)

fredrike commented 4 years ago

Ok I'll have a look. Could you please enable debugging logs for the Daikin integration and the pydaikin module. So we can see what's going on.

The pydaikin library have been totally rewritten..

nickdos commented 4 years ago

I'm not seeing pydaikin logging, so I think I've not set it up correctly. Here's my current logging yaml:

logger:
  default: warning
  logs:
    homeassistant.helpers.script: debug
    homeassistant.components.pydaikin: debug
    homeassistant.components.daikin: debug
    homeassistant.components.climate: debug

Seeing this so far

2020-05-21 19:45:37 DEBUG (MainThread) [homeassistant.components.daikin] ClientConnectionError to 192.168.1.28
2020-05-21 19:45:37 WARNING (MainThread) [homeassistant.config_entries] Config entry for daikin not ready yet. Retrying in 5 seconds.
2020-05-21 19:45:46 INFO (MainThread) [homeassistant.components.climate] Setting up climate.daikin

Changing Daikin controls in HA do not seem to trigger any more log events.

UPDATED log output:

2020-05-22 07:49:14 DEBUG (MainThread) [pydaikin.daikin_base] Updating ['common/basic_info'] 2020-05-22 07:49:16 DEBUG (MainThread) [pydaikin.daikin_base] ServerDisconnectedError 3 2020-05-22 07:49:18 DEBUG (MainThread) [pydaikin.daikin_base] ServerDisconnectedError 2 2020-05-22 07:49:18 DEBUG (MainThread) [pydaikin.daikin_base] ServerDisconnectedError 1 2020-05-22 07:49:18 DEBUG (MainThread) [pydaikin.daikin_base] ServerDisconnectedError 0 2020-05-22 07:49:18 DEBUG (MainThread) [homeassistant.components.daikin] ClientConnectionError to 192.168.1.28 2020-05-22 07:49:18 WARNING (MainThread) [homeassistant.config_entries] Config entry for daikin not ready yet. Retrying in 5 seconds. 2020-05-22 07:49:27 DEBUG (MainThread) [pydaikin.daikin_base] Updating ['common/basic_info'] 2020-05-22 07:49:27 DEBUG (MainThread) [pydaikin.daikin_base] Updating ['aircon/get_control_info', 'aircon/get_model_info', 'aircon/get_zone_setting'] 2020-05-22 07:49:27 INFO (MainThread) [homeassistant.components.climate] Setting up climate.daikin 2020-05-22 07:49:27 DEBUG (MainThread) [pydaikin.daikin_base] Updating ['aircon/get_sensor_info', 'aircon/get_control_info', 'aircon/get_zone_setting'] 2020-05-22 08:00:54 DEBUG (MainThread) [pydaikin.daikin_airbase] Sending query_c: aircon/set_control_info?pow=1&mode=1&stemp=21&shum=--&lpw=&f_airside=0&f_rate=5&f_dir=0

TheHomieFox commented 4 years ago

I'm having the same issue after upgrading to 0.110.0 today

fredrike commented 4 years ago

I'm not seeing pydaikin logging, so I think I've not set it up correctly. Here's my current logging yaml:

Change it to this..

logger:
  default: warning
  logs:
    homeassistant.helpers.script: debug
    homeassistant.components.pydaikin: debug
    homeassistant.components.daikin: debug
    homeassistant.components.climate: debug
    pydaikin: debug

Send me a pm in the forum (I'm fredrike there too) and we can debug together. Hopefully we can get a patch out for 0.110.2.

fredrike commented 4 years ago

There seems to be a fix in pydaikin: https://bitbucket.org/mustang51/pydaikin/issues/7/missing-await-on-_update_settings-for

dancwilliams commented 4 years ago

I am also having an issue after upgrading. One of my devices is no longer parsing correctly. I decided to remove the integration and add it back. I receive the following error when trying to add the AC unit:

Traceback (most recent call last): File "/usr/src/homeassistant/homeassistant/components/daikin/config_flow.py", line 77, in _create_device password=password, File "/usr/local/lib/python3.7/site-packages/pydaikin/daikin_base.py", line 78, in factory await appl.init() File "/usr/local/lib/python3.7/site-packages/pydaikin/daikin_brp069.py", line 88, in init await self.update_status(self.HTTP_RESOURCES[1:]) File "/usr/local/lib/python3.7/site-packages/pydaikin/daikin_base.py", line 170, in update_status self._register_energy_consumption_history() File "/usr/local/lib/python3.7/site-packages/pydaikin/daikin_base.py", line 179, in _register_energy_consumption_history self.today_energy_consumption(mode=mode), File "/usr/local/lib/python3.7/site-packages/pydaikin/daikin_base.py", line 350, in today_energy_consumption return sum(self._energy_consumption('curr_day_cool')) / 10 File "/usr/local/lib/python3.7/site-packages/pydaikin/daikin_base.py", line 277, in _energy_consumption return [int(x) for x in self.values.get(dimension).split('/')] AttributeError: 'NoneType' object has no attribute 'split'

fredrike commented 4 years ago

packages/pydaikin/daikin_base.py", line 350, in today_energy_consumption return sum(self._energy_consumption('curr_day_cool')) / 10 File "/usr/local/lib/python3.7/site-packages/pydaikin/daikin_base.py", line 277, in _energy_consumption return [int(x) for x in self.values.get(dimension).split('/')] AttributeError: 'NoneType' object has no attribute 'split'

@mlemainque Looks like there is an issue with energy parsing. What do you think about:

--- a/pydaikin/daikin_base.py
+++ b/pydaikin/daikin_base.py
@@ -274,7 +274,7 @@ class Appliance:  # pylint: disable=too-many-public-methods
     def _energy_consumption(self, dimension):
         """Parse energy consumption."""
         try:
-            return [int(x) for x in self.values.get(dimension).split('/')]
+            return [int(x) for x in self.values.get(dimension, '').split('/')]
         except ValueError:
             return None

or would this be better:

--- a/pydaikin/daikin_base.py
+++ b/pydaikin/daikin_base.py
@@ -275,7 +275,7 @@ class Appliance:  # pylint: disable=too-many-public-methods
         """Parse energy consumption."""
         try:
             return [int(x) for x in self.values.get(dimension).split('/')]
-        except ValueError:
+        except (AttributeError, ValueError):
             return None

     @property
fredrike commented 4 years ago

@dancwilliams pydaikin 2.0.4 contains a fix for your issue. I'm not sure how we can reach that state though. What model(s) does you have?

dancwilliams commented 4 years ago

@fredrike I have a BRP072A43 wireless controller on a FTXN18NMVJU unit. It was working great until the 0.110 update. I just upgraded to 0.110.2 and now I am receiving a new error while trying to add the unit:

Traceback (most recent call last):
  File "/usr/src/homeassistant/homeassistant/components/daikin/config_flow.py", line 77, in _create_device
    password=password,
  File "/usr/local/lib/python3.7/site-packages/pydaikin/daikin_base.py", line 78, in factory
    await appl.init()
  File "/usr/local/lib/python3.7/site-packages/pydaikin/daikin_brp069.py", line 88, in init
    await self.update_status(self.HTTP_RESOURCES[1:])
  File "/usr/local/lib/python3.7/site-packages/pydaikin/daikin_base.py", line 170, in update_status
    self._register_energy_consumption_history()
  File "/usr/local/lib/python3.7/site-packages/pydaikin/daikin_base.py", line 179, in _register_energy_consumption_history
    self.today_energy_consumption(mode=mode),
  File "/usr/local/lib/python3.7/site-packages/pydaikin/daikin_base.py", line 350, in today_energy_consumption
    return sum(self._energy_consumption('curr_day_cool')) / 10
TypeError: 'NoneType' object is not iterable
fredrike commented 4 years ago

@mlemainque can you take a look at this?

@dancwilliams we need to understand how AirBase units report energy consumption. Please send me a pm in the forum. https://community.home-assistant.io/u/fredrike, it would be good to see what pydaikin -a <daikin-ip> gives you.