Grizzelbee / ioBroker.dysonairpurifier

ioBroker Adapter to control to your dyson fan and air purifier devices such as Pure Cool, Hot & Cool and others.
MIT License
13 stars 8 forks source link

Missing default Country value leads to problems on first startup #59

Closed theimo1221 closed 3 years ago

theimo1221 commented 3 years ago

Hello Grizzelbee,

as my new Purifier arrived yesterday I'd like to connect it with IoBroker. Unfortunately it seems like there is a problem during setup: image

Do you think this is a network issue, or could it be some interference with special chars in my password (15+ chars)?

Best Regards

Thiemo

Grizzelbee commented 3 years ago

Hi Thiemo,

as far as I can see in your log snippet the adapter is missing it's config or config isn't valid. Which means that you need to give some additional config values to the adapter: grafik

Please fill out the complete config and refer to the readme if there are questions - if readme dosen't claify all, please ask. The dyson account the adapter asks for is the same which is used for the dyson mobile app.

And - yes: special chars may be a problem in the password. But I haven't tried it. Best is to use a-z, A-Z and std english special chars like #!$? and some more. Keep away from german "Umlaute". But this is a general hint Not special for this adapter.

But: This is not the current problem. If there had been a problem with your credentials the adapter has thrown an accoring error.

theimo1221 commented 3 years ago

Thanks for the recommendations, as I'm using a password manager I'm not using german special chars. I changed the password to numbers/chars only but still have the same issue as above

This is my config: image

Edit: I just checked with Postman, atleast for the "https://appapi.cp.dyson.com/v1/userregistration/authenticate?country=de" I get a valid response (at least from my main pc) so it shouldn't be a firewall/security gateway issue

Grizzelbee commented 3 years ago

I'm pretty shure that it has nothing to do with your firewall/security gateway.

May I ask you to please switch the adapter to debug logging (Tab Instances ; expert mode) and post the log? Best is to filter to the dysonairpurifier.0 instance before posting (most left column).

Day1983 commented 3 years ago

the same Problem - with 0.7. run the adapter, bute with 0.7.1 dosnt...

My tree is deleted

image

Grizzelbee commented 3 years ago

AH! You ran 0.7.0 before?

Then please reenter the password in the config as mentioned in the readme and changelog. I had to change something in the pwd-encryption routine.

That should solve your problem.

mrtzlbm commented 3 years ago

Hi, I just had the same problem as @Day1983, however I did a fresh install of 0.7.1. I got the same errors as @Day1983. I had to change all adapter settings (including the preset ones) once. After restarting the adapter I got the adapter to show up in the object tree with the 'correct' errors. 👍

Bildschirmfoto 2021-02-07 um 15 18 50
Grizzelbee commented 3 years ago

Okay. Seems that we have two different things here:

  1. Seems like I have messed up something with saving and loading of the config. This is not unlikely since I worked on it. I'll check it.
  2. The green Part in @mrtzlbm 's Screenshot: Starting with V0.7.1 I try to connect to the device by it's serialnumber - which is also it's default hostname. This will work under two circumstances: 1. You have a FritzBox or you are running a dedicaed DNS in your LAN. 2. you haven't changed the default hostname of your device. If you can't answer all of these with YES - you'll need to enter the IP of your device since all the time before. Of course you can enter the IP even if you answerd all with yes. Neither your LAN nor the adapter should care.
mrtzlbm commented 3 years ago

@Grizzelbee I just hadn't set up the DNS record yet. Everything works fine for me, thanks :) Just wanted to check in and describe how I got around the issue with the adapter config.

Grizzelbee commented 3 years ago

@theimo1221 : Is your Issue also solved? Or are you still struggeling?

theimo1221 commented 3 years ago

@Grizzelbee I'm still struggeling: image

If you want feel free to contact me directly in Discord, so I can share my screen/problem with you today evening

EDIT: Some more information:

viper4gh commented 3 years ago

I have the same problem with a fresh 0.7.1 installation, I configured username and password in the adapter config with the same result: 2021-02-09_10-03-25__logs - ioBroker

There is no device in the device tree where I can configure the ip address. There must be something wrong on the first start of the adapter.

The Dyson API is also accessable from the iobroker system, tested with: curl -X POST -H "Content-Type: application/json" -k 'https://appapi.cp.dyson.com/v1/userregistration/authenticate?country=DE' -d '{"Email": "user@domain.xx", "Password": "xyz"}'

Grizzelbee commented 3 years ago

@viper4gh, @theimo1221 Okay. I'm just debugging the load/save config routines and enhancing the testConfig method. So please be patiend and wait for the upcoming version 0.7.2 - which should hopefully solve your problems. I'll keep you informed.

theimo1221 commented 3 years ago

@Grizzelbee Okay, I spotted the issue, it seems like the Country is null I'll dig deeper

theimo1221 commented 3 years ago

By default country was empty while the browser selects "Deutschland" as the shown value for the country selection thus making the user believe country beeing correctly chosen.

Pull Request #61 resolves this.

viper4gh commented 3 years ago

I can confirm, select the country again, solves this problem. But now it stucks at the ip address. I stopped the adapter, filled in the ip address at the Hostaddress datapoint in the device tree and started the adapter again. Now the log still shows "No host address given. Trying to connect to the device with it's default hostname", which is not resolved by DNS in my case. Will do some tests tomorrow again, maybe I did something wrong.

Update: I tested again, but the ip address will not to be saved in the config, the adapter always uses the default hostname. The only workaround was adding an Alias of the default name to my DNS server.

viper4gh commented 3 years ago

@Grizzelbee I reverted my workaround with the DNS Alias for the default Hostname to check, if the configured Hostaddress datapoint is working now after all data is received, but it is not. That means the Hostaddress datapoint is still not read by the adapter and I get the log message "No host address given..." on startup. Is there anything I need to pay special attention to for the ip address?

Grizzelbee commented 3 years ago

@viper4gh What version are you on? Or in other Words: Have you tried 0.7.3 already? This should fix this issue.

theimo1221 commented 3 years ago

@Grizzelbee with newest version there might be an error regarding credentials image

EDIT: I recieve {"Message":"Unable to authenticate user."} within Postman, while I can login through the dyson Homepage. So I'm not sure if this is a problem with latest changes.

viper4gh commented 3 years ago

@viper4gh What version are you on? Or in other Words: Have you tried 0.7.3 already? This should fix this issue.

I was still on 0.7.1, then I will test it with the new version and will give you feedback.

Grizzelbee commented 3 years ago

@theimo1221 Please try to re-enter your password. There are some changes at this position which might lead to this. Btw: Since I can't find the original question/conversation: Yes - your fix regarding the <select> has been deleted intentionally since we solved it in parallel and my fix changed more code. So it was the easiest way to drop only one line knowing the other code to work.

Btw-2: The easist way to check your enterd credentials might be to get into index_m.html line 104 and change type="password" to type="text" - that displays the unencyrpted pwd in config. <input class="value" id="Password" maxlength="32" **type="password"**>

theimo1221 commented 3 years ago

@Grizzelbee I just changed my password on dyson.de and even with new password it doesn't work

On my ioBroker Server I get following response as well: {"Message":"Unable to authenticate user."} so I don't know if I'm banned from the api This was the request I made curl -X POST -H "Content-Type: application/json" -k 'https://appapi.cp.dyson.com/v1/userregistration/authenticate?country=DE' -d '{"Email": "...", "Password": "..."}

viper4gh commented 3 years ago

I updated to 0.7.3, configured all settings again and now get the following:

2021-02-10_16-08-13__logs - ioBroker

It detects the controller 3.1.6, but says that the requirement of version 3.0.0. is not fulfilled.

viper4gh commented 3 years ago

I completely uninstalled the adapter instance and the adapter, which uninstalls the device tree, too. Then installed 0.7.3 again, configured all settings and now have the same problem as @theimo1221 :

2021-02-10_16-19-14__~capture

Update: And I get the same message on the curl command now, what was working today in the morning: {"Message":"Unable to authenticate user."}

Grizzelbee commented 3 years ago

Grrrrr!! Seems to be a timing issue. Facing it on my instances now as well where it worked first.

Sorry for that. Debugging ...

theimo1221 commented 3 years ago

What does this mean, are our accounts now rate limited, or is that a temporary thingy?

Grizzelbee commented 3 years ago

What does this mean, are our accounts now rate limited, or is that a temporary thingy?

I'm sorry - but currently I don't know. Debugging says: Credentials are okay. So it's no timing issue. My idea was, that the password is used for login before it is decryted. But thats not the case. Maybe dyson locked the adapter out. Or it's really a temporary thing. Let's wait a while and see what happens ...

viper4gh commented 3 years ago

I tested the curl command again and still get: {"Message":"Unable to authenticate user."}

It seems indeed we are now banned. At least the Dyson Link app still works.

Grizzelbee commented 3 years ago

I tested the curl command again and still get: {"Message":"Unable to authenticate user."}

Same on my side in a few different tests.

It seems indeed we are now banned.

I still don't believe really in being banned. The error message doesn't fit. But on the other hand I don't have any clue what really happend.

theimo1221 commented 3 years ago

Maybe the server tries to prevent unauthorized access by flagging those accounts which switched countries in a short time frame

viper4gh commented 3 years ago

After the adapter is working now with the workaround (https://github.com/Grizzelbee/ioBroker.dysonairpurifier/issues/65#issuecomment-778047049) I can say that the adapter is using the configured Hostadress now, which was not working in my case before.

Grizzelbee commented 3 years ago

Solved by PR https://github.com/Grizzelbee/ioBroker.dysonairpurifier/pull/66