起因:
自从找到本论坛,疯狂迷上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环境搭建窗口:
接着,按下图红框提示,打开/选择对应选项:
这里注意,最下面的这个选项(我填的是“9123”),是未来天猫精灵网关在内网的端口号,可根据你的具体情况进行选择,与内网其他服务不冲突即可。
以上选项勾选/设置完毕后,将页面拉到最后,点击“应用本页面设置”
然后进入路由器的日志界面,看看整个LNMP的安装过程是否正常。日志最后会如出现类似这样的结果,则证明LNMP启动正常。
二、padavan路由器https搭建
天猫网关必须具备https,否则将无法与天猫精灵的开放平台进行对接。但C大的帖子没有提及如何配置https。于是,针对padavan路由器,下面填一下https的配置的坑。
1、证书申请及下载
我的ssl证书是使用阿里云的一年免费证书,证书如何申请这里就不赘述了,请自行google。申请好后,打开阿里云的ssl证书下载页面,选择nginx证书模式下载,会得到两个文件。先保存好在本地备用。
2、nignx配置
使用sftp客户端(我用的是FileZilla),远程登陆到你的路由器,转到/opt/etc/nginx目录下,新建cert目录
然后将刚才两个证书文件上传到这个cert目录之下
接下来,编辑位于/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环境中的“雅黑探针”页面
至此,LNMP和https配置完毕,终于轮到天猫精灵网关上场了。
三、C大天猫精灵网关部署
1、下载代码
分别到以下两个gitHUb地址,下载对应代码
oauth2: https://github.com/bshaffer/oauth2-server-php
天猫网关:https://github.com/c1pher-cn/tmall-bot-x1/tree/php5.3
下载方式如下:
2. 代码部署
将下载的两个zip文件解压,然后全部上传到路由器/opt/www/default目录之下,如下
注意最上面那个tz.php文件,是这个目录原有的文件,其实这个就是之前我们测试https时打开的那个“雅黑探针”页面
3、数据库建表
使用ssh(或你喜欢的其他工具)登陆路由器,进入mysql数据库
回车后,输入数据库密码即可连上mysql,如下图这样见到mysql的提示符即成功连接
连上数据库后,用以下命令建立一个新的数据库(我给这个数据库的名字是:tmall)
mysql> CREATE DATABASE tmall;
接着再打开这个新建的数据库
mysql> USE tmall;
接下来是建表步骤,C大的帖子(https://bbs.hassbian.com/thread-1862-1-1.html)已经有详细描述,我这里就不再重复,具体就是从以下这个位置开始,其实就是将每个框分别复制黏贴到ssh终端中执行即可
但是做到这一步停一下。C大没有特别明确描述这一步该如何修订这个配置文件
所以,具体转回到我下边这一步
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!
|