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

 找回密码
 立即注册
查看: 21267|回复: 25

[经验分享] docker下配置OAuth2使HASS接入天猫精灵

[复制链接]

26

主题

94

帖子

1943

积分

金牌会员

Rank: 6Rank: 6

积分
1943
金钱
1814
HASS币
60

教程狂人论坛风云人物突出贡献

发表于 2017-11-30 13:46:52 | 显示全部楼层 |阅读模式
本帖最后由 FrankLv 于 2017-11-30 22:44 编辑

本人测试了debian实体环境和docker将hass接入天猫精灵,都可以实现,看到论坛有大神放出成功案例,我在这就介绍下docker如何接入吧,有时间我再说说debian实体环境如何接入。

在此感谢25989406、感谢KleinerSource、感谢大家、感谢论坛给我们有个很好的学习和折腾的环境。

其他就不多说了,下面来干货。
搭建环境非常重要,非常重要,非常重要
镜像推荐使用“1and1internet/ubuntu-16-nginx-php-phpmyadmin-mariadb-10”,其实1and1internet这家伙做了好些镜像,基本都差不错。

(1)环境准备
便于方便我将所有配置做好了做成附件,下载后解压到您宿主机相应位置,这个位置大家要记住(如果想知道怎么做的可以私信我,我再告诉你方法,这个不是一句话就能解释清楚的)。
由于使用https才能接入,所以需要ssl证书,可以根据自己的域名申请验证后的证书(这个大家自行搜索,不是本教程重点)或者安装openssl来生成证书。
申请或者自己自作完后放入nginx\ssl文件夹中替换我的(为了安全我将我的证书清空了),名称最好和我的一样,不然你就需要改nginx配置了。
注意:需要将解压的nginx文件夹及里面的文件权限设为root且为0777
QQ图片20171130214137.png
(2)镜像下载和环境搭建:
sudo docker run -u 999:0 -p 3307:3306 -p 8081:8080 -p 8082:8082 -v /home/docker/nginx/nginx/:/etc/nginx/ -v /home/docker/nginx/www/:/var/www/www/ -v /home/docker/nginx/mysql/:/var/lib/mysql/ -e MYSQL_ROOT_PASSWORD="password" 1and1internet/ubuntu-16-nginx-php-phpmyadmin-mariadb-10

解释下:3307是容器对外的口,3306是容器内mysql端口;8081是容器对外phpmyadmin管理口,8080是容器内mysql端口,8082口是我需要开的web口用于搭建OAuth2(对外口大家随意改,搭建OAuth2口也随意-这个后续需要再配置,只要和后续配置的口一致就行);/home/docker/nginx/mysql/是我放数据库的位置(我的所有配置文件均在/home/docker/中,大家位置一定要和第2步中放附件位置一致),大家改成自己的就行。

如果觉得下载慢可以使用镜像加速,这个大家自行论坛搜索,我使用酸酸乳所以用官方源很快。

搭建完成后工作基本结束,后续在路由中将8082的口映射到外网就行。
成功的界面:
QQ图片20171130214354.png

现在看看ip:端口能否访问(一般就可以访问),如果不行看看容器是否启动,若没有启动将其启动即可,若启动多次还是会出现停止,需要检查下ssl设置是否正确。

(3)配置环境参数
需要修改以下文件
首先要改的是www文件server.php文件中数据库的配置,如果你的密码使用的是password,那么你就不需要修改了 QQ图片20171130125740.png
记住你的数据库名称后续搭建mysql需要,记住,一定要记住
还需要修改homeassistant_conf.php文件,这个改为自己的hass地址和密码,必须是外网可以访问的,所以肯定需要密码,不然你的hass就完全暴露在互联网了(外网访问常用的是DDNS,或frp)
QQ图片20171130131724.png

最后需要修改gate.php文件,修改自己hass中设备的ID
QQ图片20171130131938.png

(4)数据库建立
如果容器建好且运行中的话,那就直接浏览器访问寄主ip:8081,进入界面后用户名root,密码password(配置不一样以您配置为准)。进入后新建刚才让您记住的数据库名称,没改动的话就是oauth2_db,类型选择utf8_general_ci。
QQ图片20171130132659.png
过后点击您建的数据库,上部有SQL选项,选择进入,输入如下代码
CREATE TABLE oauth_clients (client_id VARCHAR(80) NOT NULL, client_secret VARCHAR(80) NOT NULL, redirect_uri VARCHAR(2000) NOT NULL, grant_types VARCHAR(80), scope VARCHAR(100), user_id VARCHAR(80), CONSTRAINT clients_client_id_pk PRIMARY KEY (client_id)); 
 
CREATE TABLE oauth_access_tokens (access_token VARCHAR(40) NOT NULL, client_id VARCHAR(80) NOT NULL, user_id VARCHAR(255), expires TIMESTAMP NOT NULL, scope VARCHAR(2000), CONSTRAINT access_token_pk PRIMARY KEY (access_token)); 
 
CREATE TABLE oauth_authorization_codes (authorization_code VARCHAR(40) NOT NULL, client_id VARCHAR(80) NOT NULL, user_id VARCHAR(255), redirect_uri VARCHAR(2000), expires TIMESTAMP NOT NULL, scope VARCHAR(2000), CONSTRAINT auth_code_pk PRIMARY KEY (authorization_code)); 
 
CREATE TABLE oauth_refresh_tokens (refresh_token VARCHAR(40) NOT NULL, client_id VARCHAR(80) NOT NULL, user_id VARCHAR(255), expires TIMESTAMP NOT NULL, scope VARCHAR(2000), CONSTRAINT refresh_token_pk PRIMARY KEY (refresh_token)); 
 
CREATE TABLE oauth_users (username VARCHAR(255) NOT NULL, password VARCHAR(2000), first_name VARCHAR(255), last_name VARCHAR(255), CONSTRAINT username_pk PRIMARY KEY (username)); 
 
CREATE TABLE oauth_scopes (scope TEXT, is_default BOOLEAN); 
 
CREATE TABLE oauth_jwt (client_id VARCHAR(80) NOT NULL, subject VARCHAR(80), public_key VARCHAR(2000), CONSTRAINT jwt_client_id_pk PRIMARY KEY (client_id));

再输入下面代码,便于介绍我给分开了,其实可以放在一起执行的。
INSERT INTO oauth_clients (client_id, client_secret, redirect_uri) VALUES ("ID", "PASS", "https://open.bot.tmall.com/oauth/callback");

其中ID和PASS是对应OAuth2验证的用户名和密码,改成自己熟悉的,也要记住,记住,记住。
QQ图片20171130133737.png

(5)接入天猫
浏览器输入https://open.bot.tmall.com,淘宝账户登录,进入界面,点击增加技能
QQ图片20171130134045.png
过后的界面就和前面大神帖子一样设置就可以了,就不再这累述,不过注意的是地址要加端口8082
QQ图片20171130134421.png

至此教程结束,有问题可以联系我,由于是后写教程的,可能中间步骤有疏漏,还望指出。




造福大家就不设置权限了
附件附件:
nginx.rar (99.65 KB, 下载次数: 265)



评分

参与人数 5金钱 +88 收起 理由
25989406 + 10 为什么你们都有docker! 我的群晖不给力啊.
se7en + 20 我来瀚思就为看你!
lidicn + 20 我来瀚思就为看你!
Roger + 20 我来瀚思就为看你!
+ 18 膜拜大神!

查看全部评分

回复

使用道具 举报

20

主题

700

帖子

3106

积分

论坛元老

Rank: 8Rank: 8

积分
3106
金钱
2406
HASS币
0
发表于 2017-11-30 13:51:16 | 显示全部楼层
沙发,广告位留名!!
回复

使用道具 举报

32

主题

986

帖子

4233

积分

论坛元老

Rank: 8Rank: 8

积分
4233
金钱
3207
HASS币
110

教程狂人论坛风云人物

发表于 2017-11-30 13:57:38 | 显示全部楼层
强势打广告
回复

使用道具 举报

19

主题

457

帖子

8161

积分

元老级技术达人

云淡风轻近午天

积分
8161
金钱
7704
HASS币
0

教程狂人

发表于 2017-11-30 14:00:11 | 显示全部楼层
祝贺一下,虽然我已经折腾好了
回复

使用道具 举报

8

主题

136

帖子

1300

积分

金牌会员

Rank: 6Rank: 6

积分
1300
金钱
1164
HASS币
0
发表于 2017-11-30 14:07:24 | 显示全部楼层
挺好的,就是觉得单单为个天猫精灵开一个完整nginx-php-phpmyadmin-mariadb-10的镜像会不会太奢侈了。。。。。
回复

使用道具 举报

26

主题

94

帖子

1943

积分

金牌会员

Rank: 6Rank: 6

积分
1943
金钱
1814
HASS币
60

教程狂人论坛风云人物突出贡献

 楼主| 发表于 2017-11-30 14:08:07 | 显示全部楼层
鱼要吃鱼 发表于 2017-11-30 14:07
挺好的,就是觉得单单为个天猫精灵开一个完整nginx-php-phpmyadmin-mariadb-10的镜像会不会太奢侈了。。。 ...

不要就直接删除,方便
回复

使用道具 举报

123

主题

4661

帖子

1万

积分

管理员

囧死

Rank: 9Rank: 9Rank: 9

积分
16412
金钱
11666
HASS币
45
发表于 2017-11-30 14:27:20 | 显示全部楼层
LV大辛苦了,学习了!!
回复

使用道具 举报

0

主题

316

帖子

1732

积分

金牌会员

Rank: 6Rank: 6

积分
1732
金钱
1416
HASS币
0
发表于 2017-11-30 17:37:12 | 显示全部楼层
谢谢L大大大大大大
回复

使用道具 举报

2

主题

107

帖子

470

积分

中级会员

Rank: 3Rank: 3

积分
470
金钱
362
HASS币
0
发表于 2017-11-30 18:38:28 来自手机 | 显示全部楼层
谢谢 我也。在搞
回复

使用道具 举报

0

主题

168

帖子

1662

积分

金牌会员

Rank: 6Rank: 6

积分
1662
金钱
1494
HASS币
0
发表于 2017-11-30 18:41:21 | 显示全部楼层
学习了,谢谢
回复

使用道具 举报

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

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2024-11-28 10:01 , Processed in 1.279932 second(s), 36 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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