本帖最后由 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.
二, 将下面的代码放到/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: 主卧
常见的问题
提问的时候请描述清楚,越具体越好
- 发现不了设备:
关于HTTPS
有些朋友说可以不用HTTPS,能够简化一些步骤。当然使用HTTPS会安全一些,以免用户名和密码直接被嗅探到。
以下是我的步骤:
- 阿里云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-----
- 在configuration.yaml里面配置ssl_certificate: /path/to/your/cert, ssl_key就不用配置了
- 需要在你的路由器做端口映射,只需映射HA的端口
论坛天猫服务转自建服务:
请使用yinyong的代码:如果之前用论坛技能接入过的设备,再用aligenie接入,会因为deviceId之前已经存在了而失效。我在你的code的基础上给deviceid增加了一个后缀,可以解决这个问题。codes,https://github.com/yinjiong/aligenie/blob/master/aligenie.py
感谢老婆的支持 !
再次感谢Yonsm的分享!
|