Closed flinkazoid closed 2 years ago
Are you entering the local IP of the unit on the beta before you hit next? There are some instances where the kumo cache that returns will not provide the local IP address and that is most likely why the setup is prompting you with the mac address.....
Are you entering the local IP of the unit on the beta before you hit next? There are some instances where the kumo cache that returns will not provide the local IP address and that is most likely why the setup is prompting you with the mac address.....
The 0.2.7 beta does not prompt me for an IPAddress nor is there a field for entry as you would expect line in some of the screen shots. The first prompt in the 0.2.7 is just user/pass and local cache options
Nope, it should be in the screen that prompts you with the mac address, you need to wipe that out the mac and enter the local IP address of the unit.... Unfortunately we can't dynamically label the field but the dialog should state that you need to delete the mac and enter the IP
Nope, it should be in the screen that prompts you with the mac address, you need to wipe that out the mac and enter the local IP address of the unit.... Unfortunately we can't dynamically label the field but the dialog should state that you need to delete the mac and enter the IP
Just tried that and it returns UNKNOWN ERROR
can you see what is in the logs and post that?
Logger: aiohttp.server Source: data_entry_flow.py:255 First occurred: 10:15:07 AM (4 occurrences) Last logged: 10:47:24 AM
Error handling request Traceback (most recent call last): File "/usr/local/lib/python3.9/site-packages/aiohttp/web_protocol.py", line 422, in _handle_request resp = await self._request_handler(request) File "/usr/local/lib/python3.9/site-packages/aiohttp/web_app.py", line 499, in _handle resp = await handler(request) File "/usr/local/lib/python3.9/site-packages/aiohttp/web_middlewares.py", line 119, in impl return await handler(request) File "/usr/src/homeassistant/homeassistant/components/http/security_filter.py", line 60, in security_filter_middleware return await handler(request) File "/usr/src/homeassistant/homeassistant/components/http/forwarded.py", line 211, in forwarded_middleware return await handler(request) File "/usr/src/homeassistant/homeassistant/components/http/request_context.py", line 24, in request_context_middleware return await handler(request) File "/usr/src/homeassistant/homeassistant/components/http/ban.py", line 78, in ban_middleware return await handler(request) File "/usr/src/homeassistant/homeassistant/components/http/auth.py", line 144, in auth_middleware return await handler(request) File "/usr/src/homeassistant/homeassistant/components/http/view.py", line 135, in handle result = await result File "/usr/src/homeassistant/homeassistant/components/config/config_entries.py", line 155, in post return await super().post(request, flow_id) File "/usr/src/homeassistant/homeassistant/components/http/data_validator.py", line 63, in wrapper result = await method(view, request, *args, **kwargs) File "/usr/src/homeassistant/homeassistant/helpers/data_entry_flow.py", line 109, in post result = await self._flow_mgr.async_configure(flow_id, data) File "/usr/src/homeassistant/homeassistant/data_entry_flow.py", line 202, in async_configure result = await self._async_handle_step(flow, cur_step["step_id"], user_input) File "/usr/src/homeassistant/homeassistant/data_entry_flow.py", line 255, in _async_handle_step raise UnknownStep( homeassistant.data_entry_flow.UnknownStep: Handler ConfigFlow doesn't support step confirm
That might be the subsequent press that returns INVALID FLOW. Standby
This is the Main Prompt
and Unknown Error
2 logged errors are: Logger: homeassistant Source: config_entries.py:1090 First occurred: 10:51:59 AM (1 occurrences) Last logged: 10:51:59 AM
Error doing job: Task exception was never retrieved Traceback (most recent call last): File "/usr/src/homeassistant/homeassistant/config_entries.py", line 1090, in async_forward_entry_setup await entry.async_setup(self.hass, integration=integration) AttributeError: 'collections.OrderedDict' object has no attribute 'async_setup'
and
Logger: aiohttp.server Source: data_entry_flow.py:255 First occurred: 10:52:49 AM (1 occurrences) Last logged: 10:52:49 AM
Error handling request Traceback (most recent call last): File "/usr/local/lib/python3.9/site-packages/aiohttp/web_protocol.py", line 422, in _handle_request resp = await self._request_handler(request) File "/usr/local/lib/python3.9/site-packages/aiohttp/web_app.py", line 499, in _handle resp = await handler(request) File "/usr/local/lib/python3.9/site-packages/aiohttp/web_middlewares.py", line 119, in impl return await handler(request) File "/usr/src/homeassistant/homeassistant/components/http/security_filter.py", line 60, in security_filter_middleware return await handler(request) File "/usr/src/homeassistant/homeassistant/components/http/forwarded.py", line 211, in forwarded_middleware return await handler(request) File "/usr/src/homeassistant/homeassistant/components/http/request_context.py", line 24, in request_context_middleware return await handler(request) File "/usr/src/homeassistant/homeassistant/components/http/ban.py", line 78, in ban_middleware return await handler(request) File "/usr/src/homeassistant/homeassistant/components/http/auth.py", line 144, in auth_middleware return await handler(request) File "/usr/src/homeassistant/homeassistant/components/http/view.py", line 135, in handle result = await result File "/usr/src/homeassistant/homeassistant/components/config/config_entries.py", line 155, in post return await super().post(request, flow_id) File "/usr/src/homeassistant/homeassistant/components/http/data_validator.py", line 63, in wrapper result = await method(view, request, *args, **kwargs) File "/usr/src/homeassistant/homeassistant/helpers/data_entry_flow.py", line 109, in post result = await self._flow_mgr.async_configure(flow_id, data) File "/usr/src/homeassistant/homeassistant/data_entry_flow.py", line 202, in async_configure result = await self._async_handle_step(flow, cur_step["step_id"], user_input) File "/usr/src/homeassistant/homeassistant/data_entry_flow.py", line 255, in _async_handle_step raise UnknownStep( homeassistant.data_entry_flow.UnknownStep: Handler ConfigFlow doesn't support step confirm
Hope this helps
it looks like maybe you have a conflict between the versions. I would try to uninstall completely, then go into the custom_components folder and make sure that the kumo folder is no longer there at all. Then reinstall the beta only and restart homeassistant. I think you may have some old file somewhere....
Ive done that several times, and this is what my custom folder looks like. Is there anywhere else within the folder structure that Kumo would tuck something that should be nuked as well?
The kumo folder will not be under the hacs folder but directly under the custom_components folder.
Just saw the other error you posted above and some of these are not handled in the integration at all:
AttributeError: 'collections.OrderedDict' object has no attribute 'async_setup'
The other error is stating that the "confirm" step is not defined but it definitely is....you can see it on line 157 in config_flow.py
I guess there might be a chance that something is being cached somewhere....I would just nuke the kumo folder and restart, then reinstall and restart again, then finally try to setup.
Yes, thats right. Thats just VSCode appending the path because its a single folder within custom_components after the uninstall. I've rebooted, re-installed 0.2.7, and rebooted again. Ive had to remove the kumo: information from my configuration.yaml, and now upon trying to configure from UI, it reports Invalid Credentials (nothing entries in the log from this failure). This is where I was with the initial post. If I comment in the information, User/Pass, Localcache false in the YAML I can get beyond this, but it will once again fail in the next step.
Same results after your suggestions but now with a new error while setting up log:
Logger: homeassistant.components.climate Source: custom_components/kumo/climate.py:178 Integration: Climate (documentation, issues) First occurred: 11:21:45 AM (1 occurrences) Last logged: 11:21:45 AM
Error while setting up kumo 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/kumo/climate.py", line 178, in async_setup_platform success = await hass.async_add_executor_job(kumo_api.update_status) 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/pykumo/pykumo.py", line 103, in update_status response = self._request(query) File "/usr/local/lib/python3.9/site-packages/pykumo/pykumo.py", line 75, in _request url = "http://" + self._address + "/api" TypeError: can only concatenate str (not "NoneType") to str
Logger: homeassistant Source: config_entries.py:1090 First occurred: 11:21:48 AM (1 occurrences) Last logged: 11:21:48 AM
Error doing job: Task exception was never retrieved Traceback (most recent call last): File "/usr/src/homeassistant/homeassistant/config_entries.py", line 1090, in async_forward_entry_setup await entry.async_setup(self.hass, integration=integration) AttributeError: 'collections.OrderedDict' object has no attribute 'async_setup'
Logger: aiohttp.server Source: data_entry_flow.py:255 First occurred: 11:22:59 AM (1 occurrences) Last logged: 11:22:59 AM
Error handling request Traceback (most recent call last): File "/usr/local/lib/python3.9/site-packages/aiohttp/web_protocol.py", line 422, in _handle_request resp = await self._request_handler(request) File "/usr/local/lib/python3.9/site-packages/aiohttp/web_app.py", line 499, in _handle resp = await handler(request) File "/usr/local/lib/python3.9/site-packages/aiohttp/web_middlewares.py", line 119, in impl return await handler(request) File "/usr/src/homeassistant/homeassistant/components/http/security_filter.py", line 60, in security_filter_middleware return await handler(request) File "/usr/src/homeassistant/homeassistant/components/http/forwarded.py", line 211, in forwarded_middleware return await handler(request) File "/usr/src/homeassistant/homeassistant/components/http/request_context.py", line 24, in request_context_middleware return await handler(request) File "/usr/src/homeassistant/homeassistant/components/http/ban.py", line 78, in ban_middleware return await handler(request) File "/usr/src/homeassistant/homeassistant/components/http/auth.py", line 144, in auth_middleware return await handler(request) File "/usr/src/homeassistant/homeassistant/components/http/view.py", line 135, in handle result = await result File "/usr/src/homeassistant/homeassistant/components/config/config_entries.py", line 155, in post return await super().post(request, flow_id) File "/usr/src/homeassistant/homeassistant/components/http/data_validator.py", line 63, in wrapper result = await method(view, request, *args, **kwargs) File "/usr/src/homeassistant/homeassistant/helpers/data_entry_flow.py", line 109, in post result = await self._flow_mgr.async_configure(flow_id, data) File "/usr/src/homeassistant/homeassistant/data_entry_flow.py", line 202, in async_configure result = await self._async_handle_step(flow, cur_step["step_id"], user_input) File "/usr/src/homeassistant/homeassistant/data_entry_flow.py", line 255, in _async_handle_step raise UnknownStep( homeassistant.data_entry_flow.UnknownStep: Handler ConfigFlow doesn't support step confirm
hmmm. you definitely should comment out the kumo entry in configuration.yaml the only other file you may need to wipe is kumo_cache.json which is in the config folder for hass. This error:
url = "http://" + self._address + "/api"
TypeError: can only concatenate str (not "NoneType") to str
indicates that the ip in the cache file is missing, if you are at this stage you could try to go to the integrations page in homeassistant and hit configure, then try to assign the IP address and restart homeassistant after that, this should fix the cache file.
Not sure if you are comfortable testing with pykumo directly but you can probably get more info from there. If you can get to a python shell you can try:
>>> from pykumo import KumoCloudAccount
>>> account = KumoCloudAccount.Factory()
Kumo Cloud username: my.email@email.com
Password: xxxx
>>> account.try_setup()
False
That would give me a better idea as to why your credentials are being rejected....
So I dont think the username is an issue anymore with 0.2.7 as I can get past the w/o a problem, however the following window with the name and mac of my unit is where I am held up.
I'm also poking throuth the init and the config .py files and I do not see any point referencing the second entry window that keeps holding me up. Is it possible that theres a problem on the server with a bad rev'd file?
it should be in config_flow.py you can see the diff between the beta and the stable here: https://github.com/dlarrick/hass-kumo/compare/release-0.2.5...master Line 157 in config_flow.py addresses the confirm step but you can see the whole process in there of setting the local ip. Are you sure you are deleting the whole contents where it says "Downstairs c4:ac...." and just entering the ip address (ie 192.168.x.x) without http or any quotes of any kind?
Yes, Im deleting EVERYTHING.
Heres whats interesting, the config_flow.py I pull for 0.2.7 is the same as the master you for 0.2.5. Can you post a link to the config_flow.py for 0.2.7?
Heres mine
Nevermind, Im seeing it, and yes, I have 0.2.7
Can you post what error you get now that it is isolated to just entering the IP address? Maybe the error is different now?
More verbose log
2021-10-06 13:06:14 ERROR (MainThread) [aiohttp.server] Error handling request Traceback (most recent call last): File "/usr/local/lib/python3.9/site-packages/aiohttp/web_protocol.py", line 422, in _handle_request resp = await self._request_handler(request) File "/usr/local/lib/python3.9/site-packages/aiohttp/web_app.py", line 499, in _handle resp = await handler(request) File "/usr/local/lib/python3.9/site-packages/aiohttp/web_middlewares.py", line 119, in impl return await handler(request) File "/usr/src/homeassistant/homeassistant/components/http/security_filter.py", line 60, in security_filter_middleware return await handler(request) File "/usr/src/homeassistant/homeassistant/components/http/forwarded.py", line 211, in forwarded_middleware return await handler(request) File "/usr/src/homeassistant/homeassistant/components/http/request_context.py", line 24, in request_context_middleware return await handler(request) File "/usr/src/homeassistant/homeassistant/components/http/ban.py", line 78, in ban_middleware return await handler(request) File "/usr/src/homeassistant/homeassistant/components/http/auth.py", line 144, in auth_middleware return await handler(request) File "/usr/src/homeassistant/homeassistant/components/http/view.py", line 135, in handle result = await result File "/usr/src/homeassistant/homeassistant/components/config/config_entries.py", line 155, in post return await super().post(request, flow_id) File "/usr/src/homeassistant/homeassistant/components/http/data_validator.py", line 63, in wrapper result = await method(view, request, *args, **kwargs) File "/usr/src/homeassistant/homeassistant/helpers/data_entry_flow.py", line 109, in post result = await self._flow_mgr.async_configure(flow_id, data) File "/usr/src/homeassistant/homeassistant/data_entry_flow.py", line 202, in async_configure result = await self._async_handle_step(flow, cur_step["step_id"], user_input) File "/usr/src/homeassistant/homeassistant/data_entry_flow.py", line 255, in _async_handle_step raise UnknownStep( homeassistant.data_entry_flow.UnknownStep: Handler ConfigFlow doesn't support step confirm
Its that last one, the unknown step that has me curious.
This is taken from the .log file instead of the log UI
Can you try to make sure you have prefer_cache set to true (check the box)? I am pretty sure that is supposed to happen by itself if you are missing the ip address in kumo_cache... Technically you can just edit the cache file manually and add the IP address and as long as prefer_cache is true it should just work. I'm not getting much from the error as the step is there and defined and working for others. The only other things I can think of now is if you have permission issues with your configuration folder or if the cache file you get from kumo cloud is somehow different than what we expect.... you can try to paste it here but please redact any passwords and identifying data.
Its not even creating the kumoconfig.json file.
All my permissions are 644/744
If you're not getting the cache file then you will need to use pykumo to test. The cache file is written regardless if you prefer it or not and it is basically the contents of the json returned from kumo cloud. If you aren't getting anything back then the integration can't work. Can you try to run the above test I posted with pykumo?
Hey, I appreciate all your help and super quick responses, but Im affraid this one is over my head. I have a terminal/ssh within my Hassio instance, but an not sure how to run pykumo within that.
if you are running using HassOS and using the ssh addon you won't be able to do this there. But if you are running a more generic linux host, you should be able to type python at the command line and get a python shell
I can do this from a remote machine, not on-site. The site machine is a RPi3 running Hassio
In in a Python3 shell, still no idea what Im doing. Sorry, and thanks.
no worries, quit the python shell by typing quit() then, type pip install pykumo in your regular terminal. If all goes well it should successfully install. Then open the python command (just type python) In the python shell type the commands above (from pykumo import....) you do not need to type the ">>>" that will be there for you. If you get True let me know and we can go from there....leave the shell open and I will see what else I need.
I'll be leaving my laptop in a bit, if you do get "True" for the above the next command you should run is: print(account.get_raw_json()) That will print out the contents of what needs to be in your kumo_cache.json file. You can copy the contents from the terminal and paste them into this file if you create it manually in your homeassistant configuration folder. After that you should be able to use the configuration option to add the ip address or you can manually enter it, I can explain that later but keep a copy just in case so you don't have to go back to the python shell.
Trying to read into the desired syntax for KumoPy so forgive me if Im wrong, but this was the only way I was able to issue the command w/o a syntax error. also this is within the python3 shell. First Command and what it returns:
account = KumoCloudAccount.Factory(email@email.com,password) Traceback (most recent call last): File "
", line 1, in NameError: name 'KumoCloudAccount' is not defined
no, if you type: from pykumo import KumoCloudAccount and you get an error that most likely means that pykumo is not installed you have to issue pip install pykumo from the regular shell (not in the python shell) if that succeeds and you still can't get the import to work, it's most likely because you have another version of python on that station. There is one other way that may be easier for you: Go to https://app.kumocloud.com/ Open the browser dev tools and select the "Network Tab" (at least what they call it in chrome) Sign into the kumo web app and give it a minute or so, you should see a POST to the endpoint "saveUserData". Click on that and look for the "Request Payload" at the bottom. You should also see "view source" click that. Now you will need to copy all the text in there (look at the bottom as you may need to press the "show more" to get everything. That again will be your kumo_cache.json contents.
Okay, so I just manually created the file with that, it has 644 permissions, is that correct as well?
I believe so, not sure where I can see that in my system. You can do a quick search on the text to see if "address" exists and if it has the IP address listed in that field. If not you will have to add it either using the configure button in the integration or manually adding it. You can add it after the key cryptokeyset, it should look like this:
"cryptoKeySet": "F",
"address": "192.168.XX.XXX",
Okay, so I was able to get it up and running by manually generating the json file and entering the configuration in the YAML.
Not sure what was going on with the webUI setup, but Im up and running now.
Side question, I have several heads in my house, and plan on adding the cloud interface. Do I simply need to copy the JSON payload over from the web app to HA and add the IP address in the appropriate locations?
Glad you are up and running. Still curious as to why you were having that issue maybe @dlarrick may have an idea since I haven't seen that error before and not sure what would trigger it. Yes you would basically just update your kumo cache file and make sure ips are set for each unit and it should work from there. Also probably good idea to setup static or reserved ips to avoid any changes.
I'm running into a similar issue. I am using the 0.2.7 beta release to get past the issue of not being able to log in using the 0.2.5 release
2021-10-20 08:23:09 ERROR (MainThread) [aiohttp.server] Error handling request Traceback (most recent call last): File "/usr/local/lib/python3.9/site-packages/aiohttp/web_protocol.py", line 422, in _handle_request resp = await self._request_handler(request) File "/usr/local/lib/python3.9/site-packages/aiohttp/web_app.py", line 499, in _handle resp = await handler(request) File "/usr/local/lib/python3.9/site-packages/aiohttp/web_middlewares.py", line 119, in impl return await handler(request) File "/usr/src/homeassistant/homeassistant/components/http/security_filter.py", line 60, in security_filter_middleware return await handler(request) File "/usr/src/homeassistant/homeassistant/components/http/forwarded.py", line 98, in forwarded_middleware return await handler(request) File "/usr/src/homeassistant/homeassistant/components/http/request_context.py", line 24, in request_context_middleware return await handler(request) File "/usr/src/homeassistant/homeassistant/components/http/ban.py", line 78, in ban_middleware return await handler(request) File "/usr/src/homeassistant/homeassistant/components/http/auth.py", line 144, in auth_middleware return await handler(request) File "/usr/src/homeassistant/homeassistant/components/http/view.py", line 136, in handle result = await result File "/usr/src/homeassistant/homeassistant/components/config/config_entries.py", line 157, in post return await super().post(request, flow_id) File "/usr/src/homeassistant/homeassistant/components/http/data_validator.py", line 62, in wrapper result = await method(view, request, *args, *kwargs) File "/usr/src/homeassistant/homeassistant/helpers/data_entry_flow.py", line 111, in post result = await self._flow_mgr.async_configure(flow_id, data) File "/usr/src/homeassistant/homeassistant/data_entry_flow.py", line 198, in async_configure result = await self._async_handle_step(flow, cur_step["step_id"], user_input) File "/usr/src/homeassistant/homeassistant/data_entry_flow.py", line 251, in _async_handle_step raise UnknownStep( homeassistant.data_entry_flow.UnknownStep: Handler ConfigFlow doesn't support step confirm 2021-10-20 08:30:40 ERROR (MainThread) [aiohttp.server] Error handling request Traceback (most recent call last): File "/usr/local/lib/python3.9/site-packages/aiohttp/web_protocol.py", line 422, in _handle_request resp = await self._request_handler(request) File "/usr/local/lib/python3.9/site-packages/aiohttp/web_app.py", line 499, in _handle resp = await handler(request) File "/usr/local/lib/python3.9/site-packages/aiohttp/web_middlewares.py", line 119, in impl return await handler(request) File "/usr/src/homeassistant/homeassistant/components/http/security_filter.py", line 60, in security_filter_middleware return await handler(request) File "/usr/src/homeassistant/homeassistant/components/http/forwarded.py", line 98, in forwarded_middleware return await handler(request) File "/usr/src/homeassistant/homeassistant/components/http/request_context.py", line 24, in request_context_middleware return await handler(request) File "/usr/src/homeassistant/homeassistant/components/http/ban.py", line 78, in ban_middleware return await handler(request) File "/usr/src/homeassistant/homeassistant/components/http/auth.py", line 144, in auth_middleware return await handler(request) File "/usr/src/homeassistant/homeassistant/components/http/view.py", line 136, in handle result = await result File "/usr/src/homeassistant/homeassistant/components/config/config_entries.py", line 157, in post return await super().post(request, flow_id) File "/usr/src/homeassistant/homeassistant/components/http/data_validator.py", line 62, in wrapper result = await method(view, request, args, **kwargs) File "/usr/src/homeassistant/homeassistant/helpers/data_entry_flow.py", line 111, in post result = await self._flow_mgr.async_configure(flow_id, data) File "/usr/src/homeassistant/homeassistant/data_entry_flow.py", line 198, in async_configure result = await self._async_handle_step(flow, cur_step["step_id"], user_input) File "/usr/src/homeassistant/homeassistant/data_entry_flow.py", line 251, in _async_handle_step raise UnknownStep( homeassistant.data_entry_flow.UnknownStep: Handler ConfigFlow doesn't support step confirm
Hmmm...now I think I finally see the issue. It looks like the strings.json file is missing the step...which is odd because I am sure I had it set....give me a few minutes to look
can you test something for me? Can you try to edit the file config_flow.py line 158 and change "confirm" with "request_ips" Restart homeassistant and try to setup again?
@flinkazoid this may also be the issue you were having.... if you guys can confirm this fix I can add a PR...sorry, my kumo returns the addresses so my testing is limited.
In addition to the wrong step id (using "confirm" instead of "request_ips").
there is a rogue comma on 160. Fixing these two things made it pass this step
Here is the final code that made the config work for me
Should be fixed in #63
Happens in HASSIO OS installations both on a VM and RPI
Okay, Im pulling my hair out on this one. I’ve yet to see anyone with the specific issues I’m having so I’ll report as much as I can here and hope to help with as much information gathering as possible.
I’ve recently installed a single split in my house with the WiFi adapter, my phone and the web app connect just fine to the KUMO cloud and control the head as expected.
Installing HACS and then the 0.2.5 Kumo integration went as expected until I go to input my username/password. It reports back invalid credentials at this point. There are no special characters in my email or password, just an alpha-numeric mix.
If I add the kumo: information to my config.yaml and restart HASSIO when I go to add the integration on the config>integrations, it will a that point accept my username and password, however it will not add the head as a climate integration. It will interestingly populate the kumoinfo JSON with what appears to be valid data.
A subsequent restart of the HA server will then result in the integration failing to load with the following: "Logger: homeassistant.setup Source: setup.py:179 First occurred: 9:35:29 AM (1 occurrences) Last logged: 9:35:29 AM
Setup failed for kumo: Integration failed to initialize." "This error originated from a custom integration.
Logger: custom_components.kumo Source: custom_components/kumo/init.py:140 Integration: Kumo (documentation) First occurred: 9:35:29 AM (1 occurrences) Last logged: 9:35:29 AM
Could not load config from KumoCloud server or cache"
Also note that prefer local cache enabled or disabled yields the same results.
Ive tried to use the new beta and after entering my credentials it prompts me with the name of my head with its MAC address. If I press the next button, I get an “Invalid Flow” error in the HA ui.
I hope this is a good starting point to figure out what I’m doing wrong.
Please, any help is much appreciated.