本帖最后由 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地址粘出来会不会有事。。)
好,这个时候我们再去看一下homeassistant里面用的这个libpurecool库长什么样
我这两天学到的方法如下
先找到你的这个库的位置
sudo find / -name libpurecool
复制代码
然后会看到一个地址(每个人的地址应该有点区别),进入这个地址
cd /data/docker/overlay2/XXXXXXXXXXX/merged/usr/local/lib/python3.7/site-packages/libpurecool
复制代码
然后用文本编辑器打开看一下下面的dyson.py文件
就可以找到跟git上一样的这个库了,然后来看看里面关于这个API怎么写的:
也就是说在homeassistant,至少我装的0.106.4这一个版本,用树莓派docker+hass.io安装包装的(HASSOS也试过,raspbian直接装homeassistant也试过)
我在这里的方法是比较懒的,没有用原文的if-else,直接就把.com后缀改成了.cn,因为应该也不会用外国账号登录
OK然后再重启Homeassistant
然后就发生里奇迹!
三天大半夜没算白研究,这样就可以连接成功你的dyson设备了
强烈希望如果有办法可以让官方更新一下这个库,我看到最近两个比较大的问题来自于两个新的commit
首先api地址进行了变化(28天前提交的)
第二就是支持中国(8天前)
相信homeassistant官方应该在不久之后也更新这个库吧,希望有所帮助,但是重点是这一趟。。我真是掌握了很多技能。。