Closed skoging closed 2 months ago
Just to recap some of the related issues and how their solutions has not helped me:
Have you tried to restart HA?
Just to be sure I even rebooted the system just now, and there are still no devices or entities.
Debug log after reboot:
2024-06-20 22:26:43.509 WARNING (SyncWorker_0) [homeassistant.loader] We found a custom integration gardena_smart_system which has not been tested by Home Assistant. This component might cause stability problems, be sure to disable it if you experience issues with Home Assistant
2024-06-20 22:26:43.510 WARNING (SyncWorker_0) [homeassistant.loader] We found a custom integration hacs which has not been tested by Home Assistant. This component might cause stability problems, be sure to disable it if you experience issues with Home Assistant
2024-06-20 22:26:43.511 WARNING (SyncWorker_0) [homeassistant.loader] We found a custom integration roborock which has not been tested by Home Assistant. This component might cause stability problems, be sure to disable it if you experience issues with Home Assistant
2024-06-20 22:26:43.511 WARNING (SyncWorker_0) [homeassistant.loader] We found a custom integration daikin_onecta which has not been tested by Home Assistant. This component might cause stability problems, be sure to disable it if you experience issues with Home Assistant
2024-06-20 22:26:44.464 WARNING (MainThread) [homeassistant.helpers.frame] Detected that custom integration 'hacs' accesses hass.components.frontend. This is deprecated and will stop working in Home Assistant 2024.9, it should be updated to import functions used from frontend directly at custom_components/hacs/frontend.py, line 68: hass.components.frontend.async_register_built_in_panel(, please create a bug report at https://github.com/hacs/integration/issues
2024-06-20 22:26:46.538 DEBUG (MainThread) [custom_components.daikin_onecta.daikin_api] Initialing Daikin Onecta API...
2024-06-20 22:26:46.539 INFO (MainThread) [custom_components.daikin_onecta.daikin_api] Daikin Onecta API initialized.
2024-06-20 22:26:46.540 INFO (MainThread) [custom_components.daikin_onecta.coordinator] Daikin coordinator initialized with 0:30:00 interval.
2024-06-20 22:26:46.540 DEBUG (MainThread) [custom_components.daikin_onecta.coordinator] Daikin coordinator start _async_update_data.
2024-06-20 22:26:46.540 DEBUG (MainThread) [custom_components.daikin_onecta.daikin_api] BEARER REQUEST URL: https://api.onecta.daikineurope.com/v1/gateway-devices
2024-06-20 22:26:46.540 DEBUG (MainThread) [custom_components.daikin_onecta.daikin_api] BEARER TYPE GET JSON: None
2024-06-20 22:26:46.709 WARNING (MainThread) [homeassistant.helpers.entity] Entity None (<class 'custom_components.gardena_smart_system.vacuum.GardenaSmartMower'>) is using deprecated supported features values which will be removed in HA Core 2025.1. Instead it should use <VacuumEntityFeature.STOP|RETURN_HOME|BATTERY|STATE|START: 12376>, please create a bug report at https://github.com/py-smart-gardena/hass-gardena-smart-system/issues and reference https://developers.home-assistant.io/blog/2023/12/28/support-feature-magic-numbers-deprecation
2024-06-20 22:26:47.113 DEBUG (MainThread) [custom_components.daikin_onecta.daikin_api] BEARER RESPONSE CODE: 200 LIMIT: {'minute': 20, 'day': 200, 'remaining_minutes': 19, 'remaining_day': 187, 'retry_after': 0, 'ratelimit_reset': 14}
2024-06-20 22:26:47.114 DEBUG (MainThread) [custom_components.daikin_onecta.coordinator] Daikin coordinator finished _async_update_data, interval 0:30:00.
2024-06-20 22:26:47.114 DEBUG (MainThread) [custom_components.daikin_onecta.coordinator] Finished fetching daikin_onecta data in 0.574 seconds (success: True)
2024-06-20 22:26:47.123 WARNING (MainThread) [homeassistant.helpers.frame] Detected that custom integration 'hacs' accesses hass.helpers.event. This is deprecated and will stop working in Home Assistant 2024.11, it should be updated to import functions used from event directly at custom_components/hacs/base.py, line 642: self.hass.helpers.event.async_track_time_interval(, please create a bug report at https://github.com/hacs/integration/issues
2024-06-20 22:27:09.394 DEBUG (MainThread) [custom_components.daikin_onecta] Unloading integration...
2024-06-20 22:27:09.394 DEBUG (MainThread) [custom_components.daikin_onecta.daikin_api] Initialing Daikin Onecta API...
2024-06-20 22:27:09.394 INFO (MainThread) [custom_components.daikin_onecta.daikin_api] Daikin Onecta API initialized.
2024-06-20 22:27:09.394 INFO (MainThread) [custom_components.daikin_onecta.coordinator] Daikin coordinator initialized with 0:30:00 interval.
2024-06-20 22:27:09.394 DEBUG (MainThread) [custom_components.daikin_onecta.coordinator] Daikin coordinator start _async_update_data.
2024-06-20 22:27:09.394 DEBUG (MainThread) [custom_components.daikin_onecta.daikin_api] BEARER REQUEST URL: https://api.onecta.daikineurope.com/v1/gateway-devices
2024-06-20 22:27:09.394 DEBUG (MainThread) [custom_components.daikin_onecta.daikin_api] BEARER TYPE GET JSON: None
2024-06-20 22:27:09.561 DEBUG (MainThread) [custom_components.daikin_onecta.daikin_api] BEARER RESPONSE CODE: 200 LIMIT: {'minute': 20, 'day': 200, 'remaining_minutes': 19, 'remaining_day': 186, 'retry_after': 0, 'ratelimit_reset': 51}
2024-06-20 22:27:09.562 DEBUG (MainThread) [custom_components.daikin_onecta.coordinator] Daikin coordinator finished _async_update_data, interval 0:30:00.
2024-06-20 22:27:09.562 DEBUG (MainThread) [custom_components.daikin_onecta.coordinator] Finished fetching daikin_onecta data in 0.167 seconds (success: True)
I have no idea why you get an empty array back from Daikin. When it doesn't work, contact Daikin, see the business validation page of the daikin developer portal for a contact email address
Just installed my units today, 2 FTXP-N and facing the same issue as skoging.
Logs from the integration after a reboot
2024-06-22 12:27:23.273 DEBUG (MainThread) [custom_components.daikin_onecta.daikin_api] Initialing Daikin Onecta API...
2024-06-22 12:27:23.273 INFO (MainThread) [custom_components.daikin_onecta.daikin_api] Daikin Onecta API initialized.
2024-06-22 12:27:23.274 INFO (MainThread) [custom_components.daikin_onecta.coordinator] Daikin coordinator initialized with 0:10:00 interval.
2024-06-22 12:27:23.275 DEBUG (MainThread) [custom_components.daikin_onecta.coordinator] Daikin coordinator start _async_update_data.
2024-06-22 12:27:23.275 DEBUG (MainThread) [custom_components.daikin_onecta.daikin_api] BEARER REQUEST URL: https://api.onecta.daikineurope.com/v1/gateway-devices
2024-06-22 12:27:23.275 DEBUG (MainThread) [custom_components.daikin_onecta.daikin_api] BEARER TYPE GET JSON: None
2024-06-22 12:27:23.456 DEBUG (MainThread) [custom_components.daikin_onecta.daikin_api] BEARER RESPONSE CODE: 200 LIMIT: {'minute': 20, 'day': 200, 'remaining_minutes': 19, 'remaining_day': 195, 'retry_after': 0, 'ratelimit_reset': 37}
2024-06-22 12:27:23.456 DEBUG (MainThread) [custom_components.daikin_onecta.coordinator] Daikin coordinator finished _async_update_data, interval 0:10:00.
2024-06-22 12:27:23.456 DEBUG (MainThread) [custom_components.daikin_onecta.coordinator] Finished fetching daikin_onecta data in 0.182 seconds (success: True)
Edit. solved by deleting and recreating an app on the developer portal
Perhaps a stupid question, since my devices are also not listed as well. How is this supposed to work in general? How is the connection made between the daikin developer account and the devices I registered in the onecta smartphone app? Am I missing something here?
Because I also don't see any devices in the developer portal
Link is made on your email address, you should use the same email address for the onecta app and the developer account
Am I supposed to see the connected devices in the developer portal?
I think when you authorize yourself within the specification part you could see your devices. Make sure you use the same email address for the onecta app and the developer portal
I did again as @Borgotto mentioned and now it the devices show up. Thanks for your great work @jwillemsen
@skoging Can you also try to delete and recreate the application on the daikin developer portal as @Borgotto reported as solution?
Hi @jwillemsen. I have the same issue. I logged in with the same credentials as on my Onecta app, created an app, installed your repo with the credentials and (of course) restarted HA. Actually I have three devices running in Onecta app but unfortunately in HA no device is available :(
Edit: The integration reports no errors but when I have a look to the API at the developer portal I see there are no requests. So, it seems there is going something wrong.
On the Daikin developer portal nobody sees the requests made, just a not supported feature. Have you tried to suggestion to delete and recreate the application on the daikin developer portal and reinstall the daikin_onecta integration with the new client id/secret of the new application?
On the Daikin developer portal nobody sees the requests made, just a not supported feature. Have you tried to suggestion to delete and recreate the application on the daikin developer portal and reinstall the daikin_onecta integration with the new client id/secret of the new application?
Thanks for your quick reply!!!
Interesting 🙄 Displaying informations which are actually not available 🤣
Regarding you proposal. No I didn't because I created that application an hour or so before my post. Do you really think that this will help in that case?
Just try it, no idea why we don't get data from Daikin
I did. Still no entities :(
Please contact daikin, see the business_validation page of the daikin developer portal for their contact details. Please add any feedback here
Please contact daikin, see the business_validation page of the daikin developer portal for their contact details. Please add any feedback here
Will do but what shall I write when I they ask for more details?
Provide them the details of your onecta account (email address) and the application name you use on the portal, hopefully they can find something in the logs at their side
I wrote them. Let's see whether I get some information which may be useful for us or better to say for you.
I tried also their online to tool to make requests with curl and I get the following response:
{ "message": "Unauthorized" }
This is weird because I get no error in HA.
Strange, can you see the return code, is it 200 or something else?
What does /v1/gateway-devices
return, that is what the daikin_onecta integration calls
Ok, strange, at the moment it returned 401 I would expect to see some error logging. I will add some more logging to the code, but looks this is useful information for daikin
I hope this issue will be solved ^^
I tried to refresh the secret which also throws an error:
Failed to refresh secret: status 400, title Bad Request, instance kong:trace:9167949511283599485, detail unable to refresh secret DCR from HTTP. HTTP ERROR. error:Unsupported operation. error_description:More info can be found in the 'Application overview' section in Getting Started., invalid_parameters
So, now I am completely confused.
I tried again to delete and create a new app. Deletion was no problem but when creating the new app I was not forwarded to the redirection URI.
Did you remove the old credentials in HA, see the reinstall in the readme
Did you remove the old credentials in HA, see the reinstall in the readme
Of course.
The app is being created but no forwarding ...
Try a private browser window
I tried to reintegrate a new one in HA and then I was forwarded. Unfortunately still no devices :(
To be honest, I feel a bit fooled. I got the information from Daikin support that I obviously used a wrong secret. Well, I copied and pasted Id and secret to Enpass and used it without success. Now, after that mail, I deleted the app and created a new one. I copied and pasted to a text editor and with these credentials I configured the integration again. And now it works, what is fine.
But: What is working wrong here? Enpass, which never caused problems before? Or did the something and it is working fine now?
Anyway, it works for me. Lucky me!
Edit: Btw. with these credentials I tried at their site and guess what happened. It throws a 401 error 🙄
Maybe by accident you added a space or some other character to the secret when copying? Good to hear that it works now
Sorry for the late response! I've been away at vacation so I have not had a chance to follow up on the responses to this issue.
I have just tried again from the start:
/v1/gateway-devices
endpoint first, got 200 OK response with a JSON array containing my heat pump device as expected. 2024-07-28 23:07:26.693 INFO (MainThread) [custom_components.daikin_onecta.config_flow] Successfully authenticated
2024-07-28 23:07:26.693 DEBUG (MainThread) [custom_components.daikin_onecta.daikin_api] Initialing Daikin Onecta API...
2024-07-28 23:07:26.693 INFO (MainThread) [custom_components.daikin_onecta.daikin_api] Daikin Onecta API initialized.
2024-07-28 23:07:26.693 INFO (MainThread) [custom_components.daikin_onecta.coordinator] Daikin coordinator initialized with 0:30:00 interval.
2024-07-28 23:07:26.693 DEBUG (MainThread) [custom_components.daikin_onecta.coordinator] Daikin coordinator start _async_update_data.
2024-07-28 23:07:26.693 DEBUG (MainThread) [custom_components.daikin_onecta.daikin_api] BEARER REQUEST URL: https://api.onecta.daikineurope.com/v1/gateway-devices
2024-07-28 23:07:26.693 DEBUG (MainThread) [custom_components.daikin_onecta.daikin_api] BEARER TYPE GET JSON: None
2024-07-28 23:07:26.904 DEBUG (MainThread) [custom_components.daikin_onecta.daikin_api] BEARER RESPONSE CODE: 200 LIMIT: {'minute': 20, 'day': 200, 'remaining_minutes': 19, 'remaining_day': 194, 'retry_after': 0, 'ratelimit_reset': 34}
2024-07-28 23:07:26.905 DEBUG (MainThread) [custom_components.daikin_onecta.coordinator] Daikin coordinator finished _async_update_data, interval 0:30:00.
2024-07-28 23:07:26.905 DEBUG (MainThread) [custom_components.daikin_onecta.coordinator] Finished fetching daikin_onecta data in 0.211 seconds (success: True)
Either the integration is getting a different JSON response than I get when testing the API myself, or the integration is interpreting the response incorrectly. Unfortunately I can't say for sure with the logs that are output. Is there any good way to capture the full http request/response with body and headers to inspect it?
I could report this to Daikin support, but seeing as everything works as expected in all my own tests I'm not sure how much they can assist. Having the full request/response data of the integration would maybe help in determining if this is an issue in the integration or the API.
No idea what is happening, maybe you can change the code locally and log res.json(), see daikin_api.py, around line 105
I forked and added logging of response body and headers as suggested, and the response is definitely an empty json array. I logged the token as well so that I could try the exact same request with curl. There's definitely something up here. With the token that HA receives, I only get empty array responses, but the token that I get using Bruno get the expected device in the response.
I inspected the tokens with jwt.io as well, no discernible difference that would indicate that they would get different responses.
I've reported the issue to Daikin and I'm waiting for a response, but I wanted to report my findings so far here in case others are stuck with this issue.
I got an explanation and a fix from the Daikin developer support:
The issue was caused by me having two separate accounts for the same email. One linked to Google, the other to Apple. When using Bruno I used the Apple login method as that was the easiest there, and everything worked as expected. When adding the integration in Home Assistant I was already logged into Google in Chrome, so that was the easiest option. By making sure I also used Apple to login to my Daikin account when adding the integration to HA everything worked, and my device showed up (I did this by switching to Safari, as I had trouble properly logging out of the Daikin account in Chrome).
When logging in with a new social login option initially, I should have been asked to link it to my existing account. Either I declined to link the accounts, which I doubt, or this didn't work properly and I was never asked to link the accounts. I suspect that this was caused by me creating the account for the Onecta app on my iPhone using apple login, and the creating the developer account using Google login. This somehow led to two accounts being made, instead of me getting the option to link them.
I was asked to contact using this form to rectify the account problems: https://daikin.formstack.com/forms/cdc_support_english The issue with duplicate accounts has not yet been resolved for me, but the workaround of using apple login instead is working fine.
Under the "Prerequisites" section of the Readme, I would suggest to add a note about potential issues if the developer account is created with a different social login then the Onecta App account. Also that a workaround is to use a different social login when adding the integration to Home Assistant, if no devices show up.
Thanks for the feedback, I have extended the readme
Version: 4.1.6
Diagnostics (Daikin Onecta Config)
```json { "home_assistant": { "installation_type": "Home Assistant OS", "version": "2024.6.3", "dev": false, "hassio": true, "virtualenv": false, "python_version": "3.12.2", "docker": true, "arch": "x86_64", "timezone": "Europe/Oslo", "os_name": "Linux", "os_version": "6.6.33-haos", "supervisor": "2024.06.0", "host_os": "Home Assistant OS 12.4", "docker_version": "26.1.4", "chassis": "vm", "run_as_root": true }, "custom_components": { "gardena_smart_system": { "documentation": "https://github.com/py-smart-gardena/hass-gardena-smart-system", "version": "1.0.0", "requirements": [ "py-smart-gardena==1.3.8" ] }, "hacs": { "documentation": "https://hacs.xyz/docs/configuration/start", "version": "1.34.0", "requirements": [ "aiogithubapi>=22.10.1" ] }, "roborock": { "documentation": "https://github.com/humbertogontijo/homeassistant-roborock", "version": "1.0.13", "requirements": [ "python-roborock==0.36.0", "ical==6.1.0", "dacite==1.8.0" ] }, "daikin_onecta": { "documentation": "https://github.com/jwillemsen/daikin_onecta", "version": "4.1.6", "requirements": [] } }, "integration_manifest": { "domain": "daikin_onecta", "name": "Daikin Onecta", "codeowners": [ "jwillemsen" ], "config_flow": true, "dependencies": [ "application_credentials" ], "documentation": "https://github.com/jwillemsen/daikin_onecta", "iot_class": "cloud_polling", "issue_tracker": "https://github.com/jwillemsen/daikin_onecta/issues", "requirements": [], "version": "4.1.6", "is_built_in": false }, "setup_times": {}, "data": { "json_data": [], "rate_limits": { "minute": 20, "day": 200, "remaining_minutes": 19, "remaining_day": 191, "retry_after": 0, "ratelimit_reset": 27 }, "options": { "__type": "",
"repr": "mappingproxy({'high_scan_interval': 10.0, 'low_scan_interval': 30.0, 'high_scan_start': '07:00:00', 'low_scan_start': '22:00:00', 'scan_ignore': 30.0})"
},
"oauth2_token_valid": true
}
}
```
Debug log (Daikin Onecta log June 20 2024.log)
```sh 2024-06-20 20:41:31.336 DEBUG (MainThread) [custom_components.daikin_onecta] Unloading integration... 2024-06-20 20:41:31.337 DEBUG (MainThread) [custom_components.daikin_onecta.daikin_api] Initialing Daikin Onecta API... 2024-06-20 20:41:31.337 INFO (MainThread) [custom_components.daikin_onecta.daikin_api] Daikin Onecta API initialized. 2024-06-20 20:41:31.337 INFO (MainThread) [custom_components.daikin_onecta.coordinator] Daikin coordinator initialized with 0:10:00 interval. 2024-06-20 20:41:31.337 DEBUG (MainThread) [custom_components.daikin_onecta.coordinator] Daikin coordinator start _async_update_data. 2024-06-20 20:41:31.337 DEBUG (MainThread) [custom_components.daikin_onecta.daikin_api] BEARER REQUEST URL: https://api.onecta.daikineurope.com/v1/gateway-devices 2024-06-20 20:41:31.337 DEBUG (MainThread) [custom_components.daikin_onecta.daikin_api] BEARER TYPE GET JSON: None 2024-06-20 20:41:31.667 DEBUG (MainThread) [custom_components.daikin_onecta.daikin_api] BEARER RESPONSE CODE: 200 LIMIT: {'minute': 20, 'day': 200, 'remaining_minutes': 19, 'remaining_day': 194, 'retry_after': 0, 'ratelimit_reset': 29} 2024-06-20 20:41:31.667 DEBUG (MainThread) [custom_components.daikin_onecta.coordinator] Daikin coordinator finished _async_update_data, interval 0:10:00. 2024-06-20 20:41:31.667 DEBUG (MainThread) [custom_components.daikin_onecta.coordinator] Finished fetching daikin_onecta data in 0.330 seconds (success: True) 2024-06-20 21:00:33.590 DEBUG (MainThread) [custom_components.daikin_onecta] Unloading integration... 2024-06-20 21:00:33.590 DEBUG (MainThread) [custom_components.daikin_onecta.daikin_api] Initialing Daikin Onecta API... 2024-06-20 21:00:33.590 INFO (MainThread) [custom_components.daikin_onecta.daikin_api] Daikin Onecta API initialized. 2024-06-20 21:00:33.591 INFO (MainThread) [custom_components.daikin_onecta.coordinator] Daikin coordinator initialized with 0:10:00 interval. 2024-06-20 21:00:33.591 DEBUG (MainThread) [custom_components.daikin_onecta.coordinator] Daikin coordinator start _async_update_data. 2024-06-20 21:00:33.591 DEBUG (MainThread) [custom_components.daikin_onecta.daikin_api] BEARER REQUEST URL: https://api.onecta.daikineurope.com/v1/gateway-devices 2024-06-20 21:00:33.591 DEBUG (MainThread) [custom_components.daikin_onecta.daikin_api] BEARER TYPE GET JSON: None 2024-06-20 21:00:33.840 DEBUG (MainThread) [custom_components.daikin_onecta.daikin_api] BEARER RESPONSE CODE: 200 LIMIT: {'minute': 20, 'day': 200, 'remaining_minutes': 19, 'remaining_day': 191, 'retry_after': 0, 'ratelimit_reset': 27} 2024-06-20 21:00:33.841 DEBUG (MainThread) [custom_components.daikin_onecta.coordinator] Daikin coordinator finished _async_update_data, interval 0:10:00. 2024-06-20 21:00:33.841 DEBUG (MainThread) [custom_components.daikin_onecta.coordinator] Finished fetching daikin_onecta data in 0.250 seconds (success: True) ```
The debug logs indicate that the JSON array returned from
https://api.onecta.daikineurope.com/v1/gateway-devices
is empty. I've tried the same request in Bruno using an access token for the same API application, and I get a response with the data I expect in the response:I cannot say for sure if the integration is actually receiving an empty response, or if it instead is somehow interpreting the response above incorrectly.