发 帖  
原厂入驻New

[经验] 跟着小狂玩天猫精灵智能设备对接--协议对接篇

2017-12-12 18:59:30  18194 天猫精灵 协议
分享
3
本帖最后由 3guoyangyang7 于 2017-12-12 22:52 编辑

洋洋洒洒六七千字已经搭进去了,终于把服务器篇写的差不多了,当然小狂不是专业的写手,有些东西写的凑合看吧,只是说明过程,并不修饰言辞,看的舒服就点个赞,不舒服就当学东西了吧。这篇文章我们将完成天猫精灵服务器与我们服务器的对接,进行真机测试,返回我们当前的设备,用以调试。并且能拿到当前的天猫精灵解析的数据,把这篇做完如果要是有相应的硬件知识的话,就可以控制自己的智能设备了。这篇文章的结构将会按照创建一个天猫精灵的智能设备的需求去写。希望大家看的畅快淋漓。

这篇文章主要参考了这两篇文章https://bbs.hassbian.com/forum.p ... B%E7%B2%BE%E7%81%B5https://bbs.hassbian.com/thread-1900-1-1.html

对于不熟悉PHP开发的亲们来说,小狂提供一个PHP语法和函数的查询网站,挺好用的http://php.net/manual/zh/function.md5.php

一、开发者网关地址

我们在天猫精灵的一项设置里需要填写开发者网管地址,那个是天猫精灵在得到第三方硬件平台认证后,post协议的地址,由此我们就根据POST的协议,拿到控制信息以及返回响应信息。我们在/var/www/html中建一个gate.php文件,用于解析POST过来的协议,先放一个天猫精灵的协议地址,http://doc-bot.tmall.com/docs/do ... Id=107454&docType=1,然后小狂会一点一点解析gate.php中的内容。

1.png

在文件的开头,每次获得执行这段文本前就会生成一个独一无二的uuid,这个就是协议文本中的

2.png

用于天猫平台跟踪返回指令用的,在最后也会告诉你这个,然后出错通过提供messageID进行天猫精灵服务端的判别

3.png

4.png

图中1标号是用来获取POST过来的数据,这个是PHP获取http POST获取到的数据的一种方式,当然还有其他方式,大概有3种吧,感兴趣的可以去查一下。图的2标号是把获得到的数据进行json解码放到obj中,json是http传送的一种格式。3标号是获取本次请求的messageID值,会回传到天猫服务器的。

5.png

这一段代码用来回复天猫服务器我们的设备都有哪些,我们可以参考一下天猫精灵的协议说明,这一段代码是天猫服务器POST后要响应的数据。

6.png

所有表格中要求返回的数据都必须返回,有一个不对,都会导致天猫精灵控制的时候找不到对应的设备。所以一定要好好填。图中1标号中说明经协议是设备发现协议,2中的东西基本都固定了,%s那个会在后边利用sprintf来实现messeid的复制,3标号中的乱码是因为我用的是中文,不用管,直接用了别人的设备信息,所以设备信息没有改,协议中有说明不再解释,主要说说5,在图上5可以看出设备支持全部信息查询,温度查询、湿度查询和开关状态查询,这个是固定的,由协议指定,可以是操作类中的属性也可以是查询类中的属性,这个不能乱填,决定了天猫精灵语义识别后返回的信息,填写的时候一定要慎重。再放一个灯具的设备返回信息。

7.png

下图所示为设备控制协议的详细内容和解析,只截出打开指令协议的详细内容,其他的协议内容于此类似

8.png

9.png

图中标号1说明天猫云服务器发送的是控制指令,标号3返回正确的响应,标号4返回错误的响应,这些参数都是有device_control解析处理后传回来,标号2用来解析控制指令,device_control在aligenies_request.php中就是对发送过来的设备名,设备动作,查看天猫POST过来的数据包是否正确,如果正确给出正确的响应,如果不正确给出错误的响应,不再列举具体的解析协议,只给出处理的过程。

10.png

1是返回错误指令的设备名等信息,标号2把正确控制信息进行json格式化,标号3是把这些信息POST发送给另外一个php文件用于保存给硬件设备进行获取,标号4返回正确指令的设备名等信息,这些信息用于格式化输出POST响应数据。

下图为设备响应指令的详细协议以及协议的解析和响应

11.png

12.png

13.png

协议的解析和设备控制协议的解析采用的思想差不多,只不过查询和控制这两个过程是正好相反的。过程控制是主动存储数据,然后又硬件设备读取,查询是硬件设备返回数据存储到服务器上在查询的时候读取。就这样,具体的代码看aligenies_request.php中的内容吧,这里会调用存储读取的具体PHP,这个URL存储在homeassistant_conf.php中,这个可以改成各位URL,密码我自己测试没有用到,所以没写,有需要的可以写上密码,然后比较安全

14.png

到这里所有的文件部署完毕,我们现在天猫精灵上新建一个智能家居,用于真机测试。

二、新加技能

其实这个地方就比较简单了,我们所有准备的东西都完事了之后,具体的流程信息如下图所示

15.png

首先你要进入阿里语音的开发者平台,给出如下链接地址https://open.bot.tmall.com/

用淘宝账号登陆后,电机右上角的进入控制台

16.png

点击添加新技能

17.png

18.png


技能名称随便写,技能类型选择标准技能,技能模板选择只能家居,技能描述随便填,这个是我的台灯的信息

19.png

然后填写最重要的服务设置,服务器(二)也说了,这个是最重要的设置

20.png

授权连接指向你域名下的authorize.php文件,Client ID 是让记住的添加的MySQL中的ID,Client Secret是在MySQL中添加的密码,Access Token URL用于指定域名下的token.php文件,开发者网管地址,用于指定你域名下的gate.php文件。到此我们所有的文件准备完成,配置完成,进行真机测试。

三、真机测试

点击测试验证界面,点击右侧的开启测试

21.png

点击后,然后再点击账户配置

22.png

然后点选yes进行授权

23.png

如果在这个阶段你点了账号配置,没有任何反应,可能是你在配置的过程中出现了问题,这个时候你可以使用F12查看错误信息,根据错误状态进行改正即可,争取后会出现如下所示界面,由于这个设备的信息都没更改,所以跟参考文章中差不多。

24.png

同时你会发现,你天猫精灵APP通账号目录下也会出现这个界面,如下图所示

25.png

这个时候你可以尝试使用语音控制你的天猫精灵,比如“天猫精灵,打开台灯”,如果天猫精灵响应你回答“正在为您打开台灯”,则证明协议对接完成。

又到了这篇文章的尾声了,在这片文章了我们对天猫精灵进行了解析,然后分析了协议和解析的内容,但是没有对怎么控制具体的设备进行说明,这是因为我们还有一篇文章叫硬件控制篇啊,我们具体的怎么把得到的数据发送给硬件设备,怎么把硬件设备的状态信息上传给天猫精灵的服务端,让它用声音表达出来,就是下篇文章的主要内容。欲知后事如何,请听下回分解

郑重声明:码字不易啊,请各位看官转载时注明出处,谢谢支持。

tmtalk.tar.bz (4.66 KB, 下载次数: 156)

跟着小狂玩天猫精灵智能设备对接其他篇请移步导航篇

http://bbs.elecfans.com/jishu_1471090_1_1.html


评分

参与人数 2积分 +11 收起 理由
pigcais + 1 资源分享达人,加分鼓励!
Elecfans管家 + 10 原创技术先锋,加分鼓励!

查看全部评分

相关经验

泡芙奶昔 2017-12-13 17:45:55
膜拜中
回复

举报

将军问鼎 2018-1-1 10:49:29
这位 道友你好,我关注你的帖子很久了,也按照你的帖子进行了操作,现在卡在 这个gate.php,这儿了,感觉好像返回不了设备  阿里平台好像收不到返回的消息,不知可否 将你的gate.php文件分享一下,让我等学习学习
回复

举报

来听我的演唱会 2018-1-11 09:25:46
您的authorize界面点yes后,是否会先出现"参数值内容错误。, 3秒后返回设备列表".
回复

举报

3guoyangyang7 2018-1-11 20:12:44
来听我的演唱会 发表于 2018-1-11 09:25
您的authorize界面点yes后,是否会先出现"参数值内容错误。, 3秒后返回设备列表".

我的不会,能直接返回设备列表,可以参考我文章中的参考资料,可能会有帮助
回复

举报

noben323 2018-1-18 19:22:09
也出现了"参数值内容错误。, 3秒后返回设备列表".的情况,是否需要有硬件设备连上才能正常?大神求指点
回复

举报

3guoyangyang7 2018-1-23 13:43:14
noben323 发表于 2018-1-18 19:22
也出现了"参数值内容错误。, 3秒后返回设备列表".的情况,是否需要有硬件设备连上才能正常?大神求指点

这个跟硬件设备没关系,建议检查一下设备列表的参数配置,我当时没有遇到这个,不知道中间天猫精灵协议对接这一块有没有变化,我看好多人遇到了这个问题,不过坛子里有人解决了
回复

举报

3guoyangyang7 2018-1-23 13:43:15
noben323 发表于 2018-1-18 19:22
也出现了"参数值内容错误。, 3秒后返回设备列表".的情况,是否需要有硬件设备连上才能正常?大神求指点

这个跟硬件设备没关系,建议检查一下设备列表的参数配置,我当时没有遇到这个,不知道中间天猫精灵协议对接这一块有没有变化,我看好多人遇到了这个问题,不过坛子里有人解决了
回复

举报

citrus123 2018-1-26 15:34:00
参数值内容错误。, 3秒后返回设备列表 怎么解决啊  跪求
回复

举报

3guoyangyang7 2018-1-27 06:08:44
citrus123 发表于 2018-1-26 15:34
参数值内容错误。, 3秒后返回设备列表 怎么解决啊  跪求

我总觉得是不是添加的账号和密码错误,这个要与数据库的一致,然后你们都仿照我的来,我中间有些步骤省略了,导致认证的错误啊,那天坛子的群里有个人也出现了这个问题,他告诉我这个问题不影响结果啊,最近实在是太忙了,就没功夫做这个事情了。回复都不及时,见谅啊
回复

举报

pigcais 2018-1-27 13:41:19
谢谢谢谢  小狂
回复

举报

citrus123 2018-1-29 08:55:34
3guoyangyang7 发表于 2018-1-27 06:08
我总觉得是不是添加的账号和密码错误,这个要与数据库的一致,然后你们都仿照我的来,我中间有些步骤省略了,导致认证的错误啊,那天坛子的群里有个人也出现了这个问题,他告诉我这个问题不影响结果啊,最近实在是太忙了,就没功夫做这个事情了。回复都不及时,见谅啊 ...

我问了天猫精灵的智能家居的对接人员,给我的解释是,我不大理解,原话如下,参数在body里,不在querystring里,1/4号以后创建的技能参数都在body里         我不太懂啥意思。。。希望能得到你的解答 谢谢
回复

举报

citrus123 2018-1-29 10:21:56
3guoyangyang7 发表于 2018-1-27 06:08
我总觉得是不是添加的账号和密码错误,这个要与数据库的一致,然后你们都仿照我的来,我中间有些步骤省略了,导致认证的错误啊,那天坛子的群里有个人也出现了这个问题,他告诉我这个问题不影响结果啊,最近实在是太忙了,就没功夫做这个事情了。回复都不及时,见谅啊 ...

我继续问了天猫精灵的后台对接人员,他们说 ,天猫精灵服务携带code来获取token的税后,code之前不是在body里,现在放在body里  
1回复

举报

3guoyangyang7 2018-1-29 14:02:51
citrus123 发表于 2018-1-29 10:21
我继续问了天猫精灵的后台对接人员,他们说 ,天猫精灵服务携带code来获取token的税后,code之前不是在body里,现在放在body里

这个我也真是不太了解,最近太忙了,等闲了之后我再出一篇解决这个问题的教程吧
回复

举报

风吹云 2018-2-2 11:53:23
3guoyangyang7 发表于 2018-1-23 13:43
这个跟硬件设备没关系,建议检查一下设备列表的参数配置,我当时没有遇到这个,不知道中间天猫精灵协议对接这一块有没有变化,我看好多人遇到了这个问题,不过坛子里有人解决了

请问坛子里有人解决的链接能发出来不?我也遇到了这个问题
回复

举报

cnk700i 2018-3-7 08:10:45
想问下为什么gate.php里面的$uuid怎么是自动生成的,不应该是直接取天猫post过来的messageId($obj->header->messageId)来响应的吗。
回复

举报

apanlin 2018-4-19 15:56:51
cnk700i 发表于 2018-3-7 08:10
想问下为什么gate.php里面的$uuid怎么是自动生成的,不应该是直接取天猫post过来的messageId($obj->header->messageId)来响应的吗。

我觉得你说的有道理啊?我也很纳闷,你后来解决了吗? messageId到底需不需要自己生成?
回复

举报

大阿贤 2018-6-6 22:48:01
为什么看不了了
test.png
回复

举报

andylauren 2018-6-16 23:47:54
你好,其中有一个php文件中的内容不知道应该填写什么
homeassistant_conf.php文件中的url具体指的是什么?应该填写什么网址,我在网上找的资料都是要填写hass网址,不知道指的是什么
麻烦有时间回复一下
1 1回复

举报

roryby 2018-7-30 14:33:16
大神!学习了!
回复

举报

评论

高级模式
您需要登录后才可以回帖 登录 | 注册

12下一页
发经验
课程
    关闭

    站长推荐 上一条 /10 下一条

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