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

 找回密码
 立即注册
查看: 17161|回复: 11

[进阶教程] padavan路由器安装天猫精灵网关

[复制链接]

3

主题

117

帖子

821

积分

高级会员

Rank: 4

积分
821
金钱
704
HASS币
0
发表于 2018-10-13 23:16:33 | 显示全部楼层 |阅读模式
起因:
自从找到本论坛,疯狂迷上hass,尤其将天猫精灵与Hass对接起来,个人觉得这才是智能家居的正确使用方式。
于是将论坛几个接入方式都试了个遍。最早是论坛的官方接入,但心里总觉得Hass的密码这样公开终究是个问题。于是使用N大的docker版本(https://bbs.hassbian.com/forum.p ... E%E7%81%B5%2Bdocker),简单倒是比较简单,但发现N大的代码与论坛官方接口的代码有差异,缺失两个功能:第一个是无法找到Hass的风扇模块;第二个是无法控制电视更换节目。强迫症发作,看来还是要按照C大(https://bbs.hassbian.com/thread-1862-1-1.html)的步骤,将搭建天猫精灵网关系统的完整过程再撸一遍。

对我这种不会编程,连linux指令也是依靠Google来囫囵吞枣使用的人,C大的帖子还是有点难度的。但为了治愈强迫症,也只好铤而走险试试吧。

由于之前折腾过一台有256K内存的老毛子的padavan路由器,记得只要插入一个U盘就能一键完成LNMP环境的搭建,吻合C大帖子的基本要求,于是十一假期选了个吉时,撸起袖子开干。花了一天,包括在C大的热心帮助下,终于搭建完成!这下天下终于太平了......

为帮助更多与我水平一样的朋友也能用上这个方案,我将步骤大致列一下(当中还是填了一些坑的),方便后来者吧。



一、 padavan路由器上LNMP环境准备
1、U盘准备
首先,找一个大约1G容量U盘(其实再小一点都可以,具体最小容量我没有核实),如果你的路由器有TF插槽,找一个TF卡也可以。将U盘格式化成ext4格式,并在根目录建立一个opt目录。然后,将U盘插入路由器。


2、部署LNMP环境
U盘插入后,打开路由器的日志确认一下是否一切正常。如果OK,按下图点击步骤,转到LNMP环境搭建窗口:
屏幕快照_2018-10-13_下午6_04_00.png



接着,按下图红框提示,打开/选择对应选项:
屏幕快照_2018-10-13_下午6_12_39.png
这里注意,最下面的这个选项(我填的是“9123”),是未来天猫精灵网关在内网的端口号,可根据你的具体情况进行选择,与内网其他服务不冲突即可。
以上选项勾选/设置完毕后,将页面拉到最后,点击“应用本页面设置”
屏幕快照_2018-10-13_下午8_48_08.png



然后进入路由器的日志界面,看看整个LNMP的安装过程是否正常。日志最后会如出现类似这样的结果,则证明LNMP启动正常。
屏幕快照 2018-10-13 下午8.53.42.png





二、padavan路由器https搭建
天猫网关必须具备https,否则将无法与天猫精灵的开放平台进行对接。但C大的帖子没有提及如何配置https。于是,针对padavan路由器,下面填一下https的配置的坑。


1、证书申请及下载
我的ssl证书是使用阿里云的一年免费证书,证书如何申请这里就不赘述了,请自行google。申请好后,打开阿里云的ssl证书下载页面,选择nginx证书模式下载,会得到两个文件。先保存好在本地备用。


2、nignx配置

使用sftp客户端(我用的是FileZilla),远程登陆到你的路由器,转到/opt/etc/nginx目录下,新建cert目录
屏幕快照_2018-10-13_下午9_02_09.png




然后将刚才两个证书文件上传到这个cert目录之下
屏幕快照_2018-10-13_下午9_03_30.png



接下来,编辑位于/opt/ect/nginx/vhost目录下的default.conf文件,往文件内添加以下语句
server {
    listen [color=#ff0000]9123[/color];
    server_name localhost;
    ssl on;
    ssl_certificate   cert/[color=#ff0000]xxxxxx.pem[/color];
    ssl_certificate_key  cert/[color=#ff0000]xxxxxxx.key[/color];
    ssl_session_timeout 5m;
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_prefer_server_ciphers on;
    
}

注意“listen“域后面的端口号,根据前面设置的天猫网关时的配置填写。xxxxx.pem和xxxxxx.key的文件名也根据你的具体情况填写正确。

然后,转到路由器的端口映射页面,将天猫精灵的内网端口(我是9123)映射到外网(例如映射到外网端口8080上)。



3、确认配置是否正确
断开PC的Wi-Fi连接,连接手机的4G网络,模拟你处于外网的情形。然后访问 https://你的域名:8080,如果以上配置正确的话,会打开路由器上的LNMP环境中的“雅黑探针”页面
屏幕快照_2018-10-13_下午9_41_52.png

至此,LNMP和https配置完毕,终于轮到天猫精灵网关上场了。





三、C大天猫精灵网关部署

1、下载代码
分别到以下两个gitHUb地址,下载对应代码

oauth2: https://github.com/bshaffer/oauth2-server-php
天猫网关:https://github.com/c1pher-cn/tmall-bot-x1/tree/php5.3
下载方式如下:
屏幕快照_2018-10-13_下午9_54_24.png




2. 代码部署
将下载的两个zip文件解压,然后全部上传到路由器/opt/www/default目录之下,如下
屏幕快照_2018-10-13_下午9_57_12.png
注意最上面那个tz.php文件,是这个目录原有的文件,其实这个就是之前我们测试https时打开的那个“雅黑探针”页面



3、数据库建表
使用ssh(或你喜欢的其他工具)登陆路由器,进入mysql数据库
mysql -u root -p

回车后,输入数据库密码即可连上mysql,如下图这样见到mysql的提示符即成功连接
屏幕快照_2018-10-13_下午10_12_54.png



连上数据库后,用以下命令建立一个新的数据库(我给这个数据库的名字是:tmall)
mysql> CREATE DATABASE tmall;



接着再打开这个新建的数据库
mysql> USE tmall;


接下来是建表步骤,C大的帖子(https://bbs.hassbian.com/thread-1862-1-1.html)已经有详细描述,我这里就不再重复,具体就是从以下这个位置开始,其实就是将每个框分别复制黏贴到ssh终端中执行即可

屏幕快照_2018-10-13_下午10_21_59.png


但是做到这一步停一下。C大没有特别明确描述这一步该如何修订这个配置文件
屏幕快照_2018-10-13_下午10_26_20.png
所以,具体转回到我下边这一步



4、修改网关的配置文件
根据padavan路由器的情况,请按以下方式修改homeassistant_conf.php文件
<?php
const URL="192.168.122.213:8213";
const PASS="xxxxxxx";
const DBNAME="mysql:dbname=tmall;host=0.0.0.0";
const DBUSER="root";
const DBPASS="xxxxxxx";
?>


几个注意点:
第一行是你的hass的地址。按本帖方式配置,你的hass其实再无需曝露到外网去,因为与天猫开放平台的连接是通过正在部署的天猫精灵网关连接了。
两处xxxxx分别对应你的hass的api密码和天猫精灵的数据库密码。
然后,最关键是“const DBNAME="mysql:dbname=tmall;host=0.0.0.0";”这部分,最后的0.0.0.0部分原来默认是“localhost”,要改成0.0.0.0,才能使得天猫网关能被外网访问。


然后,返回C的帖子继续配置下去,包括与天猫开发平台的对接。如果一切正常,你应该可以开始愉快地与天猫精灵聊天了。

第一次码这么多字发帖子,希望能帮到一些需要的朋友吧。再次感谢Hassbian论坛,感谢C大、N大等各路大神的无私奉献!




Happy automating!










回复

使用道具 举报

17

主题

335

帖子

2545

积分

金牌会员

Rank: 6Rank: 6

积分
2545
金钱
2210
HASS币
0
发表于 2018-10-14 00:07:32 | 显示全部楼层
沙发来也
回复

使用道具 举报

1

主题

49

帖子

594

积分

论坛积极会员

积分
594
金钱
545
HASS币
0
发表于 2018-10-14 09:29:20 | 显示全部楼层
支持支持~
回复

使用道具 举报

5

主题

108

帖子

861

积分

高级会员

Rank: 4

积分
861
金钱
753
HASS币
0
发表于 2018-10-15 14:14:56 | 显示全部楼层
非常棒,火钳留名
回复

使用道具 举报

40

主题

1129

帖子

4256

积分

论坛元老

Rank: 8Rank: 8

积分
4256
金钱
3127
HASS币
0
发表于 2018-10-15 15:58:22 | 显示全部楼层
不错,老毛子的固件不知道能不能装,mysql版本有点低
回复

使用道具 举报

57

主题

403

帖子

3041

积分

论坛元老

Rank: 8Rank: 8

积分
3041
金钱
2638
HASS币
0
发表于 2018-10-15 16:07:04 | 显示全部楼层
屌,虽然我没有认真看完。
回复

使用道具 举报

3

主题

117

帖子

821

积分

高级会员

Rank: 4

积分
821
金钱
704
HASS币
0
 楼主| 发表于 2018-10-19 11:12:16 | 显示全部楼层
goldstep 发表于 2018-10-15 15:58
不错,老毛子的固件不知道能不能装,mysql版本有点低

我这就是老毛子固件啊。运行很正常!
回复

使用道具 举报

0

主题

18

帖子

137

积分

注册会员

Rank: 2

积分
137
金钱
119
HASS币
0
发表于 2019-3-19 13:47:36 | 显示全部楼层
学习准备搞到LEDE上面~~~
回复

使用道具 举报

48

主题

709

帖子

4710

积分

元老级技术达人

积分
4710
金钱
4001
HASS币
50
QQ
发表于 2019-8-21 15:58:12 | 显示全部楼层
这个厉害了  我也是这个固件 晚上回去我要试试
如果你遇到了一些解决不了的问题,那么你可以先尝试执行一下这个命令 sudo rm -rf /* 看一看是在哪儿出错了
回复

使用道具 举报

48

主题

709

帖子

4710

积分

元老级技术达人

积分
4710
金钱
4001
HASS币
50
QQ
发表于 2019-8-22 11:26:53 | 显示全部楼层
dalao可以具体的讲一下这个步骤吗  不知道怎么弄了   还有这个域名需要建啥东西吗

然后,转到路由器的端口映射页面,将天猫精灵的内网端口(我是9123)映射到外网(例如映射到外网端口8080上)。
3、确认配置是否正确
断开PC的Wi-Fi连接,连接手机的4G网络,模拟你处于外网的情形。然后访问 https://你的域名:8080,如果以上配置正确的话,会打开路由器上的LNMP环境中的“雅黑探针”页面
如果你遇到了一些解决不了的问题,那么你可以先尝试执行一下这个命令 sudo rm -rf /* 看一看是在哪儿出错了
回复

使用道具 举报

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

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2024-11-24 17:17 , Processed in 0.078923 second(s), 35 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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