天猫精灵智能家居对接,及天猫iot官网配置图文讲解(二)
2、天猫精灵设备对接
2-1、介绍
上一章里,我已经讲了天猫精灵的技能配置,设备创建,登录验证这三个部分做了,此次篇文章就讲之后的设备查询,设备信息上报,以及获取开发权限。
文章地址
2-2、设备查询请求
在之前的文章中,最后面写的登录验证。在用户走到这一步时,会向服务器发送请求,请求内容在官方文档中很详细了。这里可以用一个类封装这些数据,格式是固定的
用spring方法体中的@RequestBody,路径方法中接收参数,具体代码可以使用fastjson jar包,将字符串转成JSONObject格式的类之后,下一步就是执行具体的业务了。
启动项目,开始测试,可以看到,下面的图片是接收到的请求路径和它所携带的数据。内容和官方提供的是一致的。
之后对代码进行处理,代码的功能主要还是看header中的namespace和name这两个标签,访问返回中,namespace不用修改,但是要修改的是name。messageId保留不动,在此之前要了解一下设备发现中返回的设备协议。这边对设备进行封装。代码如下,构造方法,get,set和toString也是由读者自己生成。
public class Device {
/**
* 设备id
*/
private String deviceId;
/**
* 设备别名
*/
private String deviceName;
/**
* 设备英文名
*/
private String deviceType;
/**
* 设备品牌
*/
private String brand;
/**
* 产品型号
*/
private String model;
/**
* 位置,这里是指厨房,客厅这些
*/
private String zone;
/**
* 设备状态
*/
private JSONObject status;
/**
* 设备的扩展信息
*/
private JSONObject extensions;
}
这里面的一些信息介绍
-
deviceId,由开发者自己定义,长度不限,
-
deviceName,设备被别名,也是由用户自己定义,开发者保存
-
deviceType,这里不能随便填写,要和阿里精灵平台中的产品品类一致,但是不用填写中文,填写outlet就可以了
-
brand,也是要和途中的产品品牌一致,这里是填写:“中文名·英文名”(图片这里有复制按钮)
-
model,这里是开发者自己定义的代码数据了内容和产品型号是一致的
-
zone,产品所在的位置,例如厨房,客厅,办公室这些。
这个值,只会在第一次设备发现的时候提交有用,之后重复提交,都不会修改这个值,唯一有效的就是设备更新,告诉官方服务器设备已经被删除,然后再提交一次,这样就是一个新设备了。
-
status,设备属性,这里的属性暂时只设置有开关两个,子参数为powerstate:1
-
extensions,设备扩展信息
下面创建一个类,模拟设备,内容如下
路径映射方法如下
@RequestMapping("getDevices")
@ResponseBody
public Map<String