rospogrigio / daikin_residential

Cloud control of Daikin devices that are supported by Daikin Residential Controller app.
GNU General Public License v3.0
282 stars 39 forks source link

Climate entity not created #5

Closed mihsu81 closed 3 years ago

mihsu81 commented 3 years ago

Hi @rospogrigio,

The climate entity doesn't get created for any of the ACs (x1 Ururu Sarara, x2 Perfera R).

All other entities get created for the Perfera R and Ururu Sarara based on their capabilities.

The Perfera R ACs have been installed yesterday, so no way to check if they'd have worked before firmware v1.12.35. Perfera R - Model BRP069C4x Ururu Sarara - Model BRP069A42

The token has been created using "tokensaver-win.exe" from command line specifying the username and password for Daikin Cloud. And i only started to use your integration last night.

The Home Assistant installation is running Core 2021.8.2 and Supervisor 2021.06.8

Any way to check why?

P.S. Don't know if it was the case previously, but with firmware v1.12.35 the BRP069C4x are accessible locally on port 80 and are running a default FreeRTOS web server. The GET and POST commands from the old API don't work.

rospogrigio commented 3 years ago

Do you get any error in the logs?

mihsu81 commented 3 years ago

Logger: homeassistant.components.climate Source: custom_components/daikin_residential/daikin_base.py:101 Integration: Climate (documentation, issues) First occurred: 8:45:24 PM (1 occurrences) Last logged: 8:45:24 PM

Error while setting up daikin_residential platform for climate Traceback (most recent call last): File "/usr/src/homeassistant/homeassistant/helpers/entity_platform.py", line 249, in _async_setup_platform await asyncio.shield(task) File "/config/custom_components/daikin_residential/climate.py", line 84, in async_setup_entry async_add_entities([DaikinClimate(device)], update_before_add=True) File "/config/custom_components/daikin_residential/climate.py", line 98, in init ATTR_SWING_MODE: self._device.swing_modes, File "/config/custom_components/daikin_residential/daikin_base.py", line 239, in swing_modes hMode = self.getData(ATTR_HSWING_MODE) File "/config/custom_components/daikin_residential/daikin_base.py", line 106, in getData cmd_set = self.getCommandSet(param) File "/config/custom_components/daikin_residential/daikin_base.py", line 101, in getCommandSet cmd_set[2] = cmd_set[2].replace("%operationMode%", operation_mode) TypeError: replace() argument 2 must be str, not None

rospogrigio commented 3 years ago

Which version of the Integration have you installed? V. 1.0.1 should fix this issue.

mihsu81 commented 3 years ago

I am using 1.0.1. I've added the repo yesterday evening through HACS. I've even reinstalled it a few minutes ago, but the issue persists.

Update: I've check manifest.json in custom_components/daikin_residential and still says v1.0.0 after a fresh installation of the integration and multiple restarts of HASSIO.

rospogrigio commented 3 years ago

Mmm, I see... strangely, your devices seem to spit out a different JSON structure. Can you please install this PR #6 ? It will store a file called daikin_data.json in your config folder, then please post it here or send it to me. You may want to obfuscate some of the values you'll find in it, such as IDs, serial numbers and stuff. Then I'll be able to have a look at what's going on. Let me know

mihsu81 commented 3 years ago

Here's the file. daikin_data.json.zip Thank you.

rospogrigio commented 3 years ago

OK I see. In your cloud there's a sort of Gateway device (modelInfo is "DRGATEWAYAA"), which spits out a json structure different from the AC units, and the first error encountered makes the integration crash. I tried to filter those gateways out and ignore them, please try PR #7 and tell me if it works...

mihsu81 commented 3 years ago

Unfortunately it is throwing an error now:

Log Details (ERROR)
 This error originated from a custom integration.
Logger: homeassistant.config_entries
Source: custom_components/daikin_residential/daikin_api.py:155
Integration: Daikin Residential Controller (documentation, issues)
First occurred: 4:59:37 PM (1 occurrences)
Last logged: 4:59:37 PM

Error setting up entry Daikin for daikin_residential
Traceback (most recent call last):
  File "/usr/src/homeassistant/homeassistant/config_entries.py", line 293, in async_setup
    result = await component.async_setup_entry(hass, self)  # type: ignore
  File "/config/custom_components/daikin_residential/__init__.py", line 58, in async_setup_entry
    devices = await daikin_api.getCloudDevices()
  File "/config/custom_components/daikin_residential/daikin_api.py", line 155, in getCloudDevices
    if 'GATEWAY' not in device.getValue('gateway', 'modelInfo'):
TypeError: getValue() takes 2 positional arguments but 3 were given

DRGATEWAYAA is an OpenTherm Gateway for a D2CND Gas Boiler. Would be awesome if it could be integrated in a future release. :)

rospogrigio commented 3 years ago

My bad, please update the PR and retry.

Would be awesome if it could be integrated in a future release. :)

Maybe in a veeeeery future time 😉 , it has quite a peculiar behavior (only 2 operation modes: heatingNight and heatingDay), and most of the strings are different from the A/C devices... it would be quite a mess.

mihsu81 commented 3 years ago

My bad, please update the PR and retry.

Still failing:

This error originated from a custom integration.

Logger: homeassistant.config_entries
Source: custom_components/daikin_residential/daikin_api.py:155
Integration: Daikin Residential Controller (documentation, issues)
First occurred: 7:29:38 PM (1 occurrences)
Last logged: 7:29:38 PM

Error setting up entry Daikin for daikin_residential
Traceback (most recent call last):
  File "/usr/src/homeassistant/homeassistant/config_entries.py", line 293, in async_setup
    result = await component.async_setup_entry(hass, self)  # type: ignore
  File "/config/custom_components/daikin_residential/__init__.py", line 58, in async_setup_entry
    devices = await daikin_api.getCloudDevices()
  File "/config/custom_components/daikin_residential/daikin_api.py", line 155, in getCloudDevices
    if 'GATEWAY' not in device.get_value('gateway', 'modelInfo'):
TypeError: argument of type 'NoneType' is not iterable

Would be awesome if it could be integrated in a future release. :)

Maybe in a veeeeery future time 😉 , it has quite a peculiar behavior (only 2 operation modes: heatingNight and heatingDay), and most of the strings are different from the A/C devices... it would be quite a mess.

No rush. 😁

rospogrigio commented 3 years ago

OK now I think I should have fixed it, please update the PR and retry.

mihsu81 commented 3 years ago

OK now I think I should have fixed it, please update the PR and retry.

Working fine now. The climate entities are successfully added. Thanks a lot @rospogrigio.

P.S. And if you need testing "in a veeeeery future time 😉" for the integration of DRGATEWAYAA let me know. 😉

rospogrigio commented 3 years ago

Good! Will provide a new release then.

P.S. And if you need testing "in a veeeeery future time 😉" for the integration of DRGATEWAYAA let me know. 😉

Well, I think I won't need it because your json file should be enough, though don't count on it since I really don't have much time to play with these things nowadays... bye!