『瀚思彼岸』» 智能家居技术论坛

 找回密码
 立即注册
查看: 32176|回复: 19

[技术探讨] 经过3晚的研究终于搞定国内添加dyson的设备 (方法暂时失效)

[复制链接]

1

主题

19

帖子

140

积分

论坛分享达人

积分
140
金钱
121
HASS币
10
发表于 2020-3-4 04:44:41 | 显示全部楼层 |阅读模式
本帖最后由 xiemuyun 于 2021-4-28 14:45 编辑

_______2021.4更新________
由于戴森中国的账号已经改用手机号注册,该方法对国内失效,国外应该正常不受影响,我最近没看dyson控件有没有更新,如果想要连接我猜估计以后只能修改一下接口的方式看手机号能不能登录,但是由于自己实在代码小白。。让我再学习学习吧,或者哪位大佬可以帮忙看看也可以

所以以下内容给大家看着当分享个思路经验就行。。


——————原文——————
背景
不知道有没有朋友也遇到过此问题在国内添加dyson设备无法成功,我翻遍了各种包括官方论坛、本论坛还有google了各种,总是没法解决,但是因为本人工作是产品狗,技术小白,只懂得一些原理,经过三天的快速python和Linux知识入门。。终于找到问题的关键!用词不专业的地方请多包涵


API地址不对!!
接下来是全过程。。希望能够帮助到同样有此问题的同学,回头我也打算看有什么办法可以到官方论坛反馈一下这个问题


本来看到官方component里面是有dyson设备的,正好家里有个360eye扫地机器人,就准备去把它接进来


下面为我的配置:
参考原文:https://www.home-assistant.io/integrations/dyson/
注意一点,language的CN亲测需要大写,如果写cn会连接不上账号
dyson:
  username: XXXXXXXX
  password: XXXXXX
  language: CN
  devices:
  - device_id: JJ8-CN-XXXXXXXX
    device_ip: 192.168.X.X
然后运行之后log出来:
2020-03-04 03:41:19 WARNING (SyncWorker_9) [homeassistant.components.dyson] Unable to find device JJ8-CN-XXXXXXXX in Dyson account
显示告诉你这个账号下面找不到这台设备,不过至此我们能确认的是账号已经连接上了,如果账号有错误会有别的提示



这个时候我去看了homeassistant里dyson的代码是这么写的:
https://github.com/home-assistant/core/blob/dev/homeassistant/components/dyson/__init__.py
"""Support for Dyson Pure Cool Link devices."""
import logging

from libpurecool.dyson import DysonAccount
import voluptuous as vol

from homeassistant.const import CONF_DEVICES, CONF_PASSWORD, CONF_TIMEOUT, CONF_USERNAME
from homeassistant.helpers import discovery
import homeassistant.helpers.config_validation as cv
好那么找到了这个是引入了一个叫libpurecool的库,然后去git上找一下这个东西
https://github.com/etheralm/libpurecool
好这还是一个刚更新没几天(2020.0229更新过)的东西
里面找到这个dyson.py的DysonAccount里上面写着这么几行东西!
 """Dyson account."""

    def __init__(self, email, password, country):
        """Create a new Dyson account.
        :param email: User email
        :param password: User password
        :param country: 2 characters language code
        """
        self._email = email
        self._password = password
        self._country = country
        self._logged = False
        self._auth = None
        if country == "CN":
            self._dyson_api_url = DYSON_API_URL_CN
        else:
            self._dyson_api_url = DYSON_API_URL
重点是最后这个if-else。。。说明啥,如果是CN的账号会用一个CN的api地址
然后上面的api地址是这样的(我不知道把api地址粘出来会不会有事。。)
Xnip2020-03-04_04-49-58.jpg 好,这个时候我们再去看一下homeassistant里面用的这个libpurecool库长什么样
我这两天学到的方法如下

先找到你的这个库的位置
sudo find / -name libpurecool


然后会看到一个地址(每个人的地址应该有点区别),进入这个地址
cd /data/docker/overlay2/XXXXXXXXXXX/merged/usr/local/lib/python3.7/site-packages/libpurecool

然后用文本编辑器打开看一下下面的dyson.py文件
sudo nano dyson.py
就可以找到跟git上一样的这个库了,然后来看看里面关于这个API怎么写的:
Xnip2020-03-04_04-49-19.jpg
也就是说在homeassistant,至少我装的0.106.4这一个版本,用树莓派docker+hass.io安装包装的(HASSOS也试过,raspbian直接装homeassistant也试过)

我在这里的方法是比较懒的,没有用原文的if-else,直接就把.com后缀改成了.cn,因为应该也不会用外国账号登录
OK然后再重启Homeassistant
然后就发生里奇迹!
Xnip2020-03-04_04-48-05.jpg
三天大半夜没算白研究,这样就可以连接成功你的dyson设备了

强烈希望如果有办法可以让官方更新一下这个库,我看到最近两个比较大的问题来自于两个新的commit
首先api地址进行了变化(28天前提交的)
Xnip2020-03-04_04-50-56.jpg
第二就是支持中国(8天前)
Xnip2020-03-04_04-50-49.jpg
相信homeassistant官方应该在不久之后也更新这个库吧,希望有所帮助,但是重点是这一趟。。我真是掌握了很多技能。。



评分

参与人数 1金钱 +20 HASS币 +10 收起 理由
+ 20 + 10 厉害了word楼主!

查看全部评分

回复

使用道具 举报

4

主题

195

帖子

565

积分

高级会员

Rank: 4

积分
565
金钱
370
HASS币
0
发表于 2020-3-5 01:34:32 | 显示全部楼层
谢谢楼主分享
回复

使用道具 举报

175

主题

2967

帖子

7606

积分

超级版主

我就是六神

Rank: 8Rank: 8

积分
7606
金钱
4614
HASS币
398

活跃会员教程狂人灌水之王

QQ
发表于 2020-3-5 02:22:11 | 显示全部楼层
根据这个岂不是 可以看看科沃斯的扫地机 是不是这个原理~
回复

使用道具 举报

3

主题

217

帖子

1443

积分

金牌会员

Rank: 6Rank: 6

积分
1443
金钱
1226
HASS币
10
发表于 2020-3-5 09:41:13 | 显示全部楼层
楼主的学习精神值得敬佩,请收下我的膝盖
回复

使用道具 举报

10

主题

680

帖子

5654

积分

论坛元老

Rank: 8Rank: 8

积分
5654
金钱
4969
HASS币
50
发表于 2020-3-5 10:33:28 | 显示全部楼层
楼主的学习精神值得敬佩,请收下我的膝盖
回复

使用道具 举报

2

主题

90

帖子

1070

积分

金牌会员

Rank: 6Rank: 6

积分
1070
金钱
980
HASS币
0
发表于 2020-3-5 13:40:44 | 显示全部楼层
楼主,请问“三天的快速python和Linux知识入门”可有啥秘籍心法?可否借一部说话?
回复

使用道具 举报

1

主题

19

帖子

140

积分

论坛分享达人

积分
140
金钱
121
HASS币
10
 楼主| 发表于 2020-3-5 23:00:45 | 显示全部楼层
froyo 发表于 2020-3-5 13:40
楼主,请问“三天的快速python和Linux知识入门”可有啥秘籍心法?可否借一部说话? ...

刷了一遍菜鸟的python教学,然后请教各种我们公司的程序员和IT。。。哈哈哈
回复

使用道具 举报

1

主题

19

帖子

140

积分

论坛分享达人

积分
140
金钱
121
HASS币
10
 楼主| 发表于 2020-3-6 03:25:33 | 显示全部楼层
jyz_0501 发表于 2020-3-5 02:22
根据这个岂不是 可以看看科沃斯的扫地机 是不是这个原理~

科沃斯也遇到了不能连接的问题么?
回复

使用道具 举报

175

主题

2967

帖子

7606

积分

超级版主

我就是六神

Rank: 8Rank: 8

积分
7606
金钱
4614
HASS币
398

活跃会员教程狂人灌水之王

QQ
发表于 2020-3-6 04:46:09 | 显示全部楼层
xiemuyun 发表于 2020-3-6 03:25
科沃斯也遇到了不能连接的问题么?

是的啊,https://github.com/wpietri/sucks/issues/21

sucks这个库不支持China  国内科沃斯扫地机没法接入HA
回复

使用道具 举报

1

主题

38

帖子

220

积分

中级会员

Rank: 3Rank: 3

积分
220
金钱
182
HASS币
0
发表于 2020-5-17 11:31:36 | 显示全部楼层
有人根据楼主的办法修改成功的吗?  我根本找不到这个文件在哪.
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2024-11-27 04:18 , Processed in 0.069747 second(s), 37 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表