作者:阿里云MVP洵云
10节回顾:手把手学IOT服务端API编程[10、保存设备属性]|MVP讲堂
11节回顾:手把手学IOT服务端API编程[11、查询设备属性列表]
12节回顾:手把手学IOT服务端API编程[12、删除设备属性]
13节回顾:手把手学IOT服务端API编程[13、发布消息到Topic]
14节回顾:手把手学IOT服务端API编程[14、发消息给设备并同步返回响应]
15节回顾:手把手学IOT服务端API编程[15、发布广播消息]
上节介绍从服务端给设备发送广播消息后,实际使用过程中,往往存在网络信号不好,质量不稳定的状况,这时就需要服务端保存一份设备端最后一次状态的信息,用来做后续的相关分析,这份信息又被称为设备影子,服务端的API接口也提供了相应的功能,
这一节就来介绍一下如何使用设备影子这个功能,这个接口需要提供两个参数,一个是产品的key值,一个是设备名称;
接下来我们看一下具体实现;
1、脚本实现:
我们按照接口的要求,在框架页面上,提供产品的key值和设备名称,这两个输入参数框给用户输入,
产品KEY: <input type="text" name="pkey16">
设备名称: <input type="text" name="devname16">
而在实际的实现代码中,我们只需要使用get函数提取这个变量就可以了:
$pkey = $_GET["pkey16"];
$devname = $_GET["devname16"];
接着引用查询设备列表的接口:
$request = new Iot\GetDeviceShadowRequest();
通过查看GetDeviceShadowRequest文件,可以知道我们需要调用setProductKey和setDeviceName 两个函数,来从服务端传送查询设备影子的信息;这两个参数的意思分别是配置产品key,配置设备名称.
$request->setProductKey($pkey);
$request->setDeviceName($devname);
调用通用的网络查询操作后,将操作的返回结果和影子信息显示在网页上:
echo 'ShadowMessage :'.$response->ShadowMessage.'<br>';
echo 'RequestId :'.$response->RequestId.'<br>';
echo 'Success :'.$response->Success.'<hr>';
2、设备端模拟:
默认设备初始状态是不存在设备影子的,由于只有设备有上线记录后,这一节也需要设备的模拟,下载开发包的命令和上节类似,这里只介绍发送设备消息例子的部分:
2.1 修改shadow-example.c文件,改为我们自己的设备名称:
vi iotkit-embedded-master/iotkit-embedded-master/sample/device-shadow/shadow-example.c
2.2 修改后,保存退出,重新编译源码;
cd iotkit-embedded-master/iotkit-embedded-master/
make clean
sudo make all
2.3 编译结束后,运行编译后的例子文件:
output/release/bin/shadow-example
3、实际测试:
先运行模拟设备,然后打开浏览器,转到我们框架脚本页面,这里输入我们从控制台得到的产品key值和设备名称,运行提交按钮后,可以得到要查询的设备影子信息:
具体向关截图如下:
timelapse:
http://www.xunyun17.xyz/ioto/step16-GetDeviceShadowRequest.mp4