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

 找回密码
 立即注册
楼主: feversky

[进阶教程] 天猫精灵网关, oAuth2认证, 无需额外搭建服务器

  [复制链接]

21

主题

294

帖子

2551

积分

论坛技术达人

积分
2551
金钱
2207
HASS币
180

教程狂人

发表于 2018-9-22 14:27:14 | 显示全部楼层
楼主的代码还有2个问题……

1. 之前我有根据 places 自动切分 friendly_name 的功能,你改造了之后,places 下载时没有声明成 global,导致切分功能无效,进而导致zone错误(以及你主贴中提到的需要声明 hagenie_zone就是这个原因,实际上我自己的HA配置文件是没有配置hagenie_zone的),还有sensor也是根据zone来创建的也会有问题;

2. 另外移除错误会导致”天猫精灵,客厅灯开着吗”这种查询电源状态的功能失效。

已稍微重构调整了一下,看代码比对一下:https://github.com/Yonsm/HAExtra ... ponents/aligenie.py
回复

使用道具 举报

0

主题

22

帖子

152

积分

论坛积极会员

积分
152
金钱
130
HASS币
0
发表于 2018-9-23 00:12:09 | 显示全部楼层
Yonsm 发表于 2018-9-22 14:27
楼主的代码还有2个问题……

1. 之前我有根据 places 自动切分 friendly_name 的功能,你改造了之后,place ...

  用了这个版本,能够获取gate的设备了。

但大家要注意,Yonsm这个版本的gate页面的url是 /aligenie
天猫精灵的开发者网关地址 要改掉 https://domain:port/aligenie
回复

使用道具 举报

5

主题

95

帖子

617

积分

论坛技术达人

积分
617
金钱
507
HASS币
60
 楼主| 发表于 2018-9-23 16:36:23 | 显示全部楼层
Yonsm 发表于 2018-9-22 14:27
楼主的代码还有2个问题……

1. 之前我有根据 places 自动切分 friendly_name 的功能,你改造了之后,place ...

hi Yonsm, 谢谢你的建议和修改,代码也清爽了不少。你写代码好认真,佩服!。我已经合并了你的代码
另外有两点说明:
1. places和aliases的获取都放在了async_setup里面。如果放在discoveryDevice里面,可能会因为网速等原因造成失败,我经常遇到。另外估计大部分用户也不在乎这点性能上的消耗,能尽量少改脚本就越好。所以我也没加CHECK_ALIAS,expire_hours也没改动。
2. 关于refresh_token,天猫精灵的文档我也看了,以为会自动刷新token,结果并没有。超过半小时就失效了,需要重新授权。当时也懒得去分析,就选了个简单的方法。
枸杞泡咖啡,我只要喝一杯~~~
回复

使用道具 举报

175

主题

2967

帖子

7608

积分

超级版主

我就是六神

Rank: 8Rank: 8

积分
7608
金钱
4616
HASS币
398

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

QQ
发表于 2018-9-24 11:03:16 | 显示全部楼层
阿里的SSL没有免费的了 我申请了个腾讯的,也是同样可以使用吗?
没有公网ip可以吗
回复

使用道具 举报

12

主题

268

帖子

1351

积分

金牌会员

Rank: 6Rank: 6

积分
1351
金钱
1083
HASS币
4
发表于 2018-9-25 18:00:44 | 显示全部楼层
效果看评论,结果真的有好东西
回复

使用道具 举报

9

主题

534

帖子

4542

积分

元老级技术达人

积分
4542
金钱
3998
HASS币
60
发表于 2018-9-26 10:56:45 | 显示全部楼层

Error during setup of component aligenie
Traceback (most recent call last):
  File "/srv/homeassistant/homeassistant_venv/lib/python3.6/site-packages/homeassistant/setup.py", line 148, in _async_setup_component
    component.setup, hass, processed_config)  # type: ignore
AttributeError: module 'custom_components.aligenie' has no attribute 'setup'
问下这个是什么问题呢? HA 0.78 /0.78.3 都一样
回复

使用道具 举报

1

主题

67

帖子

1435

积分

金牌会员

Rank: 6Rank: 6

积分
1435
金钱
1368
HASS币
0
发表于 2018-9-26 20:14:59 | 显示全部楼层
Yonsm 发表于 2018-9-22 14:27
楼主的代码还有2个问题……

1. 之前我有根据 places 自动切分 friendly_name 的功能,你改造了之后,place ...

用了这个,能够获取设备了。就是有2各问题
1、这个代码支持传值吗?
2、这个代码会把所有匹配的设备都导入,是否能够屏蔽某些设备?
回复

使用道具 举报

5

主题

95

帖子

617

积分

论坛技术达人

积分
617
金钱
507
HASS币
60
 楼主| 发表于 2018-9-27 23:02:41 | 显示全部楼层
本帖最后由 feversky 于 2018-9-27 23:13 编辑
sangood 发表于 2018-9-20 17:16
我的小米扫地机 报错了。已经更新到最新版本。
vacuum.xiaomi_vacuum_cleaner:
  friendly_name: 扫地机

扫地机器人已经可以用了,请下载新的脚本打开=自动清扫,关闭=返回充电
枸杞泡咖啡,我只要喝一杯~~~
回复

使用道具 举报

5

主题

95

帖子

617

积分

论坛技术达人

积分
617
金钱
507
HASS币
60
 楼主| 发表于 2018-9-27 23:05:11 | 显示全部楼层
sangood 发表于 2018-9-26 10:56
Error during setup of component aligenie
Traceback (most recent call last):
  File "/srv/homeassist ...

你的问题很难调试,我使用的是docker,没有什么问题。新建一个venv试试呢
枸杞泡咖啡,我只要喝一杯~~~
回复

使用道具 举报

9

主题

534

帖子

4542

积分

元老级技术达人

积分
4542
金钱
3998
HASS币
60
发表于 2018-9-28 09:25:07 | 显示全部楼层
feversky 发表于 2018-9-27 23:05
你的问题很难调试,我使用的是docker,没有什么问题。新建一个venv试试呢

感谢,用最新版本,已经没有这个问题了。
可以控制灯的开关了。
有个问题,我控制灯的颜色的时候,报了个错误:


2018-09-28 09:19:52 ERROR (MainThread) [custom_components.aligenie] Traceback (most recent call last):
  File "/home/homeassistant/.homeassistant/custom_components/aligenie.py", line 102, in post
    response = await handleRequest(data)
  File "/home/homeassistant/.homeassistant/custom_components/aligenie.py", line 137, in handleRequest
    result = await controlDevice(name, payload)
  File "/home/homeassistant/.homeassistant/custom_components/aligenie.py", line 243, in controlDevice
    result = await _hass.services.async_call(domain, service, data, True)
  File "/srv/homeassistant/homeassistant_venv/lib/python3.6/site-packages/homeassistant/core.py", line 1074, in async_call
    done, _ = await asyncio.wait([fut], timeout=SERVICE_CALL_LIMIT)
  File "/usr/lib/python3.6/asyncio/tasks.py", line 313, in wait
    return (yield from _wait(fs, timeout, return_when, loop))
  File "/usr/lib/python3.6/asyncio/tasks.py", line 396, in _wait
    yield from waiter
concurrent.futures._base.CancelledError
2018-09-28 09:19:52 ERROR (MainThread) [aiohttp.server] Unhandled exception
Traceback (most recent call last):
  File "/srv/homeassistant/homeassistant_venv/lib/python3.6/site-packages/aiohttp/web_protocol.py", line 410, in start
    await resp.prepare(request)
  File "/srv/homeassistant/homeassistant_venv/lib/python3.6/site-packages/aiohttp/web_response.py", line 300, in prepare
    return await self._start(request)
  File "/srv/homeassistant/homeassistant_venv/lib/python3.6/site-packages/aiohttp/web_response.py", line 608, in _start
    return await super()._start(request)
  File "/srv/homeassistant/homeassistant_venv/lib/python3.6/site-packages/aiohttp/web_response.py", line 367, in _start
    await writer.write_headers(status_line, headers)
  File "/srv/homeassistant/homeassistant_venv/lib/python3.6/site-packages/aiohttp/http_writer.py", line 110, in write_headers
    self._write(buf)
  File "/srv/homeassistant/homeassistant_venv/lib/python3.6/site-packages/aiohttp/http_writer.py", line 67, in _write
    raise ConnectionResetError('Cannot write to closing transport')
ConnectionResetError: Cannot write to closing transport
回复

使用道具 举报

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

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2024-12-25 12:19 , Processed in 0.090860 second(s), 32 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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