开发者社区> 问答> 正文

手把手学IOT服务端API编程[9、批量获取设备状态][step by step ALI-IOT-SERVER-API]


上节介绍按设备名查信息后,只能查询一个设备的信息,实际使用过程中,如果用户打算一次查询多个设备的状态,服务端的API接口也提供了相应的功能,
这一节就来介绍一下这个接口的使用,这个接口需要提供两个参数,一个是产品的key值,一个是设备的名称列表;
接下来我们看一下具体实现;


1、脚本实现:
我们按照接口的要求,在框架页面上,提供产品的key值和设备名称列表这两个个输入参数框给用户输入,其中名称列表,我们要求用户通过逗号分隔符的形式,
输入一行设备名称列表,通过逗号来分割各个设备名称;
产品KEY:        <input type="text" name="pkey9">
设备名称:        <input type="text" name="devnames9">


而在实际的实现代码中,我们只需要使用get函数提取这个变量就可以了,其中我们调用了explode函数来讲设备名称列表从字符串分割成名称列表的数组:
$pkey = $_GET["pkey9"];
$devnames = $_GET["devnames9"];
接着引用查询设备列表的接口:
$request = new Iot\BatchGetDeviceStateRequest();


通过查看BatchGetDeviceStateRequest.php文件,可以知道我们需要调用setProductKey和setDeviceNames两个函数,来给服务端传送产品key值和设备名称;




$request->setProductKey($pkey);
$devnames_array=explode(',',$devnames);
$request->setDeviceNames($devnames_array);


调用通用的网络查询操作后,最后对返回信息进行分析;首先显示常用的requestid和success这两个通用的信息:




echo 'RequestId :'.$response->RequestId.'<br>';
echo 'Success :'.$response->Success.'<hr>';


然后通过一个for循环依次显示每个设备的状态,名称等相关信息:


echo '设备状态 :'.$response->DeviceStatusList->DeviceStatus[$x]->Status.'<br>';
        echo '设备Id :'.$response->DeviceStatusList->DeviceStatus[$x]->DeviceId.'<br>';
        echo '设备名称 :'.$response->DeviceStatusList->DeviceStatus[$x]->DeviceName.'<br>';
        echo '设备最近在线时间 :'.$response->DeviceStatusList->DeviceStatus[$x]->LastOnlineTime.'<hr>';
        
2、实际测试:
打开浏览器,转到我们框架脚本页面,这里输入我们从控制台得到的产品key值和设备名称列表,运行提交按钮后,可以得到我们要查询设备列表的信息,
和控制台上的信息是完全一致的;
具体向关截图如下:




附件:
timelapse: www.xunyun17.xyz/ioto/step9-BatchGetDeviceStateRequest.mp4















展开
收起
洵云 2018-05-19 20:24:11 3353 0
0 条回答
写回答
取消 提交回答
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
ST + AliOS > Smart IoT ! 立即下载
IOT赋能旅行场景的实践与展望 立即下载
阿里云IoT物联网市场暨合作伙伴计划发布 立即下载