`` 本帖最后由 3guoyangyang7 于 2017-12-12 22:54 编辑
这一篇文章主要讲解服务器端的设置,这里我使用的是腾讯云,当时学生价1块钱一个月买的,现在的学生价涨到了10块,为我当时的机智点赞。为什么一定要使用服务器呢,这个是因为天猫精灵协议的对接是云服务器与云服务器的对接并不支持与硬件设备的直接对接,看一下天猫精灵的接入方式的简介就可以知道了。
从图中可以看到,用户的语音指令通过天猫精灵上传阿里云语音服务器通过解析后发送响应的协议到第三方设备控制云(前提是要有第三方的授权),然后第三方的云再与用户的设备进行沟通控制。这种控制方式我个人认为是很合理的,首先这是两套独立的系统,只是通过协议对接,相互不相影响,独立性高,安全性高。阿里专注于做语音识别,语义分析等AI方面的事情,而第三方硬件厂商专注于做自己的硬件设备,各归其所,能把产品的性能发挥到极致。
在这再次声明,我的目的是通过使用一定的方法达到我的目的,对于深层次的东西并没有深究,由于涉及的东西过多,文章中如果出现错误,麻烦大神一定批评指正,谢谢 一、原理
在正式做之前我们先把这个原理捋一捋,原理清楚了就知道我们要做什么了,下边的一段内容主要是参考天猫精灵的官方开发文档。只截取重点。首先我们要在天猫精灵的开发网站上发布一项智能家居的技能,最关键的是在技能发布的时候的服务设置,这里就明确要求了我们一定要有第三方授权协议的支持Oauth2。
当授权成功后,对接协议会利用POST发送一条设备探测信息,我们需要按照协议的标准返回设备信息,具体协议文本如下。
所以这里就需要使用https的post和相关协议解析等,另外对于相应的https协议要有签名证书,自签名的协议不可用,所以我们就要进行相关的SSL签名证书的获取。
当一切完事之后这个桥就算搭上了,也就是说你已经能拿到天猫精灵经过分析后的动作、设备名等一系列的信息了,剩下的事就是你的设备与你的云服务器进行通讯的事了。我们就按照这个思路走下去 二、构建通讯服务器
1、apache2+php7.0 web服务器的构建
我个人使用的服务器是腾讯云,系统是ubuntu16.04,如果大家要是没有云服务器可以采用花生壳内网穿透的方法,还能得到一个只能在花生壳免费部署的域名,但是也要花6块钱,看需求了,这里不再说。我们要做的第一步是搭建一个web服务器,最起码要能解析我们的域名和php文本。这一部分很简单,网上也有很多教程,我随便找一个演示如下。主要参考https://www.cnblogs.com/cenariusxz/p/6843556.html中的配置 首先安装apache2
然后安装php
配置apache2和php
然后让我们重启一下apache2
然后查看一下我们的安装是否完成,当你输入你的域名的时候或者直接在服务器输入你的ip地址的时候,如果出现如下这个界面说明你的apache2已经成功运行了。
然后看一下php是否安装完成,我们在/var/www/html/ 目录下新建一个文件,写入如下内容
然后在浏览器输出域名/info.php看是否出现下面的界面,如果出现了说明安装成功,这两步没什么难度,按照做应该都能完事
好现在的web服务器已经搭建完成,下一步我们要申请ssl证书 2、SSL证书的申请
至于什么是SSL证书具体有什么用,想了解的自行百度吧,再不行谷歌,百度出来的东西比我这个外行巴拉巴拉说半天来的痛快,本来腾讯云是送免费一年的SSL证书的,但是我赶得非常不巧,在我做测试那几天腾讯的ssl服务商升级,就暂停了SSL证书的授权,对于我这种穷屌丝来说我只能自己找免费的SSL认证了。具体参考的文章如下http://www.laozuo.org/7742.html,申请SSL证书的网址如下https://www.sslforfree.com/,由于我的网址已经申请了一个SSL证书了,所以我就用另外一个域名重新申请SSL证书作为演示。 首先在这个界面输入你的域名地址
第二步选择验证方式
我们选择验证方式为手动验证,这个验证方式比较麻烦,另外两个我没试,有兴趣的可以试一下,然后点最下边的那个按钮Manuall Verify Domain,然后根据以下的步骤进行验证
第一步是下载一个验证文件,这个文件放在哪呢就是按照第二步、第三、第四个步骤里,一般俩说这个.well-known的文件应该放在/var/www/html目录下的,然后你按照路径逐级放置就行了,如果你更改了apache2的主目录那就放在你的主目录下。我的目录如下所示
Pwd查看的是我当前的目录,ls列出我的目录下的文件,只要把你下载的响应的文件扔到里边就行了,(具体怎么扔,这还问,那就小白到不能再小白了,当然是ftp啦,怎么ftp自己百度去)放到里边去点第五步的地址就行了,如果你的网页上出现那一大片内容,就是你扔的那个文件名的名称,说明验证成功了,我这就不具体验证了,太费劲了,然后验证完后就点那个Download下载就行了,这个时候会生成ssl证书,你会看到这个
然后获取证书文件和设定到时候到期后的通知邮件,因为Let's Encrypt是90天一个周期,要每90天续费一次,我们这个时候输入邮箱和密码,创建一个账户,到时候会通知去续约的。
输入之后我们就可以下载我们的证书了。
会下载下来三个文件如下图所示,然后我们使用openssl工具来部署我们的ssl证书
3、部署Apahce2下的HTTPS服务器
有了SSL证书,我们就可以部署我们的HTTPS服务器了,第一步首先把我们的证书文件都传到服务器上,用什么传,ftp。 然后安装openssl,这个可以生成自签名证书,也可以部署已经存在的证书,由于天猫精灵的对接协议已经说的很明白了,自签名证书不可用,我们又申请了SSL证书,就部署我们自己的证书吧。主要参考http://blog.csdn.net/u012527302/article/details/50360805这篇文章中的内容
然后开启SSL模块
开启后会出现如下的
然后我们现在要指定SSL证书 下边需要把我们的证书拷贝到相应的目录下
然后进入/etc/apache2 把ports.conf进行配置得到如下结果,基本都是默认配置不需要更改,以防万一,http主要是80端口,https主要是443端口
下面需要做一个符号链接
然后我们要修改一下default-ssl.conf主要修改一下这几个地方,如果你要是按照我说的做的话就按照下图修改,如果不是就自行把下面的内容修改成你自己的文件名和目录
保存后然后执行如下的操作
然后重启一次apache2
至此我们ssl证书已经部署完毕,我们来检测一下,
当你发现你在输入域名的前边加上https://时浏览器前边由不安全变成了安全的时候说明你的SSL部署完成了。
写一篇帖子太累了,写了好几千字,又有好多图片,所以,希望帮助到有需要的人,这一篇就先到这,下一篇还要讲服务器的搭建,还要有mysql和OAuth2.0服务端的搭建。然后才能讲到协议对接的部分。东西很多,辛苦各位看客了,小狂致力于原创文章的分享,力求能让小白在什么都不懂的情况下也能完成技术的操作,再次谢谢颤抖的小伙伴们,哈哈。另外码字不容易转载请标明出处,谢谢合作。
跟着小狂玩天猫精灵智能设备对接其他篇请移步导航篇 https://bbs.elecfans.com/jishu_1471090_1_1.html
``
|