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

 找回密码
 立即注册
查看: 264636|回复: 333

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

  [复制链接]

5

主题

95

帖子

617

积分

论坛技术达人

积分
617
金钱
507
HASS币
60
发表于 2018-9-4 22:16:02 | 显示全部楼层 |阅读模式
本帖最后由 feversky 于 2019-4-23 09:13 编辑

首先感谢Yonsm分享的gate代码
感谢azuwis(Zhong Jianxin)的bug fix以及功能添加。

基本原理如下:

HA已经自带oAuth2,所以只需要实现一个网关就好了。  

使用自带的oAuth2进行认证,认证时会自动转到个人服务器的登录页面,用户登录后即授权成功。在custom_component里面创建gate后会自动向HA注册一个gate网址;gate会验证post过来的token,并响应来自服务器的命令  

步骤:

, AliGenie开发者平台创建技能,配置见下方的图片,前提是要启用HTTPS.
enter image description here
, 将下面的代码放到/config/custom_components目录下面:
https://github.com/feversky/aligenie/blob/master/aligenie.py
,同时在configuration.yaml里面加入下面的内容:  

aligenie:  
  expire_hours: 30  

expire_hours意思是多少个小时后需要重新进行授权。  

是不是很简单?
注意需要更新到最新的软件版本,注意备份config  

从用户登录页面跳转到返回设备列表页面如果正常,说明认证部分是通过的。

关于Configuration里面的配置,一定要读

关于HA里面设备的配置,请参考下面链接里面的“二、进阶配置”,否则会识别不出来https://bbs.hassbian.com/forum.php?mod=viewthread&tid=2700  例子如下, 在customize.yaml里面:  

  switch.light:  
    friendly_name: 主卧灯  
    hagenie_deviceName: 灯  
    hagenie_deviceType: light  
    hagenie_zone: 主卧  

常见的问题

提问的时候请描述清楚,越具体越好

  1. 发现不了设备:
    • 重新读一遍帖子,仔细看
    • 确定认证部分没有报错,确认是按照上节的链接里正确配置的
    • 在configuration里面打开logger, 配置如下:
      logger:
      default: info

      在日志中可以看到发现设备的请求:
      [custom_components.aligenie] recevied data: xxxx
      [custom_components.aligenie] respnose: xxxx
      检查下response是否正确

关于HTTPS

有些朋友说可以不用HTTPS,能够简化一些步骤。当然使用HTTPS会安全一些,以免用户名和密码直接被嗅探到。
以下是我的步骤:  

  1. 阿里云1块钱注册域名,并在阿里云申请免费的SSL证书,下载证书后,将xxxxx.key, public.pem, chain.pem合并在一起,结果如下:
    -----BEGIN RSA PRIVATE KEY-----
    XXXX
    -----END RSA PRIVATE KEY-----
    -----BEGIN CERTIFICATE-----
    XXXX
    -----END CERTIFICATE-----
    -----BEGIN CERTIFICATE-----
    XXXX
    -----END CERTIFICATE-----  
  2. 在configuration.yaml里面配置ssl_certificate: /path/to/your/cert, ssl_key就不用配置了  
  3. 需要在你的路由器做端口映射,只需映射HA的端口  

论坛天猫服务转自建服务:

请使用yinyong的代码:如果之前用论坛技能接入过的设备,再用aligenie接入,会因为deviceId之前已经存在了而失效。我在你的code的基础上给deviceid增加了一个后缀,可以解决这个问题。codes,https://github.com/yinjiong/aligenie/blob/master/aligenie.py


感谢老婆的支持  !

再次感谢Yonsm的分享!









capture.jpg

评分

参与人数 4金钱 +48 收起 理由
xieahui + 5 实测已经可以不用HTTPS了(不用SSL).
neroxps + 16 膜拜大神!
maybeloveu + 7 膜拜大神!
+ 20 大神的节奏,技术达人走起!

查看全部评分

回复

使用道具 举报

42

主题

523

帖子

2517

积分

金牌会员

Rank: 6Rank: 6

积分
2517
金钱
1989
HASS币
30
发表于 2018-9-4 22:32:21 | 显示全部楼层
建议把“configuration.yaml 的 aligenie: 做成密码”,在

aligenie: 
  client secret:XXXXXXXXXXXXX
   
回复

使用道具 举报

5

主题

95

帖子

617

积分

论坛技术达人

积分
617
金钱
507
HASS币
60
 楼主| 发表于 2018-9-4 22:33:44 来自手机 | 显示全部楼层
czweb 发表于 2018-9-4 22:32
建议把“configuration.yaml 的 aligenie: 做成密码”,在
[code]
aligenie:

不用密码,在authorize的时候由用户自己输入用户名和密码进行授权
回复

使用道具 举报

13

主题

400

帖子

2790

积分

金牌会员

Rank: 6Rank: 6

积分
2790
金钱
2390
HASS币
0
发表于 2018-9-4 22:55:19 | 显示全部楼层
感谢大神分享,这样就太方便了。
回复

使用道具 举报

13

主题

400

帖子

2790

积分

金牌会员

Rank: 6Rank: 6

积分
2790
金钱
2390
HASS币
0
发表于 2018-9-4 23:37:14 | 显示全部楼层
用不了啊,不知怎么配置。我的是https的网址。
回复

使用道具 举报

13

主题

400

帖子

2790

积分

金牌会员

Rank: 6Rank: 6

积分
2790
金钱
2390
HASS币
0
发表于 2018-9-4 23:38:17 | 显示全部楼层
https://www.*****home.cn/auth/token返回405: Method Not Allowed
回复

使用道具 举报

175

主题

2967

帖子

7606

积分

超级版主

我就是六神

Rank: 8Rank: 8

积分
7606
金钱
4614
HASS币
398

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

QQ
发表于 2018-9-5 02:45:39 | 显示全部楼层
这意思 不用本地搭建 环境了吗?? 直接精灵后台开启 然后一个插件放进去  就OK了?
回复

使用道具 举报

5

主题

95

帖子

617

积分

论坛技术达人

积分
617
金钱
507
HASS币
60
 楼主| 发表于 2018-9-5 07:17:48 | 显示全部楼层
maybeloveu 发表于 2018-9-4 23:38
https://www.*****home.cn/auth/token返回405: Method Not Allowed

只能响应post,是自己测试返回的结果?另外请更新到新版本的HA
枸杞泡咖啡,我只要喝一杯~~~
回复

使用道具 举报

5

主题

95

帖子

617

积分

论坛技术达人

积分
617
金钱
507
HASS币
60
 楼主| 发表于 2018-9-5 07:19:05 | 显示全部楼层
jyz_0501 发表于 2018-9-5 02:45
这意思 不用本地搭建 环境了吗?? 直接精灵后台开启 然后一个插件放进去  就OK了? ...

是的,就是这么简单粗暴
枸杞泡咖啡,我只要喝一杯~~~
回复

使用道具 举报

2

主题

79

帖子

319

积分

中级会员

Rank: 3Rank: 3

积分
319
金钱
240
HASS币
0
发表于 2018-9-5 07:22:59 来自手机 | 显示全部楼层
谢谢分享,,,
回复

使用道具 举报

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

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2024-11-24 03:55 , Processed in 0.138850 second(s), 38 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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